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

Comment installer et configurer Fail2Ban sur CentOS 8 et Fedora 33

Fail2Ban est un utilitaire d'analyse de journaux qui analyse les fichiers journaux de divers processus et interdit les adresses IP qui font trop d'échecs de mot de passe. Lorsqu'une tentative de connexion est localisée, Fail2Ban ajoutera une nouvelle règle à iptables pour bloquer l'adresse IP de l'attaquant, temporairement ou définitivement. Il peut également vous alerter par e-mail pour la même chose.

Il est principalement axé sur la détection des intrusions via SSH, mais il peut être configuré pour fonctionner avec n'importe quel service utilisant des fichiers journaux.

Prérequis

  1. Un serveur basé sur Fedora 33 ou CentOS 8 avec un utilisateur non root avec des privilèges sudo.

  2. Installez l'éditeur Nano car c'est ce que nous allons utiliser.

    $ sudo dnf install nano -y
    

Installer Fail2Ban

Pour installer Fail2Ban sur CentOS 8, vous devez d'abord installer le référentiel EPEL Yum.

$ sudo dnf install epel-release

Fedora 33 est livré avec Fail2Ban.

Exécutez la commande suivante pour installer Fail2Ban sur Fedora 33 et CentOS 8.

$ sudo dnf install fail2ban

Une fois installé, nous devons activer le service.

$ sudo systemctl enable fail2ban

Ensuite, démarrez le service fail2ban.

$ sudo systemctl start fail2ban

Vous pouvez maintenant vérifier l'état du service pour voir s'il fonctionne correctement.

$ sudo systemctl status fail2ban
? fail2ban.service - Fail2Ban Service
     Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; enabled; vendor preset: disabled)
     Active: active (running) since Mon 2020-11-02 21:15:59 UTC; 5s ago
       Docs: man:fail2ban(1)
    Process: 19031 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS)
   Main PID: 19032 (f2b/server)
      Tasks: 3 (limit: 1125)
     Memory: 11.0M
        CPU: 96ms
     CGroup: /system.slice/fail2ban.service
             ??19032 /usr/bin/python3 -s /usr/bin/fail2ban-server -xf start

Nov 02 21:15:59 howtoforge-tutorial systemd[1]: Starting Fail2Ban Service...
Nov 02 21:15:59 howtoforge-tutorial systemd[1]: Started Fail2Ban Service.
Nov 02 21:15:59 howtoforge-tutorial fail2ban-server[19032]: Server ready

Configurer Fail2Ban

Le service Fail2Ban conserve ses fichiers de configuration dans le /etc/fail2ban annuaire. Vous tomberez sur un fichier jail.conf dedans. Ce fichier est généralement remplacé lors des mises à niveau du package, il ne doit donc pas être modifié.

Au lieu de cela, toutes les configurations doivent être faites dans un nouveau fichier que nous appellerons jail.local . Les paramètres de ces 2 fichiers peuvent être outrepassés via les fichiers de /etc/fail2ban/jail.d/ répertoire.

