当前位置: 首页 > news >正文

iptables 防火墙详解与实用配置指南

iptables 防火墙详解与实用配置指南

iptables 是 Linux 系统上功能强大的防火墙工具,基于内核的 netfilter 框架实现,用于过滤网络数据包、配置网络地址转换(NAT)和端口转发等。本文将详细介绍 iptables 的基本概念、常用命令和实用配置示例。

一、iptables 基础概念

1. 表(Tables)

iptables 包含 5 种内置表,每种表用于不同的网络功能:

  • filter 表:默认表,用于数据包过滤(最常用)
  • nat 表:用于网络地址转换(端口转发、IP 伪装等)
  • mangle 表:用于修改数据包的服务类型、TTL 等标记
  • raw 表:用于处理未被连接跟踪的数据包
  • security 表:用于强制访问控制(MAC)网络规则

2. 链(Chains)

每个表包含若干预设的链(数据包处理流程):

  • filter 表:INPUT(入站)、OUTPUT(出站)、FORWARD(转发)
  • nat 表:PREROUTING(路由前)、POSTROUTING(路由后)、OUTPUT(出站)
  • 其他表:包含与 filter 表类似的链结构

3. 规则(Rules)

规则是链中的具体指令,包含:

  • 匹配条件:如源 IP、目标端口、协议类型等
  • 目标动作:如 ACCEPT(允许)、DROP(丢弃)、REJECT(拒绝并回复)等

二、基本操作命令

1. 查看规则

# 查看默认 filter 表的所有规则
iptables -L# 查看规则并显示 IP 地址和端口的数字形式(不解析域名)
iptables -L -n# 查看规则并显示详细信息(包括数据包计数)
iptables -L -n -v# 查看指定表(如 nat 表)的规则
iptables -t nat -L -n# 查看指定链(如 INPUT 链)的规则
iptables -L INPUT -n -v

2. 清除规则

# 清除所有表的所有规则
iptables -F# 清除指定表(如 nat 表)的规则
iptables -t nat -F# 清除指定链(如 INPUT 链)的规则
iptables -F INPUT# 重置数据包计数器
iptables -Z
iptables -t nat -Z

3. 添加规则

# 基本语法
iptables [-t 表名] -A 链名 [匹配条件] -j 目标动作# 示例:允许来自 192.168.1.100 的所有流量
iptables -A INPUT -s 192.168.1.100 -j ACCEPT# 示例:允许 SSH 连接(22 端口)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT# 示例:允许 HTTP(80)和 HTTPS(443)连接
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT# 示例:允许 ICMP 协议(ping)
iptables -A INPUT -p icmp -j ACCEPT# 示例:允许已建立的连接和相关连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

4. 删除规则

# 方法 1:按规则序号删除(先使用 --line-numbers 查看序号)
iptables -L INPUT --line-numbers
iptables -D INPUT 2  # 删除 INPUT 链中序号为 2 的规则# 方法 2:按规则内容删除(与添加规则的格式相同,将 -A 改为 -D)
iptables -D INPUT -p tcp --dport 80 -j ACCEPT

5. 设置默认策略

# 设置 INPUT 链默认策略为 DROP(拒绝所有未匹配的入站流量)
iptables -P INPUT DROP# 设置 FORWARD 链默认策略为 DROP(不允许转发)
iptables -P FORWARD DROP# 设置 OUTPUT 链默认策略为 ACCEPT(允许所有出站流量)
iptables -P OUTPUT ACCEPT

三、常用匹配条件

1. 基本匹配条件

-s 192.168.1.0/24    # 源 IP 地址或网段
-d 10.0.0.5          # 目标 IP 地址
-p tcp               # 协议类型(tcp/udp/icmp)
--sport 1024:65535   # 源端口(可以指定范围)
--dport 80           # 目标端口
-i eth0              # 入站接口
-o eth0              # 出站接口

2. 扩展匹配条件(需要 -m 模块)

# 状态匹配(state 模块)
-m state --state ESTABLISHED,RELATED# 多端口匹配(multiport 模块)
-m multiport --dports 80,443,22# IP 范围匹配(iprange 模块)
-m iprange --src-range 192.168.1.100-192.168.1.200# 速率限制(limit 模块)
-m limit --limit 10/min --limit-burst 20

四、实用配置示例

1. 基本防火墙配置(服务器)

