基于Linux系统的包过滤防火墙(3)
来源:asp之家 发布时间:2009-09-19 20:21:00
这3个链是系统默认的表(filter)中内置的3个默认主链。每个链都有一个策略,它定义默认目标,也就是要执行的默认操作,当信息包与链中的任何规则都不匹配时,执行此操作。
(2)内核空间接管过滤工作。当规则建立并将链放在filter表之后,就可以开始进行真正的信息包过滤工作了。这时内核空间从用户空间接管工作。
包过滤工作要经过如下的步骤:
1)路由。当信息包到达防火墙时,内核先检查信息包的头信息,尤其是信息包的目的地。我们将这个过程称为路由。
2)根据情况将数据包送往包过滤表(filter)的不同的链。
→如果信息包源自外界并且数据包的目的地址是本机,而且防火墙是打开的,那么内核将它传递到内核空间信息包过滤表的INPUT链。
→如果信息包源自系统本机,并且此信息包要前往另一个系统,那么信息包被传递到OUTPUT链。
→信息包源自广域网前往局域网或相反方向的信息包被传递到FORWARD链。
3)规则检查。将信息包的头信息与它所传递到的链中的每条规则进行比较,看它是否与某条规则完全匹配。
→如果信息包与某条规则匹配,那么内核就对该信息包执行由该项规则的目标指定的操作。
&如果目标为ACCEPT,则允许该信息包通过,并将该包发给相应的本地进程处理。
&如果目标为DROP或REJECT,则不允许该信息包通过,并将该包阻塞并杀死。
→如果信息包与这条规则不匹配,那么它将与链中的下一条规则进行比较。
→最后,如果信息包与链中的任何规则都不匹配,那么内核将参考该链的策略来决定如何处理该信息包。理想的策略应该告诉内核DROP该信息包。
1.2.5 Red Hat linux 9中的Netfilter/iptables
Red Hatlinux9使用2.4版本的内核,并且内核的编译选项中包含对Netfilter的支持,同时iptables软件包是被默认安装的,所以可以直接使用。
另外,为了完成转发功能,必须打开系统内核的IP转发功能。使Linux变成路由器。
在Red Hat中有两种方法:
(1)修改内核变量ip_forward
#echo “1”>;/proc/sys/net/ipv4/ip_forward
(2)修改脚本/etc/sysconfig/network。
将FORWARD_IPV4=false
改为FORWARD_IPV4=true
第2章、用用户空间命令iptables实现包过滤
2.1 相关的TCP/IP知识
2.1.1建立TCP连接(通过3次握手实现)
假如服务器A和客户机B通信。
(1)B->;A。当B要和A通信时,B首先向A发一个SYN标记的包,告诉A请求建立连接。只有当A收到B发来的SYN包,才可以建立连接,除此之外别无它法。因此,如果你的防火墙丢弃所有的发往外网接口的SYN包,那么你将不能让外部任何主机主动建立连接。
(2)B<-A。接着,A收到后会发一个对SYN包的确认包(SYN/ACK)回去,表示对第一个SYN包的确认,并继续握手操作。
(3)B->;A。B收到SYN/ACK包后,B发一个确认包(ACK),通知A连接已建立。至此,3次握手完成,一个TCP连接完成。
需要注意的是,当3次握手完成、连接建立以后,TCP连接的每个包都会设置ACK位。这就是为何连接跟踪很重要的原因了,没有连接跟踪,防火墙将无法判断收到的ACK包是否属于一个已经建立的连接。
2.1.2 结束TCP连接(通过4次握手实现)
假如服务器A和客户机B通信。注意,由于TCP连接是双向连接,因此关闭连接需要在两个方向上做。
(1)B->;A。当B要与A结束通信时,B首先向A发一个FIN标记的包,告诉A请求结束连接。由于连接还没有关闭,FIN包总是打上ACK标记。没有ACK标记而仅有FIN标记的包不是合法的包,并且通常被认为是恶意的。
(2)B<-A。A送出ACK包给B,表示成功地中止B->;A传输通道。不过A->;B可能还有数据包需要传送,所以A->;B传输通道仍旧继续畅通,直到传输完毕才会进入下一步。
(3)B<-A。当A完成B<-A的传输后,便送出ACK/FIN包。
(4)B->;A。B送出ACK包给A进行确认。
2.1.3 发送连接复位包结束TCP连接
4次握手不是结束TCP连接的唯一方法。有时,如果主机需要尽快关闭连接(或连接超时,端口或主机不可达),RST包将被发送。注意,由于RST包不是TCP连接中的必须部分,可以只发送RST包(即不带ACK标记)。但在正常的TCP连接中RST包可以带ACK确认标记。注意,RST包是可以不要收方进行确认的。
2.1.4 无效的TCP标记
至此,已经看到了SYN、ACK、FIN、和RST标记。另外,还有PSH和URG标记。
最常见的非法组合是SYN/FIN包。注意,由于SYN包是用来初始化连接的,它不可能和FIN以及RST标记一起出现,这也是一个恶意攻击。
当网络中出现别的一些组合(如SYN/FIN/PSH、SYN/FIN/RST、SYN/FIN/RST/PSH),很明显网络肯定受到了攻击。
另外,已知的非法包还有FIN(无ACK标记)和“NULL”包。如同早先讨论的,由于ACK/FIN包的出现是为了结束一个TCP连接,那么正常的FIN包总是带有ACK标记的。“NULL”包就是没有任何TCP标记的包(URG、ACK、PSH、RST、SYN、FIN都为0)。
在正常的网络活动下,到目前为止TCP协议栈不可能产生带有上面提到的任何一个标记组合的TCP包。当你发现这些不正常的包时,肯定有人对你的网络不怀好意。
2.1.5 ICMP类型
ICMP是网间控制消息协议,用来在主机/路由器之间传递控制信息的协议。ICMP包可以包含诊断信息(ping、tracerouter)、错误信息(网络/主机/端口不可达),信息(时间戳timestamp,地址掩码addressmask等)、或控制信息(sourcequench、redirect等)。
使用包过滤可以拒绝指定的ICMP类型。
此外,下面类型的ICMP信息建议丢弃。
Redirect(5)、Alternate HostAddress(6)、RouterAdvertisement(9)能用来转发通信。
Echo(8)、Timestamp(13)、AddressMaskRequest(17)能用来分别判断主机是否启动、本地时间和地址掩码。它们是和返回的信息类别有关的。其本身是不能被利用的,但它们泄漏出的信息对攻击者是有用的,所以建议丢弃这些类型的ICMP。


