基础配置(全).note

noteId: D5D5707D683240CF9BD67FF8227B8FB8 · 原始路径:/ALL/Linux - A模块/服务配置/防火墙 合集/nftables 防火墙/基础配置(全).note · 图片:7 · 附件待处理:0

 
·前言:
nftables 和 iptables 之间使用同一个防火墙,如果不会配置 nftables,可以只安装nftables,然后使用iptables进行配置即可
 
 
一、配置 nftables:
·安装 软件包:
apt install -y nftables iptables
 
 
1、创建 nftables 表 和 链:
 
(1)照抄模板:
 
· filter 表默认就有,在 nftables 的 /etc/nftables.conf 配置文件中:
但是需要将 inet 改为 ip
vim /etc/nftables.conf
 
systemctl restart nftables    //重启nftables,让nftables读取 /etc/nftables.conf 配置文件
systemctl enable nfatbles    //将 nftables 配置为开机自启
 
 
 
(2)(不建议)手动创建:
·nftables 创建 表和 链:
nft add table ip filter    //filter表(创建表时,有没有 ip 都不影响,会自动补全)
nft add chain ip filter input    //INPUT链
nft add chain ip filter output    //OUTPUT链
nft add table ip nat     //nat表(创建表时,有没有 ip 都不影响,会自动补全)
nft add chain ip nat prerouting   //PREROUTING链
nft add chain ip nat postrouting    //POSTROUTING链
 
 
2、添加一个允许条目
(1)查看 nftables 配置案例:
apt install -y man
man nftables
 
(2)添加一个条目,允许 TCP 80端口进行访问:
# nft add rule [表名称] [链名称] [协议] dport [端口] [accept/drop]
nft add rule inet filter INPUT tcp dport 80 accept
 
(3)查看 nftables 条目:
nft -a list ruleset    //查看全部条目
nft list table inet filter    //查看指定表的条目(指定的条目名称必须完全相同)
 
 
(4)添加一个条目,允许 源地址为 172.16.0.0/16 的地址访问:
nft add rule inet filter INPUT ip saddr 172.16.0.0/16 accept
 
(5)添加一个条目,允许 源地址为 192.168.123.123 的机器访问:
nft add rule inet filter INPUT ip saddr 192.168.123.123 accept
 
(6)添加一个条目,允许 目标地址为 100.100.100.100 的数据包通过:
nft add rule inet filter INPUT ip daddr 100.100.100.100 accept
 
3、添加一个拒绝条目:
 
(1)添加一个条目,拒绝 目标地址为 192.168.100.100 的数据包通过:
 
nft add rule inet filter INPUT ip daddr 192.168.100.100 drop
 
 
二、添加 nat 条目:
只能够拥有一张 nat 表
 
(1)先创建 nat 表和链:(建议使用 iptables 来创建nat表)
·iptables 创建:
随意创建一个条目,让iptables自动进行创建nat表和链
apt install -y iptables
iptables -t nat -A POSTROUTING -s 1.0.0.1 -j SNAT --to 1.1.1.1
iptables -t nat -A PREROUTING -d 1.0.0.1 -j DNAT --to 1.1.1.1
 
·nft 创建:
nft add table ip nat
nft add chain ip nat PREROUTING
nft add chain ip nat POSTROUTING
 
 
(2)添加 SNAT:
nft add rule ip nat POSTROUTING ip saddr 1.1.1.1 snat to 123.123.123.123    //将 源地址为 1.1.1.1 的数据包 转换为 123.123.123.123
 
 
(3)添加 DNAT:
将目标地址为 192.168.1.1:80 的数据包,目标地址转换为:192.168.1.100:8888
·仅转换地址:
nft add ip nat PREROUTING ip daddr 200.200.200.200 dnat to 131.131.131.131
 
·转换地址的同时转换端口(或者仅转换端口)
nft add rule ip nat PREROUTING dnat tcp dport map { 80 : 192.168.1.1,8888 : 192.168.1.100 }
 
 
 
(4)查看 nftables 防火墙条目:
nft -a list ruleset    //查看全部条目
nft list table filter    //查看指定表的条目
nft list table filter INPUT
 
 
 
三、删除 nftables 防火墙(条目/表、链):
 
1、删除规则:
(1)先查看要删除的条目的‘handle’
nft -a list ruleset
nft list table ip nat
 
 
(2)删除 nftables 条目:
与添加条目类似,只需要将 add 替换成 delete即可
# 使用 handle,或者将其完整写一遍
nft delete rule inet ip filter INPUT handle 3    
nft delete rule inet nat PREROUTING handle 7
# 再次查看:
删除成功:
 
 
 
(3)删除 表、链:
·删除前查看:
nft -a list ruleset
 
 
·删除 inet nat 表:
nft delete table inet nat     //删除表时需要写全称
# 再次查看:
成功删除:
 
 
·删除 链:
nft delete chain ip filter SDF
# 再次查看:
删除成功:
 
2、清除 nftables规则:
nft flush ruleset
 
 
 
 
 
四、添加 允许全部、拒绝全部的规则,添加 默认规则:
 
1、添加 允许、拒绝全部:
 
 
 
2、添加 默认规则:
 
 
 
五、配置 保存规则,且重启不失效:
 
1、保存规则:
 
(1)保存规则:
nft list ruleset > /etc/nftables.conf
 
(2)手动引入规则:
nft -f /etc/nftables.conf
 
 
(3)配置 重启自动引入规则:
systemctl enable nftables    # 将 nftables设置为开机自启动即可