1. 程式人生 > >簡單明了的nftables防火墻配置(arch為例)

簡單明了的nftables防火墻配置(arch為例)

設置 包含 hab 資料 監聽 php style lis 一個

Arch Linux的內核已經包含了netfilter包過濾框架。

/etc/nftables.conf默認包含著一個簡單的防火墻設置,但過於簡單,

現在重新編寫nft的設置(這裏列舉的規則適合個人電腦,服務器或是其它的機器可以參考其它資料配置更加適合的規則)。


# nft list ruleset 檢查已經寫了的過濾規則

# nft flush ruleset 清除當前的ruleset

# nft add table inet filter 創建一個名為“inet filter”的表

創建幾條重要的鏈

# nft add chain inet filter input { type filter hook input priority 0 \; policy drop \; }\

# nft add chain inet filter forward { type filter hook forward priority 0 \; policy drop \; }

# nft add chain inet filter output { type filter hook output priority 0 \; policy accept \; }

# nft add chain inet filter TCP
# nft add chain inet filter UDP
編寫幾條重要的規則

# nft add rule inet filter input ct state related,established accept

# nft add rule inet filter input iif lo accept # nft add rule inet filter input ct state invalid drop # nft add rule inet filter input ip protocol icmp icmp type echo-request ct state new accept # nft add rule inet filter input ip protocol udp ct state new jump UDP # nft add rule inet filter input ip protocol tcp tcp flags \& \(fin\|syn\|rst\|ack\) == syn ct state new jump TCP # nft add rule inet filter input ip protocol udp reject # nft add rule inet filter input ip protocol tcp reject with tcp reset # nft add rule inet filter input counter reject with icmp type prot-unreachable

若需要監聽80或443端口(其它端口參照這兩個例子即可),可以添加一下規則
# nft add rule inet filter TCP tcp dport 80 accept
# nft add rule inet filter TCP tcp dport 443 accept

# nft list ruleset > /etc/nftables.conf 將剛寫好的ruleset保存到/etc/nftables.conf文件裏。
最後,用# lsmod | grep ‘^nf‘查看nft跟哪些modules有關。
創建一個文件/etc/modules-load.d/nftables.conf,並將這些模塊名字加入到該文件。

參考資料,https://wiki.archlinux.org/index.php/Nftables

簡單明了的nftables防火墻配置(arch為例)