彻底掌握CentOS Firewalld命令:从基础到进阶
彻底掌握CentOS Firewalld命令:从基础到进阶
本文将详细介绍CentOS系统中Firewalld防火墙的常用命令和配置方法,包括基础命令、服务管理、配置文件编辑等多个方面。通过本文的学习,读者将能够掌握Firewalld防火墙的基本使用方法,能够根据实际需求进行相应的配置和管理。
系统防火墙-Firewalld必备命令
1. 重新加载防火墙
1.1 重新加载防火墙而不中断用户连接
使用firewall-cmd --reload
命令重新加载防火墙规则,不中断用户连接,即不丢失状态信息:
[root@centos ~]# firewall-cmd --reload
success
1.2 重新加载防火墙并中断用户连接
使用firewall-cmd --complete-reload
命令重新加载防火墙规则,并中断用户连接,即丢弃状态信息:
[root@centos ~]# firewall-cmd --complete-reload
success
注意: 通常在防火墙出现严重问题时,才会使用complete-reload
命令,例如防火墙规则是正确的,但却出现状态信息问题和无法建立连接。
2. 服务管理命令
2.1 启用默认区域中的ftp服务
firewall-cmd --add-service=ftp
2.2 禁用区域中的某种服务
firewall-cmd [--zone=<zone>] --remove-service=<service>
示例:禁用home区域中的ftp服务
firewall-cmd --zone=home --remove-service=ftp
3. Firewalld服务配置
3.1 服务配置文件路径
在/usr/lib/firewalld/services/
目录中,保存了daemon文件,每个文件对应一项具体的网络服务,如samba服务等。相应的配置文件中记录了各项服务所使用的tcp/udp端口,当默认提供的服务不够用或者需要自定义某项服务的端口时,我们需要将service配置文件放置在/etc/firewalld/services/
目录中。
每加载一项已设置好的service配置意味着开放了对应的端口访问。
注意: 请勿修改/usr/lib/firewalld/services/
,只有/etc/firewalld/services/
的文件可以被编辑。
4. 配置文件示例
以下示例以系统自带的public
zone为例子。
4.1 例一:开放443端口供外网访问https服务
- 复制
https.xml
到/etc/firewalld/services/
目录下:
[root@centos ~]# cp /usr/lib/firewalld/services/https.xml /etc/firewalld/services/
- 确认复制成功:
[root@centos ~]# ls /etc/firewalld/services/
https.xml
- 编辑
public.xml
文件,添加https服务:
cat /etc/firewalld/zones/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
<service name="dhcpv6-client"/>
<service name="ssh"/>
<service name="https"/> <!-- 这行是后加的,要匹配 /etc/firewalld/services/https.xml 文件名 -->
</zone>
- 重新加载防火墙配置:
[root@centos ~]# firewall-cmd --reload
success
4.2 例二:修改防火墙Samba的端口方法
- 复制
samba.xml
文件到/etc/firewalld/services/
:
[root@centos ~]# cp /usr/lib/firewalld/services/samba.xml /etc/firewalld/services/
- 编辑
samba.xml
文件,将Samba端口修改为14500
:
cat /etc/firewalld/services/samba.xml
<service>
<short>Samba</short>
<!-- 省略部分 -->
<port protocol="tcp" port="14500"/>
</service>
- 重新加载防火墙配置:
[root@centos ~]# firewall-cmd --reload
success
4.3 例三:指定IP访问http端口
- 编辑
/etc/firewalld/zones/public.xml
,限制只允许特定IP访问HTTP服务:
cat /etc/firewalld/zones/public.xml
<zone>
<short>Public</short>
<!-- 省略部分 -->
<rule family="ipv4">
<source address="192.168.100.100"/>
<service name="http"/>
<accept/>
</rule>
</zone>
- 执行以下命令实现IP和端口的限制:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.100.100" port protocol="tcp" port="80" accept'
firewall-cmd --reload
4.4 例四:添加自定义服务
添加9090端口为新的Service
- 复制其他模板,添加新文件
9090.xml
:
cat /etc/firewalld/services/9090.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>9090Test</short>
<description>此处为文字说明</description>
<port protocol="tcp" port="9090"/>
</service>
- 编辑
public.xml
文件,加入相应的Server:
cat /etc/firewalld/zones/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
<service name="dhcpv6-client"/>
<service name="ssh"/>
<service name="9090"/> <!-- 这行是后加的,要匹配 /etc/firewalld/services/9090.xml 文件名 -->
</zone>
- 重新加载防火墙配置:
[root@centos ~]# firewall-cmd --reload
success