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]