iptables: узнать, какой пакет заблокирован по какому правилу?
Как я могу настроить iptables таким образом, чтобы я знал, какой пакет заблокирован каким правилом? Одно из известных мне решений - это -j LOG --log-prefix. Есть ли другой путь?
3 ответа
Вы можете посмотреть на счетчики пакетов / байтов:
Сеть FIREWALL (2 ссылки)
pkts bytes target prot opt in out source source73M 42G ПРИНЯТЬ все - lo * 0.0.0.0/0 0.0.0.0/0
Вы можете очистить счетчики с помощью опции '-Z'. Вы можете направлять типы пакетов в их собственную таблицу и принимать их индивидуально в зависимости от источника, если вы хотите отслеживать источник.
iptables -N SMTP
iptables -I INPUT -p tcp --dport 25 -j SMTP
iptables -A SMTP -s $network_1 -j ACCEPT
iptables -A SMTP -s $network_2 -j ACCEPT
iptables -A SMTP -j RETURN
#Track by network instead of application
iptables -N NETWORK_1
iptables -I INPUT -s $network_1 -j NETWORK_1
iptables -A NETWORK_1 -p tcp --dport 25 -j ACCEPT -m comment --comment "MAIL"
iptables -A NETWORK_1 -p udp --dport 10000:20000 -j ACCEPT -m comment --comment "VOIP RTP"
iptables -A NETwORK_1 -p tcp -m multiport --dports 80,443 -j ACCEPT
iptables -A NETWORK_1 -p tcp -j ACCEPT -m comment --comment "UNKNOWN TCP"
iptables -A NETWORK_1 -j RETURN -m comment --comment "This rule is not required but used for ip accounting"
Существует также -j ULOG, который вы можете использовать вместе с ulogd.
Заглянуть в TRACE
цель
Эта цель помечает пакеты так, чтобы ядро регистрировало каждое правило, которое соответствует пакетам, как те, которые пересекают таблицы, цепочки, правила. (Для ведения журнала требуется модуль ipt_LOG или ip6t_LOG.) Пакеты регистрируются со строковым префиксом: "TRACE: имя таблицы: имя_цепи: тип:rulenum ", где типом может быть "правило" для простого правила, "возврат" для неявного правила в конце пользовательская цепочка и "политика" для политики встроенных цепочек. Его можно использовать только в необработанной таблице.