Πώς να ασφαλίσετε το SSH σε Linux VPS
Ένα δημόσιο VPS δέχεται αυτοματοποιημένες προσπάθειες σύνδεσης μέσα σε λίγα λεπτά από τη στιγμή που τίθεται σε λειτουργία. Με αυτά τα βήματα, η επίθεση στο SSH γίνεται πολύ δυσκολότερη. Τα βήματα είναι γραμμένα για Ubuntu ή Debian. Αν δεν έχετε δημιουργήσει ακόμη διακομιστή, μπορείτε να ενοικιάστε ένα Linux 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 με κανόνα τείχους προστασίας στην κονσόλα του cloud.
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 μειώνει τον θόρυβο στα αρχεία καταγραφής, αλλά από μόνη της δεν αποτελεί μέτρο ασφαλείας.
- Προστατέψτε το ιδιωτικό κλειδί με φράση πρόσβασης και φυλάξτε αντίγραφο σε ασφαλές μέρος.
- Ελέγξτε τις συνδέσεις με
lastκαιsudo journalctl -u ssh --since today. - Δημιουργήστε ένα snapshot αφού ρυθμιστεί ο διακομιστής, ώστε να μπορείτε να επαναφέρετε μια καθαρή βασική κατάσταση.
Αν κλειδώσετε την πρόσβαση, χρησιμοποιήστε την κονσόλα του προγράμματος περιήγησης στο πάνελ του cloud για να συνδεθείτε και να διορθώσετε τη ρύθμιση. Ο οδηγός προστασίας από DDoS καλύπτει το επόμενο επίπεδο άμυνας.
Συχνές ερωτήσεις
Είναι ασφαλές να απενεργοποιήσω τη σύνδεση ως root;
Ναι, αν πρώτα δημιουργήσετε χρήστη sudo και δοκιμάσετε ότι λειτουργεί το κλειδί του. Μπορείτε να εκτελείτε διαχειριστικές εντολές με sudo.
Χρειάζομαι Fail2ban αν χρησιμοποιώ μόνο κλειδιά;
Είναι προαιρετικό. Με απενεργοποιημένη τη σύνδεση με κωδικό, η επίθεση brute force δεν μπορεί να πετύχει, όμως το Fail2ban μειώνει τον θόρυβο στα αρχεία καταγραφής και το φορτίο.
Τι γίνεται αν χάσω το κλειδί SSH;
Χρησιμοποιήστε την κονσόλα στο πάνελ του cloud για να συνδεθείτε, προσθέστε το νέο δημόσιο κλειδί στο ~/.ssh/authorized_keys και αφαιρέστε το παλιό.