iptables、四表五链、用例及练习

本文详细介绍了Linux防火墙iptables的工作原理,包括其构成的四表五链,规则的添加、修改与过滤操作,以及各类协议和动作的支持。涵盖了实战用例和练习,帮助读者理解并掌握iptables的配置和管理。

目录

一:什么是防火墙

1、什么是防火墙

2、防火墙分类

  3、防火墙的原理

4、防火墙是通过什么过滤网络    

5、什么是表

6、什么是链

7、链的使用场景

8、表和链之间的关系

9、iptables语法格式

10、表和链之间是怎么实现网络过滤的

11、支持过滤的协议有哪些

12、支持过滤的动作

14、Iptables的模块

1、用例及练习

2、用例2


一:什么是防火墙

1、什么是防火墙

防止别人恶意入侵服务器的软件。

2、防火墙分类

从逻辑上讲。防火墙可以大体分为主机防火墙和网络防火墙。
    主机防火墙:针对于单个主机进行防护。
    网络防火墙:往往处于网络入口或边缘,针对于网络入口进行防护,服务于防火墙背后的本地局域网。
    网络防火墙和主机防火墙并不冲突,可以理解为,网络防火墙主外(集体), 主机防火墙主内(个人)。


从物理上讲,防火墙可以分为硬件防火墙和软件防火墙。
    硬件防火墙:在硬件级别实现部分防火墙功能,另一部分功能基于软件实现,性能高,成本高。
    软件防火墙:应用软件处理逻辑运行于通用硬件平台之上的防火墙,性能低,成本低。

  3、防火墙的原理

通过iptables规则操作netfilter系统安全框架,从而实现对网络的安全过滤。

