Linux系统中,日志系统主要分为三类:
● 系统接入日志: 多个程序会记录该日志,记录到/var/log/wtmp和/var/run/utmp文件中,telnet、ssh等程序会更新wtmp和utmp文件,系统管理员可以根据该日志跟踪到谁在何时登录到系统。
● 进程统计日志:Linux内核记录该日志,当一个进程终止时,进程统计文件(pacct或acct)中会进行记录。进程统计日志可以供系统管理员分析系统使用者对系统进行的配置,以及对文件进行的操作。
● 错误日志: Syslog日志系统已经被许多设备兼容,Linux的syslog可以记录系统事件,主要由syslogd程序执行,Linux系统下各种进程、用户程序和内核都可以通过Syslog文件记录重要信息,错误日志记录在/var/log/messages中。有许多Linux/Unix程序创建日志。像HTTP和FTP这样提供网络服务的服务器也保持详细的日志。
1 Linux下日志的使用
1.1 基本日志命令的使用
Linux系统中记录用户登入登出情况的文件是wtmp文件,记录当前登录用户情况的文件是utmp文件,它们是Linux系统安全的重要文件。这两个文件中所有的日志都记录了准确的时间。日志中记录的时间是非常重要的,因为很多攻击行为分析都是与时间有极大关系的。
Utmp以及wtmp文件都是二进制文件,不能通过tail,cat,vi或者重定向进行编辑。系统管理员需要通过命令获取这两个文件中包含的信息,其中utmp文件中包含的信息可以通过who、w、users和finger获取, wtmp文件中包含的信息可以通过last和ac获取。具体用法如下:
who命令从utmp文件中查询当前登录的用户情况。缺省情况下who的输出包括登录使用用户名、登录日期及登录使用IP。通过该命令,系统管理员可以发现当前系统存在哪些不法用户,找到非法使用用户后可以通过多种手段限制该用户或者该登录IP继续使用服务器。下面是who命令运行显示情况:
[root@ntbak ~]# who root tty1 2011-03-21 16:59 root pts/0 2011-06-14 19:06 (10.35.117.80) root pts/2 2011-03-13 14:21 (:1.0) |
在指明wtmp情况下,通过who命令可以查询到所有以前的记录。下面是命令who /var/log/wtmp的运行结果,显示了自从wtmp文件创建、删改以来的每一次登录。
[root@ntbak ~]# who /var/log/wtmp ntbackup pts/0 2011-06-03 14:18 (10.35.8.242) root pts/3 2011-06-03 15:24 (10.35.117.80) root pts/3 2011-06-03 15:48 (10.35.117.80) ntbackup pts/0 2011-06-03 17:15 (10.35.8.242) ntbackup pts/0 2011-06-07 10:15 (10.35.117.73) ntbackup pts/3 2011-06-07 10:26 (10.35.117.73) ntbackup pts/0 2011-06-07 10:45 (10.35.117.73) ntbackup pts/4 2011-06-07 12:43 (10.35.117.73) ntbackup pts/5 2011-06-07 13:41 (10.35.117.73) ntbackup pts/0 2011-06-07 15:41 (10.35.117.73) root pts/0 2011-06-07 21:12 (10.32.171.146) ntbackup pts/0 2011-06-08 10:39 (10.35.117.73) ntbackup pts/0 2011-06-09 19:43 (10.35.117.73) ntbackup pts/0 2011-06-10 08:24 (10.35.117.73) ntbackup pts/3 2011-06-10 08:34 (10.35.117.73) ntbackup pts/4 2011-06-10 10:25 (10.35.117.73) ntbackup pts/0 2011-06-10 12:34 (10.35.117.73) ntbackup pts/0 2011-06-13 08:34 (10.35.117.73) root pts/0 2011-06-13 15:42 (flashieldsdell.nt.js.cmcc) root pts/0 2011-06-14 14:44 (10.35.117.80) root pts/0 2011-06-14 19:06 (10.35.117.80) |
1.2 日志使用注意事项
在系统管理工作中,按时以及随机的检查系统日志是非常重要的工作,可以帮助系统管理人员及时发现可疑状况,需要检查的系统日志文件驻澳包括一般信息日志、网络连接日志、文件传输日志以及用户登录日志等。在检查这些日志时,要特别注意时间记载,分析日志产生的时间是否合理。例如:
■ 非正常时间(凌晨)的用户登录;
■ 关键日志记录损坏,尤其是记录用户登录登出信息的wtmp文件;
■ 非正常IP的用户登录;
■ 用户登录失败,甚至一再尝试登录并失败的日志记录;
■ 非正常的超级用户权限切换su指令;
■ 非正常的控制进程启动或重启记录。
由于Linux服务器是基于文件记录的系统日志,尽管重要的日志文件已经是二进制的,但是由于Linux是开源的操作系统,所以有些情况下黑客在入侵后经常会打扫战场。虽然在这种情况下,日志信息显得不是那么可靠,但是如果能够综合运用以上的系统命令,并结合其他系统相关命令,通过系统的、关联的分析还是能够找到蛛丝马迹。
users命令在一行打印出当前登录的用户信息,每个用户名代表对应一个登录会话。结合who命令以及进程统计日志可以分析黑客伪造这两个命令的情况。运行该命令将如下所示:
[root@ntbak ~]# users root root root [root@ntbak ~]# who root tty1 2011-03-21 16:59 root pts/0 2011-06-14 19:06 (10.35.117.80) root pts/2 2011-03-13 14:21 (:1.0) [root@ntbak ~]# |
last命令与who/var/log/wtmp命令输出结果相似。通过使用以及对比着两个输出,系统管理员可以对使用系统的用户进行审计和考核,及时发现问题,解决问题。运行该命令,如下所示:
[root@ntbak ~]# last root pts/0 10.35.117.80 Tue Jun 14 19:06 still logged in root pts/0 flashieldsdell.n Mon Jun 13 15:42 - 19:21 (03:38) ntbackup pts/0 10.35.117.73 Mon Jun 13 08:34 - 09:11 (00:37) …… ntbackup pts/0 10.35.8.242 Fri Jun 3 14:18 - 16:29 (02:11) |
如果使用上述命令显示的信息太多,比较难区分,可以通过grep命令,或者对last命令指明用户来显示其登录信息即可。例如: 只显示root的历史登录信息,则如下所示:
[root@ntbak ~]# last root root pts/0 10.35.117.80 Tue Jun 14 19:06 still logged in root pts/0 10.35.117.80 Tue Jun 14 14:44 - 16:58 (02:14) root pts/0 flashieldsdell.n Mon Jun 13 15:42 - 19:21 (03:38) root pts/0 10.32.171.146 Tue Jun 7 21:12 - 23:24 (02:11) root pts/3 10.35.117.80 Fri Jun 3 15:48 - 18:04 (02:16) root pts/3 10.35.117.80 Fri Jun 3 15:24 - 15:24 (00:00) |
ac命令根据系统的wtmp文件中的登入登出信息生成用户连接时间(单位小时)的报告,如下所示。
[root@ntbak ~]# ac -d Jun 3 total 6.68 Jun 7 total 18.89 Jun 8 total 9.92 Jun 9 total 11.00 Jun 10 total 9.28 Jun 13 total 4.26 Today total 2.84 [root@ntbak ~]# ac -p ntbackup 51.92 root 10.95 total 62.87 |
lastlog命令通过格式化输出上次登录日志/var/log/lastlog的内容,可以显示用户上次登录的时间。它可以显示登录用户名、登录使用方式(tty/pts)和上次登录时间。如果一个用户从未登录过,则显示 “**Neverlogged**”。。运行该命令如下所示:
[root@working]# lastlog
Username Port From Latest
root pts/1 10.0.2.129 二 5月 10 10:13:26 +0800 2005
opal pts/1 10.0.2.129 二 5月 10 10:13:26 +0800 2005 |
1.3 使用Syslog设备
Syslog已被许多日志函数采纳,被用在许多保护措施中,任何程序都可以通过syslog 记录事件。Syslog可以记录系统事件,可以写到一个文件或设备中,或给用户发送一个信息。它能记录本地事件或通过网络记录另一个主机上的事件。
Syslog设备核心包括一个守护进程(/etc/syslogd守护进程)和一个配置文件(/etc/syslog.conf配置文件)。通常情况下,多数syslog信息被写到/var/adm或/var/log目录下的信息文件中 (messages.*)。一个典型的syslog记录包括生成程序的名字和一个文本信息。它还包括一个设备和一个优先级范围。
系统管理员通过使用syslog.conf文件,可以对生成的日志的位置及其相关信息进行灵活配置,满足应用的需要。例如,如果想把所有邮件消息记录到一个文件中,则做如下操作:
#Log all the mail messages in one place
mail.* /var/log/maillog |
其他设备也有自己的日志。UUCP和news设备能产生许多外部消息。它把这些消息存到自己的日志(/var/log/spooler)中并把级别限为\"err\"或更高。例如:
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler |
当一个紧急消息到来时,可能想让所有的用户都得到。也可能想让自己的日志接收并保存。
#Everybody gets emergency messages, plus log them on anther machine
*.emerg *
*.emerg @linuxaid.com.cn |
用户可以在一行中指明所有的设备。下面的例子把info或更高级别的消息送到/var/log/messages,除了mail以外。级别\"none\"禁止一个设备:
#Log anything(except mail)of level info or higher
#Don\’t log private authentication messages!
*.info:mail.none;autHPriv.none /var/log/messages |
在有些情况下,可以把日志送到打印机,这样网络入侵者怎么修改日志都不能清除入侵的痕迹。因此,syslog设备是一个攻击者的显著目标,破坏了它将会使用户很难发现入侵以及入侵的痕迹,因此要特别注意保护其守护进程以及配置文件。