← 返回首页

实验:介绍iptables防火墙

📝 _

题记:

在 Linux 服务器安全体系里,iptables 是绕不开的核心工具。它轻量、强大、免费,既能做单台主机的访问控制,也能做网关转发与 NAT 规则。这篇博客带你从零吃透 iptables 基本原理、表 / 链结构和常用命令,看完就能直接上手配置。

一、实验描述

本实验对iptables进行了简单介绍,要求学习者了解iptables防火墙的基础知识。

二、实验目标

了解iptables防火墙的基础知识。

三、实验内容

首先对防火墙的分类进行简单说明,然后对iptablesiptables的结构、iptables的基本语法格式进行介绍。

四、实验环境

Ubuntu(推荐 Ubuntu 20.04 / 22.04 LTS

主机登录名:root(或使用 sudo 提权)

注:Ubuntu 默认可能未启用 root 登录,可使用普通用户加 sudo 执行 iptables 命令。

五、实验步骤

1. 防火墙的分类

1.1 从防火墙作用范围讲

主机防火墙:作用于单个计算机系统,例如个人电脑上Windows自带的防火墙,Linux系统上的iptables

网络防火墙:往往处于网络入口或边缘,对企业网络入口进行防护,服务范围为整个企业的内部网络。

网络防火墙和主机防火墙在企业网络架构中所处的网络位置不一样,它们的结合能使企业网络更安全。

1.2 从产品形态讲

硬件防火墙:在硬件级别实现部分防火墙功能,另一部分功能基于软件实现,性能高,成本高。

软件防火墙:应用软件处理逻辑运行于通用硬件平台之上的防火墙,性能低,成本低。

1.3 按照功能分为

包过滤型防火墙:用一个软件查看所流经的数据包的包头(header),由此决定整个包的命运。可能会决定丢

弃(DROP)、接受(ACCEPT)或执行其他更复杂的动作。

状态检测型防火墙:采用了状态检测包过滤的技术,是传统包过滤上的功能扩展。

代理型防火墙:通过一种代理(Proxy)技术参与到一个TCP连接的全过程。

2. iptables 介绍

2.1 核心类型与工作层次

iptables 防火墙属于包过滤型,工作在网络层,针对 IP 数据包,体现在对包内的 IP 地址和端口等信息的处理上(源 IP、端口和目标 IP、端口)。

2.2 组成结构与运行空间

iptables 防火墙由 netfilter 和 iptables 组成。iptables 其实并不是真正的防火墙,可以理解为一个命令行工具,位于用户空间,用这个工具操作 "安全框架"。netfilter 是防火墙真正的安全框架(framework),位于内核空间。

2.3 Netfilter 核心功能

  • Netfilter 是 Linux 操作系统内核的一个数据包处理模块,主要有如下功能:

  • 网络地址转换 (NAT)

  • 数据包内容修改

  • 包过滤防火

3. iptables结构

3.1 iptables由4张表、5条链和用户在链内写入的各种规则所组成.

3.2 表(按照功能分类)

  • raw表:用来决定是否对数据包进行状态跟踪(不常用)

  • mangle表:为数据包设置标记,有ACK、SYN、FIN、RST、PSH、URG等(不常用)

  • nat表:修改数据包的IP地址、端口等信息(网关型防火墙常用)

  • filter表:确定是否放行数据包(常用)

  • 多表优先级顺序图

多表优先级顺序图

iptables中各个表的处理顺序:从优先级最高的raw表开始,依次经过mangle表、进行目标地址转换(DNAT)的nat表、filter表,最后到达优先级最低的源地址转换(SNAT)部分。

3.3 链(按照时机分类)

  • INPUT:处理入站请求包

  • OUTPUT:处理出站包(响应、应答包)

  • FORWARD:处理转发数据包,实现不同网段间的通信

  • PREROUTING:在包做路由选择之前应用此链的规则

  • POSTROUTING:在数据包做路由选择之后应用此链的规则

3.4 iptables规则介绍

  • 规则:网络管理员预定义的条件,一般的定义为"如果数据包头符合这样的条件,就这样处理这个数据包"。规 则存储在内核空间的信息包过滤表中,分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服 务类型(如HTTP、FTP、SMTP)等。

  • 当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(ACCEPT)、拒绝 (REJECT)和丢弃(DROP)等。配置防火墙的主要工作是添加、修改和删除规则

3.5 iptables命令的管理控制选项

表格

选项

说明

-A

在指定链末尾追加一条新规则

-D

删除指定链中的某条规则(按序号 / 内容)

-I

在指定链中插入规则,默认插在第一行

-R

修改、替换指定链中的某条规则

-L

列出指定链中所有规则

-E

重命名用户自定义链

-F

清空规则

-N

新建用户自定义规则链

-X

删除指定表中用户自定义链

-P

设置指定链的默认策略

-Z

清空所有链的数据包与字节计数器

-n

以数字形式显示

-v

显示详细信息

-V

查看版本

-h

获取帮助

-x

显示精确值

--line-numbers

显示规则编号

3.6 iptables规则常用到的处理动作

表格

动作

说明

匹配 (match)

符合指定条件(IP、端口等)

丢弃 (drop)

静默丢弃数据包,无任何回应

接受 (accept)

放行数据包

拒绝 (reject)

拒绝并向源主机返回错误消息

目标 (target)

规则指定的处理动作

跳转 (jump)

跳转到另一条规则链继续匹配

4. iptables 的基本语法格式

4.1 基本语法

Ubuntu 下同样可以使用 iptables 进行操作 (需安装:apt install iptables)。

基本语法格式:

iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转]

详细格式:

iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名 > -p 协议名 <-s 源 IP / 源子网 > --sport 源端口 <-d 目标 IP / 目标子网 > --dport 目标端口 -j 动作

说明:

  • 表名、链名:用于指定 iptables 命令所操作的表和链

  • 命令选项:用于指定管理 iptables 规则的方式 (插入、增加、删除、查看等)

  • 条件匹配:用于指定对符合什么样条件的数据包进行处理

  • 目标动作或跳转:用于指定数据包的处理方式 (允许通过、拒绝、丢弃、跳转等)

4.2 安装 iptables (Ubuntu)

sudo apt update

sudo apt install iptables

4.3 查看 iptables 使用手册

man iptables

按回车键可查看更多内容,按 q 退出。

4.4 查看当前规则

sudo iptables -L -n -v

4.5 示例命令

#查看 filter 表的规则

sudo iptables -L -n

#查看 nat 表的规则

sudo iptables -t nat -L -n

#允许 SSH 连接

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

#禁止某个 IP 访问

sudo iptables -A INPUT -s 192.168.1.100 -j DROP

快速总结

  • filter 表管放行,INPUT/OUTPUT/FORWARD 最常用

  • nat 表管转发,PREROUTING/POSTROUTING 做映射

  • 规则从上到下匹配,匹配即停止

  • 先放行 SSH,再设默认拒绝,避免把自己锁门外

相关文章

加载中...
版权声明

本文由 知栖小筑 创作,采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处。

评论