Linux中的日志管理_第1页
Linux中的日志管理_第2页
Linux中的日志管理_第3页
Linux中的日志管理_第4页
Linux中的日志管理_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第 6 章 Linux 中的日志管理本章要点Linux 日志管理简介Linux 基本日志管理机制 使用 syslog 设备Linux 日志使用注意事项 Linux 日志输出查看方式Linux 系统中的日志子系统对于系统安全来说非常重要, 它记录了系统每天发生 的各种各样的事情, 包括哪些用户曾经或者正在使用系统, 可以通过日志来检查 错误发生的原因, 更重要的是在系统受到黑客攻击后, 日志可以记录攻击者留下 的痕迹。 通过查看这些痕迹,系统管理员可以发现黑客攻击的某些手段以及特 点,从而能够进行处理工作, 为抵御下一次攻击做好准备 。本章主要讲述如何使 用 Linux 系统中的日志子系统及其命

2、令,从而更好地保护系统安全。6.1 Linux 日志管理简介 日志的主要功能是审计和监测。它还可以用于追踪入侵者等 。在 Linux 系统中, 有四类主要的日志:( 1)连接时间日志:由多个程序执行,把记录写入到 /var/log/wtmp 和 /var/run/utmp ,login 等程序更新 wtmp 和 utmp 文件,使系统管理员能够跟踪 谁在何时登录到系统。(2)进程统计:由系统内核执行。当一个进程终止时,为每个进程向进程统计 文件( pacct 或 acct )中写一个记录。进程统计的目的是为系统中的基本服务 提供命令使用统计。( 3)错误日志:由 syslogd ( 8)守护程

3、序执行。各种系统守护进程、用户程序 和内核通过 syslogd ( 3)守护程序向文件 /var/log/messages 报告值得注意的 事件。另外有许多 Linux 程序创建日志。像 HTTP和 FTP这样提供网络服务的服 务器也保持详细的日志。(4)实用程序日志:许多程序通过维护日志来反映系统的安全状态。 su 命令允 许用户获得另一个用户的权限,所以它的安全很重要,它的文件为 sulog 。同样 重要的还有 sudolog 。另外,诸如 Apache 等 Http 服务器都有两个日志: access_log (客户端访问日志)以及 error_log (服务出错日志) 。FTP服务的

4、日志记录在 xferlog 文件当中, Linux 中邮件传送服务( sendmail )的日志一般 存放在 maillog 文件当中。上述四类日志中,常用的日志文件如表 6-1 所示。表 6-1 Linux 系统中常用的日志文件日志文件注释access-log记录 HTTP/Web的传输acct/pacct记录用户命令boot.log记录 Linux 系统开机自检过程显示的信息lastlog记录最近几次成功登录的事件和最后一次不成功的登录messages从 syslog 中记录信息(有的链接到 syslog 文件)续)日志文件注释Sudolog记录使用 sudo 发出的命令sulog记录使用

5、 su 命令的使用syslog从 syslog 中记录信息utmp记录当前登录的每个用户信息wtmp一个用户每次登录进入和退出时间的永久记录xferlog记录 FTP 会话信息maillog记录每一个发送到系统或从系统发出的电子邮件的活动。它可以用来查看用户使用哪个系统发送工具或把数据发送到哪个系统6.2 Linux 基本日志管理机制utmp、wtmp 日志文件是多数 Linux 日志子系统的关键,它保存了用户登录和退 出的记录。有关当前登录用户的信息记录在文件 utmp 中;登录和退出记录在文 件 wtmp 中;数据交换、关机以及重启的机器信息也都记录在 wtmp 文件中。所 有的记录都包含

6、时间戳。 时间戳对于日志来说非常重要, 因为很多攻击行为都与 时间有极大的关系。这些文件在具有大量用户的系统中增长十分迅速。 例如 wtmp 文件可以无限增长,除非定期截取。许多系统以一天或者一周为单位把 wtmp 配 置成循环使用。它通常由 cron 运行的脚本来修改。这些脚本重新命名并循环使 用 wtmp 文件。通常, wtmp 在第一天结束后命名为 wtmp.1 ;第二天后 wtmp.1 变为 wtmp.2,等等,用户可以根据实际情况来对这些文件进行命名和配置使用。utmp 文件被各种命令文件使用,包括 who、 w、users和 finger。而 wtmp 文件被 程序 last和 a

