mod__security blockiert meine IP beim Bearbeiten eines Beitrags in WordPress

wordpress-firewall image

Nach dem Bearbeiten eines Beitrags im WordPress-Editor wird meine IP-Adresse nach ein paar Minuten automatisch von "mod__security" blockiert, in die Firewall-Liste "Zugriff verweigert" eingetragen und das Protokoll zeigt Sicherheitsbedenken " 5 in den letzten 300 Sekunden ".

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

Um es schnell zu beheben, muss ich mein Modem neu starten oder eine neue IP-Adresse erhalten, um über SSH oder WHM auf meinen Server zuzugreifen, und die blockierte IP-Adresse dann manuell löschen. Hier ist meine Umgebung:

  1. WordPress 3.4.2

  2. Klassischer Apache ModSecurity CSF/LFD

Nach vielen Versuchen und Fehlern habe ich herausgefunden, dass dies durch die WordPress-Funktionen "autosave" und Post-Revision hervorgerufen werden kann. Wenn Sie einen Beitrag bearbeiten, speichert WordPress während des definierten Intervalls automatisch "Entwurf" oder "Nachbearbeitung", und zu oft werden TRIGGER die `mod__security'-Regeln problemlos angewendet.

Hier sind zwei Lösungen:

1. Whitelist-WordPress-Aktion

Dies wird von meinem Server-Supporter vorgeschlagen. Whitelist einige allgemeine WordPress-Aktionen in mod__security . Bearbeiten Sie whitelist.conf und fügen Sie die folgenden Regeln ein.

/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. Post-Revisionen deaktivieren

Deaktivieren Sie die WordPress-Nachversionen oder erhöhen Sie das Intervall zum automatischen Speichern. Bearbeiten Sie wp-config.php und fügen Sie folgenden Code hinzu:

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

Hier ist mein vollständiges Beispiel von 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');
?>

Referenzen

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

404 nach dem Aktualisieren des Beitrags anzeigen]. WordPress autosave

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

Firewall]. Mod Sicherheit

WordPress Autosave-Frequenz und Post-Revisionen]. http://www.cyberciti.biz/faq/wordpress-turn-off-post-revision/ [WordPress:

Post Revisionen deaktivieren/Revisionen deaktivieren]