另外一个流行的TCP相关的攻击是一种MIM攻击,称为TCP Connection Hijacking。攻击者处于用TCP通讯的两台计算机之间,在三次握手时或其后可以抓住TCP连接的控制权。建立连接时,通过创建desynchronized state,即连接已经建立,由于没有发出数据,一台主机的SEQ号会与另外一台的ACK号不同,类似的还有(A_SEQ ≠ B_ACK,B_SEQ ≠ A_ACK)。在desynchronized state期间,主机将丢弃另外一台主机发来的包(DoS),然而攻击者可以创建有正确编号的包,并在通讯中插入命令。
UDP攻击
既然UDP不需要建立连接,能影响它的唯一办法就是向目标机器的随机端口发送大量UDP包。这类攻击称为UDP洪水。被攻击的机器将试图判断包的目标程序,如果没有程序监听该UDP端口,该包将被丢弃。这类洪水攻击会造成受害机器过载和系统崩溃。
TCP和UDP端口扫描攻击
端口扫描是攻击者攻击之前要做的第一件事。使用互联网上找到的各种工具(比如nmap),攻击者可以找到主机开放的TCP和UDP端口,判断上面运行的服务,以便进一步找到漏洞。
第5、6、7层安全威胁
我们将OSI第5、6、7层放在一起以对应TCP/IP的应用层。过去有许多程序存在众所周知的漏洞,其中大部分都是出在OSI模型的上3层。我们将介绍其中一部分流行的程序,已经其中存在大量漏洞。
BIND DNS
BIND (Berkley Internet Name Domain)是互联网上应用最广的DNS服务器,现在的Linux版本都集成有BIND。
BIND及别的DNS服务器存在的问题是,为了能够将域名翻译成IP地址,它不得不与大量别的DNS服务器通讯,这导致无法对DNS包进行过滤。
DNS服务是互联网连接的生命源。为了制造破坏,攻击者对侵入DNS服务器的兴趣异常浓厚。虽然BIND的安全问题广为人知,仍然有大量存在漏洞的BIND服务器,因此如果你运行BIND时要格外小心。
下面是使用BIND的安全建议:
● 不要使用你的Linux自带的BIND,到BIND网站 (http://www.isc.org)下载一份最新版的
● 为BIND设置chroot jail,这是减少攻击者成功获取shell时的损失的最好的办法。如果没有设置,服务器上所有数据都有可能泄露。
● 随时关注安全更新并及时升级
● 用TSIG保护主、从服务器间的区传输
● 关闭对递归查询的支持
虽然BIND非常流行并且易于配置,但是推荐使用TinyDNS,多年来证明它更安全。
Apache网页服务器
Apache是最流行的网页服务器,可从http://www.apache.org找到,过去存在大量安全问题,无论是Apache的bug还是附加模块的漏洞。安全建议:
● 随时关注安全更新并及时升级
● 删除所有示范脚本及附加模块(如mod_php、mod_cgi、mod_perl等)
● 如果要支持PHP、CGI及别的脚本语言,推荐采用suEXEC,它是由Apache调用的包装程序,允许用Apache用户之外的用户ID调用脚本。
● 不允许从不信任的地方向你的网页服务器上传任何脚本
● 阅读你安装的开源项目的所有漏洞信息,比如PHPBB
● 不要用root身份运行网页服务器,为之创建一个最小权限的用户
● 修改你的网页服务器的响应符,如果攻击者不知道你运行的是哪种网页服务器,攻击起来更难
版本控制系统
Linux系统下最流行的版本控制系统是CVS(Concurrent Versions System),被许多开源项目采用,允许匿名通过pserver协议由默认下的TCP端口2410访问他们的CVS库。允许远程访问的CVS服务器有如下漏洞:
● 用特别设计的代码可以激发服务器的堆栈缓冲溢出,这些代码在安全列表上公开,攻击者可以用之在CVS服务器上运行任意命令
● 还有一些别的命令、功能可以被用来制造DoS或执行任意代码
安全建议:
● 随时关注安全更新并及时升级
● 为之设置chroot jail
● 配置CVS用ssh替代pserver协议
● 如果不开放匿名登录,过滤2401端口,只允许信任主机访问
● 把匿名访问放到独立系统上,并且只读
● 用已经公开的漏洞攻击代码测试你的CVS服务器
另外一个日渐流行的版本控制系统为subversion。可以通过svn协议远程访问subversion库,默认开放TCP端口3690,存在如下漏洞:
● 用特别设计的代码可以激发服务器的堆栈缓冲溢出,攻击者可以用之在服务器上运行任意命令
● 用特别设计的svn命令get-date-rev可以引起堆栈缓冲溢出
0 comment(s)



2008/07/09 17:36 ..by
内文分页: 
