# FAIL2BAN ## INSTALLATION ```bash sudo ./install.sh ``` Choisir si l'installation est simplement pour protéger le service SSH ou si le serveur hébrge également le service Nginx (protection contre les DOS attaques ainsi que les badbots). :warning: S'assurer que le service SSH est installé et que le port SSh dans /etc/ssh/sshd_config est renseigné. ## CONFIGURATION > Note: l'installation est automatisé pour configurer les prisons SSH et Nginx en récupérant les configurations présentes sur le serveur. - La création des "prisons" se fait dans le jail.local exemple d'une prison pour le SSH: ```bash #/etc/fail2ban/jail.local [ssh] enabled = true port = 22 filter = sshd logpath = /var/log/auth.log maxretry = 3 bantime = -1 ``` exemple de prison contre le Dos pour Nginx: ```bash [nginx-req-limit] enabled = true filter = nginx-req-limit action = iptables-multiport[name=ReqLimit, port="http,https", protocol=tcp] logpath = /var/log/nginx/*error.log findtime = 600 bantime = 365d maxretry = 10 [nginx-conn-limit] enabled = true filter = nginx-conn-limit action = iptables-multiport[name=ConnLimit, port="http,https", protocol=tcp] logpath = /var/log/nginx/*error.log findtime = 300 bantime = 259200 maxretry = 100 ``` Explications: - Filter renvoie à la configuration de la prison quant aux lois qui la provoque (sous la forme de REGEX) - Action est les processus mis en place pour bannir l'IP, les configurations se trouvent dans /etc/fail2ban/action.d/ - Logpath correspond au chemin des logs à surveiller. - Bantime est le temps de bannissement de l'IP, peux être exprimé en minutes (m) ou jours (d), l'unité par defaut est la seconde. (-1 pour sans limite de durée) - Maxretry indique le nombre d'essais infructueux avant de provoquer le bannissement. A chaque modification de la configuration d'une "prison", redémarrer le service: ```bash sudo systemctl restart fail2ban ``` ## COMMANDES UTILES - Afficher les prisons actives: ```bash sudo fail2ban-client status ``` - Afficher le détail de la prison ssh: ```bash sudo fail2ban-client status ssh ``` - Bannir une IP manuellement: ```bash sudo fail2ban-client set [nom de la prison] banip [IP concerné] ``` - Débannir une IP manuellement: ```bash sudo fail2ban-client unban [IP concerné] [nom de la prison] ```