Использование iptables для блокировки IP-адресов, которые requestили определенный HTTP-ресурс
В настоящее time я наводнен requestами к /wpad.dat – таким образом, что это похоже на атаку.
Теперь я хотел бы запустить iptables для каждого IP-адреса, который запрашивает /wpad.dat, а затем добавляет его в черный list. Есть ли способ сделать это? Это означает, что IP сможет отправлять один request на флуд, а затем – less.
Какой-нибудь опрятный способ сделать это эффективно?
- proxy-скрипт не работает, когда подkeyены две сетевые maps. Как это исправить?
- Internet Explorer не выполняет автоматическое обнаружение http: //wpad/wpad.dat auto-config
- «Автоматическое определение настроек» и «Использовать скрипт автоматической настройки»
- shExpMatch и Internet Explorer 6 в proxy.pac
- корпоративные альтернативы конфигурации proxy WPAD?
- Получение проблемы с явным proxy-serverом
- Есть ли способ перекрестного browserа для проверки только для IPv6-хостов из wpad.dat?
- Как настроить протокол автоматического обнаружения прокси-сервера (WPAD), если у вас нет прокси-сервера?
- Спецификация проекта IETF для автоматического определения веб-proxy?
- Apache access.log, заполненный requestами GET для wpad.dat
- Прокси-скрипт не работает, когда подключены две сетевые карты. Как это исправить?
- Автоматический сценарий настройки proxy-serverа - process лабораторной настройки
- Как переопределить parameters сетевого DHCP-serverа, чтобы быть конкретным для моего собственного .conf-fileа?
Вы можете подумать, что есть другие способы блокировки IP-адресов. Например, Fail2ban предназначен для сканирования fileов журнала для данных шаблонов и временного блокирования IP-адресов.
Как уже упоминалось в комментариях, вы можете добавить тысячи IP-адресов в свой черный list. В то time как iptables
работает, каждое дополнительное правило может увеличить time обработки для каждого requestа. Вы можете использовать ipset
в качестве альтернативы, которая, кажется, намного быстрее, когда добавлено много IP-адресов. Для ускорения матчей требуется хеш-подход. См. Массовые блокировки IP-адресов с ipset для получения подробной информации и сравнения между iptables
и ipset
.
Если вы хотите использовать iptables
, это, вероятно, будет завиnetworking от того, как настроен ваш веб-server. Предположим, что вы используете apache или nginx, вы можете настроить его на запуск скрипта cgi, который будет запускаться при requestе wpad.dat
.
Например, если ваш website уже использует php, вы можете использовать внутреннюю переписку для запуска php-скрипта (или ruby / python / java в зависимости от языка, который вы обычно используете).
Как только скрипт запускается, просто попросите его запустить что-то вроде этого в командной строке:
iptables -I INPUT -s {IP-HERE} -j DROP
Скрипт должен выполняться как root, и, вероятно, не рекомендуется давать привилегии root для веб-пользователей, поэтому вы можете упаковать его в viewе сценария оболочки, chown
the root и использовать setuid
на нем.
Большое предупреждение: вы можете случайно заблокировать себя, если вы посетите этот ресурс, поэтому вы можете установить --dport
на порт 80 или что-то в этом роде. Это, по крайней мере, позволяет блокировать ваш протокол ssh, поэтому, если вам удастся заблокировать себя, вы можете ssh на свой server и заблокировать себя.
Истечение срока действия. Поскольку постоянная locking многих IP-адресов редко является хорошей идеей, вам может потребоваться отслеживать заблокированный IP-адрес (возможно, добавить его в file журнала) и создать задание cron для периодического удаления этих IP-адресов. Вам просто нужно запустить что-то вроде:
iptables -D INPUT -s 192.168.1.100 -j DROP
Блокировка автоматически не является тривиальной с iptables, но вместо этого вы можете дросселировать соединения, чтобы не засорять все ваши ресурсы, добавив это правило:
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m limit --limit 50/minute --limit-burst 200 -j ACCEPT