Προστασία διακομιστή Linux. Τι να πρωτοκάνεις

Προστασία διακομιστή Linux. Τι να πρωτοκάνεις
Habib M'henni/Wikimedia Commons, CC BY-SA

Σήμερα, η ανύψωση ενός διακομιστή σε ένα hosting είναι θέμα μερικών λεπτών και μερικών κλικ του ποντικιού. Αλλά αμέσως μετά την εκτόξευση, βρίσκεται σε ένα εχθρικό περιβάλλον, επειδή είναι ανοιχτός σε ολόκληρο το Διαδίκτυο σαν ένα αθώο κορίτσι σε μια ντίσκο ρόκερ. Οι σαρωτές θα το βρουν γρήγορα και θα εντοπίσουν χιλιάδες ρομπότ με αυτόματη δέσμη ενεργειών που σαρώνουν το δίκτυο αναζητώντας τρωτά σημεία και εσφαλμένες διαμορφώσεις. Υπάρχουν μερικά πράγματα που πρέπει να κάνετε αμέσως μετά την εκκίνηση για να εξασφαλίσετε βασική προστασία.

περιεχόμενο

Χρήστης που δεν είναι root

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

Επομένως, πρέπει να δημιουργήσετε έναν άλλο χρήστη και να απενεργοποιήσετε την απομακρυσμένη διαχείριση μέσω SSH για root.

Ένας νέος χρήστης ξεκινά με την εντολή useradd:

useradd [options] <username>

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

passwd <username>

Τέλος, αυτός ο χρήστης πρέπει να προστεθεί σε μια ομάδα που έχει το δικαίωμα να εκτελεί αυξημένες εντολές sudo. Ανάλογα με τη διανομή Linux, αυτές μπορεί να είναι διαφορετικές ομάδες. Για παράδειγμα, στο CentOS και στο Red Hat, ο χρήστης προστίθεται στην ομάδα wheel:

usermod -aG wheel <username>

Στο Ubuntu προστίθεται στην ομάδα sudo:

usermod -aG sudo <username>

Κλειδιά αντί για κωδικούς πρόσβασης SSH

Οι διαρροές ωμής βίας ή κωδικού πρόσβασης είναι ένα τυπικό διάνυσμα επίθεσης, επομένως είναι καλύτερο να απενεργοποιήσετε τον έλεγχο ταυτότητας με κωδικό πρόσβασης στο SSH (Secure Shell) και να χρησιμοποιήσετε τον έλεγχο ταυτότητας κλειδιού.

Υπάρχουν διάφορα προγράμματα για την υλοποίηση του πρωτοκόλλου SSH, όπως π.χ lsh и dropbear, αλλά το πιο δημοφιλές είναι το OpenSSH. Εγκατάσταση του προγράμματος-πελάτη OpenSSH στο Ubuntu:

sudo apt install openssh-client

Εγκατάσταση διακομιστή:

sudo apt install openssh-server

Εκκίνηση του δαίμονα SSH (sshd) στον διακομιστή Ubuntu:

sudo systemctl start sshd

Αυτόματη εκκίνηση του δαίμονα σε κάθε εκκίνηση:

sudo systemctl enable sshd

Θα πρέπει να σημειωθεί ότι το τμήμα διακομιστή του OpenSSH περιλαμβάνει το τμήμα πελάτη. Δηλαδή μέσω openssh-server μπορείτε να συνδεθείτε με άλλους διακομιστές. Επιπλέον, από τον υπολογιστή-πελάτη σας, μπορείτε να ξεκινήσετε μια σήραγγα SSH από έναν απομακρυσμένο διακομιστή σε έναν κεντρικό υπολογιστή τρίτου μέρους και, στη συνέχεια, ο κεντρικός υπολογιστής τρίτου μέρους θα θεωρήσει τον απομακρυσμένο διακομιστή ως την πηγή αιτημάτων. Ένα πολύ εύχρηστο χαρακτηριστικό για την κάλυψη του συστήματός σας. Δείτε το άρθρο για λεπτομέρειες "Πρακτικές συμβουλές, παραδείγματα και σήραγγες SSH".

