Solaris日志记录介绍

solaris日志介绍

假设你是一位使用solaris操作系统的网站管理员,有一天你无意中在你硬盘/var/adm目录下messages文件中看到了如下类似内容:

Apr 24 20:31:04 nmssa /usr/dt/bin/rpc.ttdbserverd[405]: _Tt_file_system::findBest 
MountPoint -- max_match_entry is null, aborting…
Apr 24 20:31:05 nmssa inetd[140]: /usr/dt/bin/rpc.ttdbserverd: Segmentation Faul
t - core dumped

知道这意味着什么吗?你的系统已有至少99%的可能性被侵入!

目前使用solaris的系统管理员都知道在/var区下有个目录adm,在这个目录下有messags,syslog,sulog,utmp等诸多日志文件,它们记录着solaris系统产生的各种消息日志。从系统管理员的角度来讲,清楚的理解各个日志文件的功能及作用是很有必要的,在系统发生安全问题时,这些日志纪录可以在一定意义上起到帮助和诊断作用。

我们来依次看看Adm目录下的主要文件。

adm/messags 

我们先来看最为重要的messages文件, messages记载来自系统核心的各种运行日志,包括各种精灵,如认证,inetd等进程的消息及系统特殊状态,如温度超高等的系统消息,可以说它是系统最重要的日志之一。 messages可以记载的内容是由/etc/syslog.conf决定的,有兴趣的读者可以使用man syslog.conf命令来做一个详细了解,这里就不介绍了。就安全的角度来讲,目前互联网上入侵者采用的手段大多数是利用系统的漏洞,而当入侵者试图利用漏洞对你的服务器进行攻击时,在服务器的messages文件中一般会留下一些异常的内容,如本文最开始描述的部分,就是目前互联网上入侵者使用 rpc.ttdbserver漏洞攻击所留下的痕迹,它是solaris最为臭名昭著的一个系统漏洞,入侵者利用这个漏洞可以轻松的从远端得到超级用户权限,但这种攻击不是干净的入侵攻击,它会在messages下留下记录,同时会在根目录下生成core文件,如果细心的管理员经常检查系统日志,是不难发现有入侵者或入侵企图的,又比如下面的纪录:

Apr 24 11:26:25 unix.secu.com ftpd[7261]: anonymous (bogus) LOGIN FAILED [from 11.22.33.46] 
Apr 24 11:27:23 unix.secu.com ftpd[7264]: 163 (bogus) LOGIN FAILED [from 11.22.33.49]
Apr 24 11:28:44 unix.secu.com ftpd[7265]: abc (bogus) LOGIN FAILED [from 11.22.33.46]

管理员可以从上述纪录中可以清楚看到在24日11点26, 11点27, 11点28分有可疑用户在猜主机的ftp口令,它们的来源ip 分别是 11.22.33.46和11.22.33.49。

adm/sulog 

sulog中记载着普通用户尝试su成为其它用户的纪录。它的格式为: 发生时间 +/-(成功/失败) pts号 当前用户欲su成的用户我们截取一部分实际内容,来看一下:

SU 04/15 16:35 + pts/6 yiming-root 
SU 04/15 16:43 + pts/4 root-yiming
SU 04/17 08:20 - pts/5 cheny-root
SU 04/18 16:36 - pts/4 cheny-root
SU 04/19 02:57 + pts/11 lizhao-root
SU 04/19 19:57 + pts/11 cys-root
SU 04/21 08:20 - pts/4 cheny-root
SU 04/21 16:36 - pts/8 cheny-root
SU 04/22 15:23 - pts/5 cheny-root

对管理员来讲,需要密切关注两种用户,第一是反复su失败的,如以上cheny用户,他有猜超级用户口令的嫌疑。第二是在不正常时间的su纪录,如上述第六行用户lizhao,随然他正确的输入了口令(在第四列中有+号)但02:57分这个时间比较可疑,这是一个管理员不大可能工作的时间,要知道,入侵者可能安装过sniffer之类的软件,并利用它窃取到了超级用户口令,为了进一步做工作,如窃取主机敏感数据,入侵者需要进行比较复杂的操作,但在白天这个系统管理员活动的时间被发现的可能性是比较大的,所以即使入侵者得到了高权限的密码,一般也会选择深夜等管理员一般不工作的时间。这些时候没有人会抓他。

adm/utmp,utmpx

这两个文件是不具可读性的,它们记录着当前登录在主机上的用户,管理员可以用w,who等命令来看,下面为who的输出结果,

yiming pts/29 Jun 12 09:24 (11.22.33.44) 
yiming pts/28 Jun 12 08:41 (11.22.33.43)
guest pts/30 Jun 12 09:26 (penetrate.hacker.com)
root pts/19 Jun 12 08:19 (:0.0)

