Web Development & SEO WEBart

Άρθρα » Linux Admin

sshd: Ασφάλεια στο server μας

Views: 12643 07 Σεπτεμβρίου 2015
sshd: Ασφάλεια στο server μας

Το Secure Shell ή SSH είναι ένα network πρωτόκολλο που επιτρέπει την ασφαλή ανταλλαγή δεδομένων μεταξύ δύο δικτυακών συσκευών.

Πιο απλά, με το SSH δίνεται σε διαχειριστές (linux) συστημάτων η δυνατότητα ασφαλούς πρόσβασης σε μηχανήματα, μέσα από ένα μη ασφαλές δίκτυο.

Τα εργαλεία που χρησιμοποιούμε στο SSH, είναι τα παρακάτω:

Putty

Putty SSHΤο πλέον διαδεδομένο εργαλείο πρόσβασης σε απομακρυσμένα μηχανήματα μέσω του πρωτοκόλλου SSH, που χρησιμοποιούν οι διαχειριστές συστημάτων, είναι το Putty.

Τρέχοντας το Putty, εισέρχεστε σε μηχάνημα δηλώνοντας τα στοιχεία σας user/password.

Στη συνέχεια, μπορείτε να μπείτε σε άλλο μηχάνημα με την εντολή ssh, όπως φαίνεται και στο παρακάτω παράδειγμα:

[root@Hermes ~]#ssh user@10.10.0.220

Για έξοδο και επιστροφή, απλά δηλώνετε "exit":

[user@Estia ~]#exit

Το Putty παρέχεται δωρεάν από τη διεύθυνση: Putty download

WinSCP

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

 Αλλά ας περάσουμε στην περιγραφή της μεθόδου:

  1. Έκδοση κλειδιού (id_rsa) μηχανήματος (Hermes):
    [root@Hermes ~]# ssh-keygen -t rsa -b 2048
  2. Αποδεχόμαστε τη θέση στην οποία θα τοποθετηθεί: "/root/.ssh/id_rsa"
  3. Όταν ζητηθεί "passphrase" πατάμε "enter" (δηλ. δεν θέλουμε password)
    Σε αυτή τη φάση, το κλειδί έχει δημιουργηθεί.
  4. Μένει τώρα να στείλουμε το δημόσιο κλειδί στο απέναντι μηχάνημα (έστω 192.168.1.223):
    [root@Hermes ~]# ssh-copy-id -i id_rsa.pub root@192.168.1.223
    Παρατήρηση 1: Η εντολή θα λειτουργήσει αν βρισκόμαστε στο /root/.ssh/, διαφορετικά θα πρέπει να περιγράψουμε επακριβώς τη θέση του δημόσιου κλειδιού.
    Παρατήρηση 2: Για να τοποθετηθεί το κλειδί απέναντι (192.168.1.223), θα πρέπει να γνωρίζουμε το password του χρήστη που δηλώνουμε (root)
  5. Αν ταυτοποιηθήκαμε με το 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

Ενημερωμένο σύστημα

Φροντίζουμε να έχουμε πάντοτε ενημερωμένο το λογισμικό του μηχανήματος.

Διαβάστε επίσης

210 6034122