Σε ένα μηχάνημα-πελάτη, συνήθως δεν έχει νόημα η εγκατάσταση ενός πλήρους διακομιστή προκειμένου να αποφευχθεί η δυνατότητα απομακρυσμένης σύνδεσης με έναν υπολογιστή (για λόγους ασφαλείας).

Έτσι, για τον νέο σας χρήστη, πρέπει πρώτα να δημιουργήσετε κλειδιά SSH στον υπολογιστή από τον οποίο θα έχετε πρόσβαση στον διακομιστή:

ssh-keygen -t rsa

Το δημόσιο κλειδί αποθηκεύεται σε ένα αρχείο .pub και μοιάζει με μια σειρά από τυχαίους χαρακτήρες που ξεκινά με ssh-rsa.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ3GIJzTX7J6zsCrywcjAM/7Kq3O9ZIvDw2OFOSXAFVqilSFNkHlefm1iMtPeqsIBp2t9cbGUf55xNDULz/bD/4BCV43yZ5lh0cUYuXALg9NI29ui7PEGReXjSpNwUD6ceN/78YOK41KAcecq+SS0bJ4b4amKZIJG3JWm49NWvoo0hdM71sblF956IXY3cRLcTjPlQ84mChKL1X7+D645c7O4Z1N3KtL7l5nVKSG81ejkeZsGFzJFNqvr5DuHdDL5FAudW23me3BDmrM9ifUmt1a00mWci/1qUlaVFft085yvVq7KZbF2OP2NQACUkwfwh+iSTP username@hostname

Στη συνέχεια, από κάτω από το root, δημιουργήστε έναν κατάλογο SSH στον διακομιστή στον κεντρικό κατάλογο του χρήστη και προσθέστε το δημόσιο κλειδί SSH στο αρχείο authorized_keys, χρησιμοποιώντας ένα πρόγραμμα επεξεργασίας κειμένου όπως το Vim:

mkdir -p /home/user_name/.ssh && touch /home/user_name/.ssh/authorized_keys

vim /home/user_name/.ssh/authorized_keys

Τέλος, ορίστε τα σωστά δικαιώματα για το αρχείο:

chmod 700 /home/user_name/.ssh && chmod 600 /home/user_name/.ssh/authorized_keys

και αλλάξτε την ιδιοκτησία σε αυτόν τον χρήστη:

chown -R username:username /home/username/.ssh

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

ssh-add DIR_PATH/keylocation

Τώρα μπορείτε να συνδεθείτε στο διακομιστή με το όνομα χρήστη χρησιμοποιώντας αυτό το κλειδί:

ssh [username]@hostname

Μετά την εξουσιοδότηση, μπορείτε να χρησιμοποιήσετε την εντολή scp για να αντιγράψετε αρχεία, το βοηθητικό πρόγραμμα sshfs για την απομακρυσμένη προσάρτηση ενός συστήματος αρχείων ή καταλόγων.

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

Όπως αναφέρθηκε παραπάνω, στο SSH πρέπει να απενεργοποιήσετε τον έλεγχο ταυτότητας για root (αυτός είναι ο λόγος που ξεκινήσαμε έναν νέο χρήστη).

Στο CentOS/Red Hat βρίσκουμε τη γραμμή PermitRootLogin yes στο αρχείο ρυθμίσεων /etc/ssh/sshd_config και αλλάξτε το:

PermitRootLogin no

Στο Ubuntu προσθέστε τη γραμμή PermitRootLogin no στο αρχείο διαμόρφωσης 10-my-sshd-settings.conf:

sudo echo "PermitRootLogin no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

Αφού επαληθεύσετε ότι ο νέος χρήστης πραγματοποιεί έλεγχο ταυτότητας με το κλειδί του, μπορείτε να απενεργοποιήσετε τον έλεγχο ταυτότητας με κωδικό πρόσβασης για να εξαλείψετε τον κίνδυνο διαρροής κωδικού πρόσβασης ή ωμής βίας. Τώρα, για να αποκτήσει πρόσβαση στον διακομιστή, ένας εισβολέας θα πρέπει να πάρει ένα ιδιωτικό κλειδί.

Στο CentOS/Red Hat βρίσκουμε τη γραμμή PasswordAuthentication yes στο αρχείο ρυθμίσεων /etc/ssh/sshd_config και αλλάξτε το ως εξής:

PasswordAuthentication no

