Protégez votre serveur

Protégez votre serveur

Si vous décidez de verrouiller wp-login.php ou wp-admin, il se peut que vous obteniez une erreur 404 ou 401 lors de l’accès à ces pages. Pour éviter cela, vous devrez ajouter ce qui suit à votre fichier .htaccess.

ErrorDocument 401 par défaut

Vous pouvez avoir 401 points à 401.html, mais le point est de le diriger vers pas WordPress.

Pour Nginx, vous pouvez utiliser la directive error_page mais devez fournir une URL absolue.

error_page 401 http://example.com/forbidden.html;

Sur les serveurs Web IIS, vous pouvez utiliser l’ httpErrorsélément dans votre web.config, définissez errorMode="custom":

<httpErrors errorMode = "Custom"> 
<error statusCode = "401" 
subStatusCode = "2" 
prefixLanguageFilePath = "" 
path = "401.htm" 
responseMode = "File" /> 
</httpErrors>




Protection par mot de passe wp-login.php Protection par mot de passe wp-login.php

Un mot de passe protégeant votre fichier wp-login.php (et le dossier wp-admin) peut ajouter une couche supplémentaire à votre serveur. Étant donné que la protection par mot de passe de wp-admin peut casser tout plugin qui utilise ajax sur le frontal, il suffit généralement de protéger simplement wp-login.php.

Pour ce faire, vous devrez créer un fichier .htpasswd. De nombreux hôtes disposent d’outils pour le faire pour vous, mais si vous devez le faire manuellement, vous pouvez utiliser ce générateur htpasswd . Tout comme votre fichier .htaccess (qui est un fichier qui n’est qu’une extension), .htpasswd n’aura pas non plus de préfixe.

Vous pouvez mettre ce fichier en dehors de votre dossier web public (pas dans / public_html / ou /domain.com/, en fonction de votre hôte), ou vous pouvez le mettre dans le même dossier, mais vous voulez faire un peu un travail de sécurité supplémentaire dans votre fichier .htaccess si vous le faites.

En parlant de cela, une fois que vous avez téléchargé le fichier .htpasswd, vous devez indiquer à .htaccess où il se trouve. En supposant que vous avez mis .htpasswd dans le répertoire personnel de votre utilisateur et que votre nom d’utilisateur htpasswd est mysecretuser, vous mettez cela dans votre .htaccess:

# Empêche Apache de servir des fichiers .ht * 
<Files ~ "^ \. Ht"> 
  Ordre autoriser, refuser 
  Refuser de tous 
</Files> 
# Protéger wp-login.php 
<Fichiers wp-login.php> 
  AuthUserFile ~ / .htpasswd 
  AuthName "Accès privé" 
  AuthType Basic 
nécessite un utilisateur mysecretuser 
</Files>

L’emplacement réel d’AuthUserFile dépend de votre serveur, et le «utilisateur requis» changera en fonction du nom d’utilisateur que vous choisissez.

Si vous utilisez Nginx, vous pouvez protéger par mot de passe votre fichier wp- login.php à l’aide du HttpAuthBasicModule . Ce bloc doit se trouver à l’intérieur de votre bloc serveur.

location /wp-login.php { 
    auth_basic "Connexion administrateur"; 
    auth_basic_user_file .htpasswd; 
}

Le chemin du nom de fichier est relatif au répertoire du fichier de configuration nginx nginx.conf

Le fichier doit être au format suivant:

  utilisateur: pass utilisateur2: 
  pass2 
  utilisateur3: pass3

Malheureusement, il n’existe aucun moyen simple de configurer un wp-login.php protégé par mot de passe sur Windows Server IIS. Si vous utilisez un processeur .htaccess comme Helicon Ape, vous pouvez utiliser l’exemple .htaccess mentionné ci-dessus. Sinon, vous devrez demander à votre hébergeur de configurer l’authentification de base.

Tous les mots de passe doivent être codés par fonction crypt(3). Vous pouvez utiliser un générateur htpasswd en ligne pour crypter votre mot de passe.

Limiter l’accès à wp-login.php par IP Limiter l’accès à wp-login.php par IP

