Εισαγωγή
Βήμα 1: PF (τείχος προστασίας)
Βήμα 2: Μαύρη λίστα
Βήμα 3: SSH
Τελικό βήμα
Εισαγωγή
Οποιαδήποτε υπηρεσία είναι συνδεδεμένη στο διαδίκτυο είναι πιθανός στόχος για επιθέσεις ωμής βίας ή αδικαιολόγητη πρόσβαση. Υπάρχουν εργαλεία όπως fail2banή sshguard, αλλά αυτά είναι λειτουργικά περιορισμένα επειδή αναλύουν μόνο αρχεία καταγραφής. Το Blacklistd ακολουθεί μια διαφορετική προσέγγιση. Οι τροποποιημένοι δαίμονες όπως το SSH μπορούν να συνδεθούν απευθείας στη μαύρη λίστα για να προσθέσουν νέους κανόνες τείχους προστασίας.
Βήμα 1: PF (τείχος προστασίας)
Μια άγκυρα είναι μια συλλογή κανόνων και χρειαζόμαστε έναν στη διαμόρφωση PF μας. Για να δημιουργήσετε ένα ελάχιστο σύνολο κανόνων, επεξεργαστείτε /etc/pf.confέτσι ώστε να μοιάζει με αυτό:
set skip on lo0
scrub in on vtnet0 all fragment reassemble
anchor "blacklistd/*" in on vtnet0
block in all
pass out all keep state
antispoof for vtnet0 inet
pass in quick on vtnet0 inet proto icmp all icmp-type echoreq
pass in quick on vtnet0 proto tcp from any to vtnet0 port 22
Τώρα ενεργοποιήστε PFτην αυτόματη εκκίνηση, επεξεργαστείτε το /etc/rc.conf:
pf_enable="YES"
pf_rules="/etc/pf.conf"
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
Ωστόσο, υπάρχει ένα επιπλέον πράγμα που ίσως θέλετε να κάνετε πρώτα: δοκιμάστε τους κανόνες σας για να βεβαιωθείτε ότι όλα είναι σωστά. Για αυτό, χρησιμοποιήστε την ακόλουθη εντολή:
pfctl -vnf /etc/pf.conf
Εάν αυτή η εντολή αναφέρει σφάλματα, επιστρέψτε και διορθώστε τα πρώτα!
Είναι καλή ιδέα να βεβαιωθείτε ότι όλα λειτουργούν όπως αναμένεται, κάνοντας επανεκκίνηση του διακομιστή τώρα: shutdown -r now
Βήμα 2: Μαύρη λίστα
Οι IP είναι μπλοκαρισμένες για 24 ώρες. Αυτή είναι η προεπιλεγμένη τιμή και μπορεί να αλλάξει σε /etc/blacklistd:
# Blacklist rule
# adr/mask:port type proto owner name nfail disable
[local]
ssh stream * * * 3 24h
Επεξεργαστείτε /etc/rc.confγια να ενεργοποιήσετε τη Μαύρη λίστα:
blacklistd_enable="YES"
blacklistd_flags="-r"
Ξεκινήστε το Blacklistd με την ακόλουθη εντολή:
service blacklistd start
Βήμα 3: SSH
Ένα τελευταίο πράγμα που πρέπει να κάνουμε είναι να πούμε sshdνα ειδοποιήσουμε blacklistd. Προσθέστε UseBlacklist yesστο /etc/ssh/sshd_configαρχείο σας . Τώρα επανεκκινήστε το SSH με service sshd restart.
Τελικό βήμα
Τέλος, δοκιμάστε να συνδεθείτε στον διακομιστή σας με μη έγκυρο κωδικό πρόσβασης.
Για να λάβετε όλες τις μπλοκαρισμένες IP χρησιμοποιήστε μία από τις ακόλουθες εντολές:
blacklistctl dump -bw
address/ma:port id nfail last access
150.x.x.x/32:22 OK 3/3 2017/x/x 04:43:03
115.x.x.x/32:22 OK 3/3 2017/x/x 04:45:40
91.x.x.x/32:22 OK 3/3 2017/x/x 07:51:16
54.x.x.x/32:22 OK 3/3 2017/x/x 12:05:57
pfctl -a blacklistd/22 -t port22 -T show
54.x.x.x
91.x.x.x
115.x.x.x
150.x.x.x
Για να αφαιρέσετε μια αποκλεισμένη IP πρέπει να χρησιμοποιήσετε την εντολή pfctl. Για παράδειγμα:
pfctl -a blacklistd/22 -t port22 -T delete <IP>
Σημειώστε ότι blacklistctlθα εξακολουθεί να εμφανίζεται η IP ως αποκλεισμένη! Αυτή είναι φυσιολογική συμπεριφορά και ελπίζουμε ότι θα καταργηθεί σε μελλοντικές εκδόσεις.