Στο Ubuntu προσθέστε τη γραμμή PasswordAuthentication no να αρχειοθετήσω 10-my-sshd-settings.conf:

sudo echo "PasswordAuthentication no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

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

Τείχος προστασίας

Το τείχος προστασίας διασφαλίζει ότι μόνο η κίνηση στις θύρες που επιτρέπετε απευθείας θα πηγαίνει στον διακομιστή. Αυτό προστατεύει από την εκμετάλλευση των θυρών που ενεργοποιούνται κατά λάθος με άλλες υπηρεσίες, γεγονός που μειώνει σημαντικά την επιφάνεια επίθεσης.

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

Η διανομή του Ubuntu συνοδεύεται από Uncomplicated Firewall (ufw), και με CentOS/Red Hat - firewall.

Επιτρέποντας το SSH στο τείχος προστασίας στο Ubuntu:

sudo ufw allow ssh

Στο CentOS/Red Hat χρησιμοποιήστε την εντολή firewall-cmd:

sudo firewall-cmd --zone=public --add-service=ssh --permanent

Μετά από αυτή τη διαδικασία, μπορείτε να ξεκινήσετε το τείχος προστασίας.

Στο CentOS/Red Hat, ξεκινήστε την υπηρεσία systemd για το τείχος προστασίας:

sudo systemctl start firewalld
sudo systemctl enable firewalld

Στο Ubuntu χρησιμοποιούμε την ακόλουθη εντολή:

sudo ufw enable

Fail2Ban

Υπηρεσίες Fail2Ban αναλύει αρχεία καταγραφής στο διακομιστή και μετράει τον αριθμό των προσπαθειών πρόσβασης από κάθε διεύθυνση IP. Οι ρυθμίσεις καθορίζουν τους κανόνες για το πόσες προσπάθειες πρόσβασης επιτρέπονται για ένα συγκεκριμένο διάστημα - μετά το οποίο αυτή η διεύθυνση IP αποκλείεται για μια καθορισμένη χρονική περίοδο. Για παράδειγμα, ας επιτρέψουμε 5 αποτυχημένες προσπάθειες ελέγχου ταυτότητας SSH εντός 2 ωρών και, στη συνέχεια, αποκλείουμε τη δεδομένη διεύθυνση IP για 12 ώρες.

Εγκατάσταση του Fail2Ban σε CentOS και Red Hat:

sudo yum install fail2ban

Εγκατάσταση σε Ubuntu και Debian:

sudo apt install fail2ban

Εκκίνηση:

systemctl start fail2ban
systemctl enable fail2ban

Το πρόγραμμα έχει δύο αρχεία ρυθμίσεων: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. Οι περιορισμοί απαγόρευσης καθορίζονται στο δεύτερο αρχείο.

Το Jail for SSH είναι ενεργοποιημένο από προεπιλογή με προεπιλεγμένες ρυθμίσεις (5 προσπάθειες, διάστημα 10 λεπτά, αποκλεισμός για 10 λεπτά).

[ΠΡΟΕΠΙΛΟΓΗ] ignorecommand=bantime=10m findtime=10m maxretry=5

Εκτός από το SSH, το Fail2Ban μπορεί να προστατεύσει άλλες υπηρεσίες στον διακομιστή web nginx ή Apache.

Αυτόματες ενημερώσεις ασφαλείας

Όπως γνωρίζετε, νέα τρωτά σημεία βρίσκονται συνεχώς σε όλα τα προγράμματα. Μετά τη δημοσίευση των πληροφοριών, προστίθενται εκμεταλλεύσεις σε δημοφιλή πακέτα εκμετάλλευσης, τα οποία χρησιμοποιούνται μαζικά από χάκερ και έφηβους κατά τη σάρωση όλων των διακομιστών στη σειρά. Ως εκ τούτου, είναι πολύ σημαντικό να εγκαταστήσετε τις ενημερώσεις ασφαλείας αμέσως μόλις εμφανιστούν.

Στον διακομιστή Ubuntu, οι αυτόματες ενημερώσεις ασφαλείας είναι ενεργοποιημένες από προεπιλογή, επομένως δεν απαιτούνται περαιτέρω ενέργειες.

Στο CentOS/Red Hat πρέπει να εγκαταστήσετε την εφαρμογή dnf-αυτόματο και ενεργοποιήστε το χρονόμετρο:

