在服务器管理中,屏蔽恶意IP地址是保障网站安全的重要措施之一,CentOS 7作为广泛使用的操作系统,提供了多种方式实现IP屏蔽,本文将详细介绍几种常用方法,并结合实际场景分析适用性,帮助管理员高效应对网络攻击或异常访问。
一、使用iptables屏蔽IP

iptables是CentOS 7默认的防火墙工具,通过规则配置可快速屏蔽特定IP。
1、临时屏蔽单个IP
执行以下命令立即生效,但重启后会失效:
- iptables -A INPUT -s 192.168.1.100 -j DROP
若需屏蔽整个网段,可将IP替换为192.168.1.0/24
。
2、永久保存规则
为避免重启后规则丢失,需保存配置:

- service iptables save
- systemctl restart iptables
适用场景:需要快速拦截已知攻击源,适合临时应急或短期屏蔽。
二、通过firewalld管理IP黑名单
若系统使用firewalld(如默认安装的CentOS 7),可通过富规则(rich rules)实现更灵活的控制。
1、添加屏蔽规则
- firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.5" reject'
执行后需重载配置:
- firewall-cmd --reload
2、查看当前规则

- firewall-cmd --list-rich-rules
优势:firewalld支持动态更新,规则管理更直观,适合长期维护复杂策略。
三、利用hosts.deny文件限制访问
对于通过SSH或某些服务发起的攻击,可直接修改/etc/hosts.deny
文件:
1、编辑配置文件
- echo "sshd: 192.168.1.100" >> /etc/hosts.deny
此操作会禁止该IP通过SSH连接服务器。
2、生效范围
此方法仅对支持TCP Wrappers的服务有效(如SSH、FTP)。
注意:修改后无需重启服务,立即生效,适合针对特定服务的精准控制。
四、自动化工具Fail2Ban
对于持续攻击或频繁扫描行为,推荐使用Fail2Ban自动封禁IP。
1、安装与配置
- yum install epel-release -y
- yum install fail2ban -y
- systemctl enable fail2ban
2、自定义监控规则
编辑配置文件/etc/fail2ban/jail.local
,例如监控SSH登录失败:
- [sshd]
- enabled = true
- maxretry = 3
- bantime = 3600
上述配置表示:3次失败登录后,封禁IP 1小时。
核心价值:Fail2Ban通过分析日志自动触发规则,大幅降低人工维护成本。
五、操作注意事项
1、避免误封
屏蔽IP前,建议通过netstat
或日志分析确认是否为真实攻击源:
- netstat -an | grep 192.168.1.100
2、定期清理规则
长期未清理的防火墙规则可能影响性能,可通过脚本定期归档旧日志,或使用工具如iptables-utils
管理。
3、多节点同步
若服务器为集群部署,需确保屏蔽规则在所有节点生效,避免攻击者切换IP绕过限制。
个人经验分享
在实际运维中,单一方法往往难以应对复杂场景,笔者建议组合使用多种工具:
短期应急:iptables快速响应;
长期防护:Fail2Ban+firewalld实现自动化;
精准控制:结合hosts.deny限制特定服务。
定期审查防火墙日志(路径/var/log/iptables.log
或/var/log/firewalld
)可发现潜在风险,若遇到大规模DDoS攻击,建议联动CDN或云服务商的高防系统,从网络层缓解压力。