7、c使用。wtmp 和 utmp 文件都是二进制文件, 它们不能被诸如 tail 、cat等命令剪贴或合并。 用户需要使用 who、w、users、last 和 ac 来使用这两个文件包含的信息 。6.2.1 who 命令who 命令查询 utmp 文件并报告当前登录的每个用户。 who 的缺省输出包括用户 名、终端类型、登录日期及远程主机。使用该命令,系统管理员可以查看当前系 统存在哪些非法用户,从而对其进行审计和处理。例如:运行 who 命令显示如 下:# whoroot pts/0 May 9 21:11 (28)root pts/1 May 9 21:16 (10.0.2

8、.129)lhwen pts/7 May 9 22:03 (7)如果指明了 wtmp 文件名,则 who 命令查询所有以前的记录。命令 who /var/log/wtmp 将报告自从 wtmp 文件创建或删改以来的每一次登录。例如:运行 该命令如下所示:# who /var/log/wtmpliujunpts/4Sep 16 21:22 (31)rootpts/1Sep 16 23:13 (46)yzhpts/0Sep 17 12:03 (eagle)ltbpts/0Sep 17 17:06 (48)ltbpts/0Sep 18

9、09:10 (48)ltbpts/1Sep 18 10:24 (48)ltbpts/0Sep 18 11:22 (48)patterson pts/2 Sep 18 16:23 (11)6.2.2 users 命令users 命令用单独的一行打印出当前登录的用户,每个显示的用户名对应一个登 录会话。如果一个用户有不止一个登录会话,则他的用户名将显示相同的次数, 即如果 root 用户登录了两次,运行该命令将如下所示(该显示结果表明只登录 了一个 root 权限的用户):# usersroot root6.2.3 last 命令la

10、st 命令往回搜索 wtmp 来显示自从文件第一次创建以来登录过的用户。系 统管理员可以周期性地对这些用户的登录情况进行审计和考核, 从而发现其中存 在的问题,确定非法用户,并进行处理。运行该命令,如下所示:# lastpatterson pts/21Mon Jul 21 15:08down (8+17:46)patterson pts/21Mon Jul 21 14:4214:53 (00:11)changyi pts/2 41Mon Jul 21 14:12 - 14:12 (00:00)patterson pts/21

11、Mon Jul 21 12:5114:40 (01:49)reboot system boot2.4.18Fri Jul 18 15:42(11+17:13)reboot system boot2.4.18Fri Jul 18 15:34(00:04)reboot system boot2.4.18Fri Jul 18 15:02(00:36)读者可以看到,使用上述命令显示的信息太多,区分度很小。所以,可以通过 指明用户来显示其登录信息。例如:使用 last patterson来显示 patterson 的历史 登录信息,则如下所示:# last pattersonpatterson pts/

12、1 21 Mon Jul 21 15:08 - down (8+17:46) patterson pts/1 21 Mon Jul 21 14:42 - 14:53 (00:11)6.2.4 ac 命令ac 命令根据当前的 /var/log/wtmp 文件中的登录进入和退出来报告用户连结接时 间(小时),如果不使用标志,则报告总的时间。例如:ac(回车)显示:total 5177.47另外,可加一些参数,例如, last -u 102将报告UID 为102的用户; last -t 7表示 限制上一周的报告。6.2.5 lastlog 命令lastlog 文件在每

13、次有用户登录时被查询。 可以使用 lastlog 命令检查某特定用户上 次登录的时间,并格式化输出上次登录日志 /var/log/lastlog 的内容。它根据 UID 排序显示登录名、端口号(tty)和上次登录时间。 如果一个用户从未登录过, lastlog 将显示 *Never logged* 。注意需要以 root 身份运行该命令。运行该命令如下所 示:# lastlogUsername Port From Latestrootpts/1 29opalpts/1 295 月 10 10:13:26 +0800 20055 月 10 10:13:26 +08

14、00 20056.3 使用 syslog 设备6.3.1 syslog 简介syslog 已被许多日志函数采纳,它用在许多保护措施中,任何程序都可以通过 syslog 记录事件。 syslog可以记录系统事件,可以写到一个文件或设备中,或给 用户发送一个信息。它能记录本地事件或通过网络记录另一个主机上的事件。syslog 是一种工业标准的协议, 可用来记录设备的日志。 在 Linux 系统,路由器、 交换机等网络设备中, 系统日志( System Log)记录系统中任何时间发生的大小 事件 。管理者可以通过查看系统记录,随时掌握系统状况。 Linux 的系统日志是 通过 syslogd 这个进