# 清除现有规则
iptables -F
iptables -X
iptables -Z# 设置默认策略
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# 允许 SSH 连接
iptables -A INPUT -p tcp --dport 22 -j ACCEPT# 允许 HTTP 和 HTTPS 连接
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT# 允许 ICMP 协议(ping)
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

2. 端口转发配置(nat 表)

# 允许内核转发
echo 1 > /proc/sys/net/ipv4/ip_forward# 将本机 8080 端口转发到 192.168.1.100 的 80 端口
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80# 配置源地址转换(SNAT),使内部服务能正常响应
iptables -t nat -A POSTROUTING -d 192.168.1.100 -p tcp --dport 80 -j SNAT --to-source 本机公网IP

3. 限制连接速率(防止 DoS 攻击)

# 限制 SSH 连接速率(每分钟最多 10 个新连接)
iptables -A INPUT -p tcp --dport 22 -m state --state NEW \-m limit --limit 10/min --limit-burst 3 -j ACCEPT# 超过限制的连接直接丢弃
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j DROP

4. IP 伪装(共享上网)

# 允许内核转发
echo 1 > /proc/sys/net/ipv4/ip_forward# 配置 IP 伪装(将内网 IP 转换为外网接口 IP)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

五、规则的保存与恢复

1. 保存规则

# Debian/Ubuntu 系统
iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6# CentOS/RHEL 系统
service iptables save

2. 恢复规则

# Debian/Ubuntu 系统
iptables-restore < /etc/iptables/rules.v4
ip6tables-restore < /etc/iptables/rules.v6# CentOS/RHEL 系统
service iptables restart

3. 设置开机自动加载

# Debian/Ubuntu 系统:安装 iptables-persistent
sudo apt-get install iptables-persistent# CentOS/RHEL 系统:确保 iptables 服务开机启动
sudo chkconfig iptables on

六、常见问题解决

  1. 配置后无法 SSH 连接

    # 紧急情况下清除所有规则恢复连接
    iptables -F
    iptables -P INPUT ACCEPT
    
  2. 允许特定 IP 访问所有端口

    iptables -A INPUT -s 192.168.1.100 -j ACCEPT
    
  3. 查看规则计数器(判断规则是否生效)

    iptables -L -n -v
    
  4. 删除自定义链

    iptables -X 链名
    

iptables 是一个非常强大的工具,掌握它需要一定的网络知识和实践经验。建议在配置防火墙时先在测试环境验证,再应用到生产系统,避免因规则配置不当导致网络中断。

http://www.dtcms.com/a/500033.html

相关文章:

  • 湖南网站建设加盟代理企业微营销网站
  • 可以大量免费发帖的网站wordpress存档显示文章所有内容
  • BPMN.js与LogicFlow流程设计器核心技术解析
  • python程序打包成win的exe应用(以OCR应用为例)
  • 建设营销型网站价格wordpress固定连接nginx
  • DRF:Django REST Framework框架介绍
  • 不备案 网站 盈利合肥做个网站多少钱
  • 做网站只用php不用html扬中网站建设哪家好
  • Linux内核idr数据结构使用
  • 3.3栈与队列的应用
  • 黑龙江网站开发公司宁波网站建设制作的公司
  • 《CopyOnWriteArrayList / CopyOnWriteArraySet 源码与“大对象复制”事故实录》
  • 做网站的品牌公司有哪些安康市110报警平台
  • 三水住房和城乡建设局的网站一键生成logo免费图
  • 自用EUBIU
  • 省住房城乡建设厅网站保险查询平台
  • 智能PDU在数据中心场景中的应用与解决方案
  • 网站登录界面图片用什么软件做深圳关键词优化报价
  • 中信建设证券官方网站佛山网页设计怎么做
  • Tomcat 类加载器隔离机制的实际应用
  • 咨询网站 模板国泰君安官方网站建设集团
  • Go基础知识(一)
  • 网站开发c外贸企业邮箱哪个好用
  • 鸿蒙Next振动开发指南:打造沉浸式触觉反馈体验
  • 网站美工外包公司改号宝网站搭建
  • h5游戏免费下载:滑雪大挑战
  • 高端制作网站哪家专业湖北建设工程注册中心网站
  • 包管理 pip ,conda;pycharm中使用conda 创建的虚拟环境
  • wordpress 域名使用网站内容优化细节
  • K8s Ingress 详解与部署实战