精华内容
下载资源
问答
  • 常用Linux日志查看命令

    万次阅读 多人点赞 2017-06-04 15:26:07
    常用Linux日志查看命令 欢迎关注公众号【程猿薇茑】 查看Web应用程序的运行日志解决运行时异常、出错是一项基本功。在Web程序中我们通过日志系统(比如log4j)向外部文件(比如log.txt)写入了程序运行时的某些...

    【仅需9.9订阅[专栏合集](https://blog.csdn.net/hellozpc/category_11127579.html),作者所有付费文章都能看】

    常用Linux日志查看命令

    推荐【Kafka】https://bigbird.blog.csdn.net/article/details/108770504
    推荐【Flink】https://blog.csdn.net/hellozpc/article/details/109413465
    推荐【SpringBoot】https://blog.csdn.net/hellozpc/article/details/107095951
    推荐【SpringCloud】https://blog.csdn.net/hellozpc/article/details/83692496
    推荐【Mybatis】https://blog.csdn.net/hellozpc/article/details/80878563
    推荐【SnowFlake】https://blog.csdn.net/hellozpc/article/details/108248227
    推荐【并发限流】https://blog.csdn.net/hellozpc/article/details/107582771

     ------------
    华为云开年采购季刚刚上线,小编整理好了,第一手资料,方便大家薅一波羊毛。
    先说福利:
    ①:个人认证用户:华为云100元无门槛代金券+免费领取一台服务器一个月
    ②:企业认证用户: 华为云200元无门槛代金券+免费领取一台服务器两个月(还有华为自研鲲鹏超强计算服务器领取)
    现在普通人也可以建立自己的网站了,1元购买个域名,不管是个人博客、作品集网站、企业官网展示、简历网站,都可以很简单快速的实现,鉴于大多数人都是不懂技术的小白,这种情况下可以选择华为云云速建站,现在华为云开年采购季活动建站活动非常的优惠,买2年送1年,买3年送2年,还免费赠送1年SSL证书。

    华为云也面向在校大学生推出的创新创业扶持计划,为高校生提供先进的云计算产品、技术扶持、培训课程和经验分享,让在校学生不仅用得起云计算,还能用得好云计算。

      领取方式:
    第一步:扫描二维码注册华为云账号(一定要扫码注册,否则无法获得无门槛代金券)

     


    --------

    查看Web应用程序的运行日志解决运行时异常、出错是一项基本功。在Web程序中我们通过日志系统(比如log4j)向外部文件(比如log.txt)写入了程序运行时的某些日志(一般都会给日志行头加上tag),日志输出了程序中约定的一些变量(可能是某个订单号、某条服务码、请求ID值等标识)的值。

    如果哪个订单处理失败了,或者某个服务运行异常了,此时我们就可以根据程序中输出的这些tag(标签)信息定位日志中的记录,来看看具体的变量值对不对,传入传入参数的值等等(毕竟不是开发环境,不能debug只能通过打tag的方式来帮助找错)。

    先介绍一些常用查看文件的命令。后面介绍的几个案例实际工作中经常使用,值得一看!

    1.more(分页)

    http://www.cnblogs.com/peida/archive/2012/11/02/2750588.html

    2.less(less 与 more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件)

    less命令可以显示行号,即less -N log.txt

    http://www.cnblogs.com/peida/archive/2012/11/05/2754477.html

    3.tail(尾部)

    http://www.cnblogs.com/peida/archive/2012/11/07/2758084.html

    4.head(头部)

    http://www.cnblogs.com/peida/archive/2012/11/06/2756278.html

    5.grep(查找,以加行号grep -n ‘xxx’ log.txt | more)(可以巧妙利用grep + tail命令定位满足grep条件的后几条最新记录)

    小案例:

    输出匹配grep条件的数据行的前后各10行:(可能满足grep条件的有好多,所以可能输出好几个21行为一组的数据)

    grep  -n  -C10  'R0619'  caps-biz.txt

    输出最后一次匹配grep条件的数据行的前后各10行:(借助tail命令取最后几行)

    grep  -n  -C10  'R0619'  caps-biz.txt | tail -n 21 

    grep  -n  -C10  'R0619'  caps-biz.txt | tail -n 21 | less(借助less命令的/pattern可以高亮搜索词)

    http://www.cnblogs.com/peida/archive/2012/12/17/2821195.html

    http://www.cnblogs.com/end/archive/2012/02/21/2360965.html

    6.cat(输出文件内容)

    cat 可以显示行号

    cat -n   显示行号(包括空行)

    cat -b   显示行号(不包括空行)

    cat  -n log.txt | more

    http://www.cnblogs.com/peida/archive/2012/10/30/2746968.html

    7.nl(将行号格式做比较多的显示设计)

    http://www.cnblogs.com/peida/archive/2012/11/01/2749048.html

    几个命令的区别:http://www.cnblogs.com/cangqiongbingchen/p/5023886.html

    Linux如何通过命令查看日志文件的某几:http://www.cnblogs.com/qiaoyanlin/p/6706085.html

    案例

    先了解两个最基本的命令:

    tail  -n  10  test.log   查询日志尾部最后10行的日志;

    tail -n +10 test.log    查询10行之后的所有日志;

    head -n 10  test.log   查询日志文件中的头10行日志;

    head -n -10  test.log   查询日志文件除了最后10行的其他所有日志;

    1)按行号查看---过滤出关键字附近的日志

    通常我们用grep拿到的日志很少,我们需要查看关键信息附近的日志.

    首先: cat -n log.txt |grep "jiang"  ([root@vm1 ~]# grep -n "jiang" log.txt也可以)

    注意:less命令的显示行号是大写的N,即less -N log.txt

    得到关键日志的行号,比如这里找到包含“jiang”的记录很多行,假设我们要的结果是第18行附近的日志。

    此时如果我想查看这个关键字前5行和后5行的日志(当然也可以使用上面的grep命令加-C参数完成):

    cat -n log.txt |tail -n +13|head -n 10

    tail -n +13表示查询13行之后的日志

    head -n 10 则表示在前面的查询结果里再查前10条记录

    如果想直接看最新的日志,那么行号最大的就是。可以根据日志记录时间等条件筛选一下,或者使用less命令,不断地翻页(end定位到最后)

    如果满足grep条件的日志很多,那么可以结合tail命令只显示最后几行。

    如果我们查找的日志很多,打印在屏幕上不方便查看,有两个方法:

    (1)使用more和less命令,如: cat -n test.log |grep "jiang" |more  这样就分页打印了,通过空格键翻页,回车键下一行。

    (2)使用 >xxx.txt将其保存到文件中,到时可以拿下这个文件分析.如:

    cat -n test.log |grep "jiang"  >xxx.txt

    2)根据日期来查看

    一般在日志系统中都会记录打印日志的时间,通常我们非常需要查找指定时间端的日志:

    特别说明:该命令中的两个日期值必须是日志文件中包含的值,否则该命令无效.

    sed -n '/2017-06-04 14:06:27/,/2017-06-04 14:06:34/p'  test.log

    sed -n '/2017/06/04 14:06:27/,/2017/06/04 14:06:34/p'  test.log

    上述命令无效,需要转义:

    sed -n '/2017\/06\/04 14:06:27/,/2017\/06\/04 14:06:34/p'  test.log

     

    关于日期打印,可以先 grep '2014-12-17 16:17:20' test.log 来确定日志中是否有该时间点,以确保上一步可以拿到日志。这个根据时间段查询日志是非常有用的命令.

    特别说明:该命令中的两个日期值必须是日志文件中包含的值,否则该命令无效.
    欢迎关注公众号
    欢迎关注公众号【程猿薇茑】
    展开全文
  • Linux日志分析

    千次阅读 2015-02-03 09:54:33
    Linux日志分析的实战专题 作者:刘志勇 郭聪辉 发文时间:2004.11.23 日志也是用户应该注意的地方之一。不要低估日志文件对网络安全的重要作用,因为日志文件能够详细记录系统每天发生...


    Linux日志分析的实战专题
    作者:刘志勇 郭聪辉 发文时间:2004.11.23
    日志也是用户应该注意的地方之一。不要低估日志文件对网络安全的重要作用,因为日志文件能够详细记录系统每天发生的各种各样的事件。用户可以通过日志文件 检查错误产生的原因,或者在受到攻击和黑客入侵时追踪攻击者的踪迹。日志的两个比较重要的作用是:审核和监测。配置好的Linux的日志非常强大。对于 Linux系统而言,所有的日志文件都在/var/log下。默认情况下,Linux的日志文件已经足够强大,但没有记录FTP的活动。用户可以通过修改 /etc/ftpacess让系统记录FTP的一切活动。

    Linux日志系统简介: 日志对于系统的安全来说非常重要,它记录了系统每天发生的各种各样的事情,用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。日 志主要的功能是审计和监测。它还可以实时地监测系统状态,监测和追踪侵入者。Linux系统一般有3个主要的日志子系统:连接时间日志、进程统计日志和错 误日志。


      Linux日志系统 

      日志对于系统的安全来说非常重要,它记录了系统每天发生的各种各样的事情,用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。日志主要的功能是审计和监测。它还可以实时地监测系统状态,监测和追踪侵入者。 

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

      连接时间日志 

      连接时间日志由多个程序执行,把记录写入到/var/log/wtmp和/var/run/utmp。login等程序更新wtmp和utmp文件,使系统管理员能够跟踪谁在何时登录到系统。 

      进程统计日志 

      进程统计日志由系统内核执行。当一个进程终止时,为每个进程往进程统计文件(pacct或acct)中写一个记录。进程统计的目的是为系统中的基本服务提供命令使用统计。 

      错误日志 

      错误日志由syslogd(8)执行。各种系统守护进程、用户程序和内核通过syslog(3)向文件/var/log/messages报告值得注意的事件。另外还有许多UNIX类程序创建日志,像HTTP和FTP这样提供网络服务的服务器也有详细的日志。 





    Redhat Linux 常见的日志文件和常用命令:成功地管理任何系统的关键之一,是要知道系统中正在发生什么事。Linux 中提供了异常日志,并且日志的细节是可配置的。Linux 日志都以明文形式存储,所以用户不需要特殊的工具就可以搜索和阅读它们。还可以编写脚本,来扫描这些日志,并基于它们的内容去自动执行某些功能。 Linux 日志存储在 /var/log 目录中。这里有几个由系统维护的日志文件,但其他服务和程序也可能会把它们的日志放在这里。大多数日志只有root账户才可以读,不过修改文件的访问权限 就可以让其他人可读。

    成功地管理任何系统的关键之一,是要知道系统中正在 发生什么事。Linux 中提供了异常日志,并且日志的细节是可配置的。Linux 日志都以明文形式存储,所以用户不需要特殊的工具就可以搜索和阅读它们。还可以编写脚本,来扫描这些日志,并基于它们的内容去自动执行某些功能。 Linux 日志存储在 /var/log 目录中。这里有几个由系统维护的日志文件,但其他服务和程序也可能会把它们的日志放在这里。大多数日志只有root账户才可以读,不过修改文件的访问权限 就可以让其他人可读。

      RedHat Linux常用的日志文件

      RedHat Linux常见的日志文件详述如下
      /var/log/boot.log
      该文件记录了系统在引导过程中发生的事件,就是Linux系统开机自检过程显示的信息。

      /var/log/cron
      该日志文件记录crontab守护进程crond所派生的子进程的动作,前面加上用户、登录时间和PID,以及派生出的进程的动作。CMD的一个动作 是cron派生出一个调度进程的常见情况。REPLACE(替换)动作记录用户对它的cron文件的更新,该文件列出了要周期性执行的任务调度。 RELOAD动作在REPLACE动作后不久发生,这意味着cron注意到一个用户的cron文件被更新而cron需要把它重新装入内存。该文件可能会查 到一些反常的情况。

      /var/log/maillog
      该日志文件记录了每一个发送到系统或从系统发出的电子邮件的活动。它可以用来查看用户使用哪个系统发送工具或把数据发送到哪个系统。下面是该日志文件的片段:

      
    Sep 4 17:23:52 UNIX sendmail[1950]: g849Npp01950: from=root, size=25,
    class=0, nrcpts=1,
    msgid=<200209040923.g849Npp01950@redhat.pfcc.com.cn>,
    relay=root@localhost
    Sep 4 17:23:55 UNIX sendmail[1950]: g849Npp01950: to=lzy@fcceec.net,
    ctladdr=root (0/0), delay=00:00:04, xdelay=00:00:03, mailer=esmtp, pri=30025,
    relay=fcceec.net. [10.152.8.2], dsn=2.0.0, stat=Sent (Message queued)
    /var/log/messages



      该日志文件是许多进程日志文件的汇总,从该文件可以看出任何入侵企图或成功的入侵。如以下几行:


      
    Sep 3 08:30:17 UNIX login[1275]: FAILED LOGIN 2 FROM (null) FOR suying,
    Authentication failure
    Sep 4 17:40:28 UNIX -- suying[2017]: LOGIN ON pts/1 BY suying FROM
    fcceec.www.ec8.pfcc.com.cn
    Sep 4 17:40:39 UNIX su(pam_unix)[2048]: session opened for user root by suying(uid=999)



      该文件的格式是每一行包含日期、主机名、程序名,后面是包含PID或内核标识的方括号、一个冒号和一个空格,最后是消息。该文件有一个不足,就是被记 录的入侵企图和成功的入侵事件,被淹没在大量的正常进程的记录中。但该文件可以由/etc/syslog文件进行定制。由 /etc/syslog.conf配置文件决定系统如何写入/var/messages。有关如何配置/etc/syslog.conf文件决定系统日志 记录的行为,将在后面详细叙述。

      /var/log/syslog
      默认RedHat Linux不生成该日志文件,但可以配置/etc/syslog.conf让系统生成该日志文件。它和/etc/log/messages日志文件不同, 它只记录警告信息,常常是系统出问题的信息,所以更应该关注该文件。要让系统生成该日志文件,在/etc/syslog.conf文件中加上: *.warning /var/log/syslog   该日志文件能记录当用户登录时login记录下的错误口令、Sendmail的问题、su命令执行失败等信息。下面是一条记录:

      
    Sep 6 16:47:52 UNIX login(pam_unix)[2384]: check pass; user unknown
    /var/log/secure
    该日志文件记录与安全相关的信息。该日志文件的部分内容如下:
    Sep 4 16:05:09 UNIX xinetd[711]: START: ftp pid=1815 from=127.0.0.1
    Sep 4 16:05:09 UNIX xinetd[1815]: USERID: ftp OTHER :root
    Sep 4 16:07:24 UNIX xinetd[711]: EXIT: ftp pid=1815 duration=135(sec)
    Sep 4 16:10:05 UNIX xinetd[711]: START: ftp pid=1846 from=127.0.0.1
    Sep 4 16:10:05 UNIX xinetd[1846]: USERID: ftp OTHER :root
    Sep 4 16:16:26 UNIX xinetd[711]: EXIT: ftp pid=1846 duration=381(sec)
    Sep 4 17:40:20 UNIX xinetd[711]: START: telnet pid=2016 from=10.152.8.2
    /var/log/lastlog


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



    Username Port From Latest
    root tty2 Tue Sep 3 08:32:27 +0800 2002
    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**
    news **Never logged in**
    uucp **Never logged in**
    operator **Never logged in**
    games **Never logged in**
    gopher **Never logged in**
    ftp ftp UNIX Tue Sep 3 14:49:04 +0800 2002
    nobody **Never logged in**
    nscd **Never logged in**
    mailnull **Never logged in**
    ident **Never logged in**
    rpc **Never logged in**
    rpcuser **Never logged in**
    xfs **Never logged in**
    gdm **Never logged in**
    postgres **Never logged in**
    apache **Never logged in**
    lzy tty2 Mon Jul 15 08:50:37 +0800 2002
    suying tty2 Tue Sep 3 08:31:17 +0800 2002



      系统账户诸如bin、daemon、adm、uucp、mail等决不应该登录,如果发现这些账户已经登录,就说明系统可能已经被入侵了。若发现记录的时间不是用户上次登录的时间,则说明该用户的账户已经泄密了。 

      /var/log/wtmp 

      该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件。因此随着系统正常运行时间的增加,该文件的大小也会越来越大,增加 的速度取决于系统用户登录的次数。该日志文件可以用来查看用户的登录记录,last命令就通过访问这个文件获得这些信息,并以反序从后向前显示用户的登录 记录,last也能根据用户、终端 tty或时间显示相应的记录。 

      命令last有两个可选参数: 

      last -u 用户名 显示用户上次登录的情况。 

      last -t 天数 显示指定天数之前的用户登录情况。 

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

      /var/log/xferlog 

      该日志文件记录FTP会话,可以显示出用户向FTP服务器或从服务器拷贝了什么文件。该文件会显示用户拷贝到服务器上的用来入侵服务器的恶意程序,以及该用户拷贝了哪些文件供他使用。 

      该文件的格式为:第一个域是日期和时间,第二个域是下载文件所花费的秒数、远程系统名称、文件大小、本地路径名、传输类型(a: ASCII,b:二进制)、与压缩相关的标志或tar,或"_"(如果没有压缩的话)、传输方向(相对于服务器而言:i代表进,o代表出)、访问模式 (a:匿名,g:输入口令,r:真实用户)、用户名、服务名(通常是ftp)、认证方法(l:RFC931,或0),认证用户的ID或"*"。下面是该文 件的一条记录: 

     
    Wed Sep 4 08:14:03 2002 1 UNIX 275531
    /var/ftp/lib/libnss_files-2.2.2.so b _ o a -root@UNIX ftp 0 * c
    /var/log/kernlog



       RedHat Linux默认没有记录该日志文件。要启用该日志文件,必须在/etc/syslog.conf文件中添加一行:kern.* /var/log/kernlog 。这样就启用了向/var/log/kernlog文件中记录所有内核消息的功能。该文件记录了系统启动时加载设备或使用设备的情况。一般是正常的操作, 但如果记录了没有授权的用户进行的这些操作,就要注意,因为有可能这就是恶意用户的行为。下面是该文件的部分内容: 

      
    Sep 5 09:38:42 UNIX kernel: NET4: Linux TCP/IP 1.0 for NET4.0
    Sep 5 09:38:42 UNIX kernel: IP Protocols: ICMP, UDP, TCP, IGMP
    Sep 5 09:38:42 UNIX kernel: IP: routing cache hash table of 512 buckets, 4Kbytes
    Sep 5 09:38:43 UNIX kernel: TCP: Hash tables configured (established 4096 bind 4096)
    Sep 5 09:38:43 UNIX kernel: Linux IP multicast router 0.06 plus PIM-SM
    Sep 5 09:38:43 UNIX kernel: NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
    Sep 5 09:38:44 UNIX kernel: EXT2-fs warning: checktime reached, running e2fsck is recommended
    Sep 5 09:38:44 UNIX kernel: VFS: Mounted root (ext2 filesystem).
    Sep 5 09:38:44 UNIX kernel: SCSI subsystem driver Revision: 1.00
    /var/log/Xfree86.x.log



      该日志文件记录了X-Window启动的情况。另外,除了/var/log/外,恶意用户也可能在别的地方留下痕迹,应该注意以下几 个地方:root和其他账户的shell历史文件;用户的各种邮箱,如.sent、mbox,以及存放在/var/spool/mail/ 和 /var/spool/mqueue中的邮箱;临时文件/tmp、/usr/tmp、/var/tmp;隐藏的目录;其他恶意用户创建的文件,通常是以 "."开头的具有隐藏属性的文件等。 

      具体命令 

      wtmp和utmp文件都是二进制文件,它们不能被诸如tail之类的命令剪贴或合并(使用cat命令)。用户需要使用who、w、users、last和ac等命令来使用这两个文件包含的信息。 

      who命令 

      who命令查询utmp文件并报告当前登录的每个用户。who的默认输出包括用户名、终端类型、登录日期及远程主机。例如,键入who命令,然后按回车键,将显示如下内容: 




    chyang pts/0 Aug 18 15:06
    ynguo pts/2 Aug 18 15:32
    ynguo pts/3 Aug 18 13:55
    lewis pts/4 Aug 18 13:35
    ynguo pts/7 Aug 18 14:12
    ylou pts/8 Aug 18 14:15



      如果指明了wtmp文件名,则who命令查询所有以前的记录。命令who /var/log/wtmp将报告自从wtmp文件创建或删改以来的每一次登录。 

      w命令 

      w命令查询utmp文件并显示当前系统中每个用户和它所运行的进程信息。例如,键入w命令,然后按回车键,将显示如下内容:




      
    3:36pm up 1 day, 22:34, 6 users, load average: 0.23, 0.29, 0.27
    USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
    chyang pts/0 202.38.68.242 3:06pm 2:04 0.08s 0.04s -bash
    ynguo pts/2 202.38.79.47 3:32pm 0.00s 0.14s 0.05 w
    lewis pts/3 202.38.64.233 1:55pm 30:39 0.27s 0.22s -bash
    lewis pts/4 202.38.64.233 1:35pm 6.00s 4.03s 0.01s sh /home/users/
    ynguo pts/7 simba.nic.ustc.e 2:12pm 0.00s 0.47s 0.24s telnet mail
    ylou pts/8 202.38.64.235 2:15pm 1:09m 0.10s 0.04s -bash



      users命令 

      users命令用单独的一行打印出当前登录的用户,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示相同的次数。例如,键入users命令,然后按回车键,将显示如下内容: 

      chyang lewis lewis ylou ynguo ynguo 

      last命令 

      last命令往回搜索wtmp来显示自从文件第一次创建以来登录过的用户。例如: 

      
    chyang pts/9 202.38.68.242 Tue Aug 1 08:34 - 11:23 (02:49)
    cfan pts/6 202.38.64.224 Tue Aug 1 08:33 - 08:48 (00:14)
    chyang pts/4 202.38.68.242 Tue Aug 1 08:32 - 12:13 (03:40)
    lewis pts/3 202.38.64.233 Tue Aug 1 08:06 - 11:09 (03:03)
    lewis pts/2 202.38.64.233 Tue Aug 1 07:56 - 11:09 (03:12)



      如果指明了用户,那么last只报告该用户的近期活动,例如,键入last ynguo命令,然后按回车键,将显示如下内容: 

      
    ynguo pts/4 simba.nic.ustc.e Fri Aug 4 16:50 - 08:20 (15:30)
    ynguo pts/4 simba.nic.ustc.e Thu Aug 3 23:55 - 04:40 (04:44)
    ynguo pts/11 simba.nic.ustc.e Thu Aug 3 20:45 - 22:02 (01:16)
    ynguo pts/0 simba.nic.ustc.e Thu Aug 3 03:17 - 05:42 (02:25)
    ynguo pts/0 simba.nic.ustc.e Wed Aug 2 01:04 - 03:16 1+02:12)
    ynguo pts/0 simba.nic.ustc.e Wed Aug 2 00:43 - 00:54 (00:11)
    ynguo pts/9 simba.nic.ustc.e Thu Aug 1 20:30 - 21:26 (00:55)



      ac命令 

      ac命令根据当前的/var/log/wtmp文件中的登录进入和退出来报告用户连接的时间(小时),如果不使用标志,则报告总的时间。例如,键入ac命令,然后按回车键,将显示如下内容: 

      total 5177.47 

    键入ac -d命令,然后按回车键,将显示每天的总的连接时间: 

      
    Aug 12 total 261.87
    Aug 13 total 351.39
    Aug 14 total 396.09
    Aug 15 total 462.63
    Aug 16 total 270.45
    Aug 17 total 104.29
    Today total 179.02



      键入ac -p命令,然后按回车键,将显示每个用户的总的连接时间: 

      
    ynguo 193.23
    yucao 3.35
    rong 133.40
    hdai 10.52
    zjzhu 52.87
    zqzhou 13.14
    liangliu 24.34
    total 5178.24



      lastlog命令 

      lastlog文件在每次有用户登录时被查询。可以使用lastlog命令检查某特定用户上次登录的时间,并格式化输出上次登录日志 /var/log/lastlog的内容。它根据UID排序显示登录名、端口号(tty)和上次登录时间。如果一个用户从未登录过,lastlog显示 **Never logged**。注意需要以root身份运行该命令,例如: 

      
    rong 5 202.38.64.187 Fri Aug 18 15:57:01 +0800 2000
    dbb **Never logged in**
    xinchen **Never logged in**
    pb9511 **Never logged in**
    xchen 0 202.38.64.190 Sun Aug 13 10:01:22 +0800 2000



    另外,可加一些参数,例如,"last -u 102"命令将报告UID为102的用户;"last -t 7"命令表示限制为上一周的报告。 

      进程统计 

      UNIX可以跟踪每个用户运行的每条命令,如果想知道昨晚弄乱了哪些重要的文件,进程统计子系统可以告诉你。它还对跟踪一个侵入者有 帮助。与连接时间日志不同,进程统计子系统默认不激活,它必须启动。在Linux系统中启动进程统计使用accton命令,必须用root身份来运行。 accton命令的形式为:accton file,file必须事先存在。先使用touch命令创建pacct文件:touch /var/log/pacct,然后运行accton:accton /var/log/pacct。一旦accton被激活,就可以使用lastcomm命令监测系统中任何时候执行的命令。若要关闭统计,可以使用不带任何 参数的accton命令。 

      lastcomm命令报告以前执行的文件。不带参数时,lastcomm命令显示当前统计文件生命周期内记录的所有命令的有关信息。包括命令名、用户、tty、命令花费的CPU时间和一个时间戳。如果系统有许多用户,输入则可能很长。看下面的例子: 



      
    crond F root ?? 0.00 secs Sun Aug 20 00:16
    promisc_check.s S root ?? 0.04 secs Sun Aug 20 00:16
    promisc_check root ?? 0.01 secs Sun Aug 20 00:16
    grep root ?? 0.02 secs Sun Aug 20 00:16
    tail root ?? 0.01 secs Sun Aug 20 00:16
    sh root ?? 0.01 secs Sun Aug 20 00:15
    ping S root ?? 0.01 secs Sun Aug 20 00:15
    ping6.pl F root ?? 0.01 secs Sun Aug 20 00:15
    sh root ?? 0.01 secs Sun Aug 20 00:15
    ping S root ?? 0.02 secs Sun Aug 20 00:15
    ping6.pl F root ?? 0.02 secs Sun Aug 20 00:15
    sh root ?? 0.02 secs Sun Aug 20 00:15
    ping S root ?? 0.00 secs Sun Aug 20 00:15
    ping6.pl F root ?? 0.01 secs Sun Aug 20 00:15
    sh root ?? 0.01 secs Sun Aug 20 00:15
    ping S root ?? 0.01 secs Sun Aug 20 00:15
    sh root ?? 0.02 secs Sun Aug 20 00:15
    ping S root ?? 1.34 secs Sun Aug 20 00:15
    locate root ttyp0 1.34 secs Sun Aug 20 00:15
    accton S root ttyp0 0.00 secs Sun Aug 20 00:15



      进程统计的一个问题是pacct文件可能增长得十分迅速。这时需要交互式地或经过cron机制运行sa命令来保证日志数据在系统控制 内。sa命令报告、清理并维护进程统计文件。它能把/var/log/pacct中的信息压缩到摘要文件/var/log/savacct和 /var/log/usracct中。这些摘要包含按命令名和用户名分类的系统统计数据。在默认情况下sa先读它们,然后读pacct文件,使报告能包含 所有的可用信息。sa的输出有下面一些标记项。


    avio:每次执行的平均I/O操作次数。 

    cp:用户和系统时间总和,以分钟计。 

    cpu:和cp一样。 

    k:内核使用的平均CPU时间,以1k为单位。 

    k*sec:CPU存储完整性,以1k-core秒为单位。 

    re:实时时间,以分钟计。 

    s:系统时间,以分钟计。 

    tio:I/O操作的总数。 

    u:用户时间,以分钟计。 

    例如:


      
    842 173.26re 4.30cp 0avio 358k
    2 10.98re 4.06cp 0avio 299k find
    9 24.80re 0.05cp 0avio 291k ***other
    105 30.44re 0.03cp 0avio 302k ping
    104 30.55re 0.03cp 0avio 394k sh
    162 0.11re 0.03cp 0avio 413k security.sh*
    154 0.03re 0.02cp 0avio 273k ls
    56 31.61re 0.02cp 0avio 823k ping6.pl*
    2 3.23re 0.02cp 0avio 822k ping6.pl
    35 0.02re 0.01cp 0avio 257k md5sum
    97 0.02re 0.01cp 0avio 263k initlog
    12 0.19re 0.01cp 0avio 399k promisc_check.s
    15 0.09re 0.00cp 0avio 288k grep
    11 0.08re 0.00cp 0avio 332k awk



    用户还可以根据用户而不是命令来提供一个摘要报告。例如,键入命令"sa -m",将显示如下内容: 

      
    885 173.28re 4.31cp 0avk
    root 879 173.23re 4.31cp 0avk
    alias 3 0.05re 0.00cp 0avk
    qmailp 3 0.01re 0.00cp 0avk







      syslog设备 

      syslog已被许多日志函数采纳,它用在许多保护措施中。任何程序都可以通过syslog 记录事件。syslog可以记录系统事件,可以写到一个文件或设备中,或给用户发送一个信息。它能记录本地事件或通过网络记录另一个主机上的事件。 

      syslog设备依据两个重要的文件:/etc/syslogd(守护进程)和/etc/syslog.conf配置文件。习惯上, 多数syslog信息被写到/var/adm或/var/log目录下的信息文件中(messages.*)。一个典型的syslog记录包括生成程序的 名字和一个文本信息。它还包括一个设备和一个优先级范围(但不在日志中出现)。 

    每个syslog消息被赋予下面的主要设备之一: 

      
    LOG_AUTH:认证系统login、su、getty等。
    LOG_AUTHPRIV:同LOG_AUTH,但只登录到所选择的单个用户可读的文件中。
    LOG_CRON:cron守护进程。
    LOG_DAEMON:其他系统守护进程,如routed。
    LOG_FTP:文件传输协议ftpd、tftpd。
    LOG_KERN:内核产生的消息。
    LOG_LPR:系统打印机缓冲池lpr、lpd。
    LOG_MAIL:电子邮件系统。
    LOG_NEWS:网络新闻系统。
    LOG_SYSLOG:由syslogd(8)产生的内部消息。
    LOG_USER:随机用户进程产生的消息。
    LOG_UUCP:UUCP子系统。
    LOG_LOCAL0~LOG_LOCAL7:为本地使用保留。
    syslog为每个事件赋予几个不同的优先级:
    LOG_EMERG:紧急情况。
    LOG_ALERT:应该被立即改正的问题,如系统数据库被破坏。
    LOG_CRIT:重要情况,如硬盘错误。
    LOG_ERR:错误。
    LOG_WARNING:警告信息。
    LOG_NOTICE:不是错误情况,但是可能需要处理。
    LOG_INFO:情报信息。
    LOG_DEBUG:包含情报的信息,通常只在调试一个程序时使用。



      syslog.conf文件指明syslogd程序记录日志的行为,该程序在启动时查询配置文件。该文件由不同程序或消息分类的单个 条目组成,每个占一行。对每类消息提供一个选择域和一个动作域。这些域由tab符隔开:选择域指明消息的类型和优先级;动作域指明syslogd接收到一 个与选择标准相匹配的消息时所执行的动作。每个选项是由设备和优先级组成的。当指明一个优先级时,syslogd将记录一个拥有相同或更高优先级的消息。 所以如果指明"crit",那所有标为crit、alert和emerg的消息将被记录。每行的行动域指明当选择域选择了一个给定消息后应该把它发送到哪 儿。例如,如果想把所有邮件消息记录到一个文件中,如下所示: 



     
    #Log all the mail messages in one place

    mail.* /var/log/maillog






      其他设备也有自己的日志。UUCP和news设备能产生许多外部消息。它把这些消息存到自己的日志(/var/log/spooler)中并把级别限为"err"或更高。例如: 


     
    # Save mail and news errors of level err and higher in aspecial file.
    uucp,news.crit /var/log/spooler



      当一个紧急消息到来时,可能想让所有的用户都得到,也可能想让自己的日志接收并保存:




     
    #Everybody gets emergency messages, plus log them on anther machine
    *.emerg *
    *.emerg @linuxaid.com.cn





      alert消息应该写到root和tiger的个人账号中: 

     
    #Root and Tiger get alert and higher messages
    *.alert root,tiger



      有时syslogd将产生大量的消息。例如,内核("kernel"设备)可能很冗长。用户可能想把内核消息记录到/dev/console中。下面的例子表明内核日志记录被注释掉了: 

     
    #Log all kernel messages to the console
    #Logging much else clutters up the screen
    #kern.* /dev/console



      用户可以在一行中指明所有的设备。下面的例子把info或更高级别的消息送到/var/log/messages,除了mail以外。级别"none"禁止一个设备: 

     
    #Log anything(except mail)of level info or higher
    #Don't log private authentication messages!
    *.info:mail.none;authpriv.none /var/log/messages



      在有些情况下,可以把日志送到打印机,这样网络入侵者怎么修改日志就都没有用了。通常要广泛记录日志。syslog设备是一个攻击者的显著目标。一个为其他主机维护日志的系统对于防范服务器攻击特别脆弱,因此要特别注意。 

    有个小命令logger为syslog(3)系统日志文件提供一个shell命令接口,使用户能创建日志文件中的条目。


      用法:logger  

      例如:logger This is a test! 

      它将产生一个如下的syslog记录:Aug 19 22:22:34 tiger: This is a test! 

      注意,不要完全相信日志,因为攻击者很容易修改它的。 

      程序日志与其他 

      许多程序通过维护日志来反映系统的安全状态。su命令允许用户获得另一个用户的权限,所以它的安全很重要,它的日志文件为 sulog。同样的还有sudolog。另外,像Apache有两个日志:access_log和error_log。还有一些常用到的其他日志工具,我 们就不一一阐述了,有兴趣的读者可以参考下边网址的内容。 

    Chklastlog: 

    ftp://coast.cs.purdue.edu/pub/tools/unix/chklastlog/ 

    chkwtmp: 

    ftp://coast.cs.purdue.edu/pub/tools/unix/chkwtmp/ 

    dump_lastlog: 

    ftp://coast.cs.purdue.edu/pub/tools/unix/dump_lastlog.Z 

    spar: 

    ftp://coast.cs.purdue.edu/pub/tools/unix/TAMU/ 

    Swatch: 

    http://www.lomar.org/komar/alek/pres/swatch/cover.html 

    Zap: 

    ftp://caost.cs.purdue.edu/pub/tools/unix/zap.tar.gz 

    日志分类方法: 

    http://csrc.nist.gov/nissc/1998/proceedings/paperD1.pdf



    配置Linux日志文件: 日志也应该是用户注意的地方。不要低估日志文件对网络安全的重要作用,因为日志文件能够详细记录系统每天发生的各种各样的事件,用户可以通过日志文件检查 错误产生的原因,或者在受到攻击、被入侵时追踪攻击者的踪迹。日志的两个比较重要的作用是审核和监测。配置好的Linux的日志非常强大。对于Linux 系统而言,所有的日志文件在/var/log下。默认情况下,Linux的日志文件已经足够强大,但没有记录FTP的活动。用户可以通过修改 /etc/ftpacess让系统记录FTP的一切活动。

    /etc/syslog.conf的格式 

      Linux系统的日志文件是可以配置的,在前面的章节中已经介绍了如何定制Apache、wu-ftpd、Sendmail的日志文 件。Linux系统的日志文件是由/etc/syslog.conf决定的,用户有必要花时间仔细配置一下/etc/syslog.conf。下面是 /etc/syslog.conf的范例: 

    # Log all kernel messages to the kernlog.
    # Logging much else clutters up the screen.
    kern.* /var/log/kernlog

    # Log anything (except mail) of level info or higher.
    # Don't log private authentication messages!
    *.info;mail.none;news.none;authpriv.none;cron.none
    /var/log/messages
    *.warning /var/log/syslog
    # 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, plus log them on another
    # machine.
    *.emerg
    # Save mail and news errors of level err and higher in a
    # special file.
    uucp,news.crit /var/log/spooler

    # Save boot messages also to boot.log
    local7.* /var/log/boot.log

    # INN
    news.=crit /var/log/news/news.crit
    news.=err /var/log/news/news.err
    news.notice /var/log/news/news.notice


      可以看出,该配置文件的每一行的第一个字段列出要被记录的信息种类,第二个字段则列出被记录的位置。第一个字段使用下面的格式:facility.level[;facility.level…] 

      此处的faciity是产生信息的系统应用程序或工具,level则是这个信息的重要程度。level的重要程度由低到高依次是: debug(调试消息)、info(一般消息)、notice(值得注意的消息)、warning(警告)、err(一般性错误)、crit(严重错 误)、alert(或emerg,紧急情况)。facility包含有:auth(认证系统,如login或su,即询问用户名和口令)、cron(系统 执行定时任务时发出的信息)、daemon(某些系统的守护程序的syslog,如由in.ftpd产生的log)、kern(内核的信息)、lpr(打 印机的信息)、mail(处理邮件的守护进程发出的信息)、mark(定时发送消息的时标程序)、news(新闻组的守护进程的信息)、user(本地用 户的应用程序的信息)、uucp(uucp子系统的信息)和“*”(表示所有可能的facility)。 

      将日志文件记录到远程主机 

      如果有另一个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(这也是RedHat Linux默认的设置)。如果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



    管理Linux日志文件工具:logrotate简介: 如果服务器有大量的用户的话,这些日志文件的大小会很快地增加,在服务器硬盘不是非常充足的情况下,必须采取措施防止日志文件将硬盘撑爆。现代的 Linux版本都有一个小程序,名为logrotate,用来帮助用户管理日志文件,它以自己的守护进程工作。logrotate周期性地旋转日志文件, 可以周期性地把每个日志文件重命名成一个备份名字,然后让它的守护进程开始使用一个日志文件的新的拷贝。这就是为什么在/var/log/下看到许多诸如 maillog、maillog.1、maillog.2、boot.log.1、boot.log.2之类的文件名。它由一个配置文件驱动,该文件是 /etc/logroatate.conf

    下面是它的一个范例: 

    # see "man logrotate" for details
    # rotate log files weekly
    weekly
    #以7天为一个周期
    # keep 4 weeks worth of backlogs
    rotate 4
    #每隔4周备份日志文件
    # send errors to root
    errors root
    #发生错误向root报告
    # create new (empty) log files after rotating old ones
    create
    #转完旧的日志文件就创建新的日志文件
    # uncomment this if you want your log files compressed
    #compress
    #指定是否压缩日志文件
    # RPM packages drop log rotation information into this directory
    include /etc/logrotate.d

    # no packages own lastlog or wtmp -- we'll rotate them here
    /var/log/wtmp {
    monthly
    create 0664 root utmp
    rotate 1
    }

    # system-specific logs may be configured here



    Linux下常用日志分析工具:Logcheck简介: 对于拥有大量账户、系统繁忙的Linux系统而言,其日志文件是极其庞大的,很多没有用的信息会将值得注意的信息淹没,给用户分析日志带来了很大的不便。 现在有一些专门用于分析日志的工具,如Logcheck和Friends。Logcheck用来分析庞大的日志文件,过滤出有潜在安全风险或其他不正常情 况的日志项目,然后以电子邮件的形式通知指定的用户。它是由Psionic开发的(T113)

    可以到http://www.psionic.com/tools/logcheck-1.1.1.tar.gz下载。或者去http://www.psionic.com/abacus /logcheck/看看是否有新的版本。 

      该程序的安装相当方便。解压后运行make文件,按照它的提示选择操作系统的类型以后就能编译完成了。配置文件和运行脚本默认安装在/usr/local/etc/下。 

      logcheck.sh 

      这是Logcheck的shell脚本,用于分析本次的日志文件并汇报结果。 

      logcheck.hacking 

      这个文件设置在日志文件中过滤的关键字,该关键字提示了潜在安全风险的信息。用户可以定制自己的日志文件,在logcheck.hacking文件中增加或删除关键字。 

      logcheck.violations 

      这个文件设置在日志文件分析过滤系统运行时出现异常情况的关键字。 

      logcheck.violations.ignore 

      如果系统出现异常情况,但含有此文件中的关键字,则视为正常,不写入Logcheck的分析报告文件中。 

      logcheck.ignore 

      如果系统日志文件记录了可能遭遇攻击的消息,但含有logcheck.ignore文件中的关键字,则Logcheck视为正常,在分析报告文件中不包含这些消息。 

      安装完Logcheck后,还要修改logcheck.sh文件中的参数以符合用户的要求。有两点值得注意。下列命令: 

    # Person to send log activity to.
    SYSADMIN=root


      Logcheck默认将报告发给root。如果要发给指定的电子邮箱,改动这里就可以了。如果希望将报告发给多个用户,可以定义mail的别名。要检查的日志文件的设置: 

    # Linux
    $LOGTAIL /var/log/syslog > $TMPDIR/check.$$
    $LOGTAIL /var/log/messages >> $TMPDIR/check.$$

    用户可以根据需要加上要检查的日志文件,例如:
    $LOGTAIL /var/log/auth.log >> $TMPDIR/check.$$
    $LOGTAIL /var/log/deamon.log >> $TMPDIR/check.$$
    $LOGTAIL /var/log/mail.log >> $TMPDIR/check.$$


      最后用cron安排服务器自动定时重复执行logcheck.sh脚本文件。
    Linux日志分析的实战专题
    作者:刘志勇 郭聪辉 发文时间:2004.11.23
    日志也是用户应该注意的地方之一。不要低估日志文件对网络安全的重要作用,因为日志文件能够详细记录系统每天发生的各种各样的事件。用户可以通过日志文件 检查错误产生的原因,或者在受到攻击和黑客入侵时追踪攻击者的踪迹。日志的两个比较重要的作用是:审核和监测。配置好的Linux的日志非常强大。对于 Linux系统而言,所有的日志文件都在/var/log下。默认情况下,Linux的日志文件已经足够强大,但没有记录FTP的活动。用户可以通过修改 /etc/ftpacess让系统记录FTP的一切活动。

    Linux日志系统简介: 日志对于系统的安全来说非常重要,它记录了系统每天发生的各种各样的事情,用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。日 志主要的功能是审计和监测。它还可以实时地监测系统状态,监测和追踪侵入者。Linux系统一般有3个主要的日志子系统:连接时间日志、进程统计日志和错 误日志。


      Linux日志系统 

      日志对于系统的安全来说非常重要,它记录了系统每天发生的各种各样的事情,用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。日志主要的功能是审计和监测。它还可以实时地监测系统状态,监测和追踪侵入者。 

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

      连接时间日志 

      连接时间日志由多个程序执行,把记录写入到/var/log/wtmp和/var/run/utmp。login等程序更新wtmp和utmp文件,使系统管理员能够跟踪谁在何时登录到系统。 

      进程统计日志 

      进程统计日志由系统内核执行。当一个进程终止时,为每个进程往进程统计文件(pacct或acct)中写一个记录。进程统计的目的是为系统中的基本服务提供命令使用统计。 

      错误日志 

      错误日志由syslogd(8)执行。各种系统守护进程、用户程序和内核通过syslog(3)向文件/var/log/messages报告值得注意的事件。另外还有许多UNIX类程序创建日志,像HTTP和FTP这样提供网络服务的服务器也有详细的日志。 





    Redhat Linux 常见的日志文件和常用命令:成功地管理任何系统的关键之一,是要知道系统中正在发生什么事。Linux 中提供了异常日志,并且日志的细节是可配置的。Linux 日志都以明文形式存储,所以用户不需要特殊的工具就可以搜索和阅读它们。还可以编写脚本,来扫描这些日志,并基于它们的内容去自动执行某些功能。 Linux 日志存储在 /var/log 目录中。这里有几个由系统维护的日志文件,但其他服务和程序也可能会把它们的日志放在这里。大多数日志只有root账户才可以读,不过修改文件的访问权限 就可以让其他人可读。

    成功地管理任何系统的关键之一,是要知道系统中正在 发生什么事。Linux 中提供了异常日志,并且日志的细节是可配置的。Linux 日志都以明文形式存储,所以用户不需要特殊的工具就可以搜索和阅读它们。还可以编写脚本,来扫描这些日志,并基于它们的内容去自动执行某些功能。 Linux 日志存储在 /var/log 目录中。这里有几个由系统维护的日志文件,但其他服务和程序也可能会把它们的日志放在这里。大多数日志只有root账户才可以读,不过修改文件的访问权限 就可以让其他人可读。

      RedHat Linux常用的日志文件

      RedHat Linux常见的日志文件详述如下
      /var/log/boot.log
      该文件记录了系统在引导过程中发生的事件,就是Linux系统开机自检过程显示的信息。

      /var/log/cron
      该日志文件记录crontab守护进程crond所派生的子进程的动作,前面加上用户、登录时间和PID,以及派生出的进程的动作。CMD的一个动作 是cron派生出一个调度进程的常见情况。REPLACE(替换)动作记录用户对它的cron文件的更新,该文件列出了要周期性执行的任务调度。 RELOAD动作在REPLACE动作后不久发生,这意味着cron注意到一个用户的cron文件被更新而cron需要把它重新装入内存。该文件可能会查 到一些反常的情况。

      /var/log/maillog
      该日志文件记录了每一个发送到系统或从系统发出的电子邮件的活动。它可以用来查看用户使用哪个系统发送工具或把数据发送到哪个系统。下面是该日志文件的片段:

      
    Sep 4 17:23:52 UNIX sendmail[1950]: g849Npp01950: from=root, size=25,
    class=0, nrcpts=1,
    msgid=<200209040923.g849Npp01950@redhat.pfcc.com.cn>,
    relay=root@localhost
    Sep 4 17:23:55 UNIX sendmail[1950]: g849Npp01950: to=lzy@fcceec.net,
    ctladdr=root (0/0), delay=00:00:04, xdelay=00:00:03, mailer=esmtp, pri=30025,
    relay=fcceec.net. [10.152.8.2], dsn=2.0.0, stat=Sent (Message queued)
    /var/log/messages



      该日志文件是许多进程日志文件的汇总,从该文件可以看出任何入侵企图或成功的入侵。如以下几行:


      
    Sep 3 08:30:17 UNIX login[1275]: FAILED LOGIN 2 FROM (null) FOR suying,
    Authentication failure
    Sep 4 17:40:28 UNIX -- suying[2017]: LOGIN ON pts/1 BY suying FROM
    fcceec.www.ec8.pfcc.com.cn
    Sep 4 17:40:39 UNIX su(pam_unix)[2048]: session opened for user root by suying(uid=999)



      该文件的格式是每一行包含日期、主机名、程序名,后面是包含PID或内核标识的方括号、一个冒号和一个空格,最后是消息。该文件有一个不足,就是被记 录的入侵企图和成功的入侵事件,被淹没在大量的正常进程的记录中。但该文件可以由/etc/syslog文件进行定制。由 /etc/syslog.conf配置文件决定系统如何写入/var/messages。有关如何配置/etc/syslog.conf文件决定系统日志 记录的行为,将在后面详细叙述。

      /var/log/syslog
      默认RedHat Linux不生成该日志文件,但可以配置/etc/syslog.conf让系统生成该日志文件。它和/etc/log/messages日志文件不同, 它只记录警告信息,常常是系统出问题的信息,所以更应该关注该文件。要让系统生成该日志文件,在/etc/syslog.conf文件中加上: *.warning /var/log/syslog   该日志文件能记录当用户登录时login记录下的错误口令、Sendmail的问题、su命令执行失败等信息。下面是一条记录:

      
    Sep 6 16:47:52 UNIX login(pam_unix)[2384]: check pass; user unknown
    /var/log/secure
    该日志文件记录与安全相关的信息。该日志文件的部分内容如下:
    Sep 4 16:05:09 UNIX xinetd[711]: START: ftp pid=1815 from=127.0.0.1
    Sep 4 16:05:09 UNIX xinetd[1815]: USERID: ftp OTHER :root
    Sep 4 16:07:24 UNIX xinetd[711]: EXIT: ftp pid=1815 duration=135(sec)
    Sep 4 16:10:05 UNIX xinetd[711]: START: ftp pid=1846 from=127.0.0.1
    Sep 4 16:10:05 UNIX xinetd[1846]: USERID: ftp OTHER :root
    Sep 4 16:16:26 UNIX xinetd[711]: EXIT: ftp pid=1846 duration=381(sec)
    Sep 4 17:40:20 UNIX xinetd[711]: START: telnet pid=2016 from=10.152.8.2
    /var/log/lastlog


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



    Username Port From Latest
    root tty2 Tue Sep 3 08:32:27 +0800 2002
    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**
    news **Never logged in**
    uucp **Never logged in**
    operator **Never logged in**
    games **Never logged in**
    gopher **Never logged in**
    ftp ftp UNIX Tue Sep 3 14:49:04 +0800 2002
    nobody **Never logged in**
    nscd **Never logged in**
    mailnull **Never logged in**
    ident **Never logged in**
    rpc **Never logged in**
    rpcuser **Never logged in**
    xfs **Never logged in**
    gdm **Never logged in**
    postgres **Never logged in**
    apache **Never logged in**
    lzy tty2 Mon Jul 15 08:50:37 +0800 2002
    suying tty2 Tue Sep 3 08:31:17 +0800 2002



      系统账户诸如bin、daemon、adm、uucp、mail等决不应该登录,如果发现这些账户已经登录,就说明系统可能已经被入侵了。若发现记录的时间不是用户上次登录的时间,则说明该用户的账户已经泄密了。 

      /var/log/wtmp 

      该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件。因此随着系统正常运行时间的增加,该文件的大小也会越来越大,增加 的速度取决于系统用户登录的次数。该日志文件可以用来查看用户的登录记录,last命令就通过访问这个文件获得这些信息,并以反序从后向前显示用户的登录 记录,last也能根据用户、终端 tty或时间显示相应的记录。 

      命令last有两个可选参数: 

      last -u 用户名 显示用户上次登录的情况。 

      last -t 天数 显示指定天数之前的用户登录情况。 

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

      /var/log/xferlog 

      该日志文件记录FTP会话,可以显示出用户向FTP服务器或从服务器拷贝了什么文件。该文件会显示用户拷贝到服务器上的用来入侵服务器的恶意程序,以及该用户拷贝了哪些文件供他使用。 

      该文件的格式为:第一个域是日期和时间,第二个域是下载文件所花费的秒数、远程系统名称、文件大小、本地路径名、传输类型(a: ASCII,b:二进制)、与压缩相关的标志或tar,或"_"(如果没有压缩的话)、传输方向(相对于服务器而言:i代表进,o代表出)、访问模式 (a:匿名,g:输入口令,r:真实用户)、用户名、服务名(通常是ftp)、认证方法(l:RFC931,或0),认证用户的ID或"*"。下面是该文 件的一条记录: 

     
    Wed Sep 4 08:14:03 2002 1 UNIX 275531
    /var/ftp/lib/libnss_files-2.2.2.so b _ o a -root@UNIX ftp 0 * c
    /var/log/kernlog



       RedHat Linux默认没有记录该日志文件。要启用该日志文件,必须在/etc/syslog.conf文件中添加一行:kern.* /var/log/kernlog 。这样就启用了向/var/log/kernlog文件中记录所有内核消息的功能。该文件记录了系统启动时加载设备或使用设备的情况。一般是正常的操作, 但如果记录了没有授权的用户进行的这些操作,就要注意,因为有可能这就是恶意用户的行为。下面是该文件的部分内容: 

      
    Sep 5 09:38:42 UNIX kernel: NET4: Linux TCP/IP 1.0 for NET4.0
    Sep 5 09:38:42 UNIX kernel: IP Protocols: ICMP, UDP, TCP, IGMP
    Sep 5 09:38:42 UNIX kernel: IP: routing cache hash table of 512 buckets, 4Kbytes
    Sep 5 09:38:43 UNIX kernel: TCP: Hash tables configured (established 4096 bind 4096)
    Sep 5 09:38:43 UNIX kernel: Linux IP multicast router 0.06 plus PIM-SM
    Sep 5 09:38:43 UNIX kernel: NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
    Sep 5 09:38:44 UNIX kernel: EXT2-fs warning: checktime reached, running e2fsck is recommended
    Sep 5 09:38:44 UNIX kernel: VFS: Mounted root (ext2 filesystem).
    Sep 5 09:38:44 UNIX kernel: SCSI subsystem driver Revision: 1.00
    /var/log/Xfree86.x.log



      该日志文件记录了X-Window启动的情况。另外,除了/var/log/外,恶意用户也可能在别的地方留下痕迹,应该注意以下几 个地方:root和其他账户的shell历史文件;用户的各种邮箱,如.sent、mbox,以及存放在/var/spool/mail/ 和 /var/spool/mqueue中的邮箱;临时文件/tmp、/usr/tmp、/var/tmp;隐藏的目录;其他恶意用户创建的文件,通常是以 "."开头的具有隐藏属性的文件等。 

      具体命令 

      wtmp和utmp文件都是二进制文件,它们不能被诸如tail之类的命令剪贴或合并(使用cat命令)。用户需要使用who、w、users、last和ac等命令来使用这两个文件包含的信息。 

      who命令 

      who命令查询utmp文件并报告当前登录的每个用户。who的默认输出包括用户名、终端类型、登录日期及远程主机。例如,键入who命令,然后按回车键,将显示如下内容: 




    chyang pts/0 Aug 18 15:06
    ynguo pts/2 Aug 18 15:32
    ynguo pts/3 Aug 18 13:55
    lewis pts/4 Aug 18 13:35
    ynguo pts/7 Aug 18 14:12
    ylou pts/8 Aug 18 14:15



      如果指明了wtmp文件名,则who命令查询所有以前的记录。命令who /var/log/wtmp将报告自从wtmp文件创建或删改以来的每一次登录。 

      w命令 

      w命令查询utmp文件并显示当前系统中每个用户和它所运行的进程信息。例如,键入w命令,然后按回车键,将显示如下内容:




      
    3:36pm up 1 day, 22:34, 6 users, load average: 0.23, 0.29, 0.27
    USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
    chyang pts/0 202.38.68.242 3:06pm 2:04 0.08s 0.04s -bash
    ynguo pts/2 202.38.79.47 3:32pm 0.00s 0.14s 0.05 w
    lewis pts/3 202.38.64.233 1:55pm 30:39 0.27s 0.22s -bash
    lewis pts/4 202.38.64.233 1:35pm 6.00s 4.03s 0.01s sh /home/users/
    ynguo pts/7 simba.nic.ustc.e 2:12pm 0.00s 0.47s 0.24s telnet mail
    ylou pts/8 202.38.64.235 2:15pm 1:09m 0.10s 0.04s -bash



      users命令 

      users命令用单独的一行打印出当前登录的用户,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示相同的次数。例如,键入users命令,然后按回车键,将显示如下内容: 

      chyang lewis lewis ylou ynguo ynguo 

      last命令 

      last命令往回搜索wtmp来显示自从文件第一次创建以来登录过的用户。例如: 

      
    chyang pts/9 202.38.68.242 Tue Aug 1 08:34 - 11:23 (02:49)
    cfan pts/6 202.38.64.224 Tue Aug 1 08:33 - 08:48 (00:14)
    chyang pts/4 202.38.68.242 Tue Aug 1 08:32 - 12:13 (03:40)
    lewis pts/3 202.38.64.233 Tue Aug 1 08:06 - 11:09 (03:03)
    lewis pts/2 202.38.64.233 Tue Aug 1 07:56 - 11:09 (03:12)



      如果指明了用户,那么last只报告该用户的近期活动,例如,键入last ynguo命令,然后按回车键,将显示如下内容: 

      
    ynguo pts/4 simba.nic.ustc.e Fri Aug 4 16:50 - 08:20 (15:30)
    ynguo pts/4 simba.nic.ustc.e Thu Aug 3 23:55 - 04:40 (04:44)
    ynguo pts/11 simba.nic.ustc.e Thu Aug 3 20:45 - 22:02 (01:16)
    ynguo pts/0 simba.nic.ustc.e Thu Aug 3 03:17 - 05:42 (02:25)
    ynguo pts/0 simba.nic.ustc.e Wed Aug 2 01:04 - 03:16 1+02:12)
    ynguo pts/0 simba.nic.ustc.e Wed Aug 2 00:43 - 00:54 (00:11)
    ynguo pts/9 simba.nic.ustc.e Thu Aug 1 20:30 - 21:26 (00:55)



      ac命令 

      ac命令根据当前的/var/log/wtmp文件中的登录进入和退出来报告用户连接的时间(小时),如果不使用标志,则报告总的时间。例如,键入ac命令,然后按回车键,将显示如下内容: 

      total 5177.47 

    键入ac -d命令,然后按回车键,将显示每天的总的连接时间: 

      
    Aug 12 total 261.87
    Aug 13 total 351.39
    Aug 14 total 396.09
    Aug 15 total 462.63
    Aug 16 total 270.45
    Aug 17 total 104.29
    Today total 179.02



      键入ac -p命令,然后按回车键,将显示每个用户的总的连接时间: 

      
    ynguo 193.23
    yucao 3.35
    rong 133.40
    hdai 10.52
    zjzhu 52.87
    zqzhou 13.14
    liangliu 24.34
    total 5178.24



      lastlog命令 

      lastlog文件在每次有用户登录时被查询。可以使用lastlog命令检查某特定用户上次登录的时间,并格式化输出上次登录日志 /var/log/lastlog的内容。它根据UID排序显示登录名、端口号(tty)和上次登录时间。如果一个用户从未登录过,lastlog显示 **Never logged**。注意需要以root身份运行该命令,例如: 

      
    rong 5 202.38.64.187 Fri Aug 18 15:57:01 +0800 2000
    dbb **Never logged in**
    xinchen **Never logged in**
    pb9511 **Never logged in**
    xchen 0 202.38.64.190 Sun Aug 13 10:01:22 +0800 2000



    另外,可加一些参数,例如,"last -u 102"命令将报告UID为102的用户;"last -t 7"命令表示限制为上一周的报告。 

      进程统计 

      UNIX可以跟踪每个用户运行的每条命令,如果想知道昨晚弄乱了哪些重要的文件,进程统计子系统可以告诉你。它还对跟踪一个侵入者有 帮助。与连接时间日志不同,进程统计子系统默认不激活,它必须启动。在Linux系统中启动进程统计使用accton命令,必须用root身份来运行。 accton命令的形式为:accton file,file必须事先存在。先使用touch命令创建pacct文件:touch /var/log/pacct,然后运行accton:accton /var/log/pacct。一旦accton被激活,就可以使用lastcomm命令监测系统中任何时候执行的命令。若要关闭统计,可以使用不带任何 参数的accton命令。 

      lastcomm命令报告以前执行的文件。不带参数时,lastcomm命令显示当前统计文件生命周期内记录的所有命令的有关信息。包括命令名、用户、tty、命令花费的CPU时间和一个时间戳。如果系统有许多用户,输入则可能很长。看下面的例子: 



      
    crond F root ?? 0.00 secs Sun Aug 20 00:16
    promisc_check.s S root ?? 0.04 secs Sun Aug 20 00:16
    promisc_check root ?? 0.01 secs Sun Aug 20 00:16
    grep root ?? 0.02 secs Sun Aug 20 00:16
    tail root ?? 0.01 secs Sun Aug 20 00:16
    sh root ?? 0.01 secs Sun Aug 20 00:15
    ping S root ?? 0.01 secs Sun Aug 20 00:15
    ping6.pl F root ?? 0.01 secs Sun Aug 20 00:15
    sh root ?? 0.01 secs Sun Aug 20 00:15
    ping S root ?? 0.02 secs Sun Aug 20 00:15
    ping6.pl F root ?? 0.02 secs Sun Aug 20 00:15
    sh root ?? 0.02 secs Sun Aug 20 00:15
    ping S root ?? 0.00 secs Sun Aug 20 00:15
    ping6.pl F root ?? 0.01 secs Sun Aug 20 00:15
    sh root ?? 0.01 secs Sun Aug 20 00:15
    ping S root ?? 0.01 secs Sun Aug 20 00:15
    sh root ?? 0.02 secs Sun Aug 20 00:15
    ping S root ?? 1.34 secs Sun Aug 20 00:15
    locate root ttyp0 1.34 secs Sun Aug 20 00:15
    accton S root ttyp0 0.00 secs Sun Aug 20 00:15



      进程统计的一个问题是pacct文件可能增长得十分迅速。这时需要交互式地或经过cron机制运行sa命令来保证日志数据在系统控制 内。sa命令报告、清理并维护进程统计文件。它能把/var/log/pacct中的信息压缩到摘要文件/var/log/savacct和 /var/log/usracct中。这些摘要包含按命令名和用户名分类的系统统计数据。在默认情况下sa先读它们,然后读pacct文件,使报告能包含 所有的可用信息。sa的输出有下面一些标记项。


    avio:每次执行的平均I/O操作次数。 

    cp:用户和系统时间总和,以分钟计。 

    cpu:和cp一样。 

    k:内核使用的平均CPU时间,以1k为单位。 

    k*sec:CPU存储完整性,以1k-core秒为单位。 

    re:实时时间,以分钟计。 

    s:系统时间,以分钟计。 

    tio:I/O操作的总数。 

    u:用户时间,以分钟计。 

    例如:


      
    842 173.26re 4.30cp 0avio 358k
    2 10.98re 4.06cp 0avio 299k find
    9 24.80re 0.05cp 0avio 291k ***other
    105 30.44re 0.03cp 0avio 302k ping
    104 30.55re 0.03cp 0avio 394k sh
    162 0.11re 0.03cp 0avio 413k security.sh*
    154 0.03re 0.02cp 0avio 273k ls
    56 31.61re 0.02cp 0avio 823k ping6.pl*
    2 3.23re 0.02cp 0avio 822k ping6.pl
    35 0.02re 0.01cp 0avio 257k md5sum
    97 0.02re 0.01cp 0avio 263k initlog
    12 0.19re 0.01cp 0avio 399k promisc_check.s
    15 0.09re 0.00cp 0avio 288k grep
    11 0.08re 0.00cp 0avio 332k awk



    用户还可以根据用户而不是命令来提供一个摘要报告。例如,键入命令"sa -m",将显示如下内容: 

      
    885 173.28re 4.31cp 0avk
    root 879 173.23re 4.31cp 0avk
    alias 3 0.05re 0.00cp 0avk
    qmailp 3 0.01re 0.00cp 0avk







      syslog设备 

      syslog已被许多日志函数采纳,它用在许多保护措施中。任何程序都可以通过syslog 记录事件。syslog可以记录系统事件,可以写到一个文件或设备中,或给用户发送一个信息。它能记录本地事件或通过网络记录另一个主机上的事件。 

      syslog设备依据两个重要的文件:/etc/syslogd(守护进程)和/etc/syslog.conf配置文件。习惯上, 多数syslog信息被写到/var/adm或/var/log目录下的信息文件中(messages.*)。一个典型的syslog记录包括生成程序的 名字和一个文本信息。它还包括一个设备和一个优先级范围(但不在日志中出现)。 

    每个syslog消息被赋予下面的主要设备之一: 

      
    LOG_AUTH:认证系统login、su、getty等。
    LOG_AUTHPRIV:同LOG_AUTH,但只登录到所选择的单个用户可读的文件中。
    LOG_CRON:cron守护进程。
    LOG_DAEMON:其他系统守护进程,如routed。
    LOG_FTP:文件传输协议ftpd、tftpd。
    LOG_KERN:内核产生的消息。
    LOG_LPR:系统打印机缓冲池lpr、lpd。
    LOG_MAIL:电子邮件系统。
    LOG_NEWS:网络新闻系统。
    LOG_SYSLOG:由syslogd(8)产生的内部消息。
    LOG_USER:随机用户进程产生的消息。
    LOG_UUCP:UUCP子系统。
    LOG_LOCAL0~LOG_LOCAL7:为本地使用保留。
    syslog为每个事件赋予几个不同的优先级:
    LOG_EMERG:紧急情况。
    LOG_ALERT:应该被立即改正的问题,如系统数据库被破坏。
    LOG_CRIT:重要情况,如硬盘错误。
    LOG_ERR:错误。
    LOG_WARNING:警告信息。
    LOG_NOTICE:不是错误情况,但是可能需要处理。
    LOG_INFO:情报信息。
    LOG_DEBUG:包含情报的信息,通常只在调试一个程序时使用。



      syslog.conf文件指明syslogd程序记录日志的行为,该程序在启动时查询配置文件。该文件由不同程序或消息分类的单个 条目组成,每个占一行。对每类消息提供一个选择域和一个动作域。这些域由tab符隔开:选择域指明消息的类型和优先级;动作域指明syslogd接收到一 个与选择标准相匹配的消息时所执行的动作。每个选项是由设备和优先级组成的。当指明一个优先级时,syslogd将记录一个拥有相同或更高优先级的消息。 所以如果指明"crit",那所有标为crit、alert和emerg的消息将被记录。每行的行动域指明当选择域选择了一个给定消息后应该把它发送到哪 儿。例如,如果想把所有邮件消息记录到一个文件中,如下所示: 



     
    #Log all the mail messages in one place

    mail.* /var/log/maillog






      其他设备也有自己的日志。UUCP和news设备能产生许多外部消息。它把这些消息存到自己的日志(/var/log/spooler)中并把级别限为"err"或更高。例如: 


     
    # Save mail and news errors of level err and higher in aspecial file.
    uucp,news.crit /var/log/spooler



      当一个紧急消息到来时,可能想让所有的用户都得到,也可能想让自己的日志接收并保存:




     
    #Everybody gets emergency messages, plus log them on anther machine
    *.emerg *
    *.emerg @linuxaid.com.cn





      alert消息应该写到root和tiger的个人账号中: 

     
    #Root and Tiger get alert and higher messages
    *.alert root,tiger



      有时syslogd将产生大量的消息。例如,内核("kernel"设备)可能很冗长。用户可能想把内核消息记录到/dev/console中。下面的例子表明内核日志记录被注释掉了: 

     
    #Log all kernel messages to the console
    #Logging much else clutters up the screen
    #kern.* /dev/console



      用户可以在一行中指明所有的设备。下面的例子把info或更高级别的消息送到/var/log/messages,除了mail以外。级别"none"禁止一个设备: 

     
    #Log anything(except mail)of level info or higher
    #Don't log private authentication messages!
    *.info:mail.none;authpriv.none /var/log/messages



      在有些情况下,可以把日志送到打印机,这样网络入侵者怎么修改日志就都没有用了。通常要广泛记录日志。syslog设备是一个攻击者的显著目标。一个为其他主机维护日志的系统对于防范服务器攻击特别脆弱,因此要特别注意。 

    有个小命令logger为syslog(3)系统日志文件提供一个shell命令接口,使用户能创建日志文件中的条目。


      用法:logger  

      例如:logger This is a test! 

      它将产生一个如下的syslog记录:Aug 19 22:22:34 tiger: This is a test! 

      注意,不要完全相信日志,因为攻击者很容易修改它的。 

      程序日志与其他 

      许多程序通过维护日志来反映系统的安全状态。su命令允许用户获得另一个用户的权限,所以它的安全很重要,它的日志文件为 sulog。同样的还有sudolog。另外,像Apache有两个日志:access_log和error_log。还有一些常用到的其他日志工具,我 们就不一一阐述了,有兴趣的读者可以参考下边网址的内容。 

    Chklastlog: 

    ftp://coast.cs.purdue.edu/pub/tools/unix/chklastlog/ 

    chkwtmp: 

    ftp://coast.cs.purdue.edu/pub/tools/unix/chkwtmp/ 

    dump_lastlog: 

    ftp://coast.cs.purdue.edu/pub/tools/unix/dump_lastlog.Z 

    spar: 

    ftp://coast.cs.purdue.edu/pub/tools/unix/TAMU/ 

    Swatch: 

    http://www.lomar.org/komar/alek/pres/swatch/cover.html 

    Zap: 

    ftp://caost.cs.purdue.edu/pub/tools/unix/zap.tar.gz 

    日志分类方法: 

    http://csrc.nist.gov/nissc/1998/proceedings/paperD1.pdf



    配置Linux日志文件: 日志也应该是用户注意的地方。不要低估日志文件对网络安全的重要作用,因为日志文件能够详细记录系统每天发生的各种各样的事件,用户可以通过日志文件检查 错误产生的原因,或者在受到攻击、被入侵时追踪攻击者的踪迹。日志的两个比较重要的作用是审核和监测。配置好的Linux的日志非常强大。对于Linux 系统而言,所有的日志文件在/var/log下。默认情况下,Linux的日志文件已经足够强大,但没有记录FTP的活动。用户可以通过修改 /etc/ftpacess让系统记录FTP的一切活动。

    /etc/syslog.conf的格式 

      Linux系统的日志文件是可以配置的,在前面的章节中已经介绍了如何定制Apache、wu-ftpd、Sendmail的日志文 件。Linux系统的日志文件是由/etc/syslog.conf决定的,用户有必要花时间仔细配置一下/etc/syslog.conf。下面是 /etc/syslog.conf的范例: 

    # Log all kernel messages to the kernlog.
    # Logging much else clutters up the screen.
    kern.* /var/log/kernlog

    # Log anything (except mail) of level info or higher.
    # Don't log private authentication messages!
    *.info;mail.none;news.none;authpriv.none;cron.none
    /var/log/messages
    *.warning /var/log/syslog
    # 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, plus log them on another
    # machine.
    *.emerg
    # Save mail and news errors of level err and higher in a
    # special file.
    uucp,news.crit /var/log/spooler

    # Save boot messages also to boot.log
    local7.* /var/log/boot.log

    # INN
    news.=crit /var/log/news/news.crit
    news.=err /var/log/news/news.err
    news.notice /var/log/news/news.notice


      可以看出,该配置文件的每一行的第一个字段列出要被记录的信息种类,第二个字段则列出被记录的位置。第一个字段使用下面的格式:facility.level[;facility.level…] 

      此处的faciity是产生信息的系统应用程序或工具,level则是这个信息的重要程度。level的重要程度由低到高依次是: debug(调试消息)、info(一般消息)、notice(值得注意的消息)、warning(警告)、err(一般性错误)、crit(严重错 误)、alert(或emerg,紧急情况)。facility包含有:auth(认证系统,如login或su,即询问用户名和口令)、cron(系统 执行定时任务时发出的信息)、daemon(某些系统的守护程序的syslog,如由in.ftpd产生的log)、kern(内核的信息)、lpr(打 印机的信息)、mail(处理邮件的守护进程发出的信息)、mark(定时发送消息的时标程序)、news(新闻组的守护进程的信息)、user(本地用 户的应用程序的信息)、uucp(uucp子系统的信息)和“*”(表示所有可能的facility)。 

      将日志文件记录到远程主机 

      如果有另一个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(这也是RedHat Linux默认的设置)。如果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



    管理Linux日志文件工具:logrotate简介: 如果服务器有大量的用户的话,这些日志文件的大小会很快地增加,在服务器硬盘不是非常充足的情况下,必须采取措施防止日志文件将硬盘撑爆。现代的 Linux版本都有一个小程序,名为logrotate,用来帮助用户管理日志文件,它以自己的守护进程工作。logrotate周期性地旋转日志文件, 可以周期性地把每个日志文件重命名成一个备份名字,然后让它的守护进程开始使用一个日志文件的新的拷贝。这就是为什么在/var/log/下看到许多诸如 maillog、maillog.1、maillog.2、boot.log.1、boot.log.2之类的文件名。它由一个配置文件驱动,该文件是 /etc/logroatate.conf

    下面是它的一个范例: 

    # see "man logrotate" for details
    # rotate log files weekly
    weekly
    #以7天为一个周期
    # keep 4 weeks worth of backlogs
    rotate 4
    #每隔4周备份日志文件
    # send errors to root
    errors root
    #发生错误向root报告
    # create new (empty) log files after rotating old ones
    create
    #转完旧的日志文件就创建新的日志文件
    # uncomment this if you want your log files compressed
    #compress
    #指定是否压缩日志文件
    # RPM packages drop log rotation information into this directory
    include /etc/logrotate.d

    # no packages own lastlog or wtmp -- we'll rotate them here
    /var/log/wtmp {
    monthly
    create 0664 root utmp
    rotate 1
    }

    # system-specific logs may be configured here



    Linux下常用日志分析工具:Logcheck简介: 对于拥有大量账户、系统繁忙的Linux系统而言,其日志文件是极其庞大的,很多没有用的信息会将值得注意的信息淹没,给用户分析日志带来了很大的不便。 现在有一些专门用于分析日志的工具,如Logcheck和Friends。Logcheck用来分析庞大的日志文件,过滤出有潜在安全风险或其他不正常情 况的日志项目,然后以电子邮件的形式通知指定的用户。它是由Psionic开发的(T113)

    可以到http://www.psionic.com/tools/logcheck-1.1.1.tar.gz下载。或者去http://www.psionic.com/abacus /logcheck/看看是否有新的版本。 

      该程序的安装相当方便。解压后运行make文件,按照它的提示选择操作系统的类型以后就能编译完成了。配置文件和运行脚本默认安装在/usr/local/etc/下。 

      logcheck.sh 

      这是Logcheck的shell脚本,用于分析本次的日志文件并汇报结果。 

      logcheck.hacking 

      这个文件设置在日志文件中过滤的关键字,该关键字提示了潜在安全风险的信息。用户可以定制自己的日志文件,在logcheck.hacking文件中增加或删除关键字。 

      logcheck.violations 

      这个文件设置在日志文件分析过滤系统运行时出现异常情况的关键字。 

      logcheck.violations.ignore 

      如果系统出现异常情况,但含有此文件中的关键字,则视为正常,不写入Logcheck的分析报告文件中。 

      logcheck.ignore 

      如果系统日志文件记录了可能遭遇攻击的消息,但含有logcheck.ignore文件中的关键字,则Logcheck视为正常,在分析报告文件中不包含这些消息。 

      安装完Logcheck后,还要修改logcheck.sh文件中的参数以符合用户的要求。有两点值得注意。下列命令: 

    # Person to send log activity to.
    SYSADMIN=root


      Logcheck默认将报告发给root。如果要发给指定的电子邮箱,改动这里就可以了。如果希望将报告发给多个用户,可以定义mail的别名。要检查的日志文件的设置: 

    # Linux
    $LOGTAIL /var/log/syslog > $TMPDIR/check.$$
    $LOGTAIL /var/log/messages >> $TMPDIR/check.$$

    用户可以根据需要加上要检查的日志文件,例如:
    $LOGTAIL /var/log/auth.log >> $TMPDIR/check.$$
    $LOGTAIL /var/log/deamon.log >> $TMPDIR/check.$$
    $LOGTAIL /var/log/mail.log >> $TMPDIR/check.$$


      最后用cron安排服务器自动定时重复执行logcheck.sh脚本文件。
    展开全文
  • Linux日志管理   对运维人员来说,无论管理什么系统,对日志文件的监控、调用、管理都是其中重要的一部分。服务器问题的解决都是从查看系统(错误)日志开始的。本篇文章,我们就来了解一下Linux系统中的日志管理...

    Linux日志管理

      对运维人员来说,无论管理什么系统,对日志文件的监控、调用、管理都是其中重要的一部分。服务器问题的解决都是从查看系统(错误)日志开始的。本篇文章,我们就来了解一下Linux系统中的日志管理。

    日志管理

    日志管理简介

     日志简介

      系统日志是记录系统硬件检查、内核动作、软件启动、用户动作等各项信息的文件。通过系统日志可以判断系统健康状态、检测系统问题、查找攻击证据等。

     Linux系统中的日志服务

      较老的系统日志主要由syslog服务完成,较新的系统中由功能更强的rsyslog服务代替了syslog,但两者的操作方法基本相同。

    查看日志服务是否开启,使用systemctl命令查看并启动服务

    #查看服务是否启动
    systemctl list-units | grep rsyslog
    #若没有启动,则启动服务
    systemctl start rsyslog.service
    

     常见日志及其作用

    Linux的系统日志主要保存在/var/log目录中,各个主要文件及其作用在下表中列出,

    日志文件名 作用
    cron 系统定时任务相关日志
    cups 打印信息日志
    dmesg 记录系统开机内核自检的信息,使用dmesg命令查看
    btmp 记录登录错误信息的日志(二进制文件不能用vim查看,使用lastb命令)
    wtmp 记录登录注销以及关机信息的日志(同样不能用vim查看,使用last命令)
    lastlog 记录每个用户最后一次登录时间,使用lastlog命令查看
    maillog 记录邮件信息
    massages 记录系统的绝大多数重要信息,出现问题主要检查这个文件(记录等级info,在下面讲到)
    secure 记录验证和授权相关信息,主要与用户账户与授权相关

    另外,某些系统安装的应用服务默认将日志记录在这个目录下,但不是使用rsyslog服务管理,应用有自己的日志管理服务。通过源码包安装的应用服务日志记录在其安装目录下

     日志文件格式

    基本日志格式主要包含四种内容

    1. 事件发生时间
    2. 发生事件的主机名
    3. 发生事件的服务或程序(或内核),包含进程PID
    4. 事件内容

    日志管理服务 rsyslog 配置

     日志管理服务的配置格式

    rsyslog服务的配置文件为/etc/rsyslog.conf

    配置文件格式:服务名称[连接符号]日志等级 日志记录位置

    其中:

    • 服务名称为系统安装的服务的名称,多个服务名称如果使用同一等级,可用逗号分隔

    • 两个规则之间(主要用于排除情况),使用分号分隔,详见样例

    • 连接符号在下面给出,日志等级也在下面给出

    • 日志记录位置不只是文件绝对路径,有以下方式

      日志记录位置 样例说明
      绝对文件路径 /var/log/messages
      系统设备文件 /dev/lp0 (使用打印机输出)
      转发给远程主机 @192.168.0.2:123
      用户名 root 或*(表示所有用户)
      忽略日志(不记录) ~

     日志服务管理的主要服务名称

    服务名称 说明
    auth 用户账户安全和认证信息(与authpriv不同)
    authpriv 用户账户安全和认证信息(私有的)
    cron 系统定时任务
    daemon 各种守护进程
    ftp ftp守护进程相关日志
    kern 内核产生日志
    lpr 打印日志
    mail 邮件收发日志
    news 新闻服务器相关日志
    syslog rsyslog服务产生的日志
    user 用户类别的日志

     日志服务配置文件的连接符

    连接符 说明
    * 代表所有用户等级
    . 等级比后面给出的日志等级高(包含)的会记录
    .= 等级与后面给出的相等的
    .! 等级与后面给出的不等的

     日志等级

    日志等级从上到下依次变高

    日志等级 说明
    debug 一般的调试信息
    info 基本通知信息
    notice 普通的注意信息
    warning 一般警告信息,目前对系统运行没有影响但以后可能出现问题
    err 错误信息,可能影响一部分系统功能
    crit critical致命错误,较错误信息更加严重
    alert 警告状态信息,如果不处理可能造成系统损坏
    emerg 系统无法使用

    另外,.none表示不记录日志,一般在排除情况下使用

     日志服务配置举例

    auth,authpriv.*                 /var/log/auth.log #逗号分隔表示两个服务同样等级,都为所有
    *.*;auth,authpriv.none          -/var/log/syslog #所有服务的所有信息,但排除了上面两个服务
    

    日志轮替

      如果从一开始的所有记录都记录在一个文件中,势必会造成读写变慢、占用增加,甚至增加由于单个文件损坏导致所有日志丢失的风险。为了解决这个问题,Linux系统采用日志轮替方式,将一段时间以前的记录切割打包到另外的存档文件中,而主日志文件从全新重新开始记录。

     日志文件的命名(轮替)规则

    • 如果配置文件中有"dateext"参数,那么日志会用日期来作为文件后缀,日志文件名不会重叠,就不会发生旧文件改名
    • 当没有这个参数,日志文件会发生改名。当启用新的文件时例如messages,旧的文件会改为messages.1,原来的messages.1文件会变为messages.2,以此类推,过早的文件可能会被压缩,超过最大序号的旧文件会被删除。

    日志轮替的配置文件为/etc/logrotate.conf,同时具体信息也可以保存在/etc/logrotate.d目录中,在其中可以设置日志轮替信息,参数具体man logrotate查看帮助

    参数 说明
    daily 按日轮替
    weekly 按天轮替
    monthly 按月轮替
    rotate n n为数字,为保留的日志文件的个数,0指不备份
    compress 对旧的日志进行压缩
    create [mode] [owner] [group] 建立新日志的权限模式,所有者和所属组,如create 0640 root adm

    针对具体文件的设置要用特殊语法包含,例如,

    # no packages own wtmp -- we'll rotate it here
    /var/log/wtmp {
        missingok
        monthly
        create 0664 root utmp
        minsize 1M
        rotate 1
    }
    

    具体文件名后用大括号包含设置,以下设置仅对一个文件生效。

    展开全文
  • Linux 日志系统

    千次阅读 2018-09-06 22:08:50
    日志数据可以是有价值的信息宝库,也可以是毫无价值的数据泥潭。它可以记录下系统产生的所有行为,并按照某种规范表达出来。可以使用日志系统所记录的信息为系统进行排错,优化系统的性能,或者根据这些信息调整系统...

    日志数据可以是有价值的信息宝库,也可以是毫无价值的数据泥潭。它可以记录下系统产生的所有行为,并按照某种规范表达出来。可以使用日志系统所记录的信息为系统进行排错,优化系统的性能,或者根据这些信息调整系统的行为。收集你想要的数据,分析出有价值的信息,可以提高系统、产品的安全性,还可以帮助开发完善代码,优化产品。日志会成为在事故发生后查明“发生了什么”的一个很好的“取证”信息来源。日志可以为审计进行审计跟踪。

    一、常见的日志

    日志是一个系统管理员,一个运维人员,甚至开发人员不可或缺的东西,系统永久了偶尔会出现一些错误,需要日志来给系统排错,在一些网络应用服务不能正常工作的时候,需要日志来做问题定位,日志还是过往时间的记录表,可以通过它知道是否被不明用户登陆过等等。

    在linux中大部分的发行版都内置使用syslog系统日志,常见的日志一般存放在var/log中,来看看其他有哪些日志:

    ll /var/log
    

    根据图中所显示的日志,可以根据服务对象粗略的将日志分为两类:

    • 系统日志:主要存放系统内置程序或系统内核之类的日志信息如alternative.log,btmp等等;
    • 应用日志:主要是安装第三方应用所产生的日志,如:tomact7,apache3等等

    系统日志具有有哪些,都记录了怎样的信息:

    日志名称 记录信息
    alternatives.log 系统的一些更新替代信息记录
    apport.log 应用程序崩溃信息记录
    apt/history.log 使用 apt-get 安装卸载软件的信息记录
    apt/term.log 使用 apt-get 时的具体操作,如 package 的下载、打开等
    auth.log 登录认证的信息记录
    boot.log 系统启动时的程序服务的日志信息
    btmp 错误的信息记录
    Consolekit/history 控制台的信息记录
    dist-upgrade dist-upgrade 这种更新方式的信息记录
    dmesg 启动时,显示屏幕上内核缓冲信息,与硬件有关的信息
    dpkg.log dpkg 命令管理包的日志。
    faillog 用户登录失败详细信息记录
    fontconfig.log 与字体配置有关的信息记录
    kern.log 内核产生的信息记录,在自己修改内核时有很大帮助
    lastlog 用户的最近信息记录
    wtmp 登录信息的记录。wtmp可以找出谁正在进入系统,谁使用命令显示这个文件或信息等
    syslog 系统信息记录

    只闻其名,不见其人,并不能明白这些日志记录的内容。首先我们来看 alternatives.log 中的信息:

    从中得到的信息有程序作用,日期,命令,成功与否的返回码

    对于Debain系统,使用apt-get安装软件,因在 apt 文件夹中的日志信息,其中有两个日志文件 history.log 与 term.log,两个日志文件的区别在于 history.log 主要记录了进行了哪个操作,相关的依赖有哪些,而 term.log 则是较为具体的一些操作,主要就是下载包,打开包,安装包等等的细节操作。

    其他的日志格式也都类似于之前所查看的日志,主要便是时间,操作。而这其中有两个比较特殊的日志,其查看的方式比较与众不同,因为这两个日志并不是 ASCII 文件而是被编码成了二进制文件,所以我们并不能直接使用 less、cat、more 这样的工具来查看,这两个日志文件是 wtmp,lastlog。

    查看的方法是使用 last 与 lastlog 工具来提取其中的信息

    二、配置的日志

    这些日志是如何产生的?通过上面的例子我们可以看出大部分的日志信息似乎格式都很类似,并且都出现在这个文件夹中。

    这样的实现可以通过两种方式:

    一种是由软件开发商自己来自定义日志格式然后指定输出日志位置;
    一种方式就是 Linux 提供的日志服务程序,而我们这里系统日志是通过 syslog 来实现,提供日志管理服务。
    syslog 是一个系统日志记录程序,在早期的大部分 Linux 发行版都是内置 syslog,让其作为系统的默认日志收集工具,虽然时代的进步与发展,syslog 已经年老体衰跟不上时代的需求,所以他被 rsyslog 所代替了,较新的 Ubuntu、Fedora 等等都是默认使用 rsyslog 作为系统的日志收集工具

    rsyslog的全称是 rocket-fast system for log,它提供了高性能,高安全功能和模块化设计。rsyslog 能够接受各种各样的来源,将其输入,输出的结果到不同的目的地。rsyslog 可以提供超过每秒一百万条消息给目标文件。

    这样能实时收集日志信息的程序是有其守护进程的,如 rsyslog 的守护进程便是 rsyslogd

    因为一些原因本实验环境中默认并没有打开这个服务,我们可以手动开启这项服务,然后来查看

    sudo apt-get update
    sudo apt-get install -y rsyslog
    sudo service rsyslog start
    ps aux | grep syslog
    

    既然它是一个服务,那么它便是可以配置,为我们提供一些我们自定义的服务

    首先我们来看 rsyslog 的配置文件是什么样子的,而 rsyslog 的配置文件有两个,

    • 一个是 /etc/rsyslog.conf:主要是配置的环境,即rsyslog加载什么模块
    • 一个是 /etc/rsyslog.d/50-default.conf:主要是配置的Filter Conditions。

    /etc/rsyslog.conf

    /etc/rsyslog.d/50-default.conf

    看看 rsyslog 的结构框架,数据流的走向,如下图:

    通过这个简单的流程图我们可以知道 rsyslog 主要是由 Input、Output、Parser 这样三个模块构成的,并且了解到数据的简单走向,首先通过 Input module 来收集消息,然后将得到的消息传给 Parser module,通过分析模块的层层处理,将真正需要的消息传给 Output module,然后便输出至日志文件中。

    Rsyslog 架构如图中所示,从图中我们可以很清楚的看见,rsyslog 还有一个核心的功能模块便是 Queue,也正是因为它才能做到如此高的并发。

    第一个模块便是 Input,该模块的主要功能就是从各种各样的来源收集 messages。而Output 中也有许多可用的接口,可以通过 man 或者官方的文档查看。

    配置中 rsyslog 支持三种配置语法格式:

    sysklogd
    legacy rsyslog
    RainerScript
    sysklogd 是老的简单格式,一些新的语法特性不支持。而 legacy rsyslog 是以 dollar 符()v6ModLoad 还有一些插件和特性只在此语法下支持。而以 $ 开头的指令是全局指令,全局指令是 rsyslogd 守护进程的配置指令,每行只能有一个指令。 RainnerScript 是最新的语法。在官网上 rsyslog 大多推荐这个语法格式来配置

    老的语法格式(sysklogd & legacy rsyslog)是以行为单位。新的语法格式(RainnerScript)可以分割多行。

    注释有两种语法:

    • 井号 #
    • C-style /* .. */

    执行顺序: 指令在 rsyslog.conf 文件中是从上到下的顺序执行的。

    模板是 rsyslog 一个重要的属性,它可以控制日志的格式,支持类似 template() 语句的基于 string 或 plugin 的模板,通过它我们可以自定义日志格式。

    legacy 格式使用 $template 的语法,不过这个在以后要移除,所以最好使用新格式 template():,以免未来突然不工作了也不知道为什么

    模板定义的形式有四种,适用于不同的输出模块,一般简单的格式,可以使用 string 的形式,复杂的格式,建议使用 list 的形式,使用 list 的形式,可以使用一些额外的属性字段(property statement)

    如果不指定输出模板,rsyslog 会默认使用 RSYSLOG_DEFAULT。

    了解了 rsyslog 环境的配置文件之后,再看向 /etc/rsyslog.d/50-default.conf 这个配置文件,这个文件中主要是配置的 Filter Conditions,也就是我们在流程图中所看见的 Parser & Filter Engine,它的名字叫 Selectors 是过滤 syslog 的传统方法,他主要由两部分组成,facility 与 priority,其配置格式如下:

    facility.priority     log_location
    

    其中一个 priority 可以指定多个 facility,多个 facility 之间使用逗号 , 分割开,具体可见上图

    rsyslog 通过 Facility 的概念来定义日志消息的来源,以便对日志进行分类,Facility 的种类有:

    | kern | 内核消息 |
    | user | 用户信息 |
    | mail | 邮件系统消息 |
    | daemon | 系统服务消息 |
    | auth | 认证系统 |
    | authpriv | 权限系统 |
    | syslog | 日志系统自身消息 |
    | cron | 计划安排 |
    | news | 新闻信息 |
    | local0~7 | 由自定义程序使用 |

    而另外一部分 priority 也称之为 serverity level,除了日志的来源以外,对统一源产生日志消息还需要进行优先级的划分,而优先级的类别有一下几种:

    类别 解释
    emergency 系统已经无法使用了
    alert 必须立即处理的问题
    critical 很严重了
    error 错误
    warning 警告信息
    notice 系统正常,但是比较重要
    informational 正常
    debug debug的调试信息
    panic 很严重但是已淘汰不常用
    none 没有优先级,不记录任何日志消息

    auth,authpriv.*       /var/log/auth.log
    

    这里的意思是 auth 与 authpriv 的所有优先级的信息全都输出于 /var/log/auth.log 日志中

    而其中有类似于这样的配置信息意思有细微的差别

    kern.*      -/var/log/kern.log
    

    -代表异步写入,也就是日志写入时不需要等待系统缓存的同步,也就是日志还在内存中缓存也可以继续写入无需等待完全写入硬盘后再写入。通常用于写入数据比较大时使用。

    与日志相关的还有一个还有常用的命令 logger,logger 是一个 shell 命令接口,可以通过该接口使用 Syslog 的系统日志模块,还可以从命令行直接向系统日志文件写入信息。

    #首先将syslog启动起来
    sudo service rsyslog start
    
    #向 syslog 写入数据
    ping 127.0.0.1 | logger -it logger_test -p local3.notice &
    
    #查看是否有数据写入
    sudo tail -f /var/log/syslog
    

    从图中我们可以看到我们成功的将 ping 的信息写入了 syslog 中,格式也就是使用的 rsyslog 的默认模板

    我们可以通过 man 来查看 logger 的其他用法,

    参数 内容
    -i 在每行都记录进程 ID
    -t 添加 tag 标签
    -p 设置日志的 facility 与 priority

    三、转储的日志

    在本地的机器中每天都有成百上千条日志被写入文件中,更别说是我们的服务器,每天都会有数十兆甚至更多的日志信息被写入文件中,如果是这样的话,每天看着我们的日志文件不断的膨胀,那岂不是要占用许多的空间,所以有个叫 logrotate 的东西诞生了。

    logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件。我们可以根据日志文件的大小,也可以根据其天数来切割日志、管理日志,这个过程又叫做“转储”。

    大多数 Linux 发行版使用 logrotate 或 newsyslog 对日志进行管理。logrotate 程序不但可以压缩日志文件,减少存储空间,还可以将日志发送到指定 E-mail,方便管理员及时查看日志。

    显而易见,logrotate 是基于 CRON 来运行的,其脚本是 /etc/cron.daily/logrotate;同时我们可以在 /etc/logrotate 中找到其配置文件

    cat /etc/logrotate.conf
    

    # see "man logrotate" for details  //可以查看帮助文档
    # rotate log files weekly
    weekly                             //设置每周转储一次(daily、weekly、monthly当然可以使用这些参数每天、星期,月 )
    # keep 4 weeks worth of backlogs
    rotate 4                           //最多转储4次
    # create new (empty) log files after rotating old ones
    create                             //当转储后文件不存在时创建它
    # uncomment this if you want your log files compressed
    compress                          //通过gzip压缩方式转储(nocompress可以不压缩)
    # RPM packages drop log rotation information into this directory
    include /etc/logrotate.d           //其他日志文件的转储方式配置文件,包含在该目录下
    # no packages own wtmp -- we'll rotate them here
    /var/log/wtmp {                    //设置/var/log/wtmp日志文件的转储参数
        monthly                        //每月转储
        create 0664 root utmp          //转储后文件不存在时创建它,文件所有者为root,所属组为utmp,对应的权限为0664
        rotate 1                       //最多转储一次
    }
    

    当然在 /etc/logrotate.d/ 中有各项应用的 logrotate 配置,还有更多的配置参数,大家可以使用 man 查看,如按文件大小转储,按当前时间格式命名等等参数配置。

    展开全文
  • Linux日志文件总结

    千次阅读 2016-08-10 15:53:49
    Linux日志文件总结近期做笔试题目,考察linux日志配置文件相关内容,由于对此不了解,故看鸟哥的私房菜中的认识与分析日志文件一章,总结如下相关信息。 日志文件可以记录一个时间的何时、何地、何人、何事四大信息...
  • Linux系统日志以及日志同步设置

    千次阅读 2017-07-21 23:45:02
    Linux系统日志 Linux日志同步设置 Linux日志管理
  • Linux查看SSH用户登陆日志

    万次阅读 2015-12-09 11:08:06
    linux日志管理:  1. 日志简介  日志对于安全来说,非常重要,他记录了系统每天发生的各种各样的事情,你可以通过他来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。日志主要的功能有:审计和...
  • Linux 日志查看

    千次阅读 2018-09-18 22:19:21
    Linux系统的所有日志文件都保存在 /var/log 目录下 常用命令: cat   显示整个文本 head   从文件的头部开始查看,head命令一般用于查看一个文本文件的开头部分 tail   tail命令默认在屏幕上显示指定文件的...
  • linux 日志logger

    万次阅读 2014-03-17 22:34:50
    一 通过logger命令记录日志 logger 是一个shell 命令接口,可以通过该接口使用Syslog的系统日志模块,还可以从...auth -用户授权  authpriv -授权和安全  cron -计划任务:at ,cron  daemon -系统守护进程
  • linux查看ssh用户登录日志与操作日志

    千次阅读 2016-03-01 15:03:00
    linux查看ssh用户登录日志与操作日志 2013-11-01转载 ssh用户登录日志 linux下登录日志在下面的目录里: 代码如下 复制代码 cd /var/log 查看ssh用户的登录日志: ...
  • Linux日志清除

    千次阅读 2015-06-10 21:03:27
    由于数据需求,需要频繁抓取和筛选过滤数据,用了大约7 8个月,在机器上改了下数据,重启,...直接删除日志(简单粗暴): 删除所有的日志:find /var -type f -exec rm -v {} \;(最后的分号也是必须命令的一部分)
  • Linux 配置用户命令日志审计功能

    千次阅读 2016-11-21 17:15:46
    目的:监控登陆上linux 系统服务器的用户,所使用过的命令。 采用以下步骤配置用户命令日志审计功能: 1.创建用户审计文件存放目录和审计日志文件 ;  mkdir -p /var/log/usermonitor/ 2.创建用户审计日志...
  • linux日志审计audit

    千次阅读 2018-04-16 11:08:20
    然后,管理员可以评审这些日志,确定可能存在的安全裂口,比如失败的登录尝试,或者 用户对系统文件不成功的访问。这种功能称为Linux审计系统,在Red Hat Enterprise Linux 5中已经可用。  要使用Linux Auditing ...
  • Linux查看登录用户日志

    千次阅读 2017-12-23 22:36:00
    一、Linux记录用户登录信息文件 1 /var/run/utmp----记录当前正在登录系统的用户信息; 2 /var/log/wtmp----记录当前正在登录和历史登录系统的用户信息; 3 /var/log/btmp:记录失败的登录尝试信息。 二、...
  • Linux日志切割

    千次阅读 2012-04-10 13:58:12
    现代的Linux版本都有一个小程序,名为logrotate,用来帮助用户管理日志文件,它以自己的守护进程工作。logrotate周期性地旋转日志文件,可以周期性地把每个日志文件重命名成一个备份名字,然后让它的守护进程开始...
  • linux日志目录介绍

    千次阅读 2017-10-28 10:33:01
    linux下我们需要知道的日志: => /var/log/messages:常规日志消息 ...=> /var/log/auth.log:用户登录和身份验证日志 => /var/log/daemon.log:运行squid,ntpd等其他日志消息到这个文件 => /var/log/dmesg:Linux
  • [LINUX]linux系统日志

    千次阅读 2018-02-06 21:29:06
    linux系统日志 second60 20180206 1简介  linux系统拥有非常强大的日志功能,保存着几乎有所有操作记录,包括内核和程序产生的各种错误信息,警告信息或其他提示信息,对这些信息管理员了解系统的运行状态和分析...
  • Linux日志管理

    万次阅读 2018-10-17 09:23:15
    一、日至来源 日至由程序产生,存储在...1、日志的查看 &gt; /nar/log/messages ##清空目录内容 cat /var/log/messages ##查看日志 systemctl start rsyslog.service ##加载日志收集 /var/log/secure ...
  • Linux日志logger

    千次阅读 2012-05-16 10:57:53
    一 通过logger命令记录日志 logger 是一个shell 命令接口,可以通过该接口使用Syslog的系统日志模块,还...auth -用户授权  authpriv -授权和安全  cron -计划任务:at ,cron  daemon -系统守护进程
  • 用户名为目录名的目录, 进入对应目录后会有用户登录时间IP为名字的文件, 内容为用户执行命令的日志信息 # cd /var/log/history/ # ll total 4 d-wx------ 2 root root 4096 Nov 7 15:37 root # cd root # ll ...
  • linux用户行为日志审计方案

    千次阅读 2018-06-09 17:08:38
    今日笔记:我们今天要学习的是:sudo日志审计,专门对使用sudo命令的系统用户记录其执行的命令相关信息。说明:所谓sudo命令日志审计,并不记录普通用户的普通操作,而是记录,那些执行sudo命令的用户的操作。1、...
  • Linux细节 - Linux 日志轮替

    千次阅读 2012-06-20 15:49:19
    #日志轮替默认子Cron里面进行 /etc/cron.daily/logrotate #日志文件依赖配置文件 /etc/logrotate.conf #配置文件详细内容解读 weekly #默认每周进行一次日志清理 rotate 10 #保留的日志文件 # create new (empty) ...
  • Linux日志分析与安全

    千次阅读 2020-12-11 19:16:04
    Linux系统中,有三个主要的日志子系统: 连接时间日志: 由多个程序执行,把记录写入到/var/log/wtmp和/var/run/utmp,login等程序会更新wtmp和utmp文件,使系统管理员能够跟踪谁在何时登录到系统。 进程统计: 由...
  • LINUX日志系统之WEB日志(一)

    千次阅读 2016-06-04 22:07:42
    linux日志系统的重要性想必大家都非常清楚了,我们平时的登录信息,各种操作信息,软件错误信息等等,想要系统一直健康稳定的运转,学会查看和管理日志系统是必不可少的技能。下面就来认识下web系统中的各种常用的...
  • linux日志logger命令详解

    万次阅读 2016-07-28 14:48:37
    通过logger命令记录日志   logger是一个shell命令接口,可以通过该接口使用Syslog的系统日志模块,还可以从命令行直接向系统日志文件写入一行信息。 ---------------------------------------------------------...
  • Linux学习日志(二) 用户

    千次阅读 2016-04-26 01:25:00
    文件管理文件管理类命令 ls, 查看:cat,more,less,tail,head,tac 复制:cp 移动:mv 删除:rm ...Linux的文件类型 普通文件:-,f 目录文件:路径映射d 链接文件(符号链接):软连接l
  • LINUX查看用户登陆信息和日志

    万次阅读 2010-08-30 19:50:00
    LINUX查看用户登陆信息和日志 May 11, 2010 Posted by admin Comments (0)查看用户登陆信息: last[enter] (用户登录、退出系统的记录,系统重启、关机的记录。/var/log/wtmp )  lastlog[enter]:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 344,761
精华内容 137,904
关键字:

linux日志用户

linux 订阅