Comment protéger WordPress avec Fail2Ban sur Ubuntu 14.04

introduction

WordPress est un système de gestion de contenu (CMS) très robuste, gratuit et à source ouverte. Parce que n’importe qui peut commenter, créer un compte et publier sur WordPress, de nombreux acteurs malveillants ont créé des réseaux de robots et de serveurs qui compromettent et spamment les sites WordPress par le biais d’attaques par force brute. L’outil Fail2ban est utile pour empêcher tout accès non autorisé à votre Droplet et à votre site WordPress. Il note les échecs de connexion suspects ou répétés et interdit de manière proactive ces IP en modifiant les règles de pare-feu pour votre Droplet.

Dans ce guide, nous utiliserons la version 0.9.3 de Fail2ban sur un serveur Ubuntu 14.04 LAMP et l’intégrerons à WordPress à l’aide d’un plugin de journal de spam.

Conditions préalables

Pour compléter ce guide, vous avez besoin

Étape 1 - Installation du plugin WordPress Fail2ban

Tout d’abord, connectez-vous à votre site WordPress en visitant + https: /// wp-admin + dans votre navigateur et en utilisant les informations d’identification d’administrateur que vous avez créées lors de l’installation de WordPress. Une fois connecté, vous verrez l’écran suivant, qui est votre tableau de bord WordPress.

image: https: //assets.digitalocean.com/articles/wordpress_1404/admin_interface.png [Écran du tableau de bord, title = "écran du tableau de bord"]

Recherchez le mot * Plugins * dans la barre latérale gauche, qui apparaîtra à peu près au milieu de la barre latérale. Après avoir cliqué sur * Plugins *, vous verrez cet écran:

image: http: //i.imgur.com/cJhyxi6.png? 1 [Plugin, title = "plugin add new"]

En haut, dans la partie droite, vous pouvez cliquer sur Ajouter. Cela vous permet d’ajouter de nouveaux plug-ins à votre site WordPress qui peuvent personnaliser, sécuriser ou étendre votre site. Dans ce cas, nous rechercherons le plugin Fail2ban. L’écran suivant apparaîtra comme ceci:

image: http: //i.imgur.com/m5Jecd6.png? 1 [Ajouter une nouvelle recherche, title = "ajouter une nouvelle recherche"]

Entrez * Fail2ban * dans le champ de recherche et appuyez sur les touches + ENTER + de votre clavier. Les résultats devraient renvoyer un écran contenant quelques plugins, celui à installer étant * WP fail2ban *.

image: http: //i.imgur.com/2nmPJ61.png? 1 [Fail2ban, title = "plugin fail2ban"]

Cliquez sur * Installer maintenant * pour démarrer l’installation, où vous verrez deux invites: * Activer le plugin * et * Revenir au programme d’installation du plugin *. Choisissez d’activer le plugin *, et votre navigateur vous ramènera à la liste des plugins installés, avec le nouveau plugin * WP fail2ban * dans la liste. À ce stade, vous pouvez cliquer sur * Afficher les détails * pour afficher plus d’informations sur votre nouveau plugin. Il existe également une FAQ qui vous aidera à comprendre comment activer des fonctionnalités, telles que le blocage d’utilisateurs spécifiques pouvant être utilisées pour spammer votre site WordPress avec du contenu ou des commentaires.

Étape 2 - Appliquer le filtre WordPress à Fail2ban

Ce plugin WordPress comprend un nouveau filtre Fail2ban personnalisé. Dans cette étape, nous allons installer ce filtre afin que Fail2ban puisse analyser et utiliser correctement les journaux d’authentification envoyés au syslog.

Tout d’abord, déplacez le filtre du répertoire du plugin WordPress vers l’emplacement de filtre Fail2ban approprié. Nous allons utiliser le filtre «dur» WordPress pour une meilleure protection:

sudo cp /var/www/html/wp-content/plugins/wp-fail2ban/filters.d/wordpress-hard.conf /etc/fail2ban/filter.d/

Avec votre nouveau filtre + wordpress-hard.conf + en place, vous pouvez pointer Fail2ban vers le journal d’authentification approprié en modifiant le fichier + / etc / fail2ban / jail.local +. Une prison dans Fail2ban fait référence à une série de règles et d’actions qui fournissent les filtres pour les adresses IP.

Ouvrez le fichier + jail.local + en utilisant nano ou votre éditeur de texte préféré.

sudo nano /etc/fail2ban/jail.local

