пятница, 12 октября 2012 г.

Журналирование событий iptables в отдельный файл

Имеется сервер с CentOS 6 с настроенным фаерволом (iptables). В правилах фаервола есть цепочка:

-N drop-and-log-it
-A drop-and-log-it -j LOG
-A drop-and-log-it -j REJECT --reject-with icmp-host-prohibited
 Данная цепочка вызывается далее в правилах для логгирования определенных событий, например, логгирования попыток соединения к mysql:
-A INPUT -p tcp -m tcp --dport 3306 -j drop-and-log-it

По умолчанию записи попадают в файл /var/log/messages. Записей следующего вида бывает много, что затрудняет чтение данного файла:
Oct 12 22:31:31 web01 kernel: IN=eth0 OUT= MAC=30:85:a9:a4:ee:55:78:fe:3d:46:ec:88:08:00 SRC=Z.Z.Z.Z DST=X.X.X.X LEN=60 TOS=0x10 PREC=0x00 TTL=55 ID=51274 DF PROTO=TCP SPT=38133 DPT=3306 WINDOW=14600 RES=0x00 SYN URGP=0

Нужно выделить сообщения фаервола в отдельный файл. Логгированием занимается rsyslog, следовательно, настраивать будем правила в конфигурационном файле /etc/rsyslog.conf, но сначала изменим цепочку drop-and-log-it, добавив специальный префикс "iptables: " для дальнейшего отлова данных сообщений. Итак, полностью цепочка выглядит так:

-N drop-and-log-it
-A drop-and-log-it -j LOG  --log-prefix "iptables: "
-A drop-and-log-it -j REJECT --reject-with icmp-host-prohibited


Перезапускаем фаервол:
sudo service iptables restart

Редактируем файл /etc/rsyslog.conf, перед правилами в секции RULES вставляем:
:msg, startswith, "iptables: " -/var/log/iptables.log
& ~


Сохраняем файл и перезапускаем rsyslog.
sudo service rsyslog restart

Для автоматической ротации файла /var/log/iptables создаем файл /etc/logrotate.d/iptables с таким содержанием:
/var/log/iptables.log
{
        rotate 5
        daily
        missingok
        notifempty
        delaycompress
        compress
        postrotate
                service rsyslog reload > /dev/null
        endscript
}

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

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