To fail2ban είναι ένα ανοικτού κώδικά λογισμικό για μηχανήματα linux, που αποκλείει αυτόματα τις διευθύνσεις IP που έχουν πάρα πολλές αποτυχίες σύνδεσης.
Μία λύση ασφαλείας για διακομιστές αλλά και για οικιακά μηχανήματα που τρέχουν linux είναι το γνωστό fail2ban. Αν έχετε server που τρέχει plesk το fail2ban είναι ήδη εγκατεστημένο (IP Address Banning).
Αν όμως έχετε ένα διαφορετικό βοηθητικό λογισμικό διακομιστή ή απλά αν έχετε ένα οικιακό υπολογιστή που τρέχει linux, τότε δείτε πως θα εγκαταστήσετε και θα διαμορφώσετε το δvρεάν λογισμικό ασφαλείας fail2ban.
Table of Contents
Τι είναι το fail2ban
Το Fail2ban είναι ένα δωρεάν βοηθητικό πρόγραμμα που θα μπλοκάρει αυτόματα μια διεύθυνση IP εάν επιχειρήσει και αποτύχει να συνδεθεί σε έναν διακομιστή πάρα πολλές φορές.
Όταν κάποιος επιχειρεί να συνδεθεί στον διακομιστή σας, είτε είναι διακομιστής SSH, διακομιστής ιστού ή email ή διακομιστής Minecraft, συνήθως απαιτείται να εισάγει ένα όνομα χρήστη και έναν κωδικό πρόσβασης προτού του επιτραπεί η πρόσβαση.
Οι κανονικοί άνθρωποι που εισάγουν (ή μαντεύουν) τα στοιχεία του λογαριασμού τους, το ταχύτερο που μπορούν να κάνουν είναι να γράψουν μία προσπάθεια κάθε 10-20 δευτερόλεπτα. Όταν τα διαπιστευτήρια εισάγονται πιο γρήγορα, είναι σημάδι ότι έχετε πρόβλημα, καθώς κάποιο bot μπορεί να εκτελεί μια επίθεση brute-force.
Για να εντοπίσετε μια επίθεση brute-force, πρέπει να παρακολουθείτε τα αιτήματα σύνδεσης που αποτυγχάνουν να εισέλθουν σε έναν λογαριασμό. Μόλις εντοπιστεί ένας εισβολέας, θα πρέπει να του απαγορευτεί να κάνει περαιτέρω προσπάθειες. Αυτό απαιτεί σε φυσική μορφή να είστε 24 ώρες το 24ωρο με τα μάτια ανοικτά πάνω στην οθόνη του υπολογιστή σας.
Ο μόνος πρακτικός τρόπος είναι να αυτοματοποιηθεί ολόκληρη η διαδικασία με ένα δικό σας bot. Με λίγη απλή διαμόρφωση, το λογισμικό fail2ban θα διαχειριστεί την παρακολούθηση, και μόλις αντιληφθεί την απόπειρα διείσδυσης θα πραγματοποιήσει την απαγόρευση για εσάς.
Το fail2ban ενσωματώνεται με το τείχος προστασίας iptables των linux. Επιβάλλει τις απαγορεύσεις στις ύποπτες διευθύνσεις IP προσθέτοντας κανόνες στο τείχος προστασίας.
Φυσικά, εάν ανησυχείτε για την ασφάλεια, πιθανότατα έχετε ήδη ένα τείχος προστασίας διαμορφωμένο με ένα καλά συμπληρωμένο σύνολο κανόνων. To fail2ban απλά προσθέτει και αφαιρεί τους δικούς του κανόνες μόνο, αφήνοντας τις κανονικές λειτουργίες του τείχους προστασίας σας ανέγγιχτες.
Εγκατάσταση fail2ban
Η εγκατάσταση fail2ban είναι απλή. Χρησιμοποιήσαμε ένα Ubuntu 22.04.4 οπότε η εντολή είναι η εξής: sudo apt-get install fail2ban
Στο Fedora, πληκτρολογήστε: sudo dnf εγκατάσταση fail2ban
Στο Manjaro χρησιμοποιήστε pacman: sudo pacman -Sy fail2ban
Διαμόρφωση του fail2ban
Η εγκατάσταση του fail2ban περιέχει ένα προεπιλεγμένο αρχείο διαμόρφωσης που ονομάζεται jail.conf. Αυτό το αρχείο αντικαθίσταται όταν το fail2ban θα αναβαθμιστεί, επομένως θα χάσετε τις αλλαγές μας εάν κάνετε προσαρμογές σε αυτό το αρχείο.
Αντίθετα, θα πρέπει να αντιγράψετε το αρχείο jail.conf σε ένα άλλο που θα το ονομάσετε jail.local το οποίο όπως και το jail.conf και αυτό διαβάζεται αυτόματα από το fail2ban.
Με την τοποθέτηση των αλλαγών διαμόρφωσης στο jail.local, θα διατηρηθούν σε όλες τις αναβαθμίσεις καθώς δεν θα πειραχτεί το jail.local και όπως προείπαμε και τα δύο αρχεία διαβάζονται αυτόματα από το fail2ban.
Αντιγράψτε το αρχείου:με την εντολή: sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Τώρα ανοίξτε το αρχείο jail.local με τον αγαπημένο σας επεξεργαστή. Θα χρησιμοποιήσουμε gedit: sudo gedit /etc/fail2ban/jail.local
Θα πρέπει να αναζητήσετε δύο ενότητες στο αρχείο: τις [DEFAULT] και [sshd].
Η ενότητα [DEFAULT] ξεκινά κάπου στην γραμμή 40. Είναι μια μεγάλη ενότητα με πολλά σχόλια και επεξηγήσεις.
Διαβάστε την όλη αλλά τα βασικά για την [DEFAULT] είναι περίπου στην γραμμή 90 που θα βρείτε τις ακόλουθες τέσσερις ρυθμίσεις που πρέπει να γνωρίζετε:
ignoreip: Εκεί γράφετε μια λίστα επιτρεπόμενων διευθύνσεων IP που δεν θα αποκλειστούν ποτέ. Η διεύθυνση IP του localhost ( 127.0.0.1) βρίσκεται στη λίστα από προεπιλογή, μαζί με το αντίστοιχο IPv6 ( ::1), μόνο που χρειάζεται να βγάλετε το “κάγκελο” για να την ενεργοποιήσετε. Εάν υπάρχουν άλλες διευθύνσεις IP που γνωρίζετε ότι δεν πρέπει ποτέ να αποκλειστούν, προσθέστε τις σε αυτήν τη λίστα και αφήστε ένα κενό μεταξύ τους.
bantime: Η διάρκεια για την οποία απαγορεύεται μια διεύθυνση IP (το “m” σημαίνει λεπτά). Εάν πληκτρολογήσετε μια τιμή χωρίς “m” ή “h” (για ώρες) θα αντιμετωπιστεί ως δευτερόλεπτα. Η τιμή -1 θα απαγορεύσει οριστικά μια διεύθυνση IP. Προσέξτε πολύ να μην κλειδωθείτε μόνιμα έξω.
findtime: Το χρονικό διάστημα εντός του οποίου πάρα πολλές αποτυχημένες προσπάθειες σύνδεσης θα έχουν ως αποτέλεσμα τον αποκλεισμό μιας διεύθυνσης IP.
maxretry: Η τιμή για “πάρα πολλές αποτυχημένες προσπάθειες”.
Εάν μια σύνδεση από την ίδια διεύθυνση IP κάνει maxretry αποτυχημένες προσπάθειες σύνδεσης εντός της findtime περιόδου, αποκλείονται για τη διάρκεια του bantime. Οι μόνες εξαιρέσεις είναι οι διευθύνσεις IP στη ignoreip λίστα.
Το fail2ban θέτει τις διευθύνσεις IP στη φυλακή για ένα καθορισμένο χρονικό διάστημα. Το fail2ban υποστηρίζει πολλά διαφορετικά jails και το καθένα αντιπροσωπεύει κρατήσεις που ισχύουν για έναν τύπο σύνδεσης.
Αυτό σας επιτρέπει να έχετε διαφορετικές ρυθμίσεις φυλάκισης για διάφορους τύπους σύνδεσης, όπως ssh, http, proxy, ftp κλπ.
Οι ρυθμίσεις της ενότητας [DEFAULT] είναι οι προεπιλογές. Τώρα, ας δούμε τις ρυθμίσεις για τη ενότητα [JAILS] και πιο πολύ για τον υποενότητα [SSH].
Διαμόρφωση Jail
Το Jail έχει τις προεπιλεγμένες ρυθμίσεις από το [DEFAULT] που αν δεν ταιριάζουν με αυτές που θέλετε να εφαρμοστούν, μπορείτε να τις ορίσετε κατά τα γούστα σας για κάθε υπηρεσία ξεχωριστά και για τις bantime, findtime, και maxretry.
Κάντε κύλιση προς τα κάτω στη γραμμή 280 περίπου και θα δείτε την ενότητα [sshd].
Καταρχήν θα πρέπει πρώτα να ενεργοποιήσετε το jail για τις παραβιάσεις της υπηρεσίας ssh. Οπότε εδώ πρέπει να γράψετε την εντολή: enable = true
Εδώ επίσης μπορείτε να ορίσετε τιμές για το jail για την υπηρεσία SSH. Για παράδειγμα, η προεπιλεγμένη ρύθμιση από το [DEFAULT] ήταν πέντε αποτυχημένες προσπάθειες, αλλά αν θέλετε να είσαστε πιο προσεκτικοί με τις συνδέσεις SSH, μπορείτε να το κατεβάσετε στις τρεις αποτυχημένες προσπάθειες : maxretry = 3
Οι υπόλοιποι ορισμοί αναφέρονται στην προεπιλεγμένη θύρα “ssh” (θύρα 22 εκτός αν θέλετε κάποια άλλη) και λένε στο Fail2ban να κοιτάξει το αρχείο καταγραφής που βρίσκεται στο προεπιλεγμένο φάκελο (/var/log/auth.log) για αυτήν την ενότητα και να αναλύσει το αρχείο καταγραφής.
Θα πρέπει να του πείτε enable = true για όλες τις υπηρεσίες που θέλετε να ενεργοποιήσετε το fail2ban.
Γενικά, το config αρχείο του fail2ban είναι αρκετά μεγάλο και με πολλές δυνατότητες, αρκεί να έχετε όρεξη για διάβασμα. Για παράδειγμα περίπου στην γραμμή 170, στο [ACTIONS] μπορείτε να ορίσετε να σας στέλνει προειδοποιητικό email σε περίπτωση που πιαστεί κάποιος στην φάκα.
Στο τέλος όλων των ρυθμίσεων αποθηκεύστε και κλείστε το αρχείο.
Ενεργοποίηση fail2ban
Μετά την διαμόρφωση του fail2ban θα πρέπει να το ενεργοποιήσετε για να εκτελείται ως υπηρεσία αυτόματης εκκίνησης. Στη συνέχεια, πρέπει να το δοκιμάσετε για να βεβαιωθούμε ότι λειτουργεί όπως αναμένεται.
Για να την ενεργοποίησή του ως υπηρεσία, χρησιμοποιήστε την εντολή systemctl : sudo systemctl enable fail2ban
Και για να ξεκινήσετε την υπηρεσία: sudo systemctl start fail2ban
Μπορείτε να ελέγξετε την κατάσταση της υπηρεσίας χρησιμοποιώντας και πάλι την εντολή systemctl: sudo systemctl status fail2ban.service
Και για να πάρετε το status από το fail2ban χρησιμοποιήστε την εντολή: sudo fail2ban-client status
Και αν θέλετε να δείτε λίγο πιο βαθιά συμπεριλάβετε το όνομα της υπηρεσίας στην προηγούμενη εντολή: sudo fail2ban-client status sshd