日志文件对于诊断和解决系统中的问题很有帮助,因为在Linux系统中运行的程序通常会把系统消息和错误消息写入相应的日志文件,这样系统一旦出现问题就会“有据可查”。此外,当主机遭受攻击时,日志文件还可以帮助寻找攻击者留下的痕迹.
在Linux系统中,日志数据主要包括以下三种类型:
【用户日志】
Linux系统本身和大部分服务器程序的日志文件默认情况下都放置在目录。一部分程序公用一个日志文件,一部分程序使用单个日志文件,而有些大型服务器程序由于日志文件不止一个,所以会在“/var/log”目录中建立相应的子目录来存放日志文件,这样既保证了日志文件目录的结构清晰,又可以快速地定位日志文件。有相当一部分日志文件只有root用户才有权限读取,这保证了相关日志信息的安全性。
![QQ截图20130730103728.jpg](https://i-blog.csdnimg.cn/blog_migrate/104cf0f74900ee6879acb4db4423b57f.jpeg)
/var/log/messages:记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序错误等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息。
/var/log/dmesg:记录Linux系统在引导过程中的各种事件信息。
/var/log/lastlog:最近几次成功登录事件和最后一次不成功登录事件。
/var/log/secure:记录用户登录认证过程中的事件信息。
/var/run/utmp:记录当前登录的每个用户的详细信息。
分析日志文件的目的在于通过浏览日志查找关键信息,对系统服务进行调试,判断发生故障的原因等。
1、内核及系统日志
默认安装的sysklogd-1.4.1-39.2软件包提供,该软件包安装了klogd、syslogd两个程序,并通过syslog服务进行控制,
例2:查看日志配置文件“/etc/syslog.conf”中的内容。
从配置文件“/etc/syslog.conf”中可以看到,受syslogd服务管理的日志文件都是Linux系统中最主要的日志文件,他们记录了Linux系统中内核、用户认证、邮件、计划任务等最基本的系统消息。在Linux内核中,根据日志消息的重要程度不同,将其分为不同的优先级别(数字等级越小,优先级越高,消息越重要)。
1 ALERT(警告):必须马上采取措施解决的问题。
3 ERR(错误):运行出现错误。
5 NOTICE(注意):不会影响正常功能,但是需要注意的事件。
对于syslog服务统一管理的大部分日志文件,使用的日志记录格式基本上都是相同的。以下以公共日志文件“/var/log/messages”为例来简单介绍内核及系统日志记录的基本格式。
![QQ截图20130730113646.jpg](https://i-blog.csdnimg.cn/blog_migrate/b8126799d21c2daae36c799862e6e07d.jpeg)
【时间标签】:消息发出的日期和时间。
【子系统名称】:发出消息的应用程序的名称。
在有些情况下,可以设置syslog,使其在把日志信息记录到文件的同时将日志信息发送到打印机进行打印,这样无论网络入侵者怎么修改日志都不能清除入侵的痕迹。syslog日志服务是一个常会被攻击的显著目标,破坏了它将会使管理员难以发现入侵以及入侵的痕迹,因此要特别注意监控其守护进程以及配置文件。
在wtmp、utmp、lastlog等日志文件中,保存了系统用户登录、退出等相关事件的事件消息。但是这些文件都是二进制的数据文件,不能直接使用tail、less等文本查看工具进行浏览,
需要使用who、w、users、last和ac等用户查询命令来获取日志信息。
【who命令】
例4:使用who命令查看当前登录的各用户的所在终端、登录日期/时间/地点等信息。
【w命令】
例5:使用w命令查看当前登录的各用户信息及所运行的进程。
【users命令】
例6:使用users命令查看当前的用户登录会话情况。
【last命令】
例7:使用last命令查看系统中最近的五次用户登录记录。
【ac命令】
例8:统计gzj用户在每天的连接时间。
例9:分别统计各用户的总连接时间。
3、程序日志
a、用户在非常规的时间登录,或者用户登录系统的IP地址和以往的不一样。
c、非法使用或不正当使用超级用户权限。
e、不正常的日志记录,比如日志的残缺不全,或者是诸如wtmp这样的日志文件无故地缺少了中间的记录文件。
三、日志管理策略
1、日志备份和归档
3、控制日志访问权限
一、查看系统的运行级别
![QQ截图20130729141120.jpg](https://i-blog.csdnimg.cn/blog_migrate/15fe57605f108eb95c9cec8638c17594.jpeg)
当用户需要将系统转换为其他的运行级别时,可以使用init程序命令进行,只要使用与运行级别相对应的数字(0-6)作为命令参数即可。
若要设置系统开机后默认进入的运行级别,则编辑“/etc/inittab”配置文件。
【例2】:关闭当前系统。
【例3】:重启当前系统。
三、设置系统服务在不同运行级别中的状态
需要调整各种系统服务在不同运行级别中的自启动状态时,可以使用chkconfig或者ntsysv命令进行操作。
ntsysv工具可以在字符模式中运行,为用户提供了交互式操作的界面,专门用于集中配置各种系统服务的启动状态。单独执行“ntsysv”命令时仅用于管理当前运行级别中的服务,若使用“--level”选项,则可以对指定运行级别中的服务进行管理。例如,执行“ntsysv --level 35”命令后,将打开一个交互式的程序界面,可以同时设置在运行级别3、5中各服务的启动状态。
操作时使用上下箭头键选择不同的服务项,按空格键切换启动状态,“[*]”表示自动启动,“[ ]”表示不要自动启动。按F1键可以获取关于某项服务的详细说明,以便决定是否应加载。
2、使用chkconfig配置工具
将chkconfig命令与“--list”选项配合使用,可以查看特定服务在不同运行级别中的启动状态,若未指定服务名称,则将显示所有服务的启动状态。
![QQ截图20130729152627.jpg](https://i-blog.csdnimg.cn/blog_migrate/f4566190bda9aa7d585fbc67a902f39e.jpeg)
![QQ截图20130729152804.jpg](https://i-blog.csdnimg.cn/blog_migrate/8e80f0f8a56debc1d39cab17f8382597.jpeg)
chkconfig --level 运行级别列表 服务名称 on|off
![QQ截图20130729153009.jpg](https://i-blog.csdnimg.cn/blog_migrate/0cef689620204e345dafaa7ab84cb855.jpeg)
![QQ截图20130729153125.jpg](https://i-blog.csdnimg.cn/blog_migrate/cfeefc13b3d3e709957cfcf5b1d3e8fb.jpeg)
【例8】:使用不带“--level”选项的chkconfig命令将vncserver服务的启动状态设置为关闭。
1、init进程
init进程正是维持整个Linux系统运行的所有进程的“始祖”,因此init进程是不允许被轻易终止的。需要切换不同的系统运行状态时,可以分配给init程序正确的执行参数,由init自身来完成。
inittab文件位于“/etc”目录中,是init程序的配置文件,init进程运行后将按照该文件中的配置内容依次启动系统中需要运行的脚本和程序。
查看“/etc/inittab”文件中的有效配置行:
![QQ截图20130729135025.jpg](https://i-blog.csdnimg.cn/blog_migrate/1522072132a6ceb57745ab050ecde525.jpeg)
在“/etc/inittab”文件中,除了以“#”号开头的注释信息和空行以外,每一行都视为一条有效配置记录。每条配置记录中的四个字段之间使用半角的冒号“:”进行分割,基本格式如下:
意思如下:
各个字段的作用如下:
标记字段可以由1-4个字符组成,用以区别于其他行的配置。在inittab文件中每条配置记录的id标记字段应是唯一的。
在Linux系统中,将各种系统服务程序相互组合构成不同的搭配关系,分别满足不同的系统需求,系统在运行时,采用的每一种服务搭配称之为“运行级别”。默认的系统运行级别包括七种,其功能和服务各部相同。
1:单用户模式,不需要密码验证即可登录系统,多用于系统维护。
3:字符界面的完整多用户模式,大多数服务器主机的运行在此级别。
5:图形界面的多用户模式,提供了图形桌面操作环境。
【action---动作类型字段】
initdefault:设置初始化系统后默认进入的运行级别。
wait:init进程将等待该行配置所对应的脚本操作完成后,再继续执行其他操作。
powerokwait:设置当系统收到恢复供电信号时采取何种动作。
【process---程序或脚本字段】
3、rc.sysinit脚本文件
rc脚本同样由init进程进行调用,文件位于“/etc/rc.d/rc”。
rc脚本通过指定不同的级别参数分别加载及终止不同的系统服务,进入到相应的系统运行级别。
在“/etc/rc.d/rc0.d”---“/etc/rc.d/rc6.d”目录中,保存了一些特殊的符号链接文件。
“/etc/rc.d/rcX.d”目录中的链接文件具有共同的规律:文件名以K或S开头,中间是数字序号,最后是系统中的服务脚本名;所链接的原始服务脚本文件位于“/etc/rc.d/init.d”目录中,
其中以S开头的文件表示启动对应的服务,以K开头的文件表示终止对应的服务,中间的数字表示在启动或终止服务时的执行顺序。
5、rc.local脚本文件
<p font-size:14px;line-height:28px;background-color:#ffffff;"="" style="word-wrap: break-word; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; clear: both; height: auto; overflow: hidden; color: rgb(85, 85, 85); font-family: 宋体;">
rc.local脚本是一个额外的启动控制文件,位于“/etc/rc.d/rc.local”。rc.local脚本通常由rc脚本在最后进行加载,其作用主要是为管理员自行设置启动命令提供一种途径。需在再开机后自动执行的一些命令操作,都可以添加到该文件中。