Si vous êtes la seule personne à avoir besoin de vous connecter à votre zone d’administration et que vous avez une adresse IP fixe, vous pouvez refuser à wp-login.php (et donc au dossier wp-admin /) l’accès à tout le monde sauf à vous-même via un .htaccess ou fichier web.config. Ceci est souvent appelé liste blanche IP .

Remarque: Attention, votre FAI ou votre ordinateur peut changer fréquemment votre adresse IP, c’est ce qu’on appelle l’adressage IP dynamique, plutôt que l’adressage IP fixe. Cela pourrait être utilisé pour diverses raisons, telles que des économies d’argent. Si vous pensez que c’est le cas, découvrez comment modifier les paramètres de votre ordinateur ou contactez votre FAI pour obtenir une adresse fixe, afin d’utiliser cette procédure.




Dans tous les exemples, vous devez remplacer 203.0.113.15 par votre adresse IP. Votre fournisseur d’accès Internet peut vous aider à établir votre adresse IP. Ou vous pouvez utiliser un service en ligne tel que What Is My IP .

Des exemples pour plusieurs adresses IP sont également fournis. Ils sont idéaux si vous utilisez plus d’un fournisseur Internet, si vous disposez d’un petit pool d’adresses IP ou si vous avez quelques personnes autorisées à accéder au tableau de bord de votre site.

Créez un fichier dans un éditeur de texte brut appelé .htaccess et ajoutez:

# Bloquer l'accès à wp-login.php. 
<Files wp-login.php> 
  ordre refuser, autoriser 
  autoriser à partir de 203.0.113.15 
  refuser de tous 
</Files>

Vous pouvez ajouter plusieurs adresses IP autorisées en utilisant:

# Bloquer l'accès à wp-login.php. 
<Files wp-login.php> 
  ordre refuser, autoriser 
  autoriser à partir de 203.0.113.15 
  autoriser à partir de 203.0.113.16 
  autoriser à partir de 203.0.113.17 
  refuser à tous 
</Files>

Utilisez-vous Apache 2.4 et le module Apache mod_authz_host ? Ensuite, vous devez utiliser une syntaxe légèrement différente:

# Bloquer l'accès à wp-login.php. 
<Fichiers wp-login.php> 
  Nécessite l'ip 203.0.113.15 
</Files>

Si vous souhaitez ajouter plusieurs adresses IP, vous pouvez utiliser:

# Bloquer l'accès à wp-login.php. 
<Fichiers wp-login.php> 
  Requiert ip 203.0.113.15 203.0.113.16 203.0.113.17 
  # ou pour l'ensemble du réseau: 
  # Requiert ip 203.0.113.0/255.255.255.0 
</Files>

Pour Nginx, vous pouvez ajouter un bloc d’emplacement à l’intérieur de votre bloc serveur qui fonctionne de la même manière que l’exemple Apache ci-dessus.

error_page 403 http://example.com/forbidden.html;location /wp-login.php {allow 203.0.113.15 # ou pour l'ensemble du réseau: # allow 203.0.113.0/24; Nier tous;}

Notez que l’ordre de refus / autorisation est de la plus haute importance. Vous pourriez être tenté de penser que vous pouvez changer l’ordre des directives d’accès et tout fonctionnera. En fait, ce n’est pas le cas. Changer l’ordre dans l’exemple ci-dessus a pour résultat de refuser l’accès à toutes les adresses.

Encore une fois, sur les serveurs Web IIS, vous pouvez utiliser un fichier web.config pour limiter les adresses IP qui ont accès. Il est préférable d’ajouter cela dans une <locationdirective supplémentaire .

<location path = "wp-admin"> 
  <system.webServer> 
    <security> 
      <ipSecurity allowUnlisted = "false"> <! - cette règle refuse toutes les adresses IP, sauf celles mentionnées ci-dessous -> 
        <! - 203.0 .113.x est une plage de test spéciale pour les adresses IP -> 
        <! - remplacez-les par les vôtres -> 
        <add ipAddress = "203.0.113.15" allowed = "true" /> 
        <add ipAddress = "203.0. 113.16 "allowed =" true "/> 
      </ipSecurity> 
    </security> 
  </system.webServer> 
</location>

Refuser l’accès à aucune demande de référent Refuser l’accès à aucune demande de référent

