CentOS 7/8 预装的新型防火墙firewalld配置详解,你会用吗( 二 )


在 /usr/lib/firewalld/services/ 目录中,还保存了另外一类配置文件,每个文件对应一项具体的网络服务,如 ssh 服务等.
与之对应的配置文件中记录了各项服务所使用的 tcp/udp 端口,在最新版本的 firewalld 中默认已经定义了 70+ 种服务供我们使用.
当默认提供的服务不够用或者需要自定义某项服务的端口时,我们需要将 service 配置文件放置在 /etc/firewalld/services/ 目录中.
service 配置的好处显而易见:
第一,通过服务名字来管理规则更加人性化,
第二,通过服务来组织端口分组的模式更加高效,如果一个服务使用了若干个网络端口,则服务的配置文件就相当于提供了到这些端口的规则管理的批量操作快捷方式 。
假如你服务器的ftp不使用默认端口,默认ftp的端口21改为1121,但想通过服务的方式操作防火墙,代码如下:
复制模版到/etc,以便修改和调用
[root@zcwyou ~]# cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services/修改模版配置
[root@zcwyou ~]# vim /etc/firewalld/services/ftp.xml把21改为1121
[root@zcwyou ~]# vim /etc/firewalld/zones/public.xmlpublic为默认zone,所以要编辑这个,增加一行,以下内容
<service name="ftp"/>重新加载防火墙配置
[root@zcwyou ~]# firewall-cmd --reload4. 安装、启用、关闭firewalld
4.1 安装firewalld
[root@zcwyou ~]# yum install firewalld firewall-config4.2 启动服务
[root@zcwyou ~]# systemctl start firewalld4.3 开机自动启动服务
[root@zcwyou ~]# systemctl enable firewalld4.4 查看状态
[root@zcwyou ~]# systemctl status firewalld[root@zcwyou ~]# firewall-cmd --state4.5 关闭服务
[root@zcwyou ~]# systemctl stop firewalld4.6 取消开机启动
[root@zcwyou ~]# systemctl disable firewalld4.7 弃用FirewallD防火墙,改用iptables
你也可以关闭目前还不熟悉的FirewallD防火墙,而使用iptables,但不建议:
[root@zcwyou ~]# yum install iptables-services[root@zcwyou ~]# systemctl start iptables[root@zcwyou ~]# systemctl enable iptables4.8 查看版本
[root@zcwyou ~]# firewall-cmd --version4.9 查看帮助
[root@zcwyou ~]# firewall-cmd --help4.10 显示状态
[root@zcwyou ~]# firewall-cmd --state4.11 查看活动区域信息
[root@zcwyou ~]# firewall-cmd --get-active-zones4.12 查看XX接口所属区域
[root@zcwyou ~]# firewall-cmd --get-zone-of-interface=XX4.13 拒绝所有包
[root@zcwyou ~]# firewall-cmd --panic-on4.14 取消拒绝状态
[root@zcwyou ~]# firewall-cmd --panic-off4.15 查看是否拒绝
[root@zcwyou ~]# firewall-cmd --query-panic4.16 查看firewalld是否开启
[root@zcwyou ~]# systemctl is-enabled firewalld4.17 重启加载防火墙
以 root 身份输入以下命令,重新加载防火墙,并不中断用户连接,即不丢失状态信息:
[root@zcwyou ~]# firewall-cmd --reload4.18 完全重启防火墙
以 root 身份输入以下命令,重新加载防火墙并中断用户连接,即丢弃状态信息:
[root@zcwyou ~]# firewall-cmd --complete-reload注意:通常在防火墙出现严重问题时,这个命令才会被使用 。比如,防火墙规则是正确的,但却出现状态信息问题和无法建立连接 。
firewall-cmd --reload与firewall-cmd --complete-reload两者的区别就是第一个无需断开连接,就是firewalld特性之一动态添加规则,第二个需要断开连接,类似重启服务
4.19 显示默认区域
[root@zcwyou ~]# firewall-cmd --get-default-zone4.20 添加接口到区域
将接口添加到XX区域,如果不指定区域,则添加到默认区域
[root@zcwyou ~]# firewall-cmd --zone=XX --add-interface=eth0永久生效再加上--permanent 然后reload防火墙
4.21 设置默认区域,立即生效无需重启
[root@zcwyou ~]# firewall-cmd --set-default-zone=XX4.22 查看XX区域打开的端口
[root@zcwyou ~]# firewall-cmd --zone=XX --list-ports4.23 查看XX区域加载的服务
[root@zcwyou ~]# firewall-cmd --zone=XX --list-services4.24 临时加一个端口到XX区域
[root@zcwyou ~]# firewall-cmd --zone=XX --add-port=8080/tcp若要永久生效方法加参数--permanent
4.25 打开一个服务,类似于将端口可视化,服务需要在配置文件中添加,/etc/firewalld 目录下有services文件夹,查看其它的xml文件以及参考前面说方法
[root@zcwyou ~]# firewall-cmd --zone=work --add-service=smtp4.26 移除服务
[root@zcwyou ~]# firewall-cmd --zone=work --remove-service=smtp4.27 显示支持的区域列表
[root@zcwyou ~]# firewall-cmd --get-zones4.28 列出全部区域启用的特性


推荐阅读