本文目录导读:

我来详细介绍iptables配置Linux防火墙规则的方法。
iptables基础概念
表(Tables)
- filter表:默认表,用于过滤数据包
- nat表:用于网络地址转换
- mangle表:用于修改数据包
- raw表:用于配置连接跟踪
链(Chains)
- INPUT:处理进入本机的数据包
- OUTPUT:处理本机发出的数据包
- FORWARD:处理转发的数据包
- PREROUTING:数据包进入路由前
- POSTROUTING:数据包离开路由后
基本命令格式
iptables [-t 表名] 命令 链名 匹配条件 -j 动作
常用配置示例
1 查看规则
# 查看filter表规则 iptables -L -n -v # 查看NAT表规则 iptables -t nat -L -n -v # 显示规则编号 iptables -L --line-numbers
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 # 允许已建立的连接 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 开放SSH端口(22) iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 开放Web端口 iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT # 开放特定IP访问 iptables -A INPUT -s 192.168.1.100 -j ACCEPT # 限制特定端口访问来源 iptables -A INPUT -p tcp --dport 3306 -s 192.168.1.0/24 -j ACCEPT # 阻止特定IP iptables -A INPUT -s 10.0.0.5 -j DROP # 限制ICMP(Ping) iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
高级配置
1 端口转发
# 开启IP转发 echo 1 > /proc/sys/net/ipv4/ip_forward # 端口转发(将80端口转发到8080) iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
2 限制连接数
# 限制SSH连接频率 iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 5 -j DROP # 限制并发连接数 iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 -j REJECT
3 日志记录
# 记录被拒绝的包 iptables -A INPUT -j LOG --log-prefix "IPTABLES-DROP: " --log-level 4 # 记录特定端口的访问 iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH-ACCESS: "
规则管理和持久化
1 管理规则
# 删除规则(按编号) iptables -D INPUT 3 # 删除规则(按匹配) iptables -D INPUT -p tcp --dport 80 -j ACCEPT # 插入规则到指定位置 iptables -I INPUT 2 -s 192.168.1.0/24 -j ACCEPT # 替换规则 iptables -R INPUT 5 -s 192.168.1.0/24 -j DROP # 清除所有规则 iptables -F iptables -t nat -F iptables -X
2 持久化规则
# CentOS/RHEL service iptables save # 或 iptables-save > /etc/sysconfig/iptables # Ubuntu/Debian apt-get install iptables-persistent netfilter-persistent save # 通用方法 iptables-save > /etc/iptables.rules # 恢复规则 iptables-restore < /etc/iptables.rules
完整配置示例
#!/bin/bash # 清除所有规则 iptables -F iptables -X iptables -t nat -F iptables -t mangle -F # 设置默认策略 iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT # 允许本地回环 iptables -A INPUT -i lo -j ACCEPT # 允许已建立连接 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 允许Ping(可选) iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT # 允许SSH iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许HTTP和HTTPS iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT # 允许内部网络 iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT # 记录并丢弃其他所有 iptables -A INPUT -j LOG --log-prefix "Dropped: " --log-level 4 iptables -A INPUT -j DROP # 保存规则 iptables-save > /etc/iptables.rules
安全注意事项
-
配置前备份现有规则:
iptables-save > /root/iptables.backup
-
远程配置时设置定时任务回滚:
# 设置10分钟后自动恢复 (sleep 600; iptables-restore < /root/iptables.backup) &
-
逐步测试规则:每次添加规则后测试连接
-
按顺序重要:规则从上到下匹配,将常用规则放在前面
-
考虑iptables的替代品:对于简单场景,可以考虑使用
ufw或firewalld
标签: iptables 配置 Linux 防火墙
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播