Extended from Combatting Comment Spam , vous pouvez l’utiliser pour empêcher quiconque qui ne soumet pas le formulaire de connexion d’y accéder:

# Arrêtez les connexions et les commentaires des attaques de spam 
<IfModule mod_rewrite.c> 
	RewriteEngine On 
	RewriteCond% {REQUEST_METHOD} POST 
	RewriteCond% {REQUEST_URI}. (Wp-comments-post | wp-login) \. Php * 
	RewriteCond% {HTTP_REFERER}!. * example.com. * [OU] 
	RewriteCond% {HTTP_USER_AGENT} ^ $ 
	RewriteRule (. *) http: //% {REMOTE_ADDR} / $ 1 [R = 301, L] 
</ifModule>

Nginx – Refuser l’accès à aucune demande de référent

emplacement ~ * (wp-comments-posts | wp-login) \. php $ {if ($ http_referer! ~ ^ (http://example.com)) {return 405; }}

Windows Server IIS – Refuser l’accès à aucune demande de référent:

<rule name = "block_comments_without_referer" patternSyntax = "ECMAScript" stopProcessing = "true"> 
<match url = "(. *)" ignoreCase = "true" /> 
  <conditions logicGrouping = "MatchAll"> 
    <add input = "{URL } "pattern =" ^ / (wp-comments-post | wp-login) \. php "negate =" false "/> 
    <add input =" {HTTP_REFERER} "pattern =". * example \ .com. * " negate = "true" /> 
    <add input = "{HTTP_METHOD}" pattern = "POST" /> </conditions> 
  <action type = "CustomResponse" statusCode = "403" statusReason = "Interdit: l'accès est refusé." statusDescription = "Pas de commentaires sans référent!" /> 
<

Remplacez example.com par votre domaine. Si vous utilisez Multisite avec des domaines mappés, vous voudrez changer exemple.com (example.com|example.net|example4.com)et ainsi de suite. Si vous utilisez des commentaires Jetpack, n’oubliez pas d’ajouter jetpack.wordpress.com comme référent:(example.com|jetpack\.wordpress\com)



ModSecurity ModSecurity

Si vous utilisez ModSecurity, vous pouvez suivre les conseils de Frameloss – Arrêt des connexions par force brute contre WordPress . Cela nécessite un accès de niveau racine à votre serveur et peut nécessiter l’aide de votre hébergeur.

Si vous utilisez ModSecurity 2.7.3, vous pouvez ajouter les règles dans votre fichier .htaccess à la place.

Fail2Ban Fail2Ban

Fail2ban est un démon Python qui s’exécute en arrière-plan. Il vérifie les fichiers journaux générés par Apache (ou SSH par exemple) et, sur certains événements, peut ajouter une règle de pare-feu. Il utilise un soi-disant filtre avec une expression régulière. Si cette expression régulière se produit par exemple 5 fois en 5 minutes, elle peut bloquer cette adresse IP pendant 60 minutes (ou tout autre ensemble de nombres).

L’installation et la configuration de Fail2ban nécessitent un accès root.

Listes de blocage Listes de blocage

Il semble que la plupart des attaques par force brute proviennent d’hôtes de Russie, du Kazachstan et d’Ukraine. Vous pouvez choisir de bloquer les adresses IP provenant de ces pays. Il existe des listes de blocage disponibles sur Internet que vous pouvez télécharger. Avec certains scripts shell, vous pouvez ensuite charger des règles de blocs avec iptables.




Vous devez être conscient que vous bloquez les utilisateurs légitimes ainsi que les attaquants. Assurez-vous que vous pouvez soutenir et expliquer cette décision à vos clients.

Outre les listes de blocage par pays, il existe des listes d’adresses IP de spammeurs connus. Vous pouvez également les utiliser pour les bloquer avec iptables. Il est bon de mettre à jour ces listes régulièrement.

La configuration de listes de blocage et d’iptables nécessite un accès root.

Services cloud / proxy  Servicescloud / proxy

Des services comme CloudFlare et Sucuri CloudProxy peuvent également aider à atténuer ces attaques en bloquant les adresses IP avant qu’elles n’atteignent votre serveur.

 

Write a Comment

Votre adresse e-mail ne sera pas publiée.