3、Smurf防范的几种方法
阻塞Smurf攻击的源头:Smurf攻击依靠攻击者的力量使用欺骗性源地址发送echo请求。用户可以使用路由路的访问保证内部网络中发出的所有传输信息都具有合法的源地址,以防止这种攻击。这样可以使欺骗性分组无法找到反弹站点。
阻塞Smurf的反弹站点:用户可以有两种选择以阻塞Smurf攻击的反弹站点。第一种方法可以简单地阻塞所有入站echo请求,这们可以防止这些分组到达自己的网络。如果不能阻塞所有入站echo请求,用户就需要让自己的路由器把网络广播地址映射成为LAN广播地址。制止了这个映射过程,自己的系统就不会再收到这些echo请求。
阻止Smurf平台:为防止系统成为 smurf攻击的平台,要将所有路由器上IP的广播功能都禁止。一般来讲,IP广播功能并不需要。 如果攻击者要成功地利用你成为攻击平台,你的路由器必须要允许信息包以不是从你的内网中产生的源地址离开网络。配置路由器,让它将不是由你的内网中生成的信息包过滤出去,这是有可能做到的。这就是所谓的网络出口过滤器功能。
防止Smurf攻击目标站点:除非用户的ISP愿意提供帮助,否则用户自己很难防止Smurf对自己的WAN接连线路造成的影响。虽然用户可以在自己的网络设备中阻塞这种传输,但对于防止Smurf吞噬所有的WAN带宽已经太晚了。但至少用户可以把Smurf的影响限制在外围设备上。通过使用动态分组过滤技术,或者使用防火墙,用户可以阻止这些分组进入自己的网络。防火墙的状态表很清楚这些攻击会话不是本地网络中发出的(状态表记录中没有最初的echo请求记录),因些它会象对待其它欺骗性攻击行为那样把这样信息丢弃。
4、UDP Flood防范
以前文提到的trinoo为例,分析如下:
在master程序与代理程序的所有通讯中,trinoo都使用了UDP协议。入侵检测软件能够寻找使用UDP协议的数据流(类型17)。
Trinoo master程序的监听端口是27655,攻击者一般借助telnet通过TCP连接到master程序所在计算机。入侵检测软件能够搜索到使用TCP (类型6)并连接到端口27655的数据流。
所有从master程序到代理程序的通讯都包含字符串"l44",并且被引导到代理的UDP 端口27444。入侵检测软件检查到UDP 端口27444的连接,如果有包含字符串l44的信息包被发送过去,那么接受这个信息包的计算机可能就是DDoS代理。
Master和代理之间通讯受到口令的保护,但是口令不是以加密格式发送的,因此它可以被“嗅探”到并被检测出来。使用这个口令以及来自Dave Dittrich的trinot脚本http://staff.washington.edu/dittrich/misc/trinoo.analysis,要准确地验证出trinoo代理的存在是很可能的。
一旦一个代理被准确地识别出来,trinoo网络就可以安装如下步骤被拆除:
在代理daemon上使用"strings"命令,将master的IP地址暴露出来。
与所有作为trinoo master的机器管理者联系,通知它们这一事件。
在master计算机上,识别含有代理IP地址列表的文件(默认名"..."),得到这些计算机的IP地址列表。
向代理发送一个伪造"trinoo"命令来禁止代理。通过crontab 文件(在UNIX系统中)的一个条目,代理可以有规律地重新启动, 因此,代理计算机需要一遍一遍地被关闭,直到代理系统的管理者修复了crontab文件为止。
检查master程序的活动TCP连接,这能显示攻击者与trinoo master程序之间存在的实时连接。
如果网络正在遭受trinoo攻击,那么系统就会被UDP 信息包所淹没。Trinoo从同一源地址向目标主机上的任意端口发送信息包。探测trinoo就是要找到多个UDP信息包,它们使用同一来源IP地址、同一目的IP地址、同一源端口,但是不同的目的端口。
在http://www.fbi.gov/nipc/trinoo.htm上有一个检测和根除trinoo的自动程序。
5、使用DNS来跟踪匿名攻击
从一个网管的观点来看,防范的目标并不是仅仅阻止拒绝服务攻击,而是要追究到攻击的发起原因及操作者。当网络中有人使用假冒了源地址的工具(如tfn2k)时,我们虽然没有现成的工具来确认它的合法性,但我们可以通过使用DNS来对其进行分析:
假如攻击者选定了目标www.ttttt.com,他必须首先发送一个DNS请求来解析这个域名,通常那些攻击工具工具会自己执行这一步,调用gethostbyname()函数或者相应的应用程序接口,也就是说,在攻击事件发生前的DNS请求会提供给我们一个相关列表,我们可以利用它来定位攻击者。
使用现成工具或者手工读取DNS请求日志,来读取DNS可疑的请求列表都是切实可行的,然而,它有三个主要的缺点:
攻击者一般会以本地的DNS为出发点来对地址进行解析查询,因此我们查到的DNS请求的发起者有可能不是攻击者本身,而是他所请求的本地DNS服务器。尽管这样,如果攻击者隐藏在一个拥有本地DNS的组织内,我们就可以把该组织作为查询的起点。
攻击者有可能已经知道攻击目标的IP地址,或者通过其他手段(host,
ping)知道了目标的IP地址,亦或是攻击者在查询到IP地址后很长一段时间才开始攻击,这样我们就无法从DNS请求的时间段上来判断攻击者(或他们的本地服务器)。
DNS对不同的域名都有一个却省的存活时间,因此攻击者可以使用存储在DNS缓存中的信息来解析域名。为了更好做出详细的解析记录,您可以把DNS却省的TTL时间缩小,但这样会导致DNS更多的去查询所以会加重网络带宽的使用。
6、主机防范
所有对因特网提供公开服务的主机都应该加以限制。下面建议的策略可以保护暴露在因特网上的主机。
将所有公开服务器与DMZ隔离
提供的每种服务都应该有自己的服务器。
如果使用Linux(建议这样做),你就可以使用一个或几个"缓冲溢出/堆栈执行"补丁或增强来防止绝大多数(如果不能全部)本地或远程缓冲溢出,以避免这些溢出危及根的安全。强烈建议将Solar Designer的补丁包括在附加的安全特征中。
使用SRP(Secure Remote Password 安全远程口令)代替SSH。
限制只有内部地址才能访问支持SRP的telnet和FTP守护程序,强调只有支持SRP的客户端才可以与这些程序对话。如果你必须为公开访问运行常规的FTP(比如匿名FTP),可以在另一个端口运行SRP FTP。
使用可信任的路径。根用户拥有的二进制执行程序应该放置的目录的所有权应该是根,不能让全部用户或组都有写权限。如果有必要的话,为了强制这样做,你可以改变内核。
使用内置防火墙功能。通过打开防火墙规则,可以经常利用内核状态表。
使用一些防端口扫描措施。这可以使用Linux的后台程序功能或通过修改内核实现。
使用Tripwire 和相同作用的软件来帮助发觉对重要文件的修改。
7、电子邮件炸弹防护
对于保护电子件的安全来说,了解一下电子邮件的发送过程是很有必要的。它的过程是这样的,当有用户将邮件写好之后首先连接到邮件服务器上,当邮件服务器有响应时便会启动邮件工具,调用路由(这里指的是邮件的路由)程序Sendmail进行邮件路由,根据邮件所附的接收地址中指定的接收主机,比如:a@163.net里的163.net,与位于主机163.net电子邮件后台守护程序建立25端口的TCP连接,建立后双方按照SMTP协议进行交互第进,从而完成邮件的投递工作,接收方电子邮件接收邮件后,再根据接收用户名称,放置在系统的邮件目录里,如/usr/电子邮件目录的semxa文件中。接收用户同样使用邮件工具获取和阅读这些已投递的邮件。如果投递失败的话,这些邮件将重新返回到发送方。实际上电子邮件的发送过程要比这里所说的更为复杂些,在过程里将会涉及很多的配置文件。在现在的SMTP协议是一个基于文本的协议,理解和实现都相对比较简单些,你可以使用telnet直接登陆到邮件服务器的25端口(由LANA授权分配给SMTP协议)进行交互。
保护电子信箱邮件的信息安全最有效的办法就是使用加密的签名技术,像PGP来验证邮件,通过验证可以保护到信息是从正确的地方发来的,而且在传送过程中不被修改。但是这就不是个人用户所能达到的了,因为PGP比较复杂。
就电子邮件炸弹而言,保护还是可以做得很好的。因为它的复杂性不是很高,多的仅仅是垃圾邮件而已。你可以使用到http://semxa.kstar.com/hacking/echom201.zip E-mail Chomper(砍信机)来保护自己。但是目前就国内用户而言,大多用户所使用的都是免费的邮箱,像yeah.net、163.net、263.net等,即便是有人炸顶多也是留在邮件服务器上了,危害基本上是没有的。如果是用pop3接的话,可以用Outlook或Foxmail等pop的收信工具来接收的mail,大多用户使用的是windows的Outlook Express,可以在“工具-收件箱助理”中设置过滤。对于各种利用电子邮件而传播的Email蠕虫病毒和对未知的Emai蠕虫病毒你可以使用防电子邮件病毒软件来防护。
另外,邮件系统管理员可以使用“黑名单”来过滤一些垃圾信件。对于不同的邮件系统,大都可以在网络上找到最新的黑名单程序或者列表。
8、使用ngrep工具来处理tfn2k攻击
根据使用DNS来跟踪tfn2k驻留程序的原理,现在已经出现了称为ngrep的实用工具。经过修改的ngrep可以监听大约五种类型的tfn2k拒绝服务攻击(targa3,
SYN
flood,
UDP
flood,
ICMP
flood
和
smurf),它还有一个循环使用的缓存用来记录DNS和ICMP请求。如果ngrep发觉有攻击行为的话,它会将其缓存中的内容打印出来并继续记录ICMP回应请求。假如攻击者通过ping目标主机的手段来铆定攻击目标的话,在攻击过程中或之后记录ICMP的回应请求是一种捕获粗心的攻击者的方法。由于攻击者还很可能使用其他的服务来核实其攻击的效果(例如web),所以对其他的标准服务也应当有尽量详细的日志记录。
还应当注意,ngrep采用的是监听网络的手段,因此,ngrep无法在交换式的环境中使用。但是经过修改的ngrep可以不必和你的DNS在同一个网段中,但是他必须位于一个可以监听到所有DNS请求的位置。经过修改的ngrep也不关心目标地址,您可以把它放置在DMZ网段,使它能够检查横贯该网络的tfn2k攻击。从理论上讲,它也可以很好的检测出对外的tfn2k攻击。
在ICMP
flood事件中,ICMP回应请求的报告中将不包括做为tfn2k
flood一部分的ICMP包。Ngrep还可以报告检测出来的除smurf之外的攻击类型(TARGA,
UDP,
SYN,
ICMP等)。混合式的攻击在缺省情况下表现为ICMP攻击,除非你屏蔽了向内的ICMP回应请求,这样它就表现为UDP或SYN攻击。这些攻击的结果都是基本类似的。
9、有关入侵检测系统的建议
由于许多用来击败基于网络的入侵检测系统的方法对绝大多数商业入侵检测系统产品仍然是有效的,因此建议入侵检测系统应该至少有能重组或发觉碎片的自寻址数据包。下面是部分要注意的事项:
确信包括了现有的所有规则,包括一些针对分布式拒绝服务攻击的新规则。如果遵循了ICMP建议项,许多ICMP会被阻塞,入侵检测系统触发器存在许多机会。任何通常情况下要被阻塞的入站或出站的ICMP数据包可以被触发。 "任何"被你用防火墙分离的网络传输都可能是一个潜在的IDS触发器。
如果你的入侵检测系统支持探测长时间周期的攻击,确信没有把允许通过防火墙的被信任主机排除在外。这也包括虚拟专用网。 如果你能训练每个使用ping的用户在ping主机时使用小数据包,就可能设置入侵检测系统寻找超29字节的Echo和Echo应答数据包。