Hello Everone!
As the admin for LoadzWorld Community i would like to tell you that we now offer free p2h hosting
Our plans is as following
Grand Opening Plan: (5 peoples only)
Code:
本文档列举出一些建议和最佳做法,以保证 Web 上运行 Microsoft Windows 2000 和 Internet Information Services (IIS) 5 的服务器的安全。这些设置侧重于安全性而不是性能方面。因此认真阅读以下的建议并运用它们来获得适用于自己企业的设置是很重要的。
注意 本文档是由“Designing Secure Web-Based Applications for Microsoft Windows 2000”,Microsoft Press,ISBN: 0735609950 改编而来。
那些熟悉 Internet Information Server 4 清单的客户将注意到本列表要远短于 Internet Information Server 4 的清单。这是因为以下两点原因:
许多 Windows 2000 系统范围的设置可以通过提供的安全模板 (hisecweb,inf) 进行配置;所以不需要手动配置注册表设置。在 Windows 2000 和 IIS 5 的默认状态下,将禁用 Microsoft Windows NT 4 和 Internet Information Server 4 上的某些低安全级别的默认设置。
本文档的其余部分分为以下几个部分:
一般性安全考虑事项
Windows 2000 安全考虑事项
IIS 5 安全考虑事项
一般性安全考虑事项
本部分内容讲述一般性安全问题。
阅读您企业的安全策略
拥有安全策略是十分重要的。对以下问题,您需要有现成的答案:
如何对入侵作出反应?
备份存储在何处?
允许谁访问服务器?
在 SANS Institute、Baseline Software, Inc. 和 Practical Unix & Internet Security (O’Reilly Books, 1996) 中可以找到有关策略信息的比较好资源。
预订 Microsoft 安全通知服务
您可以在 http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/bulletin/notify.asp 上预定 Microsoft 安全通知服务,使自己能够及时知道有关 Microsoft 安全问题和修补程序的信息。您将通过电子邮件获得有关安全问题的自动通知。
您还应当考虑在桌面上放置 Microsoft 安全顾问程序的快捷方式。要完成此操作,请执行下列步骤:
打开 Internet Explorer。
导航到 http://www.microsoft.com/technet/security/bulletin/notify.asp。
从“收藏”菜单中选择“添加到收藏夹”。
选中“允许脱机使用”复选框。
单击“自定义”。
在“脱机收藏夹向导”中单击“下一步”。
选中“是”选项按钮并指定下载与该页链接的 2 层网页。
单击“下一步”。
选中“创建新的计划”选项按钮,然后单击“下一步”。
接受默认设置,再单击“下一步”。
单击“完成”。
单击“确定”。
从“收藏”菜单中选中“整理收藏夹”。
在“整理收藏夹”对话框中选择“Microsoft TechNet Security”快捷方式。
单击“属性”。
单击“Microsoft TechNet Security 属性”对话框的“下载”选项卡。
取消选中“跟踪本页 Web 站点之外的链接”复选框。
单击“确定”,然后单击“关闭”。
现在您可以将 Microsoft TechNet Security 快捷方式从“收藏”菜单拖到桌面上。如果有新的安全消息,图标上将出现一个小红标记。
要点 如果出现了新的安全问题,您必须非常重视它们。这一点再怎么强调也不为过。
Windows 2000 安全考虑事项
本部分内容专门讲述有关 Windows 2000 的安全问题。
检查、更新及部署提供的 Hisecweb.inf 安全模板
我们已经包括了名为 Hisecweb.inf 的安全模板,作为适用于大多数安全网站的基准。该模板配置了基本的 Windows 2000 系统范围策略。
Hisecweb.inf 可以从如下地址下载:
http://download.microsoft.com/download/win2000srv/SCM/1.0/NT5/EN-US/hisecweb.exe
执行下列步骤来使用模板:
将模板复制到 %windir%\security\templates 目录。
打开“安全模板”工具,并查看设置。
打开“安全配置和分析”工具,并加载模板。
右键单击“安全配置和分析”工具,并从上下文菜单中选择“立即分析计算机”。
等待工作完成。
检查查找结果并按需要更新模板。
如果您对模板满意,请右键单击“安全配置和分析”工具,并从上下文菜单中选择“立即配置计算机”。
配置 IPSec 策略
您应当认真考虑在每一个 Web 服务器上设置 Internet 协议安全性 (IPSec) 包筛选器策略。如果您的防火墙被攻破,该策略将提供额外的安全级别。多级别安全技术通常被认为是很好的做法。
一般而言,除了那些您明显希望支持的协议与希望打开的端口以外,应当阻止其他所有 TCP/IP 协议。您可以使用 IPSec 管理工具或 IPSecPol 命令行工具来部署 IPSec 策略。
保护 Telnet 服务器安全
如果您打算使用包含在 Windows 2000 中的 Telnet 服务器,您应当考虑限制能够访问该服务的用户。要完成此操作,请执行下列步骤:
打开“本地用户和组”工具。
右键单击“组”节点,并从上下文菜单中选择“新建组”。
在“组名”框中输入 TelnetClients。
单击“添加”以添加对该计算机有 telnet 访问权限的用户。
单击“创建”,再单击“关闭”。
当存在 TelnetClients 组时,Telnet 服务将仅允许那些在组中定义的用户访问服务器。
IIS 5 安全考虑事项
本部分内容专门讲述有关 Internet Information Services 5 的安全问题。
为虚拟目录设置适当的 ACL虽然此步骤从某种程度上来说取决于应用程序,但一些主要规则仍然适用,如表 F-1 所示。
文件类型
访问控制列表
CGI (.exe, .dll, .cmd, .pl)
Everyone (X)
Administrators(完全控制)
System(完全控制)
脚本文件 (.asp)
Everyone (X)
Administrators(完全控制)
System(完全控制)
包含文件 (.inc, .shtm, .shtml)
Everyone (X)
Administrators(完全控制)
System(完全控制)
静态内容 (.txt, .gif, .jpg, .html)
Everyone (R)
Administrators(完全控制)
System(完全控制)
推荐使用的各文件类型的默认 ACL
与为每一个文件单独设置 ACL 相比,更好的办法是为每一种文件类型创建新的目录,在这些目录上设置 ACL,并允许 ACL 继承到文件。例如,目录结构可能如下所示:
c:\inetpub\wwwroot\myserver\static (.html)
c:\inetpub\wwwroot\myserver\include (.inc)
c:\inetpub\wwwroot\myserver\script (.asp)
c:\inetpub\wwwroot\myserver\executable (.dll)
c:\inetpub\wwwroot\myserver\images (.gif, .jpeg)
此外,有两个目录需要特别注意:
c:\inetpub\ftproot (FTP server)
c:\inetpub\mailroot (SMTP server)
这两个目录上的 ACL 都是“Everyone(完全控制)”,应当根据您的功能级别覆盖为更加严格的设置。如果要支持“Everyone(写入)”,请将该文件夹放置到与 IIS 服务器不同的卷中,或者使用 Windows 2000 磁盘空间配额来限制可以写入这些目录的数据量。
设置适当的 IIS 日志文件 ACL
请确保 IIS 生成的日志文件 (%systemroot%\system32\LogFiles) 上的 ACL 是:
Administrators(完全控制)
System(完全控制)
Everyone (RWC)
这有助于防止恶意用户删除文件以掩饰他们的踪迹。
启用日志记录
当您希望确定服务器是否正受到攻击时,日志记录是非常重要的。应当通过下列步骤使用 W3C 扩展日志记录格式:
加载 Internet Information Services 工具。
右键单击怀疑有问题的站点,然后从上下文菜单中选择“属性”。
单击“网站”选项卡。
选中“启用日志”复选框。
从“活动日志格式”下拉列表中选择“W3C 扩展日志文件格式”。
单击“属性”。
单击“扩展属性”选项卡,然后设置下列属性:
客户端 IP 地址
用户名
方法
URI 资源
HTTP 状态
Win32 状态
用户代理
服务器 IP 地址
服务器端口
仅当您将多个 Web 服务器设置在同一计算机上时,后两个属性才有用。Win32 Status 属性非常适合于调试。当您检查日志时,请注意错误 5,即被拒绝的访问。您可以通过在命令行中输入 net helpmsg err (其中 err 代表您感兴趣的错误号码)来找出其他 Win32 错误是什么含义。
设置 IP 地址/DNS 地址限制
这并非要设置的普通选项,但是如果希望限制某些用户访问您的网站,这将是一个有用的选项。请注意如果您输入域名系统 (DNS) 名称,那么 IIS 将必须执行 DNS 检查,这将很费时间。
验证可执行内容的可信度
要了解可执行内容是否可信是很难的。有一个小测试是用 DumpBin 工具来查看可执行内容是否调用了某些 API。许多 Win32 开发工具都含有 DumpBin。例如,如果您希望查看名为 MyISAPI.dll 的文件是否调用 RevertToSelf,请使用下列语法:
dumpbin /imports MyISAPI.dll | find "RevertToSelf"
如果屏幕上未出现结果,MyISAPI.dll 将不直接调用 RevertToSelf。它将可能通过 LoadLibrary 来调用该 API,在此情况下您也可以使用相似的命令来进行查找。
在 IIS 服务器上更新根目录的 CA 证书
该过程包括两个步骤:第一步:添加所有信任的新根目录证书颁发机构 (CA) 证书—尤其是任何通过使用 Microsoft Certificate Services 2.0 创建的新根目录 CA 证书。第二步:删除所有不信任的根目录 CA 证书。请注意如果您不知道发布根目录证书的公司名称,那么就不应当信任他们!
所有 IIS 使用的根目录 CA 证书都存放在计算机的机器存储中。可以通过下列步骤来访问该机器存储:
打开 Microsoft Management Console (MMC)。
从“控制台”菜单中选择“添加/删除管理单元”,然后单击“添加”。
选择“证书”并单击“添加”。
单击“计算机帐户”选项按钮。
单击“下一步”。
选中所指机器。
单击“完成”。
单击“关闭”,再单击“确定”。
展开证书节点。
扩展信任的根目录证书颁发机构。
选择证书。
右窗格将显示当前信任的全部根目录 CA 证书。如果需要,可以删除多个证书。
注意: 不要删除 Microsoft 或 VeriSign 根目录。操作系统会大量使用它们。
网络安全是一个综合的、复杂的工程,任何网络安全措施都不能保证万无一失。因此,对于一些重要的部门,一旦网络遭到攻击,如何追踪网络攻击,追查到攻击者并将其绳之以法,是十分必要的。
追踪网络攻击就是找到事件发生的源头。它有两个方面意义:一是指发现IP地址、MAC地址或是认证的主机名;二是指确定攻击者的身份。网络攻击者在实施攻击之时或之后,必然会留下一些蛛丝马迹,如登录的纪录,文件权限的改变等虚拟证据,如何正确处理虚拟证据是追踪网络攻击的最大挑战。
在追踪网络攻击中另一需要考虑的问题是:IP地址是一个虚拟地址而不是一个物理地址,IP地址很容易被伪造,大部分网络攻击者采用IP地址欺骗技术。这样追踪到的攻击源是不正确的。使得以IP地址为基础去发现攻击者变得更加困难。因此,必须采用一些方法,识破攻击者的欺骗,找到攻击源的真正IP地址。
★ netstat命令----实时察看文击者
使用netstat命令可以获得所有联接被测主机的网络用户的IP地址。Windows系列、Unix系列、Linux等常用网络操作系统都可以使用“netstat”命令。
使用“netstat”命令的缺点是只能显示当前的连接,如果使用“netstat”命令时攻击者没有联接,则无法发现攻击者的踪迹。为此,可以使用Scheduler建立一个日程安排,安排系统每隔一定的时间使用一次“netstat”命令,并使用netstat>>textfile格式把每次检查时得到的数据写入一个文本文件中,以便需要追踪网络攻击时使用。
★ 日志数据--最详细的攻击记录
系统的日志数据提供了详细的用户登录信息。在追踪网络攻击时,这些数据是最直接的、有效的证据。但是有些系统的日志数据不完善,网络攻击者也常会把自己的活动从系统日志中删除。因此,需要采取补救措施,以保证日志数据的完整性。
Unix和Linux的日志
Unix和Linux的日志文件较详细的记录了用户的各种活动,如登录的ID的用户名、用户IP地址、端口号、登录和退出时间、每个ID最近一次登录时间、登录的终端、执行的命令,用户ID的账号信息等。通过这些信息可以提供ttyname(终端号)和源地址,是追踪网络攻击的最重要的数据。
大部分网络攻击者会把自己的活动记录从日记中删去,而且UOP和基于X Windows的活动往往不被记录,给追踪者带来困难。为了解决这个问题,可以在系统中运行wrapper工具,这个工具记录用户的服务请求和所有的活动,且不易被网络攻击者发觉,可以有效的防止网络攻击者消除其活动纪录。
Windows NT和Windows 2000有系统日志、安全日志和应用程序日志等三个日志,而与安全相关的数据包含在安全日志中。安全日志记录了登录用户的相关信息。安全日志中的数据是由配置所决定的。因此,应该根据安全需要合理进行配置,以便获得保证系统安全所必需的数据。
但是,Windows NT和Windows 2000的安全日志存在重大缺陷,它不记录事件的源,不可能根据安全日志中的数据追踪攻击者的源地址。为了解决这个问题,可以安装一个第三方的能够完整记录审计数据的工具。
防火墙日志
作为网络系统中的“堡垒主机”,防火墙被网络攻击者攻陷的可能性要小得多。因此,相对而言防火墙日志数据不太容易被修改,它的日志数据提供最理想的攻击源的源地址信息。
但是,防火墙也不是不可能被攻破的,它的日志也可能被删除和修改。攻击者也可向防火墙发动拒绝服务攻击,使防火墙瘫痪或至少降低其速度使其难以对事件做出及时响应,从而破坏防火墙日志的完整性。因此,在使用防火墙日志之前,应该运行专用工具检查防火墙日志的完整性,以防得到不完整的数据,贻误追踪时机。
★ 原始数据包----比较可靠的分析方法
由于系统主机都有被攻陷的可能,因此利用系统日志获取攻击者的信息有时就不可靠了。所以,捕获原始数据包并对其数据进行分析,是确定攻击源的另一个重要的、比较可靠的方法。包头数据分析
表1是一个原始数据包的IP包头数据。表中的第一行是最有用的数字。第一行的最后8位代表源地址。本例中的地址是0xd2、0x1d、0x84、0x96,对应的IP地址是210.45.132.150。通过分析原始数据包的包头数据,可以获得较为可靠的网络攻击者的IP地址,因为这些数据不会被删除或修改。但是,这种方法也不是完美无缺的,如果攻击者对其数据包进行加密,对收集到的数据包的分析就没有什么用处了。
表1 一个IP包头数据 0x0000 45c0 c823 0000 d306 6002 2c06 d21d 8496 0x0010 22ab b365 c234 0000 0000 4066 dd1d 8818 0x0020 7034 ecf8 0000 5b88 7708 b901 4a88 de34 0x0030 9812 a5c6 0011 8386 9618 0000 a123 6907 0x0040 55c5 0023 3401 0000 5505 b1c5 0000 0000 0x0050 0000 0000 0000 0000 0000
捕获数据包
在一个交换网络环境下捕获数据包比较困难,这主要是因为集线器和交换机在数据交换中本质的不同。集线器采用的是广播式传输,它不支持连接,而是把包发送到除源端口外的所有端口,与集线器相连的所有机器都可以捕获到通过它的数据包。而交换机支持端到端的连接,当一个数据包到达时交换机为它建立一个暂时的连接,数据包通过这个连接传到目的端口。所以,在交换环境下抓包不是一件容易的事。为了获得交换环境下的数据包,可以用下面方法解决:
(1)把交换机的一个“spanning port”(生成端口)配置成象一个集线器一样,通过这个端口的数据包不再与目的主机建立连接,而是广播式地发送给与此端口相连的所有机器。设置一个包捕获主机,便可以捕获到通过“spaning port”的数据包。但是,在同一时刻,交换机只能由一个端口被设置成“spanning port”,因此,不能同时捕获多台主机的数据包。
(2)在交换机之间,或路由器和交换机之间安装一个集线器。通过集线器的数据包便可以被捕获主机捕获。
在用捕获数据包获取攻击者的源地址的方法中,有两个问题需要注意:一是保证包捕获主机由足够的存储空间,因为如果在捕获数据包时网络吞吐量很大的话,硬盘很快会被填满;二是在分析数据包时,可编制一段小程序自动分析,手工分析这么多的数据是不可能的。
★ 搜索引擎----也许会有外的惊喜
利用搜索引擎获得网络攻击者的源地址,从理论上讲没有什么根据,但是它往往会收到意想不到的效果,给追踪工作带来意外惊喜。黑客们在Internet上往往有他们自己的虚拟社区,他们在那儿讨论网络攻击技术方法,同时炫耀自己的战果。因此,在那里经常会暴露他们攻击源的信息甚至他们的身份。
利用搜索引擎追踪网络攻击者的IP地址就是使用一些好的搜索引擎(如搜狐的搜索引擎)搜索网页,搜索关键词是攻击主机所在域名、IP地址或主机名,看是否有贴子是关于对上述关键词所代表的机器进行攻击的。虽然网络攻击者一般在发贴子时会使用伪造的源地址,但也有很多人在这时比较麻痹而使用了真实的源地址。因此,往往可以用这种方法意外地发现网络攻击者的踪迹。
由于不能保证网络中贴子源地址的真实性,所以,不加分析的使用可能会牵连到无辜的用户。然而,当与其方法结合起来使用时,使用搜索引擎还是非常有用的。
据统计,在所有黑客攻击事件中,SYN攻击是最常见又最容易被利用的一种攻击手法。相信很多人还记得2000年YAHOO网站遭受的攻击事例,当时黑客利用的就是简单而有效的SYN攻击,有些网络蠕虫病毒配合SYN攻击造成更大的破坏。本文介绍SYN攻击的基本原理、工具及检测方法,并全面探讨SYN攻击防范技术。 一、TCP握手协议 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j 1),同时自己也发送一个SYN包(syn=k),即SYN ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k 1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念: 未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于Syn_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。 Backlog参数:表示未连接队列的最大容纳数目。 SYN-ACK 重传次数 服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同。 半连接存活时间:是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时我们也称半连接存活时间为Timeout时间、SYN_RECV存活时间。 二、SYN攻击原理 SYN攻击属于DOS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。SYN攻击除了能影响主机外,还可以危害路由器、防火墙等网络系统,事实上SYN攻击并不管目标是什么系统,只要这些系统打开TCP服务就可以实施。从上图可看到,服务器接收到连接请求(syn=j),将此信息加入未连接队列,并发送请求包给客户(syn=k,ack=j 1),此时进入SYN_RECV状态。当服务器未收到客户端的确认包时,重发请求包,一直到超时,才将此条目从未连接队列删除。配合IP欺骗,SYN攻击能达到很好的效果,通常,客户端在短时间内伪造大量不存在的IP地址,向服务器不断地发送syn包,服务器回复确认包,并等待客户的确认,由于源地址是不存在的,服务器需要不断的重发直至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。
三、SYN攻击工具 SYN攻击实现起来非常的简单,互联网上有大量现成的SYN攻击工具。 1、windows系统下的SYN工具 以synkill.exe为例,运行工具,选择随机的源地址和源端囗,并填写目标机器地址和TCP端囗,激活运行,很快就会发现目标系统运行缓慢。如果攻击效果不明显,可能是目标机器并未开启所填写的TCP端囗或者防火墙拒绝访问该端囗,此时可选择允许访问的TCP端囗,通常,windows系统开放tcp139端囗,UNIX系统开放tcp7、21、23等端囗。 四、检测SYN攻击 检测SYN攻击非常的方便,当你在服务器上看到大量的半连接状态时,特别是源IP地址是随机的,基本上可以断定这是一次SYN攻击。我们使用系统自带的netstat 工具来检测SYN攻击: # netstat -n -p TCP tcp 0 0 10.11.11.11:23 124.173.152.8:25882 SYN_RECV - tcp 0 0 10.11.11.11:23 236.15.133.204:2577 SYN_RECV - tcp 0 0 10.11.11.11:23 127.160.6.129:51748 SYN_RECV - tcp 0 0 10.11.11.11:23 222.220.13.25:47393 SYN_RECV - tcp 0 0 10.11.11.11:23 212.200.204.182:60427 SYN_RECV - tcp 0 0 10.11.11.11:23 232.115.18.38:278 SYN_RECV - tcp 0 0 10.11.11.11:23 239.116.95.96:5122 SYN_RECV - tcp 0 0 10.11.11.11:23 236.219.139.207:49162 SYN_RECV - ... 上面是在LINUX系统中看到的,很多连接处于SYN_RECV状态(在WINDOWS系统中是SYN_RECEIVED状态),源IP地址都是随机的,表明这是一种带有IP欺骗的SYN攻击。 我们也可以通过下面的命令直接查看在LINUX环境下某个端囗的未连接队列的条目数: #netstat -n -p TCP grep SYN_RECV grep :22 wc -l 324 显示TCP端囗22的未连接数有324个,虽然还远达不到系统极限,但应该引起管理员的注意。 五、SYN攻击防范技术 关于SYN攻击防范技术,人们研究得比较早。归纳起来,主要有两大类,一类是通过防火墙、路由器等过滤网关防护,另一类是通过加固TCP/IP协议栈防范.但必须清楚的是,SYN攻击不能完全被阻止,我们所做的是尽可能的减轻SYN攻击的危害,除非将TCP协议重新设计。 1、过滤网关防护 这里,过滤网关主要指明防火墙,当然路由器也能成为过滤网关。防火墙部署在不同网络之间,防范外来非法攻击和防止保密信息外泄,它处于客户端和服务器之间,利用它来防护SYN攻击能起到很好的效果。过滤网关防护主要包括超时设置,SYN网关和SYN代理三种。 ■网关超时设置:防火墙设置SYN转发超时参数(状态检测的防火墙可在状态表里面设置),该参数远小于服务器的timeout时间。当客户端发送完SYN包,服务端发送确认包后(SYN+ACK),防火墙如果在计数器到期时还未收到客户端的确认包(ACK),则往服务器发送RST包,以使服务器从队列中删去该半连接。值得注意的是,网关超时参数设置不宜过小也不宜过大,超时参数设置过小会影响正常的通讯,设置太大,又会影响防范SYN攻击的效果,必须根据所处的网络应用环境来设置此参数。 ■SYN网关:SYN网关收到客户端的SYN包时,直接转发给服务器;SYN网关收到服务器的SYN/ACK包后,将该包转发给客户端,同时以客户端的名义给服务器发ACK确认包。此时服务器由半连接状态进入连接状态。当客户端确认包到达时,如果有数据则转发,否则丢弃。事实上,服务器除了维持半连接队列外,还要有一个连接队列,如果发生SYN攻击时,将使连接队列数目增加,但一般服务器所能承受的连接数量比半连接数量大得多,所以这种方法能有效地减轻对服务器的攻击。 ■SYN代理:当客户端SYN包到达过滤网关时,SYN代理并不转发SYN包,而是以服务器的名义主动回复SYN/ACK包给客户,如果收到客户的ACK包,表明这是正常的访问,此时防火墙向服务器发送ACK包并完成三次握手。SYN代理事实上代替了服务器去处理SYN攻击,此时要求过滤网关自身具有很强的防范SYN攻击能力。
2、加固tcp/ip协议栈 防范SYN攻击的另一项主要技术是调整tcp/ip协议栈,修改tcp协议实现。主要方法有SynAttackProtect保护机制、SYN cookies技术、增加最大半连接和缩短超时时间等。tcp/ip协议栈的调整可能会引起某些功能的受限,管理员应该在进行充分了解和测试的前提下进行此项工作。 ■SynAttackProtect机制 为防范SYN攻击,win2000系统的tcp/ip协议栈内嵌了SynAttackProtect机制,Win2003系统也采用此机制。SynAttackProtect机制是通过关闭某些socket选项,增加额外的连接指示和减少超时时间,使系统能处理更多的SYN连接,以达到防范SYN攻击的目的。默认情况下,Win2000操作系统并不支持SynAttackProtect保护机制,需要在注册表以下位置增加SynAttackProtect键值: HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 当SynAttackProtect值(如无特别说明,本文提到的注册表键值都为十六进制)为0或不设置时,系统不受SynAttackProtect保护。 当SynAttackProtect值为1时,系统通过减少重传次数和延迟未连接时路由缓冲项(route cache entry)防范SYN攻击。 当SynAttackProtect值为2时(Microsoft推荐使用此值),系统不仅使用backlog队列,还使用附加的半连接指示,以此来处理更多的SYN连接,使用此键值时,tcp/ip的TCPInitialRTT、window size和可滑动窗囗将被禁止。 我们应该知道,平时,系统是不启用SynAttackProtect机制的,仅在检测到SYN攻击时,才启用,并调整tcp/ip协议栈。那么系统是如何检测SYN攻击发生的呢?事实上,系统根据TcpMaxHalfOpen,TcpMaxHalfOpenRetried 和TcpMaxPortsExhausted三个参数判断是否遭受SYN攻击。 TcpMaxHalfOpen 表示能同时处理的最大半连接数,如果超过此值,系统认为正处于SYN攻击中。Win2000 server默认值为100,Win2000 Advanced server为500。 TcpMaxHalfOpenRetried定义了保存在backlog队列且重传过的半连接数,如果超过此值,系统自动启动SynAttackProtect机制。Win2000 server默认值为80,Win2000 Advanced server为400。 TcpMaxPortsExhausted 是指系统拒绝的SYN请求包的数量,默认是5。 如果想调整以上参数的默认值,可以在注册表里修改(位置与SynAttackProtect相同) ■ SYN cookies技术 我们知道,TCP协议开辟了一个比较大的内存空间backlog队列来存储半连接条目,当SYN请求不断增加,并这个空间,致使系统丢弃SYN连接。为使半连接队列被塞满的情况下,服务器仍能处理新到的SYN请求,SYN cookies技术被设计出来。 SYN cookies应用于linux、FreeBSD等操作系统,当半连接队列满时,SYN cookies并不丢弃SYN请求,而是通过加密技术来标识半连接状态。 在TCP实现中,当收到客户端的SYN请求时,服务器需要回复SYN+ACK包给客户端,客户端也要发送确认包给服务器。通常,服务器的初始序列号由服务器按照一定的规律计算得到或采用随机数,但在SYN cookies中,服务器的初始序列号是通过对客户端IP地址、客户端端囗、服务器IP地址和服务器端囗以及其他一些安全数值等要素进行hash运算,加密得到的,称之为cookie。当服务器遭受SYN攻击使得backlog队列满时,服务器并不拒绝新的SYN请求,而是回复cookie(回复包的SYN序列号)给客户端, 如果收到客户端的ACK包,服务器将客户端的ACK序列号减去1得到cookie比较值,并将上述要素进行一次hash运算,看看是否等于此cookie。如果相等,直接完成三次握手(注意:此时并不用查看此连接是否属于backlog队列)。 在RedHat linux中,启用SYN cookies是通过在启动环境中设置以下命令来完成: # echo 1 > /proc/sys/net/ipv4/tcp_syncookies ■ 增加最大半连接数 大量的SYN请求导致未连接队列被塞满,使正常的TCP连接无法顺利完成三次握手,通过增大未连接队列空间可以缓解这种压力。当然backlog队列需要占用大量的内存资源,不能被无限的扩大。 WIN2000:除了上面介绍的TcpMaxHalfOpen, TcpMaxHalfOpenRetried参数外,WIN2000操作系统可以通过设置动态backlog(dynamic backlog)来增大系统所能容纳的最大半连接数,配置动态backlog由AFD.SYS驱动完成,AFD.SYS是一种内核级的驱动,用于支持基于window socket的应用程序,比如ftp、telnet等。AFD.SYS在注册表的位置: HKLM\System\CurrentControlSet\Services\AFD\ParametersEnableDynamicBacklog值为1时,表示启用动态backlog,可以修改最大半连接数。 MinimumDynamicBacklog表示半连接队列为单个TCP端囗分配的最小空闲连接数,当该TCP端囗在backlog队列的空闲连接小于此临界值时,系统为此端囗自动启用扩展的空闲连接(DynamicBacklogGrowthDelta),Microsoft推荐该值为20。 MaximumDynamicBacklog是当前活动的半连接和空闲连接的和,当此和超过某个临界值时,系统拒绝SYN包,Microsoft推荐MaximumDynamicBacklog值不得超过2000。 DynamicBacklogGrowthDelta值是指扩展的空闲连接数,此连接数并不计算在MaximumDynamicBacklog内,当半连接队列为某个TCP端囗分配的空闲连接小于MinimumDynamicBacklog时,系统自动分配DynamicBacklogGrowthDelta所定义的空闲连接空间,以使该TCP端囗能处理更多的半连接。Microsoft推荐该值为10。 LINUX:Linux用变量tcp_max_syn_backlog定义backlog队列容纳的最大半连接数。在Redhat 7.3中,该变量的值默认为256,这个值是远远不够的,一次强度不大的SYN攻击就能使半连接队列占满。我们可以通过以下命令修改此变量的值: # sysctl -w net.ipv4.tcp_max_syn_backlog="2048" Sun Solaris Sun Solaris用变量tcp_conn_req_max_q0来定义最大半连接数,在Sun Solaris 8中,该值默认为1024,可以通过add命令改变这个值: # ndd -set /dev/tcp tcp_conn_req_max_q0 2048 HP-UX:HP-UX用变量tcp_syn_rcvd_max来定义最大半连接数,在HP-UX 11.00中,该值默认为500,可以通过ndd命令改变默认值: #ndd -set /dev/tcp tcp_syn_rcvd_max 2048 ■缩短超时时间 上文提到,通过增大backlog队列能防范SYN攻击;另外减少超时时间也使系统能处理更多的SYN请求。我们知道,timeout超时时间,也即半连接存活时间,是系统所有重传次数等待的超时时间总和,这个值越大,半连接数占用backlog队列的时间就越长,系统能处理的SYN请求就越少。为缩短超时时间,可以通过缩短重传超时时间(一般是第一次重传超时时间)和减少重传次数来实现。 Win2000第一次重传之前等待时间默认为3秒,为改变此默认值,可以通过修改网络接囗在注册表里的TcpInitialRtt注册值来完成。重传次数由TcpMaxConnectResponseRetransmissions 来定义,注册表的位置是:HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters registry key。 当然我们也可以把重传次数设置为0次,这样服务器如果在3秒内还未收到ack确认包就自动从backlog队列中删除该连接条目。 LINUX:Redhat使用变量tcp_synack_retries定义重传次数,其默认值是5次,总超时时间需要3分钟。 Sun Solaris Solaris 默认的重传次数是3次,总超时时间为3分钟,可以通过ndd命令修改这些默认值。
数据库,网站运营的基础,网站生存的要素,不管是个人用户还是企业用户都非常依赖网站数据库的支持,然而很多别有用心的攻击者也同样非常“看重”网站数据库。
对于个人网站来说,受到建站条件的制约,Access数据库成了广大个人网站站长的首选。然而,Access数据库本身存在很多安全隐患,攻击者一旦找到数据库文件的存储路径和文件名,后缀名为“.mdb”的Access数据库文件就会被下载,网站中的许多重要信息会被一览无余,非常可怕。当然,大家采用了各种措施来加强Access数据库文件的安全,但真的有效吗?
存在漏洞的保护措施
流传最为广泛的一种Access数据库文件保护措施,是将Access数据库文件的后缀名由“.mdb”改为“.asp”,接着再修改数据库连接文件(如conn.asp)中的数据库地址内容,这样一来即使别人知道数据库文件的文件名和存储位置,也无法进行下载。
这是网上最流行的一种增强Access数据库安全的方法,而且还有强大的“理论基础”。
因为“.mdb”文件不会被IIS服务器处理,而是直接将内容输出到Web浏览器,而“.asp”文件则要经过IIS服务器处理,Web浏览器显示的是处理结果,并不是ASP文件的内容。
但大家忽略了一个很重要的问题,这就是IIS服务器到底处理了ASP文档中的哪些内容。这里笔者提醒大家,只有ASP文件中“”标志符间的内容才会被IIS服务器处理,而其他内容则直接输出到用户的Web浏览器。你的数据库文件中包含这些特殊标志符吗?即使有,Access也可能会对文档中的“”标志符进行特殊处理,使之无效。因此后缀为“.asp”的数据库文件同样是不安全的,还是会被恶意下载。
面对蛊惑人心的理论,以及众人的附和,笔者也开始相信此方法的有效性。但事实胜于雄辩,一次无意间的试验,让笔者彻底揭穿了这个谣言。
笔者首先将一个名为“cpcw.mdb”的数据库文件改名为“cpcw.asp”,然后上传到网站服务器中。运行flashGet,进入“添加新的下载任务”对话框,在“网址”栏中输入“cpcw.asp”文件的存储路径,然后在“重命名”栏中输入“cpcw.mdb”。进行下载后,笔者发现可以很顺利地打开“cpcw.mdb”,而且它所存储的信息也被一览无余。这就充分说明了单纯地将数据库文件名的后缀“.mdb”改为“.asp”,还是存在安全隐患。
没有最“安全”,只有更“安全”
任何事情都不是绝对的,因此增强Access数据库文件的安全也只是相对的。毕竟Access只能用于小型数据库的解决方案,它存在很多先天不足,特别是在安全方面。
我们所采用的各种方法,也只是相对来说增强了Access数据库文件的安全,并不能实现绝对的安全,毕竟先天不足的问题是无法解决的。下面笔者为大家介绍一些方法,虽然不能完全防止别人下载Access数据库文件,但只要你善用它们,Access数据库文件就会更安全。
方法一、数据库文件名应复杂
要下载Access数据库文件,首先必须知道该数据库文件的存储路径和文件名。如果你将原本非常简单的数据库文件名修改得更加复杂,这样那些“不怀好意”者就要花费更多的时间去猜测数据库文件名,无形中增强了Access数据库的安全性。
很多ASP程序为方便用户使用,它的数据库文件通常都被命名为“data.mdb”,这大大方便了有经验的攻击者。如果我们将数据库文件名修改得复杂一些,他人就不易猜到,如将“data.mdb”修改为“1rtj0ma27xi.mdb”,然后修改数据库连接文件中的相应信息。这样Access数据库就相对安全一些。此方法适合于那些租用Web空间的用户使用。
不足之处:一旦查看到数据库连接文件(如conn.asp)中的内容,再复杂的文件名也无济于事。
方法二、利用ODBC数据源
很多网站Web程序,将Access数据库文件的存储路径和文件名存放在数据库连接文件中。一旦这些连接文件中的内容外泄,那么不管数据库文件名多么复杂,都会暴露出踪迹。
这时就可以使用ODBC数据源方法,即使连接文件的内容外泄,他人也只能知道网站程序所使用的ODBC数据源名称,而数据库文件的存储路径和文件名却无法找到。
手工修改数据库连接文件(如conn.asp)中的内容,以及创建ODBC数据源。下面以笔者的论坛程序为例,首先将conn.asp文档中的
DBPath = Server.MapPath("./data/1rtj0ma27xi.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
修改为:conn.open "rtjmaxi",其中“rtjmaxi”是指ODBC数据源名称。
接着在IIS服务器中新建名为“rtjmaxi”的ODBC数据源,并在其中指定“1rtj0ma27xi.mdb”数据库文件的位置即可,最后点击“确定”按钮完成配置。
不足之处:此方法不适合于租用Web空间的用户使用,要想使用ODBC数据源方法,必须要有管理和维护IIS服务器的权限。
方法三、改变存储位置
一般情况下,Access数据库文件存放在相应的Web目录中,很多黑客就是利用这种规律来查找并下载数据库文件。
因此可以采用改变数据库文件存储位置的方法,将数据库文件存放在Web目录以外的某个文件夹中,让黑客难以猜测存储位置。
接着修改好数据库连接文件(如conn.asp)中的数据库文件相应信息,这样Access数据库文件就安全多了。即使攻击者通过连接文件找到数据库文件的存储路径,由于数据库文件存放在Web目录以外的地方,攻击者就无法通过HTTP方式下载数据库文件。
例如,IIS网站的Web目录位于“D:\wwwroot”下,在该Web目录下的“DATA”文件夹中存放着“1rtj0ma27xi.mdb”,现在笔者将该数据库文件转移到Web目录以外的“D:\CPCW”文件夹下。然后修改数据库连接文件,将
DBPath=Server.MapPath("./data/1rtj0ma27xi.mdb")修改为
DBPath=Server.MapPath("../cpcw/1rtj0ma27xi.mdb")这样Access数据库文件就安全多了。虽然数据库文件没有存放在Web目录中,但并不影响ASP程序访问数据库。
不足之处:此方法不适合于租用Web空间的用户使用,因为将Access数据库文件移至Web目录之外,一般需要很大的权限。
以上方法,在不同程度上增强了Access数据库文件的安全性,但大家不能将它们当成“仙丹妙药”,毕竟网络环境是复杂的,黑客的破坏手段也在不断增强,大家可以根据自己的需要,选择其中的多种方法配合使用,效果才理想,Access数据库文件才会更安全。
如何过滤用户通讯,保障安全有效的数据转发?如何阻挡非法用户,保障网络安全应用?如何进行安全网管,及时发现网络非法用户、非法行为及远程网管信息的安全性呢?这里我们总结了6 条近期交换机市场上一些流行的安全设置功能,希望对大家有所帮助。 L2-L4 层过滤 现在的新型交换机大都可以通过建立规则的方式来实现各种过滤需求。规则设置有两种模式,一种是MAC模式,可根据用户需要依据源MAC或目的MAC有效实现数据的隔离,另一种是IP模式,可以通过源IP、目的IP、协议、源应用端口及目的应用端口过滤数据封包;建立好的规则必须附加到相应的接收或传送端口上,则当交换机此端口接收或转发数据时,根据过滤规则来过滤封包,决定是转发还是丢弃。另外,交换机通过硬件“逻辑与非门”对过滤规则进行逻辑运算,实现过滤规则确定,完全不影响数据转发速率。 802.1X 基于端口的访问控制 为了阻止非法用户对局域网的接入,保障网络的安全性,基于端口的访问控制协议802.1X无论在有线LAN或WLAN中都得到了广泛应用。例如华硕最新的GigaX2024/2048等新一代交换机产品不仅仅支持802.1X 的Local、RADIUS 验证方式,而且支持802.1X 的Dynamic VLAN 的接入,即在VLAN和802.1X 的基础上,持有某用户账号的用户无论在网络内的何处接入,都会超越原有802.1Q 下基于端口VLAN 的限制,始终接入与此账号指定的VLAN组内,这一功能不仅为网络内的移动用户对资源的应用提供了灵活便利,同时又保障了网络资源应用的安全性;另外,GigaX2024/2048 交换机还支持802.1X的Guest VLAN功能,即在802.1X的应用中,如果端口指定了Guest VLAN项,此端口下的接入用户如果认证失败或根本无用户账号的话,会成为Guest VLAN 组的成员,可以享用此组内的相应网络资源,这一种功能同样可为网络应用的某一些群体开放最低限度的资源,并为整个网络提供了一个最外围的接入安全。 流量控制(traffic control) 交换机的流量控制可以预防因为广播数据包、组播数据包及因目的地址错误的单播数据包数据流量过大造成交换机带宽的异常负荷,并可提高系统的整体效能,保持网络安全稳定的运行。 安全网管SNMP v3 提出全新的体系结构,将各版本的SNMP 标准集中到一起,进而加强网管安全性。SNMP v3 建议的安全模型是基于用户的安全模型,即USM。USM对网管消息进行加密和认证是基于用户进行的,具体地说就是用什么协议和密钥进行加密和认证均由用户名称(userNmae)权威引擎标识符(EngineID)来决定(推荐加密协议CBCDES,认证协议HMAC-MD5-96 和HMAC-SHA-96),通过认证、加密和时限提供数据完整性、数据源认证、数据保密和消息时限服务,从而有效防止非授权用户对管理信息的修改、伪装和窃听。 至于通过Telnet 的远程网络管理,由于Telnet 服务有一个致命的弱点——它以明文的方式传输用户名及口令,所以,很容易被别有用心的人窃取口令,受到攻击,但采用SSH进行通讯时,用户名及口令均进行了加密,有效防止了对口令的窃听,便于网管人员进行远程的安全网络管理。 交换机的Syslog 日志功能可以将系统错误、系统配置、状态变化、状态定期报告、系统退出等用户设定的期望信息传送给日志服务器,网管人员依据这些信息掌握设备的运行状况,及早发现问题,及时进行配置设定和排障,保障网络安全稳定地运行。 Watchdog 通过设定一个计时器,如果设定的时间间隔内计时器没有重启,则生成一个内在CPU重启指令,使设备重新启动,这一功能可使交换机在紧急故障或意外情况下时可智能自动重启,保障网络的运行。 一些最新的交换机, 像A S U SGigaX2024/2048还具备双映像文件。这一功能保护设备在异常情况下(固件升级失败等)仍然可正常启动运行。文件系统分majoy和mirror两部分进行保存,如果一个文件系统损害或中断,另外一个文件系统会将其重写,如果两个文件系统都损害,则设备会清除两个文件系统并重写为出厂时默认设置,确保系统安全启动运行。 其实,近期出现的一些交换机产品在安全设计上大都下足了功夫——层层设防、节节过滤,想尽一切办法将可能存在的不安全因素最大程度地排除在外。广大企业用户如果能够充分利用这些网络安全设置功能,进行合理的组合搭配,则可以最大限度地防范网络上日益泛滥的各种攻击和侵害,愿您的企业网络自此也能更加稳固安全。
1)定义一个acl,目的是要保护的机器:
access-list 101 per tcp any host 202.106.0.20
由于没必要匹配源地址,一般的dos都伴随着地址欺骗,所以这里的source都是any.
2)全局下开启tcp intercept.
ip tcp intercept list 101
3)设置tcp拦截的模式,tcp拦截有两种模式一种是拦截,一种是监视。拦截模式像是一个找茬的流氓,看谁都不爽,见谁都打。监视模式是一个稍微理性一点的流氓,仅仅当别人在他家门口那片空地赌着不走的时候才大打出手(默认是30秒)。见谁都打,肯定累啊。我们要理性一点。
ip tcp intercept mode watch
ip tcp intercept watch-timeout 20
4)另外tcp连接你也不能一辈子都让他连着。设置一个tcp超时时间,默认24小时,一般网中特殊服务的需要长连接的应用时候30分钟足咦
ip tcp intercept connection-timeout 1800
5)对于最大半开连接的门限也是可以更改的。默认low 900,high 1100.
ip tcp intercept max-incomplete low 800
ip tcp intercept max-incomplete high 1000
6)状态查看
show tcp intercept connecitons
show tcp intercept statistics
今天我们所处的信息时代,也可以说也是病毒与黑客大行其道的时代,这样说确实有些悲观但今天的网络的确如此,从Internet到企业内网、从个人电脑到可上网的手机平台,没有地方是安全的。每一次网络病毒的攻击,都会让家庭用户、企业用户、800热线甚至是运营商头痛脑热。不过经历过了一次又一次的病毒危机后,人们已经开始思考网络的安全了。现在任何一个企业组建网络都会考虑到购买防火墙,且有越来越多的家庭用户在自己的电脑上甚至宽带接入端也加上了防火墙,相信不久的将来,我们可以看到在手机上也会出现防火墙。
就许多中小企业而言,防火墙的配置往往没有反映出企业的业务需求。如果对防火墙的防护执行设置没有结合企业内部的需求而进行认真充分的定义,添加到防火墙上的安全过滤规则就有可能允许不安全的服务和通信通过,从而给企业网络带来不必要的危险与麻烦。防火墙可以比做一道数据的过滤网,如果事先制定了合理的过滤规则,它将可以截住不合规则的数据报文,从而起到过滤的作用。相反,如果规则不正确,将适得其反。
中小企业防火墙应具有哪些功能
如何合理实施防火墙的配置呢?首先,让我们来看看中小企业防火墙一般都应具有哪些功能:
1. 动态包过滤技术,动态维护通过防火墙的所有通信的状态(连接),基于连接的过滤;
2. 可以作为部署NAT(Network Address Translation,网络地址变换)的地点,利用NAT技术,将有限的IP地址动态或静态地与内部的IP地址对应起来,用来缓解地址空间短缺的问题;
3. 可以设置信任域与不信任域之间数据出入的策略;
4. 可以定义规则计划,使得系统在某一时可以自动启用和关闭策略;
5. 具有详细的日志功能,提供防火墙符合规则报文的信息、系统管理信息、系统故障信息的记录,并支持日志服务器和日志导出;
6. 具有IPSec VPN功能,可以实现跨互联网安全的远程访问;
7. 具有邮件通知功能,可以将系统的告警通过发送邮件通知网络管理员;
8. 具有攻击防护功能对不规则的IP、TCP报或超过经验阀值的TCP半连接、UDP报文以及ICMP报文采取丢弃;
9. Web中的Java, ActiveX, Cookie、URL关键字、Proxy进行过滤。
以上是中小企业防火墙所应具备的一些防护特性,当然随着技术的发展中小企业防火墙的功能会变得越来越丰富;但有再多功能的防火墙如果没有合理的配置和管理,那么这只是一件IT摆设.
如何实施防火墙配置
如何实施防火墙配置呢?我们分别从以下几方面来讨论:
规则实施
规则实施看似简单,其实需要经过详尽的信息统计才可以得以实施。在过程中我们需要了解公司对内对外的应用以及所对应的源地址、目的地址、TCP或UDP的端口,并根据不同应用的执行频繁程度对策率在规则表中的位置进行排序,然后才能实施配置。原因是防火墙进行规则查找时是顺序执行的,如果将常用的规则放在首位就可以提高防火墙的工作效率。另外,应该及时地从病毒监控部门得到病毒警告,并对防火墙的策略进行更新也是制定策略所必要的手段。
规则启用计划
通常有些策略需要在特殊时刻被启用和关闭,比如凌晨3:00。而对于网管员此时可能正在睡觉,为了保证策略的正常运作,可以通过规则启用计划来为该规则制定启用时间。另外,在一些企业中为了避开上网高峰和攻击高峰,往往将一些应用放到晚上或凌晨来实施,比如远程数据库的同步、远程信息采集等等,遇到这些需求网管员可以通过制定详细的规则和启用计划来自动维护系统的安全。
日志监控
日志监控是十分有效的安全管理手段,往往许多管理员认为只要可以做日志的信息,都去采集,比如说对所有的告警或所有与策略匹配或不匹配的流量等等,这样的做法看似日志信息十分完善,但可以想一下每天进出防火墙的数据报文有上百万甚至更多,你如何在这些密密麻麻的条目中分析你所需要的信息呢?虽然有一些软件可以通过分析日志来获得图形或统计数据,但这些软件往往需要去二次开发或制定,而且价格不菲。所以只有采集到最关键的日志才是真正有用的日志。
一般而言,系统的告警信息是有必要记录的,但对于流量信息是应该有选择的。有时候为了检查某个问题我们可以新建一条与该问题匹配的策略并对其进行观测。比如:内网发现蠕虫病毒,该病毒可能会针对主机系统某UDP端口进行攻击,网管员虽然已经将该病毒清除,但为了监控有没有其他的主机受感染,我们可以为该端口增加一条策略并进行日志来检测网内的流量。
另外,企业防火墙可以针对超出经验阀值的报文做出响应,如丢弃、告警、日志等动作,但是所有的告警或日志是需要认真分析的,系统的告警支持根据经验值来确定的,比如对于工作站和服务器来说所产生的会话数是完全不同的,所以有时会发现系统告知一台邮件服务器在某端口发出攻击,而很有可能是这台服务器在不断的重发一些没有响应的邮件造成的。
设备管理
对于企业防火墙而言,设备管理方面通常可以通过远程Web管理界面的访问以及Internet外网口被Ping来实现,但这种方式是不太安全的,因为有可能防火墙的内置Web服务器会成为攻击的对象。所以建议远程网管应该通过IPsec VPN的方式来实现对内端口网管地址的管理。
僵尸网络(Botnet)是指多台被恶意代码感染、控制的与互联网相连接的计算机。Botnet正成为一种日益严重的威胁,不过,只要我们用好对付它的六把利剑,僵尸网络就难以造成严重的祸患。
第一剑:采用Web过滤服务
Web过滤服务是迎战僵尸网络的最有力武器。这些服务扫描Web站点发出的不正常的行为,或者扫描已知的恶意活动,并且阻止这些站点与用户接触。
第二剑:转换浏览器
防止僵尸网络感染的另一种策略是浏览器的标准化,而不是仅仅依靠微软的Internet Explorer 或Mozilla 的Firefox。当然这两者确实是最流行的,不过正因为如此,恶意软件作者们通常也乐意为它们编写代码。同样的策略也适用于操作系统。据统计,Macs很少受到僵尸网络的侵扰,正如桌面Linux操作系统,因为大多数僵尸的罪魁祸首都把目标指向了流行的Windows。
第三剑:禁用脚本
另一个更加极端的措施是完全地禁用浏览器的脚本功能,虽然有时候这会不利于工作效率,特别是如果雇员们在其工作中使用了定制的、基于Web的应用程序时,更是这样。
第四剑:部署入侵检测和入侵防御系统
另一种方法是调整你的IDS(入侵检测系统)和IPS(入侵防御系统),使之查找有僵尸特征的活动。例如,重复性的与外部的IP地址连接或非法的DNS地址连接都是相当可疑的。虽然难于发现,不过,另一个可以揭示僵尸的征兆是在一个机器中SSL通信的突然上升,特别是在某些端口上更是这样。这就可能表明一个僵尸控制的通道已经被激活了。您需要找到那些将电子邮件路由到其它服务器而不是路由到您自己的电子邮件服务器的机器,它们也是可疑的。僵尸网络的专家Gadi Evron进一步建议,您应该学会监视在高层对Web进行访问的家伙。它们会激活位于一个Web页面上的所有的链接,而一个高层次的访问可能会指明一台机器正被一个恶意的Web站点所控制。
一个IPS或IDS系统可以监视不正常的行为,这些行为指明了难于发现的、基于HTTP的攻击和来自远程过程的攻击、Telnet和地址解析协议(即ARP)欺骗等等。然而,值得注意的是,许多IPS检测器使用基于特征的检测技术,也就是说,这些攻击被发现时的特征被添加到一个数据库中,如果数据库中没有有关的特征就无法检测出来。因此,IPS或IDS就必须经常性的更新其数据库以识别有关的攻击,对于犯罪活动的检测需要持续不断的努力。
第五剑:保护用户生成的内容
还应该保护你的WEB操作人员,使其避免成为“稀里糊涂”的恶意软件犯罪的帮凶。如果你并没有朝着WEB 2.0社会网络迈进,你公司的公共博客和论坛就应该限制为只能使用文本方式,这也是Web Crossing的副总裁Michael Krieg的观点。
Krieg 说,“我并不清楚我们成千上万的用户有哪一个在消息文本中允许了JavaScript,我也不清楚谁在其中嵌入了代码和其它的HTML标签。我们不允许人们这样做。我们的应用程序在默认情况下要将这些东西剥离出去。”
Dan Hubbard是Websense安全研究的副总裁,他补充说,“那是用户创建内容站点的一个严重问题,即Web 2.0现象。你怎么才能在允许人们上传内容的强大功能与不允许他们上传不良的东西之间寻求平衡呢?”
这个问题的答案是很明确的。如果你的站点需要让会员或用户交换文件,就应该进行设置,使其只允许有限的和相对安全的文件类型,如那些以.jpeg或MP3为扩展名的文件。(不过,恶意软件的作者们已经开始针对MP3等播放器类型,编写了若干蠕虫。而且随着其技术水平的发现,有可能原来安全的文件类型也会成为恶意软件的帮凶。)
第六剑:使用补救工具
如果你发现了一台被感染的计算机,那么一个临时应急的重要措施就是如何进行补救。反病毒厂商也都试图保护系统免受rootkit的危害。
用一句成语讲,这就叫做“亡羊补牢”。Evron相信,保持一台计算机绝对安全干净、免受僵尸感染的方法是对原有的系统彻底清楚,并从头开始安装系统。
不要让你的用户访问已知的恶意站点,并监视网络中的可疑行为,保护你的公共站点免受攻击,你的网络就基本上处于良好状态。这是安全专家们一致的观点。
可以注意到,如果一个网络工作人员对于网络安全百思不得其解,并会油然而生这样一种感觉,‘我应该怎么对付这些数以百万的僵尸呢?’。”其实,答案非常简单,“只需断开你的网络,使其免受感染─病毒、木马、间谍软件或广告软件等……。将它当作一台PC上的一个流氓文件来进行清除(不过,谁又能保证真正清除干净呢?)。这就是你需要做的全部事情。”
一、阻断服务(Denial of Service) 在探讨DDoS 之前我们需要先对 DoS 有所了解,DoS泛指黑客试图妨碍正常使用者使用网络上的服务,例如剪断大楼的电话线路造成用户无法通话。而以网络来说,由于频宽、网络设备和服务器主机等处理的能力都有其限制,因此当黑客产生过量的网络封包使得设备处理不及,即可让正常的使用者无法正常使用该服务。例如黑客试图用大量封包攻击一般频宽相对小得多的拨接或 ADSL 使用者,则受害者就会发现他要连的网站连不上或是反应十分缓慢。 DoS 攻击并非入侵主机也不能窃取机器上的资料,但是一样会造成攻击目标的伤害,如果攻击目标是个电子商务网站就会造成顾客无法到该网站购物。 二、分布式阻断服务(Distributed Denial of Service) DDoS 则是 DoS 的特例,黑客利用多台机器同时攻击来达到妨碍正常使用者使用服务的目的。黑客预先入侵大量主机以后,在被害主机上安装 DDoS 攻击程控被害主机对攻击目标展开攻击;有些 DDoS 工具采用多层次的架构,甚至可以一次控制高达上千台电脑展开攻击,利用这样的方式可以有效产生极大的网络流量以瘫痪攻击目标。早在2000年就发生过针对Yahoo, eBay, Buy.com 和 CNN 等知名网站的DDoS攻击,阻止了合法的网络流量长达数个小时。 DDoS 攻击程序的分类,可以依照几种方式分类,以自动化程度可分为手动、半自动与自动攻击。早期的 DDoS 攻击程序多半属于手动攻击,黑客手动寻找可入侵的计算机入侵并植入攻击程序,再下指令攻击目标;半自动的攻击程序则多半具有 handler 控制攻击用的agent 程序,黑客散布自动化的入侵工具植入 agent 程序,然后使用 handler 控制所有agents 对目标发动 DDoS 攻击;自动攻击更进一步自动化整个攻击程序,将攻击的目标、时间和方式都事先写在攻击程序里,黑客散布攻击程序以后就会自动扫描可入侵的主机植入 agent 并在预定的时间对指定目标发起攻击,例如近期的 W32/Blaster 网虫即属于此类。 若以攻击的弱点分类则可以分为协议攻击和暴力攻击两种。协议攻击是指黑客利用某个网络协议设计上的弱点或执行上的 bug 消耗大量资源,例如 TCP SYN 攻击、对认证伺服器的攻击等;暴力攻击则是黑客使用大量正常的联机消耗被害目标的资源,由于黑客会准备多台主机发起 DDoS 攻击目标,只要单位时间内攻击方发出的网络流量高于目标所能处理速度,即可消耗掉目标的处理能力而使得正常的使用者无法使用服务。 若以攻击频率区分则可分成持续攻击和变动频率攻击两种。持续攻击是当攻击指令下达以后,攻击主机就全力持续攻击,因此会瞬间产生大量流量阻断目标的服务,也因此很容易被侦测到;变动频率攻击则较为谨慎,攻击的频率可能从慢速渐渐增加或频率高低变化,利用这样的方式延缓攻击被侦测的时间。 三、从 DDoS 攻击下存活 那么当遭受 DDoS 攻击的时候要如何设法存活并继续提供正常服务呢?由先前的介绍可以知道,若黑客攻击规模远高于你的网络频宽、设备或主机所能处理的能力,其实是很难以抵抗攻击的,但仍然有一些方法可以减轻攻击所造成的影响。 首先是调查攻击来源,由于黑客经由入侵机器进行攻击,因此你可能无法查出黑客是由哪里发动攻击,我们必须一步一步从被攻击目标往回推,先调查攻击是由管辖网络的哪些边界路由器进来,上一步是外界哪台路由器,连络这些路由器的管理者(可能是某个ISP或电信公司)并寻求他们协助阻挡或查出攻击来源,而在他们处理之前可以进行哪些处理呢? 如果被攻击的目标只是单一 ip,那么试图改个 ip 并更改其 DNS mapping 或许可以避开攻击,这是最快速而有效的方式;但是攻击的目的就是要使正常使用者无法使用服务,更改ip的方式虽然避开攻击,以另一角度来看黑客也达到了他的目的。此外,如果攻击的手法较为单纯,可以由产生的流量找出其规则,那么利用路由器的 ACLs(Access Control Lists)或防火墙规则也许可以阻挡,若可以发现流量都是来自同一来源或核心路由器,可以考虑暂时将那边的流量挡起来,当然这还是有可能将正常和异常的流量都一并挡掉,但至少其它来源可以得到正常的服务,这有时是不得已的牺牲。如果行有余力,则可以考虑增加机器或频宽作为被攻击的缓冲之用,但这只是治标不治本的做法。最重要的是必须立即着手调查并与相关单位协调解决。 四、预防DDoS攻击 DDoS 必须透过网络上各个团体和使用者的共同合作,制定更严格的网络标准来解决。每台网络设备或主机都需要随时更新其系统漏洞、关闭不需要的服务、安装必要的防毒和防火墙软件、随时注意系统安全,避免被黑客和自动化的 DDoS 程序植入攻击程序,以免成为黑客攻击的帮凶。 有些 DDoS 会伪装攻击来源,假造封包的来源 ip,使人难以追查,这个部份可以透过设定路由器的过滤功能来防止,只要网域内的封包来源是其网域以外的 ip,就应该直接丢弃此封包而不应该再送出去,如果网管设备都支持这项功能,网管人员都能够正确设定过滤掉假造的封包,也可以大量减少调查和追踪的时间。 网域之间保持联络是很重要的,如此才能有效早期预警和防治 DDoS 攻击,有些 ISP会在一些网络节点上放置感应器侦测突然的巨大流量,以提早警告和隔绝 DDoS 的受害区域,降低顾客的受害程度。