
У меня есть простая настройка веб-сервера Apache и базовые таблицы IP (ufw) для сервера разработки. В моих логах я вижу такие строки:
[Fri May 16 10:10:36.258369 2014] [:error] [pid 15926] [client 69.147.158.130:8396] script '/var/www/html/wp-login.php' not found or unable to stat
Я вообще не использую WordPress и понимаю, что это очень незначительная попытка взлома (существуют гораздо более сложные атаки на Apache). Однако я хотел бы автоматически заблокировать этот IP-адрес (временно) без установки IDS/IPS, например Snort.
Я просто ищу простой способ заблокировать адрес, который пытается подключиться к wp-admin или wp-login. Есть ли модуль Apache, который бы справился с чем-то подобным?
решение1
Хотя вы явно просите решение по блокировке IP-адресов, я не думаю, что это хорошее решение.
Причина в том, что эти попытки, которые вы видите, исходят с разных IP-адресов, которые, скорее всего, контролируются одной главной системой. Это просто природа того, как DDoS и попытки взлома происходят в наши дни.
Вместо этого вам следует рассмотреть возможность внедренияModSecurity. Это модуль Apache, который действует как брандмауэр уровня веб-службы. Он анализирует весь веб-трафик, поступающий на ваш сайт, и если обнаруживает известное аномальное поведение, доступ к нам блокируется намертво ответом "403: Запрещено".
Теперь немного негативная сторона в том, что MidSecurity имеет десятки наборов правил по умолчанию, которые работают хорошо, но могут вызывать ложные срабатывания. Так что когда вы его реализуете, вам, скорее всего, придется его подстраивать в течение первых нескольких недель.
Но конечный результат после этого периода "знакомства" у вас будет инструмент, который эвристически защитит ваш сайт от известного плохого поведения. А не просто хранить список IP-адресов.
решение2
Я бы не рекомендовал пытаться сделать это автоматически, я бы рекомендовал вручную заблокировать IP. Единственная автоматизированная система, которую я бы сделал, это скрипт или что-то подобное, которое анализирует ваши логи на предмет похожих ошибок.
Чтобы заблокировать IP с помощью UFW
sudo ufw deny from <ip address>
с iptables
sudo iptables -I INPUT -s <ip address> -j DROP
решение3
Решение, которое работает для меня, — это fail2ban, как указано в комментарии @ceejayoz.
@iain - На самом деле это дубликат. Спасибо, что указали на это.