Назад | Перейти на главную страницу

Блокировка доступа к apache через строку пользовательского агента

У меня есть скриптер, который использует прокси для атаки на веб-сайт, который я обслуживаю.

Я заметил, что они, как правило, получают доступ к сайту через программное обеспечение с определенной строкой общего пользовательского агента (т.е. http://www.itsecteam.com/en/projects/project1_page2.htm "Расширенное программное обеспечение для внедрения sql-кода Havij" со строкой user_agent Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) Havij). Я знаю, что любое достойное взлома программное обеспечение, вероятно, сможет изменить строку пользовательского агента, но меня устраивает, что скриптер должен иметь дело с этой функцией в какой-то момент.

Итак, существует ли какое-либо программное обеспечение для автоматической блокировки доступа и постоянного занесения в черный список путем сопоставления строк пользовательского агента?

вы можете запретить доступ через BrowserMatch и запретить из 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 / серверу

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, которое блокирует весь трафик с этого адреса. Надеюсь, это поможет! Опять же, если вы хотите получить более подробную информацию, просто ответьте здесь.