Linux中netfilter火墙访问控制策略优化详解(下)—firewalld

Linux中的firewalld火墙策略优化

1、firewalld的设定原理及数据存储

firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现,也就是说firewalld和 iptables一样,他们的作用都是用于维护策略,而真正使用策略的是内核的数据包过滤器netfilter,只不过firewalld和iptables的结构以及使用方法不一样罢了。使用firewalld进行防火墙策略管理虽然不能像iptables一样精确设定,但操作较为简单。firewalld 和 iptables server 之间最本质的不同是:iptables在/etc/sysconfig/iptables中存储相关配置,而firewalld将配置存储在 火墙模块目录/lib/firewalld/火墙配置目录 /etc/firewalld/ 中的各种xml文件里。

2、firewalld的域

firewalld通过将网络划分成不同的区域,制定出不同区域之间的访问控制策略来控制不同程序区域间传送的数据流,具体划分区域如下:

区域区域策略描述
trusted (信任)接受所有的网络连接
home(家庭网络)仅仅接受家庭网络内经过选择的连接
work (工作网络)仅仅接受工作网络内经过选择的连接
public (公共网络)仅仅接受公共区域内经过选择的连接
dmz (非军事区)此区域内可公开访问有限内部网络,仅仅接收经过选择的连接
block (限制)拒绝所有网络连接
drop (丟弃)所有接收的网络数据包全部丢弃无任何回复
internal (内部网络)仅仅内部网络接受经过选择的连接
external (外部网络)即经过ipv4网络地址伪装转发的外部网络,只能接收经过选择的连接

3、火墙管理工具iptables—>firewalld的切换

实验步骤: 我们需要在双网卡虚拟主机westosa中关闭并冻结iptables服务,解锁(unmask)后开启firewalld服务
在这里插入图片描述

4、firewalld的管理命令

firewall-cmd --state 								##查看火墙状态
firewall-cmd --get-active-zones 					##查看当前火墙中生效的域
firewall-cmd --get-default-zone 					##查看默认域
firewall-cmd --list-all 							##查看默认域中的火墙策略
firewall-cmd --list-all --zone=work 				##查看指定域的火墙策略
firewall-cmd --set-default-zone=trusted 			##设定默认域
firewall-cmd --get-services 						##查看所有可以设定的服务

firewall-cmd --permanent --remove-service=cockpit 	##移除服务(需要刷新火墙使设定生效)
firewall-cmd --reload
 					
firewall-cmd --permanent --add-source=172.25.254.0/24 --zone=block 
firewall-cmd --reload								##指定数据来源访问指定域(需要刷新火墙使设定生效)
 
firewall-cmd --permanent --remove-source=172.25.254.0/24 --zone=block ##删除指定域中的数据来源
firewall-cmd --permanent --remove-interface=ens224 --zone=public 	  ##删除指定域的网络接口
firewall-cmd --permanent --add-interface=ens224 --zone=block          ##添加指定域的网络接口
firewall-cmd --permanent --change-interface=ens224 --zone=public 	  ##更改网络接口到指定域

