linux日志溯源,Linux用户历史行为的追溯方法

1./var/account/pacct文件(非文本文件,每天1个保留7天轮替时间为每日4:02)

用于查找由于用户操作而引发的系统或应用的故障原因。

linux默认不启动该进程统计程序。但只要系统负荷和系统硬盘空间允许,可以使用该日志文件。

启动进程统计程序的命令:accton /var/account/pacct

停止进程统计程序的命令:  accton

pacct日志文件记录了历史上曾经发生过的所有用户(含系统和应用)的所有操作(程序名【注:内部命令不记录,bash(linux默认的shell)常用的内部命令有:cd,kill等,全部内部命令可由命令man bash得到】,用户名,登录终端,命令运行时间段,日期和时间),结合last命令输出的终端所在的IP地址,我们就可知道用户在什么时间,从哪里登录,执行了什么命令,命令运行的时间长度。

遗憾的是没有操作命令的参数,因为该程序的只是为进程统计而设。

检查当前的命令(无参数)操作历史:

#lastcomm –f /var/account/pacct (如文件很大可使用登录工具的log来保存)

ftp_get.php       S     sms      __         0.01 secs Fri May 21 15:04

smppxmzd           F    root     __         0.00 secs Fri May 21 15:04

crond             SF    root     __         0.00 secs Fri May 21 15:04

sh                S     sms      __         0.00 secs Fri May 21 15:04

ping              S     sms      __         0.00 secs Fri May 21 15:04

crond             SF    root     __         0.00 secs Fri May 21 15:04

sh                S     sms      __         0.00 secs Fri May 21 15:04

ping              S     sms      __         0.00 secs Fri May 21 15:04

consoletype             root     __         0.00 secs Fri May 21 15:04

cat                     root     __         0.00 secs Fri May 21 15:04

crond             SF    root     __         0.00 secs Fri May 21 15:04

sh                S     sms      __         0.00 secs Fri May 21 15:04

ping              S     sms      __         0.00 secs Fri May 21 15:04

sgipd              F    root     __         0.00 secs Fri May 21 15:04

consoletype             root     __         0.00 secs Fri May 21 15:04

mv                    root      pts/4      0.00 secs Fri May 21 15:03

ls                S     root     pts/4      0.00 secs Fri May 21 15:03

[root@sms log]#

案例分析:

蓝色部分就是在日期时间May 21 15:03,用户root从终端 pts/4 登录上来,执行了命令“ls”和“mv”。

注意:该“mv”操作如果移走了系统或应用正在使用的目录或文件,则系统就会告警。而维护人员可根据此文件搜索到“mv”的操作者(lastcomm –f /var/account/pacct | grep mv),从而得知移走的内容,快速进行恢复。

检查非当前的命令(无参数)操作历史:

(1) 解压某日的pacct.N.gz

gzip -d /var/account/pacct.N.gz

(2) 查看某日的pacct.N

lastcomm –f /var/account/pacct.N

2./var/log/wtmp(非文本文件,每月1个,保留2月,轮替时间为每月1日)

用于查找用户登录位置和时间及时间段的历史。

该文件记录了所有曾经登录过的用户名,登录源及登录时间段。系统默认保留2个月的记录:当月为wtmp,上月为wtmp.1。我们可使用该文件再配合其他命令来查询人为操作引发的系统故障。该日志文件最大的好处是有登录源信息(IP地址)。

(1) 查询当月用户的登录情况:

[root@ftpnode2 log]# last

root   pts/3        172.16.80.140    Fri May 21 10:34   still logged in

ticketer pts/1        192.168.71.145   Fri May 21 10:25   still logged in

ticketer pts/1        172.16.80.28     Fri May 21 09:00 - 09:09  (00:09)

ticketer pts/3        192.168.71.145   Fri May  7 10:05 - 14:00 (3+03:55)

ticketer pts/4        192.168.71.145   Fri May  7 09:34 - 11:46  (02:11)

ticketer pts/3        172.16.80.28     Fri May  7 09:10 - 09:47  (00:37)

wtmp begins Wed May  5 09:34:25 2010

[root@ftpnode2 log]#

