introduzione
Qualsiasi servizio connesso a Internet è un potenziale bersaglio di attacchi di forza bruta o accesso ingiustificato. Esistono strumenti come fail2ban
o 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.conf
in 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 PF
l'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.conf
per 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 sshd
di avvisare blacklistd
. Aggiungi UseBlacklist yes
al tuo /etc/ssh/sshd_config
file. 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 blacklistctl
mostrerà ancora l'IP come bloccato! Questo è un comportamento normale e si spera che venga rimosso nelle versioni future.