Introducere în Fail2Ban
În mod implicit, un client se conectează la SSH folosind portul 22. Deoarece acesta este un port binecunoscut, configurația implicită este vulnerabilă la multe atacuri de forță brută. Fail2Ban este o soluție pentru a proteja automat un server de aceste atacuri. Programul rulează în fundal, scanează fișierele jurnal pentru a detecta IP-urile care le atacă și le interzice automat să acceseze SSH.
Instalarea Fail2Ban
În acest tutorial, vom instala Fail2Ban pe CentOS 6 prin intermediul depozitului EPEL. Executați următoarele comenzi.
yum install epel-release
yum install fail2ban
Explicaţie
yum install epel-release: Instalează depozitul EPEL (pachete suplimentare pentru Enterprise Linux).
yum install fail2ban: Instalează Fail2Ban din depozitul EPEL.
Configurarea setărilor Fail2Ban
Deschideți fișierul de configurare Fail2Ban.
nano /etc/fail2ban/jail.conf
În fișier, veți vedea câțiva parametri după cum se arată mai jos. Ajustați oricare dintre valori la nevoile dvs.
[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
Explicaţie
ignoreip: Nu interzice gazdele care se potrivesc cu o adresă din această listă. Mai multe adrese pot fi definite folosind separator de spațiu. Scrie IP-ul personal pe această linie.
bantime: Numărul de secunde că o gazdă este interzisă.
findtime: O gazdă este interzisă dacă a generat maxretryîn timpul ultimului findtime.
maxretry: Numărul de eșecuri înainte ca o gazdă să fie interzisă.
Configurarea Fail2Ban pentru a proteja SSH
În primul rând, trebuie să creăm un fișier de configurare.
nano /etc/fail2ban/jail.local
Copiați liniile de mai jos și lipiți în fișier.
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
# sendmail-whois[name=SSH, dest=root, [email protected]]
logpath = /var/log/secure
maxretry = 5
enabled: Activați protecția. Dacă doriți să o dezactivați, schimbați valoarea în false.
filter: În mod implicit, este setat pe sshd care se referă la fișier /etc/fail2ban/filter.d/sshd.conf.
action: Fail2Ban va interzice IP-ul care se potrivește cu filtrul /etc/fail2ban/action.d/iptables.conf. Dacă ați schimbat portul SSH înainte, schimbați port=sshnoul port, de exemplu port=2222. Dacă utilizați portul 22, nu va trebui să modificați valoarea.
logpath: Calea fișierului jurnal folosit de Fail2Ban.
maxretry: Numărul maxim de încercări de autentificare eșuate.
Pornirea serviciului Fail2Ban
Executați aceste două comenzi de mai jos pentru a porni serviciul Fail2Ban:
chkconfig --level 23 fail2ban on
service fail2ban start
În cele din urmă, verificați iptablesdacă are regulile adăugate de Fail2Ban.
iptables -L
Rezultatul va arata similar cu acest rezultat.
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
Cum să urmăriți încercările de autentificare eșuate
Puteți utiliza această comandă pentru a verifica dacă serverul dvs. a avut încercări de autentificare eșuate (posibile atacuri).
cat /var/log/secure | grep 'Failed password'
Rezultatul va arata similar cu aceste linii.
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
Pentru a vedea ce IP-uri au fost interzise, utilizați următoarea comandă.
iptables -L -n
Pentru a șterge o adresă IP din lista interzisă, executați următoarea comandă. Modificați banned_ipIP-ul pe care doriți să îl dezactivați.
iptables -D f2b-SSH -s banned_ip -j DROP