如何看FreeBSD的系统日志

由于FreeBSD是一个多用户系统,那么就需要管理员进行日常维护,特别是用做网络服务器的系统,一旦因为缺乏维护而造成停机故障,就会造成很大损失 。即使对于单用户的FreeBSD系统,同样也要执行这些不可缺乏的维护任务,只是由于系统归个人使用,那么对维护的要求就不必那么高,维护任务就轻松一些 。
系统日志
系统的日志记录提供了对系统活动的详细审计,这些日志用于评估、审查系统的运行环境和各种操作 。对于一般情况,日志记录包括记录用户登录时间、登录地点、进行什么操作等内容,如果使用得当,日志记录能向系统管理员提供有关危害安全的侵害或入侵试图等非常有用的信息 。
BSD提供了详细的各种日志记录,以及有关日志的大量工具和实用程序 。这些审计记录通常由程序自动产生,是缺省设置的一部分,能够帮助Unix管理员来寻找系统中存在的问题,对系统维护十分有用 。还有另一些日志记录,需要管理员进行设置才能生效 。
大部分日志记录文件被保存在/var/log目录中,在这个目录中除了保存系统生成日志之外,还包括一些应用软件的日志文件 。当然/var目录下的其他子目录中也会记录下一些其他种类的日志记录文件,这依赖于具体的应用程序的设置 。
$ ls /var/log
adduser maillog.5.gz sendmail.st.1
dmesg.today maillog.6.gz sendmail.st.10
dmesg.yesterday maillog.7.gz sendmail.st.2
httpd-access.log messages sendmail.st.3
httpd-error.log messages.0.gz sendmail.st.4
kerberos.log messages.1.gz sendmail.st.5
lastlog messages.2.gz sendmail.st.6
lpd-errs messages.3.gz sendmail.st.7
maillog messages.4.gz sendmail.st.8
maillog.0.gz messages.5.gz sendmail.st.9
maillog.1.gz news setuid.today
maillog.2.gz ppp.log setuid.yesterday
maillog.3.gz sendmail.st userlog
maillog.4.gz sendmail.st.0 wtmp
系统登录日志
系统会保存每个用户的登录记录,这些信息包括这个用户的名字、登录起始结束时间以及从何处登录入系统的等等 。它们被保存到/var/log/lastlog、/var/log/wtmp和/
var/run/utmp文件中,这三个文件以二进制格式保存了这些用户的登录数据 。
其中/var/run/utmp文件中保存的是当前系统用户的登录记录,因此这个文件会随着用户进入和离开系统而不断变化,而它也不会为用户保留很长的记录,只保留当时联机的用户记录 。系统中需要查询当前用户状态的程序,如 who、w等就需要访问这个文件 。
utmp可能不包括所有精确的信息,某些突发错误会终止用户登录会话,当没有及时更新utmp记录,因此utmp的记录不是百分之百的可以信赖的 。
而/var/log/wtmp保存了所有的登录、退出信息,以及系统的启动、停机记录,因此随着系统正常运行时间的增加,它的大小也会越来越大,增加的速度依赖于系统用户登录次数 。因此可以利用这个日志用来查看用户的登录记录,last命令就通过访问这个文件来获得这些信息,并以反序从后向前显示用户的登录记录,last也能根据用户、终端tty或时间显示相应的记录 。ac命令同样也使用wtmp中的数据产生报告,但它的显示方式不同 。它可以根据用户(ac -p),或按日期(ap -d)显示信息,这样管理员就能获得一些非常有用的反常信息,如一个平时不太活跃的用户突然登录并连接很长时间,就有理由怀疑这个帐户被窃取了 。
注意:X Window由于会同时打开多个终端窗口,因此会使得用户登录连接时间迅速增加 。
lastlog文件保存的是每个用户的最后一次登录信息,包括登录时间和地点,这个文件一般只有login程序使用,通过用户的UID,来在lastlog文件中查找相应记录,然后报告其最后一次登录时间和终端tty 。然后,login程序就使用新的记录更新这个文件 。

推荐阅读