====== fail2ban====== [[linux:linux|{{ :dokuwiki:tux.png?120|}}]] ===== context===== dit document beschrijft de werking van fail2ban, een intrusion-prevention system (**IPS**) dat ip adressen blokkeert waarvan meermaals gefaalde aanmeldpogingen afkomstig zijn. \\ ===== werking ===== fail2ban monitort **logboeken** van Linux services op gefaalde aanmeldpogingen. Zodra het aantal pogingen is overschreden, voegt fail2ban een firewall regel toe waardoor het ipdres voor bepaalde tijd wordt geblokkkeerd. \\ Zodra die tijd is verstreken, wordt de firewall regel automatisch verwijderd waardoor het adres wordt vrijgegeven en de host opnieuw kan aanmelden. \\ Het programma bestaat uit 3 componenten: server, client en configuratiebestanden ==== server ==== * fail2ban-server monitort de **logboeken** van Linux services op basis van **filters**. \\ Voor elke gefaalde of onrechtmatige aanmeldpoging bestaat er een reguliere expressie * op basis van het aantal gefaalde pogingen onderneemt de server **actions** die meestal neerkomen op een firewall regel toevoegen die verkeer vanaf die bepaalde host blokkeert (**ban**) * voor elke service die wordt bewaakt, wordt een zgn **jail** aangemaakt, een combinatie van filters en actions. * na bepaalde tijd wordt die firewall regel automatisch gewist zodat een host vrijgegeven (**unban**) wordt. * het logbestand staat onder /var/log/fail2ban.log {{ :linux:fail2ban_logfile.png?600 |}} ==== client ==== * fail2ban-client: configureert de server en kan ipadressen __handmatig__ vrijgeven. * meestbruikte commando's: * status van faiL2ban fail2ban-client status * status van een specifieke jail: fail2ban-client status sshd * ip adres vrijgeven: fail2ban-client unban 10.11.12.13 ===== configuratiebestanden ===== /etc/fail2ban/ === fail2ban.conf === * algemene programma werking * bewaar je eigen instellingen in **fail2ban.local** zodat je instellingen niet overschreven worden bij eerstvolgende update. vb: \\ [Definition] \\ loglevel = DEBUG \\ logtarget = /var/log/fail2ban.log === filter.d === * deze directory bevat voor elke Linux service een .conf-bestand waarin de reguliere expressies staat voor een gefaalde aanmeldpoging. === actions.d === * voor elke firewall staat hier de specifieke syntax om een firewall regel toe te voegen om een ipadres te bannen en unbannen. * bevat ook enkele bruikbare mail configuraties zodat een mail kan verstuurd worden zodra een ipadres is geblokkeerd. === jail.conf === * globale instellingen voor het vergrendelingsbeleid: * maximaal aantal foutieve aanmeldpogingen * hoelang wordt het ip adres geblokkeerd * welke ipadressen moeten gewhitelist worden? * bewaar je eigen instellingen in **jail.local** zodat je instellingen niet overschreven worden bij eerstvolgende update. vb: \\ [DEFAULT] \\ bantime = 30m \\ findtime = 10m \\ maxretry = 10 \\ banaction = ufw \\ banaction_allports = ufw === jail.d === * een jail per service * voorbeeld: \\ [sshd] \\ enabled = true \\ port = 12345 \\ filter = sshd \\ logpath = /var/log/auth.log \\ maxretry = 3 \\ bantime = 10 min \\ ===== Great Fun ===== Als je fail2ban es lekker aan het werk wilt zetten: * zet een Linux bakkie op het internet * maak die bereikbaar op een standaard poort. * zorg dat er enkel kan aangemeld worden met private/public key * stel fail2ban in dattie gedurende 1 uur ip adressen blokkeert * laat em een weekje ongemoeid en ga dan es door je logboek. ===== opvolgen ===== zie: [[linux:fail2ban_opvolgen|fail2ban opvolgen]] ===== meer info ===== * [[https://www.fail2ban.org/wiki/index.php/Commands|man page]] * [[installatie:fail2ban|installatie]] * [[linux:fail2ban_opvolgen|fail2ban opvolgen]] * [[https://www.linode.com/docs/security/using-fail2ban-to-secure-your-server-a-tutorial/|using fail2ban]] {{tag>Linux}}