Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

IDS学习之四——几种分布式攻击的防范

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

  防止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协议)进行交互。

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:囚禁你的精灵(daemon)进程   下一篇:如何解决ftp连接过慢的方法

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号