Показаны сообщения с ярлыком iptables. Показать все сообщения
Показаны сообщения с ярлыком iptables. Показать все сообщения

воскресенье, 24 марта 2013 г.

Установить модуль xt_LOG (Gentoo)

Имеется Gentoo, не хватает модуля для логгирования iptables. Краткая инструкция для себя.
# В данном случае версия ядра 3.5.7
cd /usr/src/linux
make menuconfig

# Установить CONFIG_NETFILTER_XT_TARGET_LOG=m и выйти, сохранив конфиг

# Откомпилировать модуль
make net/netfilter/xt_LOG.ko

# Скопировать в нужный каталог
cp net/netfilter/xt_LOG.ko /lib/modules/3.5.7-gentoo/kernel/net/netfilter/

# Создать файл зависимостей модулей
depmod -a

# Проверить наличие xt_LOG
grep -i xt_log /lib/modules/3.5.7-gentoo/modules.dep

# Получить информацию о модуле
modinfo xt_LOG

# Загрузить модуль
modprobe xt_LOG

# Добавить модуль в автозагрузку в файле /etc/conf.d/modules
modules="xt_LOG"

# Добавить правило в iptables для ограничения числа сообщений о блокировке пакета от
одного хоста-отправителя до 1 раза в минуту
iptables -A INPUT -m hashlimit --hashlimit-upto 1/min --hashlimit-burst 1 
--hashlimit-mode srcip --hashlimit-name lim_log --hashlimit-htable-expire 60000 
-j LOG --log-prefix "IPTABLES: DEF DROP: "

# Сохранить текущий набор правил
iptables-save > /var/lib/iptables/rules-save

# Отредактировать в /etc/syslog-ng/syslog-ng.conf
destination iptables { file("/var/log/iptables.log"); };
filter f_iptables {    message("IPTABLES.*") };
log { source(src); filter(f_iptables); destination(iptables); flags(final); };

# Перезапустить syslog-ng
/etc/init.d/syslog-ng reload

# Добавить в /etc/logrotate.d/syslog-ng.conf
/var/log/iptables.log {
    missingok
    notifempty
    rotate 300
    compress
    sharedscripts
    postrotate
        /etc/init.d/syslog-ng reload > /dev/null 2>&1 || true
    endscript
}

пятница, 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
}