因为unix系统经常承当着关键任务,所以它经常是入侵者攻击的首选目标。于是检测入侵、保护系统安全是管理员的最为重要的任务之一。那么,在没有其它工具帮助的情况下,如何去判断系统当前的安全性?如何去发现入侵呢?下面给大家介绍一些常用到的检查方法 *I9O+/,
jchq\q)_z
以linux和solaris为例: Aqo90(jffx
)SyU
1、检查系统密码文件 7mtX/w9
"? ON0u9
首先从明显的入手,查看一下passwd文件,ls –l /etc/passwd查看文件修改的日期。 }va>jfy
5]~451
输入命令 oMHTB!A=2
j9~lf
';;X{a
awk –f:’$3==0 {print $1}’ /etc/passwd cUC!'+L
aM YtWj
e\r%"~v
?@CbaX~+K
来检查一下passwd文件中有哪些特权用户,系统中uid为0的用户都会被显示出来。顺便再检查一下系统里有没有空口令帐户:
()e|BFL .
RAj>{/E#W
awk –f: ‘length($2)==0 {print $1}’ /etc/shadow h]pz12Yf
{[dY$
2、查看一下进程,看看有没有奇怪的进程 AL;4-(KH
%uDH_J|^
重点查看进程:ps –aef | grep inetd。inetd是unix系统的守护进程,正常的inetd的pid都比较靠前,如果你看到输出了一个类似inetd –s /tmp/.xxx之类的进程,着重看inetd –s后面的内容。在正常情况下,linux系统中的inetd服务后面是没有-s参数的,当然也没有用inetd去启动某个文件;而solaris系统中也仅仅是inetd –s,同样没有用inetd去启动某个特定的文件;如果你使用ps命令看到inetd启动了某个文件,而你自己又没有用inetd启动这个文件,那就说明已经有人入侵了你的系统,并且以root权限起了一个简单的后门。 "NtY[sT{V
R*DQLBWc
输入ps –aef 查看输出信息,尤其注意有没有以./xxx开头的进程。一旦发现异样的进程,经检查为入侵者留下的后门程序,立即运行kill –9 pid 开杀死该进程,然后再运行ps –aef查看该进程是否被杀死;一旦此类进程出现杀死以后又重新启动的现象,则证明系统被人放置了自动启动程序的脚本。这个时候要进行仔细查找:find / -name 程序名 –print,假设系统真的被入侵者放置了后门,根据找到的程序所在的目录,unix下隐藏进程有的时候通过替换ps文件来做,检测这种方法涉及到检查文件完整性,一会我们再讨论这种方法。接下来根据找到入侵者在服务器上的文件目录,一步一步进行追踪。 45;ey }8
%
Ou'+A
3、检查系统守护进程 xQkvK=~$
a!B"WNb+
检查/etc/inetd.conf文件,输入: CN:z
*g
Dvm[W),(k
|dhKeg_
cat /etc/inetd.conf | grep –v “^#” :f~qt%%/
}/2M?W0
(9Q@I8}Iy
*" +u^
输出的信息就是你这台机器所开启的远程服务。一般入侵者可以通过直接替换in.xxx程序来创建一个后门,比如用/bin/sh 替换掉in.telnetd,然后重新启动inetd服务,那么telnet到服务器上的所有用户将不用输入用户名和密码而直接获得一个rootshell。 ZQ{-6VCjl
4、检查网络连接和监听端口 {A'_5 X9
iTVZo?lVo
输入netstat -an,列出本机所有的连接和监听的端口,查看有没有非法连接。 H{hzw&dZ<P
YO9;NA{sH
输入netstat –rn,查看本机的路由、网关设置是否正确。 _$i)bJ
v1z
d[jqk
输入 ifconfig –a,查看网卡设置。 %rJ'DPs
LB`{35b-
5、检查系统日志 oL@K{dk
`T{'ufI4B
命令last | more查看在正常情况下登录到本机的所有用户的历史记录。但last命令依赖于syslog进程,这已经成为入侵者攻击的重要目标。入侵者通常会停止系统的syslog,查看系统syslog进程的情况,判断syslog上次启动的时间是否正常,因为syslog是以root身份执行的,如果发现syslog被非法动过,那说明有重大的入侵事件。 hlmeT9v{
p0hE`!
bE?X?[K
在linux下输入ls –al /var/log &O#,"u/q`
在solaris下输入 ls –al /var/adm 9e Fj+
&%m%b5
检查wtmp utmp,包括messgae等文件的完整性和修改时间是否正常,这也是手工擦除入侵痕迹的一种方法。 es<8"CcP
K/K|[=bl
6、检查系统中的core文件 @Gt.J*!s/
:0Z\-7iK
通过发送畸形请求来攻击服务器的某一服务来入侵系统是一种常规的入侵方法,典型的rpc攻击就是通过这种方式。这种方式有一定的成功率,也就是说它并不能100%保证成功入侵系统,而且通常会在服务器相应目录下产生core文件,全局查找系统中的core文件,输入find / -name core –exec ls –l {} \; 依据core所在的目录、查询core文件来判断是否有入侵行为。 ih-J{1
jl5&T{z
7、检查系统文件完整性 fZrh_^yH
LGK@taw^
检查文件的完整性有多种方法,通常我们通过输入ls –l 文件名来查询和比较文件,这种方法虽然简单,但还是有一定的实用性。但是如果ls文件都已经被替换了就比较麻烦。在linux下可以用rpm –v `rpm –qf 文件名` 来查询,查询的结果是否正常来判断文件是否完整。在linux下使用rpm来检查文件的完整性的方法也很多,这里不一一赘述,可以man rpm来获得更多的格式。 _!,Ees=b
L~AU4Q0o
unix系统中,/bin/login是被入侵者经常替换作为后门的文件,接下来谈一下login后门 : "SRS{-p0
aK/fZ$Qc
unix里,login程序通常用来对telnet来的用户进行口令验证。入侵者获取login的源代码并修改,使它在比较输入口令与存储口令时先检查后门口令。如果用户敲入后门口令,它将忽视管理员设置的口令让你长驱直入:这将允许入侵者进入任何账号,甚至是root目录。由于后门口令是在用户真实登录并被日志记录到utmp和wtmp前产生的一个访问,所以入侵者可以登录获取shell却不会暴露该账号。管理员注意到这种后门后,使用”strings”命令搜索login程序以寻找文本信息。 HoK+g_9~
7}vI/?r
许多情况下后门口令会原形毕露。入侵者又会开始加密或者更改隐藏口令,使strings命令失效。所以许多管理员利用md5校验和检测这种后门。unix系统中有md5sum命令,输入md5sum 文件名检查该文件的md5签名。它的使用格式如下: kpXxg: c
zd/kr
md5sum –b 使用二进制方式阅读文件; me@)kQ8M
3g3f87[
md5sum –c 逆向检查md5签名; [iZH[7&j
DLuaM?7
md5sum –t 使用文本方式阅读文件。 2M=h:::W
:C2
@!W
z
在前面提到过守护进程,对于守护进程配置文件inetd.conf中没有被注释掉的行要进行仔细比较,举个简单的例子,如果你开放了telnet服务,守护进程配置文件中就会有一句:
1D_&n@
sNM ]bei
t&