温馨提示×

centos防火墙规则怎么设置有效

小樊
70
2025-06-30 12:09:10
栏目: 智能运维

在CentOS系统中,设置有效的防火墙规则主要通过使用FirewallD工具来实现。以下是设置CentOS防火墙规则的基本步骤:

安装FirewallD

如果你的CentOS系统还没有安装FirewallD,可以使用以下命令进行安装:

sudo yum install firewalld

启动和启用FirewallD服务

安装完成后,启动firewalld服务并设置为开机自启:

sudo systemctl start firewalld
sudo systemctl enable firewalld

查看当前防火墙状态

你可以使用以下命令查看当前的防火墙状态和活动区域:

sudo firewall-cmd --state
sudo firewall-cmd --get-active-zones

添加防火墙规则

你可以添加各种类型的防火墙规则,例如允许或拒绝特定的端口、服务或IP地址。

  • 允许特定端口:例如,允许TCP端口80和443:

    sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
    sudo firewall-cmd --permanent --zone=public --add-port=443/tcp
    
  • 允许特定服务:例如,允许HTTP和HTTPS服务:

    sudo firewall-cmd --permanent --zone=public --add-service=http
    sudo firewall-cmd --permanent --zone=public --add-service=https
    
  • 允许特定IP地址:例如,允许来自特定IP地址的流量:

    sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept'
    

重新加载防火墙配置

添加或修改规则后,需要重新加载防火墙配置以使更改生效:

sudo firewall-cmd --reload

查看防火墙规则

你可以查看当前的防火墙规则:

sudo firewall-cmd --list-all

删除防火墙规则

如果你需要删除某个规则,可以使用以下命令:

  • 删除特定端口

    sudo firewall-cmd --permanent --zone=public --remove-port=80/tcp
    
  • 删除特定服务

    sudo firewall-cmd --permanent --zone=public --remove-service=http
    
  • 删除特定IP地址规则

    sudo firewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.1.100" accept'
    

停止和禁用firewalld

如果你不再需要firewalld服务,可以停止并禁用它:

sudo systemctl stop firewalld
sudo systemctl disable firewalld

高级配置

  • 区域管理:查看所有区域:

    sudo firewall-cmd --get-zones
    

    设置默认区域(推荐使用dmz或work):

    sudo firewall-cmd --set-default-zone=dmz
    
  • IP地址限制:仅允许特定IP访问SSH(替换为你的IP):

    sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="ssh" accept'
    
  • 速率限制(防止DDoS):

    sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="0.0.0.0/0" service name="http" limit value="20/m" accept'
    
  • 网络地址转换(NAT)

    • 端口转发:将外部8080端口转发到内部80端口:

      sudo firewall-cmd --permanent --add-forward-port=port=8080:proto=tcp:toport=80
      
    • IP伪装(用于网关服务器):

      sudo firewall-cmd --permanent --add-masquerade
      

应用配置并测试

  1. 重载防火墙配置

    sudo firewall-cmd --reload
    
  2. 测试规则是否生效

    • 测试端口是否开放(从另一台机器):

      telnet your_server_ip 22
      

      或使用:

      nc -zv your_server_ip 80
      

0