成功地管理任何系统的关键之一,是要知道系统中正在发生什么事。Linux 中提供了异常日志,并且日志的细节是可配置的。Linux 日志都以明文形式存储,所以用户不需要特殊的工具就可以搜索和阅读它们。还可以编写脚本,来扫描这些日志,并基于它们的内容去自动执行某些功能。 Linux 日志存储在 /var/log 目录中。这里有几个由系统维护的日志文件,但其他服务和程序也可能会把它们的日志放在这里。大多数日志只有root账户才可以读,不过修改文件的访问权限就可以让其他人可读。LCXLinux联盟 LCXLinux联盟 RedHat Linux常用的日志文件LCXLinux联盟 LCXLinux联盟 RedHat Linux常见的日志文件详述如下LCXLinux联盟 /var/log/boot.logLCXLinux联盟 该文件记录了系统在引导过程中发生的事件,就是Linux系统开机自检过程显示的信息。LCXLinux联盟 LCXLinux联盟 /var/log/cronLCXLinux联盟 该日志文件记录crontab守护进程crond所派生的子进程的动作,前面加上用户、登录时间和PID,以及派生出的进程的动作。CMD的一个动作是cron派生出一个调度进程的常见情况。REPLACE(替换)动作记录用户对它的cron文件的更新,该文件列出了要周期性执行的任务调度。 RELOAD动作在REPLACE动作后不久发生,这意味着cron注意到一个用户的cron文件被更新而cron需要把它重新装入内存。该文件可能会查到一些反常的情况。LCXLinux联盟 LCXLinux联盟 /var/log/maillogLCXLinux联盟 该日志文件记录了每一个发送到系统或从系统发出的电子邮件的活动。它可以用来查看用户使用哪个系统发送工具或把数据发送到哪个系统。下面是该日志文件的片段:LCXLinux联盟 LCXLinux联盟 QUOTE:LCXLinux联盟 Sep 4 17:23:52 UNIX sendmail[1950]: g849Npp01950: from=root, size=25,LCXLinux联盟 class=0, nrcpts=1,LCXLinux联盟 msgid=<200209040923.g849Npp01950@redhat.pfcc.com.cn>,LCXLinux联盟 relay=root@localhostLCXLinux联盟 Sep 4 17:23:55 UNIX sendmail[1950]: g849Npp01950: to=lzy@fcceec.net,LCXLinux联盟 ctladdr=root (0/0), delay=00:00:04, xdelay=00:00:03, mailer=esmtp, pri=30025,LCXLinux联盟 relay=fcceec.net. [10.152.8.2], dsn=2.0.0, stat=Sent (Message queued)LCXLinux联盟 /var/log/messagesLCXLinux联盟 LCXLinux联盟 该日志文件是许多进程日志文件的汇总,从该文件可以看出任何入侵企图或成功的入侵。如以下几行:LCXLinux联盟 LCXLinux联盟 QUOTE:LCXLinux联盟 LCXLinux联盟 Sep 3 08:30:17 UNIX login[1275]: FAILED LOGIN 2 FROM (null) FOR suying,LCXLinux联盟 Authentication failureLCXLinux联盟 Sep 4 17:40:28 UNIX -- suying[2017]: LOGIN ON pts/1 BY suying FROMLCXLinux联盟 fcceec.www.ec8.pfcc.com.cnLCXLinux联盟 Sep 4 17:40:39 UNIX su(pam_unix)[2048]: session opened for user root by suying(uid=999)LCXLinux联盟 LCXLinux联盟 LCXLinux联盟 该文件的格式是每一行包含日期、主机名、程序名,后面是包含PID或内核标识的方括号、一个冒号和一个空格,最后是消息。该文件有一个不足,就是被记录的入侵企图和成功的入侵事件,被淹没在大量的正常进程的记录中。但该文件可以由/etc/syslog文件进行定制。由 /etc/syslog.conf配置文件决定系统如何写入/var/messages。有关如何配置/etc/syslog.conf文件决定系统日志记录的行为,将在后面详细叙述。LCXLinux联盟 LCXLinux联盟 /var/log/syslogLCXLinux联盟 默认RedHat Linux不生成该日志文件,但可以配置/etc/syslog.conf让系统生成该日志文件。它和/etc/log/messages日志文件不同,它只记录警告信息,常常是系统出问题的信息,所以更应该关注该文件。要让系统生成该日志文件,在/etc/syslog.conf文件中加上: *.warning /var/log/syslog 该日志文件能记录当用户登录时login记录下的错误口令、Sendmail的问题、su命令执行失败等信息。下面是一条记录:LCXLinux联盟 LCXLinux联盟 QUOTE:LCXLinux联盟 LCXLinux联盟 Sep 6 16:47:52 UNIX login(pam_unix)[2384]: check pass; user unknownLCXLinux联盟 /var/log/secureLCXLinux联盟 该日志文件记录与安全相关的信息。该日志文件的部分内容如下:LCXLinux联盟 LCXLinux联盟 QUOTE:LCXLinux联盟 Sep 4 16:05:09 UNIX xinetd[711]: START: ftp pid=1815 from=127.0.0.1LCXLinux联盟 Sep 4 16:05:09 UNIX xinetd[1815]: USERID: ftp OTHER :rootLCXLinux联盟 Sep 4 16:07:24 UNIX xinetd[711]: EXIT: ftp pid=1815 duration=135(sec)LCXLinux联盟 Sep 4 16:10:05 UNIX xinetd[711]: START: ftp pid=1846 from=127.0.0.1LCXLinux联盟 Sep 4 16:10:05 UNIX xinetd[1846]: USERID: ftp OTHER :rootLCXLinux联盟 Sep 4 16:16:26 UNIX xinetd[711]: EXIT: ftp pid=1846 duration=381(sec)LCXLinux联盟 Sep 4 17:40:20 UNIX xinetd[711]: START: telnet pid=2016 from=10.152.8.2LCXLinux联盟 /var/log/lastlogLCXLinux联盟 LCXLinux联盟 LCXLinux联盟 LCXLinux联盟 该日志文件记录最近成功登录的事件和最后一次不成功的登录事件,由login生成。在每次用户登录时被查询,该文件是二进制文件,需要使用 lastlog命令查看,根据UID排序显示登录名、端口号和上次登录时间。如果某用户从来没有登录过,就显示为"**Never logged in**"。该命令只能以root权限执行。简单地输入lastlog命令后就会看到类似如下的信息:LCXLinux联盟 LCXLinux联盟 QUOTE:LCXLinux联盟 Username Port From LatestLCXLinux联盟 root tty2 Tue Sep 3 08:32:27 +0800 2002LCXLinux联盟 bin **Never logged in**LCXLinux联盟 daemon **Never logged in**LCXLinux联盟 adm **Never logged in**LCXLinux联盟 lp **Never logged in**LCXLinux联盟 sync **Never logged in**LCXLinux联盟 shutdown **Never logged in**LCXLinux联盟 halt **Never logged in**LCXLinux联盟 mail **Never logged in**LCXLinux联盟 news **Never logged in**LCXLinux联盟 uucp **Never logged in**LCXLinux联盟 operator **Never logged in**LCXLinux联盟 games **Never logged in**LCXLinux联盟 gopher **Never logged in**LCXLinux联盟 ftp ftp UNIX Tue Sep 3 14:49:04 +0800 2002LCXLinux联盟 nobody **Never logged in**LCXLinux联盟 nscd **Never logged in**LCXLinux联盟 mailnull **Never logged in**LCXLinux联盟 ident **Never logged in**LCXLinux联盟 rpc **Never logged in**LCXLinux联盟 rpcuser **Never logged in**LCXLinux联盟 xfs **Never logged in**LCXLinux联盟 gdm **Never logged in**LCXLinux联盟 postgres **Never logged in**LCXLinux联盟 apache **Never logged in**LCXLinux联盟 lzy tty2 Mon Jul 15 08:50:37 +0800 2002LCXLinux联盟 suying tty2 Tue Sep 3 08:31:17 +0800 2002LCXLinux联盟 LCXLinux联盟 LCXLinux联盟 系统账户诸如bin、daemon、adm、uucp、mail等决不应该登录,如果发现这些账户已经登录,就说明系统可能已经被入侵了。若发现记录的时间不是用户上次登录的时间,则说明该用户的账户已经泄密了。LCXLinux联盟 LCXLinux联盟 /var/log/wtmpLCXLinux联盟 LCXLinux联盟 该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件。因此随着系统正常运行时间的增加,该文件的大小也会越来越大,增加的速度取决于系统用户登录的次数。该日志文件可以用来查看用户的登录记录,last命令就通过访问这个文件获得这些信息,并以反序从后向前显示用户的登录记录,last也能根据用户、终端 tty或时间显示相应的记录。LCXLinux联盟 LCXLinux联盟 命令last有两个可选参数:LCXLinux联盟 LCXLinux联盟 last -u 用户名 显示用户上次登录的情况。LCXLinux联盟 LCXLinux联盟 last -t 天数 显示指定天数之前的用户登录情况。LCXLinux联盟 LCXLinux联盟 /var/run/utmpLCXLinux联盟 LCXLinux联盟 该日志文件记录有关当前登录的每个用户的信息。因此这个文件会随着用户登录和注销系统而不断变化,它只保留当时联机的用户记录,不会为用户保留永久的记录。系统中需要查询当前用户状态的程序,如 who、w、users、finger等就需要访问这个文件。该日志文件并不能包括所有精确的信息,因为某些突发错误会终止用户登录会话,而系统没有及时更新 utmp记录,因此该日志文件的记录不是百分之百值得信赖的。LCXLinux联盟 LCXLinux联盟 以上提及的3个文件(/var/log/wtmp、/var/run/utmp、/var/log/lastlog)是日志子系统的关键文件,都记录了用户登录的情况。这些文件的所有记录都包含了时间戳。这些文件是按二进制保存的,故不能用less、cat之类的命令直接查看这些文件,而是需要使用相关命令通过这些文件而查看。其中,utmp和wtmp文件的数据结构是一样的,而lastlog文件则使用另外的数据结构,关于它们的具体的数据结构可以使用man命令查询。LCXLinux联盟 LCXLinux联盟 每次有一个用户登录时,login程序在文件lastlog中查看用户的UID。如果存在,则把用户上次登录、注销时间和主机名写到标准输出中,然后 login程序在lastlog中记录新的登录时间,打开utmp文件并插入用户的utmp记录。该记录一直用到用户登录退出时删除。utmp文件被各种命令使用,包括who、w、users和finger。LCXLinux联盟 LCXLinux联盟 下一步,login程序打开文件wtmp附加用户的utmp记录。当用户登录退出时,具有更新时间戳的同一utmp记录附加到文件中。wtmp文件被程序last使用。LCXLinux联盟 LCXLinux联盟 /var/log/xferlogLCXLinux联盟 LCXLinux联盟 该日志文件记录FTP会话,可以显示出用户向FTP服务器或从服务器拷贝了什么文件。该文件会显示用户拷贝到服务器上的用来入侵服务器的恶意程序,以及该用户拷贝了哪些文件供他使用。LCXLinux联盟 LCXLinux联盟 该文件的格式为:第一个域是日期和时间,第二个域是下载文件所花费的秒数、远程系统名称、文件大小、本地路径名、传输类型(a:ASCII,b:二进制)、与压缩相关的标志或tar,或"_"(如果没有压缩的话)、传输方向(相对于服务器而言:i代表进,o代表出)、访问模式(a:匿名,g:输入口令,r:真实用户)、用户名、服务名(通常是ftp)、认证方法(l:RFC931,或0),认证用户的ID或"*"。下面是该文件的一条记录:LCXLinux联盟 LCXLinux联盟 QUOTE:LCXLinux联盟 LCXLinux联盟 Wed Sep 4 08:14:03 2002 1 UNIX 275531LCXLinux联盟 /var/ftp/lib/libnss_files-2.2.2.so b _ o a -root@UNIX ftp 0 * cLCXLinux联盟 /var/log/kernlogLCXLinux联盟 LCXLinux联盟 LCXLinux联盟 LCXLinux联盟 RedHat Linux默认没有记录该日志文件。要启用该日志文件,必须在/etc/syslog.conf文件中添加一行:kern.* /var/log/kernlog 。这样就启用了向/var/log/kernlog文件中记录所有内核消息的功能。该文件记录了系统启动时加载设备或使用设备的情况。一般是正常的操作,但如果记录了没有授权的用户进行的这些操作,就要注意,因为有可能这就是恶意用户的行为。下面是该文件的部分内容:LCXLinux联盟 LCXLinux联盟 QUOTE:LCXLinux联盟 Sep 5 09:38:42 UNIX kernel: NET4: Linux TCP/IP 1.0 for NET4.0LCXLinux联盟 Sep 5 09:38:42 UNIX kernel: IP Protocols: ICMP, UDP, TCP, IGMPLCXLinux联盟 Sep 5 09:38:42 UNIX kernel: IP: routing cache hash table of 512 buckets, 4KbytesLCXLinux联盟 Sep 5 09:38:43 UNIX kernel: TCP: Hash tables configured (established 4096 bind 4096)LCXLinux联盟 Sep 5 09:38:43 UNIX kernel: Linux IP multicast router 0.06 plus PIM-SMLCXLinux联盟 Sep 5 09:38:43 UNIX kernel: NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.LCXLinux联盟 Sep 5 09:38:44 UNIX kernel: EXT2-fs warning: checktime reached, running e2fsck is recommendedLCXLinux联盟 Sep 5 09:38:44 UNIX kernel: VFS: Mounted root (ext2 filesystem).LCXLinux联盟 Sep 5 09:38:44 UNIX kernel: SCSI subsystem driver Revision: 1.00LCXLinux联盟 /var/log/Xfree86.x.logLCXLinux联盟 LCXLinux联盟 LCXLinux联盟 LCXLinux联盟 该日志文件记录了X-Window启动的情况。另外,除了/var/log/外,恶意用户也可能在别的地方留下痕迹,应该注意以下几个地方:root 和其他账户的shell历史文件;用户的各种邮箱,如.sent、mbox,以及存放在/var/spool/mail/ 和 /var/spool/mqueue中的邮箱;临时文件/tmp、/usr/tmp、/var/tmp;隐藏的目录;其他恶意用户创建的文件,通常是以 "."开头的具有隐藏属性的文件等。LCXLinux联盟 LCXLinux联盟 具体命令LCXLinux联盟 LCXLinux联盟 wtmp和utmp文件都是二进制文件,它们不能被诸如tail之类的命令剪贴或合并(使用cat命令)。用户需要使用who、w、users、last和ac等命令来使用这两个文件包含的信息。LCXLinux联盟 LCXLinux联盟 who命令LCXLinux联盟 LCXLinux联盟 who命令查询utmp文件并报告当前登录的每个用户。who的默认输出包括用户名、终端类型、登录日期及远程主机。例如,键入who命令,然后按回车键,将显示如下内容:LCXLinux联盟 LCXLinux联盟 QUOTE:LCXLinux联盟 chyang pts/0 Aug 18 15:06LCXLinux联盟 ynguo pts/2 Aug 18 15:32LCXLinux联盟 ynguo pts/3 Aug 18 13:55LCXLinux联盟 lewis pts/4 Aug 18 13:35LCXLinux联盟 ynguo pts/7 Aug 18 14:12LCXLinux联盟 ylou pts/8 Aug 18 14:15LCXLinux联盟 LCXLinux联盟 如果指明了wtmp文件名,则who命令查询所有以前的记录。命令who /var/log/wtmp将报告自从wtmp文件创建或删改以来的每一次登录。LCXLinux联盟 LCXLinux联盟 w命令LCXLinux联盟 LCXLinux联盟 w命令查询utmp文件并显示当前系统中每个用户和它所运行的进程信息。例如,键入w命令,然后按回车键,将显示如下内容:LCXLinux联盟 LCXLinux联盟 QUOTE:LCXLinux联盟 LCXLinux联盟 3:36pm up 1 day, 22:34, 6 users, load average: 0.23, 0.29, 0.27LCXLinux联盟 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATLCXLinux联盟 chyang pts/0 202.38.68.242 3:06pm 2:04 0.08s 0.04s -bashLCXLinux联盟 ynguo pts/2 202.38.79.47 3:32pm 0.00s 0.14s 0.05 wLCXLinux联盟 lewis pts/3 202.38.64.233 1:55pm 30:39 0.27s 0.22s -bashLCXLinux联盟 lewis pts/4 202.38.64.233 1:35pm 6.00s 4.03s 0.01s sh /home/users/LCXLinux联盟 ynguo pts/7 simba.nic.ustc.e 2:12pm 0.00s 0.47s 0.24s telnet mailLCXLinux联盟 ylou pts/8 202.38.64.235 2:15pm 1:09m 0.10s 0.04s -bashLCXLinux联盟 users命令LCXLinux联盟 LCXLinux联盟 users命令用单独的一行打印出当前登录的用户,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示相同的次数。例如,键入users命令,然后按回车键,将显示如下内容:LCXLinux联盟 LCXLinux联盟 QUOTE:LCXLinux联盟 chyang lewis lewis ylou ynguo ynguoLCXLinux联盟 last命令LCXLinux联盟 LCXLinux联盟 last命令往回搜索wtmp来显示自从文件第一次创建以来登录过的用户。例如:LCXLinux联盟 LCXLinux联盟 QUOTE:LCXLinux联盟 LCXLinux联盟 chyang pts/9 202.38.68.242 Tue Aug 1 08:34 - 11:23 (02:49)LCXLinux联盟 cfan pts/6 202.38.64.224 Tue Aug 1 08:33 - 08:48 (00:14)LCXLinux联盟 chyang pts/4 202.38.68.242 Tue Aug 1 08:32 - 12:13 (03:40)LCXLinux联盟 lewis pts/3 202.38.64.233 Tue Aug 1 08:06 - 11:09 (03:03)LCXLinux联盟 lewis pts/2 202.38.64.233 Tue Aug 1 07:56 - 11:09 (03:12)LCXLinux联盟 LCXLinux联盟 如果指明了用户,那么last只报告该用户的近期活动,例如,键入last ynguo命令,然后按回车键,将显示如下内容:LCXLinux联盟 LCXLinux联盟 QUOTE:LCXLinux联盟 LCXLinux联盟 ynguo pts/4 simba.nic.ustc.e Fri Aug 4 16:50 - 08:20 (15:30)LCXLinux联盟 ynguo pts/4 simba.nic.ustc.e Thu Aug 3 23:55 - 04:40 (04:44)LCXLinux联盟 ynguo pts/11 simba.nic.ustc.e Thu Aug 3 20:45 - 22:02 (01:16)LCXLinux联盟 ynguo pts/0 simba.nic.ustc.e Thu Aug 3 03:17 - 05:42 (02:25)LCXLinux联盟 ynguo pts/0 simba.nic.ustc.e Wed Aug 2 01:04 - 03:16 1+02:12)LCXLinux联盟 ynguo pts/0 simba.nic.ustc.e Wed Aug 2 00:43 - 00:54 (00:11)LCXLinux联盟 ynguo pts/9 simba.nic.ustc.e Thu Aug 1 20:30 - 21:26 (00:55)LCXLinux联盟 LCXLinux联盟 ac命令LCXLinux联盟 LCXLinux联盟 ac命令根据当前的/var/log/wtmp文件中的登录进入和退出来报告用户连接的时间(小时),如果不使用标志,则报告总的时间。例如,键入ac命令,然后按回车键,将显示如下内容:LCXLinux联盟 LCXLinux联盟 QUOTE:LCXLinux联盟 total 5177.47LCXLinux联盟 键入ac -d命令,然后按回车键,将显示每天的总的连接时间:LCXLinux联盟 LCXLinux联盟 QUOTE:LCXLinux联盟 LCXLinux联盟 Aug 12 total 261.87LCXLinux联盟 Aug 13 total 351.39LCXLinux联盟 Aug 14 total 396.09LCXLinux联盟 Aug 15 total 462.63LCXLinux联盟 Aug 16 total 270.45LCXLinux联盟 Aug 17 total 104.29LCXLinux联盟 Today total 179.02LCXLinux联盟 LCXLinux联盟 键入ac -p命令,然后按回车键,将显示每个用户的总的连接时间:LCXLinux联盟 LCXLinux联盟 QUOTE:LCXLinux联盟 LCXLinux联盟 ynguo 193.23LCXLinux联盟 yucao 3.35LCXLinux联盟 rong 133.40LCXLinux联盟 hdai 10.52LCXLinux联盟 zjzhu 52.87LCXLinux联盟 zqzhou 13.14LCXLinux联盟 liangliu 24.34LCXLinux联盟 total 5178.24LCXLinux联盟 LCXLinux联盟 lastlog命令LCXLinux联盟 LCXLinux联盟 lastlog文件在每次有用户登录时被查询。可以使用lastlog命令检查某特定用户上次登录的时间,并格式化输出上次登录日志 /var/log/lastlog的内容。它根据UID排序显示登录名、端口号(tty)和上次登录时间。如果一个用户从未登录过,lastlog显示 **Never logged**。注意需要以root身份运行该命令,例如:LCXLinux联盟 LCXLinux联盟 QUOTE:LCXLinux联盟 LCXLinux联盟 rong 5 202.38.64.187 Fri Aug 18 15:57:01 +0800 2000LCXLinux联盟 dbb **Never logged in**LCXLinux联盟 xinchen **Never logged in**LCXLinux联盟 pb9511 **Never logged in**LCXLinux联盟 xchen 0 202.38.64.190 Sun Aug 13 10:01:22 +0800 2000LCXLinux联盟 LCXLinux联盟 另外,可加一些参数,例如,"last -u 102"命令将报告UID为102的用户;"last -t 7"命令表示限制为上一周的报告。LCXLinux联盟 LCXLinux联盟 进程统计LCXLinux联盟 LCXLinux联盟 UNIX可以跟踪每个用户运行的每条命令,如果想知道昨晚弄乱了哪些重要的文件,进程统计子系统可以告诉你。它还对跟踪一个侵入者有帮助。与连接时间日志不同,进程统计子系统默认不激活,它必须启动。在Linux系统中启动进程统计使用accton命令,必须用root身份来运行。accton命令的形式为:accton file,file必须事先存在。先使用touch命令创建pacct文件:touch /var/log/pacct,然后运行accton:accton /var/log/pacct。一旦accton被激活,就可以使用lastcomm命令监测系统中任何时候执行的命令。若要关闭统计,可以使用不带任何参数的accton命令。LCXLinux联盟 LCXLinux联盟 lastcomm命令报告以前执行的文件。不带参数时,lastcomm命令显示当前统计文件生命周期内记录的所有命令的有关信息。包括命令名、用户、tty、命令花费的CPU时间和一个时间戳。如果系统有许多用户,输入则可能很长。看下面的例子:LCXLinux联盟 LCXLinux联盟 QUOTE:LCXLinux联盟 LCXLinux联盟 crond F root ?? 0.00 secs Sun Aug 20 00:16LCXLinux联盟 promisc_check.s S root ?? 0.04 secs Sun Aug 20 00:16LCXLinux联盟 promisc_check root ?? 0.01 secs Sun Aug 20 00:16LCXLinux联盟 grep root ?? 0.02 secs Sun Aug 20 00:16LCXLinux联盟 tail root ?? 0.01 secs Sun Aug 20 00:16LCXLinux联盟 sh root ?? 0.01 secs Sun Aug 20 00:15LCXLinux联盟 ping S root ?? 0.01 secs Sun Aug 20 00:15LCXLinux联盟 ping6.pl F root ?? 0.01 secs Sun Aug 20 00:15LCXLinux联盟 sh root ?? 0.01 secs Sun Aug 20 00:15LCXLinux联盟 ping S root ?? 0.02 secs Sun Aug 20 00:15LCXLinux联盟 ping6.pl F root ?? 0.02 secs Sun Aug 20 00:15LCXLinux联盟 sh root ?? 0.02 secs Sun Aug 20 00:15LCXLinux联盟 ping S root ?? 0.00 secs Sun Aug 20 00:15LCXLinux联盟 ping6.pl F root ?? 0.01 secs Sun Aug 20 00:15LCXLinux联盟 sh root ?? 0.01 secs Sun Aug 20 00:15LCXLinux联盟 ping S root ?? 0.01 secs Sun Aug 20 00:15LCXLinux联盟 sh root ?? 0.02 secs Sun Aug 20 00:15LCXLinux联盟 ping S root ?? 1.34 secs Sun Aug 20 00:15LCXLinux联盟 locate root ttyp0 1.34 secs Sun Aug 20 00:15LCXLinux联盟 accton S root ttyp0 0.00 secs Sun Aug 20 00:15LCXLinux联盟 LCXLinux联盟 进程统计的一个问题是pacct文件可能增长得十分迅速。这时需要交互式地或经过cron机制运行sa命令来保证日志数据在系统控制内。sa命令报告、清理并维护进程统计文件。它能把/var/log/pacct中的信息压缩到摘要文件/var/log/savacct和 /var/log/usracct中。这些摘要包含按命令名和用户名分类的系统统计数据。在默认情况下sa先读它们,然后读pacct文件,使报告能包含所有的可用信息。sa的输出有下面一些标记项。LCXLinux联盟 LCXLinux联盟 LCXLinux联盟 avio:每次执行的平均I/O操作次数。LCXLinux联盟 LCXLinux联盟 cp:用户和系统时间总和,以分钟计。LCXLinux联盟 LCXLinux联盟 cpu:和cp一样。LCXLinux联盟 LCXLinux联盟 k:内核使用的平均CPU时间,以1k为单位。LCXLinux联盟 LCXLinux联盟 k*sec:CPU存储完整性,以1k-core秒为单位。LCXLinux联盟 LCXLinux联盟 re:实时时间,以分钟计。LCXLinux联盟 LCXLinux联盟 s:系统时间,以分钟计。LCXLinux联盟 LCXLinux联盟 tio:I/O操作的总数。LCXLinux联盟 LCXLinux联盟 u:用户时间,以分钟计。LCXLinux联盟 LCXLinux联盟 例如:LCXLinux联盟 LCXLinux联盟 QUOTE:LCXLinux联盟 LCXLinux联盟 842 173.26re 4.30cp 0avio 358kLCXLinux联盟 2 10.98re 4.06cp 0avio 299k findLCXLinux联盟 9 24.80re 0.05cp 0avio 291k ***otherLCXLinux联盟 105 30.44re 0.03cp 0avio 302k pingLCXLinux联盟 104 30.55re 0.03cp 0avio 394k shLCXLinux联盟 162 0.11re 0.03cp 0avio 413k security.sh*LCXLinux联盟 154 0.03re 0.02cp 0avio 273k lsLCXLinux联盟 56 31.61re 0.02cp 0avio 823k ping6.pl*LCXLinux联盟 2 3.23re 0.02cp 0avio 822k ping6.plLCXLinux联盟 35 0.02re 0.01cp 0avio 257k md5sumLCXLinux联盟 97 0.02re 0.01cp 0avio 263k initlogLCXLinux联盟 12 0.19re 0.01cp 0avio 399k promisc_check.sLCXLinux联盟 15 0.09re 0.00cp 0avio 288k grepLCXLinux联盟 11 0.08re 0.00cp 0avio 332k awkLCXLinux联盟 LCXLinux联盟 用户还可以根据用户而不是命令来提供一个摘要报告。例如,键入命令"sa -m",将显示如下内容:LCXLinux联盟 LCXLinux联盟 QUOTE:LCXLinux联盟 LCXLinux联盟 885 173.28re 4.31cp 0avkLCXLinux联盟 root 879 173.23re 4.31cp 0avkLCXLinux联盟 alias 3 0.05re 0.00cp 0avkLCXLinux联盟 qmailp 3 0.01re 0.00cp 0avkLCXLinux联盟 LCXLinux联盟 syslog设备LCXLinux联盟 LCXLinux联盟 syslog已被许多日志函数采纳,它用在许多保护措施中。任何程序都可以通过syslog 记录事件。syslog可以记录系统事件,可以写到一个文件或设备中,或给用户发送一个信息。它能记录本地事件或通过网络记录另一个主机上的事件。LCXLinux联盟 LCXLinux联盟 syslog设备依据两个重要的文件:/etc/syslogd(守护进程)和/etc/syslog.conf配置文件。习惯上,多数syslog 信息被写到/var/adm或/var/log目录下的信息文件中(messages.*)。一个典型的syslog记录包括生成程序的名字和一个文本信息。它还包括一个设备和一个优先级范围(但不在日志中出现)。LCXLinux联盟 LCXLinux联盟 每个syslog消息被赋予下面的主要设备之一:LCXLinux联盟 LCXLinux联盟 QUOTE:LCXLinux联盟 LCXLinux联盟 LOG_AUTH:认证系统login、su、getty等。LCXLinux联盟 LOG_AUTHPRIV:同LOG_AUTH,但只登录到所选择的单个用户可读的文件中。LCXLinux联盟 LOG_CRON:cron守护进程。LCXLinux联盟 LOG_DAEMON:其他系统守护进程,如routed。LCXLinux联盟 LOG_FTP:文件传输协议ftpd、tftpd。LCXLinux联盟 LOG_KERN:内核产生的消息。LCXLinux联盟 LOG_LPR:系统打印机缓冲池lpr、lpd。LCXLinux联盟 LOG_MAIL:电子邮件系统。LCXLinux联盟 LOG_NEWS:网络新闻系统。LCXLinux联盟 LOG_SYSLOG:由syslogd(8)产生的内部消息。LCXLinux联盟 LOG_USER:随机用户进程产生的消息。LCXLinux联盟 LOG_UUCP:UUCP子系统。LCXLinux联盟 LOG_LOCAL0~LOG_LOCAL7:为本地使用保留。LCXLinux联盟 syslog为每个事件赋予几个不同的优先级:LCXLinux联盟 LOG_EMERG:紧急情况。LCXLinux联盟 LOG_ALERT:应该被立即改正的问题,如系统数据库被破坏。LCXLinux联盟 LOG_CRIT:重要情况,如硬盘错误。LCXLinux联盟 LOG_ERR:错误。LCXLinux联盟 LOG_WARNING:警告信息。LCXLinux联盟 LOG_NOTICE:不是错误情况,但是可能需要处理。LCXLinux联盟 LOG_INFO:情报信息。LCXLinux联盟 LOG_DEBUG:包含情报的信息,通常只在调试一个程序时使用。LCXLinux联盟 LCXLinux联盟 syslog.conf文件指明syslogd程序记录日志的行为,该程序在启动时查询配置文件。该文件由不同程序或消息分类的单个条目组成,每个占一行。对每类消息提供一个选择域和一个动作域。这些域由tab符隔开:选择域指明消息的类型和优先级;动作域指明syslogd接收到一个与选择标准相匹配的消息时所执行的动作。每个选项是由设备和优先级组成的。当指明一个优先级时,syslogd将记录一个拥有相同或更高优先级的消息。所以如果指明 "crit",那所有标为crit、alert和emerg的消息将被记录。每行的行动域指明当选择域选择了一个给定消息后应该把它发送到哪儿。例如,如果想把所有邮件消息记录到一个文件中,如下所示:LCXLinux联盟 LCXLinux联盟 QUOTE:LCXLinux联盟 LCXLinux联盟 #Log all the mail messages in one placeLCXLinux联盟 LCXLinux联盟 LCXLinux联盟 mail.* /var/log/maillogLCXLinux联盟 LCXLinux联盟 LCXLinux联盟 LCXLinux联盟 其他设备也有自己的日志。UUCP和news设备能产生许多外部消息。它把这些消息存到自己的日志(/var/log/spooler)中并把级别限为"err"或更高。例如:LCXLinux联盟 LCXLinux联盟 QUOTE:LCXLinux联盟 LCXLinux联盟 # Save mail and news errors of level err and higher in aspecial file.LCXLinux联盟 uucp,news.crit /var/log/spoolerLCXLinux联盟 LCXLinux联盟 当一个紧急消息到来时,可能想让所有的用户都得到,也可能想让自己的日志接收并保存:LCXLinux联盟 LCXLinux联盟 QUOTE:LCXLinux联盟 LCXLinux联盟 #Everybody gets emergency messages, plus log them on anther machineLCXLinux联盟 *.emerg *LCXLinux联盟 *.emerg @linuxaid.com.cn LCXLinux联盟 alert消息应该写到root和tiger的个人账号中:LCXLinux联盟 LCXLinux联盟 QUOTE:LCXLinux联盟 LCXLinux联盟 #Root and Tiger get alert and higher messagesLCXLinux联盟 *.alert root,tigerLCXLinux联盟 有时syslogd将产生大量的消息。例如,内核("kernel"设备)可能很冗长。用户可能想把内核消息记录到/dev/console中。下面的例子表明内核日志记录被注释掉了:LCXLinux联盟 LCXLinux联盟 QUOTE:LCXLinux联盟 LCXLinux联盟 #Log all kernel messages to the consoleLCXLinux联盟 #Logging much else clutters up the screenLCXLinux联盟 #kern.* /dev/consoleLCXLinux联盟 用户可以在一行中指明所有的设备。下面的例子把info或更高级别的消息送到/var/log/messages,除了mail以外。级别"none"禁止一个设备:LCXLinux联盟 LCXLinux联盟 QUOTE:LCXLinux联盟 LCXLinux联盟 #Log anything(except mail)of level info or higherLCXLinux联盟 #Don't log private authentication messages!LCXLinux联盟 *.info:mail.none;authpriv.none /var/log/messagesLCXLinux联盟 LCXLinux联盟 在有些情况下,可以把日志送到打印机,这样网络入侵者怎么修改日志就都没有用了。通常要广泛记录日志。syslog设备是一个攻击者的显著目标。一个为其他主机维护日志的系统对于防范服务器攻击特别脆弱,因此要特别注意。LCXLinux联盟 LCXLinux联盟 有个小命令logger为syslog(3)系统日志文件提供一个shell命令接口,使用户能创建日志文件中的条目。LCXLinux联盟 LCXLinux联盟 LCXLinux联盟 用法:logger LCXLinux联盟 LCXLinux联盟 例如:logger This is a test!LCXLinux联盟 LCXLinux联盟 它将产生一个如下的syslog记录:Aug 19 22:22:34 tiger: This is a test!LCXLinux联盟 LCXLinux联盟 注意,不要完全相信日志,因为攻击者很容易修改它的。LCXLinux联盟 LCXLinux联盟 程序日志与其他LCXLinux联盟 LCXLinux联盟 许多程序通过维护日志来反映系统的安全状态。su命令允许用户获得另一个用户的权限,所以它的安全很重要,它的日志文件为sulog。同样的还有 sudolog。另外,像Apache有两个日志:access_log和error_log。还有一些常用到的其他日志工具,我们就不一一阐述了,有兴趣的读者可以参考下边网址的内容。LCXLinux联盟 LCXLinux联盟 QUOTE:LCXLinux联盟 Chklastlog:LCXLinux联盟 LCXLinux联盟 ftp://coast.cs.purdue.edu/pub/tools/unix/chklastlog/LCXLinux联盟 LCXLinux联盟 chkwtmp:LCXLinux联盟 LCXLinux联盟 ftp://coast.cs.purdue.edu/pub/tools/unix/chkwtmp/LCXLinux联盟 LCXLinux联盟 dump_lastlog:LCXLinux联盟 LCXLinux联盟 ftp://coast.cs.purdue.edu/pub/tools/unix/dump_lastlog.ZLCXLinux联盟 LCXLinux联盟 spar:LCXLinux联盟 LCXLinux联盟 ftp://coast.cs.purdue.edu/pub/tools/unix/TAMU/LCXLinux联盟 LCXLinux联盟 Swatch:LCXLinux联盟 LCXLinux联盟 http://www.lomar.org/komar/alek/pres/swatch/cover.htmlLCXLinux联盟 LCXLinux联盟 Zap:LCXLinux联盟 LCXLinux联盟 ftp://caost.cs.purdue.edu/pub/tools/unix/zap.tar.gzLCXLinux联盟 LCXLinux联盟 日志分类方法:LCXLinux联盟 LCXLinux联盟 http://csrc.nist.gov/nissc/1998/proceedings/paperD1.pdfLCXLinux联盟
|