В моем iptables у меня есть правило, которое регистрирует отброшенные пакеты:
-A INPUT -i eth0 -j LOG --log-prefix "FW: " --log-level 7
-A INPUT -i eth0 -j DROP
И у /etc/rsyslog.conf
меня есть другое правило, которое отправляет эти журналы в выделенный файл /var/log/firewall.log
.
:msg, contains, "FW: " -/var/log/firewall.log
& ~
& ~
Немедленно удаляет журналы, так что они не флудить syslog
или другие файлы журналов.
Это работает хорошо, за исключением того, что оно заполняется dmesg
этими журналами брандмауэра ( /var/log/dmesg
но не выводом команды dmesg
).
Есть ли способ предотвратить отображение этих журналов в dmesg
?
dmesg
затопление, а не в правилах брандмауэра.ulogd2
. Вот как я решил проблему.Ответы:
Вы можете использовать
NFLOG
цель вместоLOG
:Все, что вам нужно, это
nfnetlink_log
способная программа регистрации. Сообщения будут отправляться туда, и процесс пространства пользователя будет решать, регистрировать ли пакет или нет.Еще одна вещь, которую вы можете попробовать - ограничить
LOG
правило определенным порогом:Это будет в среднем 10 пакетов в минуту. Конечно, вы можете настроить это в соответствии с вашими потребностями.
источник
rsyslog
для регистрацииNFLOG
пакетов. Мне нужно решение, которое будет работать сrsyslog
.Это может быть связано с уровнем журнала, который вы используете в iptables. Как я понимаю из уровней журнала документации rsyslog: «Приоритет принадлежит одному из следующих ключевых слов в порядке возрастания: отладка, информация, уведомление, предупреждение, предупреждение (то же самое, что и предупреждение), ошибка, ошибка (такая же, как ошибка), крит, бдительность, эмерг, паника (так же, как эрм). " Как насчет попытки указать уровень журнала в iptables, используя его имя, то есть «уведомление». Хорошо служит мне право для публикации без проверки, так как я теперь думаю, что это не проблема вообще. Я реализовал схему, аналогичную описанной выше, и у меня возникла та же проблема. У меня ядро centos 7 v3.10.0 и, очевидно, начиная с v3.5, похоже, что ведение журнала ядра выполняется с использованием / dev / kmsg, и я предполагаю, что dmesg каким-то образом получит свой вклад оттуда.
источник
Когда вы установили уровень журнала на 7 с помощью команды:
Затем вы можете просто отфильтровать эти сообщения, передав порог уровня dmesg:
источник
Почему тебе не все равно?
dmesg
это низкоуровневый инструмент для печати последних сообщений ядра, и вы попросили ядро записывать пропущенные пакеты.Сконфигурируйте систему системного журнала вашей системы для регистрации сообщений iptables в отдельном файле журнала от других сообщений ядра и используйте вместо этого файлы журнала, которые она записывает
dmesg
.источник