15、程记录系统有关事件记录,也可以记录应用程序运作事件。 通过适当的配置,用户还可以实现运行 syslog协议的机器间通信, 通过分析这些 网络行为日志,追踪掌握与设备和网络有关的状况 。6.3.2 syslog 配置文件syslog设备依据两个重要的文件: /etc/syslogd守护进程和 /etc/syslog.conf 配置文 件。通常情况下,多数 syslog 信息被写到 /var/adm 或 /var/log 目录下的信息文件 中( messages.*)。一个典型的 syslog记录包括生成程序的名字和一个文本信息。 它还包括一个设备和一个优先级范围。通过使用 syslog.conf

16、 文件,可以对生成的日志的位置及其相关信息进行灵活的配 置,满足应用的需要。该配置文件指明了 syslogd 守护程序记录日志的行为,该 程序在启动时查询配置文件。 该文件由不同程序或消息分类的单个条目组成, 每 个占一行。对每类消息提供一个选择域和一个动作域。这些域由 tab 隔开:选择域指明消息的类型和优先级。动作域指明 syslogd 接收到一个与选择标准相匹配的消息时所执行的动作。 syslog.conf 行的基本语法是: 消息类型 . 优先级 动作域 其中,每个选择域由消息类型和优先级组成。当指明一个优先级时, syslogd 将 记录一个拥有相同或更高优先级的消息。 Linux 中

17、一些主要的消息类型如表 6-2 所示。表 6-3 列出了一些优先级信息。表 6-2 syslog 消息类型消息类型消息来源kern内核User用户程序Damon系统守护进程Mail电子邮件系统Auth与安全权限相关的命令Lpr打印机News新闻组信息UucpUucp 程序Cron记录当前登录的每个用户信息wtmp一个用户每次登录进入和退出时间的永久记录Authpriv授权信息表 6-3 syslog 常用优先级优先级描述emerg最高的紧急程度状态alert紧急状态Cirt重要信息warning警告err临界状态notice出现不寻常的事情info一般性消息Debug调试级信息None不记录任

18、何日志信息不同的服务类型有不同的优先级, 数值较大的优先级涵盖数值较小的优先级 。如 果某个选择条件只给出了一个优先级而没有使用任何优先级限定符, 对应于这个 优先级的消息以及所有更紧急的消息类型都将包括在内。 例如,某个选择条件里 的优先级是 “warning,”它实际上将把 “warning”、“ err”、“ crit ”、“ale“rt和“ emerg” 都包括在内。syslog 允许人们使用三种限定符对优先级进行修饰:星号( * )、等号( =)和叹 号( !):(1)星号( * )的含义是把本项服务生成的所有日志消息都发送到操作动作指定 的地点。就像它在规则表达式里的作用一样, 星

19、号代表“任何东西”。在前面给出 的例子里,“mail.* ”将把所有优先级的消息都发送到操作动作指定的 /var/log/mail 文件里。使用“ * ”限定符与使用“ debug”优先级的效果完全一 样,后者也将把所有类型的消息发送到指定地点。(2)等号( =)的含义是只把本项服务生成的本优先级的日志消息都发送到操作 动作指定的地点。 例如,可以用“ =”限定符只发送调试消息而不发送其他更紧急 的消息(这将为应用程序减轻很多负担) 。当用户只需要发送特定优先级别的消息 时,就要使用等号限定符。(3)叹号( ! )的含义是把本项服务生成的所有日志消息都发送到操作动作指 定的地点,但本优先级的消

20、息不包括在内。所以,根据上面介绍的相关知识,给出如下例子作为示范:( 1)如果指明 crit ,则所有标为 crit 、alert 和 emerg的消息将被记录。 每行的行动域指明当选择域选择了一个给定消息后应该把它发送到哪儿。例如, 把所有邮件消息记录到一个文件中,如下所示:#Log all the mail messages in one placemail.* /var/log/maillog(2)其他设备也有自己的日志。 UUCP和 news 设备能产生许多外部消息,它们 把这些消息存到自己的日志( /var/log/spooler )中并把级别限制为 err 或 更高。例如:# Sa

21、ve news errors of level crit and higher in a special file.uucp,news.crit /var/log/spooler(3)当一个紧急消息到来时,可能想让所有的用户都得到,也可能想让自己的 日志接收并保存。#Everybody gets emergency messages , plus log them on anther machine*.emerg *.emerg ( 3)有时 syslogd 将产生大量的消息。例如内核( kern 设备)消息可能很 冗长,用户很难看得清楚明了, 那么用户可能想把内

22、核消息记录到 /dev/console 中。下面的例子表明内核日志记录被注释掉了:#Log all kernel messages to the console#Logging much else clutters up the screenkern.* /dev/console( 4)用户可以在一行中指明所有的设备。下面的例子把 info 或更高级别的消 息送到 /var/log/messages ,除了 mail 以外。级别 none 禁止一个设备:#Log anything (except mail ) of level info or higher#Dont log private a