它的输出很简单,每行依次为用户,pts号,时间,来源地点。当管理员觉得系统表现可疑时,一般会用这两个命令来看当前用户,如果在输出中有不正常的用户名,或是来源ip较为可疑,则管理员需要引起注意了。如上述guest这个用户就比较可疑,虽然这个用户名guest是合法的,但这个用户的来源 penetrate.Hacker.com看起来可是不太对劲。系统管理员有必要监视一下这个用户的行为。有一点要注意,管理员不能完全相信w,who及下面提到的last命令所报告的结果,使用特定的擦除日志软件,如zap之类入侵者可以很轻松的抹掉入侵者的踪迹,一个聪明的入侵者一般会将编译好的擦除软件传到受害主机,并在侵入系统后马上做擦除工作,比如他在受害主机执行zap,如下,


./zap -v guest
- WTMP:
WTMP = /var/adm/wtmp
Removing user guest at pos: 131328
Done!
- UTMP:
UTMP = /var/adm/utmp
Removing user guest at pos: 864
Done!
- LASTLOG:
LASTLOG = /var/adm/lastlog
User guest has no wtmp record。 Zeroing lastlog。。
- WTMPX:
WTMPX = /var/adm/wtmpx
Done!
- UTMPX:
UTMPX = /var/adm/utmpx
Done!
此时,在用w看时,我们看看发生了什么变化?
yiming pts/29 Jun 12 09:24 (11.22.33.44) 
yiming pts/28 Jun 12 08:41 (11.22.33.43)
root pts/19 Jun 12 08:19 (:0.0)

我们可以看到入侵者消失了!这对入侵者是个好消息,但对一个安全意识较差的系统管理员而言,这台主机可不大妙了。建议如果系统看起来不大对劲,而用w,last等看出不出来端倪的话,还是安装其它系统监视软件如ttywatcher,ethereal等仔细审核一下。

adm/wtmp,wtmps

这两个文件相当于历史纪录,它们记录着所有登录过主机的用户,时间,来源等内容, 这两个文件也是不具可读性的。可用last命令来看,如下。

support pts/13 11.22.33.44 Thu Apr 20 18:40 - 20:50 (02:10) 
gogo pts/12 11.22.33.45 Thu Apr 20 1:53 - 17:21 (02:28)
root ftp secu.unix.com Wed Apr 19 14:58 - 14:58 (00:00)

管理员要注意那些发生在不正常时间或是来自可疑地点的登录纪录,如上面输出结果中的gogo用户,这个时间不太正常。

与上面utmp,utmpx一样,管理员也应该清楚:last只能给你一个大概的参考,不要完全相信last的结果。

除了上述几个文件外,在/var/log目录下还有一个syslog文件,这个文件的内容一般是纪录mail事件的,管理员应该经常检查有没有异常纪录。

最后来讲一讲solaris一个很少被用起但却极为有用的功能—记账。Solaris操作系统可以通过设置日志文件可以对每个用户的每一条命令进行纪录,这一功能默认是不开放的,为了打开它,需要执行/usr/lib/acct目录下的accton文件,格式如下/usr/lib/acct /accton /var/adm/pacct,在sun的手册上,只有这一种用法,但这样做的缺点是明显的,大多数有经验的入侵者一定不会放过/var/adm和 /var/log这两个目录的,如果它们看到有pacct这个东西,不删才怪。针对这种情况其实有个很好的解决办法,执行/usr/lib/acct /accton 后面跟一个别的目录和文件即可,如/usr/lib/acct/accton /yiming/log/commandlog,这样入侵者不会在/var/adm/下看到pacct,入侵者也许会删掉message,syslog等日志,但他并不知道实际上他所有的操作都被记录在案,管理员事后只要把commandlog这个文件拷贝到/var/adm下,改为pacct ,同时执行读取命令lastcomm,就一切尽在掌握啦。如lastcomm hack,可得到下面的输出结果:

sh S hack pts/7 0.05 secs Mon Jun 12 14:28 
sh F hack pts/7 0.00 secs Mon Jun 12 14:39
ls hack pts/7 0.01 secs Mon Jun 12 14:39
ls hack pts/7 0.02 secs Mon Jun 12 14:39
ls hack pts/7 0.01 secs Mon Jun 12 14:38
df hack pts/7 0.03 secs Mon Jun 12 14:38
ftp hack pts/7 0.02 secs Mon Jun 12 14:37
ls hack pts/7 0.01 secs Mon Jun 12 14:37
vi hack pts/7 0.02 secs Mon Jun 12 14:37
who hack pts/7 0.02 secs Mon Jun 12 14:36
我们从输出中可以了解用户hack所做的工作,是不是很爽?

其实网络安全,可以从一些小的点点滴滴的方面加以注意,使用得当,一样会起到较好的作用,管理员,从关注你的日志文件开始吧。