Mainos / Advertisement:

Fail2ban

Kohteesta Taisto
Versio hetkellä 17. syyskuuta 2014 kello 14.34 – tehnyt Minh (keskustelu | muokkaukset)
Siirry navigaatioon Siirry hakuun

Fail2ban auttaa suojaamaan yhdestä IP-osoitteesta tulevia brute force hyökkäyksiä seuraamalla loki tiedostoja palvelimella. Tällä voi estää mm. tietyn kirjautumisen yritysten jälkeiset kirjautumiset.

Failban saa suodattimia mm. Apache, Dovecot, Postfix ja SSH.

Failban ongelmana on ettei ole tuki IPv6 osoitteille ja ei tukea jaetulle brute force hyökkäyksille.


Asentaminen

 aptitude install fail2ban

TAI

 apt-get install fail2ban

Konfigurointi

Avaan /etc/fail2ban/jail.conf

 nano /etc/fail2ban/jail.conf

Oletus asetuksia:

ignoreip = IP-osoitteita jotka ohittava suodattimet

bantime = Aika, kuinka kauan säilytetään estolistalla, oletuksena 600 sekunttia.

findtime = Ban Ip-osoite jos tämän ajan sisällä kolme kertaa epäonnistunut

maxretry = Kuinka monta yritystä, ennen kuin estetään


Esimerkki konfiguroinnista:

[DEFAULT]

 # "ignoreip" can be an IP address, a CIDR mask or a DNS host
 ignoreip = 127.0.0.1 192.168.1.1
 bantime  = 600
 maxretry = 3
 
 # "backend" specifies the backend used to get files modification. Available
 # options are "gamin", "polling" and "auto


Eli jätetään estolistan ulkopuolelle IP-osoitteet 192.168.1.1 ja 172.0.0.1 (=localhost). Enintään 3 yritystä sallitaan ja jos ylittyy niin 600 sekunniksi estolistalle.

Ja lisäksi SSH:n konfiguraatiot:

[ssh]                                      # fail2ban-ssh = Suodattimen nimi
 
enabled  = true                            # Onko siis suodatin käytössä? Vaihtoehtona true ja false.
port     = ssh                             # Portti missä on, voi olla siis ssh tai portti numero  esim. 22 
filter   = sshd                            # Suodattimen tyyppi. Suodattimet löytyy /etc/fail2ban/filter.d/ hakemistosta.
logpath  = /var/log/auth.log               # Lokien sijainti
maxretry = 6                               # Kuinka monta yritystä sallitaan

Seuraavassa esimerkit konfiguraatiosta:

Apache

 [apache]
 
 enabled  = true
 port     = http,https
 filter   = apache-auth
 logpath  = /var/log/apache*/*error.log
 maxretry = 6
 # default action is now multiport, so apache-multiport jail was left
 # for compatibility with previous (<0.7.6-2) releases
 [apache-multiport]
 
 enabled   = true
 port      = http,https
 filter    = apache-auth
 logpath   = /var/log/apache*/*error.log
 maxretry  = 6
 [apache-noscript]
 
 enabled  = true
 port     = http,https
 filter   = apache-noscript
 logpath  = /var/log/apache*/*error.log
 maxretry = 6
 [apache-overflows]
 
 enabled  = true
 port     = http,https
 filter   = apache-overflows
 logpath  = /var/log/apache*/*error.log
 maxretry = 2


SSH

[ssh]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 6

Oletuksena SSH sallii 6 yritystä muodostaessa yhteyttä, suositus on 3 yritystä.

port = ssh pitää muuttaa jos olet muuttanut SSH:n oletusporttia /etc/ssh/sshd.config tiedostosta.

Proftpd

 [proftpd]
 enabled  = true
 port     = ftp,ftp-data,ftps,ftps-data
 filter   = proftpd
 logpath  = /var/log/proftpd/proftpd.log
 maxretry = 3

Postfix

 [postfix]
 
 enabled  = true
 port     = smtp,ssmtp
 filter   = postfix
 logpath  = /var/log/mail.log
 [sasl]
 
 enabled  = true
 port     = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
 filter   = sasl
 # You might consider monitoring /var/log/mail.warn instead if you are
 # running postfix since it would provide the same log lines at the
 # "warn" level but overall at the smaller filesize.
 logpath  = /var/log/mail.log
 [dovecot]
 
 enabled = true
 port    = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
 filter  = dovecot
 logpath = /var/log/mail.log

Lokitiedosto

Fail2ban tarkistaa estolistan fail2ban lokista, joka on polussa /var/log/fail2ban.log

 nano /var/log/fail2ban.log


Tiedostossa näkyy kaikki lokit ja yritykset muodostaessa yhteyttä palvelimeen.


Esimerkki loki:


 2014-05-13 15:52:30,388 fail2ban.actions: WARNING [sendmail] Ban XXX.66.82.116
 2014-05-13 15:59:29,295 fail2ban.actions: WARNING [sendmail] Ban XXX.27.118.100
 2014-05-13 16:07:31,183 fail2ban.actions: WARNING [sendmail] Unban XXX.66.82.116
 2014-05-13 16:14:29,530 fail2ban.actions: WARNING [sendmail] Unban XXX.27.118.100
 2014-05-13 16:56:27,086 fail2ban.actions: WARNING [ssh] Ban XXX.136.60.164
 2014-05-13 17:11:27,833 fail2ban.actions: WARNING [ssh] Unban XXX.136.60.164

IPTABLES - Palomuuri

Näytetään palomuuri säännöt

 iptables -L

Näytetään estetyt palomuurista esim. fail2ban

 iptables -L -n

Lista tarkemmin

 iptables -L -v

Komento tulostaa:

 Chain fail2ban-ssh (1 references)
 target     prot opt source               destination         
 DROP       all  --  192.168.100.100          0.0.0.0/0           
 RETURN     all  --  0.0.0.0/0            0.0.0.0/0

Poistetaan IP-osoite fail2ban ssh korvaamalla <banned_ip> ban IP-osoitteella.

 iptables -D fail2ban-ssh -s <banned_ip> -j DROP


Lisätään IP-osoite ban listalle manuaalisesti:

 iptables -A INPUT -s <banned_ip> -j DROP

Verkko-osoiteavaruuksinen ban

  iptables -A INPUT -s <banned_ip>/24 -j DROP

Verkko-alueen ban:

 iptables -A INPUT -m iprange --src-range <banned-ip>-<range> -j DROP

"/24" tarkoittaa verkkomaskia, oletuksena se on 24 = 255.255.255.0

Lista boteista:

 116.10.191.0/24
 61.174.50.0/24
 61.174.51.0/24 

Kun olet estänyt manuaalisesti voit katsoa iptablea, ja se näyttää tältä

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
fail2ban-proftpd  tcp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 21,20,990,989
fail2ban-ssh  tcp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 22
DROP       all  --  116.10.191.0/24      0.0.0.0/0

Tallenna tiedostoon:

iptables-save > /path

Palauta tiedostosta:

iptables-restore < /path

Salli kaikki liikenne ulospäin

iptables -I OUTPUT -o eth0 -d 0.0.0.0/0 -j ACCEPT
iptables -I INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
Mainos / Advertisement: