linux系统⽇志以及分析
Linux系统拥有⾮常灵活和强⼤的⽇志功能,可以保存⼏乎所有的操作记录,并可以从中检索出我们需要的信息。
⼤部分Linux发⾏版默认的⽇志守护进程为 syslog,位于 /etc/syslog 或 /etc/syslogd 或/etc/rsyslog.d,默认配置⽂件为 /f 或f,任何希望⽣成⽇志的程序都可以向 syslog 发送信息。
Linux系统内核和许多程序会产⽣各种错误信息、警告信息和其他的提⽰信息,这些信息对管理员了解系统的运⾏状态是⾮常有⽤的,所以应该把它们写到⽇志⽂件中去。
完成这个过程的程序就是syslog。syslog可以根据⽇志的类别和优先级将⽇志保存到不同的⽂件中。
例如,为了⽅便查阅,可以把内核信息与其他信息分开,单独保存到⼀个独⽴的⽇志⽂件中。默认配置下,⽇志⽂件通常都保存
在“/var/log”⽬录下。
⽇志类型
下⾯是常见的⽇志类型,但并不是所有的Linux发⾏版都包含这些类型:
类型说明
auth⽤户认证时产⽣的⽇志,如login命令、su命令。
authpriv与 auth 类似,但是只能被特定⽤户查看。
console针对系统控制台的消息。
cron系统定期执⾏计划任务时产⽣的⽇志。
daemon某些守护进程产⽣的⽇志。
ftp FTP服务。
kern系统内核消息。
local0.local
7
由⾃定义程序使⽤。
lpr与打印机活动有关。
mail邮件⽇志。
mark 产⽣时间戳。系统每隔⼀段时间向⽇志⽂件中输出当前时间,每⾏的格式类似于 May 26 11:17:09 rs2 -- MARK --,可以由此推断系统发⽣故障的⼤概时间。
news⽹络新闻传输协议(nntp)产⽣的消息。
ntp⽹络时间协议(ntp)产⽣的消息。
user⽤户进程。
uucp UUCP⼦系统。
⽇志优先级
常见的⽇志优先级请见下标:
优先级说明
emerg紧急情况,系统不可⽤(例如系统崩溃),⼀般会通知所有⽤户。alert需要⽴即修复,例如系统数据库损坏。
crit危险情况,例如硬盘错误,可能会阻碍程序的部分功能。
err⼀般错误消息。
warning警告。
notice不是错误,但是可能需要处理。
info通⽤性消息,⼀般⽤来提供有⽤信息。
debug调试程序产⽣的信息。
none没有优先级,不记录任何⽇志消息。
常⽤⽇志⽂件
系统⽇志是由⼀个名为syslog的服务管理的,如以下⽇志⽂件都是由syslog⽇志服务驱动的:
/var/log/boot.log:录了系统在引导过程中发⽣的事件,就是Linux系统开机⾃检过程显⽰的信息
/var/log/lastlog :记录最后⼀次⽤户成功登陆的时间、登陆IP等信息
/var/log/secure :Linux系统安全⽇志,记录⽤户和⼯作组变坏情况、⽤户登陆认证情况
/var/log/btmp :记录Linux登陆失败的⽤户、时间以及远程IP地址
/var/log/syslog:只记录警告信息,常常是系统出问题的信息,使⽤lastlog查看
/var/log/wtmp:该⽇志⽂件永久记录每个⽤户登录、注销及系统的启动、停机的事件,使⽤last命令查看
/var/run/utmp:该⽇志⽂件记录有关当前登录的每个⽤户的信息。如 who、w、users、finger等就需要访问这个⽂件
/var/log/syslog 或 /var/log/messages 存储所有的全局系统活动数据,包括开机信息。基于 Debian 的系统如 Ubuntu 在 /var/log/syslog 中存储它们,⽽基于 RedHat 的系统如 RHEL 或 CentOS 则在 /var/log/messages 中存储它们。
/
var/log/auth.log 或 /var/log/secure 存储来⾃可插拔认证模块(PAM)的⽇志,包括成功的登录,失败的登录尝试和认证⽅式。Ubuntu 和Debian 在 /var/log/auth.log 中存储认证信息,⽽ RedHat 和 CentOS 则在 /var/log/secure 中存储该信息。
⽇志⽂件详细介绍:
/var/log/boot.log
该⽂件记录了系统在引导过程中发⽣的事件,就是Linux系统开机⾃检过程显⽰的信息,如图1所⽰:
/var/log/sysloglinux系统登录
默认Centos,Fedora不⽣成该⽇志⽂件,但可以配置/f让系统⽣成该⽇志⽂件。
它和/etc/log/messages⽇志⽂件不同,它只记录警告信息,常常是系统出问题的信息,所以更应该关注该⽂件。
要让系统⽣成该⽇志⽂件,在/f⽂件中加上:*.warning /var/log/syslog 该⽇志⽂件能记录当⽤户登录时login记录下的错误⼝令、Sendmail的问题、su命令执⾏失败等信息。
该⽇志⽂件记录最近成功登录的事件和最后⼀次不成功的登录事件,由login⽣成。在每次⽤户登录时被查询,该⽂件是⼆进制⽂件,需要使⽤lastlog命令查看,根据UID排序显⽰登录名、端⼝号和上次登录时间。如果某⽤户从来没有登录过,就显⽰为"**Never logged in**"。该命令只能以root权限执⾏。简单地输⼊lastlog命令后就会看到类似图4的信息:
/var/log/wtmp
该⽇志⽂件永久记录每个⽤户登录、注销及系统的启动、停机的事件。因此随着系统正常运⾏时间的增加,该⽂件的⼤⼩也会越来越⼤,增加的速度取决于系统⽤户登录的次数。该⽇志⽂件可以⽤来查看⽤户的登录记录,last 命令就通过访问这个⽂件获得这些信息,并以反序从后向前显⽰⽤户的登录记录,last 也能根据⽤户、终端tty 或时间显⽰相应的记录。
/
var/run/utmp
该⽇志⽂件记录有关当前登录的每个⽤户的信息。因此这个⽂件会随着⽤户登录和注销系统⽽不断变化,它只保留当时联机的⽤户记录,不会为⽤户保留永久的记录。系统中需要查询当前⽤户状态的程序,如 who 、w 、users 、finger 等就需要访问这个⽂件。该⽇志⽂件并不能包括所有精确的信息,因为某些突发错误会终⽌⽤户登录会话,⽽系统没有及时更新 utmp 记录,因此该⽇志⽂件的记录不是百分之百值得信赖的。
以上提及的3个⽂件(/var/log/wtmp 、/var/run/utmp 、/var/log/lastlog)是⽇志⼦系统的关键⽂件,都记录了⽤户登录的情况。这些⽂件的所有记录都包含了时间戳。这些⽂件是按⼆进制保存的,故不能⽤less 、cat 之类的命令直接查看这些⽂件,⽽是需要使⽤相关命令通过这些⽂件⽽查看。其中,utmp 和wtmp ⽂件的数据结构是⼀样的,⽽lastlog ⽂件则使⽤另外的数据结构,关于它们的具体的数据结构可以使⽤man 命令查询。
每次有⼀个⽤户登录时,login 程序在⽂件lastlog 中查看⽤户的UID 。如果存在,则把⽤户上次登录、注销时间和主机名写到标准输出中,然后login 程序在lastlog 中记录新的登录时间,打开utmp ⽂件并插⼊⽤户的utmp 记录。该记录⼀直⽤到⽤户登录退出时删除。utmp ⽂件被各种命令使⽤,包括who 、w 、users 和finger 。
下⼀步,login 程序打开⽂件wtmp 附加⽤户的utmp 记录。当⽤户登录退出时,具有更新时间戳的同⼀utmp 记录附加到⽂件中。wtmp ⽂件被程序last 使⽤。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23[root@TestStation etc]# lastlog Username Port From Latest root pts/0 110.87.109.232 Wed Nov 2 10:34:20 +0800 2016bin **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 **uucp **Never logged in **operator **Never logged in **games **Never logged in **gopher **Never logged in **ftp **Never logged in **nobody **Never logged in **vcsa **Never logged in **saslauth **Never logged in **postfix **Never logged in **sshd **Never logged in **ntp **Never logged in **suda pts/2 222.79.79.120 Tue Oct 25 16:00:01 +0800 2016
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论