Une fois le fichier ouvert, faites défiler vers le bas et ajoutez les lignes suivantes à la fin. Ces lignes activent le plug-in, définissent le filtre sur le filtre + wordpress-hard.conf + que nous avons précédemment copié dans le répertoire + filters.d +, définissent la destination de journalisation appropriée pour les tentatives d’accès et spécifient que ce trafic entrez sur les ports + http + et + https +.

[wordpress-hard]

enabled = true
filter = wordpress-hard
logpath = /var/log/auth.log
maxretry = 3
port = http,https

Enregistrez et fermez le fichier.

Ensuite, vous pouvez redémarrer Fail2ban pour vous assurer que le nouveau filtre est maintenant en place en exécutant cette commande dans votre terminal:

sudo service fail2ban restart

Étape 3 - Ignorer les tentatives de connexion de votre ordinateur

Pour éviter que vous ou d’autres utilisateurs connus soyez bannis en raison d’échecs d’authentification accidentels, nous vous recommandons d’ignorer l’adresse IP publique de votre propre ordinateur local.

Si vous utilisez un système d’exploitation basé sur Linux, utilisez cette commande:

curl ipecho.net/plain ; echo

Sinon, visitez + http: // checkip.dyndns.org + pour déterminer l’adresse IP publique de votre ordinateur. S’il existe d’autres utilisateurs de votre site WordPress dans d’autres emplacements, vous pouvez également rechercher leurs adresses.

Ouvrez + jail.local + pour éditer à nouveau:

sudo nano /etc/fail2ban/jail.local

La ligne suivante répertorie toutes les adresses IP ignorées commençant par l’adresse IP du serveur local (localhost) avec un espace séparant les valeurs des hôtes connus auxquels vous souhaitez accéder à WordPress. Ajoutez ceci à la section DEFAULT, sous l’instruction ignoreip que vous avez ajoutée au cours des étapes de configuration du plugin WordPress.

ignoreip = 127.0.0.1/8

Enregistrez et quittez votre éditeur.

Étape 4 - Test du filtre

Pour vérifier si le filtre fonctionne, vous pouvez vous déconnecter du site * wp-admin * de votre site WordPress et vous reconnecter.

Vous pouvez utiliser ce statut de prison Fail2ban pour vous assurer que votre connexion réussie n’a pas été notée par le filtre.

sudo fail2ban-client status wordpress-hard

Vous devriez voir des résultats similaires à ceci:

Status for the jail: wordpress-hard
|- filter
|  |- File list:    /var/log/auth.log
|  |- Currently failed: 0
|  `- Total failed: 0
`- action
  |- Currently banned: 0
  |  `- IP list:
  `- Total banned: 0

Si vous affichez le fichier + auth.log +, vous verrez votre connexion réussie vers le bas du fichier en utilisant + tail + qui affichera les 10 dernières lignes de la sortie:

sudo tail /var/log/auth.log

L’authentification réussie apparaîtra comme ceci:

+ Mois Jour Heure: Minute: Deuxième wordpress () []: Mot de passe accepté pour admin de +

Si un utilisateur non autorisé ou une authentification échouée apparaît dans les journaux, votre nouveau plug-in s’assurera que cette adresse IP ne pourra pas accéder à votre site en modifiant correctement les règles de votre pare-feu.

Étape 5 - Rotation de vos fichiers journaux

Si vous constatez que votre site WordPress reçoit un très grand nombre de tentatives de connexion non autorisées et que votre fichier journal croît rapidement, vous pouvez le faire pivoter pour en créer un nouveau en modifiant le fichier + / etc / logrotate.conf +.

sudo nano /etc/logrotate.conf

Ajoutez ces lignes, qui définissent la taille maximale du fichier, les autorisations pour le journal et le nombre de semaines. Par exemple, vous pouvez définir 4 comme nombre de semaines pendant lesquelles le fichier existera avant d’être actualisé:

/var/log/auth.log {
   size 30k
   create 0600 root root
   rotate 4
}

Enregistrez et quittez le fichier de manière appropriée.

Conclusion

En suivant les étapes de ce guide, vous avez installé et configuré le plug-in Fail2ban, exclu votre adresse IP locale et testé votre travail. Vous avez également configuré la rotation des journaux pour empêcher la croissance indéfinie de vos fichiers journaux. Désormais, votre instance WordPress est beaucoup plus robuste et sécurisée contre les tentatives de connexion non autorisées, les spams de commentaires et les intrusions sur votre site.