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:
-
WordPress 3.4.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
-
link://blog/wordpress-display-404-after-updated-post/[WordPress
404 nach dem Aktualisieren des Beitrags anzeigen]. WordPress autosave
-
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]