איך לאבטח SSH ב-VPS של לינוקס
שרת VPS ציבורי מקבל ניסיונות התחברות אוטומטיים תוך דקות מרגע העלייה לאוויר. הצעדים הבאים מקשים מאוד על תקיפת SSH. הם נכתבו עבור Ubuntu או Debian; אם עדיין לא יצרתם שרת, אפשר לשכור שרת VPS עם לינוקס ולהתחיל מתמונה נקייה. השאירו את חיבור ה-SSH הנוכחי פתוח עד שבדקתם את ההגדרות החדשות מחלון שני.
1. יצירת משתמש רגיל עם sudo
adduser deploy
usermod -aG sudo deploy2. שימוש במפתחות SSH במקום סיסמאות
במחשב שלכם:
ssh-keygen -t ed25519 -C "you@example.com"
ssh-copy-id deploy@YOUR_SERVER_IP
ssh deploy@YOUR_SERVER_IPהתחברו פעם אחת עם המפתח כדי לוודא שהוא עובד, ורק אחר כך כבו את הכניסה עם סיסמה.
3. ביטול כניסה עם סיסמה ומשתמש root
צרו את הקובץ /etc/ssh/sshd_config.d/99-hardening.conf:
PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
MaxAuthTries 3בדקו את התחביר וטענו מחדש את השירות. השירות נקרא ssh ב-Ubuntu וב-Debian, ו-sshd במערכות מבוססות RHEL:
sudo sshd -t && sudo systemctl reload sshפתחו טרמינל שני והתחברו שוב. רק לאחר מכן סגרו את החיבור הישן.
4. הפעלת חומת אש
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status verboseפתחו רק את היציאות שאתם צריכים, למשל 80 ו-443 עבור שרת אינטרנט. אפשר גם להגביל את SSH לכתובת ה-IP שלכם באמצעות כלל חומת אש בלוח הבקרה של הענן.
5. חסימת כשלונות חוזרים עם Fail2ban
sudo apt install -y fail2banצרו את הקובץ /etc/fail2ban/jail.local:
[sshd]
enabled = true
maxretry = 5
findtime = 10m
bantime = 1hsudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd6. התקנת עדכוני אבטחה אוטומטית
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades7. תוספות אופציונליות
- שינוי יציאת SSH מקטין את רעש הלוגים, אך אינו אמצעי אבטחה בפני עצמו.
- הגנו על המפתח הפרטי בסיסמת מפתח (passphrase) ושמרו העתק במקום בטוח.
- בדקו התחברויות עם
lastועםsudo journalctl -u ssh --since today. - צרו snapshot לאחר שהשרת הוגדר, כדי שתוכלו לחזור לבסיס נקי.
אם ננעלתם מחוץ לשרת, השתמשו בקונסולת הדפדפן בלוח הבקרה של הענן כדי להתחבר ולתקן את ההגדרות. המדריך להגנה מפני DDoS שלנו מכסה את שכבת ההגנה הבאה.
שאלות נפוצות
האם בטוח לבטל את כניסת root?
כן, בתנאי שיצרתם קודם משתמש sudo ובדקתם שהמפתח שלו עובד. עדיין אפשר להריץ פקודות ניהול באמצעות sudo.
האם אני צריך את Fail2ban אם אני משתמש במפתחות בלבד?
זה אופציונלי. כאשר כניסה עם סיסמה מבוטלת, התקפת brute force לא יכולה להצליח, אך Fail2ban מפחית את רעש הלוגים ואת העומס.
מה לעשות אם איבדתי את מפתח ה-SSH?
השתמשו בקונסולה בלוח הבקרה של הענן כדי להתחבר, הוסיפו מפתח ציבורי חדש ל-~/.ssh/authorized_keys והסירו את הישן.