当前位置: 首页 > news >正文

CentOS 7防火墙实战:用firewalld为Nginx服务配置IP白名单,只让特定服务器访问

CentOS 7防火墙实战:用firewalld为Nginx服务配置IP白名单

在分布式架构中,服务间的访问控制如同建筑的门禁系统。想象这样一个场景:您的Web集群中,Nginx服务器需要像VIP休息室一样,只对持有通行证的应用服务器开放。本文将带您深入firewalld的规则引擎,实现精准的IP白名单控制。

1. 理解防火墙区域与规则优先级

firewalld的zone概念是其核心设计。默认情况下,新规则会添加到public区域,但理解区域的工作机制能让我们更灵活地控制流量:

# 查看所有可用区域 firewall-cmd --get-zones # 查看默认区域 firewall-cmd --get-default-zone

关键差异点

  • --permanent参数决定规则是否持久化
  • 临时规则会覆盖永久规则直到下次重载
  • 规则评估遵循"首次匹配"原则

提示:生产环境中建议始终使用--permanent参数,并通过firewall-cmd --runtime-to-permanent将运行时规则转为永久规则

2. 构建精准的IP白名单体系

2.1 清理现有规则(关键准备步骤)

许多配置失败源于残留规则干扰。以下是标准清理流程:

# 移除现有80端口开放规则 firewall-cmd --permanent --zone=public --remove-port=80/tcp # 重载防火墙使更改生效 firewall-cmd --reload

验证规则是否清除:

# 检查当前生效规则 firewall-cmd --list-all # 测试访问性(应无法访问) curl -I http://192.168.100.101

2.2 配置Rich规则实现IP过滤

Rich规则是firewalld的高级语法,支持复杂条件组合:

# 允许特定IP访问80端口 firewall-cmd --permanent --zone=public \ --add-rich-rule='rule family="ipv4" \ source address="192.168.100.102" \ port protocol="tcp" port="80" accept'

规则组件解析

  • family:指定IPv4/IPv6协议族
  • source address:定义源IP或网段
  • port:指定目标端口和协议类型
  • accept/reject:设置动作类型

2.3 验证规则有效性

采用双端验证法确保配置准确:

# 在允许的IP(102)上验证 ssh 192.168.100.102 "curl -I http://192.168.100.101" # 在禁止的IP(100)上测试 ssh 192.168.100.100 "curl -I http://192.168.100.101"

3. 生产环境进阶配置方案

3.1 多IP段管理策略

当需要管理多个IP段时,推荐使用zone分离策略:

# 创建专用zone firewall-cmd --permanent --new-zone=nginx_whitelist # 添加多个信任IP firewall-cmd --permanent --zone=nginx_whitelist \ --add-rich-rule='rule family="ipv4" \ source address="192.168.100.102" accept' firewall-cmd --permanent --zone=nginx_whitelist \ --add-rich-rule='rule family="ipv4" \ source address="10.0.1.0/24" accept' # 将zone绑定到网卡 firewall-cmd --permanent --zone=nginx_whitelist \ --add-interface=eth0

3.2 服务模板化配置

将常用配置封装为服务定义,提升复用性:

# 创建nginx-whitelist服务定义 cat > /etc/firewalld/services/nginx-whitelist.xml <<EOF <?xml version="1.0" encoding="utf-8"?> <service> <short>Nginx with IP whitelist</short> <description>Nginx service with IP restriction</description> <port protocol="tcp" port="80"/> <port protocol="tcp" port="443"/> </service> EOF # 应用服务配置 firewall-cmd --permanent --zone=public \ --add-service=nginx-whitelist

4. 防火墙规则维护与排错

4.1 规则持久化最佳实践

避免规则丢失的配置流程:

  1. 先测试临时规则
    firewall-cmd --add-rich-rule='...'
  2. 验证功能正常后转为永久规则
    firewall-cmd --runtime-to-permanent
  3. 确认永久配置
    firewall-cmd --permanent --list-all