23、uthentication messages!*.info:mail.none;autHPriv.none /var/log/messages2 下被调用的,缺省不使6.3.3 syslog 进程syslogd守护程序是由 /etc/rc.d/init.d/syslog 脚本在运行级 用选项。但有两个选项 -r 和 -h 很有用: ( 1)如果将要使用一个日志服务器, 必须调用 syslogd -r 。缺省情况下 syslogd 不接受来自远程系统的信息。当指定 -r 选项, syslogd 将会监听从 514 端口上 进来的 UDP包。( 2)如果还希望日志服务器能传送日志信息, 可以使用

24、-h 标志。缺省时,syslogd 将忽略使其从一个远程系统传送日志信息到另一个系统的 syslogd 。另外,如果需要重新启动 syslog 守护进程( /etc/syslog.conf 的修改只有在 syslog 守护进程重新启动后才会生效) ,并且只想重新启动 syslog 守护进程而不是整个 系统,在 Red Hat Linux 中,执行以下两条命令之一即可:/etc/rc.d/init.d/syslogstop;/etc/rc.d/init.d/syslogstart/etc/rc.d/init.d/syslogrestart6.3.4 实际应用中的 syslog 调用接口在实际的使

25、用过程中, 用户可以根据 6.3 节中的介绍通过配置文件和查看相应的 日志文件来使用 syslog。然而,在许多应用场景中,用户往往需要通过程序产生 输出信息并进行记录, 也就是说要把一些信息写成日志文件, 正常情况下运行程 序的人不用关心日志里的内容, 只有在出现问题的时候才会查看日志文件里的内 容以确定问题所在。因此,本节将介绍如何通过 syslog 日志系统提供的 API 调 用接口,来使用程序实现对 syslog 的使用。1主要的函数在 Linux 中,提供了四个有关 syslog 日志系统的系统调用,供用户使用:openlog :打开日志设备,以供读取和写入,与文件系统调用的open

26、 类似。syslog :写入日志,与文件系统调用的 write 类似。closelog :关闭日志设备,与文件系统调用的 close 类似。vsyslog :它和 syslog 功能一样,负责写入日志,只是参数格式不同。( 1) openlog 函数。该函数的声明如下:void openlog(const char *ident, int option, int facility);此函数用来打开一个到系统日志记录程序的连接,打开之后就可以用 syslog 或vsyslog 函数向系统日志里添加信息了。而 closelog 函数就是用来关闭此连接的openlog 的第一个参数 ident 是一

27、个标记, ident 所表示的字符串将固定地加在每 行日志的前面以标识这个日志, 通常就写成当前程序的名称以作标记。 第二个参 数 option 一般是下列选项值取“与”运算(使用“ |”表示,如“ LOG_CONS | LOG_PID”)的结果:LOG_CON:S如果送到 system logger 时发生问题,直接写入系统终端。LOG_NDELA:Y立即开启连接,通常连接是在第一次写入消息时才打开的。LOG_PERR:OR将消息也同时送到 stderr 设备。LOG_PID:将进程 PID 含入所有消息中。第三个参数 facility 指明记录日志的程序的类型, 它主要具有如下几类日志类型

28、:LOG_AUTH: 安全/ 授权消息。LOG_AUTHPR:IV安全/ 授权消息。LOG_CRO:N时间守护进程( cron 和 at )专用。LOG_DAEM:ON其他系统守护进程。LOG_KER:N核心消息。LOG_LOCAL到0 LOG_LOCAL:7系统保留。LOG_LP:R printer 子系统。LOG_MAI:L mail 子系统。LOG_NEW:SUSENET新闻子系统。LOG_SYSLO:Gsyslogd 进程内部所产生的消息。LOG_USE(R缺省):一般使用者缺省使用消息。LOG_UUC:PUUCP子系统。LOG_FT:P FTP子系统使用。( 2) syslog 函数

29、。 syslog 函数的声明如下:void syslog(int priority, const char * message, .); 第一个参数是消息的紧急级别 priority ,第二个参数是消息及其格式,之后是格 式对应的参数,如同C语言里面 printf输出函数一样使用, 具体的格式这里就不 再详述,它不是本书介绍的重点。这里还需要详细介绍一下第一个参数 priority ,它是由 severity level 和 facility 组成的。 Facility 已经在上面介绍了,下面介绍一下 severity level ,也就是消息 的重要级别,它主要包括:LOG_EME:RG紧急

