基于iptables的网络访问控制机制设计
在Linux系统安全架构中,网络访问控制是抵御外部攻击的第一道防线。本文将分享一个基于iptables的完整安全架构设计案例。
安全需求分析
针对典型的企业服务器环境,我们需要实现以下控制策略:
- 限制SSH登录端口(22)仅允许特定网段访问
- 禁止外部对web服务(80/443)的直接访问
- 阻断常见的DDoS攻击流量
具体配置方案
# 清空现有规则
iptables -F
iptables -X
# 设置默认策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# 允许loopback接口
iptables -A INPUT -i lo -j ACCEPT
# 允许已建立连接的流量
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 仅允许特定网段SSH访问(192.168.1.0/24)
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT
# 阻止恶意IP(示例)
iptables -A INPUT -s 192.168.10.100 -j DROP
# 限制SSH暴力破解(每分钟最多5次)
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --name ssh --rcheck --seconds 60 --hitcount 5 -j DROP
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --name ssh --set
# 允许HTTP服务访问(仅内部网段)
iptables -A INPUT -p tcp --dport 80 -s 192.168.0.0/16 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -s 192.168.0.0/16 -j ACCEPT
配置验证
使用以下命令验证配置:
# 查看规则
iptables -L -n -v
# 测试连接(从允许网段)
ssh user@server_ip
# 测试拒绝(从禁止网段)
ssh user@server_ip # 应该被拒绝
注意事项
- 配置前请确保有物理或串口访问权限
- 建议先在测试环境验证规则
- 定期审查和更新IP白名单列表
- 结合fail2ban等工具增强防护效果

讨论