У нас есть довольно сложная конфигурация 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-адрес.