30、状况。LOG_ALER:T高优先级问题,比如说数据库崩溃等,必须要立即采取反应行 动。LOG_CRI:T 重要状况发生,比如硬件故障。LOG_ER:R错误发生。LOG_WARNI:NG警告发生。LOG_NOTIC:E一般状况,需要引起注意。LOG_INFO:信息状况。LOG_DEBU:G调试消息。在实际使用中, 如果用户的程序要使用系统日志功能, 只需要在程序启动时使用 openlog函数来连接 syslogd 程序,后面随时用 syslog函数写日志就行了。(3)closelog 函数。相对上述 2 个函数来说,该函数非常简单,其声明如下:void closelog(void);值得注意的是

31、, 虽然该函数的使用和调用情况非常简单, 但是是必不可少的, 因 为在 Linux 系统中,打开的日志也是资源,如果只使用 openlog 函数打开日志, 而忘记使用 closelog 关闭日志的话,当打开的日志数量累积到一定程度,便会造 成内存不足,从而引起系统问题。所以,提醒用户在使用中特别注意。2一个实际的程序调用例子下面给出一个使用上述几个函数写日志的例子,以供大家参考:#include #include #include int main(void)int log_test;/* 打开日志 */openlog(log_test , LOG_PID|LOG_CONS, LOG_USER

32、);/* 写日志 */syslog(LOG_INFO, PID information, pid=%d, getpid();syslog(LOG_DEBUG,debug message );/* 关闭日志 */closelog();6.4 Linux 日志使用注意事项系统管理人员要应该提高警惕,随时注意各种可疑状况,并且按时和随机地 检查各种系统日志文件, 包括一般信息日志、 网络连接日志、 文件传输日志以及 用户登录日志等。在检查这些日志时, 要注意是否有不合常理的时间记载。 例如:用户在非常规的时间登录。不正常的日志记录,比如日志的残缺不全或者是诸如 wtmp这样的日志文件 无故地缺少了中

33、间的记录文件。用户登录系统的 IP 地址和以往的不一样。用户登录失败的日志记录,尤其是那些一再连续尝试进入失败的日志记录。非法使用或不正当使用超级用户权限 su 的指令。无故或者非法重新启动各项网络服务的记录。特别提醒管理人员注意的是: 日志并不是完全可靠的。 高明的黑客在入侵系统后, 经常会“打扫”现场。所以需要综合运用以上的系统命令,全面、综合地进行审 查和检测,切忌断章取义,否则很难发现入侵或者做出错误的判断。另外,在有些情况下, 可以把日志送到打印机, 这样网络入侵者怎么修改日志都 没有用。并且,通常要广泛记录日志。另外, syslog 设备是一个攻击者的显著 目标。一个为其他主机维护

34、日志的系统对于防范服务器攻击特别脆弱, 因此要特 别注意。6.5 Linux 日志输出查看方式Linux 下面提供了许多文本工具来查看和处理日志文件,下面给读者提供一些比 较常见和有用的工具。6.5.1 dmesg使用 dmesg 命令可以快速查看最后一次系统引导的引导日志 。如下所示:# dmesgLinux version 2.4.20-8 () (gcc version3.2.2 20030222 (Red Hat Linux 3.2.2-5) #1 Thu Mar 13 17:54:28 EST 2003BIOS-provi

35、ded physical RAM map:BIOS-e820: 0000000000000000 - 000000000009f800 (usable)BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)BIOS-e820: 00000000000ca000 - 00000000000cc000 (reserved)BIOS-e820: 00000000000dc000 - 0000000000100000 (reserved)BIOS-e820: 0000000000100000 - 00000000322f0000 (usabl

36、e)BIOS-e820: 00000000322f0000 - 00000000322fc000 (ACPI data)BIOS-e820: 00000000322fc000 - 0000000032300000 (ACPI NVS)BIOS-e820: 0000000032300000 - 0000000032400000 (usable)BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved)BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)BIOS-e820: 000

37、00000fffe0000 - 0000000100000000 (reserved) 0MB HIGHMEM available.804MB LOWMEM available.On node 0 totalpages: 205824 zone(0): 4096 pages. zone(1): 201728 pages. zone(2): 0 pages.Kernel command line: ro root=LABEL=/ hdc=ide-scsiide_setup: hdc=ide-scsiInitializing CPU#0Detected 1795.379 MHz processor.Console: colour VGA+ 80x25Calibrating delay loop. 3578.26 BogoMIPSMemory: 806148k/823296k available (1347k

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论