分享

学习笔记:Linux日志文件

 离魂异客 2010-10-12
声明:能自由转载本文,但请务必保留本文的完整性。
作者:张子坚
说明:本文所涉及示例均在fedora core3下得到。日志文件由系统日志和内核日志监视程式syslogd和klogd控制,在/etc/syslog.conf文件中设置这两个监视程式默认活动。 日志文件按/etc/syslog.conf设置文件中的描述进行组织。下图是/etc/syslog.conf文件的内容:
[root@localhost ~]# cat /etc/syslog.conf
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                 /dev/console
# Log anything (except mail) of level info or higher.
# Don’t log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure
# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog
# Log cron stuff
cron.*                                                  /var/log/cron
# Everybody gets emergency messages
*.emerg                                                 *
# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          /var/log/spooler
# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log
                              /etc/syslog.conf文件
syslog.conf行的基本语法是
[消息类型][处理方案]
注意:中间的分隔符必须是Tab字符!
消息类型是由"消息来源"和"紧急程度"构成,中间用点号连接。例如上图中,news.crit表示来自news的“关键”状况。在这里,news是消息来源,crit代表关键状况。通配符*能代表一切消息来源。
说明
第一条语句*.info,将info级以上(notice,warning,err,crit,alert和emerg)的所有消息发送到相应日志文件。
日志文件类别(按重要程度分类)
日志文件能分成八大类,下面按重要性从大到下列出
emerg          emergency,紧急
alert        警报
crit            critical,关键
err                           error,错误
warning      警告
notice         通知
info       信息
debug      调试

    简单列一下消息来源
    auth    认证系统,如login或su,即询问用户名和口令
    cron    系统执行定时任务时发出的信息
    daemon    某些系统的守护程式的 syslog,如由in.ftpd产生的log
    kern    内核的信息
    lpr     打印机的信息
    mail    处理邮件的守护进程发出的信息
    mark    定时发送消息的时标程式
    news    新闻组的守护进程的信息
    user    本地用户的应用程式的信息
    uucp    uucp子系统的信息
    *     表示所有可能的信息来源
    处理方案

    "处理方案"选项能对日志进行处理。能把他存入硬盘,转发到另一台机器或显示在管理员的终端上。
    处理方案一览
    文件名  写入某个文件,要注意绝对路径。
    @主机名 转发给另外一台主机的syslogd程式。
    @IP地址 同上,只是用IP地址标识而已。
    /dev/console 发送到本地机器屏幕上。
    * 发送到所有用户的终端上。
    |程式 通过管道转发给某个程式。
    例如
    kern.emerg
    /dev/console(一旦发生内核的紧急状况,即时把信息显示在控制台上)
    说明
    如果想修改syslogd的记录文件,首先你必须杀掉syslogd进程,在修改完毕后再启动syslogd。攻击者进入系统后通常即时修改系统日志,因此作为网管你应该用一台机器专门处理日志信息,其他机器的日志自动转发到他上面,这样日志信息一旦产生就即时被转移,这样就能正确记录攻击者的行为。
    将日志文件记录到远程主机
    如果有另一个Linux或UNIX系统,那么能设置日志文件,让其把消息发到另外一个系统并记录下来。这也是为什么上面的所有日志文件都记录了主机名的原因。要实现这个功能,在该设置文件中,指定一个记录动作,后面接一个由“@”开头的远程系统的主机名,如下例:*.warn; authpriv.notice;auth.notice @bright.hacker.com.cn
    同时,还要将接受消息的目的系统设置为允许这种操作。此例主机bright.hacker.com.cn的syslogd守护进程要用-r参数启动。如果不使用-r参数,则目标主机的syslogd将丢弃这个消息以避免DoS攻击使硬盘塞满虚假消息。并且确保目标主机的 /etc/service文件必须设置syslog服务所使用的UDP端口514。如果syslogd守护进程用了-r和-h参数,那么,参数-h将允许转发消息。也就是说,如果系统B的syslogd用了-h 参数,这样,当系统A把消息转发到系统B后,系统B就把来自系统A和他自己的消息转发到系统C。
    将警告信息发送到控制台
    syslogd能将所有从内核发出的重要程度为emerg或alert的信息发送到控制台。控制台是指虚拟控制台或启动时加-C参数的xterm。要实现这一功能,在/etc/syslog.conf文件中加上下面一行:kern.emerg /dev/console 。
    这样,当系统内核发生错误而发出消息时,用户能够马上知道并且进行处理。如果用了“*”,就是一旦内核发生错误,就将消息发送给所有在线用户,但只有这个用户正在登录的时候才能看到。修改了/etc/syslog.conf文件后,必须重新启动syslogd守护进程以使设置更改生效,请执行下面的命令:#/etc/rc.d/init.d/syslog restart。
    系统日志
    大多数日志位于/var/log目录中。日志通过标准cron任务logrotate维护,每周轮换日志文件。这样,/var/log/boot.log.1文件是上周的文件。
    下图是我的fedora core3 /var/log目录中的内容:
    [root@localhost var]# ls /var/log
    acpid            cups     maillog.1    scrollkeeper.log  vbox
    anaconda.log     dmesg    messages     secure            welcome.msg
    anaconda.syslog  gdm      messages.1   secure.1          wtmp
    boot.log         iiim     ppp          spooler           Xorg.0.log
    boot.log.1       lastlog  prelink.log  spooler.1         Xorg.0.log.old
    cron             mail     rpmpkgs      up2date
    cron.1           maillog  rpmpkgs.1    up2date.1
                                    /var/log目录中的内容
    /var/log中的系统日志

    下面看看/var/log目录中的系统日志。dmesg文件包括和Linux启动相关的基本引导信息。message文件包括计算机上启动Linux之后的其他处理消息。boot.log文件列出和监视程式启动和停止相关的消息。wtmp能帮助监视登录。
    dmesg内容

    这个文件末尾更有一个关键项目:Linux是否正确装载了文件系统和交换空间。如果装载成功,则我的Fedoar core3能看到如下消息:
    EXT3 FS on hda10, internal journal
    Adding 626524k swap on /dev/hda3.  Priority:-1 extents:1
    kjournald starting.  Commit interval 5 seconds
    表示Linux分区上成功地装载了带内部杂志的ext3文件系统。kjournal监视程式(kjournald)实际更新文件系统杂志。
    /var/log/messages消息
    /var/log/messages中记录了和硬件和服务相关联的其他消息。这个文件中每一行包括一些基本特征,如每个消息相关的日期,时间,主机名和服务。如果可能,还会列出用户名和进程标识符。
    分析/var/log/boot.log
    启动和停止服务和监视程式时,会在/var/log/boot.log中列出。下图显示此文件的内容:
    May 22 12:15:39 localhost syslog: syslogd startup succeeded
    May 22 12:15:39 localhost syslog: klogd startup succeeded
    May 22 12:15:39 localhost irqbalance: irqbalance startup succeeded
    May 22 12:15:40 localhost portmap: portmap startup succeeded
    May 22 12:15:40 localhost nfslock: rpc.statd startup succeeded
    May 22 12:15:37 localhost sysctl: net.ipv4.conf.default.rp_filter = 1
    May 22 12:15:37 localhost sysctl: net.ipv4.conf.default.accept_source_route = 0
    May 22 12:15:37 localhost sysctl: kernel.sysrq = 0
    May 22 12:15:40 localhost rpcidmapd: rpc.idmapd startup succeeded
    May 22 12:15:37 localhost sysctl: kernel.core_uses_pid = 1
    May 22 12:15:37 localhost network: Setting network parameters:  succeeded
    May 22 12:15:37 localhost network: Bringing up loopback interface:  succeeded
    May 22 12:15:40 localhost netfs: Mounting other filesystems:  succeeded
    May 22 12:15:41 localhost autofs: automount startup succeeded
    May 22 12:15:41 localhost mDNSResponder:  startup succeeded
    May 22 12:15:42 localhost smartd: smartd startup succeeded
    May 22 12:15:42 localhost acpid: acpid startup succeeded
    May 22 12:15:44 localhost cups: cupsd startup succeeded
    May 22 12:15:44 localhost sshd:  succeeded
    May 22 12:15:44 localhost xinetd: xinetd startup succeeded
    May 22 12:15:45 localhost sendmail: sendmail startup succeeded
    May 22 12:15:45 localhost sendmail: sm-client startup succeeded
    May 22 12:15:45 localhost gpm: gpm startup succeeded
    May 22 12:15:45 localhost iiim: htt startup succeeded
    May 22 12:15:46 localhost crond: crond startup succeeded
    May 22 12:15:47 localhost xfs: xfs startup succeeded
    May 22 12:15:47 localhost anacron: anacron startup succeeded
    May 22 12:15:47 localhost atd: atd startup succeeded
    May 22 12:15:47 localhost readahead: Starting background readahead:
    May 22 12:15:48 localhost rc: Starting readahead:  succeeded
    May 22 12:15:48 localhost messagebus: messagebus startup succeeded
    May 22 12:15:48 localhost cups-config-daemon: cups-config-daemon startup succeeded
    May 22 12:15:49 localhost haldaemon: haldaemon startup succeeded
    May 22 13:20:59 localhost cups: cupsd shutdown succeeded
    May 22 13:21:03 localhost cups: cupsd startup succeeded
                                   /var/log/boot.log文件       
    这是5月22日的消息。
    探测远程登录

    登录记录放在一个数据库文件/var/log/wtmp中。能用utmpdump命令使这个文件变成可读格式。以下图为例,这是运行utmpdump /var/log/wtmp的部分输出。
    [5] [02879] [4   ] [        ] [            ] [2.6.9-1.667         ] [0.0.0.0     ] [Mon May 22 12:15:49 2006 CST]
    [6] [02909] [5   ] [LOGIN   ] [tty5        ] [                    ] [0.0.0.0     ] [Mon May 22 12:15:49 2006 CST]
    [5] [02909] [5   ] [        ] [            ] [2.6.9-1.667         ] [0.0.0.0     ] [Mon May 22 12:15:49 2006 CST]
    [5] [02920] [6   ] [        ] [            ] [2.6.9-1.667         ] [0.0.0.0     ] [Mon May 22 12:15:49 2006 CST]
    [6] [02920] [6   ] [LOGIN   ] [tty6        ] [                    ] [0.0.0.0     ] [Mon May 22 12:15:50 2006 CST]
    [5] [02921] [x   ] [        ] [            ] [2.6.9-1.667         ] [0.0.0.0     ] [Mon May 22 12:15:50 2006 CST]
    [7] [03397] [:0  ] [root    ] [:0          ] [                    ] [0.0.0.0     ] [Mon May 22 12:16:08 2006 CST]
    [7] [03630] [/0  ] [root    ] [pts/0       ] [:0.0                ] [0.0.0.0     ] [Mon May 22 12:26:34 2006 CST]
    [7] [03700] [/0  ] [root    ] [pts/0       ] [:0.0                ] [0.0.0.0     ] [Mon May 22 12:47:56 2006 CST]
    [7] [04458] [/0  ] [root    ] [pts/0       ] [:0.0                ] [0.0.0.0     ] [Mon May 22 13:55:24 2006 CST]
                                        检查登录活动           
    说明
    应该知道局域网的IP地址。如果在上图中出现一些未知的IP地址,那么要当心了,或许已有人入侵我们的系统了。
    监视程式日志

    大多数Linux监视程度都在/var/log目录中配制日志文件,如crond,httpd和smbd。每个日志文件能显示特定服务成功活失败。下图显示的是/var/log/cron文件的内容。
    [root@localhost log]# cat /var/log/cron
    May 22 13:23:29 localhost anacron[2721]: Job `cron.daily’ terminated
    May 22 13:23:29 localhost anacron[2721]: Normal exit (1 jobs run)
    May 22 14:01:01 localhost crond[4482]: (root) CMD (run-parts /etc/cron.hourly)
    May 22 15:01:01 localhost crond[4536]: (root) CMD (run-parts /etc/cron.hourly)
                              /var/log/cron文件
    从图中能看出执行cron任务的日期和时间。这是标准cron任务。尽管这里的时间和/etc/crontab中指定的不同,但这只表明这台Linux计算机没有在指定的时间运行。
    说明
    在Linux系统中增加更多监视程式时,/var/log目录中会出现更多日志文件。不过,日志文件也不一定放在/var/log目录中,这是由每个监视程式的配制文件确定的。
    其他日志

    在/var/log目录中更有几个其他日志文件。增加更多服务时,会出现更多日志文件。

      本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
      转藏 分享 献花(0

      0条评论

      发表

      请遵守用户 评论公约

      类似文章 更多