Как настроить iptables так, чтобы я знал, какой пакет блокируется каким правилом? Единственное известное мне решение - это -j LOG --log-prefix. Есть ли другой путь?
Вы можете посмотреть счетчики пакетов / байтов:
Цепь FIREWALL (2 ссылки)
pkts байтов target prot opt in source назначение73M 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: tablename: chainname: type: rulenum», где тип может быть «rule» для простого правила, «return» для неявного правила в конце цепочки, определяемой пользователем, и «политика» для политики встроенных цепочек. Его можно использовать только в необработанной таблице.