Дебажить правила для 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 комментария:
Спасибо огромное, очень помогло!
коротко и ясно. +
Спасибо, Олег! ваш совет очень помог понять, какого фига пакеты, которые должны ходить, не ходят, а которые не должны - ходят ;)))
Отправить комментарий