Запуск Debian 10 в контейнере LXC:
# apt-get -y install nftables
# nft --version
nftables v0.7 (Scrooge McDuck)
# nft flush ruleset
# nft add table inet filter
# nft add chain inet filter input
# nft add rule inet filter input log
# nft list ruleset
table inet filter {
chain input {
log
}
}
Затем я перехожу к /var/log/syslog
, создайте сетевой трафик и ... Я не вижу сообщений от столы вообще.
Я также пытался (безуспешно) определить правило следующим образом:
nft add rule inet filter input log prefix \"FINDME \" counter
Еще тесты:
# logger test && tail -1 /var/log/syslog
Aug 18 20:39:53 my-server root: test
# echo "test2" | systemd-cat && tail -1 /var/log/syslog
Aug 18 20:40:52 my-server cat[1907]: test2
# uname -v
#1 SMP PVE 5.4.34-2 (Thu, 07 May 2020 10:02:02 +0200)
Почему столы не писать на мой системный журнал ?
В качестве бонусного вопроса: есть ли способ вызвать действие при совпадении? Например, сохраните заблокированные IP-адреса в базе данных.
Что ж ... Благодаря подсказке @anx я понял, что очевидно сетевой фильтр имеет некоторые трудности с отправкой данных rsyslog.
Вероятно, это как-то связано с тем, что хост представляет собой контейнер LXC без собственного ядра и cgroups в гипервизоре ... (Бафф, я попадаю на темную территорию) ... Ну ... Как угодно.
В любом случае, если у кого-то возникнет аналогичная проблема, мне удалось получить журнал, отправив данные в ulogd. Вот шаги, чтобы получить работающий базовый пример:
# apt-get -y install nftables ulogd2
# nft flush ruleset
# nft add table inet filter
# nft add chain inet filter input '{ type filter hook input priority 0 ; }'
# nft add rule inet filter input log prefix "FINDME" group 0 accept
# nft list ruleset
table inet filter {
chain input {
type filter hook input priority 0; policy accept;
log prefix "FINDME" group 0 accept
}
}
# tail -f /var/log/ulog/syslogemu.log