Introducció a Fail2Ban
Instal·lació de Fail2Ban
Configuració de la configuració de Fail2Ban
Configurant Fail2Ban per protegir SSH
Inici del servei Fail2Ban
Com fer un seguiment dels intents fallits d'inici de sessió
Introducció a Fail2Ban
Per defecte, un client es connecta a SSH mitjançant el port 22. Com que aquest és un port conegut, la configuració predeterminada és vulnerable a molts atacs de força bruta. Fail2Ban és una solució per protegir automàticament un servidor d'aquests atacs. El programa s'executa en segon pla, escaneja els fitxers de registre per detectar quines IP estan atacant i els prohibeix automàticament l'accés a SSH.
Instal·lació de Fail2Ban
En aquest tutorial, instal·larem Fail2Ban a CentOS 6 mitjançant el repositori EPEL. Executeu les ordres següents.
yum install epel-release
yum install fail2ban
Explicació
yum install epel-release: Instal·la el repositori EPEL (Paquets addicionals per a Enterprise Linux).
yum install fail2ban: Instal·la Fail2Ban des del repositori EPEL.
Configuració de la configuració de Fail2Ban
Obriu el fitxer de configuració de Fail2Ban.
nano /etc/fail2ban/jail.conf
Al fitxer, veureu alguns paràmetres com es mostra a continuació. Ajusteu qualsevol dels valors a les vostres necessitats.
[DEFAULT]
# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1
# "bantime" is the number of seconds that a host is banned.
bantime = 600
# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime = 600
# "maxretry" is the number of failures before a host get banned.
maxretry = 3
Explicació
ignoreip: no prohibiu els amfitrions que coincideixin amb una adreça d'aquesta llista. Es poden definir diverses adreces mitjançant el separador d'espais. Escriu la teva IP personal en aquesta línia.
bantime: el nombre de segons que un host està prohibit.
findtime: Un host està prohibit si s'ha generat maxretrydurant l'últim findtime.
maxretry: el nombre d'errors abans que un host sigui prohibit.
Configurant Fail2Ban per protegir SSH
En primer lloc, hem de crear un fitxer de configuració.
nano /etc/fail2ban/jail.local
Copieu les línies de sota i enganxeu-les al fitxer.
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
# sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com]
logpath = /var/log/secure
maxretry = 5
enabled: activa la protecció. Si voleu desactivar-lo, canvieu el valor a fals.
filter: Per defecte, s'estableix en sshd que fa referència al fitxer /etc/fail2ban/filter.d/sshd.conf.
action: Fail2Ban prohibirà la IP que coincideixi amb el filtre /etc/fail2ban/action.d/iptables.conf. Si abans havíeu canviat el port SSH, canvieu port=sshal port nou, per exemple port=2222. Si utilitzeu el port 22, no haureu de canviar el valor.
logpath: la ruta del fitxer de registre utilitzat per Fail2Ban.
maxretry: el nombre màxim d'intents fallits d'inici de sessió.
Inici del servei Fail2Ban
Executeu aquestes dues ordres a continuació per iniciar el servei Fail2Ban:
chkconfig --level 23 fail2ban on
service fail2ban start
Finalment, comproveu iptablessi té les regles afegides per Fail2Ban.
iptables -L
El resultat serà semblant a aquesta sortida.
Chain INPUT (policy ACCEPT)
target prot opt source destination
f2b-SSH tcp -- anywhere anywhere tcp dpt:EtherNet/IP-1
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain f2b-SSH (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
Com fer un seguiment dels intents fallits d'inici de sessió
Podeu utilitzar aquesta ordre per comprovar si el vostre servidor ha tingut intents d'inici de sessió fallits (possibles atacs).
cat /var/log/secure | grep 'Failed password'
El resultat serà semblant a aquestes línies.
Dec 6 22:47:12 vultr sshd[7942]: Failed password for root from 43.229.53.67 port 23021 ssh2
Dec 6 22:47:15 vultr sshd[7944]: Failed password for root from 43.229.53.67 port 40996 ssh2
Dec 6 22:47:16 vultr sshd[7944]: Failed password for root from 43.229.53.67 port 40996 ssh2
Dec 6 22:47:18 vultr sshd[7944]: Failed password for root from 43.229.53.67 port 40996 ssh2
Dec 6 22:47:31 vultr sshd[7948]: Failed password for root from 43.229.53.67 port 29907 ssh2
Dec 6 22:47:34 vultr sshd[7948]: Failed password for root from 43.229.53.67 port 29907 ssh2
Dec 6 22:47:36 vultr sshd[7948]: Failed password for root from 43.229.53.67 port 29907 ssh2
Dec 6 22:47:39 vultr sshd[7950]: Failed password for root from 43.229.53.67 port 48386 ssh2
Dec 6 22:47:41 vultr sshd[7950]: Failed password for root from 43.229.53.67 port 48386 ssh2
Dec 6 22:47:43 vultr sshd[7950]: Failed password for root from 43.229.53.67 port 48386 ssh2
Dec 6 22:47:47 vultr sshd[7952]: Failed password for root from 43.229.53.67 port 62846 ssh2
Dec 6 22:47:49 vultr sshd[7952]: Failed password for root from 43.229.53.67 port 62846 ssh2
Per veure quines IP s'han prohibit, utilitzeu l'ordre següent.
iptables -L -n
Per suprimir una adreça IP de la llista prohibida, executeu l'ordre següent. Canvieu banned_ipa la IP que voleu desbloquejar.
iptables -D f2b-SSH -s banned_ip -j DROP