Ero sivun ”Fail2ban” versioiden välillä
Rivi 1: | Rivi 1: | ||
− | 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. | + | Fail2ban auttaa suojaamaan yhdestä IP-osoitteesta tulevia [http://en.wikipedia.org/wiki/Brute-force_attack 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 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. | + | Failban ongelmana on ettei ole tuki IPv6 osoitteille ja ei tukea jaetulle [http://en.wikipedia.org/wiki/Brute-force_attack brute force] hyökkäyksille. |
Versio 17. syyskuuta 2014 kello 14.36
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.
Sisällysluettelo
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