GNU/Linux >> Tutoriels Linux >  >> Linux

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

Si vous êtes un administrateur système, la protection de votre serveur contre différents types d'attaques est une partie essentielle de votre travail ; Le pare-feu Fail2Ban peut vous aider à y parvenir. Fail2Ban est un système de prévention des intrusions écrit en langage Python utilisé pour bloquer les adresses IP malveillantes qui tentent de violer la sécurité de votre système. Cela fonctionne en analysant divers fichiers journaux et en bloquant les adresses IP qui tentent de faire des tentatives de connexion fréquentes pendant un bantime spécifié. Il vous permet également de surveiller la force et la fréquence des attaques. En raison de sa simplicité, il est considéré comme le logiciel préféré pour sécuriser votre serveur contre les attaques DOS, DDOS et par force brute.

Dans ce tutoriel, nous allons vous montrer comment sécuriser un serveur SSH et Apache avec Fail2Ban sur CentOS 8.

Prérequis

  • Un nouveau VPS CentOS 8 sur la plate-forme cloud d'Atlantic.net.
  • Un mot de passe root configuré sur votre serveur.

Étape 1 - Créer un serveur cloud Atlantic.Net

Tout d'abord, connectez-vous à votre serveur Atlantic.Net Cloud. Créez un nouveau serveur en choisissant CentOS 8 comme système d'exploitation avec au moins 1 Go de RAM. Connectez-vous à votre serveur cloud via SSH et connectez-vous à l'aide des informations d'identification mises en évidence en haut de la page.

Une fois que vous êtes connecté à votre serveur CentOS 8, exécutez la commande suivante pour mettre à jour votre système de base avec les derniers packages disponibles.

dnf update -y

Étape 2 - Installer Fail2Ban

Vous pouvez l'installer avec la commande suivante :

dnf install epel-release -y

Après avoir installé le référentiel EPEL, vous pouvez installer Fail2Ban avec la commande suivante :

dnf install fail2ban -y

Une fois installé, démarrez le service Fail2Ban et autorisez-le à démarrer après le redémarrage du système :

systemctl start fail2ban
systemctl enable fail2ban

Étape 3 :Sécurisez SSH avec Fail2Ban

Dans cette section, nous allons apprendre à sécuriser le serveur SSH avec Fail2Ban.

Configurer Fail2Ban pour SSH

Vous pouvez créer un fichier jail.local pour SSH avec la commande suivante :

nano /etc/fail2ban/jail.local

Ajoutez les lignes suivantes :

[DEFAULT]
ignoreip = your-server-ip
bantime = 300
findtime = 300
maxretry = 3
banaction = iptables-multiport
backend = systemd

[sshd]
enabled = true

Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, redémarrez le service Fail2Ban pour appliquer les modifications :

systemctl restart fail2ban

Vous pouvez maintenant vérifier l'état de la prison SSH avec la commande suivante :

fail2ban-client status

Vous devriez voir qu'une prison SSH est activée :

