Linux网络守护者:iptables从入门到实战配置

张开发
2026/4/20 7:44:26 15 分钟阅读

分享文章

Linux网络守护者:iptables从入门到实战配置
1. iptablesLinux系统的网络守门人第一次接触iptables时我完全被它的命令行界面吓到了。直到有次服务器被恶意扫描我才意识到这个看似复杂的工具其实是Linux系统最可靠的网络保镖。简单来说iptables就像是你家小区的保安系统它能精确控制哪些网络流量可以进出你的服务器哪些应该被拒之门外。在Linux生态中iptables是netfilter项目的用户空间工具负责配置内核级的网络包过滤规则。它不仅能做传统的防火墙功能还能实现NAT地址转换、流量整形等高级操作。我见过太多人因为轻视基础防护导致服务器沦为肉鸡的案例。实际上只要掌握几个核心概念任何人都能快速构建起有效的防护墙。举个例子去年我帮朋友排查网站异常发现他的服务器每小时收到上万次SSH暴力破解请求。用iptables加了三条规则后异常流量立即下降了90%。这种立竿见影的效果正是它被称为Linux网络守护者的原因。接下来我会用最直白的语言带你掌握这个神器从四表五链的基础到真实场景的防护配置。2. 四表五链理解iptables的骨架2.1 四大功能表想象iptables是个多功能工具箱里面有四个专用工具层filter表最常用的基础工具层就像门卫的登记簿。我管理过的服务器中90%的规则都写在这里。它决定数据包能否通过ACCEPT/DROPnat表网络地址转换层相当于物业的快递代收服务。去年我给公司搭建VPN服务器时就靠它实现内网穿透mangle表高级改装层类似专业的汽车改装店。除非你要做QoS或特殊标记否则平时很少碰raw表连接追踪豁免层好比VIP通道。在需要绕过系统自动跟踪的特殊场景才会用到2.2 五大规则链数据包在系统中流动时会经过五个检查点链PREROUTING链数据包刚进网卡的第一道安检INPUT链目标为本机的数据包检查站FORWARD链需要转发的数据包中转站OUTPUT链本机发出的数据包出口POSTROUTING链数据包发出前的最后处理实际配置时我常用这个记忆口诀外到内先PREROUTING发给本机走INPUT转发必经FORWARD本机发出OUTPUT最后都要POSTROUTING。上周帮客户调试NAT时就是靠这个理顺了规则顺序。3. 手把手教你写第一条规则3.1 基础命令结构iptables命令看起来复杂拆解后其实很简单iptables -t 表名 -操作 链名 匹配条件 -j 动作举个真实案例阻止某个恶意IP的访问iptables -t filter -A INPUT -s 123.123.123.123 -j DROP这条命令的意思是在filter表的INPUT链末尾追加(-A)一条规则匹配源地址(-s)为123.123.123.123的数据包执行丢弃(-j DROP)动作。去年有个爬虫疯狂抓取我们网站就是用这个方法瞬间解决了问题。3.2 必须掌握的实用命令查看现有规则iptables -L -n -v建议加上--line-numbers显示行号删除规则iptables -D INPUT 3删除INPUT链第3条规则清空所有规则iptables -F调试时特别有用保存规则service iptables save或iptables-save /etc/iptables.rules提醒一个我踩过的坑在远程服务器操作时一定要先放行自己的IP再设置拒绝所有。有次不小心把自己锁在外面只能去机房重置...4. Web服务器防护实战4.1 基础防护配置给Nginx/Apache服务器配置防火墙时我通常会设置这些基础防护# 允许已建立的连接 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 开放80/443端口 iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT # 限制SSH连接仅允许办公室IP iptables -A INPUT -p tcp --dport 22 -s 203.0.113.0/24 -j ACCEPT # 默认策略设为拒绝 iptables -P INPUT DROP iptables -P FORWARD DROP这个配置既保证了Web服务可用性又极大减少了攻击面。根据我的经验这样设置后服务器扫描日志能减少80%以上的恶意请求。4.2 防CC攻击技巧遇到CC攻击时可以结合limit模块进行防护# 每分钟最多允许25个新连接 iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT去年电商大促期间客户网站遭遇CC攻击就是用这个方法在不停机的情况下缓解了攻击。同时建议安装fail2ban增强防护。5. 家庭网络的高级应用5.1 实现端口转发我家里的NAS放在内网通过iptables实现外网安全访问# 将公网IP的5000端口转发到内网NAS iptables -t nat -A PREROUTING -p tcp --dport 5000 -j DNAT --to 192.168.1.100:5000 iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.100 --dport 5000 -j SNAT --to 192.168.1.1 # 必须开启IP转发 echo 1 /proc/sys/net/ipv4/ip_forward这样配置后在外网访问公网IP:5000就能安全连接到内网NAS了。记得在filter表的FORWARD链放行相应流量。5.2 家长控制方案用iptables限制孩子设备的上网时间# 每天20:00-22:00允许上网 iptables -A FORWARD -m mac --mac-source 11:22:33:44:55:66 -m time --timestart 20:00 --timestop 22:00 -j ACCEPT # 其他时间拒绝 iptables -A FORWARD -m mac --mac-source 11:22:33:44:55:66 -j DROP这个方案比路由器自带的家长控制更灵活还能针对不同设备设置不同规则。

更多文章