<Palmito's blog src="Boite" alt="Biscuit" />

Mes découvertes, mes penses bêtes, un peu de Html / css / php / sql, GNU/Linux et d'informatique en général ;)

Sécuriser son serveur avec Fail2ban

Palmito
13/04/2019
linux

Obsolète en attente de mise à jour ;)

Bonjour à tous

Plus besoin de présenter cet outil, tout admin serveur le connaît aujourd'hui (ou en tout cas devrait). Mise en place simple et quasi tout de suite fonctionnel, que demander de plus!

Le fonctionnement de fail2ban est assez simple, il analyse les logs du système (auth.log / access.log ...) et quand des actions anormales apparaîssent il ban l'ip via iptables pour un temps défini (temps donné dans le fichier de conf)...sans chichi, sans détours, et voilà!

Pour l'installation il suffit de passer par son gestionnaire de paquet:

apt-get install fail2ban

Les fichiers de configuration sur trouve dans /etc/fail2ban/

Dans ce dossier il y a deux fichiers et deux dossiers...

Les fichiers:

fail2ban.conf, je n'ai rien changé dans ce fichier.

jail.conf, c'est ici que tout ce passe et que nous allons configurer nos prisons. Heureusement nous n'aurons pas besoin de tout faire nous même puisque les règles les plus courantes y sont déjà présentes.

Je ne met ici que ce que j'ai modifié:

Première partie du fichier, les paramètres par defaut qui s'applique à tous les services surveillés mais il est possible de modifier ces valeurs par service (voir plus bas).

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1/8  --->  adresse ip à ignorer
bantime = 604800  ---> temps du ban (une semaine ici)
maxretry = 3  ---> nombre d'essai max avant ban

Votre adresse mail

# Destination email address used solely for the interpolations in
# jail.{conf,local} configuration files.
destemail = votreadresse@mail

Section jail, c'est ici qu'il faut activer les prisons et la encore c'est bien fait et c'est simple, exemple:

[ssh]
enabled = true  --> passer de false à true pour activer
port = 22  --> mettre le port que vous utilisé, il est vivement conseillé de changer le port par défaut
filter = sshd  --> le filtre utilisé (voir plus bas pour plus d'info)
logpath = /var/log/auth.log  --> le fichier de log analysé
maxretry = 1 --> nombre d'essai autorisé avant le ban (un des paramètres de départ que nous pouvons personnaliser selon le service)

/!\ Attention! avec maxretry à 1 vous n'avez pas le droit à l'erreur! une erreur de frappe et vous serez ban de votre propre serveur. J'utilise une connexion ssh par clé, c'est pour cela que j'ai mis cette valeur à 1...si ce n'est pas votre cas mettez 3 voir 6 /!\

Nous aurions pû aussi changer le bantime pour ce service:

[ssh]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
bantime = 86400  ---> pour ban une journée

Pour tous les autres services c'est la même chose, à vous d'activer ceux dont vous avez besoins.

Petite parenthèse en ce qui concerne les filtrages via le fichier acces.log/error.log (apache*), je n'y avais pas pensé au départ mais ayant plusieurs sites sur ma machine, j'ai donné, via mes vhosts, des noms différents pour acces.log/error.log selon les sites.

Ouais c'est bien et?

Les chemins donnés dans les jails sont ceux par défaut, si vous avez donc comme moi, plusieurs sites, avec plusieurs acces.log/error.log (acces_site1.log acces_site2.log...), il faut faire attention de bien indiquer les bons fichiers à analyser.

Perso, j'ai donc mis:

logpath = /var/log/apache*/*error*.log
ou
logpath = /var/log/apache*/*acces*.log

Ainsi, tous mes fichiers logs sont prient en compte.

Un petit exemple tout de même:

[apache]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache*/*error.log
maxretry = 6

Changé en:

[apache]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache*/*error*.log
maxretry = 6

Les dossiers:
A viendre....un jour :o


Retour à l'accueil
Commentaires
Quelque chose à dire?