nftables防火墙

nftables防火墙

更新在rhel8的最新技术。

与iptables相比较

  • iptables在没有使用也会占据内存空间,内置链链空间占用;nft则是使用什么开启什么
  • 内部的5个hook还是一样
  • 内存、性能消耗更小于iptables。不再需要修改内核,把iptables的各种命令集合做一个命令中

相关基础

nft簇:

统一了v4,v6数据包(ip和ip6簇)。当没有指定地址簇时,默认为ip

  • ip ipv4
  • ip6 ipv6
  • inet v4,v6
  • arp 地址解析协议(arp)地址
  • bridge 处理桥接数据包
基本链:

数据包的入口点,需要指定hook类型和优先级,相当于内置链。要自己创建

常规链:

不需要指定钩子类型和优先级,可以用来叫做跳转,从逻辑上对规则进行分类,类似于自定义链

nftables包

配置文件:/etc/sysconfig/nftables.conf,默认内容都是注释,使用哪个开启哪个

nft命令

nft [选项] 操作符 对象 簇 表 链 操作内容

选项
-c 		检查命令有效性,不会实际应用更改
-f file 	包含文件内容
-i 		从命令行读取输入
-j 		以json格式输出
-n 		指定一次后,以数字方式显示网络地址(默认)。指定两次以数字方式显示网络服务、端口。指定三次以数字方式显示协议,用户id和组id
-s 		省略规则集的有状态信息
-N 		将ip地址转为名称
-a 		显示规则句柄handle
-e 		显示已添加的内容
-I dir	添加目录到包含文件的搜索路径中,默认:/etc
--debug 等级 	添加调试,等级有:scanner、parser、eval、n
操作符:
  • 表操作: add、delete、list、flush
  • 链操作: add、delete、rename、list、flush、create
  • 规则: add、delete、inster
操作目标:
  • 对象: chain、table、rule
  • 链类型: filter、route、nat
  • 链钩子: hook
规则选项:
accept
drop
reject
queue		队列,发送包到用户空间进程,停止处理
continue	继续处理包
return		发送到调用的规则链进行处理
jump		跳跃,发送到指定的规则链进行处理,当完成时或执行了返回的声明,返回到调用的规则链
goto		转到,发送到指定的规则链进行处理,不返回到调用的规则链
limit		打到结束包的匹配限制,根据规则处理包
log			日志记录包,继续处理
安利:
例1:查看相关
#可以加 -nn 用于不解析ip地址和端口
#加 -a 用于显示 handles
nft list ruleset		列出所有规则
nft list tables 	# 列出所有表
nft list table filter 	# 列出ip簇的filter表
nft list table inet filter 	# 列出inet簇的filter表
nft list chain filter INPUT 	# 列出filter表input链
例2:添加自定义链
nft add table inet test_tab		#建test_tab链
nft delete table inet test_tab
nft add chain inet test_tab ts_chain	#建自定义链,也要关联hook才生效
nft add rule inet test_tab ts_chain tcp dport http reject	#添加到自定义链中,没有引用hook之前不会生效
例3:添加基本链
nft add chain inet test_tab ts_input {type filter hook input priority 0 \;}		基本链(也就是跟内置hook关联的)。priority为取整数值,可以是负数,较小的链优先处理
nft add rule inet test_tab ts_input tcp dport http reject
nft add rule inet test_tab ts_input ip saddr 1.1.1.10 reject
例4:插入规则

普通索引是0开始,与iptables一样,位置会变化

nft -a list chain inet test_tab ts_input

#handle也设置固定值,每个都一个固定不变的值
ndt -ae add rule inet test_tab ts_input handle 5 tcp dport 1000 accept
nft delete rule inet test_tab ts_input handle 5
例5:规则保存备份

重启后nft服务会自动读取改文件

vim /etc/sysconfig/nftables.conf
  include "/etc/mynft.nft"
  
nft list ruleset > /etc/mynft.nft
例6:手动加载规则文件
nft -f /etc/test.nft
例7:迁移iptables到nft
iptables-save > rule.iptb
iptables-restore-translate -f rule.iptb > rules.nft		#用工具转换成nft格式
nft -f rules.nft
posted @ 2023-11-27 14:44  suyanhj  阅读(276)  评论(0)    收藏  举报