Fail2ban

De Banane Atomic
Révision datée du 2 novembre 2019 à 23:22 par Nicolas (discussion | contributions) (→‎Installation)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigationAller à la recherche

Principe

Fail2ban analyse les logs et bannit les IPs qui ont essayées de se connecter sans succès.
Fail2ban waits 1 second before checking for new logs to be scanned.

Configuration

Default

/etc/fail2ban/jail.conf
[DEFAULT]
# les adresses IP à ne pas exclure
ignoreip = 127.0.0.1/8 192.168.x.x

# durée d'exclusion d'une IP en seconde. Utiliser un nombre négatif pour une exclusion permanente
bantime = 600

# exclusion si maxretry correspondances en findtime (secondes)
findtime = 600
maxretry = 5

# "filter" defines the filter to use by the jail. By default jails have names matching their filter name
filter = %(__name__)s

# iptables-multiport
action = %(action_)s
/etc/fail2ban/jail.conf
[ma_section]
# active ma_section
enabled  = true
# utilise le filtre /etc/fail2ban/filter.d/mon_filtre.conf
filter   = mon_filtre
# exécute l'action /etc/fail2ban/action.d/iptables.conf si le filtre retourne true
action   = iptables[name=mon_action, port=xxx, protocol=tcp]
# le fichier de log à scanner
logpath  = /var/log/mon_log.log
Only one filter is allowed per jail, but it is possible to specify several actions, on separate lines.

Filtres

/etc/fail2ban/filter.d/*.conf

Tests

Bash.svg
# affiche la configuration actuelle
fail2ban-client -d

fail2ban-client status

# tester une regex avec une ligne
fail2ban-regex "line" "failregex"

# tester un fichier de filtre avec un fichier de log
fail2ban-regex /chemin/fichier.log /chemin/filtre.conf

# tester une regex avec un fichier de log
fail2ban-regex /chemin/fichier.log "failregex"
Log: /var/log/fail2ban.log

Liens

Exemples

/etc/fail2ban/filter.d/mediawiki.conf
[Definition]

block = \/?(index.php\?title=Sp%%C3%%A9cial:Connexion)\S*
code  = (400)

failregex = ^<HOST> \- \S+ \[\] \"(GET|POST) %(block)s \S+\" .+$
            ^<HOST> \- \S+ \[\] \"[A-Z]+ \S+ \S+\" %(code)s .+$
            ^<HOST> \- \S+ \[\] \"\\x[0-9A-Z]{2}.+$

ignoreregex = 


# 0.0.0.0 - - [20/Jun/2016:06:27:12 +0200] "GET /index.php?title=Sp%C3%A9cial:Connexion&returnto=Surcharge+d%E2%80%99op%C3%A9rateurs HTTP/1.0" 200 11542 "https://wiki.bananeatomic.fr/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36"

# 0.0.0.0 - - [24/Jun/2016:16:14:40 +0200] "POST /404 HTTP/1.1" 400 264 "-" "apache" "-"

# 0.0.0.0 - - [20/Jun/2016:06:07:42 +0200] "CONNECT 126mx00.mxmail.netease.com:25 HTTP/1.0" 400 166 "-" "-"

# 0.0.0.0 - - [23/Jun/2016:20:57:04 +0200] "\x08\x02\x8C\x7F\x7F\xD5\xDF\xE8\xBF\x96\x06\xA1\xF7\xFDs\x80#,\xD8\x154V6\x96LIH\xAC~lu\xD8\x04\x18\xFF\x10\x07\xCB\xE3\xDAi\xA8\xD8j\xA9\xDEnP\x0Exkoib8D\xEAz-\xBD\x84gh\x9B" 400 166 "-" "-" "-"

Installation

Bash.svg
pacman -S fail2ban

systemctl start fail2ban
systemctl enable fail2ban