nftable设置防火墙
nftable防火墙配置和常用命令,以后有需要可以查看。
设置默认允许,只接受允许的,其他丢弃。
#清空所有规则
sudo nft flush ruleset
#查看当前规则
sudo nft list ruleset
# 创建一个名为 'filter' 的表,使用 'inet' 家族(同时支持 IPv4 和 IPv6)
nft add table inet filter
# 在 'filter' 表中创建 'input' 链,绑定到 'input' 钩子,默认策略为接受
nft add chain inet filter input { type filter hook input priority 0 \; policy accept \; }
# 在 'filter' 表中创建 'output' 链,绑定到 'output' 钩子,默认策略为接受
nft add chain inet filter output { type filter hook output priority 0 \; policy accept \; }
#设置允许已经建立的链接
nft add rule inet filter input ct state established,related accept
#允许内部回环流量
sudo nft add rule inet filter input iif "lo" accept
# 允许ICMPv6中一些必需协议
nft add rule inet filter input icmpv6 type { 1,2,3,4, 129, 130,131,132,133, 134, 135, 136,143} accept
#限制ping的速率
nft add rule inet filter input icmpv6 type 128 limit rate 5/second accept
#允许时间同步,dns查询
nft add rule inet filter input udp sport { 53, 123 } accept
#限制SSH一分钟3次新增连接
sudo nft add rule inet filter input tcp dport 22 limit rate 3/minute accept
#允许http,https端口限制新增连接
sudo nft add rule inet filter input tcp dport { 80, 443 } limit rate 33/second accept
#允许http3端口限制新增连接
sudo nft add rule inet filter input udp dport 443 limit rate 33/second accept
#拒绝其他所有输入
nft add rule inet filter input drop
#允许所有输出
sudo nft add rule inet filter output accept
#保存配置
nft list ruleset > /etc/nftables.conf
#设置开机启动
sudo systemctl enable nftables
#重载配置
sudo systemctl restart nftables
#禁用开机自启
sudo systemctl disable nftables
/*
我这次用的是tencentos系统,然后发现配置文件的位置和之前的不一样,位置是/etc/sysconfig/nftables.conf
*/