为什么需要配置IPtables?
在云服务器环境中,IPtables是Linux系统自带的防火墙工具,它就像服务器的"门卫",决定哪些网络流量可以进出。合理配置IPtables可以:
- 防止未经授权的访问
- 阻止DDoS攻击
- 保护敏感数据
- 满足合规性要求
基础概念解析
在开始配置前,先了解几个关键术语:
- 链(Chains)
- INPUT(入站流量)、OUTPUT(出站流量)、FORWARD(转发流量)
- 规则(Rules)
- 定义如何处理特定流量的条件
- 目标(Targets)
- ACCEPT(接受)、DROP(丢弃)、REJECT(拒绝并通知)
实战配置步骤
步骤1:查看当前规则
iptables -L -n -v
这个命令会显示所有现有规则,-n参数可以避免DNS反向解析,加快显示速度。
步骤2:设置默认策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
先设置最严格的默认策略,然后根据需要开放特定端口。
步骤3:允许本地回环
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
步骤4:开放SSH端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
建议配合--source参数限制可访问SSH的IP范围。
步骤5:保存规则
不同Linux发行版保存方式不同:
- Ubuntu/Debian:
iptables-save > /etc/iptables.rules - CentOS/RHEL:
service iptables save
高级配置技巧
防止端口扫描
iptables -N ANTISCAN
iptables -A ANTISCAN -m recent --name ATTACK --set -j DROP
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p tcp --syn -j ANTISCAN
限制连接速率
iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
这可以有效防止CC攻击。
常见问题解答
Q: 规则配置错误导致锁死服务器怎么办?
A: 云服务商通常提供控制台访问功能,可以通过控制台重置防火墙规则。
Q: 如何查看被阻止的连接?
A: 使用命令: iptables -L -n -v 查看计数器,或者添加日志规则: iptables -A INPUT -j LOG --log-prefix "IPTABLES-DROPPED: "
总结
IPtables配置是云服务器安全的基础。建议遵循"最小权限原则",即只开放必要的端口和服务。定期审查防火墙规则,并使用iptables-persistent等工具确保重启后规则不丢失。对于生产环境,可以考虑结合fail2ban等工具增强防护。
