iptables怎样配置Linux防火墙规则

联启 网络工具 13

本文目录导读:

iptables怎样配置Linux防火墙规则-第1张图片-电脑手机工具软件下载 - 免费实用工具合集 | 联启科技

  1. iptables基础概念
  2. 基本命令格式
  3. 常用配置示例
  4. 高级配置
  5. 规则管理和持久化
  6. 完整配置示例
  7. 安全注意事项

我来详细介绍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

安全注意事项

  1. 配置前备份现有规则

    iptables-save > /root/iptables.backup
  2. 远程配置时设置定时任务回滚

    # 设置10分钟后自动恢复
    (sleep 600; iptables-restore < /root/iptables.backup) &
  3. 逐步测试规则:每次添加规则后测试连接

  4. 按顺序重要:规则从上到下匹配,将常用规则放在前面

  5. 考虑iptables的替代品:对于简单场景,可以考虑使用ufwfirewalld

标签: iptables 配置 Linux 防火墙

抱歉,评论功能暂时关闭!