Я регистрирую и отбрасываю пакеты, отправленные на определенный IP / доменное имя. Я хотел бы иметь возможность регистрировать параметры URL для этого отброшенного пакета.
Это пример URL:
http://somedomain.com/test.php?param1=test1¶m2=test2
Вот что я делаю, например:
iptables -A OUTPUT -p tcp -d somedomain.com --dport 80 -m string --string 'param1=' --algo bm -j LOGGING
В цепочке LOGGING:
iptables -A LOGGING -j LOG --log-prefix "somedomain.com Packet Dropped: " --log-level 7
Я безуспешно пробовал эти варианты:
--log-ip-options
--log-tcp-options
В принципе, я хотел бы получить такую же актуальную информацию, как от tcpdump
но поскольку я сбрасываю пакеты, вы знаете историю, я не могу использовать здесь tcpdump (насколько я понимаю) ...
Можно ли с помощью журнала iptables (в текстовый файл ?!) получить строку запроса URL-адреса отброшенного пакета? В этом примере это будет:
param1=test1¶m2=test2
Мои знания обо всем этом близки к нулю, так что извините, если это глупый вопрос.
Спасибо
Вы не сможете добиться этого правильно с помощью только iptables, хотя бы потому, что URL-адрес запроса может быть фрагментирован на несколько пакетов.
Поскольку вы фильтруете OUTPUT, вероятно, более надежным и простым способом было бы установить локальный HTTP-прокси, например Кальмар, и добавьте свои правила фильтрации в squid.
Затем для полноты картины вы можете использовать iptables для блокировки всего, кроме прокси-сервера squid, для подключения к этому запрещенному хосту.
Согласно следующему Пример конфигурации, вы должны иметь в своем squid.conf
http_port 3129 intercept
а затем перехватить запросы с помощью
iptables -t nat -A OUTPUT -p tcp -d somedomain.com --dport 80 -m owner --uid-owner squid -j ACCEPT
iptables -t nat -A OUTPUT -p tcp -d somedomain.com --dport 80 -j DNAT --to-destination 127.0.0.1:3129
Первое правило требуется, чтобы сам squid мог проксировать запрос на исходный хост, если вы хотите пропустить некоторые из них.
Вы можете просмотреть URL-адреса запросов, посмотрев значение по умолчанию access.log
файл, созданный squid. Для фактической блокировки URL-адресов вы должны настроить некоторые ACL в squid.conf
:
acl blocktestphp url_regex test.php
http_access deny blocktestphp