Я пытаюсь закалить Apache 2.4 Веб-сервер, на котором работают 2 сайта wordpress с отдельными настройками vhost. Развернут на Windows 2012 r2. Несколько недель назад меня взломали, и сервер был полностью потерян. На новом сервере они все еще пытаются взломать сайт с помощью инъекций почтовых запросов / выполнения кода. У меня проблемы с попыткой заблокировать все POST
запрос, который не отправляется сервером при отправке.
Вещи, которые я пробовал, включают
<Location>
, <Directory>
, <Limit>
теги с их атрибутами, такими как GET
,PUT
, POST PUT DELETE
пробовать различные комбинации с различными Require
заявления т.е. local
, ip
, host
, и order allow, deny
узоры. Allow all from
<Directory "/">
, <Location >
,<LimitExcept >
Теги, включая такие атрибуты, как GET
,POST
и комбо.
Различный <if >
заявления
AllowMethod
Заявления
Добавление каталогов в белый список .htacess
Размещение попыток в другом файловом контексте. Такие как httpd.conf
, Vhost.conf
, .htaccess
. Любой файл, который я нашел в документах Apache, относящихся к контексту директивы. Даже поместил его там, где он не должен работать для хихиканья. Ничего, я читал в документации или при переполнении стека, похоже, не сработало.
Все модули авторизации загружены, такие как mod_auth, mod_host и т. Д. Просто предположим, что с модулями все в порядке.
Я бы хотел добиться deny
или <Limit POST>
запрос. Строго позволяя им в динамике <Directory "/.*"> or
`получают ответ только тогда, когда сервер отправляет запрос, используя IP-адрес сервера. Следовательно, IP: порт запроса должен быть «удаленным адресом», потому что локальная служба apache отправляет метод запроса через PHP. Я считаю, что это правильная логика.
Последнее, что у меня было время попробовать перед уходом с работы, это приведенный ниже код, пытающийся создать динамический тег <Directory "/.*">. Я не хочу копаться в Wordpress для каждой формы и создавать тег для каждого каталога.
Спасибо за помощь, пожалуйста, включите в свой ответ пример кода.
<Directory "/.*">
<if "%{REQUEST_METHOD} == 'POST'">
<Limit POST PUT DELETE>
Require req, http %{REMOTE_ADDR} == 'xx.xx.xx.xx:xx'
</Limit>
</if>
</Directory>
Сейчас я попробовал
<Directory "/">
<if "($_SERVER['%{REMOTE_ADDR}'] == 'xx.xx.xx.xx'">
<Limit POST>
allow from all
</Limit>
</if>
</Directory>
<Directory "/">
<if "($_SERVER['REMOTE_ADDR'] == 'xx.xx.xx.xx'">
<Limit POST>
allow from all
</Limit>
</if>
</Directory>
Нет плагинов, нет nginx, E xpress или предложений IIS. Только актуальные решения для этого конфига.
POST выполняется браузером пользователя. Если журналы доступа Apache показывают, что запрос поступает из той же системы, возможно, какое-то другое программное обеспечение является первым в очереди в этой системе, например, например. веб-кеш как Varnish или HaProxy. Проверьте, содержит ли заголовок X-Forwarded-For IP-адрес пользователя. Если вы хотите защитить Wordpress от взлома, что непросто, вам нужно поработать над самим Wordpress. Измените имя страницы входа в систему, дайте администратору пароль, который невозможно угадать или перебором, и, наконец, что не менее важно, обновляйте Wordpress, чтобы все известные уязвимости были исправлены.