introduzione
Qualsiasi servizio connesso a Internet è un potenziale bersaglio di attacchi di forza bruta o accesso ingiustificato. Esistono strumenti come fail2bano sshguard, ma questi sono funzionalmente limitati perché analizzano solo i file di registro. Blacklistd ha un approccio diverso. I daemon modificati come SSH sono in grado di connettersi direttamente a blacklistd per aggiungere nuove regole del firewall.
Passaggio 1: PF (Firewall)
Un'ancora è una raccolta di regole e ne abbiamo bisogno nella nostra configurazione PF. Per creare un set di regole minimo, modifica /etc/pf.confin questo modo:
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
Ora abilita PFl'avvio automatico, modifica /etc/rc.conf:
pf_enable="YES"
pf_rules="/etc/pf.conf"
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
Tuttavia, c'è un'altra cosa che potresti voler fare prima: prova le tue regole per assicurarti che tutto sia corretto. Per questo, usa il seguente comando:
pfctl -vnf /etc/pf.conf
Se questo comando segnala errori, torna indietro e correggili prima!
È una buona idea assicurarsi che tutto funzioni come previsto riavviando il server ora: shutdown -r now
Passaggio 2: Blacklistd
Gli IP sono bloccati per 24 ore. Questo è il valore predefinito e può essere modificato in /etc/blacklistd:
# Blacklist rule
# adr/mask:port type proto owner name nfail disable
[local]
ssh stream * * * 3 24h
Modifica /etc/rc.confper abilitare Blacklistd:
blacklistd_enable="YES"
blacklistd_flags="-r"
Avvia Blacklistd con il seguente comando:
service blacklistd start
Passaggio 3: SSH
Un'ultima cosa che dobbiamo fare è dire sshddi avvisare blacklistd. Aggiungi UseBlacklist yesal tuo /etc/ssh/sshd_configfile. Ora riavvia SSH con service sshd restart.
Passo finale
Infine, prova ad accedere al tuo server con una password non valida.
Per ottenere tutti gli IP bloccati utilizzare uno dei seguenti comandi:
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
Per rimuovere un IP bloccato è necessario utilizzare il comando pfctl. Per esempio:
pfctl -a blacklistd/22 -t port22 -T delete <IP>
Nota che blacklistctlmostrerà ancora l'IP come bloccato! Questo è un comportamento normale e si spera che venga rimosso nelle versioni future.