【IT168 技术】网络已经遍及到我们的身边每一寸土地上,我们在充分使用网络带给我们便利的同时。安全问题也日趋突出。不知道大家以前是怎么加强系统的安全性的。那我想无非也就是安装一些杀毒防毒软件,或者是一些简易防火墙等。但这些东西并不能足以保证网络的安全性。因为网络太脆弱,太危险了!我们都知道现在的网络使用的都是TCP/IP,而TCP/IP诞生于二三十年前,也就是上个世纪未,在那个时候,人们在发明TCP/IP的时候,在发明internet的时候,只是单纯的考虑了网络的连接性,怎么便于连接,也就是咱们现在所说的网络互连性。并没有考虑安全性,因为当前人们并没有想到当时的internet能够在2-30年以后的今天能够如此普及,所以从网络本身来说,从硬件到软件都是不安全的,因为本身设计的时候,就没有把安全性考虑进去,而且随便网络的发展,网络上的闲人也是越来越多,病毒,蠕虫泛滥,据测试现在一个病毒从发明出来到遍步全球的任意一个脚落只需要30秒的时间。而且攻击事件越来越多,攻击方法越来越多,有可能几年前黑客入侵的方法就那么几种,现在随着网络功能的增加,随着网络的普及,攻击的方法也是越来越多。而且现在有的黑客网站也会提供一些简单的攻击方法。那么许多人对于黑客入侵也比较感兴趣。能攻击一下别人很有意思,能被别人攻击更有意思!
▲ 我是黑客!
黑客常用的攻击手段:
黑客常用的攻击手段可以分为网络监听、数据篡改、欺骗、中间人攻击、密码破解和缓冲区溢出。我们从一些黑客网站看到的一些软件或是资料中所介绍的攻击方法也无非就这么多,下面我们来分别介绍一下:
网络监听:我们知道数据在网线上进行传输的时候,传输的应该是01的组合,也就是01的字符。特别是在以太网中,也就是在我们现在所说的局域网中,在这种网络中如果A计算机想给B计算机发一个消息,发一个数据,虽然从感觉上看,这个数据包是从A机传到B上,是一个点到点的数据传输,但实际上,这个数据包从A机发出以后。流到网线之后,这个数据实际上并不是点到点的直接到达B机,它很有可能是同时到达了网络中的所有计算机,这个网络中指的是局域网。然而为什么只有B机能收到,是因为数据包中有相应的目的地址,每一个机器收到相应的数据包后都会做一个判断,如果是自己的就收下,如果不是自己的就丢弃,但我们说这是理想状态,不是自己的就丢弃,那如果对方就不丢弃怎么办?我就安装一个网络监听软件如 eth sniffer 网络监视器等等,又称为网络嗅探器,这种软件可以抓到所有流到我这个网卡上的所有数据包。不管是不是真正发给我的,只要流经我这个网卡,我就可以把它抓出来,并加以分析,就可以得到一些相关的数据。那如果这两台计算机之间发送数据包的时候没有加密,那么就是相当危险的。这就是咱们所说的网络监听。
数据篡改,这个数据篡改应该在网络监听的基础之上来实现的。所谓数据篡改是指先监听网络上的数据,然后把网络上的数据抓下来之后,改成其他的数据。这种攻击方式就其发送方和接收方来说可能根本就不知道发生了篡改,以为你发给我,我也收到了。以为就OK了,以为就是他们原始发送的数据包。这就是所谓的数据篡改,如果数据篡改在某些情况下进行极端的应用,那么会有很可怕的后果。
欺骗: 那么欺骗是什么意思?欺骗其实是在做攻击的时候一种附属的手段。比如说我现在发送一个恶意数据包给一台机器,大家知道TCP/IP在封装数据包的时候会把每一个数据包的包头部分都会封装上一个目标地址和源地址。那么当我发一个攻击数据包的时候我发给了攻击计算机,那如果目标计算机接收到这个攻击数据包之后,通过分析数据包可以知道这个数据包是谁发的。依此可以知道是谁在攻击它,那么现在我们如果在发送攻击数据包的时候,我们把源地址改为别人的地址,那么对方再收到这个数据包就认为是别人在攻击它,而不是我们。当然也可以改成一个根本就不存在的地址。那么即时接收方有能力,也可以分析出数据包,但仍然不知道是谁在攻击它。分析的结果也是错的。当然欺骗也有很多种,如IP地址欺骗,ARP欺骗,DNS欺骗,但是大致原理都类似。
中间人攻击:是利用网络监听和数据篡改结合使用的一种攻击方法,这种攻击方法是在源和目标机器之间再放入一台机器,也就是黑客所使用的计算机,这台计算机能够监视源和目标机器之间所发送和接收的数据。不但能够监听,还能进行篡改。在非对称加密时会使用的一种攻击方法。
密码破解:这应该是黑客最愿意用的一种方法。我们知道现在的服务器操作系统,如果我们不知道对方的密码,肯定是无法进行操作的,如果我们知道某个用户的密码,就可以进行的操作,但我们最愿意知道的肯定还是管理员密码。一旦我们知道了管理员蜜码,我们就想怎么操作,就怎么操作了,比如,给他关机,放一个木马文件,删除文件,格式化磁盘等等。所以做为黑客肯定是最想知道对方的管理员密码,而破解密码我们都知道,现在的密码一般都满足复杂性要求,强密码,所以现在黑客也知道这一点,他们会采用变通的方法,如进行监听http密码FTP密码 SMTP密码等等,默认情况下这些密码都是不加密的,不管你的密码多复杂,我都能轻易的监听到。那么只要监听到这些密码就可以进行相应的操作。
缓冲区溢出:这种攻击方法和结合程序或是软件的漏洞来进行,我们知道每一个软件在设计的时候都会在缓冲区中存放相应的数据,在调用时直接从缓冲区中调用即可,我们知道缓冲区是内存中的区域,比硬盘的读取速度要快,所在程序设计时会把一些数据放在缓冲区中。每一个程序都会定义缓冲区的大小,但是一些程序在定义缓冲区大小的时候,因为考虑不周到,由于疏忽,由于大意,在定义缓冲区的时候没有做过很严格的限制,这样黑客会把他们的代码放到缓冲区中,并且代码的长度会大于缓冲区的容量,一个大的东西放到一个小空间里面,那么就会溢出,所谓就是不够地了,就会溢出到相邻的缓冲区中,那么这代码是经过精心设计的话,那么黑客就能完全控制对方的计算机。这个问题不是由于网络导致的,也不是由于协议的问题,而是由于程序的问题,软件设计的问题。
这六种手段应该是黑客最常用的攻击手段。前五种是都能利用我们今天所讲的IPSEC来解决。
下面我们就来看一下如何通过IPSEC来避免这五种攻击。但我们还需要先介绍攻击方法再来看看怎么对付这几种攻击,就像有人说如果想学会打架,必须先学会挨打一样。
网络安全中的四个安全标准:
在网络安全领域存在以下几个通用的标准:数据保密性、数据完整性、认证以及不可否定性。
这四点大家听起来有点抽象,我们来一一讲解,只要大家能保证你的网络能做到这四个那么你的网络就是安全的,你的系统也是安全的。
我们首先来看第一点:
数据保密性:也就是咱们所说的数据加密,这一点大家比较熟悉,就是保证网络上传输的数据是加密以后的密文。加密方式也分为对称加密、非对称加密等,只是加密不是咱们本文介绍的重点,在此不做详细介绍,以后有机会我们再单独讨论。
数据完整性:保证数据的一致性,发送端发送的数据和接收端所接收的数据是一致的。如何保证数据的完整性,在OS中一般使用的是HASH算法,很有意思的一种算法,可以保证任意一个字符通过这个算法运算之后得到一个固定长度的字符串,一般是128,也就是说不管你的字符串有多长或有多短,只要经过HASH一运算那么就会得到一个128位长度的一个字符串,并且这个算法是单向的,只能把原始数据通过HASH算成128位的一个字符串,反过来,不可能将这个128位的字符串再反算成原始字符,这是达不到的。相当于,我通过运算知道咱们的总年龄400岁,让你反推出每一个人。不可能的。这是算法所决定的。它就能保证数据的完整性。如果A机给B机发一个数据包,我不怕别人看到,我就怕别人给改了,那么我就可以使用HASH算法,因为你只要一改这个值就不一样了。我首先通过HASH算一下,连同文件一起发给对方,对方收到一下也HASH一下,如果一样就说明没有被篡改。如下图所示:
▲ HASH值
上图就是刚刚推出的Win8预览版各种语言的IOS所对应的hash值。如果你下载的文件hash值与此不同,则说明,此文件是不安全的,被篡改过。
认证:对于对方的身份进行审核。如过年回家的时候,火车站经常有警察来抽查身份证,看你是不是中国的良民。出示一下良民证。我们在使用某个计算机的时候也是如此,计算机怎么知道你是不是一个合法用户,一般是通过输入用户名,密码,如果你输入一个有效的用户名,密码,计算机就认为你是一个合法用户。否则就不让你用。回家开门,也是如此。。。。现在很多了,声音身份验证,指纹身份验证,视网膜验证等等。。。。。不同的验证方式用于不同的场合。门禁系统可以使用指纹,密码等。也可以应用于计算机登录系统,远程访问系统等等。但不见得任何场合都行,如DNA验证,只适合于亲子验证,不能使用于开机登录,不然我每次登录,还得把手划个口,滴一口血进去!然后验证没问题了,再可以登录。
不可否定性:说明我干了某件事,我想否定这件事不是我干的,这是不行的。这就叫不可否写性,如干了一件坏事,想否认,不可能的。比如银行系统,你取了一万块钱,取出来之后你说你没取,钱没了,这是不行的。因为后台数据库已经发生了更改。
这是我们在网络安全中所涉及到的四大标准,如果保证了这四大标准应该说你的系统就是安全的。没有问题的,关键是怎么保证你的系统能做到这四点。这就要用到咱们所讨论的正题IPSEC。
IPSEC 概述:
什么是IPSEC:网络安全行内的一个标准,不是WINDOWS所独有的,是一个标准。其他操作系统都支持或是能过其他方法也可以实现。WIN是从2000开始支持这个功能的。而且IPSEC是跨平台的。多个系统可以互相使用,不用考虑操作系统的问题。
使用IPSEC关键是一个问题就是你要理解什么是IPSEC策略,你不管希望IPSEC做什么都是通过策略来实现的。IPSEC也可以被用来实现数据加密,认证,不被篡改或不可否定,但都必须要使用策略来实现,每一个策略中又包含了规则,每一个规则中又包含了筛选器,筛选器动作,身份验证方法等。所以大家发现可能在做IPSEC的时候可以需要理解很多东西。的确,如果我们刚刚接触它的时候,可能会发现这个东西有点不好对付,内容太多了,但如果熟悉了,就会发现这是一个好东西。而且还会包含一些防火墙中的一些功能。
基于Windows平台的IPSEC默认情况下已经自带了三个默认策略:
Client(Respond only)、Server (Request Security )、Secure Server (Require Security)。
安全性是依次增强的。也就是说Client最低、Server其次、而Secure Server安全性最高。
如果你懒的去学如何去定制其他策略,可以使用这三个默认策略,也能实现一些相应的要求,但可能不适合你企业的具体场合。
下面咱们不看这三个默认策略,我们来从零开始看一下如何怎么使用IPSEC,如果这个掌握了,那么这三个默认策略对大家来说就是张飞吃豆芽了。
案例:我给大家演示一利用IPSEC禁用协议
利用IPSEC禁用协议:这个功能我们也是经常使用,我们在防火墙中经常使用这个功能,我们不希望别人PING我,因为他一PING就知道我在线对不对。我不希望别人知道。如ping www.sohu.com等,是不通的。那些机器就是不让你ping 他把PING所使用的协议给你禁用了。这通过防火墙可以,通过IPSEC也可以。但为什么禁用,主要是为了加强网络安全,那PING 一下有什么危险的呢。小心别人的死亡之PING,一个PING包是32字节好像,默认一次PING是四个数据包,这对于对方来说没有什么感觉。那如果有多台机器同时PING你,并把数据包改大,不停的PING,也会对服务器来说是一种威胁。所以我们有时候需要禁用PING 而且大于65500就会蓝屏,所以你在PING的时候这个值你不可能改为65500,但这个值对系统来说已经有影响了。如果大于65500立即蓝屏,WINDOWS不会让你设置的。但是可以使用一些软件来实现。如一个数据包的PING小于65500,我制作两个数据包,然后想办法发给对方,对方来进行组合,那么就得到一个大于65500的包,你们有兴趣可以自己去网上找一下相关的软件。
步骤1:网络准备:
环境介绍,此案例用到两台机器,计算机名分别是being和shanghai,并且要保证它们之间的可以ping通。如下图所示:
▲ 网络准备
步骤2: 在上海上启用IPSEC不让别人PING
Shanghai上操作:运行:MMC 文件---添加/删除管理单元 –添加 IP安全策略管理
▲ 添加IPSEC管理单元
可以看到出现了IPSEC的管理界面:
▲IPSEC管理界面
现在咱们不管这三个默认策略,我们从0开始学习怎么使用IPSEC。
开始了,我们在右边的空白处或是左边右键点击“创建IP安全策略”取个形象名字:NOPING
▲ 创建IP安全策略名称
在IPSEC中有一个默认规则,如果没有其他规则可以使用时,那么就使用这个默认规则,我们现在不需要,所以就不选择。
▲ 不用激活,全新设置
再往下就完了问你是否现在编辑它,也可以选择编辑或是创建成功后编辑也可以。
我们来编辑一下:双击打开就好了 可以看到有一个默认规则,我们没有启用,但我们通过这个默认规则可以看到一个规则有哪些元素构成,有筛选器,筛选器动作,身份验证方式,隧道终点等元素组成。也就是说我们在创建一个规则的时候也要考虑这么几点,但有的元素咱们现在用不到!
我们现在来自己创建一个!点击添加。使用向导可以,不使用向导也可以。这个向导做的有点啰嗦,我不太喜欢使用,所以我就不用了。
▲ 手动添加
再往下:大家看到了有两个数据类型:一个是所有ICMP 一个是所有IP通讯。如果我们禁止PING的话,那么就直接选择ICMP协议就可以了。那么在这里我为了给大家说明一下如何掌握IPSEC的使用我就直接创建一个数据类型,不使用IPSEC,我们还是来“添加” 名称:ping 不使用向导。然后需要定义这个数据类型的属性:
▲
源地址:别人的地址,所以选择任何一个IP,目标地址:我的地址
如果也不需要我PING别人可以选择镜像 就其这个例子来说这个镜像不起作用,咱们一会再说。继续向下看:
▲
然后点击确定就可以看到一个筛选器我们就创建成功了。我们选中,点应用 。但会报:没有定义筛选器动作:
▲
所以我们需要定义筛选器动作:也就是允许还是不允许,还是加密允许,我们在此也不使用自还的,也是自己创建一个:点击添加,不使用向导:
▲
选择“阻止” 并在常规中取一个形象的名字:NO
其他的就不用管了。我们来试一下!行还是不行呢:不行。因为没有启用
我们从BEIJING这个机器上来测试一下:
▲ 测试
发现IPSEC很灵活:需要使用就启用,不需要就否,立即生效,
现在我ping不了别人,别人也ping不了我:
▲ 反向测试
但你发现了它报目标主机不可达,报这个提示信息什么意思,这就说明这个数据包根本就没有出去,是不是?
那我希望ping别人,不让别人ping我,那就很简单了,只需要把镜像取消是不是就可以了。试一下:但又发现了报了另一个错误提示:超时,这是怎么了呢!
▲ 取消镜像,再次测试
请大家帮我分析一下为什么了?
因为PING包是一个来回。现在能出去了,但回来的包是不是也使用的是ICMP协议,你给阻止了。所以就其PING来说你勾不勾这个镜像都一样。这就是怎么通过IPSEC来禁用某个协议。
通过IPSEC来限制Ping只是一个比较简单常用的功能,IPSEC还可以用来实现数据的完整性和不可否认性,但限制篇幅,我们以后再做讨论。