因为刚练习完iptables的内容,所以此处需要先打开firewalld
1 firewalld的开启
systemctl stop iptables
systemctl disable iptables
systemctl mask iptables
systemctl unmask firewalld
systemctl enable --now firewalld
2.关于firewalld的域
trusted | 接受所有的网络连接 |
---|---|
home | 用于家庭网络,允许接受ssh mdns ipp-client samba-client dhcp-client |
work | 工作网络 ssh ipp-client dhcp-client |
public | 公共网络 ssh dhcp-client |
dmz | 军级网络 ssh |
block | 拒绝所有 |
drop | 丢弃 ,所有数据全部丢弃无任何回复 |
internal | 内部网络 ssh mdns ipp-client samba-client dhcp-client |
external | ipv4网络地址伪装转发 sshd |
练习:修改域
3.关于firewalld的设定原理及数据存储
- 火墙配置目录: /etc/firewalld
- 火墙模块目录: /lib/firewalld
练习:在火墙服务中添加http(更推荐之前学过的用一条命令直接添加的方法)
- 初始状态(服务中不包含http)
- 切换目录,并查看
public.xml
文件
- 新增一行,添加http服务
- 重启后进行查看,此时添加成功了
练习2:切换到trusted域后再次添加 - 初始状态
- 使用命令直接添加
- 切换域后,会出现
trusted.
文件
说明其存储方式都是模块化的存储方式,当我们使用命令时,系统自动生成了可扩展标记语言里面的文件。
练习3:将http改为lyq
我们所使用的、别人预先放置的xml脚本就在/lib/firewalld中 firewall-cmd --get-services
- 切换目录
- 复制
- 修改端口为8080
- 重启服务后进行添加验证
4.firewalld的管理命令
firewall-cmd(后面的- -之间应该是没有空格的,是因为CSDN中的显示问题。练习的时候--
)
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.17 --zone=block指定数据来源访问指定域
firewall-cmd --reload
firewall-cmd --permanent --remove-source=172.25.254.17 --zone=block 删除自指定域中的数据来源
firewall-cmd --permanent --remove-interface=enp1s0 --zone=public 删除指定域的网络接口
firewall-cmd --permanent --add-interface=enp1s0 --zone=block 添加指定域的网络接口
firewall-cmd --permanent --change-interface=enp1s0 --zone=public 更改网络接口到指定域
firewall-cmd
练习1:常见的信息查看
练习2:移除服务
使用--permanent
表示永久生效,因为直接修改的是/etc/firewall/zones/public.xml
中的文件。如果不使用,在reload之后又会恢复到原来的状态
练习3:指定数据来源访问指定域
- 初始状态下真机能够连接workstation
- 在workstation中设置172.25.254.17(真机ip)为黑名单
- 使用172.25.254.17(真机ip)连接workstation
- 删除该数据来源
- 再次尝试ssh,连接成功
练习4:对指定域的网络接口实现删除、增加与修改(使用rhel8双网卡主机完成) firewall-cmd --remove-interface=enp6s0 --zone=public
删除
firewall-cmd --add-interface=enp6s0 --zone=block
将enp6s0添加到block中
firewall-cmd --change-interface=enp6s0 --zone=public
修改
5.firewall中的高级规则
firewall-cmd --direct --get-all-rules #查看高级规则
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.17 -p tcp --dport 22 -j ACCEPT #添加
firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.254.33 -j REJECT #删除
练习1:设定只允许某服务访问
真机:172.25.254.17
rhel8:172.25.254.33
workstation:172.25.254.22
- 初始状态(真机和rhel8都可连接workstation)
- 设置workstation中拒绝rhel8(33)的ssh接入
- 此时结果表明rhel8无法ssh连接,真机断开连接重新连后,还是能正常连接
firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.254.33 -j REJECT
删除
删除后可以rhel8就可正常连接了
6.firewall中的NAT
SNAT
firewall-cmd --permanent --add-masquerade #在双网卡主机中打开,workstation就可访问外网。操作结果与iptables中练习的一致
firewall-cmd --reload
DNAT
firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toaddr=172.25.254.17 #在workstation(22)中进行设置,使用rhel8(33)连接,最终连接位置是真机(17)
firewall-cmd --reload