暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

135

系统防火墙-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

    非常感谢您读到这里!如果您觉得这篇文章对您有帮助,请不要忘记关注公众号。关注后,您将第一时间获得最新的AI、云计算、运维(Linux、数据库,容器等)技术,以及更多实用的技能干货。

    点击页面右上角的“关注”按钮,不错过任何精彩内容!

    扫码获取联系方式



文章转载自周同学带您玩AI,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论