Centos7防火墙高级策略:利用rich-rule实现精细化IP访问控制
1. 为什么需要精细化IP访问控制想象一下你家的防盗门——普通防火墙就像给大门装了一把锁所有人都用同一把钥匙进出。而rich-rule则是给每个访客分配专属钥匙还能规定谁可以进厨房、谁只能待在客厅。在企业服务器环境中这种精细化控制尤为关键。去年我负责某金融项目时就遇到过MySQL数据库被扫描攻击的情况正是用rich-rule将3306端口锁死在运维IP段才避免了数据泄露风险。CentOS7的firewalld自带rich-rule功能它比基础规则强大在三处条件组合能同时限定源IP、目标端口、协议类型动作细分不仅允许/拒绝还能设置日志记录、速率限制策略优先级规则按顺序匹配类似路由表的匹配机制实际工作中最常见的三种场景只允许跳板机SSH访问比如限制22端口给10.0.0.5数据库端口白名单如3306仅对应用服务器开放API接口的IP鉴权特定IP才能访问8080端口2. 基础环境准备与常用命令在开始前先用这些命令做个健康检查# 确认防火墙状态active表示运行中 systemctl status firewalld # 查看当前默认区域 firewall-cmd --get-default-zone # 列出所有开放端口 firewall-cmd --zonepublic --list-ports如果遇到防火墙未启动建议用以下方式处理# 启动并设置开机自启生产环境务必开启 systemctl start firewalld systemctl enable firewalld重要目录说明/etc/firewalld/zones/存放各zone的XML配置文件/usr/lib/firewalld/zones/系统预置zone模板/etc/firewalld/services/自定义服务定义文件建议操作前先备份当前配置cp /etc/firewalld/zones/public.xml ~/public.xml.bak3. rich-rule核心操作实战3.1 允许特定IP访问端口假设要允许192.168.1.100访问3306端口这条命令实测有效firewall-cmd --permanent --add-rich-rulerule familyipv4 source address192.168.1.100 port protocoltcp port3306 accept参数拆解familyipv4支持ipv6时改为ipv6source address支持CIDR格式如192.168.1.0/24port protocol可填tcp/udp/sctp等accept动作类型还可用reject/drop易错点地址不带引号会报错错误示例source address192.168.1.100忘记--permanent参数导致重启失效协议类型写错比如把tcp写成http3.2 拒绝非法IP的暴力破解针对SSH暴力破解可以这样封禁IPfirewall-cmd --permanent --add-rich-rulerule familyipv4 source address203.0.113.45 reject进阶用法是配合日志记录firewall-cmd --permanent --add-rich-rulerule familyipv4 source address203.0.113.45 log prefixssh_attacker levelnotice reject日志会出现在/var/log/messages用这个命令监控tail -f /var/log/messages | grep ssh_attacker3.3 规则管理技巧查看现有rich-rule注意zone名称要对应firewall-cmd --list-rich-rules --zonepublic删除规则时建议先查询再操作# 先确认规则存在 firewall-cmd --list-rich-rules --zonepublic | grep 192.168.1.100 # 精确删除必须与添加时的参数完全一致 firewall-cmd --permanent --remove-rich-rulerule familyipv4 source address192.168.1.100 port protocoltcp port3306 accept临时禁用某条规则不用删除配置# 先转为临时模式 firewall-cmd --runtime-to-permanent # 移除运行时规则 firewall-cmd --remove-rich-rulerule familyipv4 source address192.168.1.100 port protocoltcp port3306 accept # 需要时再添加回来 firewall-cmd --add-rich-rulerule familyipv4 source address192.168.1.100 port protocoltcp port3306 accept4. 企业级安全策略设计4.1 多区域组合方案生产环境推荐使用默认拒绝白名单模式# 设置默认zone为drop谨慎操作先确保有管理IP在白名单 firewall-cmd --set-default-zonedrop # 创建运维专用zone firewall-cmd --permanent --new-zoneops_zone firewall-cmd --permanent --zoneops_zone --add-source10.0.0.0/24 firewall-cmd --permanent --zoneops_zone --add-servicessh4.2 时间维度控制通过cronjob实现上班时间才开放访问# 创建开放脚本 cat /usr/local/bin/open_port.sh EOF #!/bin/bash firewall-cmd --add-rich-rulerule familyipv4 source address192.168.1.0/24 port protocoltcp port3306 accept EOF # 创建关闭脚本 cat /usr/local/bin/close_port.sh EOF #!/bin/bash firewall-cmd --remove-rich-rulerule familyipv4 source address192.168.1.0/24 port protocoltcp port3306 accept EOF # 设置定时任务 crontab -e # 工作日8:30开放 30 8 * * 1-5 /usr/local/bin/open_port.sh # 工作日18:00关闭 0 18 * * 1-5 /usr/local/bin/close_port.sh4.3 审计与监控建议每周检查防火墙日志# 生成rich-rule访问报告 grep rich-rule /var/log/messages | awk {print $1,$2,$3,$12} | sort | uniq -c关键监控指标被拒绝的连接数可配Zabbix监控规则匹配次数用firewall-cmd --get-active-rules策略变更记录通过auditd审计5. 排错与性能优化常见故障排查规则不生效检查firewalld服务状态确认--permanent参数和--reload配合使用查看完整配置firewall-cmd --list-all连接被拒绝测试telnet目标端口检查conntrack记录conntrack -L临时关闭防火墙测试systemctl stop firewalld规则冲突按优先级检查firewall-cmd --get-active-rules查看处理顺序firewall-cmd --get-policies性能调优建议将高频匹配的规则放在前面IP段规则优先于单个IP如用192.168.1.0/24代替多个单IP大量规则时考虑用ipsetfirewall-cmd --permanent --new-ipsettrusted_ips --typehash:ip firewall-cmd --permanent --ipsettrusted_ips --add-entry192.168.1.100 firewall-cmd --permanent --add-rich-rulerule source ipsettrusted_ips accept最后提醒每次重大变更前建议# 生成当前规则备份 firewall-cmd --runtime-to-permanent cp /etc/firewalld/zones/* ~/firewalld_backup_$(date %F)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2510161.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!