一、Firewalld概述
1.firewalld概念
动态防火墙后台程序 firewalld 提供了一个 动态管理的防火墙, 用以支持网络 “ zones” , 以分配对一个网络及其相关链接和界面一定程度的信任。它具备对 IP v4 和 IP v6 防火墙设置的支持。它支持以太网桥 , 并有分离运行时间和永久性配置选择。它还具备一个通向服务或者应用程序以直接增加防火墙规则的接口
系统提供了图像化的配置工具 firewall-config 、 system-config-firewall, 提供命令行客户端 firewall-cmd, 用于配置 firewalld 永久性或非永久性运行时间的改变 : 它依次用iptables 工具与执行数据包筛选的内核中的 Netfilter 通信。
2.firewalld和iptables service
firewalld 和 iptables service 之间最本质的不同是 :
- iptables service 在 /etc/sysconfig/iptables 中储存配置
- firewalld 将配置储存在 /usr/lib/firewalld/ 和/etc/firewalld/ 中的各种 XML 文件里 .
3.firewalld域
二、Firewalld的配置
1.firewalld的启用
[root@client ~]# yum install firewalld firewall-config -y ##安装firewalld服务
[root@client ~]# systemctl start firewalld
[root@client ~]# systemctl enable firewalld.service ##开启firewalld
[root@client ~]# systemctl stop iptable
[root@client ~]# systemctl disable iptable ##关闭iptables
[root@client ~]# firewall-config
2.防火墙的管理
firewall-cmd --state | 查看当前域的状态 |
firewall-cmd --get-active-zones | 查看火墙当前生效的域 |
firewall-cmd --get-default-zone | 查看默认的域 |
firewall-cmd --get-zones | 查看所有的域 |
firewall-cmd --zone=public --list-all | 查看public域里面的信息 |
firewall-cmd --zone=block --list-all | 查看block域里面的信息 |
firewall-cmd --get-services | 查看firewall管控的所有服务 |
firewall-cmd --list-all-zones | 列出所有域 |
firewall-cmd --list-all | 列出当前域的所有信息 |
firewall-cmd --set-default-zone=trusted | 设置默认域为trusted |
3.防火墙默认域的修改
[root@client ~]# yum install httpd -y ##安装httpd服务
[root@client ~]# systemctl start httpd ##开启httpd服务
[root@client ~]# echo hello > /var/www/html/index.html ##编辑默认文件
[root@client ~]# firewall-cmd --get-default-zone ##查看默认域
测试:
[root@client ~]# firewall-cmd --set-default-zone=trusted
测试:
4.对指定ip或网端的控制
[root@client ~]# firewall-cmd --list-all
[root@client ~]# firewall-cmd --list-interfaces
[root@client ~]# firewall-cmd --get-zone-of-interface=eth1
[root@client ~]# firewall-cmd --get-zone-of-interface=eth0
[root@client ~]# firewall-cmd --change-interface=eth0 --zone=trusted ##若eth0的默认域为trusted,则不用执行该命令
[root@client ~]# firewall-cmd --get-zone-of-interface=eth0
[root@client ~]# firewall-cmd --remove-interface=eth0 --zone=trusted ##删除eth0的trusted域
[root@client ~]# firewall-cmd --get-zone-of-interface=eth0
[root@client ~]# firewall-cmd --add-interface=eth0 --zone=public
[root@client ~]# firewall-cmd --get-zone-of-interface=eth0
- 命令添加
[root@client ~]# firewall-cmd --add-source=172.25.254.168 --zone=trusted ##把168的默认域设置为trusted域
[root@client ~]# firewall-cmd --list-all --zone=trusted
[root@client ~]# systemctl restart firewalld.service
[root@client ~]# firewall-cmd --permanent--add-source=172.25.254.168 --zone=trusted ##给168主机永久添加trusted域
[root@client ~]# firewall-cmd --reload ##重新加载防火墙配置
[root@client ~]# systemctl restart firewalld
[root@client ~]# firewall-cmd --list-all --zone=trusted
[root@client ~]# firewall-cmd --remove-source=172.25.254.62 --zone=trusted
- 文本添加
[root@client ]# cd /etc/firewalld/zones
[root@client zones]# ls
[root@client zones]# vim public.xml
[root@client zones]# systemctl restart firewalld
[root@client zones]# firewall-cmd --list-all
5.端口的修改
[root@client zones]# firewall-cmd --add-port=8080/tcp --zone=public
6.firewalld支持服务的删除
- 临时性删除
[root@client zones]# firewall-cmd --remove-service=ssh
[root@client zones]# firewall-cmd --list-all
[root@client zones]# firewall-cmd --reload
[root@client zones]# firewall-cmd --list-all
- 永久性删除
[root@client zones]# firewall-cmd --permanent --remove-service=ssh
[root@client zones]# firewall-cmd --reload
[root@client zones]# firewall-cmd --list-all ##删除后ssh服务将无法使用