mod__security блокирует мой IP при редактировании поста в WordPress

изображение wordpress-firewall

Редактируя сообщение в редакторе WordPress, через несколько минут мой IP будет автоматически заблокирован mod__security , помещен в список запрещенных доступа брандмауэра, и в журнале отображается проблема безопасности« 5 за последние 300 секунд ».

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

Чтобы быстро это исправить, мне нужно перезагрузить модем или получить новый IP-адрес для доступа к моему серверу через SSH или WHM, а затем удалить заблокированный IP-адрес вручную. Вот мое окружение:

, WordPress 3.4.2

, Классический Apache ModSecurity CSF/LFD

После многих попыток и ошибок я обнаружил, что это может быть вызвано «автосохранением» WordPress и возможностями пост-ревизии. При редактировании публикации WordPress будет автоматически сохранять «черновик» или «после редакции» в течение определенного интервала, и слишком часто будет TRIGGER правила mod__security .

Вот два решения:

1. Белый список действий WordPress

Это предложено моим сторонником сервера, внесите в белый список некоторые общие действия WordPress в mod__security . Отредактируйте whitelist.conf и вставьте в него следующие правила.

/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. Отключить публикацию ревизий

Отключите функцию пост-ревизий WordPress или увеличьте интервал автосохранения. Отредактируйте wp-config.php , добавьте следующий код:

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

Вот мой полный пример 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');
?>

Рекомендации

, ссылка://блог/WordPress-дисплей-404-после обновляемого столба/[WordPress

Дисплей 404 после обновления сообщения], WordPress автосохранение

, http://configserver.com/cp/csf.html [ConfigServer Безопасность и

Брандмауэр], Mod Security

Частота автосохранения WordPress и ревизии], http://www.cyberciti.biz/faq/wordpress-turn-off-post-revision/ [WordPress:

Отключить публикацию ревизий/отключить ревизии]

ссылка://тег/брандмауэр/[межсетевой экран]ссылка://тег/mod security/[mod security]ссылка://тег/WordPress/[WordPress]