Linux云服务器IPtables配置全攻略:从入门到精通
在云服务器安全管理中,IPtables作为Linux内核内置的防火墙工具,是保护服务器安全的第一道防线。本文将手把手教你如何正确配置IPtables规则,让你的云服务器固若金汤。
一、IPtables基础概念
IPtables通过定义规则链(Chain)来处理网络数据包,主要包括三个默认链:
- INPUT链:处理进入本机的数据包
- OUTPUT链:处理从本机发出的数据包
- FORWARD链:处理转发到其他主机的数据包
每条链都有默认策略(ACCEPT/DROP),规则按顺序匹配,一旦匹配成功就会执行相应动作。
二、准备工作
- 确认系统已安装IPtables:
sudo iptables --version - 查看当前规则:
sudo iptables -L -n -v - 备份现有规则:
sudo iptables-save > ~/iptables.backup
注意:操作前请确保有SSH的备用连接方式,避免误操作导致失联。
三、基础规则配置
1. 设置默认策略
sudo iptables -P INPUT DROP sudo iptables -P FORWARD DROP sudo iptables -P OUTPUT ACCEPT
2. 允许本地回环
sudo iptables -A INPUT -i lo -j ACCEPT sudo iptables -A OUTPUT -o lo -j ACCEPT
3. 允许已建立的连接
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
四、服务端口配置
1. 开放SSH端口(示例使用2222)
sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
2. 开放Web服务端口
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
3. 允许Ping
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
五、高级防护配置
1. 防止端口扫描
sudo iptables -N ANTISCAN sudo iptables -A ANTISCAN -m recent --name ATTACK --set -j DROP sudo iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j ANTISCAN sudo iptables -A INPUT -p tcp --tcp-flags ALL NONE -j ANTISCAN
2. 限制连接频率
sudo iptables -A INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 -j DROP
3. IP黑名单
sudo iptables -A INPUT -s 123.123.123.123 -j DROP
六、规则持久化
CentOS/RHEL:
sudo service iptables save sudo chkconfig iptables on
Ubuntu/Debian:
sudo apt-get install iptables-persistent sudo netfilter-persistent save
常见问题解决
Q: 配置后无法连接SSH怎么办?
A: 通过云平台控制台使用VNC连接,检查规则是否正确,或临时清空规则:sudo iptables -F
Q: 规则不生效?
A: 检查规则顺序,IPtables是从上到下匹配的。使用sudo iptables -L -n --line-numbers查看规则序号,用-I参数插入到正确位置。
最佳实践建议
- 配置前做好备份
- 先设置允许规则再设置默认拒绝
- 生产环境建议使用
-I而非-A添加规则 - 定期检查
/var/log/syslog中的防火墙日志 - 考虑使用更现代的firewalld或nftables
通过以上步骤,你已经为Linux云服务器建立了一套完整的防火墙防护体系。记住,安全配置是一个持续的过程,需要根据实际业务需求不断调整优化。
