
LXC コンテナ上で Debian 10 を実行する:
# 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
ネットワークトラフィックを作成し、...からのメッセージが表示されません。nftables全然。
私はまた、次のようにルールを定義しようとしました (失敗しました):
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)
なぜnftables私のシスログ?
追加の質問ですが、一致が発生したときにアクションをトリガーする方法はありますか? たとえば、ブロックされた IP をデータベースに保存するなどです。
答え1
まあ...@anxのヒントのおかげで、どうやらネットフィルターデータを送信するのに困難があるログ。
これはおそらく、ホストが独自のカーネルを持たないLXCコンテナであり、cグループハイパーバイザーで... (バフ、暗い領域に入り込んでいます)... まあ... 何でもいいです。
とにかく、もし誰かが同じような問題を抱えていたら、私はデータを送信してログを取得することができましたウログ基本的な例を動作させるための手順は次のとおりです。
# 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
答え2
非常によく似た問題に遭遇しました。ネットワーク名前空間内で実行したときに nftables がログに記録されませんでした。Julen の解決策は私にはうまくいきませんでした。
コンテナを実行していないので、次の方法で問題を解決できます。
echo 1 >/proc/sys/net/netfilter/nf_log_all_netns