GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment installer Fail2Ban sur CentOS 7

La plupart des serveurs Linux offrent une connexion SSH via le port 22 à des fins d'administration à distance. Ce port est un port bien connu, il est donc souvent attaqué par des attaques par force brute. Fail2ban est un logiciel qui analyse les fichiers journaux pour les tentatives de connexion par force brute en temps réel et interdit les attaquants avec firewalld ou iptables. Fail2ban reconnaît les accès indésirables ou les tentatives de violation de la sécurité du serveur dans le délai défini par l'administrateur et bloque les adresses IP qui montrent des signes d'attaques par force brute ou d'attaques par dictionnaire. Ce programme fonctionne en arrière-plan et analyse en permanence les fichiers journaux à la recherche de schémas de connexion inhabituels et de tentatives de violation de la sécurité.

Ce tutoriel montre l'installation et la configuration de Fail2Ban avec firewalld sur CentOS 7.

Installation de Fail2Ban

Pour installer Fail2Ban sur CentOS 7, nous devrons d'abord installer le référentiel EPEL (Extra Packages for Enterprise Linux). EPEL contient des packages supplémentaires pour toutes les versions de CentOS, l'un de ces packages supplémentaires est Fail2Ban.

Les commandes suivantes doivent être exécutées après le passage à l'utilisateur root.

yum install epel-release
yum install fail2ban fail2ban-systemd

Si vous avez installé SELinux, mettez à jour les politiques SELinux :

yum update -y selinux-policy*

Configurer les paramètres pour Fail2Ban

Une fois installé, nous devrons configurer et personnaliser le logiciel avec un fichier de configuration jail.local. Le fichier jail.local remplace le fichier jail.conf et est utilisé pour sécuriser la mise à jour de votre configuration personnalisée.

Faites une copie du fichier jail.conf et enregistrez-le sous le nom jail.local :

cp -pf /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Ouvrez le fichier jail.local pour le modifier dans Nano avec la commande suivante.

nano /etc/fail2ban/jail.local

Le code du fichier peut être composé de plusieurs lignes de codes qui s'exécutent pour empêcher l'interdiction d'une ou plusieurs adresses IP, définir la durée du bantime, etc. Un fichier de configuration de prison typique contient les lignes suivantes.

[DEFAULT]

#
# MISCELLANEOUS OPTIONS
#

# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1/8

# External command that will take an tagged arguments to ignore, e.g. <ip>,
# and return true if the IP is to be ignored. False otherwise.
#
# ignorecommand = /path/to/command <ip>
ignorecommand =

# "bantime" is the number of seconds that a host is banned.
bantime = 600

# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime = 600

# "maxretry" is the number of failures before a host get banned.
maxretry = 5

Ignorer ip est utilisé pour définir la liste des IP qui ne seront pas bannies. La liste des adresses IP doit être donnée avec un séparateur d'espace. Ce paramètre permet de définir votre adresse IP personnelle (si vous accédez au serveur depuis une IP fixe).

Bantime Le paramètre est utilisé pour définir la durée en secondes pendant laquelle un hôte doit être banni.

Trouver le temps est le paramètre qui sert à vérifier si un hôte doit être banni ou non. Lorsque l'hôte génère maxrety lors de sa dernière recherche, il est banni.

Nombre maximal de tentatives est le paramètre utilisé pour définir la limite du nombre de tentatives par un hôte, en cas de dépassement de cette limite, l'hôte est banni.

Ajouter un fichier jail pour protéger SSH.

Créer un nouveau fichier avec l'éditeur Nano

nano /etc/fail2ban/jail.d/sshd.local

Au fichier ci-dessus, ajoutez les lignes de code suivantes.

[sshd]
enabled = true
port = ssh
#action = firewallcmd-ipset
logpath = %(sshd_log)s
maxretry = 5
bantime = 86400

Paramètre activé est défini sur vrai, afin de fournir une protection, pour désactiver la protection, il est défini sur faux. Le paramètre filter vérifie le fichier de configuration sshd, situé dans le chemin /etc/fail2ban/filter.d/sshd.conf.

Le paramètre action est utilisé pour dériver l'adresse IP qui doit être interdite à l'aide du filtre disponible à partir de /etc/fail2ban/action.d/firewallcmd-ipset.conf.

Port Le paramètre peut être remplacé par une nouvelle valeur telle que port=1212, comme c'est le cas. Lorsque vous utilisez le port 22, il n'est pas nécessaire de modifier ce paramètre.

Logpath fournit le chemin où le fichier journal est stocké. Ce fichier journal est scanné par Fail2Ban.

Nombre maximal de tentatives est utilisé pour définir la limite maximale des entrées de connexion ayant échoué.

Bantime Le paramètre est utilisé pour définir la durée en secondes pendant laquelle un hôte doit être banni.

Exécution du service Fail2Ban

Lorsque vous n'exécutez pas encore le pare-feu CentOS, démarrez-le :

systemctl enable firewalld
systemctl start firewalld

Exécutez les lignes de commande suivantes pour exécuter le logiciel de protection Fail2Ban sur le serveur.

systemctl enable fail2ban
systemctl start fail2ban 

Suivi des entrées de connexion ayant échoué

La commande suivante est utilisée pour vérifier s'il y a eu des tentatives infructueuses de connexion au serveur via le port ssh.

cat /var/log/secure | grep 'Failed password'

L'exécution de la commande ci-dessus obtiendra une liste des tentatives de mot de passe root échouées à partir de différentes adresses IP. Le format des résultats sera similaire à celui présenté ci-dessous :

Apr 4 17:05:12 htf sshd[4287]: Failed password for root from 108.61.157.25 port 23121 ssh2
Apr 4 17:05:15 htf sshd[3154]: Failed password for root from 108.61.157.25 port 14486 ssh2
Apr 4 17:05:16 htf sshd[3154]: Failed password for root from 108.61.157.25 port 24157 ssh2
Apr 4 17:05:18 htf sshd[3154]: Failed password for root from 108.61.157.25 port 24157 ssh2

Vérification des IP bannies par Fail2Ban

La commande suivante est utilisée pour obtenir une liste des adresses IP interdites qui ont été reconnues comme des menaces par force brute.

iptables -L -n

Vérifier le statut Fal2Ban

Utilisez la commande suivante pour vérifier l'état des prisons Fail2Ban :

fail2ban-client status

Le résultat devrait ressembler à ceci :

[[email protected] ]# fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: sshd

Débannir une adresse IP

Afin de supprimer une adresse IP de la liste interdite, le paramètre IPADDRESS est défini sur l'adresse IP appropriée qui doit être annulée. Le nom "sshd" est le nom de la prison, dans ce cas la prison "sshd" que nous avons configurée ci-dessus. La commande suivante fait le travail.

fail2ban-client set sshd unbanip IPADDRESS

Cent OS
  1. Comment installer PHP 7, 7.2 et 7.3 sur CentOS 7

  2. Comment installer Java 11 et 12 sur CentOS 7

  3. Comment installer Wine 4.0 sur CentOS 7

  4. Installer Fail2ban sur CentOS

  5. Comment installer Logaholic sur CentOS

Comment installer R sur CentOS 8

Comment installer et utiliser Fail2ban sur RHEL 8 / CentOS 8

Comment installer et configurer Fail2ban sur CentOS 8

Comment installer Fail2Ban sur CentOS

Comment installer Fail2Ban sur CentOS 7

Comment installer Fail2Ban sur CentOS 8