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

Comment utiliser Fail2ban pour sécuriser SSH sur CentOS 7

Fail2ban est le dernier outil de sécurité pour sécuriser votre serveur contre les attaques par force brute. Il protège automatiquement le serveur des pirates. Il fonctionne en surveillant les fichiers journaux et en réagissant aux actions offensantes telles que les tentatives de connexion infructueuses répétées. Le processus consiste à ajouter une nouvelle règle dans une chaîne de pare-feu et à envoyer une notification par e-mail. Vous pouvez facilement installer et configurer fail2ban en utilisant ce simple document.

Avant de procéder à l'installation, nous devons nous assurer que notre système répond à toutes les exigences logicielles pour compiler et installer l'application. Et aussi, il doit être configuré avec une adresse IP statique. Lors de la première étape, mettez à jour vos référentiels système et vos progiciels en exécutant les commandes ci-dessous sur CentOS.

# yum update

Installer Fail2ban sur CentOS

Pour installer Fail2Ban sur un serveur 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. Nous pouvons exécuter cette commande suivante à partir de la racine pour installer ce package.

# yum install epel-release -y
# yum install fail2ban fail2ban-systemd

Fail2ban a besoin de certaines dépendances. Il les téléchargera automatiquement à partir du référentiel.

fail2ban-firewalld
fail2ban-sendmail
fail2ban-server
systemd-python

Configuration des paramètres pour Fail2ban sur CentOS

Le fichier de configuration par défaut de fail2ban se trouve dans /etc/fail2ban/jail.conf
Toutes les configurations de fail2ban sont à faire dans un fichier local. Vous devez copier /etc/fail2ban/jail.conf dans /etc/fail2ban/jail.local

# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

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

Configurations principales dans le jail.local par défaut

Le code de fichier peut être composé de plusieurs lignes de codes qui sont exécutées pour mettre en liste blanche ou interdire une ou plusieurs adresses IP, définir la durée du bantime, le nombre de tentatives d'échec, etc. Pour activer un service, vous pouvez définir l'état activé de faux à vrai. Vous devez connaître certains termes utilisés dans le fichier de configuration.

  • ignoreip :Il peut s'agir d'une adresse IP, d'un masque CIDR ou d'un hôte DNS. Vous pouvez mettre sur liste blanche n'importe quelle adresse IP en l'ajoutant à cette liste. Plusieurs adresses peuvent être définies à l'aide du séparateur d'espace.
  • bantime :C'est le nombre de secondes pendant lesquelles un hôte est banni.
  • Findtime :C'est le paramètre qui sert à vérifier si un hôte doit être banni ou non. Lorsque l'hôte génère maxretry lors de sa dernière recherche, il est banni.
  • Maxretry  :C'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.

Dans le serveur CentOS 7, vous devrez changer l'option backend dans jail.local de auto à systemd.

# "backend" specifies the backend used to get files modification.
# Available options are "pyinotify", "gamin", "polling", "systemd" and "auto".
# This option can be overridden in each jail as well.
#
# pyinotify: requires pyinotify (a file alteration monitor) to be installed.
# If pyinotify is not installed, Fail2ban will use auto.
# gamin: requires Gamin (a file alteration monitor) to be installed.
# If Gamin is not installed, Fail2ban will use auto.
# polling: uses a polling algorithm which does not require external libraries.
# systemd: uses systemd python library to access the systemd journal.
# Specifying "logpath" is not valid for this backend.
# See "journalmatch" in the jails associated filter config
# auto: will try to use the following backends, in order:
# pyinotify, gamin, polling.
#
# Note: if systemd backend is chosen as the default but you enable a jail
# for which logs are present only in its own log files, specify some other
# backend for that jail (e.g. polling) and provide empty value for
# journalmatch. See https://github.com/fail2ban/fail2ban/issues/959#issuecomment-74901200
backend = systemd

Configuration de fail2ban pour la protection SSH

Aucune prison n'est activée par défaut dans CentOS 7. Pour activer la protection SSH, vous devez décommenter les lignes suivantes dans jail.local fichier comme ci-dessous :

# JAILS
# SSH servers
#

[sshd]

enabled =true# Pour utiliser un filtre sshd plus agressif (y compris sshd-ddos failregex) :#filter =sshd-aggressiveport =sshlogpath =%(sshd_log)sbackend =%(sshd_backend)s

