linux IPTABLES包过滤防火墙详解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据包穿越FILTER表的流程图
入站包
路由
FORWARD
出站包
OUTPUT INPUT 本地处理进程
RHEL4中的netfilter/iptables
在此系统中该架构的软件包是被自动安装的。 可直接使用。 另外为了要完成转发也就是说让LINUX系统成 为路由器,所以必须打开内核转发功能。 有两种方法: 1、修改内核变量 echo “1” >/proc/sys/net/ipv4/ip_forward 2、修改脚本/etc/sysconfig/network 将FORWARD_IPV4=false(将false改为true)
相关的TCP/IP知识
TCP通过三次握手建立通信 假如A和B通信,1、首先A向B发一个SYN标记的 包请求联接,只有对方接到这个包才可建立联 接。(换句话说如果你的防火墙丢弃所有SYN 包,那么你将不能与外网的任何主机建立连接) 2、接着B会对A发一个确认SYN的包SYN/ACK, 继续握手操作 3、A会再往B发一个确认包, 至此通信建立。
其他的ICMP支持 iptables支持一些其他不常见或路由专用的ICMP消息类型和 子类型。用下面的iptables帮助命令可以查看其整个列表: iptables -P icmp -h
filter表目标扩展
目标动作除了DROP与ACCEPT外还有如 下扩展目标动作: -j LOG
目标动作除了DROP与ACCEPT外还有如下扩展目标动作: -j REJECT
Netfilter/iptables架构
其实架构就是指一套能在LINUX系统中方便用户完成 系统中方便用户完成 其实架构就是指一套能在 防火墙配置及管理的工具。 防火墙配置及管理的工具。 从内核版本为1.1的时候 从内核版本为 的时候LINUX就有了包过滤的功能 就有了包过滤的功能 的时候 随内核版本的升级, 了,随内核版本的升级,LINUX下的包过滤经历了如 下的包过滤经历了如 下的阶段: 下的阶段: 1、在内核为2.0的时候 采用ipfwadm来操作内核包过 1、在内核为2.0的时候,采用ipfwadm来操作内核包过 的时候, 滤规则 2、在内核为 、在内核为2.2时,采用 时 采用ipchains 3、在内核为 、在内核为2.4以后采用一个全新的内核包过滤管理工 以后采用一个全新的内核包过滤管理工 具 iptables 其中, 其中,IPTABLES较前两种工具而言更具优先性和易用 较前两种工具而言更具优先性和易用 性。
拒绝本地主机或网段与其他主机或网段的指定端口连接 允许本地主机或网段与其他主机或网段的指定端口连接
包过滤的操作流程
其实包过滤的流程与华为路由器中的ACL的过程差不多少。
存储包过滤规则 分析包头字段IP、UDP、TCP 应用下一个包规则
是
包规则是否允许
允许包 是
包规则是否阻塞
否
是否是最后一个包规则
阻塞包 是
####注意#### ####注意#### 注意 netfilter/iptables系统的含意为:在 系统的含意为: 系统的含意为 linux2.4内核中 内核中netfilter是新的用来实现防火 内核中 是新的用来实现防火 墙的过滤器, 是用来指定netfilter规 墙的过滤器,iptables是用来指定 是用来指定 规 则的用户工具。 则的用户工具。 Iptables只是一个管理内核包过滤的工具,它 只是一个管理内核包过滤的工具, 只是一个管理内核包过滤的工具 为用户配置防火墙规则提供了方便。 为用户配置防火墙规则提供了方便。Iptables 可以加入、插入、或删除核心包过滤表格、 可以加入、插入、或删除核心包过滤表格、链 中的规则, 中的规则,实际上真正执行这些规则的是 netfilter及相应模块(NAT等)。 及相应模块( 及相应模块 等
CIW安全课程 之 基于IPTABLES的 基于 的 包过滤防火墙
王世宏 金铖计算机学校
包过滤防火墙简介 包过滤防火墙
所谓包过滤就是由一个软件查看所流经的数据包的包头, 由此决定整个数据包的命运。它可能会决定是丢弃(DROP) 还是接受(ACCEPT)也可能执行更为复杂的动作。 在LINUX系统中包过滤是基于内核的 包过滤的工作层次是在网络层。(因为防火墙是基于路由 的所以在第三层)
Iptables语法
Iptables规则基本上应该包含5个要素。 1、指定表(table)<防火墙只使用filter> 2、指定操作命令(CMD)<包括添加、删除、更新> 3、指定链(chains)<前文所讲的三个> 4、指定规则匹配器(matcher)<可指定多种匹配如:IP、端口、包类型。 5、指定目标动作(target)<此项为重要内容,如果没有此项内容链的操作将无意 义,主要包括这些:ACCEPT表示允许包通过 DROP丢弃。REJECT表示拒绝包, 给发送者发送没有接受的通知。 通常可以写为如下的简化形势 iptables[-t table] CMD [chain] [rule-matcher][-j target] **** 操作命令**** -A 在所选链链尾加入一条或多条规则 -D 从所选链中删除一条或多条匹配的规则 -R 在所选链中替换一条匹配的规则 -L 列出指定链中所有的规则 -F 清除指定链和表中的所有规则 -N 以给定的名字建立一个用户自定义链
对链的操作
列表命令带有额外的选项
常用的创建和删除规则链中规则的命令
规则匹配器参数
TCP头部匹配
udp头部匹配
ICMP头部匹配
主要支持的ICMP类型名和数值如下所示: · echo-reply (0) · destination-unreachable (3) · network-unreachable · host-unreachable · protocol-unreachable · port-unreachable · fragmentation-needed · network-unknown · host-unknown · network-prohibited #网络被禁止 · host-prohibited #主机被禁止 · source-quench (4) #源抑制(可能是发包太快会收到此消息警告) · redirect (5) #重定向 · echo-request (8) #PING请求 · time-exceeded (11) #超时 · parameter-problem (10) #参数问题
当用户用IPTABLES往链中添加完规则之后,内核空间接管过滤的工作。 ####包过滤工作经过如下步骤### 1、路由,当信息包到达防火墙时,内核先检查包头信息,尤其是目标IP。 2、根据情况将数据包送往过滤表(filter)的不同链 如果信息包源自外界并且数据包的目的地是本机,且防火墙是打开的, 那么内核将其放入INPUT链。 如果信息包源自本机或系统所连接的内部网上的其他源,并且想前往另 一个外部系统,那么内核将其送往OUTPUT链。 如果信息包源自外部系统并前往外部系统,刚被传递到FORWARD链 3、规则检查,将信息包的头信息与它所传递到的链中的每条规则进行比较, 看是否与某条规则完全匹配。 配置RULE的则按规则中指定操作进行。如:ACCEPT或DROP、REJECT 如果不匹配当前规则则继续往下一条规则匹配。 最后如果信息包与链中的任何规则都不匹配,那么内核一般丢弃该包。
包过滤防火墙的工作原理
使用过滤器,数据包的过滤用在内部主机和外部主机 之间,而过滤系统是一台路由器或是一台主机。过滤 系统根据过滤规则来决定是否让数据包通过。而用于 过滤数据包的路由器被称作过滤路由器。 internet 过滤路由器 内部网络
数据包过滤是通过对数据包的IP头和TCP或UDP头的检查 来实现的。其检查的对象主要包括: IP源地址 IP目标地址 协议(TCP包、UDP包和ICMP包) TCP和UDP包的源端口 TCP和UDP包的目标端口 ICMP消息类型 TCP包头中的SYN位 数据包到达的接口 数据包出去的接口
Netfilter/iptables的用途
建立internet 防火墙 用NAT和伪装共享上网(伪装是NAT的一 种) 用NAT实现透明代理 复杂一点的能够实现QOS路由
Netfilter/iptables的内核空间和 用户空间
实际上Netfilter/iptables看似一个实体, 但是由两种组件组成,即: 1、内核空间:即Netfilter组件,是内核 的一部分。由一些表(TABLE)组成, 每个表由若干链(CHAINS)组成,每个 链中又可以加入若干规则(RULE)
多端口匹配例子
multiport的语法比较灵活。这里有一些例子和注意事项。下面的 这个规则阻塞到达接口eth0的入站数据包,这些数据包的目的地 址为与NetBIOS和SMB有关的UDP端口或微软Windows计算机常用 的但已成为蠕虫攻击目标的端口: iptables -A INPUT -i ethO -p udp\ -m multiport --destination-port 135,136,137,138,139 -j DROP 下一个规则阻塞从eth0接口发送到与TCP服务NFS、socks和squid 相关的高端端口的连接请求: iptables -A OUTPUT -o eth0 -p tcp\ -m multiport --destination-port 2049,1080,3128 --syn -j REJECT 本例中需要注意的是多端口命令必须紧跟在协议定义的后面。如 果--syn放在-P tcp和-m multiport之间,就会有语法错误产生。
过滤路由器与普通路由器的区别
过滤路由器在在提供普通路径选择的同时还要仔细的 查看数据包,以决定是否应该发送这个数据包。当然 是由自己的决策所限制的(由管理员设定) 另外过滤路由器(防火墙)又被称作是包过滤网关, 主要因为它涉及到了传输层。
路由器的过滤决策主要有:
拒绝来自某主机或某网段的所有连接 允许来自某主机或某网段的所有连接 拒绝来自某网段和某主机的指定端口的连接 允许来自某网段和某主机的指定端口的连接 拒绝本地主机或网段与其他主机或网段的所有连接 允许本地主机或网段与其他主机或网段的所有连接
源自文库 内核各表中包含的链
iptables根据不同的数据包处理功能使用不同的规则表。 filter——filter表是默认的表。它包含真正的防火墙过滤规则。内建的规 则链包括: ·INPUT ·OUTPUT ·FORWARD nat——nat表包含源和目的地址和端口转换使用的规则。这些规则在功 能上不同于防火墙过滤规则。内建的规则链包括: ·PREROUTING(DNAT/REDIRECT) ·OUTPUT(DNAT/REDIRECT) ·POSTROUTING(SNAT/MASQUERADE) mangle——mangle表包含用于设置特殊的数据包路由标志的规则。这些 标志随后被filter表中的规则检查。内建的规则链包括: ·PREROUTING(被路由的数据包) ·INPUT(到达防火墙并通过PREROUTING规则链的数据包) ·FORWARD(修改通过防火墙路由出去的数据包) ·POSTROUTING(在数据包通过OUTPUT规则链之后但离开防火墙之前修 改数据包) ·OUTPUT(本地产生的数据包)
本章相关重点2
在包过滤防火墙的配置中,我们可以把 一些规则纳入到filter表中的各链。 Filter表中默认有三个链,分别是: 1、INPUT(存放入站信息包规则) 2、OUTPUT(存放出站信息包规则) 3、FORWARD(存放正在转发的信息包 的规则) 具体的过滤实现原理的步骤见下:
过滤原理及步骤
Netfilter/iptables用户空间
用户空间:即iptables组件,它是一种工 具,使插入、修改或者除去过滤表中的 规则变的简单。
本章相关重点1
LINUX系统中默认有三张表格即: filter(包过滤)NAT、mangle.每个表 (内核空间)中又有默认的链。其中 mangle表不常使用,还在进一步开发中。 本单元重点讲FILTER表。(NAT表将在 下一单元详述)
filter表匹配扩展
filter表的匹配扩展提供了对TCP、UDP和ICMP头部的访问,和 一些可在iptables中进行匹配的特性,像维持连接的状态、端口列 表、访问硬件的MAC源地址和IP的TOS字段。 匹配扩展要求-m或--match命令来装载模块,后面跟着任何相 关的匹配选项
1.multiport filter表匹配扩展 每个multiport端口列表最多可以包括15个端口。不允许有空格。命令和端口值之 间可以没有空格。列表中不能使用端口范围。另外,-m multiport命令必须紧跟在 -P<protocol>定义的后面。