系统防火墙-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/
  2. 确认复制成功:

    [root@centos ~]# ls /etc/firewalld/services/
    https.xml
  3. 编辑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>
  4. 重新加载防火墙配置:

    [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/
  2. 编辑samba.xml文件,将Samba端口修改为14500

    cat /etc/firewalld/services/samba.xml
    <service>
      <short>Samba</short>
      <!-- 省略部分 -->
      <port protocol="tcp" port="14500"/>
    </service>
  3. 重新加载防火墙配置:

    [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>
  2. 执行以下命令实现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>
  2. 编辑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>
  3. 重新加载防火墙配置:

    [root@centos ~]# firewall-cmd --reload
    success

本文由mdnice多平台发布


逼格高的汤圆
7 声望2 粉丝