在Linux系统安全防护中,网络访问控制是基础且关键的一环。iptables作为核心防火墙工具,其hashlimit模块为流量限制提供了灵活的解决方案。本文将介绍如何使用hashlimit模块来防范DDoS攻击和异常流量。
hashlimit基本原理
hashlimit模块基于哈希表记录连接信息,可以对源IP、目标IP或端口进行速率限制。通过设置最大连接数、时间窗口等参数,能够有效控制恶意扫描和暴力破解行为。
实际配置案例
以防止SSH暴力破解为例,创建如下iptables规则:
# 限制同一IP在30秒内最多5次连接尝试
iptables -A INPUT -p tcp --dport 22 -m hashlimit \
--hashlimit-name ssh_limit \
--hashlimit-mode srcip \
--hashlimit 5/30s \
--hashlimit-burst 5 \
-j ACCEPT
# 超过限制的连接将被拒绝
iptables -A INPUT -p tcp --dport 22 -j REJECT --reject-with tcp-reset
高级应用技巧
- 组合限制:同时限制源IP和目标端口
iptables -A INPUT -p tcp --dport 80 -m hashlimit \
--hashlimit-name http_limit \
--hashlimit-mode dstip \
--hashlimit 100/minute \
-j ACCEPT
- 动态调整:定期清理过期记录
# 每小时清理一次hashlimit表
*/60 * * * * iptables -F hashlimit
- 日志记录:监控被限制的连接
iptables -A INPUT -p tcp --dport 22 \
-m hashlimit --hashlimit-name ssh_limit \
-j LOG --log-prefix "SSH_LIMIT: "
安全建议
- 合理设置阈值,避免影响正常用户访问
- 结合fail2ban等工具实现自动化封禁
- 定期审查规则,优化性能表现
通过合理配置hashlimit模块,可以在不显著增加系统负担的前提下,有效提升系统的安全防护能力。

讨论