现在,大量的网络服务器开始使用Linux操作系统,Linux服务器的安全性也开始受到关注。对Linux服务器攻击的定义是:攻击是一种旨在妨碍、损害、削弱、破坏Linux服务器安全的未授权行为,攻击的范围能够从服务拒绝直至完全危害和破坏Linux服务器。对Linux服务器攻击有许多种类,从攻击深度的角度说明,我们能够把攻击分为四级:服务拒绝攻击(DoS)、本地用户获取了非授权的文档的读写权限、远程用户获得特权文档的读写权限、远程用户获得根权限。下面,我们将选取一些有针对性的经典工具,一一加以说明。

1、溢出:从开源代码开始

Linux系统中最常见的缺陷就是缓冲区溢出,缓冲区以前可能被定义为“包含相同数据类型的实例的一个连续电脑内存块”。极其常见的缓冲区种类是简单的字符数组,溢出就是数据被添加到分配给该缓冲区的内存块之外。由此,我们能够看到,作为开源系统,Linux系统中的代码检查就显得十分重要。对于攻击者和管理员来说,谁首先重视他,就在一定程度上取得了主动权。

(1)SPIKE

SPIKE是immunitysec公司的Dave Aitel写的一个黑盒进行安全测试的工具。SPIKE提供了各种各样的构造函数。例如s_binary能够构造二进制数据,s_string能够构造字符串,s_unistring能够构造UNICODE字符串等。SPIKE的另一个优势是Dave Aitel的Fuzz理论,他能够构造一些特别的数字或字符串作为程式的输入,检查程式是否能够处理这些异常数据。此外,SPIKE里边提供了常见的协议支持,例如SUN RPC和MS RPC。

(2)Lint

Lint能够检查的部分错误列表:可能的空指针;在释放内存之后使用了该指针;赋值次序问题;拼写错误等。通常,一个C/C 的编译器假设程式是正确的,而Lint恰恰相反,因此,他优于编译器执行的一般性检查。Lint还能够贯穿多个文档来执行他的错误检查和代码分析,这是编译器做不到的。比较流行的Lint 程式有:PC-lint是个由Gimpel Software提供的支持C/C 的商用程式;Splint (原来的 LCLint) 是个GNU免费授权的 Lint程式,但是只支持C不支持C 。

运行 Lint时,和正常的编译器相同,只要把直接加入的makefile 中就能够了。通过配置选项、代码注释等方法能够控制和校准Lint的输出。例如,这里有一个返回NULL指针的函数,Splint能够通过下面的注释 /*@null@*/ 来识别:

/*@null@*/ void *test(void){// a function that returns NULL!return NULL;      }

这样做有两个目的:防止Splint为这个返回Null指针的函数告警;确保Splint 检查任何调用该函数的代码中使用该函数的返回指针是有效的。

(3)Flawfinder

Flawfinder 是一款用Python编写的c、c 程式安全审核工具,能够检查潜在的安全风险。他通过搜索检测文档源代码从而得到潜在的安全漏洞,支持检测数据库,以HTML格式生成报告。

2、嗅探器:Linux上的“狗鼻子”

Sniffer是一种常用的收集有用数据方法,他几乎能得到任何以太网上的传送的数据包。这些数据能够是用户的帐号和密码,能够是一些商用机密数据等等。这些嗅探器很容易被入侵者完成入侵以后种植在受害者服务器当中,有的只是简单的用来捕获用户名和密码,有的则很强大可记录任何的网络数据流。 Linux操作系统下有很多这样的优秀工具,下面,我们来具体看看。

(1)tcpdump

这是个专业的网络管理工具,而且这个工具也留下了不少网络攻击故事。他能把匹配规则的数据包的包头显示出来,使用TCPDump去查找网络问题或去监控网络上的状况.。tcpdump的安装十分简单,一般由两种安装方式。一种是以rpm包的形式来进行安装。另外一种是以源程式的形式安装。以rpm 包的形式安装是最简单的安装方法,通过rpm命令能够直接安装。以终极用户登录后,使用命令:#rpm -ivh tcpdump.rpm,就能够顺利安装了。

Tcpdump采用命令行的方式使用,他的命令格式为:

tcpdump [-adeflnNOpqStvx ] [ -c 数量 ] [ -F 文档名 ]

[ -i 网络接口 ] [ -r 文档名] [ -s snaplen ]

[ -T 类型 ] [ -w 文档名 ] [表达式 ]

其中,“-a”表示将网络地址和广播地址转变成名字;“-d”表示将匹配信息包的代码以人们能够理解的汇编格式给出;“-e”表示在输出行打印出数据链路层的头部信息;“-c”表示在收到指定的包的数目后,tcpdump就会停止;“-F”表示从指定的文档中读取表达式,忽略其他的表达式;“-i”表示指定监听的网络接口;“-r”表示从指定的文档中读取包(这些包一般通过-w选项产生);“-w”表示直接将包写入文档中,并不分析和打印出来;“- T”表示将监听到的包直接解释为指定的类型的报文,常见的类型有远程过程调用和snmp简单网络管理协议。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!