4.2 常见问题诊断工具

当规则不生效时,使用以下工具排查:

# 查看完整规则链 firewall-cmd --list-all --zone=public # 检查内核级规则 iptables -L -n -v # 实时监控被拒绝的连接 journalctl -u firewalld -f

典型问题处理

  • 规则顺序错误:使用--priority参数调整
  • 服务未重载:确保执行firewall-cmd --reload
  • 区域绑定错误:检查firewall-cmd --get-active-zones

5. 扩展应用到其他服务

同样的原理可应用于各类服务防护:

MySQL访问控制

firewall-cmd --permanent --zone=db_zone \ --add-rich-rule='rule family="ipv4" \ source address="192.168.100.110" \ port protocol="tcp" port="3306" accept'

Redis防护配置

firewall-cmd --permanent --zone=redis_zone \ --add-rich-rule='rule family="ipv4" \ source address="10.0.2.15" \ port protocol="tcp" port="6379" accept'

在实际运维中,发现将相关规则按业务分组到不同zone,比全部堆砌在public区域更易维护。例如为每个微服务创建独立zone,再通过--change-interface动态调整网络边界。

http://www.cnnetsun.cn/news/2567601.html

相关文章:

  • Windows Server离线安装.NET 3.5失败?手把手教你用本地源文件搞定IIS角色安装
  • ParaView时间戳设置全攻略:从基础标注到自定义格式(5.8.0实测)
  • pan-baidu-download:百度网盘命令行下载的终极解决方案
  • redhat 9 安装zabbix server pgsql
  • 行为型设计模式——状态模式
  • 【Android】AI视频剪辑-Ai剪辑视频 免费无广告
  • STM32和FPGA怎么‘分工’才高效?一份给多轴运动控制新手的软硬件协同设计指南
  • AI语音合成性价比怎么选?3大维度+5个关键指标,帮你省下60%预算
  • ARM活动监视器(AMU)架构与性能监控实践
  • 三路音调控制电路设计:基于Baxandall架构的独立中频调节方案
  • 基于LM22678的树莓派硬盘专用电源设计:解决供电不稳与电流冲击
  • 量子计算调试新突破:Bloch向量断言技术详解
  • 3个技巧快速掌握AI翻唱生成:从RVC模型到专业级歌曲转换
  • 95后必备:大模型评测研究员/技术PM高薪岗位,上海/北京等你来!
  • 基于ESP32-C3与LoRa的I²C总线无线桥接器设计与实现
  • Imagine Dragons将亮相阿布扎比大奖赛
  • 从零打造吉他效果器:软硬削波、哇音与晶体管过载电路全解析
  • 在Ubuntu 20.04上编译BetaFlight固件,给AOCODARC-F7MINI飞控刷机(保姆级教程)
  • 现在这情况,我劝大家提前做好准备。。
  • 【DeepSeek协议识别黄金标准】:基于AST+语义指纹的98.7%准确率识别模型首次开源披露
  • 基于GPS授时的精准时钟DIY:从卫星信号到数码管显示
  • 从Excel到3D图:一份内部数据的K-Means聚类与可视化完整实战记录(避坑xlrd与编码)
  • 瑞德克斯平台:从风险提示看平台责任意识
  • 【Spring Boot 认证登录注册模块全解析】:JWT+BCrypt+Redis 企业级实践
  • DELL G3装Ubuntu后WiFi挂了?手把手教你精准查询网卡型号并找对驱动(避坑指南)
  • 告别游戏卡顿!保姆级教程:在Win10上彻底搞定Antimalware Service高占用
  • 趋势科技提醒注意已遭利用的 Apex One 0day 漏洞
  • zotero修改:(1)英文作者三人以上出现“等”
  • 文档格式兼容性挑战与渐进式渲染优化:docxjs库的Web文档渲染架构解析
  • 智能手机多摄像头高光谱成像系统设计与实现