У нас есть довольно сложная конфигурация 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
Есть ли способ сделать это ?
[edit]
Одним из частичных решений было включение отладки 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-адрес какого-нибудь клиентского компьютера под вашим контролем и попытаться подключиться с него.