Pendant assez longtemps, sur divers sites Web et forums, il y avait des articles et des sujets qui parlaient de nombreuses attaques par force brute sur des sites wordpress. Récemment dû faire face à cette infection. :)
Dans cet article, je voudrais vous parler de mon expérience en matière de sélection d'un mot de passe sur des sites qui fonctionnent sur WordPress. Je constate immédiatement que tous mes sites fonctionnent sur nginx + php-fpm .
À titre d’instruction, un article a été pris comme base. Cependant, la recette décrite a dû être légèrement modifiée pour les spécificités de ses attaquants. :)
Personnalisation
La première étape consiste à installer fail2ban. Cela ne devrait pas causer de difficultés.
aptitude install fail2ban
Après cela, nous ajoutons ce qui suit à la fin du fichier de configuration /etc/fail2ban/jail.conf :
[nginx-wp-auth] enabled = true filtre = nginx-wp-auth action = iptables-multiport [nom = wp-auth, port = "http, https"] logpath = /var/log/nginx/*.access.log maxretry = 3 bantime = 3600
Dans ce cas, l’ action bloquera l’accès des violeurs uniquement sur les protocoles spécifiés et les marquera comme wp-auth. Dans le chemin de journalisation, spécifiez le chemin d'accès aux journaux.
Tous les journaux seront analysés, tels que example.com.access.log. Pour les journaux de site Web, vous pouvez définir des noms spéciaux, tels que wordpress-example.com.access.log, afin que seuls ces fichiers journaux soient analysés.
Le nombre maximal de tentatives d'autorisation pour une adresse IP est de trois. Le temps de blocage est une heure. Ces deux paramètres peuvent être sélectionnés individuellement.
L'étape suivante consiste à créer un filtre.
touchez /etc/fail2ban/filter.d/nginx-wp-auth.conf
Au cours de cette action, j'ai eu des difficultés: l'exemple de l'article original n'a pas fonctionné. Et il devait changer. :)
[Définition]
failregex = <HOST>. * / wp-login.php HTTP / 1.1 "200
<HOST>. * / Wp-login.php / HTTP / 1.1 "302
<HOST>. * / Wp-login.php HTTP / 1.0 "200
ignoreregex =
Le premier paramètre contient toutes les correspondances qui doivent être trouvées dans les fichiers journaux. Ici, vous devez analyser les requêtes des attaquants dans les journaux de votre serveur et en ajouter tous les suspects liés à wp-login.php.
Le second paramètre est destiné aux exceptions de la première ligne. Ce n'est pas obligatoire et reste vide.
Tests
Après avoir créé le filtre, vérifiez son fonctionnement avec la commande:
fail2ban-regex / var / log / nginx / example.com .access.log /etc/fail2ban/filter.d/nginx-wp-auth.conf
Les résultats trouvés seront affichés dans les résultats du test. Par exemple:
Lancer des tests
=============
Utilisez le fichier regex: /etc/fail2ban/filter.d/nginx-wp-auth.conf
Utilisez le fichier journal: /var/log/nginx/***.ru..access.log
Les résultats
=======
Failregex
| - Expressions régulières:
| [1]. * / Wp-login.php HTTP / 1.1 "200
| [2]. * / Wp-login.php / HTTP / 1.1 "302
| [3]. * / Wp-login.php HTTP / 1.0 "200
|
`- Nombre de matches:
[1] 1 résultat (s)
[2] 0 correspondance (s)
[3] 0 correspondance (s)
Ignoreregex
| - Expressions régulières:
|
`- Nombre de matches:
Résumé
=======
Adresses trouvées:
[1]
192.99.186.30 (ven. Juil. 04 07:29:20 2014)
[2]
[3]
Date de frappe du modèle:
0 hit (s): MOIS Jour Heure: Minute: Seconde
0 hit (s): WEEKDAY MOIS Jour Heure: Minute: Deuxième Année
0 résultat (s): MOIS DE SEMAINE Jour Heure: Minute: Seconde
0 résultat (s): Année / Mois / Jour Heure: Minute: Seconde
0 résultat (s): Jour / Mois / Année Heure: Minute: Seconde
0 résultat (s): Jour / Mois / Année Heure: Minute: Seconde
58 hit (s): jour / mois / année: heure: minute: seconde
0 hit (s): Mois / Jour / Année: Heure: Minute: Seconde
0 résultat (s): Année-Mois-Jour Heure: Minute: Seconde
0 résultat (s): Année, Mois, Jour Heure: Minute: Seconde
0 résultat (s): Jour-MOIS-Année Heure: Minute: Seconde [.Milliseconde]
0 résultat (s): Jour-Mois-Année Heure: Minute: Seconde
0 résultat (s): TAI64N
0 résultat (s): Epoque
0 résultat (s): ISO 8601
0 résultat (s): heure: minute: seconde
0 résultat (s): <Mois / Jour / Année @ Heure: Minute: Seconde>
Succès, le nombre total de matchs est 1 Vérification du journal de verrouillage
Fail2ban enregistrera tous les verrous produits. Si nécessaire, vous pouvez vérifier la présence du fichier journal /var/log/fail2ban.log.
grep AVERTISSEMENT /var/log/fail2ban.log
