Και τα δύο εργαλεία διαβάζουν αρχεία καταγραφής και αποκλείουν διευθύνσεις, και με την πρώτη ματιά το CrowdSec είναι ένα Fail2ban με νεότερο κώδικα. Η διαφορά τους είναι πιο ουσιαστική από αυτό, και βρίσκεται όχι στην ηλικία του κώδικα αλλά στο από πού προέρχεται η απόφαση αποκλεισμού.
Πώς είναι φτιαγμένα
Το Fail2ban είναι μία διεργασία που διαβάζει αρχεία, μετρά ταιριάσματα κανονικών εκφράσεων και καλεί μια εντολή του τείχους προστασίας. Κάθε απόφαση λαμβάνεται στο μηχάνημά σας από τους δικούς σας μετρητές. Τίποτα δεν στέλνεται πουθενά, δεν υπάρχουν εξαρτήσεις και η ρύθμιση είναι αρχεία κειμένου.
Το CrowdSec χωρίζεται σε δύο μέρη, και αυτό είναι το κύριο που πρέπει να καταλάβετε πριν το εγκαταστήσετε. Ο ίδιος ο πράκτορας μόνο εντοπίζει: αναλύει αρχεία, εφαρμόζει σενάρια και γράφει αποφάσεις στη δική του βάση. Τις αποφάσεις τις επιβάλλει ξεχωριστό πρόγραμμα, ο bouncer. Χωρίς εγκατεστημένο bouncer το CrowdSec τρέχει, δείχνει ειδοποιήσεις, τηρεί λίστα αποφάσεων — και δεν αποκλείει τίποτα.
Αυτή είναι η συνηθέστερη απογοήτευση της πρώτης γνωριμίας: το εργαλείο είναι εγκατεστημένο, οι επιθέσεις φαίνονται και η κίνηση ρέει ακριβώς όπως πριν.
sudo apt install crowdsec
sudo apt install crowdsec-firewall-bouncer-iptables
sudo cscli bouncers list
Αυτή η τελευταία εντολή πρέπει να δείχνει τουλάχιστον μία καταχωρημένη εγγραφή. Κενή λίστα σημαίνει ότι δεν υπάρχει αποκλεισμός.
Η δεύτερη διαφορά: κοινή φήμη
Το Fail2ban γνωρίζει μόνο τι συνέβη σε εσάς. Μια διεύθυνση που πέρασε τη χθεσινή μέρα παραβιάζοντας άλλους εκατό διακομιστές είναι καθαρή γι' αυτό μέχρι να χτυπήσει τη δική σας πόρτα — και οι πρώτες πέντε προσπάθειές της είναι δωρεάν.
Το CrowdSec στέλνει σήματα για ό,τι ενεργοποιήθηκε σε ένα κοινό δίκτυο και λαμβάνει πίσω λίστα διευθύνσεων που εμφανίστηκαν σε ξένους διακομιστές. Το πρακτικό αποτέλεσμα: αισθητό μέρος της μαντεψιάς κόβεται πριν από την πρώτη προσπάθεια. Αυτό μετράει ιδιαίτερα απέναντι σε κατανεμημένες επιθέσεις — χιλιάδες διευθύνσεις με μία προσπάθεια η καθεμία, όπου οι τοπικοί μετρητές είναι εξ ορισμού ανίσχυροι.
Και να τι πρέπει να ξέρετε εκ των προτέρων: η ανταλλαγή είναι αμφίδρομη. Από τον διακομιστή σας φεύγουν οι παραβατικές διευθύνσεις και οι τύποι των σεναρίων που ενεργοποιήθηκαν. Η πλήρως τοπική λειτουργία είναι δυνατή — χωρίς εγγραφή στην κονσόλα νέφους — αλλά τότε η κοινή λίστα δεν είναι διαθέσιμη ούτε σε εσάς, και το κύριο πλεονέκτημα εξαφανίζεται. Αυτό είναι συνειδητή επιλογή, όχι λεπτομέρεια ρύθμισης.
Καθημερινές εντολές
sudo cscli metrics
sudo cscli alerts list
sudo cscli decisions list
sudo cscli decisions delete --ip 203.0.113.25
Το metrics απαντά στο ερώτημα αν διαβάζονται καν τα αρχεία: αν ο αριθμός των αναλυμένων γραμμών είναι μηδέν, τότε η συλλογή για τον διακομιστή ιστού σας δεν είναι εγκατεστημένη ή η διαδρομή του αρχείου είναι λάθος. Αυτή είναι η δεύτερη συνηθέστερη περίπτωση του «είναι εγκατεστημένο και δεν δουλεύει».
sudo cscli collections list
sudo cscli collections install crowdsecurity/nginx
Πόροι
Το CrowdSec είναι γραμμένο σε Go και κρατά την κατάστασή του σε βάση δεδομένων. Η χρήση μνήμης είναι της τάξης των εκατό μεγαμπάιτ, συν ο bouncer. Σε διακομιστή με ένα γιγαμπάιτ μνήμης αυτό είναι αισθητό· από τα δύο και πάνω δεν είναι. Το Fail2ban είναι ελαφρύτερο και κάνει λιγότερα.
Αξίζει να τρέχουν και τα δύο
Δεν συγκρούονται: το ένα γράφει τους κανόνες του στο τείχος προστασίας, το άλλο τους δικούς του, και το να αποκλειστεί η ίδια διεύθυνση δύο φορές δεν βλάπτει σε τίποτα. Ένας λογικός καταμερισμός μοιάζει έτσι.
Το CrowdSec αναλαμβάνει τη μαζική κίνηση: μαντεψιά SSH, σάρωση του διακομιστή ιστού, γνωστές κακές διευθύνσεις από την κοινή λίστα. Το Fail2ban μένει εκεί όπου έχετε δικό σας αρχείο σε δική σας μορφή, για το οποίο η συγγραφή κανονικής έκφρασης είναι ευκολότερη από τη συγγραφή σεναρίου — μια εφαρμογή δικής σας κατασκευής, μια σπάνια υπηρεσία, μια συγκεκριμένη φόρμα σύνδεσης.
Αν πρέπει να διαλέξετε ένα, ο γνώμονας είναι ο εξής: σε διακομιστή με ιστότοπο που ψηλαφείται διαρκώς, το CrowdSec δίνει περισσότερα χάρη στην κοινή λίστα. Σε διακομιστή προσβάσιμο μόνο από εσάς μέσω SSH με κλειδιά, η διαφορά τους είναι μικρή — η περισσότερη δουλειά εκεί έχει ήδη γίνει με την απενεργοποίηση των κωδικών.
Ένας κοινός περιορισμός
Κανένα δεν προστατεύει από ευπάθεια σε εφαρμογή. Και τα δύο δουλεύουν με τη συχνότητα αιτημάτων και τη φήμη διευθύνσεων, και ένα αίτημα που εκμεταλλεύεται μια τρύπα σε πρόσθετο με την πρώτη προσπάθεια από καθαρή διεύθυνση θα περάσει δίπλα και από τα δύο. Αυτή είναι δουλειά άλλων εργαλείων — ενός WAF στο επίπεδο του αιτήματος και έγκαιρων ενημερώσεων. Ο αποκλεισμός διευθύνσεων αφαιρεί το υπόβαθρο, όχι την αιτία.
Η πρακτική αξία και των δύο εξαρτάται από το αν κάποιος κοιτάζει το αποτέλεσμα. Ένας αυξανόμενος αριθμός αποφάσεων, ένα σενάριο που ενεργοποιείται για πρώτη φορά, μια αλλαγή στις χώρες από τις οποίες έρχονται οι προσπάθειες — αυτή είναι η πληροφορία για την οποία εγκαταστάθηκε το εργαλείο. Πώς μοιάζει σε μία σελίδα το δείχνει η επίδειξη παρακάτω.