系统日志 编辑 请登陆,再编辑

前言

日志文件能够详细记录系统每天发生的各种各样的事件。用户可以通过日志文件检查错误产生的原因,或者在受到攻击和黑客入侵时追踪攻击者的踪迹。

日志对于系统的安全来说非常重要,它记录了系统每天发生的各种各样的事情,用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。

日志主要的功能是审计和监测。它还可以实时地监测系统状态,监测和追踪侵入者。

基本概念

子系统

Linux系统一般有3个主要的日志子系统:连接时间日志、进程统计日志和错误日志。

  • 连接时间日志:连接时间日志由多个程序执行,把记录写入到/var/og/wtmp和/var/run/utmp。ogin等程序更新wtmp和utmp文件,使系统管理员能够跟踪谁在何时登录到系统。
  • 进程统计日志:进程统计日志由系统内核执行。当一个进程终止时,为每个进程往进程统计文件(pacct或acct)中写一个记录。进程统计的目的是为系统中的基本服务提供命令使用统计。
  • 错误日志:错误日志由sysogd(8)执行。各种系统守护进程、用户程序和内核通过sysog(3)向文件/var/og/messages报告值得注意的事件。另外还有许多UNIX类程序创建日志,像HTTP和FTP这样提供网络服务的服务器也有详细的日志。

日志消息级别

  • 0 EMERG(紧急):会导致主机系统不可用的情况
  • 1 ALERT(警告):必须马上采取措施解决的问题
  • 2 CRIT(严重):比较严重的情况
  • 3 ERR(错误):运行出现错误
  • 4 WARNING(提醒):可能会影响系统功能的事件
  • 5 NOTICE(注意):不会影响系统但值得注意
  • 6 INFO(信息):一般信息
  • 7 DEBUG(调试):程序或系统调试信息等

日志文件

对于Linux系统而言,所有的日志文件都在/var/log下。详细分类如下:

  • /var/log/messages — 包括整体系统信息,其中也包含系统启动期间的日志。此外,mail,cron,daemon,kern和auth等内容也记录在var/log/messages日志中。
  • /var/log/dmesg — 包含内核缓冲信息(kernel ring buffer)。在系统启动时,会在屏幕上显示许多与硬件有关的信息。可以用dmesg查看它们。
  • /var/log/auth.log — 包含系统授权信息,包括用户登录和使用的权限机制等。
  • /var/log/boot.log — 包含系统启动时的日志。
  • /var/log/daemon.log — 包含各种系统后台守护进程日志信息。
  • /var/log/dpkg.log – 包括安装或dpkg命令清除软件包的日志。
  • /var/log/kern.log – 包含内核产生的日志,有助于在定制内核时解决问题。
  • /var/log/lastlog — 记录所有用户的最近信息。这不是一个ASCII文件,因此需要用lastlog命令查看内容。
  • /var/log/maillog 和 /var/log/mail.log — 包含来着系统运行电子邮件服务器的日志信息。例如,sendmail日志信息就全部送到这个文件中。
  • /var/log/user.log — 记录所有等级用户信息的日志。
  • /var/log/Xorg.x.log — 来自X的日志信息。
  • /var/log/alternatives.log – 更新替代信息都记录在这个文件中。
  • /var/log/btmp – 记录所有失败登录信息。使用last命令可以查看btmp文件。例如,“last -f /var/log/btmp | more”。
  • /var/log/cups — 涉及所有打印信息的日志。
  • /var/log/anaconda.log — 在安装Linux时,所有安装信息都储存在这个文件中。
  • /var/log/yum.log — 包含使用yum安装的软件包信息。
  • /var/log/cron — 每当cron进程开始一个工作时,就会将相关信息记录在这个文件中。
  • /var/log/secure — 包含验证和授权方面信息。例如,sshd会将所有信息记录(其中包括失败登录)在这里。
  • /var/log/wtmp或/var/log/utmp — 包含登录信息。使用wtmp可以找出谁正在登陆进入系统,谁使用命令显示这个文件或信息等。
  • /var/log/faillog – 包含用户登录失败信息。此外,错误登录命令也会记录在本文件中。

