====== fail2ban ====== * http://www.fail2ban.org * https://github.com/fail2ban/fail2ban ===== Tips & Tricks ===== Voir le status de toutes les ''jails'' sudo fail2ban-client status | sed -n 's/,//g;s/.*Jail list://p' | xargs -n1 sudo fail2ban-client status ===== Filters ===== ==== Wordpress ==== Voir les filtres du plugin [[https://wordpress.org/plugins/wp-fail2ban/|wp-fail2ban]] https://plugins.svn.wordpress.org/wp-fail2ban/trunk/filters.d/ Dédier des logs à fail2ban https://github.com/fail2ban/fail2ban/wiki/Best-practice # Filtre pour Wordpress via nginx combined access_log # xmlrpc.php n'est pas utile: https://kinsta.com/fr/blog/xmlrpc-php/ # [INCLUDES] # Load regexes for filtering before = botsearch-common.conf [Definition] failregex = ^ \- \S+ \[\] \"(GET|POST|HEAD) /wp-content/plugins/wp-file-manager/\S+ \S+\" 404 .+$ ^ \- \S+ \[\] \"(GET|POST|HEAD) /vendor/phpunit/phpunit/\S+ \S+\" 404 .+$ ^ \- \S+ \[\] \"(GET|POST|HEAD) /\.env \S+\" (403|404) .+$ ^ \- \S+ \[\] \"(GET|POST|HEAD) /\S+/wp-login\.php \S+\" 404 .+$ ^ \- \S+ \[\] \"POST /xmlrpc.php \S+\" (200|503) .+$ ignoreregex = datepattern = {^LN-BEG}%%ExY(?P<_sep>[-/.])%%m(?P=_sep)%%d[T ]%%H:%%M:%%S(?:[.,]%%f)?(?:\s*%%z)? ^[^\[]*\[({DATE}) {^LN-BEG} Et la jail (agressive!) correspondante: [wordpress-nginx] enabled=true # ban only for those ports: port=http,https logpath=/var/log/nginx/www.parents-touraine.fr_access.log # "bantime" is the number of seconds that a host is banned. bantime = 10m # A host is banned if it has generated "maxretry" during the last "findtime" findtime = 10m # "maxretry" is the number of failures before a host get banned. maxretry = 1