sudo dnf upgrade
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timer

Έλεγχος χρονοδιακόπτη:

sudo systemctl status dnf-automatic.timer

Αλλαγή των προεπιλεγμένων θυρών

Το SSH αναπτύχθηκε το 1995 για να αντικαταστήσει το telnet (θύρα 23) και το ftp (θύρα 21), έτσι ο συγγραφέας του προγράμματος, Tatu Iltonen επιλεγμένη θύρα 22 από προεπιλογή, και έχει εγκριθεί από το IANA.

Φυσικά, όλοι οι εισβολείς γνωρίζουν σε ποια θύρα εκτελείται το SSH - και τη σαρώνουν μαζί με τις υπόλοιπες τυπικές θύρες για να ανακαλύψουν την έκδοση λογισμικού, να ελέγξουν τους τυπικούς κωδικούς πρόσβασης root και ούτω καθεξής.

Η αλλαγή τυπικών θυρών - συσκότισης - πολλές φορές μειώνει τον όγκο της κυκλοφορίας σκουπιδιών, το μέγεθος των αρχείων καταγραφής και το φορτίο στον διακομιστή και επίσης μειώνει την επιφάνεια επίθεσης. Αν και κάποιοι επικρίνουν αυτή τη μέθοδο "προστασίας μέσω της αφάνειας" (ασφάλεια μέσω της αφάνειας). Ο λόγος είναι ότι αυτή η τεχνική είναι αντίθετη με τη θεμελιώδη αρχιτεκτονική προστασία. Επομένως, για παράδειγμα, το Εθνικό Ινστιτούτο Προτύπων και Τεχνολογίας των Η.Π.Α "Οδηγός ασφαλείας διακομιστή" υποδηλώνει την ανάγκη για μια ανοιχτή αρχιτεκτονική διακομιστή: «Η ασφάλεια ενός συστήματος δεν πρέπει να βασίζεται στο απόρρητο της υλοποίησης των στοιχείων του», αναφέρει το έγγραφο.

Θεωρητικά, η αλλαγή των προεπιλεγμένων θυρών είναι αντίθετη με την πρακτική της ανοιχτής αρχιτεκτονικής. Αλλά στην πράξη, ο όγκος της κακόβουλης επισκεψιμότητας στην πραγματικότητα μειώνεται, επομένως αυτό είναι ένα απλό και αποτελεσματικό μέτρο.

Ο αριθμός θύρας μπορεί να διαμορφωθεί αλλάζοντας την οδηγία Port 22 στο αρχείο ρυθμίσεων / etc / ssh / sshd_config. Υποδεικνύεται επίσης από την παράμετρο -p <port> в sshd. SSH πελάτης και προγράμματα sftp υποστηρίζει επίσης την επιλογή -p <port>.

Παράμετρος -p <port> μπορεί να χρησιμοποιηθεί για τον καθορισμό του αριθμού θύρας κατά τη σύνδεση με την εντολή ssh σε linux. ΣΕ sftp и scp χρησιμοποιείται παράμετρος -P <port> (κεφαλαίο Π). Οι οδηγίες γραμμής εντολών αντικαθιστούν οποιαδήποτε τιμή στα αρχεία διαμόρφωσης.

Εάν υπάρχουν πολλοί διακομιστές, σχεδόν όλες αυτές οι ενέργειες για την προστασία του διακομιστή Linux μπορούν να αυτοματοποιηθούν σε ένα σενάριο. Αλλά εάν υπάρχει μόνο ένας διακομιστής, τότε είναι καλύτερο να ελέγχετε τη διαδικασία χειροκίνητα.

Σχετικά με τα Δικαιώματα Διαφήμισης

Παραγγείλετε και ξεκινήστε αμέσως! Δημιουργία VDS οποιαδήποτε διαμόρφωση και με οποιοδήποτε λειτουργικό σύστημα μέσα σε ένα λεπτό. Η μέγιστη διαμόρφωση θα σας επιτρέψει να φτάσετε στο έπακρο - 128 πυρήνες CPU, 512 GB RAM, 4000 GB NVMe. Επικό 🙂

Προστασία διακομιστή Linux. Τι να πρωτοκάνεις

Πηγή: www.habr.com