详细描述:
iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的”安全框架”中,这个”安全框架”才是真正的防火墙,这个框架的名字叫netfilter
netfilter才是防火墙真正的安全框架(framework),netfilter位于内核空间。
iptables其实是一个命令行工具,位于用户空间,我们用这个工具操作真正的框架。
netfilter/iptables(下文中简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。


Netfilter是Linux操作系统核心层内部的一个数据包处理模块,它具有如下功能:
网络地址转换(Network Address Translate)
数据包内容修改
以及数据包过滤的防火墙功能

所以说,虽然我们使用service iptables start启动iptables”服务”,但是其实准确的来说,iptables并没有一个守护进程,所以并不能算是真正意义上的服务,而应该算是内核提供的功能。

4、防火墙是通过什么过滤网络    

防火墙是通过四表五链来过滤网络的。

iptables 是集成在 Linux 内核中的包过滤防火墙系统。使用 iptables 可以添加、删除具体的过滤规则,iptables 默认维护着 4 个表和 5 个链,所有的防火墙策略规则都被分别写入这些表与链中。

5、什么是表

    表是具备某些具体功能的防火墙安全过滤规则。

“四表”是指 iptables 的功能,默认的 iptables规则表有 
filter 表(过滤规则表)防火墙
nat 表(地址转换规则表)network address translation网络地址转换功能;内核模块:iptable_nat
mangle(修改数据标记位规则表)、拆解报文,做出修改,并重新封装 的功能;iptable_mangle
raw(跟踪数据表规则表):关闭nat表上启用的连接追踪机制;iptable_raw

filter 表:控制数据包是否允许进出及转发,可以控制的链路有 INPUT、FORWARD 和 OUTPUT。
nat 表:控制数据包中地址转换,可以控制的链路有 PREROUTING、INPUT、OUTPUT 和 POSTROUTING。
mangle:修改数据包中的原数据,可以控制的链路有 PREROUTING、INPUT、OUTPUT、FORWARD 和 POSTROUTING。
raw:控制 nat 表中连接追踪机制的启用状况,可以控制的链路有 PREROUTING、OUTPUT。


6、什么是链

    链是将表的过滤规则放置在具体的位置去执行。

“五链”是指内核中控制网络的 NetFilter 定义的 5 个规则链。每个规则表中包含多个数据链:
INPUT(入站数据过滤)、
OUTPUT(出站数据过滤)、
FORWARD(转发数据过滤)、
PREROUTING(路由前过滤)、
POSTROUTING(路由后过滤)

防火墙规则需要写入到这些具体的数据链中。

 Linux 防火墙的过滤框架如下:

Linux命令

 如果是外部主机发送数据包给防火墙本机,数据将会经过 PREROUTING 链与 INPUT 链;如果是防火墙本机发送数据包到外部主机,数据将会经过 OUTPUT 链与 POSTROUTING 链;如果防火墙作为路由负责转发数据,则数据将经过 PREROUTING 链、FORWARD 链以及 POSTROUTING 链。
 

7、链的使用场景

流入:PREROUTING   --->   INPUT
	>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	
	流出:POSTROUTING  <---   OUTPUT
	<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
	
	流经:PREROUTING  --->  FORWARD  --->  POSTROUTING
	>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 报文流向经过的链

到B网络某进程的报文:PREROUTING –> INPUT

由B网络的某进程发出报文:OUTPUT –> POSTROUTING

由B网络转发的报文:PREROUTING –> FORWARD –> POSTROUTING

 

8、表和链之间的关系


	filter : IN
### iptables的口诀记忆方法 iptablesLinux 系统中用于配置防火墙规则的强大工具,其核心概念围绕“”展开。以下是关于的记忆口诀及详细说明: #### **一、功能概述** iptables分别是: - **filter **:负责过滤数据包,决定是否允许数据包通过。 - **nat **:负责网络地址转换(NAT),主要用于端口转发和 IP 地址映射。 - **mangle **:用于修改数据包的内容或标记数据包,适用于 QoS(服务质量)控制。 - **raw **:用于指定数据包是否参与连接跟踪机制。 | 名 | 功能描述 | |---------|------------------------------------------| | filter | 过滤数据包(默认) | | nat | 网络地址转换(如端口转发、IP伪装) | | mangle | 修改数据包内容(如TTL、QoS标记) | | raw | 禁用连接跟踪 | #### **二、功能概述** 分别是: - **PREROUTING **:数据包进入路由前处理。 - **INPUT **:目标地址是本机的数据包处理。 - **FORWARD **:目标地址不是本机的数据包处理。 - **OUTPUT **:本机生成的数据包处理。 - **POSTROUTING **:数据包离开路由后处理。 | 名 | 触发条件 | |-----------------|-------------------------------------| | PREROUTING | 数据包到达网卡后立即触发 | | INPUT | 数据包的目标地址是本机 | | FORWARD | 数据包的目标地址不是本机 | | OUTPUT | 数据包由本机生成 | | POSTROUTING | 数据包即将离开本机 | #### **三、记忆口诀** 为了方便记忆 iptables,可以使用以下口诀: - **口诀**: **过(filter)、转(nat)、改(mangle)、生(raw)** - “过”代 filter ,用于过滤数据包。 - “转”代 nat ,用于地址转换。 - “改”代 mangle ,用于修改数据包内容。 - “生”代 raw ,用于控制数据包是否参与连接跟踪。 - **口诀**: **进前(PREROUTING)、入内(INPUT)、转发(FORWARD)、出外(OUTPUT)、走后(POSTROUTING)** - “进前”示数据包在进入路由前触发 PREROUTING 。 - “入内”示目标地址为本机的数据包触发 INPUT 。 - “转发”示目标地址非本机的数据包触发 FORWARD 。 - “出外”示本机生成的数据包触发 OUTPUT 。 - “走后”示数据包离开路由后触发 POSTROUTING 。 #### **、实际应用示** 以下是一个简单的端口转发规则,展示如何结合 nat 和 PREROUTING 实现外网访问公网 IP:8080 转发到内网服务器 192.168.1.100:80[^2]: ```bash iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to 192.168.1.100:80 ``` #### **、总结** 通过以上口诀,用户可以快速记住 iptables及其功能。此外,理解每个的具体应用场景对于实际操作至关重要。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值