FLUX RSS

  • YouTube
  • LinkedIn
  • Google

Protegendo seu WordPress de ataques

Ce site auquelle vous accédez est une installation de la WordPress. J’aime la facilité de celui-ci.

WordPress est vraiment bon à produire un blog rapidement dans un VPS ou Cloud, mais sa facilité est aussi son plus grand défaut.

Comme il est simple d’avoir un site web avec elle, la grande majorité des pages présentes sur internet sont réalisées à l’aide de celui-ci et, par conséquent, cela attire ceux qui recherchent des failles dans la programmation de son open source.

Une fois qu’un défaut est découvert, un hacker espiègle sera en mesure d’utiliser cette faille sur des millions de sites web à travers le monde, pour publier des fichiers, envoyer des e-mails et même créer de faux sites Web dans un domaine. Toutes ces choses sont que j’ai vu et je crois que même vous avez vu.

Une des choses qui me dérange le plus sur WordPress est son mécanisme d’authentification et d’exécution XML-RPC. Ils sont des sources constantes d’attaque par force brute.

Il suffit de jeter un oeil aux derniers 10 lignes dans ce fichier journal de la mienne (pris en temps réel à partir de ce serveur lors de la rédaction de cet article sans l’utilisation d’un mécanisme de protection).

Jun 8 21:09:39 host wordpress(xxxxxxx.com.br)[1010]: Authentication failure for gestao_click from 196.41.127.26
Jun 8 21:09:40 host wordpress(xxxxxxx.com.br)[1791]: Authentication failure for guestposter from 196.41.127.26
Jun 8 21:09:41 host wordpress(xxxxxxx.com.br)[9892]: Authentication failure for ricardo_pereira from 196.41.127.26
Jun 8 21:10:15 host wordpress(zzzzzzzzz.com.br)[6490]: XML-RPC authentication attempt for unknown user admin from 86.167.111.66
Jun 8 21:11:38 host wordpress(www.zzzzzzzzz.com.br)[1011]: Authentication failure for alexacolemanmkdef from 5.135.164.126
Jun 8 21:11:38 host wordpress(www.zzzzzzzzz.com.br)[6490]: Authentication failure for alexia_dias from 5.135.164.126
Jun 8 21:11:39 host wordpress(www.zzzzzzzzz.com.br)[5620]: Authentication failure for beatriz_seomarketing from 5.135.164.126
Jun 8 21:11:40 host wordpress(www.zzzzzzzzz.com.br)[6489]: Authentication failure for bianca_oblige from 5.135.164.126
Jun 8 21:11:41 host wordpress(www.zzzzzzzzz.com.br)[1010]: Authentication failure for celioedu from 5.135.164.126
Jun 8 21:11:42 host wordpress(www.zzzzzzzzz.com.br)[9893]: Authentication failure for celeste_pinto from 5.135.164.126

Ce n’est que par ces lignes que vous pouvez voir qu’il ya une activité intense d’essayer de s’authentifier dans les installations WordPress existantes, pratiquement un par seconde.

Pour atténuer ces tentatives constantes d’invasion, J’utilise il y a quelques années la formule d’inclure les IP de ces demandes dans les filtres pare-feu, blocage complet de l’accès au serveur qui provient de ces. Cela réduit considérablement ces tentatives. Au départ, je l’ai fait manuellement, manipulation des journaux et ajout des IP les plus insistants, mais alors j’ai découvert un script qui l’a fait automatiquement: O Fail2Ban.

Fail2Ban

Le Fail2Ban est un script pour un daemon qui surveille les journaux et interdit les IP. Avec elle, il est possible d’analyser les journaux de tout logiciel qui a l’authentification telle que WordPress et à partir des échecs actuels comprennent les IP source dans les filtres dans le pare-feu.

Il est très simple à utiliser et est disponible dans plusieurs référentiels pour différentes distributions Linux.

Ci-dessous, je vais vous montrer comment faire une installation et la configuration en utilisant Centos 8 avec le pare-feu

Instalando os recursos necessários

Les lignes ci-dessous installent tous les éléments nécessaires.

$ sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm 
$ sudo rpm -ql epel-release 
$ sudo dnf install firewalld fail2ban -y

À partir de ce point devrait déjà avoir fail2ban installé et aussi le pare-feu.

REMARQUE: Si vous utilisez le shell à partir d’une connexion SSH, il est nécessaire d’ajouter le port de connexion à zone publique de sorte que vous ne finissez pas par activer le pare-feu et bloquer l’accès à distance.

Pour ce faire, utilisez la commande:

$ sudo systemctl start pare-feu &;&; sudo Pare-feu-cmd --zone=public --add-port=22/tcp --permanent &;&; sudo Pare-feu-cmd --zone=public --add-service=https --permanent &;&; sudo Pare-feu-cmd --zone=public --add-service=http --permanent &;&; sudo Pare-feu-cmd --reload

