Linux防火墙实战:手把手教你用iptables配置安全规则
在网络安全日益重要的今天,iptables作为Linux系统自带的防火墙工具,是每个系统管理员必须掌握的技能。本文将带你从零开始,逐步掌握iptables的核心配置方法。
一、iptables基础概念
iptables是Linux内核中集成的包过滤系统,它通过定义规则链(Chain)来控制网络数据包的流动。主要包含三个默认链:
- INPUT链:处理进入本机的数据包
- OUTPUT链:处理从本机发出的数据包
- FORWARD链:处理转发的数据包
二、iptables基本语法
iptables命令的基本格式为:
iptables [-t 表名] 命令 [链名] [规则号] [匹配条件] [-j 动作]
常用参数说明:
| 参数 | 说明 |
|---|---|
| -A | 追加规则 |
| -I | 插入规则 |
| -D | 删除规则 |
| -L | 列出规则 |
| -F | 清空规则 |
| -p | 指定协议 |
| -s | 源地址 |
| -d | 目标地址 |
| -j | 指定动作 |
三、实战配置示例
1. 基本防火墙配置
首先清空所有现有规则:
iptables -F iptables -X iptables -Z
设置默认策略(拒绝所有进入流量,允许所有出去流量):
iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP
2. 允许SSH连接
允许来自特定IP的SSH连接(端口22):
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT
3. 允许Web服务
允许HTTP和HTTPS流量:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT
4. 防止DoS攻击
限制同一IP的连接数:
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 20 -j DROP
四、高级配置技巧
1. 端口转发
将外部8080端口转发到内部80端口:
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80
2. 日志记录
记录被拒绝的数据包:
iptables -A INPUT -j LOG --log-prefix "IPTABLES-DROPPED: "
3. 保存和恢复规则
保存当前规则:
iptables-save > /etc/iptables.rules
恢复规则:
iptables-restore < /etc/iptables.rules
五、常见问题解决
Q:为什么我的规则不起作用?
A:检查规则顺序(iptables按顺序匹配),确认没有其他规则优先匹配。
Q:如何查看当前活动的规则?
A:使用iptables -L -v -n命令查看。
Q:如何删除特定规则?
A:先用iptables -L --line-numbers查看规则编号,然后用iptables -D 链名 编号删除。
总结
通过本文的学习,你应该已经掌握了iptables的基本配置方法。记住,良好的防火墙配置应该遵循"最小权限原则",即只开放必要的端口和服务。定期审查和测试你的防火墙规则,确保系统安全。
对于生产环境,建议将iptables规则保存到文件中,并设置开机自动加载,以确保服务重启后规则仍然有效。
