Linux
nftables 不寫入系統日誌
在 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 儲存在數據庫中。
嗯…感謝@anx 的線索,我發現顯然netfilter將數據發送到**rsyslog有一些困難。
這可能與主機是一個沒有自己的核心和管理程序中的cgroup的 LXC 容器有關……(Buff,我正在進入黑暗領域)……好吧……隨便。
無論如何,如果有人碰巧有類似的問題,我設法通過將數據發送到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