Si tout va bien, vous serez avec le pare-feu actif en ce moment et avec les ports 80, 443 et 22 libéré dans la zone publique.

Maintenant, nous allons activer les services afin qu’ils commencent toujours avec le système.

$ sudo systemctl enable fail2ban
$ sudo systemctl enable firewalld

WPFail2Ban

Comme nous parlons de WordPress, je ne vais pas montrer comment configurer fail2ban pour lire les journaux du serveur Web et d’interdire les IP d’eux. Il ya une façon beaucoup plus simple de le faire en utilisant un plugin approprié. Le WPFail2Ban. Il suffit de l’installer et prêt.

Avec WPFail2Ban installé et sans modifier aucun réglage, il ajoutera toutes les défaillances de tentative de connexion au fichier syslog système par défaut qui, dans le cas de CentOS est le /var/log/messages.

Dans mon installation, Je n’ai pas utilisé les paramètres indiqués dans le manuel WPFail2Ban, même parce qu’il n’y avait pas Filtres Indiqué.

La première chose à faire est de créer un filtre pour Fail2Ban. Créons un fichier de filtre dans /etc/fail2ban/filter.d/wordpress.conf.

Les lignes suivantes supposent qu’il n’y a pas d’autre fichier de configuration à utiliser avec WordPress. Je suis un dévot de vim, mais utilisez l’éditeur que vous préférez.

$ sudo vim /etc/fail2ban/filter.d/wordpress.conf

Ajouter les lignes suivantes:

Fail2Ban filter for worpdpress authentication failures
#
[INCLUDES]
before = common.conf
[Definition]
_daemon = wordpress
failregex = ^%(__prefix_line)sAuthentication failure for .* from $
^%(__prefix_line)sBlocked authentication attempt for .* from $
^%(__prefix_line)sXML-RPC authentication attempt for unknown.* from $
^%(__prefix_line)sBlocked user enumeration attempt from $
^%(__prefix_line)sPingback requested from $
ignoreregex =
# DEV Notes:
#
# Author: Marcos Regis

Je ne vais pas entrer dans les détails des lignes, juste qu’ils sont prêts à capturer la plupart des défaillances d’authentification que le moteur WPFail2Ban enverra au fichier journal.

O próximo passo é definir qual ação será tomada quando o fail2ban encontrar uma entrada que combine com qualquer um dos padrões definidos no arquivo de configuração.

Essas ações estão todas definidas em arquivos de configuração no diretório /Etc/fail2ban/action.d/ e para o que este artigo se propõe nos interessa os arquivos firewallcmd*. Em minha experiência, não havia uma configuração que incluía o IP na zona ;drop-zone do jeito que eu queria então eu criei um arquivo de ação. Abaixo o conteúdo de um arquivo firewallcmd-drop.conf.

# /etc/fail2ban/action.d/firewallcmd-drop.conf 
[INCLUDES] 
before = firewallcmd-common.conf 
[Definition] 
actionstart = 
actionstop = 
actioncheck = 
actionban = firewall-cmd --zone=drop --add-source=<;ip>; 
actionunban = firewall-cmd --zone=drop --remove-source=<;ip>;

O próximo passo é criar a entrada que ativará o filtro e a ação. Pour ce faire,, créer ou modifier le fichier /Etc/fail2ban/jail.local et ajouter les lignes suivantes:

# Filtro para tentativas de login no WordPress
[WordPress]
enabled = true
logpath = /var/log/messages
action  = firewallcmd-drop

A partir de là, tout est prêt pour démarrer le service. Dès que Fail2Ban démarre et s’il y a déjà des entrées dans les journaux qui correspondent au modèle à rechercher, Vous verrez les adresses IP ajoutées à la liste de blocage dans le pare-feu.

$ sudo systemctl start fail2ban

Pour afficher les IP bloqués dans le type de pare-feu Pare-feu-cmd --list-all --zone-drop, vous verrez une sortie qui ressemble:

drop (Active)  
   target: DROP
   icmp-block-inversion: no
   interfaces: 
   sources: 223.225.107.45 111.231.227.35 139.99.156.158 149.202.70.189 162.241.200.235 167.71.111.16 178.254.11.154 18.228.33.11 223.225.10.190 45.119.212.93 62.210.178.229 68.183.134.134 69.163.163.220 80.211.174.81 103.57.84.227 159.65.128.55 91.134.248.230 165.22.107.13 208.97.188.13 188.240.208.26
   services: 
   ports: 
   protocols: 
   masquerade: no
   forward-ports: 
   source-ports: 
   icmp-blocks: 
   rich rules: 

Et c’est tout. Si vous avez des commentaires sur le contenu, se sentir à l’aise. J’espère que ça t’aidera autant que tu m’as aidé..

Câlins.

Laisser une réponse

Votre adresse email ne sera pas publié. Les champs obligatoires sont marqués *

Ce site utilise Akismet pour réduire le spam. Apprenez comment vos données de commentaire sont transformées.