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

Как смоделировать исходный IP-адрес, чтобы проверить, какие правила iptables срабатывают / не срабатывают?

У нас есть довольно сложная конфигурация iptables / ipchains, которая генерируется APF. Трафик на порт 80 должен быть заблокирован, но наши журналы Apache показывают, что кто-то смог проверить веб-страницы:

[Sun Feb 03 13:08:45 2013] [error] [client 50.57.125.169] File does not exist:     /var/www/w00tw00t.at.blackhats.romanian.anti-sec:)
[Sun Feb 03 13:08:45 2013] [error] [client 50.57.125.169] File does not exist: /var/www/phpMyAdmin
[Sun Feb 03 13:08:45 2013] [error] [client 50.57.125.169] File does not exist: /var/www/phpmyadmin

Есть ли способ имитировать исходный IP-адрес в iptables для отладки, почему пакет из 50.57.125.169 не заблокировали? В -C | --check вариант, кажется, только сообщает, существует ли правило, которое явно соответствует IP, но я бы хотел сделать (псевдокод)

myserver% iptables --test --source_ip=50.57.125.169 --dest_port=80
Rule #17 matches (ALLOW)    // i.e. this would be the rule that matches

Есть ли способ сделать это?

[править] Одним из частичных решений было включение TRACE отладка на iptables (см. https://serverfault.com/a/126078/67472) и используйте hping3 (спасибо Тренту), который может подменить исходный IP. Однако результаты не отображаются, когда тест запускается с другого сервера, а при запуске с того же сервера он проходит через интерфейс Loopback.

Не могли бы вы просто использовать hping для имитации IP-адреса источника трафика, а затем проверить, проходит ли трафик по-прежнему? Возможно, это не совсем то, что вы ищете, но вы могли бы сделать что-то вроде

hping3 --syn --destport 80 --count 3 -a test.ip.address webserver.ip.address

Я знаю, что не обращаюсь напрямую к заданному вами вопросу, но, используя APF в течение некоторого времени, я мог бы посоветовать вам, как заблокировать IP, если вы использовали другой подход.

пример: чтобы заблокировать порт 80 для хоста 1.2.3.4 - добавьте следующую строку /etc/apf/deny_hosts.rules

    tcp:in:d=80:s=1.2.3.4

В дополнение к этому, вместо того, чтобы проходить через проблемы с подменой исходного IP-адреса, почему бы не попытаться заблокировать IP-адрес какого-либо клиентского компьютера под вашим собственным контролем и попытаться подключиться с него.

Ты можешь использовать scapy чтобы подделать ваш IP-адрес.