猜你喜欢
- 昨天,我们已经知道了在DedeCMS中,对标题,描述标签的写法,现在,我们应该说说在DedeCMS中,如何做到对内容进行SEO了。如果没有看
- 我们使用搜索引擎的时候,会发现在主流的搜索引擎搜索结果的下方有一个“相关搜索”,这个相关搜索其实就是搜索引擎记录用户行为的过程.百度率先启用
- 很多网友都在抱怨Windows Mail收取邮件后,不能像foxmail那样在服务器上保留邮件原件。其实,并不是Windows Mail不保
- 为了实现图片防盗链,根据网络上搜集的资料加上自己的实践,终于实现了iis下的图片防盗链功能。服务器系统windows 2003 server
- 核心提示: 本文收集了网络上比较常见的和大家比较关心的SEO问题,并附上解决办法1、为什么网站收录在近几天突然下降?答:这个在短时间内是正常
- 有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务主要用三种方式进行这一操作:ln -s
- 我从www.xrnic.cn开通了一个独立IP LINUX空间,空间支持伪静态功能。由于网站根目录下安装的是DEDECMS,bbs目录下安装
- 理论:分析流量统计报告,挑选核心关键词。实践:“阿江守候”网站已安装“51.la流量分析系统”,想知道网站的哪些关键词比较热门,并做出具有针
- 网站的外链一直是各位站长最关注的地方,天天的发贴,做链接,归根到底就是想增加外链数,提高排名.不可否认,目前在百度和Google中,网站外链
- 问题背景:矿秘书网的历史遗留问题,刚开始由于各种问题,一些动态页面都是用了?id=参数的形式,对seo/seo.html" tar
- 校内网更名为人人网后,不断突破原先的限制发展,先是推出两网通行服务,将人人网与旗下开心网(kaixin.com)实现互联互通,从而使人人网和
- PHP5安装图解本文讨论的是Windows2003下安装PHP5,请注意 下载PHP5,下载地址:http://www.php.n
- 前言其实,在服务器的安全设置方面,我虽然有一些经验,但是还谈不上有研究,所以我写这篇文章的时候心里很不踏实,总害怕说错了会误了别人的事。本文
- Linux作为开放式的操作系统受到很多程序员的喜爱,很多高级程序员都喜欢编写Linux操作系统的相关软件。这使得Linux操作系统有着丰富的
- **CentOS7下安装yum源及上传下载命令rz、sz安装方法图文详解** 在这里将yum的安装方法结合实操结果和大家分享一下,希望对需要
- 1、查看iptables -nvL --line-number-L 查看当前表的所有规则,默认查看的是filter表,如果要查看NAT表,可
- 简单的让你的动易SW6.6支持UTF-8动易SW6为什么一直都不支持UTF-8编码呢?相信大家都因为这个很是郁闷吧?不用再郁闷了,从现在开始
- 看了好多的朋友写自己的经历,俺也忍不住写一些!俺是一个失败的站长鸟! 接触网络是在2000年,接触之后的2个月之内就
- 计算机已经真正成为我们的最新科技,几乎遍布我们日常生活的每一方面。所以,我们这个时代的某些最伟大的头脑开始思索起计算机和软件对于人类的重要性
- Linux的广泛应用和快速发展得益于互联网的飞速发展。对于Internet上应用广泛的Web服务来说,Linux表现出色。很难说清目前Int