Les configurations sont appliquées dans l'ordre suivant :

  1. /etc/fail2ban/jail.conf
  2. etc/fail2ban/jail.d/*.conf , Par ordre alphabétique
  3. /etc/fail2ban/jail.local
  4. /etc/fail2ban/jail.d/*.local , Par ordre alphabétique

jail.conf contient un [DEFAULT] section suivie de sections pour les services individuels. Chacune de ces sections peut être remplacée en les définissant dans .local fichiers.

Configurer jail.local

Nous allons créer un nouveau jail.local fichier.

$ sudo nano /etc/fail2ban/jail.local

Collez-y le code suivant.

[DEFAULT]
# Ban hosts for one hour:
bantime = 3600

# Override backend=auto in /etc/fail2ban/jail.conf
backend = systemd

[sshd]
enabled = true

Appuyez sur Ctrl + X pour fermer l'éditeur et appuyez sur Y lorsque vous êtes invité à enregistrer le fichier. Ceci définit un nouveau bantime par défaut pour tous les services, change le backend en systemd et active le `sshd prison.

Redémarrez Fail2ban pour mettre en œuvre les nouvelles modifications.

$ sudo systemctl restart fail2ban

Nous pouvons confirmer les paramètres nouvellement appliqués en utilisant fail2ban-client utilitaire.

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

Nous pouvons également obtenir le statut détaillé de chaque prison spécifiquement de la manière suivante.

$ sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     0
|  `- Journal matches:  _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned: 0
   |- Total banned:     0
   `- Banned IP list:

Plus de paramètres

jail.conf fournit beaucoup plus de paramètres qui peuvent être personnalisés en utilisant /jail.local dossier. Nous passerons ensuite en revue certains paramètres.

IP en liste blanche

Vous pouvez mettre en liste blanche/ignorer les adresses IP bloquées par Fail2ban en utilisant le code suivant.

[DEFAULT]
ignoreip = 127.0.0.1/8 123.45.67.89

Si vous souhaitez ajouter des IP à la liste blanche uniquement pour certaines prisons, vous pouvez le faire via fail2ban-client .

$ sudo fail2ban-client set JAIL addignoreip 123.45.67.89

Remplacer JAIL dans la commande ci-dessus avec le nom de la prison pour laquelle vous souhaitez modifier le paramètre.

Temps d'interdiction et nombre de nouvelles tentatives

Il existe 3 paramètres qui peuvent définir l'heure et le nombre de tentatives d'interdiction.

bantime - est la durée en secondes pendant laquelle une IP est bannie. Pour définir une interdiction permanente, définissez cette valeur sur un nombre négatif. La valeur par défaut est 10 minutes ou 600 secondes.

findtime - est la durée entre les tentatives de connexion avant qu'une interdiction ne soit définie. Cette valeur est toujours un nombre de secondes. Par exemple, si Fail2ban est configuré pour interdire une adresse IP après 5 tentatives de connexion infructueuses, ces 5 tentatives doivent avoir lieu dans les 10 minutes définies bantime limite.

maxretry - est le nombre de tentatives à partir d'une seule adresse IP avant qu'une interdiction ne soit imposée. La valeur par défaut est 3.

Pour personnaliser ces paramètres, collez les lignes suivantes dans \etc\fail2ban\jail.local fichier sous le [DEFAULT] rubrique.

bantime = 3600
findtime = 300
maxretry = 4

Alertes par e-mail

Pour envoyer des alertes par e-mail, vous devez d'abord installer un agent de transfert de courrier (MTA). Pour notre objectif, nous allons installer sendmail .

$ sudo dnf install sendmail

Pour recevoir l'e-mail, ajoutez le code suivant dans \etc\fail2ban\jail.local fichier sous [DEFAULT] rubrique.

destemail = [email protected]
sendername = Fail2Ban
mta = sendmail
action = %(action_mw)s

destemail fait référence à l'identifiant de l'e-mail de destination qui est l'identifiant sur lequel vous souhaitez recevoir les e-mails, sendername fait référence au nom de l'expéditeur, nous utilisons donc Fail2Ban pour cela. mta fait référence à l'agent de transfert de courrier utilisé qui est sendmail ici. Si vous utilisez Postfix , puis utilisez la valeur mail pour le mta variables.

action fait référence à l'action par défaut qui a lieu une fois qu'une intrusion est détectée. La valeur par défaut est %(action_)s qui n'interdit que l'utilisateur. %(action_mw)s bannira et enverra un e-mail avec un rapport Whois ; tandis que %(action_mwl)s interdira et enverra un e-mail avec le rapport Whois ainsi que les informations des fichiers journaux pertinents. Cela peut également être modifié sur une base spécifique à la prison.

Paramètres pour les prisons individuelles

Comme nous le savons déjà, [DEFAULT] s'applique à toutes les prisons, il est temps d'examiner certaines prisons spécifiques et leurs paramètres.

Prison SSHD

Nous avons déjà défini [sshd] plus tôt dans notre jail.local dossier. Nous pouvons le personnaliser un peu plus avec le code suivant.

[sshd]

enabled = true
port = ssh
logpath = %(ssh_log)s

Dans ce cas, nous utilisons une variable prédéfinie ssh pour le port qui est le port SSH par défaut. Si vous utilisez un port SSH différent, vous devez le changer. logpath fait référence à l'emplacement du fichier journal à surveiller. %(ssh_log)s utilise une valeur définie dans le fichier de configuration standard de Fail2ban (/etc/fail2ban/paths-common.conf ).

Prison Nginx

Nginx a plusieurs prisons qui peuvent être utilisées dans Fail2Ban. Par exemple, si une partie de votre site protégée par un mot de passe est attaquée à plusieurs reprises, vous pouvez utiliser une section [nginx-http-auth] dans jail.local fichier pour cela.

[nginx-http-auth]
enabled = true

Nous pouvons également ajouter une section appelée [nginx-botsearch] pour arrêter les requêtes vers des dossiers ou des emplacements qui n'existent pas.

[nginx-badbots]
enabled  = true

Il existe également d'autres prisons Nginx, mais elles ne sont pas préconfigurées avec Fail2Ban. Ils doivent être créés manuellement et la plupart d'entre eux peuvent être basés sur ceux d'Apache avec lesquels Fail2Ban est livré.

Filtres Fail2Ban et Failregexs

Il existe un autre paramètre dans la configuration Fail2Ban appelé filtres. Les filtres décident si une ligne du fichier journal indique un échec d'authentification.

La valeur du filtre dans le fichier de configuration est une référence à un fichier situé dans /etc/fail2ban/filter.d répertoire avec son .conf extension supprimée.

Vous pouvez voir quels types de filtres sont disponibles en consultant le répertoire.

$ ls /etc/fail2ban/filter.d

Vous y verrez 2 fichiers journaux pour Nginx ; nginx-badbots.conf et nginx-http-auth.conf .

Ces fichiers de configuration utilisent des expressions régulières (regex) pour analyser les fichiers journaux. Ceux-ci sont appelés Failregexs. Vous pouvez personnaliser ou créer de nouveaux filtres en écrivant vos propres expressions régulières. Nous n'aborderons pas ces expressions régulières en profondeur car elles sortent du cadre de ce didacticiel.

Surveiller les journaux Fail2Ban et le pare-feu

Vous pouvez vérifier l'état de Fail2Ban en utilisant systemctl comme indiqué précédemment.

$ sudo systemctl status fail2ban

Pour obtenir un peu plus de détails, vous pouvez utiliser le journalctl commande.

$ sudo journalctl -b -u fail2ban

Vous pouvez également utiliser fail2ban-client pour interroger le statut de fail2ban-server ou et prison individuelle.

$ sudo fail2ban-client status
$ sudo fail2ban-client status jail_name

Vous pouvez également interroger le fichier journal de Fail2ban.

$ sudo tail -F /var/log/fail2ban.log

Vous pouvez lister les règles actuellement configurées pour iptables.

$ sudo iptables -L

Vous pouvez également répertorier les règles iptables dans un format qui reflète les commandes nécessaires pour activer ces règles.

$ sudo iptables -S

Conclusion

Ceci conclut notre tutoriel sur l'installation et la configuration de Fail2Ban sur un serveur basé sur Fedora 33 ou CentOS 8. Si vous avez des questions, postez-les dans les commentaires ci-dessous.


Cent OS
  1. Comment installer et configurer Nginx sur CentOS 7

  2. Comment installer et configurer Fail2ban sur CentOS 8

  3. Comment installer et configurer Redis 6 sur Fedora 34

  4. Comment installer et configurer Fail2ban sur CentOS 8 ?

  5. Comment installer et configurer CyberPanel sur CentOS 8

Comment installer et configurer Nagios 4.0.7 sur CentOS 7

Comment installer et configurer ISPConfig CP sur CentOS 7

Comment installer et configurer ownCloud sur CentOS 7

Comment installer et configurer Samba sur CentOS 8

Comment installer et configurer Fail2ban sur CentOS 8

Comment installer et configurer HAproxy sur CentOS 6