【Linux日志】系统日志及分析

【Linux日志】系统日志及分析
Linux系统拥有很是灵活和强大的日志功能,能够保存几乎全部的操做记录,并能够从中检索出咱们须要的信息。数据库

大部分Linux发行版默认的日志守护进程为 syslog,位于 /etc/syslog 或 /etc/syslogd 或/etc/rsyslog.d,默认配置文件为 /etc/syslog.conf 或 rsyslog.conf,任何但愿生成日志的程序均可以向 syslog 发送信息。安全

Linux系统内核和许多程序会产生各类错误信息、警告信息和其余的提示信息,这些信息对管理员了解系统的运行状态是很是有用的,因此应该把它们写到日志文件中去。网络

完成这个过程的程序就是syslog。syslog能够根据日志的类别和优先级将日志保存到不一样的文件中。数据结构

例如,为了方便查阅,能够把内核信息与其余信息分开,单独保存到一个独立的日志文件中。默认配置下,日志文件一般都保存在“/var/log”目录下。less

日志类型ssh

下面是常见的日志类型,但并非全部的Linux发行版都包含这些类型:ide

类型 说明
auth 用户认证时产生的日志,如login命令、su命令。
authpriv 与 auth 相似,可是只能被特定用户查看。
console 针对系统控制台的消息。
cron 系统按期执行计划任务时产生的日志。
daemon 某些守护进程产生的日志。
ftp FTP服务。
kern 系统内核消息。
local0.local7 由自定义程序使用。
lpr 与打印机活动有关。
mail 邮件日志。
mark 产生时间戳。系统每隔一段时间向日志文件中输出当前时间,每行的格式相似于 May 26 11:17:09 rs2 -- MARK --,能够由此推断系统发生故障的大概时间。
news 网络新闻传输协议(nntp)产生的消息。
ntp 网络时间协议(ntp)产生的消息。
user 用户进程。
uucp UUCP子系统。post

日志优先级操作系统

常见的日志优先级请见下标:debug

优先级 说明
emerg 紧急状况,系统不可用(例如系统崩溃),通常会通知全部用户。
alert 须要当即修复,例如系统数据库损坏。
crit 危险状况,例如硬盘错误,可能会阻碍程序的部分功能。
err 通常错误消息。
warning 警告。
notice 不是错误,可是可能须要处理。
info 通用性消息,通常用来提供有用信息。
debug 调试程序产生的信息。
none 没有优先级,不记录任何日志消息。
经常使用日志文件

系统日志是由一个名为syslog的服务管理的,如如下日志文件都是由syslog日志服务驱动的:

/var/log/boot.log:录了系统在引导过程当中发生的事件,就是Linux系统开机自检过程显示的信息

/var/log/lastlog :记录最后一次用户成功登录的时间、登录IP等信息

/var/log/messages :记录Linux操做系统常见的系统和服务错误信息

/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/syslog

默认Centos,Fedora不生成该日志文件,但能够配置/etc/syslog.conf让系统生成该日志文件。

它和/etc/log/messages日志文件不一样,它只记录警告信息,经常是系统出问题的信息,因此更应该关注该文件。

要让系统生成该日志文件,在/etc/syslog.conf文件中加上:*.warning /var/log/syslog 该日志文件能记录当用户登陆时login记录下的错误口令、Sendmail的问题、su命令执行失败等信息。

该日志文件记录最近成功登陆的事件和最后一次不成功的登陆事件,由login生成。在每次用户登陆时被查询,该文件是二进制文件,须要使用lastlog命令查看,根据UID排序显示登陆名、端口号和上次登陆时间。若是某用户历来没有登陆过,就显示为"Never logged in"。该命令只能以root权限执行。简单地输入lastlog命令后就会看到相似图4的信息:

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 2016
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
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

/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使用。

相关文章
相关标签/搜索