问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

彻底掌握CentOS Firewalld命令:从基础到进阶

创作时间:
作者:
@小白创作中心

彻底掌握CentOS Firewalld命令:从基础到进阶

引用
CSDN
1.
https://m.blog.csdn.net/zgt_certificate/article/details/140242853

本文将详细介绍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服务

  1. 复制
    https.xml

    /etc/firewalld/services/
    目录下:
[root@centos ~]# cp /usr/lib/firewalld/services/https.xml /etc/firewalld/services/
  1. 确认复制成功:
[root@centos ~]# ls /etc/firewalld/services/
https.xml
  1. 编辑
    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>
  1. 重新加载防火墙配置:
[root@centos ~]# firewall-cmd --reload
success

4.2 例二:修改防火墙Samba的端口方法

  1. 复制
    samba.xml
    文件到
    /etc/firewalld/services/
[root@centos ~]# cp /usr/lib/firewalld/services/samba.xml /etc/firewalld/services/
  1. 编辑
    samba.xml
    文件,将Samba端口修改为
    14500
cat /etc/firewalld/services/samba.xml
<service>
  <short>Samba</short>
  <!-- 省略部分 -->
  <port protocol="tcp" port="14500"/>
</service>
  1. 重新加载防火墙配置:
[root@centos ~]# firewall-cmd --reload
success

4.3 例三:指定IP访问http端口

  1. 编辑
    /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>
  1. 执行以下命令实现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

  1. 复制其他模板,添加新文件
    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>
  1. 编辑
    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>
  1. 重新加载防火墙配置:
[root@centos ~]# firewall-cmd --reload
success
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号