使网络更加安全可靠

我们每天在网络中都会遇到很多潜在的攻击者,大部分攻击者通过特殊手段将木马程序植入用户计算机中,以获取用户数据或对其进行破坏,还有一些特殊的攻击者只是单纯地干扰我们的网络通信,导致我们的网络环境变得不稳定,今天我们就谈一谈防范这样的攻击者的有效途径。

干扰用户网络通信的攻击又称为远程拒绝服务攻击,这类攻击通常把禁止用户和某些特定目标进行通信作为最终目的。这些攻击者一般的目的是抢占网络资源,或者是其他一些特殊的目的。

远程拒绝服务攻击一般可以分为ARP攻击、链接重置攻击、DNS污染攻击和数据包丢弃攻击。ARP攻击大部分防火墙产品都已经可以防范,在此不做讨论,下面多谈谈其他三种攻击。

链接重置攻击。当用户要和某一服务端进行通信时,往往会使用TCP/IP协议进行三次握手,当双方根据特定的协议建立连接后双方开始通信。链接重置攻击即第三方冒充服务端与用户通信,并将链接重置数据包发给用户,做出远程服务端拒绝连接的假象,用户主动断开连接。

DNS污染攻击。顾名思义,即用户键入域名查询得到的ip地址为虚假ip。由于DNS服务协议是先到为主,这样只要攻击者返回的虚假ip信息比真实信息先到,用户就会接受虚假的信息而抛弃真实的信息。

数据包丢弃攻击。这个攻击与前两个攻击不同,这种攻击往往是用户线路路由规则设置导致的,而非是任意第三方可以发起的攻击。如果用户受到此类攻击,应该联系网络管理员或ISP服务商检查路由设置是否出现了问题。

下面谈谈如何防范以上三种攻击。

对于DNS攻击,我们可以使用DNS Proxy[1]进行防范。LocalDNS的工作原理是当接收到第一个信息包会等待一段时间,如果又接收到了数据包则抛弃第一个数据包。很明显DNS Proxy将DNS服务协议调整为后到为主。

对于链接重置攻击和数据包丢弃攻击我们无法通过在本机上安装软件进行防范,但我们有一个变通的方法。一般大多数链接重置攻击和数据包丢弃攻击都是针对ipv4协议的链接,对于ipv6链接的影响非常小,所以我们可以使用ipv6协议访问网络。虽然ipv6给我们提供了一个可行的方案,但可惜的是并非所有的服务端都支持ipv6,所以我们需要一个ipv6和ipv4转换访问的接口。

Google提供了出色的应用服务[2],我们之所以会选择Google的服务就是因为Google的服务免费而且支持ipv6和ipv4双协议,这样用户和Google之间可以使用相对稳定的ipv6协议,而Google和目标服务端直接可以使用普及广泛的ipv4协议,Google将用户请求的ipv4数据包抓取后,通过ipv6协议再传送回给用户。

整个数据传送过程可以解释为以下步骤:

发起者 信息 接收者 注释
用户 查询DNS DNS服务器 用户请求查询DNS
攻击者 虚假DNS结果 用户 攻击者进行DNS污染,抢先发送虚假DNS结果,DNS Proxy等待正确结果
DNS服务器 真实DNS结果 用户 DNS服务器返回真实DNS信息,DNS Proxy接受信息
用户 请求远程服务端数据 Google服务器 用户将ipv4请求通过ipv6协议发送给Google服务器
Google服务器 访问目标服务端获取数据 目标服务端 Google服务器通过ipv4协议访问远程服务端获取用户请求数据
目标服务端 发送用户请求数据 Google服务器 目标服务端将用户请求数据通过ipv4发送给Google
Google服务器 发送用户请求数据 用户 Google通过ipv6协议将请求数据返回给用户

 

至此整个信息传递过程结束,用户有效地躲避了以上谈到的三种攻击。另外,有些DNS服务器是不可信的,在此推荐几个可信的DNS服务器:

1、8.8.8.8(Powered by Google)

2、8.8.4.4(Powered by Google)

3、208.67.222.222(Powered by OpenDNS)

4、208.67.220.220(Powered by OpenDNS)

必要时可以配合hosts文件使用。

外部链接:

[1] http://x.co/X3LK

[2] http://x.co/X3Kx

本文不接受“不便展示”的评论,感谢您的配合。

说说ipv6的那点事

很多同学不知道ipv6是神马东西,其实ipv6和ipv4是属于同一类的东西——协议。我们熟知的ip地址,如本地网卡寻回地址127.0.0.1,局域网中的地址192.168.0.1,外网地址202.198.72.176等等,这些都是ipv4地址。按照ipv4地址的规则,从0.0.0.0一直到255.255.255.255一共有大约42亿个地址,不过很不幸的是目前的余量不足5%,预计在53天后所有ipv4地址均会分配完毕。

这就好比电话号码(不甚恰当,只是举个例子),从1000000到9999999的所有号码都被分配完了,那么电话局往往会增加一位,如在原号码前加8,扩大电话号码的容量以满足更多的电话接入申请者。

ipv6的出现正是为了解决ipv4余量不足的问题而采取的举措,不过当然不会像我前面举的电话号码那个例子那么简单,ipv6和ipv4长得一点也不像。2404:6800:8007::63是ipv6.google.com的ipv6地址,ipv6不像ipv4那样数字间用圆点(.)隔开,而是用冒号(:)隔开,同时两个连在一起的冒号(::)是缩写方式,代表n个全零段。ipv6每段数字最大为ffff(16进制),共8段,而ipv4每段数字最大为ff(16进制),共4段,这样算来ipv6总量是ipv4的7.92×1028倍!

ipv6不仅解决了ipv4总量不足的缺点,而且在安全上也大大增强。之前TCP/IP协议对安全验证上做得很不好,这样使得拒绝服务攻击变得很容易,只要在TCP/IP协议三次握手中想双方通信者发送RST包就可以阻止双方继续通信。ipv6将改变这一现状,使TCP/IP协议更加安全可靠。

目前高校基本都开通了ipv6,而民用还未普及。2011年6月将举行ipv6 Day,以Google、Facebook和Yahoo为首的三大网络巨头将带头进入ipv6时代。那么我们不妨也凑凑ipv6的热闹,即使我们的ISP没有开通ipv6。

首先我们需要架设隧道,不要紧张,其实非常简单,不要任何技术。如果你之前通过网上的教程用HE.NET建立过隧道,那么你可以跳过了,如果你没有,那么下载一款叫做“紫狐”的浏览器吧,这个是清华大学搞的,没有问题的,用的是开源的火狐浏览器的核心。当你第一次运行它时,它会自动为你架设好隧道。

然后就是测试你的DNS是否能正常解析ipv6。打开命令提示符,使用ping命令,如ping ipv6.google.com看是否能返回正确的ipv6结果,如果不能,尝试用ping ipv6.google.com -6试试。一般加上-6这个参数都能获得正确的ipv6地址。如果你不加参数不能获得(多半都是win7用户吧?xp用户都能正确得到的),目前我的办法也只是修改本机hosts文件了(c:/windows/system32/drivers/etc/hosts),通过ping -6获得网站的ipv6地址后添加进去。

通过这一番折腾,你发现你可以上很多ipv6的网站了(需要之前添加这些网站的ipv6地址到hosts文件)。不过当然,我写这篇文章可不是只教大家上ipv6的网站,我是为了普及大家的知识哦。如果上面哪里我说的不准确还请大家多多指教,因为ipv6我现在研究得也只是表面而已。