免费注册 找回密码     

查看: 2796|回复: 0
打印 上一主题 下一主题

如何在Windows 2000中预防Ping攻击

[复制链接]

2万

主题

2万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

跳转到指定楼层
1
发表于 2009/12/2 16:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在Win2000中如何关闭ICMP(Ping) ?

  ICMP的全名是Internet Control and Message Protocal即网际网路控制消息/错误报文协定,这个协定主要是用来进行错误资讯和控制资讯的传递,例如著名的Ping和Tracert工具都是利用ICMP协议中的ECHO request报文进行的(请求报文ICMP ECHO类型8代码0,应答报文ICMP ECHOREPLY
类型0代码0)。

  ICMP协议有一个特点---它是无连结的,也就是说只要发送端完成ICMP报文的封装并传递给路由器,这个报文将会象邮包一样自己去寻找目的地址,这个特点使得ICMP协议非常灵活快捷,但是同时也带来一个致命的缺陷---易伪造(邮包上的寄信人位址是可以随便写的),任何人都可以伪造一个ICMP报文并发送出去,伪造者可以利用SOCK_RAW编程直接改写报文的ICMP首部和IP首部,这样的报文携带的源位址是伪造的,在目的端根本无法追查,(攻击者不怕被抓那还不有恃无恐?)根据这个原理,外面出现了不少基于ICMP的攻击软体,有通过网路架构缺陷制造ICMP风暴的,有使用非常大的报文堵塞网路的,有利用ICMP碎片攻击消耗伺服器CPU的,甚至如果将ICMP协定用来进行通讯,可以制作出不需要任何TCP/UDP埠的
木马......既然ICMP协议这么危险,我们为什么不关掉它呢?

  我们都知道,Win2000在网路属性中自带了一个TCP/IP筛检程式,我们来看看能不能通过这里关掉ICMP协议,桌面上右击网上邻居->属性->右击你要配置的网卡->属性->TCP/IP->高级->选项->TCP/IP过滤,这里有三个筛检程式,分别为:TCP埠、UDP埠和IP协议,我们先允许TCP/IP过滤,然后一个一个来配置,先是TCP埠,点击"只允许",然后在下面加上你需要开的埠,一般来说WEB伺服器只需要开80(www),FTP伺服器需要开20(FTP Data),21(FTP Control),邮件伺服器可能需要打开25(SMTP),110(POP3),以此类推......接着是UDP,UDP协定和ICMP协定一样是基于无连结的,一样容易伪造,所以如果不是必要(例如要从UDP提供DNS服务之类)应该选择全部不允许,避免受到洪水(Flood)或碎片(Fragment)攻击。最右边的一个编辑框是定义IP协议过滤的,我们选择只允许TCP协议通过,添加一个6(6是TCP在IP协议中的代码,IPPROTO_TCP=6),从道理上来说,只允许TCP协议通过时无论UDP还是ICMP都不应该能通过,可惜的是这里的IP协议过滤指的是狭义的IP协议,从架构上来说虽然ICMP协定和IGMP协定都是IP协定的附属协定,但是从网路7层结构上ICMP/IGMP协定与IP协定同属一层,所以微软在这里的IP协议过滤是不包括ICMP协议的,也就是说即使你设置了“只允许TCP协议通过”,ICMP报文仍然可以正常通过,所以如果我们要过滤ICMP协定还需要另想办法。

  刚刚在我们进行TCP/IP过滤时,还有另外一个选项:IP安全机制(IP Security),我们过滤ICMP的想法就要着落在它身上。

  打开本地安全策略,选择IP安全策略,在这里我们可以定义自己的IP安全策略。

  一个IP安全筛检程式由两个部分组成:过滤策略和过滤作,过滤策略决定哪些报文应当引起筛检程式的关注,过滤作决定筛检程式是“允许”还是“拒绝”报文的通过。要新建IP安全筛检程式,必须新建自己的过滤策略和过滤作:右击本机的IP安全策略,选择管理IP筛检程式,在IP筛检程式管理列表中建立一个新的过滤规则:ICMP_ANY_IN,源位址选任意IP,目标位址选本机,协定类型是ICMP,切换到管理筛检程式作,增加一个名为Deny的作,作类型为"阻止"(Block)。这样我们就有了一个关注所有进入ICMP报文的过滤策略和丢弃所有报文的过滤作了。需要注意的是,在位址选项中有一个镜像选择,如果选中镜像,那么将会建立一个对称的过滤策略,也就是说当你关注any IP->my IP的时候,由于镜像的作用,实际上你也同时关注了my IP->any IP,你可以根据自己的需要选择或者放弃镜像。

  再次右击本机的IP安全策略,选择新建IP过滤策略,建立一个名称为ICMP Filter的筛检程式,通过增加过滤规则向导,我们把刚刚定义的ICMP_ANY_IN过滤策略指定给ICMP Filter,然后在作选框中选择我们刚刚定义的Deny作,退出向导视窗,右击ICMP Filter并启用它,现在任何位址进入的ICMP报文都会被丢弃了。

  虽然用IP sec能够对ICMP报文进行过滤,不过作起来太麻烦,而且如果你只需要过滤特定的ICMP报文,还要保留一些常用报文(如主机不可达、网路不可达等),IP sec策略就力不从心了,我们可以利用win2000的另一个强大工具路由与远端存取控制(Routing & Remote Access)来完成这些复杂的过滤作。

  路由与远端存取控制是win2000用来管理路由表、配置VPN、控制远端存取、进行IP报文过滤的工具,默认情况下并没有安装,所以首先你需要启用它,打开"管理工具"->"路由与远端存取",右击伺服器(如果没有则需要添加本机)选择"配置并启用路由及远端存取",这时配置向导会让你选择是什么样的伺服器,一般来说,如果你不需要配置VPN伺服器,那么选择"手动配置"就可以了,配置完成后,主机下将出现一个IP路由的选项,在"常规"中选择你想配置的网卡(如果你有多块网卡,你可以选择关闭某一块的ICMP),在网卡属性中点击"输入筛选器",添加一条过滤策略"from:ANY to:ANY 协议:ICMP 类型:8 :编码:0 丢弃"就可以了(类型8编码0就是Ping使用的ICMP_ECHO报文,如果要过滤所有的ICMP报文只需要将类型和编码都设置为255)
细心的朋友刚才可能已经发现,在输入、输出筛检程式的下面,还有一个"碎片检查"功能,这个功能使用来应付IP碎片攻击的,这已经超出了本文所讨论的范围,我会在以后的拒绝服务攻击的文章中继续和大家一起探讨的。Win2000的路由及远端存取是一个功能非常强大的工具集,如果你好好地研究,一定能发现更多的功能和技巧.

  有很多朋友问过我:怎么样在Win2K下单独关闭一个端口?(比如危险的139)通常的说法是没法关一个,要关全部关(用TCP/IP筛检程式),其实如果用IP安全策略或者Routing & Remote Access就很方便了,想关哪个关哪个。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

QQ|Archiver|兴宁A8 ( 粤ICP备17110913号 粤公网安备44140202000139号)  

GMT+8, 2024/11/20 10:32

© 兴宁A8

手机绑定 兴宁A8支持手机、电脑、平板一站式访问!

快速回复 返回顶部 返回列表