firewalld
1 firewalld的开启
systemctl stop iptables
systemctl disable iptables
systemctl mask iptables
systemctl unmask firewalld
systemctl enable --now firewalld
切换至 firewalld 模式。
在rhel7中可以使用 firewall-config 开启图形界面进行管理。
rhel8中可以在firefox 中输入 localost:9090 进行web方式的管理。
2.关于firewalld的域
我们默认的域为 public
名称 | 内容 |
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的设定原理及数据存储
1 /etc/firewalld ##火墙配置目录
我们为火墙添加或端口或者服务的时候,就会自动更改这个文件
2 /lib/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 设定默认域
这时就会自动更改 /etc/fiewalld/firewalld.conf 文件:
firewall-cmd --get-services 查看所有可以设定的服务
当我们想添加一个不存在的服务时,我们更改配置文件如下:
重新加载后可以看出没有添加AAAA服务,因为他不存在,没有被 xml (可扩展标记语言)封装。
我们可以再 /lib/firewalld/service/ 下建立 AAAA 的封装,复制http的封装,做如下改动。
重启服务后过滤一下,发现AAAA服务已经添加。
firewall-cmd --permanent --remove-service=AAAA 永久移除服务
firewall-cmd --reload
AAAA服务已经被移除。
firewall-cmd --permanent --add-source=172.25.254.0/24 --zone=block 指定数据来源访问指定域
firewall-cmd --permanent --remove-source=172.25.254.0/24 --zone=block 删除自定域中的数据来源
firewall-cmd --reload
设定完成后发现活跃的域多了 block 。
我们在用 172.25.254.30主机ping 20主机时失败。
两个网络接口都在public 上,这时我们的 172.25.254.30 主机可以ping通20主机的172和192两个网段
firewall-cmd --permanent --remove-interface=ens224 --zone=public 删除指定域的网络接口
firewall-cmd --permanent --add-interface=ens224 --zone=block 添加指定域的网络接口
将ens224的网络接口移动到block后,我们再次用30主机访问20主机的两个网段:
都被拒绝,因为到达172网段时被拒,所以也到不了192网段。
firewall-cmd --permanent --change-interface=ens224 --zone=public 更改网络接口到指定域
ens224接口又被指定到了public域。
两个网段又可以ping通了。
5. firewalld的高级规则
firewall-cmd --direct --get-all-rules 查看高级规则
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.0/24 -p tcp --dport 22 -j ACCEPT
只准172.25.254.0网段的人在ssh本机的时候可以连接。
192网段连接失败:
172网段连接成功。
6.firewalld中的NAT
SNAT
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload 开启地址伪装功能。
然后用172网段连接192网段:
源地址转换成功,路由功能开启。
DNAT目的地地址转换
firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toaddr=172.25.254.30
firewall-cmd --reload
地址转换成功。