Очень часто для построения правильной цепочки фильтров фаервола, или отладки работы какого-то приложения, необходимо узнать какие пакеты наш фаервол отбивает. Для этого в iptables есть функция – LOG, и сегодня мы поговорим о ней.
Для начала, нам необходимо получить список всех правил фаервола с указанием номеров строк. Делается это командой:
#iptables -L -n —line-numbers
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all — 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT icmp — 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all — 0.0.0.0/0 0.0.0.0/0
4 ACCEPT tcp — 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 REJECT all — 0.0.0.0/0 0.0.0.0/0Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 REJECT all — 0.0.0.0/0 0.0.0.0/0Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
#iptables -N LOGGING
#iptables -I INPUT 5 -j LOGGING
#iptables -A LOGGING -m limit —limit 10/min -j LOG —log-prefix «DROP: » —log-level 7
И указываем, что делать с пакетами после их обработки, либо превышения лимита —
#iptables -A LOGGING -j DROP
!!! ВАЖНО !!!
#iptables -D INPUT 5
#nano /etc/rsyslog.conf
kern.debug /var/log/fw.log
#service rsyslog restart
Теперь смотрим на наш результат:
Feb 20 23:20:02 XXX.XXX.XXX.XXX kernel: DROP: IN=eth0 OUT= MAC=XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX SRC=XXX.XXX.XXX.XXX DST=XXX.XXX.XXX.XXX LEN=60 TOS=0x10 PREC=0x00 TTL=64 ID=19162 DF PROTO=TCP SPT=38141 DPT=54 WINDOW=14600 RES=0x00 SYN URGP=0
Автор: Виктор Лукаш