Debian iptables规则设置指南
Debian iptables规则设置指南
1. 安装iptables
在Debian系统中,首先需要确保iptables已安装。通过以下命令安装:
sudo apt update &
&
sudo apt install iptables
安装完成后,即可使用iptables命令配置防火墙规则。
2. 查看当前规则
配置前建议先查看现有规则,避免冲突:
sudo iptables -L -n -v
-L
:列出所有链的规则;-n
:以数字形式显示IP和端口(避免DNS解析延迟);-v
:显示详细信息(如数据包计数、字节统计)。
3. 设置默认策略
默认策略决定了未匹配任何规则的数据包的处理方式。生产环境中建议收紧默认策略:
sudo iptables -P INPUT DROP # 拒绝所有入站流量(默认拒绝)
sudo iptables -P FORWARD DROP # 拒绝所有转发流量(若无需转发)
sudo iptables -P OUTPUT ACCEPT # 允许所有出站流量(本地发起的连接正常)
⚠️ 注意:设置INPUT DROP
后,需确保后续添加了允许本地回环、SSH等必要服务的规则,否则可能导致无法远程登录。
4. 允许必要流量
允许本地回环接口
本地回环(lo
)用于本机内部通信(如数据库、Web服务等),必须允许:
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT
允许已建立的连接
允许已经建立的连接及相关数据包通过(避免中断现有会话):
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
--ctstate ESTABLISHED
表示已建立的连接,RELATED
表示关联的连接(如FTP数据传输)。
允许特定IP访问
若需允许某台设备(如管理机)访问服务器,可添加针对性规则:
sudo iptables -A INPUT -s 192.168.1.100 -j ACCEPT # 允许192.168.1.100的所有流量
若仅需允许特定端口(如SSH),可结合协议和端口:
sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT # 仅允许192.168.1.100访问SSH
允许常用服务端口
根据需求开放常用服务端口(如HTTP、HTTPS):
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT # HTTP(端口80)
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT # HTTPS(端口443)
建议结合--ctstate NEW,ESTABLISHED
限制为新建和已建立的连接,提升安全性:
sudo iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
5. 拒绝特定流量
若需拒绝某台设备或某个端口的访问,可使用DROP
(静默丢弃,无响应)或REJECT
(发送拒绝响应):
sudo iptables -A INPUT -s 192.168.1.101 -j DROP # 拒绝192.168.1.101的所有流量
sudo iptables -A INPUT -p tcp --dport 22 -j REJECT # 拒绝所有SSH连接(明确拒绝)
⚠️ 注意:拒绝规则应放在允许规则之后,避免误拦截合法流量。
6. 保存规则
iptables规则默认临时生效(重启系统或iptables服务后丢失),需通过以下方式持久化:
方法1:使用iptables-persistent(推荐)
安装工具后,规则会自动保存到/etc/iptables/rules.v4
(IPv4)和/etc/iptables/rules.v6
(IPv6):
sudo apt install iptables-persistent
安装过程中会提示“是否保存当前规则”,选择“是”即可。
手动保存/恢复规则:
sudo netfilter-persistent save # 手动保存
sudo netfilter-persistent reload # 手动恢复
方法2:手动保存到文件
若未使用iptables-persistent,可通过以下命令手动保存:
sudo iptables-save >
/etc/iptables/rules.v4 # IPv4
sudo ip6tables-save >
/etc/iptables/rules.v6 # IPv6
恢复时使用iptables-restore
命令读取文件即可。
7. 删除规则
删除特定规则
若需删除某条已添加的规则,可使用-D
选项(需指定完整规则):
sudo iptables -D INPUT -s 192.168.1.100 -j ACCEPT # 删除允许192.168.1.100的规则
删除所有规则
若需清空所有规则(恢复初始状态),可使用:
sudo iptables -F # 清空所有链的规则
sudo iptables -X # 删除自定义链(若有)
⚠️ 注意:删除所有规则后,需重新设置默认策略和必要规则,否则可能导致服务器无法访问。
8. 注意事项
- 谨慎操作默认策略:设置
INPUT DROP
后,若未允许本地回环或SSH,可能导致无法远程登录,建议在测试环境中验证规则后再应用到生产环境。 - 规则顺序很重要:iptables按“从上到下”顺序匹配规则,若先设置了
DROP
再设置ACCEPT
,合法流量可能被拦截。建议将具体允许规则放在前面,默认拒绝规则放在最后。 - 备份规则:定期备份规则文件(如
/etc/iptables/rules.v4
),避免误操作导致规则丢失。可使用cp
命令或编写备份脚本实现。 - 复杂场景建议使用高级工具:若需更便捷的管理(如图形界面、自动规则生成),可使用
ufw
(Uncomplicated Firewall),它是iptables的前端工具,简化了配置流程。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian iptables规则设置指南
本文地址: https://pptw.com/jishu/728512.html