实验步骤:
1)查看火墙状态显示火墙正在运行,查看默认域中的火墙策略
在这里插入图片描述
2)安装并启动httpd服务,在httpd服务的默认共享位置/var/www/html编写默认发布文件index.html,此时在33网段外网主机westosb和254网段内网真实主机中都无法访问双网卡主机westosa中的httpd服务
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
查看默认域中的火墙策略,此时默认域为public,设定默认域为trusted即接受所有网络连接,此时在33网段外网主机westosb和254网段内网真实主机中都可以成功访问双网卡主机westosa中的httpd服务,看到默认发布文件index.html
在这里插入图片描述
在这里插入图片描述
3)此时默认域为trusted即接受所有网络连接,在真实主机中ssh远程连接虚拟主机westosa可以成功登录
在这里插入图片描述
设定默认域为block,查看默认域中的火墙策略,显示拒绝所有网络连接,此时真实主机ssh远程连接虚拟主机westosa提示拒绝连接
在这里插入图片描述
在这里插入图片描述
4)在火墙配置目录/etc/firewalld下的主配置文件firewalld.conf中记录了当前火墙的默认域,查看该配置文件可以看到默认域为block,设定默认域为public,再次查看该配置文件可以看到默认域变为public
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
说明: firewalld的默认区域是public,firewalld默认提供了public.xml、trusted.xml等9个zone域模块配置文件,它们都保存在/lib /firewalld/zones/目录下
在这里插入图片描述
5)在火墙配置目录/etc/firewalld下的zone/ public.xml文件中,记录了firewalld默认区域public的火墙策略,在防火墙中移除ssh服务后查看public.xml文件,可以看到文件中没有ssh服务的策略语句;在防火墙中重新添加该服务后再次查看该文件,可以看到文件中多了一条ssh服务的策略语句
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
6)查看火墙的默认域为public,使用–list-all参数查看的是默认域中的火墙策略,当需要查看指定域的火墙策略时需要加–zone参数进行指定
在这里插入图片描述
7)查看防火墙中所有可以设定的服务,防火墙中所有可以设定的服务模块都以.xml的文件格式存放在/usr/lib/firewalld/services目录中
在这里插入图片描述
在防火墙中所有可以设定的服务中查找westos服务显示无该服务,这是因为在/usr/lib/firewalld/services目录中没有westos服务的.xml文件,我们可以复制/usr/lib/firewalld/services目录下已有ssh服务的.xml文件,修改.xml文件中的服务名称并为其提供默认使用端口得到westos服务的.xml文件,重启firewalld服务后再次在防火墙中所有可以设定的服务中查找westos服务可以成功查找到
在这里插入图片描述
在这里插入图片描述
此时我们可以在防火墙中添加westos服务,刷新火墙使设定生效后查看火墙策略可以看到服务添加成功;接着移除westos服务,刷新火墙使设定生效后查看火墙策略可以看到服务移除成功
在这里插入图片描述
8)此时在33网段外网主机westosb和254网段内网真实主机中都无法访问双网卡主机westosa中的httpd服务
在这里插入图片描述
在防火墙中指定数据来源为172.25.33.0/24网段的访问请求访问trusted域,即接受所有来自172.25.33.0/24网段的访问请求,刷新火墙使设定生效,此时33网段外网主机westosb可以成功访问双网卡主机westosa中的httpd服务即看到默认发布文件index.html,而254网段内网真实主机无法访问双网卡主机westosa中的httpd服务
在这里插入图片描述
在这里插入图片描述
9)查看默认域public中的火墙策略,此时public域中有ens10、ens3两个网络接口,删除public域中的ens10接口并将其添加到trusted域中,刷新火墙使设定生效
在这里插入图片描述
再次查看默认域public中的火墙策略,此时public域中只有ens3一个网络接口,查看trusted域中的火墙策略,此时trusted域中有ens10网络接口
在这里插入图片描述
更改ens10接口到public域中,查看默认域public中的火墙策略,此时public域中有ens10、ens3两个网络接口
在这里插入图片描述

5、firewalld的高级规则

firewall-cmd --direct --get-all-rules :查看高级规则

实验步骤:
查看防火墙高级规则显示没有相关策略,这里我们以httpd服务为例进行高级规则的设定。在防火墙中添加http服务,刷新火墙使设定生效,接着设定高级规则,即在filter表的INPUT链中添加拒绝所有不是来源于172.25.254.33主机的通过80端口(httpd服务默认使用22端口)、使用tcp协议的访问请求的策略,即只有172.25.254.33主机可以通过80端口访问双网卡主机的httpd服务,此时33网段的外网主机westosb访问westosa的httpd服务提示拒绝连接
在这里插入图片描述在这里插入图片描述
注意: direct命令进行高级规则设定时,必须先开启对应的服务,如果服务本身不被允许,相应的高级规则设定后仍无法生效

6、firewalld中的NAT地址转换

a、SNAT源地址转换

实验步骤:
1)使用firewalld进行SNAT源地址转换时,只需要开启火墙的地址伪装功能即可,刷新火墙使设定生效
在这里插入图片描述
2)此时在33网段的虚拟机westosb中可以ping通254网段的真实主机
在这里插入图片描述

b、DNAT目的地地址转换

实验步骤:
1)在防火墙中添加策略,将所有通过22端口输入、使用tcp协议的访问请求数据包转发给虚拟机westosb172.25.33.233的22端口
注意: 进行DNAT转换时,防火墙的地址伪装功能必须打开
在这里插入图片描述
2)此时在真实主机中远程连接westosa连接到的是33网段的虚拟机westosb
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值