Status
|- Number of jail:        1
`- Jail list:        sshd

Une brève explication de chaque paramètre est présentée ci-dessous :

  • ignorerip :Utilisé pour définir les adresses IP que vous souhaitez ignorer.
  • bantime :Utilisé pour définir un nombre de secondes pendant lesquelles l'adresse IP sera bannie.
  • trouver le temps  :Utilisé pour définir le délai entre les tentatives de connexion avant que l'IP ne soit bannie.
  • maxretry :Permet de définir le nombre de tentatives à effectuer avant que l'adresse IP ne soit bannie.
  • banaction  :Action d'interdiction.
  • activé  :Cette option active la protection pour le service SSH.

Testez SSH contre les attaques par mot de passe

À ce stade, Fail2Ban est installé et configuré. Il est temps de tester si cela fonctionne ou non.

Pour ce faire, rendez-vous sur la machine distante et essayez de vous connecter en SSH à l'adresse IP du serveur :

ssh [email protected]

Il vous sera demandé de fournir le mot de passe root. Tapez le mauvais mot de passe encore et encore. Une fois que vous atteignez la limite de tentatives de connexion, votre adresse IP sera bloquée.

Vous pouvez vérifier votre adresse IP bloquée avec la commande suivante :

fail2ban-client status sshd

Vous devriez voir votre IP bloquée dans la sortie suivante :

Status for the jail: sshd
|- Filter
|  |- Currently failed:   7
|  |- Total failed:          39
|  `- Journal matches:  _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned: 1
   |- Total banned:        2
   `- Banned IP list:     190.8.80.42

Vous pouvez également consulter le journal SSH pour les échecs de connexion :

tail -5 /var/log/secure | grep 'Failed password'

Vous devriez voir le résultat suivant :

Mar  1 03:55:03 centos8 sshd[11196]: Failed password for invalid user bpadmin from 190.8.80.42 port 55738 ssh2

Vous pouvez également bloquer et débloquer une adresse IP spécifique manuellement.

Par exemple, pour débloquer l'IP 190.8.80.42, exécutez la commande suivante :

fail2ban-client set sshd unbanip 190.8.80.42

Pour bloquer l'IP 190.8.80.42, exécutez la commande suivante :

fail2ban-client set sshd banip 190.8.80.42

Étape 4 - Sécurisez Apache avec Fail2Ban

Vous pouvez également sécuriser le serveur Web Apache contre différents types d'attaques. Vous devrez configurer le fichier jail.local pour Apache comme indiqué ci-dessous :

nano /etc/fail2ban/jail.local

Ajoutez les lignes suivantes à la fin du fichier :

[apache-auth]
enabled = true
port    = http,https
logpath = %(apache_error_log)s

[apache-badbots]
enabled = true
port    = http,https
logpath = %(apache_access_log)s
bantime = 48h
maxretry = 1

[apache-noscript]
enabled = true
port    = http,https
logpath = %(apache_error_log)s

Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, redémarrez le service Fail2Ban pour mettre en œuvre les modifications :

systemctl restart fail2ban

Vous pouvez maintenant vérifier l'état de toutes les prisons avec la commande suivante :

fail2ban-client status

Vous devriez voir le résultat suivant :

Status
|- Number of jail:        5
`- Jail list:        apache-auth, apache-badbots, apache-noscript, sshd

Une brève explication de chaque prison est présentée ci-dessous :

  • apache-auth  :Cette prison est utilisée pour protéger Apache des tentatives de connexion infructueuses.
  • Apache-badbots  :Cette prison est utilisée pour interdire les hôtes dont l'agent identifie les robots spammeurs explorant le Web à la recherche d'adresses e-mail.
  • apache-noscript :Utilisé pour bloquer l'IP qui essaie de rechercher des scripts sur le site Web à exécuter.

Conclusion

Dans le tutoriel ci-dessus, nous avons appris comment protéger le serveur SSH et Apache avec Fail2Ban. C'est un système de prévention des intrusions très utile qui ajoute une sécurité supplémentaire à votre système Linux. Vous êtes maintenant en mesure de configurer Fail2Ban qui répondra à vos besoins de sécurité spécifiques. Commencez dès aujourd'hui avec Fail2Ban avec l'hébergement VPS d'Atlantic.Net !


Linux
  1. Comment utiliser Fail2ban pour sécuriser SSH sur CentOS 7

  2. Comment installer Apache Hive avec Hadoop sur CentOS, Ubuntu et LinuxMint

  3. Comment installer et configurer Fail2ban sur CentOS 8 ?

  4. Comment installer Apache 2.4.2 à partir de la source sur CentOS 6.2 avec SSL

  5. Comment enquêter sur une fuite mémoire avec Apache et PHP ?

Comment installer Apache avec l'hôte virtuel sur CentOS 8

Comment installer et configurer GlusterFS sur CentOS 7/CentOS 8

Comment installer Drupal sur CentOS 7 avec Apache

Comment installer WordPress sur CentOS 7.1 avec Apache

Comment installer et configurer Memcached avec Apache et PHP

Comment sécuriser SSH avec Fail2Ban