注:对于“still logged in”的用户,可使用命令w来查询该用户当前正在执行的命令;对于已离线的用户,只能根据命令history来查询该用户曾经执行过的命令,但无时间戳。

(2) 查询上月用户登录情况:

[root@ftpnode2 log]#last –f /var/log/wtmp.1

ticketer pts/7        192.168.71.145   Fri Apr 30 10:30 - 13:23  (02:52)

ticketer pts/6        192.168.71.145   Fri Apr 30 10:27 - 10:49  (00:21)

ticketer pts/5        192.168.71.145   Fri Apr 30 10:04 - 12:26  (02:22)

ticketer pts/1        172.16.80.28     Thu Apr  8 09:24 - 11:36  (02:11)

ticketer pts/1        172.16.80.28     Wed Apr  7 08:57 - 09:01  (00:04)

ticketer pts/1        172.16.80.28     Tue Apr  6 13:14 - 15:26  (02:11)

ticketer pts/1        192.168.71.145   Tue Apr  6 08:39 - 11:01  (02:22)

ticketer pts/1        172.16.80.28     Fri Apr  2 08:53 - 11:05  (02:11)

ticketer pts/1        172.16.80.28     Thu Apr  1 10:25 - 10:30  (00:04)

wtmp.1 begins Thu Apr  1 10:25:34 2010

[root@ftpnode2 log]#

3./home/user_name/.bash_history(文本文件;root用户特殊:/root/.bash_history)

用于查询用户曾经执行过的完整命令,但没有时间点。

这条命令最大的好处是可以看到带有参数的完整命令,这可以弥补/var/account/pacct文件的缺憾。

切换到该用户,然后使用history命令就可列出用户曾经的操作:

su root

[root@nbu_jc_media log]#history

985  telnet 172.16.80.21

986  ssh 172.16.80.78

987  more /var/log/spooler

988  df -k

989  telnet 172.16.80.21

990  ssh 172.16.80.78

991  more /var/log/spooler

992  df -k

993  telnet 172.16.80.21

994  ssh 172.16.80.78

995  more /var/log/spooler

996  df -k

997  telnet 172.16.80.21

998  ssh 172.16.80.78

999  w

1000  history

[root@nbu_jc_media ~]#

注:最大序号的记录为最新的记录,linux默认保存1000条记录(/etc/profile)。

4./var/run/utmp(非文本文件,)

用于查询在线用户正在执行的命令(完整命令)。

该文件只记录当前在线用户的当前操作命令。

[root@nbu_jc_media log]# w

16:05:30 up 40 days,  3:17,  4 users,  load average: 0.07, 0.21, 0.11

USER     TTY      FROM      LOGIN@   IDLE   JCPU   PCPU    WHAT

root    pts/3    192.168.71.145   14:35      0.00s    0.02s   0.00s     cd /etc

root     :0       -                28Apr10 ?xdm?   6:57m  0.25s /usr/bin/gnome-session

root     pts/1    :0.0             10May10 10days  0.03s  0.01s ssh 172.16.80.26

root     pts/2    :0.0             10May10 10days  0.03s  0.03s bash

[root@nbu_jc_media log]#

案例分析:

蓝色行显示:当前用户root,在时间14:35从192.168.71.145登录进来,当前执行的操作是cd /etc命令。

5./var/log/lastlog(非文本文件)

用于查询用户最后一次的登录记录。

该文件只记录用户最后一次的登录情况。

[root@ftpnode2 log]# lastlog

Username         Port     From             Latest

root             pts/3    172.16.80.140    Fri May 21 10:34:38 +0800 2010

bin                                        **Never logged in**

daemon                                     **Never logged in**

adm                                        **Never logged in**

lp                                         **Never logged in**

sync                                       **Never logged in**

shutdown                                   **Never logged in**

halt                                       **Never logged in**

mail                                       **Never logged in**

news                                       **Never logged in**

uucp                                       **Never logged in**

ticketer         pts/1    192.168.71.145   Fri May 21 10:25:10 +0800 2010

[root@ftpnode2 log]#

综合使用上述5种方法中的几种,我们就能达到查询用户详细的操作历史记录(不超过7天)和登录记录(不超过2个月)的基本要求。而这些记录将有助于我们找到系统和应用故障的发生源。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值