Le paramètre enabled est défini sur true, afin de fournir une protection, pour désactiver la protection, nous pouvons le définir sur false. Le paramètre filter vérifie le fichier de configuration sshd fail2ban, 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 bannie à l'aide du filtre disponible dans /etc/fail2ban/action.d/firewallcmd-ipset.conf.

  • Port :Ce paramètre peut être remplacé par une nouvelle valeur telle que port=2222 si vous avez déplacé votre port vers 2222 au lieu de celui par défaut. Il n'est pas nécessaire de modifier ce paramètre pour le port 22 par défaut.
  • Logpath :Il fournit le chemin où le fichier journal est stocké. Ce fichier journal est analysé par Fail2Ban.
  • Maxretry  :Il est utilisé pour définir la limite maximale des entrées de connexion ayant échoué.
  • Bantime  :Ceci est utilisé pour définir la durée en secondes pendant laquelle un hôte doit être banni.
  • filter :Le nom du fichier situé dans /etc/fail2ban/filter.d qui contient les informations failregex utilisées pour analyser les fichiers journaux de manière appropriée.

Activation du service Fail2ban

Vous devez vous assurer d'activer et de démarrer le service de pare-feu CentOS pour exécuter ce logiciel.

# systemctl enable firewalld
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.
# systemctl start firewalld
# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2018-01-14 10:57:34 UTC; 9s ago
Docs: man:firewalld(1)
Main PID: 19493 (firewalld)
CGroup: /system.slice/firewalld.service
└─19493 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

Now we can enable and start our fail2ban service by executing these commands below:

#systemctl enable fail2ban
#systemctl start fail2ban

Pour toute modification de configuration, assurez-vous de redémarrer le service pour ajouter ces modifications avec la commande ci-dessous :

#systemctl restart fail2ban

Utiliser le client Fail2ban

Fail2ban fournit une commande fail2ban-client qui peut être utilisé pour exécuter Fail2ban à partir de la ligne de commande. Découvrez les différentes options de ligne de commande ci-dessous :

fail2ban-client COMMAND
  • start :démarre le serveur et les jails
  • reload :recharge la configuration
  • reload <JAIL> :recharge la prison
  • stop :arrête toutes les prisons et termine le serveur
  • status :obtient l'état actuel du serveur
  • ping :teste si le serveur est actif
  • help :renvoie cette sortie
  • version :renvoie la version du serveur

Par exemple, pour vérifier si Fail2Ban est en cours d'exécution et si la prison SSHd est activée, exécutez :

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

Pour plus d'informations sur cette commande, vous pouvez exécuter man fail2ban-client .

Suivre les tentatives de connexion infructueuses

Nous pouvons vérifier le journal SSH à l'aide de la commande suivante pour vérifier s'il y a eu des tentatives infructueuses de connexion au serveur via le port ssh. Nous pouvons obtenir une liste des tentatives de mot de passe root échouées à partir de différentes adresses IP similaires à cette sortie.

Jan 14 05:08:58 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:00 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:02 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:04 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:06 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:08 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2

Vous pouvez afficher la liste des IP interdites ayant atteint le nombre maximum de tentatives d'échec par la commande ci-dessous :

#iptables -L -n

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 nécessite une liste blanche. Le nom "sshd" est le nom de la prison, dans ce cas la prison "sshd" que nous avons configurée ci-dessus. Nous pouvons exécuter la commande suivante pour le même.

#fail2ban-client set sshd unbanip IPADDR

Conclusion

Fail2ban 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é. Cet article vous fournit une brève introduction à ce sujet, vous pouvez obtenir plus d'informations à ce sujet dans ce wiki Fail2ban. J'espère que cela vous sera utile. Veuillez publier vos précieux commentaires et suggestions à ce sujet.


Cent OS
  1. Comment installer Fail2Ban sur CentOS 7

  2. Comment utiliser le sel sur Centos 8

  3. Comment changer le port SSH dans CentOS

  4. Comment configurer les clés SSH sur CentOS 8

  5. Comment protéger Apache et SSH avec Fail2Ban sur CentOS 8

Comment générer une clé SSH dans CentOS 8

Comment installer Fail2Ban sur CentOS

Comment installer Fail2Ban sur CentOS 7

Comment installer Fail2Ban sur CentOS 8

Comment utiliser Port Knocking pour sécuriser le service SSH sous Linux

Comment sécuriser SSH avec Fail2Ban