כמעט כל VPS חדש מתחיל אותו דבר: נכנסים כ-root, מתקינים כמה דברים, וחודש אחר כך עדיין עובדים כ-root. זה עובד עד שסקריפט שהדבקתם מוחק את התיקייה הלא נכונה. הגדרת משתמש רגיל עם sudo לוקחת חמש דקות, והסדר חשוב יותר מהפקודות — אם תטעו בו, תנעלו את עצמכם בחוץ.
זה הסדר הבטוח ל-Ubuntu 22.04/24.04 ול-Debian 12.
1. צרו את המשתמש
כ-root:
adduser deploy
usermod -aG sudo deploy
adduser מבקש סיסמה וכמה פרטים אופציונליים (פשוט לחצו Enter). בחרו סיסמה אמיתית: תקלידו אותה בשביל sudo. ב-image מינימלי של Debian, הריצו קודם apt install -y sudo אם הפקודה חסרה.
2. תנו לו את מפתח ה-SSH שלכם
הדרך הקלה ביותר היא להעתיק את המפתחות המורשים של root תוך שמירה על הבעלות הנכונה:
rsync --archive --chown=deploy:deploy /root/.ssh /home/deploy
אם אתם מעדיפים לעשות את זה ידנית:
mkdir -p /home/deploy/.ssh
cp /root/.ssh/authorized_keys /home/deploy/.ssh/
chown -R deploy:deploy /home/deploy/.ssh
chmod 700 /home/deploy/.ssh
chmod 600 /home/deploy/.ssh/authorized_keys
הרשאות שגויות הן הסיבה הקלאסית לכך שכניסה עם מפתח נכשלת בשקט. SSH מתעלם מקובץ authorized_keys שמשתמשים אחרים יכולים לכתוב אליו.
3. בדקו לפני שמשנים משהו
השאירו את סשן ה-root פתוח. בטרמינל חדש:
ssh -p 22 deploy@203.0.113.10
sudo whoami
השתמשו ב-IP ובפורט שלכם — בתוכנית NAT זה פורט ה-SSH האישי מלוח הבקרה. אם sudo whoami מדפיס root, הכול תקין. אם הכניסה נכשלת, עדיין יש לכם את חלון ה-root כדי לתקן.
4. כבו את כניסת root
עכשיו סגרו את הדלת. צרו קובץ drop-in קטן במקום לערוך את ההגדרות הראשיות:
cat > /etc/ssh/sshd_config.d/10-hardening.conf <<'EOF'
PermitRootLogin no
PasswordAuthentication no
EOF
sshd -t && systemctl reload ssh
sshd -t בודק קודם את התחביר. הגדרה שבורה ועוד reload זה בדיוק מה שמביא אנשים לקונסולה. PasswordAuthentication no הגיוני רק כשכניסה עם מפתח עובדת למשתמש החדש — מה שבדיוק בדקתם.
פתחו עוד טרמינל ווודאו ש-root נדחה ו-deploy עדיין נכנס. אחר כך סגרו את סשן ה-root הישן.
5. אופציונלי: sudo בלי סיסמה לאוטומציה
אם סקריפט deploy צריך sudo בלי שאלה, תנו לו בדיוק את זה ולא יותר:
visudo -f /etc/sudoers.d/deploy
deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart myapp
בכנות, NOPASSWD: ALL מפתה, אבל זה אומר שמפתח גנוב שווה ל-root. הגבילו את זה לפקודות שהאוטומציה מריצה.
אם משהו משתבש
קונסולת הרשת בלוח הבקרה לא תלויה ב-SSH או בחומת האש. היכנסו דרכה, תקנו את הקובץ ב-/etc/ssh/sshd_config.d/, עשו reload, וזהו. את כל תהליך השחזור תיארנו באיך לחזור ל-VPS שננעלתם ממנו.
מה הלאה
- עברו באמת לכניסה עם מפתח בלבד: אימות עם מפתח SSH.
- הפחיתו את רעש ניסיונות ה-brute force: fail2ban.
- השלימו את שאר הבסיס עם רשימת האבטחה ל-VPS חדש.
אפשרויות הגישה של כל תוכנית מופיעות בתיעוד הגישה. אפילו Nano ב-$3 ראוי למשתמש בלי root — זה שדרוג האבטחה הזול ביותר שיש.
תגובות
אין עדיין תגובות. היו הראשונים.