Άρθρα » Linux Admin
sshd: Ασφάλεια στο server μας
Το Secure Shell ή SSH είναι ένα network πρωτόκολλο που επιτρέπει την ασφαλή ανταλλαγή δεδομένων μεταξύ δύο δικτυακών συσκευών.
Πιο απλά, με το SSH δίνεται σε διαχειριστές (linux) συστημάτων η δυνατότητα ασφαλούς πρόσβασης σε μηχανήματα, μέσα από ένα μη ασφαλές δίκτυο.
Τα εργαλεία που χρησιμοποιούμε στο SSH, είναι τα παρακάτω:
Putty
Το πλέον διαδεδομένο εργαλείο πρόσβασης σε απομακρυσμένα μηχανήματα μέσω του πρωτοκόλλου SSH, που χρησιμοποιούν οι διαχειριστές συστημάτων, είναι το Putty.
Τρέχοντας το Putty, εισέρχεστε σε μηχάνημα δηλώνοντας τα στοιχεία σας user/password.
Στη συνέχεια, μπορείτε να μπείτε σε άλλο μηχάνημα με την εντολή ssh, όπως φαίνεται και στο παρακάτω παράδειγμα:
[root@Hermes ~]#ssh user@10.10.0.220
Για έξοδο και επιστροφή, απλά δηλώνετε "exit":
[user@Estia ~]#exit
Το Putty παρέχεται δωρεάν από τη διεύθυνση: Putty download
WinSCP
Οι χρήστες των Windows μπορούν να χρησιμοποιήσουν ένα εξαιρετικό εργαλείο "File Manager", όπου μέ SFTP (αλλά και FTP), θα μπορούν να φέρουν στην οθόνη τους και να διαχειριστούν φακέλους και αρχεία του απομακρυσμένου Linux συστήματος.
Το WinScp παρέχεται δωρεάν από τη διεύθυνση: WinSCP download
Πόρτα SSH
Η (εξ' ορισμού) πόρτα που χρησιμοποιείται είναι η 22, αλλά για να αυξήσετε την ασφάλεια μπορείτε να την αλλάξετε σε κάτι άλλο μη προβλέψιμο, ας πούμε "7522".
Αν έχετε άνεση στη χρήση του vi editor:
[root@Hermes ~]# vi /etc/ssh/sshd_config
Στην 17η γραμμή, θα δείτε
#Port 22
Αλλάξτε το σε 7522 και αποθηκεύστε
Port 7522
Στη συνέχεια επανεκκινήστε στον sshd server:
- Αν χρησιμοποείτε RHEL/CentOS/Fedora Linux:
sudo systemctl restart sshd
- Αν χρησιμοποείτε Debian/Ubuntu/Mint Linux:
sudo systemctl restart ssh
Περισσότερη ασφάλεια
Παρ' ότι το πρωτόκολλο SSH είναι ασφαλές, δεν είναι πανάκεια, άρα εμείς οφείλουμε να λάβουμε περισσότερα μέτρα ασφαλείας.
Δείτε παρακάτω με ποιές μεθόδους μπορούμε να μεγιστοποιήσουμε την ασφάλεια του μηχανήματός μας.
#1. Απενεργοποίηση εισόδου root
Ενημερώνουμε το sshd_config να μην υποδέχεται πλέον το λογαριασμό root:
[root@Hermes ~]# vi /etc/ssh/sshd_config
Στην 38 περίπου γραμμή, βρίσκουμε το "PermitRootLogin yes" και το αλλάζουμε σε "PermitRootLogin no"
Δηλώνουμε επίσης και τον αποδεκτό user: "AllowUsers george"
Στη συνέχεια επανεκκινούμε τον sshd server.
#2. Ορίζοντας συγκεκριμένες IP
Αν θέλουμε να αυξήσουμε την ασφάλεια περισσότερο, επιτρέποντας την πρόσβαση σε συγκεκριμμένα μηχανήματα, με καθορισμό συγκεκριμένων IP που εμπιστευόμαστε, ενεργούμε όπως παρακάτω:
Από κονσόλα (ανοίγουμε το putty) και, αφού πιστοποιήσουμε την είσοδό μας (user, password), ανοίγουμε στον vi editor το αρχείο /etc/hosts.allow:
[root@Hermes ~]# vi /etc/hosts.allow
Υποθέτουμε ότι θέλουμε να επιτρέπεται η είσοδος μόνο στις IPs 180.51.43.57 - 60.45.118.18 και τις προσθέτουμε στο αρχείο όπως πιο κάτω:
sshd: 180.51.43.57
sshd: 60.45.118.18
Αποκλείουμε όλες τις υπόλοιπες IPs στο αρχείο hosts.deny
[root@Hermes ~]# vi /etc/hosts.deny
Και προσθέτουμε
sshd: ALL
Αποθηκεύουμε και επανεκκινούμε τον sshd deamon, με τον τρόπο που περιγράψαμε πιο πάνω.
#3. Επιτρέποντας IPs συγκεκριμένων χωρών
Με τη μέθοδο αυτή, χρησιμοποιώντας πάλι τα αρχεία hosts.allow & hosts.deny που είδαμε πριν, κάνουμε περισσότερο αυστηρό το μηχάνημά μας, αποδεχόμενοι IPs συγκεκριμένων μόνο χωρών.
Το μόνο που έχουμε να κάνουμε είναι να εγκαταστήσουμε το geoiplookup και να ορίσουμε τις χώρες σε σχετικό αρχείο.
Η μέθοδος αυτή περιγράφεται σε ξεχωριστό άρθρο.
#4. Είσοδος Ελεύθερη! (χωρίς login)
Αν το μηχάνημά μας (Α) έχει OpenSSL, μπορούμε να εκδώσουμε κλειδί και να το εγκαταστήσουμε σε απομακρυσμένο μηχάνημα (Β), ώστε να μπαίνουμε (στο Β) χωρίς χρήση user/pass.
Αν μπορούμε να κρατάμε προστατευμένο το μηχάνημα (Α), η μέθοδος είναι πολύ χρήσιμη επειδή:
- Εργασίες Backup
Μπορούμε να εκτελούμε προγραμματισμένες (crontab) εργασίες όπως Backup, επειδή θα επιστρέπεται στα scripts η είσοδος χωρίς έλεγχο - Ανάκτηση ελέγχου
Έχουμε ελπίδα να ανακτήσουμε τον έλεγχο μηχανήματος που παραβιάστηκε και πιθανώς άλλαξε και το root password
Αλλά ας περάσουμε στην περιγραφή της μεθόδου:
- Έκδοση κλειδιού (id_rsa) μηχανήματος (Hermes):
[root@Hermes ~]# ssh-keygen -t rsa -b 2048
- Αποδεχόμαστε τη θέση στην οποία θα τοποθετηθεί: "/root/.ssh/id_rsa"
- Όταν ζητηθεί "passphrase" πατάμε "enter" (δηλ. δεν θέλουμε password)
Σε αυτή τη φάση, το κλειδί έχει δημιουργηθεί. - Μένει τώρα να στείλουμε το δημόσιο κλειδί στο απέναντι μηχάνημα (έστω 192.168.1.223):
Παρατήρηση 1: Η εντολή θα λειτουργήσει αν βρισκόμαστε στο /root/.ssh/, διαφορετικά θα πρέπει να περιγράψουμε επακριβώς τη θέση του δημόσιου κλειδιού.[root@Hermes ~]# ssh-copy-id -i id_rsa.pub root@192.168.1.223
Παρατήρηση 2: Για να τοποθετηθεί το κλειδί απέναντι (192.168.1.223), θα πρέπει να γνωρίζουμε το password του χρήστη που δηλώνουμε (root) - Αν ταυτοποιηθήκαμε με το password, θα πάρουμε επιβεβαίωση όπως παρακάτω:
stdin: is not a tty Number of key(s) added: 1 Now try logging into the machine, with: "ssh root@192.168.1.223" and check to make sure that only the key(s) you wanted were added.
Σε αυτή τη φάση είμαστε έτοιμοι να μπούμε χωρίς password!
[root@Hermes ~]# ssh -p 22 root@192.168.1.223
Ενημερωμένο σύστημα
Φροντίζουμε να έχουμε πάντοτε ενημερωμένο το λογισμικό του μηχανήματος.