ubuntu

ubuntu iptables如何学习与进阶

小樊
41
2025-10-18 06:27:14
栏目: 智能运维

Ubuntu iptables学习与进阶指南

一、基础准备:理解核心概念

学习iptables前,需掌握其核心逻辑:表(Table)、链(Chain)、规则(Rule)

二、基础操作:掌握常用命令

1. 查看规则

sudo iptables -L -n -v  # 列出所有链的规则(-n禁用DNS解析,-v显示详细信息)
sudo iptables -t nat -L -v  # 查看nat表的规则

2. 清空规则

sudo iptables -F  # 清空所有链的规则
sudo iptables -X  # 清空所有自定义链
sudo iptables -Z  # 将所有计数器归零

3. 设置默认策略

sudo iptables -P INPUT DROP  # 默认拒绝所有入站流量(安全前提)
sudo iptables -P OUTPUT ACCEPT  # 允许所有出站流量(本机发出的流量)
sudo iptables -P FORWARD DROP  # 默认拒绝所有转发流量

4. 允许必要流量

sudo iptables -A INPUT -i lo -j ACCEPT  # 允许本地回环接口(本机服务通信)
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT  # 允许已建立的连接(如SSH反向隧道)
sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT  # 允许特定IP(192.168.1.100)访问SSH
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT  # 允许HTTP流量
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT  # 允许HTTPS流量

5. 保存规则(防止重启失效)

sudo apt install iptables-persistent  # 安装持久化工具
sudo netfilter-persistent save  # 保存当前规则到/etc/iptables/rules.v4

安装时会提示是否保存现有规则,选择“是”即可自动写入。

三、进阶技巧:实现精细化管控

1. 精准控制端口访问

2. 端口转发(内网穿透)

# 将外部8080端口转发到内网192.168.1.2的80端口(需开启IP转发)
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward  # 临时开启IP转发
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.2:80  # PREROUTING链做目标地址转换
sudo iptables -t nat -A POSTROUTING -j MASQUERADE  # POSTROUTING链做源地址伪装(隐藏内网IP)
# 持久化IP转发:编辑/etc/sysctl.conf,设置net.ipv4.ip_forward=1,然后执行sudo sysctl -p

3. 日志记录(排查攻击)

sudo iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH Attempt: "  # 记录SSH尝试登录的日志(日志存放在/var/log/syslog)
sudo iptables -A INPUT -p icmp --j LOG --log-prefix "ICMP Packet: "  # 记录ICMP流量(如ping)

通过tail -f /var/log/syslog实时查看日志。

4. 防DDoS攻击(限制连接速率)

sudo iptables -A INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 -j DROP  # 限制单个IP最多3个SSH连接
sudo iptables -A INPUT -p tcp --dport 80 -m limit --limit 5/min -j ACCEPT  # 限制HTTP连接速率为每分钟5次
sudo iptables -A INPUT -p tcp --dport 80 -j DROP  # 超过速率的连接丢弃

5. 使用扩展模块增强功能

6. 删除规则(修正错误)

四、学习建议与注意事项

  1. 备份规则:修改规则前,用sudo iptables-save > ~/iptables-backup.rules备份,避免误操作导致无法访问。
  2. 测试规则:修改后用pingcurl等工具测试连通性,确保不影响正常业务。
  3. 顺序优先:iptables按“从上到下”匹配规则,将宽松规则(如允许已有连接)放在前面,严格规则(如拒绝所有)放在后面。
  4. 替代工具:日常管理可使用ufw(Uncomplicated Firewall)简化操作,但iptables更适合高级定制(如端口转发、DDoS防护)。
  5. 学习资源:参考iptables官方手册(man iptables)和Ubuntu Wiki,了解更多模块和参数。

0
看了该问题的人还看了