Логирование пакетов в фаерволе CentOS





Очень часто для построения правильной цепочки фильтров фаервола, или отладки работы какого-то приложения, необходимо узнать какие пакеты наш фаервол отбивает. Для этого в 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/0

Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 REJECT all -- 0.0.0.0/0 0.0.0.0/0

Chain 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
Так же, нам необходимо добавить в конфигурацию rsyslog, параметр для куда складывать вывод нашего логирования. И не забудем про необходимость ротации логов - для этого правим /etc/logrotate.d/syslog
#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


Валерий Кулик
http://efsol.ru/solutions/data-protection.html

Комментариев нет:

Отправить комментарий