iptables: пишем в лог все заблокированные соединения/пакеты
- AJIekceu4
- 23.12.2014
- 28 587
- 19
- 04.12.2019
- 20
- 20
- 0
- Содержание статьи
Во время настройки правил iptables очень часто возникает необходимость посмотреть, какие из соединений отбрасываются (дропаются, фильтруются). В этой статье мы рассмотрим настройки для iptables, чтобы отфильтрованные фаерволом пакеты, сохранялись в отдельный лог файл для дальнейшего анализа.
Описание
Чтобы это работало, мы должны создать конфигурационный файл для rsyslog (считаем, что он у вас уже установлен в системе).
touch /etc/rsyslog.d/10-iptables.conf
Открываем его любым текстовым редактором, например, nano и вносим туда следующие строчки:
:msg, contains, "IPTables-Dropped: " -/var/log/iptables.log
& ~
Сохраняем изменения в файле. Первая строчка говорит rsyslog, что нужно искать в логе фразу "IPTables-Dropped: ", и когда он её находит, то переносит в файл /var/log/iptables.log
Вторая строчка просто дает понять rsyslog, чтобы найденные строки, подходящие под условия, не дублировались в основной лог /var/log/messages.
Перезапускаем rsyslog:
service rsyslog restart
Все, подготовительный этап, позволяющий писать лог iptables в отдельный файл мы сделали. Можно его не делать и тогда все записи будут появляться в /var/log/messages, но ИМХО это не очень удобно.
Переходим ко второму этапу, непосредственной настройке iptables.
Возможны три варианта настройки:
Вариант 1 - Записываем в лог (логируем) только входящие отброшенные соединения/пакеты:
iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
iptables -A LOGGING -j DROP
Разберем что же означает каждая из команд в примере выше:
iptables -N LOGGING: Создаем новую цепочку LOGGING
iptables -A INPUT -j LOGGING: Все входящие пакеты (для которых не сработало ни одно из ваших собственных правил и которые из-за политики DROP все-равно должны заблокироваться) попадают в цепочку LOGGING
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4: Логируем все входящие пакеты в syslog (/var/log/messages).
iptables -A LOGGING -j DROP: Отбрасываем все пакеты, которые пришли в цепочку LOGGING.
Вариант 2 - Записываем в лог только исходящие отброшенные соединения/пакеты:
Все тоже самое, что и в примере выше, за исключением цепочки, теперь используем OUTPUT вместо INPUT.
iptables -N LOGGING
iptables -A OUTPUT -j LOGGING
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
iptables -A LOGGING -j DROP
Вариант 3 - Записываем в лог все исходящие и входящие отброшенные соединения/пакеты:
iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A OUTPUT -j LOGGING
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
iptables -A LOGGING -j DROP
Добавить комментарий