Блокировка доступа Apache через строку агента пользователя
У меня есть сценарий, который использует прокси для атаки на сайт, который я обслуживаю.
Я заметил, что они, как правило, получают доступ к сайту через программное обеспечение с определенной строкой пользовательского агента (например, http://www.itsecteam.com/en/projects/project1_page2.htm "Havij advanced sql инъекционное программное обеспечение" со строкой user_agent из Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) Havij
). Я знаю, что любое программное обеспечение для взлома, достойное его соли, вероятно, сможет изменить его строку пользовательского агента, но я в порядке с сценарием, который должен иметь дело с этой функцией в какой-то момент.
Итак, существует ли какое-либо программное обеспечение для автоматической блокировки доступа и постоянного внесения в черный список путем сопоставления строк пользовательского агента?
2 ответа
Вы можете запретить доступ с помощью BrowserMatch и Deny из SetEnvIf. Пример:
SetEnvIfNoCase User-Agent "^Wget" bad_bot
SetEnvIfNoCase User-Agent "^EmailSiphon" bad_bot
SetEnvIfNoCase User-Agent "^EmailWolf" bad_bot
<Directory "/var/www">
Order Allow,Deny
Allow from all
Deny from env=bad_bot
</Directory>
Чтобы навсегда заблокировать их, вы должны написать собственный файл журнала и использовать, например, fail2ban, чтобы заблокировать их с помощью iptables.
Например создать LogFormat
LogFormat "%a %{User-agent}i" ipagent
Добавьте запись в ваш vhost / server-wide
CustomLog /var/log/apache2/useragent.log ipagent
/etc/fail2ban/filter.d/baduseragent.conf
[Definition]
failregex = ^<HOST> Mozilla/4\.0 \(compatible; MSIE 7\.0; Windows NT 5\.1; SV1; \.NET CLR 2\.0\.50727\) Havij$
/etc/fail2ban/jail.conf
[apache-bad-user-agent]
enabled = true
port = 80,443
protocol = tcp
filter = baduseragent
maxretry = 1
bantime = 86400
logpath = /var/log/apache2/useragent.log
Я думаю, что понимаю ваш вопрос. Я предоставлю более подробное объяснение, если это то, что вы ищете. (это будет работать как ловушка для других вещей)
- Включить движок mod_rewrite в apache2
- Создайте trap.php, посетитель может делать все что угодно. Например, я сделал так, чтобы все посетители ip были добавлены в черный список, который запрещает доступ к моей сети.
- Создайте файл ненужных вам пользовательских агентов, по одному в строке
bas_useragent [tab] черный
useragent_bad [tab} черный - Теперь добавьте ваш mod_rewrite, который соответствует карте из-за плохих пользовательских утилит, а затем переквалифицируйте в вашу ловушку, если карта есть. Правило может выглядеть так:
RewriteMap badlist txt:~/bad_useragent_list
RewriteCond %{HTTP_USER_AGENT} .* [NC]
RewriteCond ${badlist:%1|white} ^black$ [NC]
RewriteRule (.*) "/trap.php" [L]
- Это в основном сопоставляет идентификатор пользователя ключам в вашем файле, если он не найден, предполагается, что он "белый" и запрос не изменен. Если он найден и соответствующее значение "черный", запрос переписывается, чтобы перейти в ваш файл trap.php, который делает все, что вам нравится.
- Некоторые возможные идеи. Попросите другой скрипт, просматривающий общий файл, в который trap.php записывает IP-адрес. Если этот общий файл изменяется, этот наблюдатель считывает новую информацию, анализирует IP-адреса и добавляет правило в IP-таблицы, которое блокирует весь трафик с этого адреса. Надеюсь, это поможет! Опять же, если вы хотите более подробно, просто ответьте здесь.