пятница, декабря 02, 2011

Дебаг правил iptables в CentOS 6.2

Дебажить правила для iptables удобно с помощью логирования, при котором логи файрволла пишутся в отдельный файл. Для этого надо в iptables добавить директивы логирования пакетов и  настроить систему логирования CentOS на запись этих сообщений в отдельный файл. 

1. Добавляем директивы логирования пакетов в iptables
Допустим базовый конфигурационный файл /etc/sysconfig/iptables выглядит так

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited.

Последними двумя строками отклоняются все INPUT и FORWARD пакеты, которые не подошли правилам выше.
ПЕРЕД этими строчками добавляем следующие директивы

#************* for debug
-A INPUT -j LOG --log-level DEBUG --log-prefix "[FW INPUT]:"
-A FORWARD -j LOG --log-level DEBUG --log-prefix "[FW FORWARD]:"

То есть мы указали в iptables, что все пакеты, не прошедшие по правилам выше директив логирования должны логироваться.

2. Перезапускаем iptables
# service iptables restart

3. Настраиваем rsyslog для записи логов iptables в отдельный файл
Для того, чтобы записать именно сообщения iptables, отфильтруем их на основании уровня логирования DEBUG.
Редактируем vi /etc/rsyslog.conf
# vi /etc/rsyslog.conf
Добавляем в секцию #### RULES ####
kern.debug /var/log/iptables.log
Что означает писать все сообщения ядра уровня логирования DEBUG в файл /var/log/iptables.log

4. Перезапускаем rsyslog
# service rsyslog restart

Теперь все, что не подошло имеющимся правилам и будет отброшено, будет записываться в файл /var/log/iptables.log. По этим данным легко понять какие пакеты мы упустили при написании правил.

3 комментария:

Анонимный комментирует...

Спасибо огромное, очень помогло!

Анонимный комментирует...

коротко и ясно. +

Анонимный комментирует...

Спасибо, Олег! ваш совет очень помог понять, какого фига пакеты, которые должны ходить, не ходят, а которые не должны - ходят ;)))

Мой список блогов