除了上述Log文件以外, /var/log还基于系统的具体应用包含以下一些子目录:

  • /var/log/httpd/或/var/log/apache2 — 包含服务器access_log和error_log信息。
  • /var/log/lighttpd/ — 包含light HTTPD的access_log和error_log。
  • /var/log/mail/ – 这个子目录包含邮件服务器的额外日志。
  • /var/log/prelink/ — 包含.so文件被prelink修改的信息。
  • /var/log/audit/ — 包含被 Linux audit daemon储存的信息。
  • /var/log/samba/ – 包含由samba存储的信息。
  • /var/log/sa/ — 包含每日由sysstat软件包收集的sar文件。
  • /var/log/sssd/ – 用于守护进程安全服务。

日志管理

who

who 命令显示关于当前在本地系统上的所有用户的信息。显示以下内容:登录名、tty、登录日期和时间。输入 who am i 或 whoami 显示您的登录名、tty、您登录的日期和时间。如果用户是从一个远程机器登录的,那么该机器的主机名也会被显示出来。

who 命令也能显示自从线路活动发生以来经过的时间、命令解释器(shell)的进程标识、登录、注销、重新启动和系统时钟的变化,还能显示由初始化进程生成的其它进程。

语法:

who [ -a | -b -d -l -m -p -q -r -s -t -u -w -H -T ] [ File ]
who am { i | I }

参数:

-a 处理 /etc/utmp 文件或有全部信息的指定文件。等同于指定 -bdlprtTu 标志。
-b 指出最近系统启动的时间和日期。
-d 显示没有被 init 重新生成的所有到期的进程。退出字段用于显示死进程并包含死进程的终止和退出值(由 wait 进程返回的)。(这个标志用于通过察看应用程序返回的错误号来确定一个进程的结束原因。)
-l 列出任何登录进程。
-m 仅显示关于当前终端的信息。who -m 命令等同于 who am i 和 who am I 命令。
-p 列出任何当前活动的和以前已由 init 生成的活动进程。
-q 打印一份在本地系统上的用户和用户数的快速清单。
-r 显示当前进程的运行级别。
-s 仅列出名字、线路和时间字段。这个标志是缺省值;因此,who 和 who -s 命令是等效的。
-t 显示 root 用户上一次用 date 命令对系统时钟做的更改。如果 date 命令自从系统安装以来还没有被运行过, who -t 命令就不产生输出。
-u 显示每个当前用户的用户名、tty、登录时间、线路活动和进程标识。
-H 显示标题。
--help  在线帮助。
--version  显示版本信息。

实例:

要显示关于谁正在使用本地系统节点的信息,请输入:

$ who
joe lft/0 Jun 8 08:34

要显示您的用户名,请输入:

$ who am i
george lft/0 Jun 8 08:34

要显示本地系统节点的运行级别,请输入:

$ who -r
运行级别 2 2013-10-13 15:37

w

w是显示目前登入系统的用户信息。

执行这项指令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。单独执行linux w 命令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。

语法:

w [-fhsuV][用户名称]

参数: -f  开启或关闭显示用户从何处登入系统。 -h  不显示各栏位的标题信息列。 -s  使用简洁格式列表,不显示用户登入时间,终端机阶段作业和程序所耗费的CPU时间。 -u  忽略执行程序的名称,以及该程序耗费CPU时间的信息。 -V  显示版本信息。

last

last命令列出目前与过去登入系统的用户相关信息。

单独执行last指令,它会读取位于/var/log目录下,名称为wtmp的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来。

语法:

last [-adRx][-f <记录文件>][-n <显示列数>][帐号名称...][终端机编号...]

参数:

-a  把从何处登入系统的主机名称或IP地址,显示在最后一行。
-d  将IP地址转换成主机名称。
-f <记录文件>  指定记录文件。
-n <显示列数>或-<显示列数>  设置列出名单的显示列数。
-R  不显示登入系统的主机名称或IP地址。
-x  显示系统关机,重新开机,以及执行等级的改变等信息。

lastlog

lastlog 报告所有用户的最近登录情况,或者指定用户的最近登录情况

语法:

lastlog [选项]

选项:

 -b, --before DAYS    只显示老于 DAYS 的最近登录记录。
 -h, --help    帮助信息并退出。
 -R, --root CHROOT_DIR    改变主目录到指定目录,并应用指定目录中的配置文件后再执行命令
 -t, --time DAYS    只显示新于 DAYS 的最近登录记录。
 -u, --user LOGIN|RANGE    显示指定用户的最近登录记录。

相关链接

鸟哥私房菜:认识与分析登录文件

Linux日志系统详细介绍

/var/log目录下的20个Linux日志文件功能详解

百度百科:who