重新啟動時 nftables 更改
這是我的
/etc/sysconfig/nftables.conf
#!/usr/sbin/nft -f flush ruleset table ip filter { chain input { type filter hook input priority filter; policy accept; ct state established,related counter packets 264 bytes 17996 accept ct state invalid drop tcp dport 22 ip saddr 192.168.0.0/16 accept udp sport 53 accept drop } chain forward { type filter hook forward priority filter; policy accept; } chain output { type filter hook output priority filter; policy accept; } }
當我使用
nft -f /etc/sysconfig/nftables.conf
但重新啟動後,我還會在上面顯示的表格下方獲得這些附加規則:table bridge filter { chain INPUT { type filter hook input priority filter; policy accept; } chain FORWARD { type filter hook forward priority filter; policy accept; } chain OUTPUT { type filter hook output priority filter; policy accept; } }
我不明白的是什麼?
附加問題。我正在努力強化機器。該機器應該用於基本上瀏覽網路,因此必須允許。我希望能夠從本地網路 ssh 到它。我錯過了什麼重要的東西嗎?
那是由較新版本的
ebtables
命令創建的兼容性表和鏈,用於操作網橋,但在ebtables兼容模式下使用nftables核心 API 。有些東西在某處執行了一個命令,即使只是為了驗證不存在ebtables規則,或者可能是為了自動載入一些ebtables規則集,這些規則集已轉換為nftables規則集。ebtables
你可以通過幾種方法知道它(在 CentOS8 上):
- 實際可執行
# readlink -e /usr/sbin/ebtables /usr/sbin/xtables-nft-multi
- 顯示的版本
# ebtables -V ebtables 1.8.2 (nf_tables)
- 規則監控
術語1:
# nft -f /etc/sysconfig/nftables.conf # nft monitor #command waits in event mode
術語2:
# ebtables -L Bridge table: filter Bridge chain: INPUT, entries: 0, policy: ACCEPT Bridge chain: FORWARD, entries: 0, policy: ACCEPT Bridge chain: OUTPUT, entries: 0, policy: ACCEPT
再次是第 1 項(Fedora 較新的nftables版本將顯示網橋的
-200
優先級值及其符號等價物filter
):add table bridge filter add chain bridge filter INPUT { type filter hook input priority -200; policy accept; } add chain bridge filter FORWARD { type filter hook forward priority -200; policy accept; } add chain bridge filter OUTPUT { type filter hook output priority -200; policy accept; } # new generation 7 by process 16326 (ebtables)
由於基礎鏈不包含任何規則並且有接受政策,因此不會受到任何影響。該系統還需要有一個橋來使用這個表和鏈。
如果 CentOS8 和您目前的 Fedora 版本仍然足夠接近,這可能是通過使用iptables-ebtables包中的 systemd ebtables服務創建的。如果不需要橋接過濾,可以考慮去掉這個包。如果確實需要,您仍然可以使用nft 。
添加的表屬於家庭橋這一事實表明它是ebtables而不是iptables、ip6tables或arptables,它們都會給出相同的行為,如果還沒有出現則創建不同的表族(resp. ip、ip6或arp)及其基鏈. 所以應該避免使用相同的表名以避免任何衝突,或者至少不是相同的表+鏈組合(例如:(大寫)鏈中的nft規則可能與iptables等發生衝突)
ip filter INPUT
更多關於這裡的資訊:
從 iptables 遷移到 nftables - nftables wiki
使用 iptables-nft:混合 Linux 防火牆 - Red Hat
關於附加問題:
您的規則似乎允許基本客戶端使用(包括來自 LAN 的 SSH 訪問),儘管有一個重要例外:
udp sport 53 accept
將允許訪問系統的任何UDP 埠,只要“掃描”是從 UDP 源埠 53 進行的。
用這個更明智的規則替換它:
iif lo accept
允許本地通信暢通無阻(包括可能的本地 DNS 伺服器)。