IPTABLE:Linux下的网络防火墙

IPTABLE:Linux下的网络防火墙

引言

在Linux系统中,IPtable是一种强大的网络防火墙工具,广泛应用于各种网络环境中。它不仅可以实现基本的包过滤功能,还能进行网络地址转换(NAT)、数据包记录、流量统计等高级功能。本文将详细介绍IPtable的定义、架构、原理、应用场景以及常见的命令体系,帮助读者更好地理解和使用这一工具。


一、IPtable定义

IPTABLE是一种网络防火墙,在LINUX下使用,RedHat9.0版本以上自带。它可以实现NAT转换,做上网代理。IPtable位于/sbin/iptables,是Linux防火墙的管理工具,而真正实现防火墙功能的是Netfilter,它是Linux内核中实现包过滤的内部结构。

防火墙(firewall)一词本是建筑用语,本意是为了保护建筑物不受火灾侵害的,后来被借鉴到了网络通信领域中,表示保护局域网或主机不受网络攻击的侵害。防火墙工作在主机或者网络边缘,对于进出的数据报文按照事先定义好的规则进行检查、监控,一旦符合标准,就按照事先定义好的规则处理动作。


二、IPtable架构

IPtable的架构基于Linux内核中的Netfilter子系统,Netfilter提供了数据包过滤、网络地址转换、数据包修改和数据跟踪等功能。IPtable则是控制Netfilter的工具,它将复杂的规则组织成易于管理的方式,方便管理员进行分组测试、启动或关闭某组规则。

1. Netfilter子系统

Netfilter是Linux内核中负责网络数据包处理的子系统,它提供了以下四个表:

  • Filter表:用于包过滤,包含INPUT、FORWARD、OUTPUT三个链。
  • NAT表:用于网络地址转换(IP、端口),包含PREROUTING、POSTROUTING、OUTPUT三个链。
  • Mangle表:用于修改数据包的服务类型、TTL等,包含PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD五个链。
  • Raw表:用于决定数据包是否被状态跟踪机制处理,包含OUTPUT、PREROUTING两个链。

这些表具有一定的优先级:raw -> mangle -> nat -> filter。当数据包经过内核时,会按照这些表的优先级顺序进行检查和处理。

2. 规则链与规则表

IPtable中定义了五个规则链,分别对应数据包经过内核的五个关键地方,称为钩子函数:

  • PREROUTING:在数据包进行路由选择前应用此链中的规则。
  • INPUT:进入防火墙主机的数据包应用此链中的策略。
  • FORWARD:转发数据包时应用此链中的策略。
  • OUTPUT:防火墙主机向外部地址发送的数据包应用此链中的策略。
  • POSTROUTING:在数据包进行路由选择后应用此链中的规则。

每个钩子函数中可以定义多条规则,每当数据包到达一个钩子函数时,IPtable就会从该钩子函数中的第一条规则开始检查,看数据包是否满足规则所定义的条件。如果满足,系统就会根据该条规则所定义的方法处理数据包;否则IPtable将继续检查下一条规则。如果该数据包不符合钩子函数中任一条规则,IPtable就会根据该函数预先定义的默认策略来处理数据包。


三、IPtable原理

IPtable的原理在于对经过内核的数据包进行过滤和处理。数据包在内核空间中处理时,会根据预设的规则链和规则表进行检查和决策。

1. 数据包处理流程

当主机收到一个数据包后,数据包先在内核空间中处理。若发现目的地址是自身,则传到用户空间中交给对应的应用程序处理;若发现目的不是自身,则会将包丢弃或进行转发。

IPtable在数据包经过内核的过程中有五处关键地方,分别是PREROUTING、INPUT、OUTPUT、FORWARD、POSTROUTING,称为钩子函数。IPtable这款用户空间的软件可以在这五处地方写规则,对经过的数据包进行处理。

