如何查看linux的系统日志
日志文件详细记录了系统每天发生的各种事件。用户可以通过日志文件检查错误的原因,或者在受到攻击和黑客攻击时追踪攻击者。日志的两个重要功能是:审计和监控。Linux系统的日志主要分为两种:1。进程日志由用户进程或其他系统服务进程生成,如服务器上的access_log和error_log日志文件。2.syslog消息系统记录的日志。任何想要记录日志的系统进程或用户进程都可以调用syslog来记录日志。日志系统可分为三个子系统:1。连接时间日志——由多个程序执行,将记录写入/var/log/wtmp和/var/run/utmp,login等程序更新wtmp和utmp文件,这样系统管理员就可以跟踪谁在什么时候登录了系统。2.进程统计——由系统内核执行。当进程终止时,在进程统计文件(pacct或acct)中为每个进程写一条记录。进程统计的目的是为系统中的基本服务提供命令使用统计。3.错误日志-由syslogd(8)执行。各种系统守护进程、用户程序和内核通过syslog(3)向文件/var/log/messages报告值得注意的事件。2.查看日志文件。Linux系统的所有日志文件都在/var/log下,必须有root权限才能查看。日志文件实际上是一个纯文本文件,每一行都是一条消息。有很多方法可以看到。1.cat命令。日志文件总是很大,因为从第一次启动Linux开始,消息就累积在日志文件中。如果文件超过一页,文件的内容将会不清楚,因为显示滚动得太快。2.文本编辑器。最好不要用文本编辑器打开日志文件,因为这样一方面消耗大量内存,另一方面也不允许随意更改日志文件。3.以页的形式显示程序,如或多或少。4.使用grep查找特定的消息。每行代表一条消息,它由四种固定格式组成:n timestamp,表示消息发送的日期和时间;n hostname(在我们的例子中,主机名是escher),表示生成消息的计算机的名称。如果只有一台计算机,主机名可能不是必需的。但是,如果在网络环境中使用syslog,则可能需要将来自不同主机的消息发送到服务器进行集中处理。n生成消息的子系统的名称。可以是“内核”,表示消息来自内核,也可以是进程名,表示发送消息的程序名。方括号中是进程的PID。n条消息,剩下的就是消息的内容了。示例:输入:tail/var/log/messages Jan 05 21:55:51 localhost最后一条消息重复了3次Jan 05 21:55:51 localhost内核:[drm]英特尔i810上的AGP 0.99 @ 0xf 00000000 128 mbjan 05 21:55:56538 1月5日21:56:39 localhost 1:56:39 gconfd(root-4162):开始(版本2.2.0),Pid 4162用户“root”1月5日21:56:39 localhost 1:56:39 gconfd(root-4162):解析的地址“root” Gconf.xml.mandatory "指向只读配置源Jan 05 21:56:39 localhost 1:56:39 gconfd(root-4162):解析的地址" XML: readwrite:/root。。gconf "指向可写配置源Jan 05 21:56:39 localhost 1.28 21:56:39 gconfd(root-4162):解析地址" XML: readonly:/etc。Gconf.xml.defaults”指向只读配置源Jan 05 21:58:20 localhost kernel:msdos fs:iocharset CP 936位于2。值得注意的是,与连接时间日志不同,进程统计子系统默认不激活,必须启动。accton命令用于在Linux系统中启动进程统计,必须以root身份运行。accton命令是acctonfile的形式,必须预先存在。使用touch命令创建一个pacct文件:touch/var/log/pacct,然后运行accton: accton/var/log/pacct。一旦accton被激活,您就可以使用lastcomm命令来监视系统中任何时候执行的命令。要关闭统计,可以使用不带任何参数的accton命令。3.日志系统3.1 syslog的工作原理和配置,配合closelog、openlog,向系统日志器发送消息。Linux内核由许多子系统组成,包括网络、文件访问、内存管理等等。子系统需要向用户发送一些消息,包括消息的来源和重要性。所有子系统都应该向可维护的公共消息区域发送消息。所以,有一个程序叫Syslog。这个程序负责接收消息(如错误消息、警告消息和其他由系统核心和许多系统程序生成的信息,每个信息都包含重要级别)并将消息分发到适当的位置。通常,所有消息都记录在一个特定的文件-日志文件中(通常是/var/adm或/var/log目录中的消息文件),特别重要的消息也会显示在用户终端窗口中。syslog工具有两个重要的文件:syslogd和syslog.Conf,它可以接受接入系统的日志信息,并根据“/etc/syslog.conf”配置文件中的指令处理信息。守护进程和内核为访问系统提供日志信息。因此,任何想要生成日志信息的程序都可以调用syslog接口来生成这些信息。3.2 syslogd守护进程和其他复杂的操作系统一样,Linux也是由许多不同的子系统组成的。一些名为daemon的程序一直在后台运行。换句话说,它们是“未知的”,不需要与用户交互),处理一些日常任务,如打印、发送电子邮件、建立互联网连接等等。每个子系统在发送日志消息时,都会为消息分配一个类型。一条消息分为两部分:“设施”和“级别”。“设备”标识发送消息的子系统,可以组合相同类型的消息。“级别”表示消息的重要性,范围从调试(最不重要)到紧急(最重要)。设施和级别的组合称为优先级。(详细解释参见5.3)/usr/include/sys/syslog . h有相关定义。用户看不到守护程序,因为他们没有窗口和用户界面。然而,这些程序有时必须向用户传达一些信息。为了实现这个目标,需要一个特殊的机制。守护进程的一个很好的例子是syslogd,它在后台运行,将消息从日志区传输到日志文件。函数接口# includeVoid open log (char *,int,int),其中可以是以下值的OR组合:LOG_CONS:如果消息无法发送到syslogd,则直接输出到系统控制台。LOG_NDELAY:立即打开到syslogd的连接。默认情况下,首次写入消息时会打开连接。LOG_PERROR:同时将消息发送到stderr。LOG_PID:将每条消息中的PID记录到void syslog( int,char *)中,这里是设施和级别的OR组合。一般只需要syslog()函数,其他函数可以省略。3.3 syslog.conf这是一个非常重要的文件。位于“/etc/”目录中。告诉syslogd如何根据设备和信息严重性报告信息。该文件使用以下格式:facility . levelactionsyslog . conf的第一列用于指定日志记录功能和日志记录级别,用。、和*可用于匹配所有日志记录功能和日志记录级别。第二列action是消息的分发目标。空行和以#开头的行是注释,可以忽略。Facility.level字段也称为选择器。N facility指定了syslog函数,主要包括以下内容:pam_pwdb上报的auth认证活动。Authpriv包括特权信息,例如用户名、认证活动、cron和at相关信息。关于守护进程和inetd守护进程的信息。Kern内核信息首先通过klogd传输。与印刷服务相关的Lpr信息。邮件电子邮件相关信息标记syslog内部函数用于从新闻服务器生成时间戳新闻信息由用户生成的syslog信息由用户程序生成的用户信息由uucp生成的uucp信息本地0-本地7由自定义程序使用。例如,使用local5作为ssh function *通配符表示除mark之外的所有函数级别,mark决定消息的重要性。每个功能对应的优先级是按照一定的顺序排列的,emerg是最高级别,其次是alert,以此类推。默认情况下,/etc/syslog.conf记录中指定的级别是该级别及更高级别。如果要用某一级,可以用两个运算符!(不相等)and =例如,user。=info告诉syslog接受信息级别的所有用户功能信息。n以下的等级重要性逐渐降低:emerg系统无法使用。需要立即修改警报。暴击阻止某些工具或子系统实现其功能。err阻止一些工具或子系统实现它们的功能。错误条件w .警告预警信息通知具有重要的一般条件info提供信息消息debug不包含功能条件或问题的其他信息none没有重要级别,通常用于调试*所有级别,除了noneAction字段是Action字段之外,所表示的活动具有很大的灵活性。特别是,名称管道可以用来使syslogd生成后处理信息。Syslog主要支持以下活动:file将消息追加到指定的文件末端终端或打印完整的串行或并行设备标识符@host远程日志服务器用户名。将消息写入指定的用户命名管道指定使用mkfifo命令创建的FIFO文件的绝对路径。*将消息写入所有用户选择的字段,以指示消息的类型和优先级;操作字段指示syslogd在收到与选择标准匹配的消息时采取的操作。每个选项由一个设备和一个优先级组成。当指示优先级时,syslogd将记录具有相同或更高优先级的消息。例如,如果指定了“crit ”,将记录所有标有crit、alert和emerg的消息。每行的操作字段指示当选择字段选择给定消息时,该消息应发送到哪里。以下是实际站点的配置(syslog.conf)文件:# store critical staff in critical # *。=暴击;Kern.none /var/adm/critical这将优先保存/var/adm/critical文件中的所有信息,但某些内核信息# kernel消息除外,它们首先存储在kernel #文件中。关键消息和更高级的消息也会#发送到另一台主机和控制台#kern。*/var/ADM/kernel kern . crit @ finlandiakern . crit/dev/console kern . info;克恩。!Err /var/adm/kernel-info第一段代码指示一些内核设备访问/var/adm/kernel文件的信息。第二段代码直接引导所有具有crit和更高优先级的内核信息访问远程主机。如果它们也存储在远程主机上,您仍然可以尝试找到损坏的原因。第四行显示syslogd将优先级从info到warning的所有内核信息保存在/var/adm/kernel-info文件夹中。排除所有错误和更高优先级。tcp wrapper用mail.info登录,我们显示# TTY 12 #邮件上的所有连接。= info /dev/tty12这将使用mail.info(在sourcelog _ maillog _ info中)将所有信息引导到/dev/tty12下的控制台12。例如,默认情况下,tcpwrapper tcpd(8)在一个文件邮件中使用这个# storeallmail关心的东西。*;邮件。!=info /var/adm/mail模式匹配具有邮件功能的所有信息,但具有info优先级的信息除外。它们将被保存在文件/var/adm/mail # logallmail.info和news.info消息中,保存到info # mail。新闻。= info/var/ADM/info提取具有mail.info或news.info功能优先级的所有信息,并将其存储在文件/var/ADM/info # loginfo中,并将消息通知到消息文件# *。= info*.=通知;\ mail.none /var/log/messages使syslogd日志中具有info或notice功能的邮件信息存储在文件/var/log/messages中,但# log info messages to messages file # *除外。= info语句\ mail,news.none /var/log/messages将syslogd日志中所有具有info优先级的信息存储在/var/log/messages文件中。但是一些具有邮件或新闻功能的信息不能被存储。#紧急消息将使用wall # *显示。= emerg *这行代码告诉syslogd将所有紧急消息写入所有当前登录的用户日志。优先警报的代码#消息将#发送给操作员# *。提醒鲁特,乔伊*。* @ Finland将所有具有警戒或更高权限的信息导向终端操作。第二行代码将所有信息发送到名为Finland的远程主机。这段代码非常有用,尤其是当所有syslog信息都将保存到一台机器上的集群计算机时。3.4 klogd守护程序klog是一个从UNIX内核接收消息的设备。klogd守护进程获取并记录Linux内核信息。通常,syslogd记录来自klogd的所有信息。换句话说,klogd将读取内核信息并将其转发给syslogd进程。但是,如果调用带有-f filename变量的klogd,klogd会记录filename中的所有信息,而不是将其传递给syslogd。当另一个文件被指定用于日志记录时,klogd将所有级别或优先级写入该文件。Klogd中没有类似/etc/syslog.conf的配置文件。用klogd代替syslogd的好处是可以发现很多错误。总之,箭头表示向目标进程发送消息或将信息写入目标文件。图1 Linux日志系统的Linux管理和日志保护logrotate程序是用来帮助用户管理日志文件的,它作为自己的守护进程工作。Logrotate定期轮换日志文件,它可以定期将每个日志文件重命名为备份名称,然后让其守护程序开始使用日志文件的新副本。在/var/log/下生成maillog、maillog.1、maillog.2、boot.log.1、boot.log.2等文件。它由配置文件驱动, 这是/etc/logroatate.conf。以下是logrotate . conf文件的示例:#有关详细信息,请参阅“man log rotate ”#每周旋转日志文件# 7天周期#保持4周的积压日志值每4周旋转4个#备份日志文件#将错误发送到root错误root#向root报告错误#旋转旧日志文件后创建新的(空)日志文件创建#在转换旧日志文件后创建新日志文件#未提交如果您希望日志文件压缩#压缩# 指定是否压缩日志文件# rpm程序包将日志轮换信息放入此目录include/etc/ logrotate.d#没有程序包拥有lastlog或wtmp -我们将在此轮换它们/var/log/wtmp { monthly create 0664 root utmp rotate 1 } #系统特定的日志可以在此配置在网络应用程序中,有一种方法可以保护日志。 在网络中设置一个秘密的syslog主机,并将该主机的网卡设置为混杂模式,以监控子网中的所有syslog数据包,这样就可以将所有需要传输日志的主机配置为向一个不存在的主机发送日志。这样,即使黑客捕获了目标主机,也无法通过syslog.conf文件找到备份日志的主机,它只是一个不存在的主机。实际上,可以补充交换机配置,以确保备份日志主机上的syslog进程可以接受syslog包。例如,如果syslog.conf中的日志主机设置为@ 192.168.0 . 13,但实际网络中并不存在这个日志主机,可能实际上是192.438+068.0.250或者其他主机正在接受syslog数据包。