Comments 21
А не было идеи ни у кого всем договориться и включить диапазоны все адреса хецнеров и других крупных хостингов сразу в access deny? Кому нужно смотреть сайт с ip хостеров, кроме как боту или анонимайзеру?
-6
Мне. У меня VPN на Хецнере.
Благодаря таким, как вы, я не могу ходить на auto.ru, Доброчан и кучу всего еще.
Благодаря таким, как вы, я не могу ходить на auto.ru, Доброчан и кучу всего еще.
+20
Мне, нужен. Держу VPN у хецнера и на некоторых администрируемых ресурсах (в том числе WP), вход в админку разрешен только с IP адреса сервера.
+3
В настройке обязательно включите галочку «За прокси» — иначе он будет для всех определять ip вашего сервера и автомат блокировать всех.
Эта галочка случаем не использует заголовок X-Real-IP (X-Forwarded-For, и другие) вместо REMOTE_ADDR? Если так, то получился вредный совет, вместо полезного, и правильным выходом из ситуации будет корректная настройка веб сервера.
0
Проверил в коде плагина, да она использует
define('LIMIT_LOGIN_PROXY_ADDR', 'HTTP_X_FORWARDED_FOR');
Однако у меня без ее включения не работает корректно определение ip адреса. Быть может вы поделитесь почему это вредно и как поправить, буду очень благодарен!
Из описания плагина
define('LIMIT_LOGIN_PROXY_ADDR', 'HTTP_X_FORWARDED_FOR');
Однако у меня без ее включения не работает корректно определение ip адреса. Быть может вы поделитесь почему это вредно и как поправить, буду очень благодарен!
Из описания плагина
What is this option about site connection and reverse proxy?
A reverse proxy is a server in between the site and the Internet (perhaps handling caching or load-balancing). This makes getting the correct client IP to block slightly more complicated.The option default to NOT being behind a proxy — which should be by far the common case.
0
Насколько я понял, у вас используется связка nginx+apache, в таком случае до апача коннекты от всех клиентов доходят от адреса сервера (или 127.0.0.1). Правильно в таком случае со стороны nginx выставлять соответствующие заголовки:
А к апачу добавить модуль mod_rpaf2 и сказать ему, что реальный адрес пользователя находится в заголовке X_REAL_IP
В RPAFproxy_ips указывается IP адрес сервера с nginx, если он находится на другим IP. Плюсом, после настройки модуля, в логах apache будут реальные адреса пользователей, а не адрес nginx или localhost.
В противном случае, если включить опцию доверия заголовку HTTP_X_FORWARDED_FOR, а веб сервер будет не за прокси, то атакующий сможет с использованием данного заголовка обмануть плагин, отправляя с каждым запросом разномные IP адреса.
proxy_set_header X_REAL_IP $remote_addr;
proxy_set_header X_FORWARDED_FOR $proxy_add_x_forwarded_for;
А к апачу добавить модуль mod_rpaf2 и сказать ему, что реальный адрес пользователя находится в заголовке X_REAL_IP
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1
RPAFheader X-REAL-IP
В RPAFproxy_ips указывается IP адрес сервера с nginx, если он находится на другим IP. Плюсом, после настройки модуля, в логах apache будут реальные адреса пользователей, а не адрес nginx или localhost.
В противном случае, если включить опцию доверия заголовку HTTP_X_FORWARDED_FOR, а веб сервер будет не за прокси, то атакующий сможет с использованием данного заголовка обмануть плагин, отправляя с каждым запросом разномные IP адреса.
+4
Включить Limit Login Attempts и отключить XML RPC будет достаточно? Хочется какого-то быстрого универсального решения, на будущее.
0
да, достаточно. Я планирую на днях написать плагинчик, который делает сразу 3 действия:
1. limit logins
2. отключает XML RPC с вариантами, например, чтобы можно было или полностью опцию отключить или только pingback
3. переименование wp-login.php в выбранное имя
Там ничего сложного, но потом проще будет обновлять и дополнять в будущем кучи сайтов свои. Если напишу кину тут ссылку на репозиторий.
1. limit logins
2. отключает XML RPC с вариантами, например, чтобы можно было или полностью опцию отключить или только pingback
3. переименование wp-login.php в выбранное имя
Там ничего сложного, но потом проще будет обновлять и дополнять в будущем кучи сайтов свои. Если напишу кину тут ссылку на репозиторий.
0
location ~* /(wp-login\.php|administrator|admin\.php) {
set $humantest 0;
if ($http_cookie !~* "humans=checktest") {
set $humantest 1;
}
if ($args ~* (callback|logout|lostpassword)) {
set $humantest 0;
}
if ($humantest = 1) {
add_header Content-Type text/html;
return 200 "<html><body><script>document.cookie='humans=checktest;path=/';location.reload();</script></body></html>";
}
error_page 404 = @fallback;
}
Код не мой, но позволяет без всяких танцев с плагинами избавится от всякой живности, родился он примерно год назад и зомби еще не научились его парсить…
+1
Иногда у nginx «default_type» выставлен в что то отличное от «text/html», и тогда мы можем получить в ответ что-то типа такого:
Некоторые браузеры не понимаю что это и предлагают «сохранить файл». Что бы такого не было, можно сделать так:
HTTP/1.1 200 OK
...
Content-Type: application/octet-stream
Content-Length: 103
Connection: keep-alive
Keep-Alive: timeout=5
Content-Type: text/html
...
Некоторые браузеры не понимаю что это и предлагают «сохранить файл». Что бы такого не было, можно сделать так:
location ~* /(wp-login\.php|administrator|admin\.php) {
default_type text/html;
set $humantest 0;
if ($http_cookie !~* "humans=checktest") {
set $humantest 1;
}
if ($args ~* (callback|logout|lostpassword)) {
set $humantest 0;
}
if ($humantest = 1) {
return 200 "<html><body><script>document.cookie='humans=checktest;path=/';location.reload();</script></body></html>";
}
error_page 404 = @fallback;
}
0
Если ставить код после (кода ниже) то не работает, а если перед, то PHP не исполняется. Куда его ставить?
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_read_timeout 120;
include fastcgi_params;
}
0
А я когда-то прописал в .htaccess:
Если ip выдается динамически можно указать сеть провайдера.
Вызов удаленных процедур, за который отвечает xmlrpc.php, мне не нужен
#Защита от подбора пароля
<Files wp-login.php>
Order Deny,Allow
Deny from all
allow from домашний_ip
allow from рабочий_ip
</Files>
# protect xmlrpc
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
Если ip выдается динамически можно указать сеть провайдера.
Вызов удаленных процедур, за который отвечает xmlrpc.php, мне не нужен
0
Буквально сегодня установил All In One WP Security & Firewall. Очень широкий функционал и никаких танцев с бубном.
0
Нужно обновить WordPress (уязвимость в XML-парсере). Подробности: wordpress.org/news/2014/08/wordpress-3-9-2/
Советую подписаться, чтобы получать подобные новости первыми.
Советую подписаться, чтобы получать подобные новости первыми.
0
Sign up to leave a comment.
Articles
Change theme settings
И опять атака на сайты Wordpress — перебор + XMLRPC