mod__security bloquant mon adresse IP lors de la modification d’un article dans WordPress

image wordpress-firewall

En publiant un message dans l’éditeur WordPress, après quelques minutes, mon adresse IP sera bloquée par mod__security automatiquement. Mettez-la dans la liste des personnes dont l’accès est bloqué par le pare-feu.

lfd: (mod__security) mod__security triggered by xx.xx.xx.xx (MY/Malaysia/-): 5 in the last 300 secs

Pour résoudre rapidement le problème, je dois redémarrer mon modem ou obtenir une nouvelle adresse IP pour accéder à mon serveur via SSH ou WHM, puis supprimer manuellement l’adresse IP bloquée. Voici mon environnement:

  1. WordPress 3.4.2

  2. Apache classique + ModSecurity + CSF/LFD

Après de nombreuses tentatives et erreurs, j’ai découvert que cela pouvait être causé par les fonctionnalités de «sauvegarde automatique» et de post-révision de WordPress. Lors de l’édition d’un article, WordPress conserve automatiquement le «brouillon» ou la «révision» pendant l’intervalle défini, et trop souvent TRIGGER , les règles mod__security facilement.

Voici deux solutions:

1. Liste blanche Action WordPress

Ceci est suggéré par mon supporter de serveur, liste blanche quelques actions WordPress communes dans mod__security Éditez whitelist.conf , et mettez les règles suivantes à l’intérieur.

/usr/local/apache/conf/modsec2/whitelist.conf

<LocationMatch "/wp-admin/page.php">
SecRuleRemoveById 300013 300014 300015 300016 300017
</LocationMatch>

<LocationMatch "/wp-admin/post.php">
SecRuleRemoveById 300013 300014 300015 300016 300017
</LocationMatch>

<LocationMatch "/wp-admin/admin-ajax.php">
SecRuleRemoveById 300013 300014 300015 300016 300017
</LocationMatch>

SecRule REQUEST__URI  "/wp-admin/async-upload.php" phase:1,nolog,allow,ctl:ruleEngine=Off
SecRule REQUEST__URI  "/wp-admin/async-upload.php" phase:2,nolog,allow,ctl:ruleEngine=Off

2. Désactiver les révisions de publication

Désactivez la fonctionnalité de révisions postérieures à WordPress ou augmentez son intervalle d’enregistrement automatique Éditez wp-config.php , ajoutez le code suivant:

define('AUTOSAVE__INTERVAL', 300 );//seconds, 5 mins
define('WP__POST__REVISIONS', false );

Voici mon échantillon complet de wp-config.php

wp-config.php

<?php/** **  Enable W3 Total Cache ** /define('WP__CACHE', true);//Added by W3 Total Cache

define('AUTOSAVE__INTERVAL', 300 );//seconds, 5 mins
define('WP__POST__REVISIONS', false );
//** **  MySQL settings ** **  //Added by WP-Cache Manager
define('DB__NAME', 'removed-for-security');   //The name of the database
define('DB__USER', 'removed-for-security');    //Your MySQL username
define('DB__PASSWORD', 'removed-for-security');//...and password
define('DB__HOST', 'localhost');   //99% chance you won't need to change this value
define('DB__CHARSET', 'utf8');
define('DB__COLLATE', '');

define('AUTH__KEY', 'removed-for-security');
define('SECURE__AUTH__KEY', 'removed-for-security');
define('LOGGED__IN__KEY', 'removed-for-security');
define('NONCE__KEY', 'removed-for-security');

$table__prefix  = 'abc__';

define ('WPLANG', '');

@ini__set('log__errors','On');
@ini__set('display__errors','Off');
@ini__set('error__log','/home/username/www/php-errors.log');
/**  That's all, stop editing! Happy blogging. ** /if ( !defined('ABSPATH') )
    define('ABSPATH', dirname(____FILE____) . '/');

require__once(ABSPATH . 'wp-settings.php');
?>

Références

  1. lien://blog/wordpress-display-404-after-updated-post/[WordPress

Affichage 404 après la mise à jour du message]. WordPress autosave

  1. http://configserver.com/cp/csf.html [ConfigServer Security et

Pare-feu]. Mod Security

Fréquence d’enregistrement automatique et révisions après publication de WordPress]. http://www.cyberciti.biz/faq/wordpress-turn-off-post-revision/ [WordPress:

Désactiver les révisions après publication/Désactiver les révisions]

lien://tag/pare-feu/[pare-feu]lien://tag/mod security/[mod security]lien://tag/wordpress/[wordpress]