题记:
在 Linux 服务器安全体系里,iptables 是绕不开的核心工具。它轻量、强大、免费,既能做单台主机的访问控制,也能做网关转发与 NAT 规则。这篇博客带你从零吃透 iptables 基本原理、表 / 链结构和常用命令,看完就能直接上手配置。
一、实验描述
本实验对iptables进行了简单介绍,要求学习者了解iptables防火墙的基础知识。
二、实验目标
了解iptables防火墙的基础知识。
三、实验内容
首先对防火墙的分类进行简单说明,然后对iptables、iptables的结构、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命令的管理控制选项
表格
3.6 iptables规则常用到的处理动作
表格
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 iptables4.3 查看 iptables 使用手册
man iptables按回车键可查看更多内容,按 q 退出。
4.4 查看当前规则
sudo iptables -L -n -v4.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,再设默认拒绝,避免把自己锁门外
默认评论
Halo系统提供的评论