首页主机资讯CentOS防火墙设置技巧

CentOS防火墙设置技巧

时间2025-10-20 14:55:03发布访客分类主机资讯浏览885
导读:CentOS防火墙设置技巧(基于firewalld) 1. 安装与启动firewalld CentOS 7及以上版本默认使用firewalld作为防火墙管理工具。若未安装,可通过以下命令安装: sudo yum install firewa...

CentOS防火墙设置技巧(基于firewalld)

1. 安装与启动firewalld

CentOS 7及以上版本默认使用firewalld作为防火墙管理工具。若未安装,可通过以下命令安装:

sudo yum install firewalld -y

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

sudo systemctl start firewalld
sudo systemctl enable firewalld

验证状态:

sudo firewall-cmd --state  # 显示"running"表示运行中

2. 查看防火墙状态与规则

  • 查看运行状态
    sudo systemctl status firewalld
    
  • 查看当前所有规则(包括区域、端口、服务):
    sudo firewall-cmd --list-all
    
  • 查看开放的端口
    sudo firewall-cmd --list-ports
    
  • 查看默认区域
    sudo firewall-cmd --get-default-zone
    

3. 管理端口规则(开放/关闭)

开放端口(永久生效)

使用--permanent参数确保重启后规则仍有效,格式为:

sudo firewall-cmd --permanent --zone=<
    区域>
     --add-port=<
    端口号>
    /<
    协议>
    

示例(开放HTTP端口80/tcp):

sudo firewall-cmd --permanent --zone=public --add-port=80/tcp

应用更改:

sudo firewall-cmd --reload

关闭端口(永久生效)

sudo firewall-cmd --permanent --zone=<
    区域>
     --remove-port=<
    端口号>
    /<
    协议>
    

示例(关闭HTTP端口80/tcp):

sudo firewall-cmd --permanent --zone=public --remove-port=80/tcp

应用更改:

sudo firewall-cmd --reload

临时开放/关闭端口(当前会话有效)

若无需永久生效,可省略--permanent参数:

# 临时开放
sudo firewall-cmd --zone=public --add-port=80/tcp
# 临时关闭
sudo firewall-cmd --zone=public --remove-port=80/tcp

无需重载,立即生效。

4. 配置区域策略

firewalld通过**区域(Zone)**划分网络信任级别,默认区域为public(公共网络,严格限制)。可根据需求修改:

  • 查看所有可用区域
    sudo firewall-cmd --get-zones
    
  • 修改默认区域
    sudo firewall-cmd --set-default-zone=<
        区域>
        
    
    示例(将默认区域设为home,适用于家庭网络):
    sudo firewall-cmd --set-default-zone=home
    
  • 将接口绑定到特定区域(如将eth0设为public):
    sudo firewall-cmd --zone=public --add-interface=eth0
    

5. 使用rich规则实现精细控制

rich规则支持基于IP地址、协议、端口、动作的复杂过滤,例如:

  • 允许特定IP访问SSH(22/tcp)
    sudo firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='192.168.1.100' port protocol='tcp' port='22' accept"
    
  • 拒绝特定IP段访问所有端口
    sudo firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='192.168.1.0/24' reject"
    
  • 限制某端口仅允许TCP访问
    sudo firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' port protocol='tcp' port='80' accept"
    

应用更改后,需重载配置:

sudo firewall-cmd --reload

6. 管理服务而非单独端口

firewalld内置了常见服务(如HTTP、HTTPS、SSH)的规则,直接开放服务更便捷:

  • 开放服务
    sudo firewall-cmd --permanent --zone=public --add-service=<
        服务名>
        
    
    示例(开放SSH服务):
    sudo firewall-cmd --permanent --zone=public --add-service=ssh
    
  • 关闭服务
    sudo firewall-cmd --permanent --zone=public --remove-service=<
        服务名>
        
    
  • 查看可用服务
    sudo firewall-cmd --get-services
    

应用更改:

sudo firewall-cmd --reload

这种方式可自动处理服务的端口和协议,避免手动输入端口号。

7. 日志记录与监控

启用防火墙日志,便于排查问题和监控异常:

sudo firewall-cmd --permanent --zone=<
    区域>
     --add-log-prefix="Firewall: "

示例(为public区域启用日志):

sudo firewall-cmd --permanent --zone=public --add-log-prefix="Firewall: "

应用更改:

sudo firewall-cmd --reload

日志默认存储在/var/log/messages,可通过以下命令实时查看:

sudo tail -f /var/log/messages | grep Firewalld

8. 结合SELinux强化安全

SELinux(Security-Enhanced Linux)与firewalld配合,提供更细粒度的访问控制:

  • 启用SELinux
    sudo setenforce 1  # 临时启用
    
    永久生效需编辑/etc/selinux/config,将SELINUX=enforcing
  • 配置SELinux端口标签(若需开放非标准端口):
    示例(将8080/tcp添加到http_port_t标签,允许HTTP服务使用):
    sudo semanage port -a -t http_port_t -p tcp 8080
    
    安装policycoreutils-python-utils包以使用semanage命令:
    sudo yum install policycoreutils-python-utils -y
    

9. 最佳实践

  • 最小化开放端口:仅开放业务必需的端口(如HTTP 80、HTTPS 443、SSH 22),关闭不必要的端口(如FTP 21、Telnet 23)。
  • 定期审查规则:每月检查一次防火墙规则,移除不再使用的端口或服务。
  • 备份配置:定期备份firewalld配置,防止误操作导致服务中断:
    sudo cp -r /etc/firewalld /etc/firewalld.bak
    
  • 禁用不必要的服务:通过systemctl disable < 服务名> 关闭不需要的服务(如FTP、Telnet),减少攻击面。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: CentOS防火墙设置技巧
本文地址: https://pptw.com/jishu/730100.html
CentOS远程登录方法 CentOS虚拟机配置教程

游客 回复需填写必要信息