Εισαγωγή στο Fail2Ban
Εγκατάσταση Fail2Ban
Διαμόρφωση των ρυθμίσεων Fail2Ban
Διαμόρφωση του Fail2Ban για προστασία του SSH
Εκκίνηση της υπηρεσίας Fail2Ban
Πώς να παρακολουθείτε αποτυχημένες προσπάθειες σύνδεσης
Εισαγωγή στο Fail2Ban
Από προεπιλογή, ένας πελάτης συνδέεται στο SSH χρησιμοποιώντας τη θύρα 22. Επειδή αυτή είναι μια πολύ γνωστή θύρα, η προεπιλεγμένη διαμόρφωση είναι ευάλωτη σε πολλές επιθέσεις ωμής βίας. Το Fail2Ban είναι μια λύση για την αυτόματη προστασία ενός διακομιστή από αυτές τις επιθέσεις. Το πρόγραμμα εκτελείται στο παρασκήνιο, σαρώνει τα αρχεία καταγραφής για να εντοπίσει ποιες IP επιτίθενται και τους απαγορεύει αυτόματα την πρόσβαση στο SSH.
Εγκατάσταση Fail2Ban
Σε αυτό το σεμινάριο, θα εγκαταστήσουμε το Fail2Ban στο CentOS 6 μέσω του αποθετηρίου EPEL. Εκτελέστε τις παρακάτω εντολές.
yum install epel-release
yum install fail2ban
Εξήγηση
yum install epel-release: Εγκαθιστά το αποθετήριο EPEL (Extra Packages για Enterprise Linux).
yum install fail2ban: Εγκαθιστά το Fail2Ban από το αποθετήριο EPEL.
Διαμόρφωση των ρυθμίσεων Fail2Ban
Ανοίξτε το αρχείο διαμόρφωσης Fail2Ban.
nano /etc/fail2ban/jail.conf
Στο αρχείο, θα δείτε κάποιες παραμέτρους όπως φαίνεται παρακάτω. Προσαρμόστε οποιαδήποτε από τις τιμές στις ανάγκες σας.
[DEFAULT]
# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1
# "bantime" is the number of seconds that a host is banned.
bantime = 600
# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime = 600
# "maxretry" is the number of failures before a host get banned.
maxretry = 3
Εξήγηση
ignoreip: Μην απαγορεύετε κεντρικούς υπολογιστές που αντιστοιχούν σε μια διεύθυνση σε αυτήν τη λίστα. Μπορούν να οριστούν πολλές διευθύνσεις χρησιμοποιώντας διαχωριστικό χώρου. Γράψτε την προσωπική σας IP σε αυτή τη γραμμή.
bantime: Ο αριθμός των δευτερολέπτων που ένας κεντρικός υπολογιστής έχει αποκλειστεί.
findtime: Ένας κεντρικός υπολογιστής είναι αποκλεισμένος εάν έχει δημιουργηθεί maxretryκατά τη διάρκεια του τελευταίου findtime.
maxretry: Ο αριθμός των αποτυχιών πριν αποκλειστεί ένας κεντρικός υπολογιστής.
Διαμόρφωση του Fail2Ban για προστασία του SSH
Αρχικά, πρέπει να δημιουργήσουμε ένα αρχείο ρυθμίσεων.
nano /etc/fail2ban/jail.local
Αντιγράψτε τις παρακάτω γραμμές και επικολλήστε στο αρχείο.
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
# sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com]
logpath = /var/log/secure
maxretry = 5
enabled: Ενεργοποιήστε την προστασία. Εάν θέλετε να το απενεργοποιήσετε, αλλάξτε την τιμή σε false.
filter: Από προεπιλογή, έχει οριστεί σε sshd που αναφέρεται στο αρχείο /etc/fail2ban/filter.d/sshd.conf.
action: Το Fail2Ban θα αποκλείσει την IP που ταιριάζει με το φίλτρο /etc/fail2ban/action.d/iptables.conf. Εάν είχατε αλλάξει τη θύρα SSH στο παρελθόν, αλλάξτε port=sshστη νέα θύρα, για παράδειγμα port=2222. Εάν χρησιμοποιείτε τη θύρα 22, δεν θα χρειαστεί να αλλάξετε την τιμή.
logpath: Η διαδρομή του αρχείου καταγραφής που χρησιμοποιείται από το Fail2Ban.
maxretry: Ο μέγιστος αριθμός αποτυχημένων προσπαθειών σύνδεσης.
Εκκίνηση της υπηρεσίας Fail2Ban
Εκτελέστε αυτές τις δύο εντολές παρακάτω για να ξεκινήσετε την υπηρεσία Fail2Ban:
chkconfig --level 23 fail2ban on
service fail2ban start
Τέλος, ελέγξτε iptablesαν έχει προσθέσει τους κανόνες από το Fail2Ban.
iptables -L
Το αποτέλεσμα θα μοιάζει με αυτήν την έξοδο.
Chain INPUT (policy ACCEPT)
target prot opt source destination
f2b-SSH tcp -- anywhere anywhere tcp dpt:EtherNet/IP-1
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain f2b-SSH (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
Πώς να παρακολουθείτε αποτυχημένες προσπάθειες σύνδεσης
Μπορείτε να χρησιμοποιήσετε αυτήν την εντολή για να ελέγξετε εάν ο διακομιστής σας είχε αποτυχημένες προσπάθειες σύνδεσης (πιθανές επιθέσεις).
cat /var/log/secure | grep 'Failed password'
Το αποτέλεσμα θα μοιάζει με αυτές τις γραμμές.
Dec 6 22:47:12 vultr sshd[7942]: Failed password for root from 43.229.53.67 port 23021 ssh2
Dec 6 22:47:15 vultr sshd[7944]: Failed password for root from 43.229.53.67 port 40996 ssh2
Dec 6 22:47:16 vultr sshd[7944]: Failed password for root from 43.229.53.67 port 40996 ssh2
Dec 6 22:47:18 vultr sshd[7944]: Failed password for root from 43.229.53.67 port 40996 ssh2
Dec 6 22:47:31 vultr sshd[7948]: Failed password for root from 43.229.53.67 port 29907 ssh2
Dec 6 22:47:34 vultr sshd[7948]: Failed password for root from 43.229.53.67 port 29907 ssh2
Dec 6 22:47:36 vultr sshd[7948]: Failed password for root from 43.229.53.67 port 29907 ssh2
Dec 6 22:47:39 vultr sshd[7950]: Failed password for root from 43.229.53.67 port 48386 ssh2
Dec 6 22:47:41 vultr sshd[7950]: Failed password for root from 43.229.53.67 port 48386 ssh2
Dec 6 22:47:43 vultr sshd[7950]: Failed password for root from 43.229.53.67 port 48386 ssh2
Dec 6 22:47:47 vultr sshd[7952]: Failed password for root from 43.229.53.67 port 62846 ssh2
Dec 6 22:47:49 vultr sshd[7952]: Failed password for root from 43.229.53.67 port 62846 ssh2
Για να δείτε ποιες IP έχουν αποκλειστεί, χρησιμοποιήστε την ακόλουθη εντολή.
iptables -L -n
Για να διαγράψετε μια διεύθυνση IP από την απαγορευμένη λίστα, εκτελέστε την ακόλουθη εντολή. Αλλάξτε banned_ipτην IP που θέλετε να καταργήσετε τον αποκλεισμό.
iptables -D f2b-SSH -s banned_ip -j DROP