具体的数据包处理流程如下:

  • 入站流程
    • 数据包到达防火墙后,首先被PREROUTING链处理(是否修改数据包地址等)。
    • 然后进行路由选择(判断数据包发往何处)。
    • 如果数据包的目标地址是防火墙本机(如Internet用户访问网关的Web服务端口),则内核将其传递给INPUT链进行处理(决定是否允许通过等)。
  • 出站流程
    • 防火墙本机向外部地址发送的数据包(如在防火墙主机中测试公网DNS服务时),首先被OUTPUT链处理。
    • 然后进行路由选择。
    • 再交给POSTROUTING链(是否修改数据包的地址等)进行处理。
  • 转发流程
    • 来自外界的数据包到达防火墙后,首先被PREROUTING链处理。
    • 然后进行路由选择。
    • 如果数据包的目标地址是其他的外部地址(如局域网用户通过网关访问QQ服务器),则内核将其传递给FORWARD链进行处理(允许转发、拦截、丢弃)。
    • 最后交给POSTROUTING链(是否修改数据包的地址等)进行处理。
2. 规则匹配与动作

IPtable中定义有表,分别表示提供的功能,有filter表(实现包过滤)、nat表(实现网络地址转换)、mangle表(实现包修改)、raw表(实现数据跟踪)。当数据包到达一个钩子函数时,IPtable会从该钩子函数中的第一条规则开始检查,看数据包是否满足规则所定义的条件。规则一般的定义为“如果数据包头符合这样的条件,就这样处理数据包”。

IPtable中常见的动作有:

  • ACCEPT:允许数据包通过。
  • DROP:直接丢弃数据包,不给出任何回应。
  • REJECT:拒绝数据包通过,必要时会给出提示。
  • LOG:记录日志信息,然后传给下一条规则继续匹配。

如果数据包满足某条规则的条件,IPtable就会根据该条规则所定义的动作处理数据包;否则,IPtable将继续检查下一条规则。如果该数据包不符合钩子函数中任一条规则,IPtable就会根据该函数预先定义的默认策略来处理数据包。


四、IPtable应用场景

IPtable广泛应用于各种网络环境中,可以实现多种网络功能。以下是一些常见的应用场景:

1. 网关服务器安全策略

目标:网关服务器系统自生安全策略,只对内网用户开放特定端口(如sshd服务)。

配置步骤:

  1. 清空filter表和nat表。
  2. 设置默认策略(INPUT链默
Linux Iptables命令列表: 用iptables -ADC 来指定链的规则,-A添加 -D删除 -C 修改 iptables - [RI] chain rule num rule-specification[option] 用iptables - RI 通过规则的顺序指定 iptables -D chain rule num[option] 删除指定规则 iptables -[LFZ] [chain][option] 用iptables -LFZ 链名 [选项] iptables -[NX] chain 用 -NX 指定链 iptables -P chain target[options] 指定链的默认目标 iptables -E old-chain-name new-chain-name -E 旧的链名 新的链名 用新的链名取代旧的链名 说明 Iptalbes 是用来设置、维护和检查Linux内核的IP包过滤规则的。 可以定义不同的表,每个表都包含几个内部的链,也能包含用户定义的链。每个链都是一个规则列表,对对应的包进行匹配:每条规则指定应当如何处理与之相匹配的包。这被称作'target'(目标),也可以跳向同一个表内的用户定义的链。 TARGETS 防火墙的规则指定所检查包的特征,和目标。如果包不匹配,将送往该链中下一条规则检查;如果匹配,那么下一条规则由目标值确定.该目标值可以是用户定义的链名,或是某个专用值,如ACCEPT[通过], DROP[删除], QUEUE[排队], 或者 RETURN[返回]。 ACCEPT 表示让这个包通过。DROP表示将这个包丢弃。QUEUE表示把这个包传递到用户空间。RETURN表示停止这条链的匹配,到前一个链的规则重新开始。如果到达了一个内建的链(的末端),或者遇到内建链的规则是RETURN,包的命运将由链准则指定的目标决定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CloudJourney

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值