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

那么下面就让我们来了解一下日志系统吧。

    

syslog

 日志系统 (早期的日志系统,只支持文本文件记录)

syslogd: 系统进程的相关日志

klogd: 内核事件相关的日志

 

Rsyslog

今天我们主要讲解的rsyslog的内容,它相比于syslog来说功能要强大的多:

支持多线程

支持TCP,SSL,TLS,RELP

能够存放在MySQL, PGSQL, Oracle等多种关系型数据中

可实现过滤系统信息中的任意部分

可以自定义输出格式

适用于企业级别日志记录需求

 

对于rsyslog日志系统,其配置文件在/etc/rsyslog.conf中。

该配置文件中定义的格式为

facility.priority   target 

分别对三者进行解释:

   facility: 设施,从功能或程序上对日志进行分类,并由专门的工具负责记录其日志

auth        #认证相关

authpriv    #认证授权相关

cron        #周期性任务记录

daemon     # 守护进程相关

kern       #内核进程相关

lpr        #打印相关

mail       #邮件相关

mark      #防火墙标记相关

news      #新闻相关

security    #安全相关

syslog     #自己记录日志相关

user       #用户相关

uucp

local0 through local7: 8 customed facility

 

指定设施时可以使用通配符

*: 所有

f1,f2,f3,...: 列表

!: 取反


priority: 级别

debug           # 程序或系统的调试信息 

info            # 一般信息

notice          # 不影响正常功能,需要注意的消息 

warning,warn   # 可能影响系统功能,需要提醒用户的重要事件 

err,error        # 错误信息 

crit            # 比较严重的 

alert           # 必须马上处理的 

emerg/panic     # 会导致系统不可用的 

 

通配符:

*: 所有级别

none: 没有任何级别

 

Target: 

文件路径:例如/var/log/messages

用户: *

日志服务器:@SERVER_IP

管道:|COMMAND

 

配置文件中的一些符号的用法及意义:下面是一些例子

mail.info /var/log/maillog

# 比指定级别更高的所有级别,包括指定的级别本身;

mail.=info   /var/log/maillog

# 明确指定级别;

mail.!info  *

# 除了指定级别

*.info        | COMMAND

# 所有facilityinfo级别

mail.*: 

# mail的所有级别

mail,news.info 

# mail和new的info级别

 


日志信息的格式:

时间 主机 进程(PID):事件

Linux日志系统_第1张图片

 

启用日志服务器的功能:

配置文件中划分为3部分:

#### MODULES ####  日志的模块
#### GLOBAL DIRECTIVES ####定义全局日志格式的指令
#### RULES ####

首先在日志模块中启用一下几项

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
 
# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514


rsyslog支持将日志存储于MySQL服务器中:

1)安装配置好mysql数据库服务;

[root@localhost ~]# yum install mysql-server

2)安装rsyslog-mysql包;

[root@localhost ~]# yum install rsyslog-mysql

3)创建rsyslog依赖的数据库:

[root@localhost ~]# mysql < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql

4)配置rsyslog启用模块

#### Modules #####启用模块:

添加以下模块

$ModLoad ommysql

 wKioL1P0gayjT5VzAABACl_Ehqc407.jpg

####rules####段中定义记录日志信息于数据库中

facility.priority :ommysql:SERVER_IP,DATABASE,USERNAME,PASSWORD

*.info;mail.none;authpriv.none;cron.none :ommysql:127.0.0.1,Syslog,sysloguser,syslogpass 

5)数据库授权

[root@localhost ~]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.1.71 Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases; 
+--------------------+
| Database           |
+--------------------+
| information_schema |
| Syslog             |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.00 sec)
mysql> grant all on Syslog.* to [email protected] identified by 'syslogpass'
    -> ;            注意:授权的时候用户密码以及数据库名称都要与日志配置文件中一致。
Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;    刷新授权
Query OK, 0 rows affected (0.00 sec)

好了这样就配置好了,我们可以测试下;

安装一个PHP,看看会不会有日志信息:

[root@localhost ~]# yum install php

登进mysql之后进入Syslog数据库查看:

mysql> select * from SystemEvents;
+----+------------+---------------------+---------------------+----------+----------+-----------+------------------------------------------------------------------------------------------------------+------------+------------+-------------+-----------+---------------+---------+-----------------+--------------+-----------+----------+----------+------------+-------------+--------------+-----------------+----------+
| ID | CustomerID | ReceivedAt          | DeviceReportedTime  | Facility | Priority | FromHost  | Message                                                                                              | NTSeverity | Importance | EventSource | EventUser | EventCategory | EventID | EventBinaryData | MaxAvailable | CurrUsage | MinUsage | MaxUsage | InfoUnitID | SysLogTag   | EventLogType | GenericFileName | SystemID |
+----+------------+---------------------+---------------------+----------+----------+-----------+------------------------------------------------------------------------------------------------------+------------+------------+-------------+-----------+---------------+---------+-----------------+--------------+-----------+----------+----------+------------+-------------+--------------+-----------------+----------+
|  1 |       NULL | 2014-08-09 05:48:51 | 2014-08-09 05:48:51 |        0 |        6 | localhost | imklog 5.8.10, log source = /proc/kmsg started.                                                      |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | kernel:     | NULL         | NULL            |     NULL |
|  2 |       NULL | 2014-08-09 05:48:51 | 2014-08-09 05:48:51 |        5 |        6 | localhost |  [origin software="rsyslogd" swVersion="5.8.10" x-pid="27393" x-info="http://www.rsyslog.com"] start |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | rsyslogd:   | NULL         | NULL            |     NULL |
|  3 |       NULL | 2014-08-09 05:49:16 | 2014-08-09 05:49:16 |        1 |        6 | localhost |  Installed: php-common-5.3.3-26.el6.x86_64                                                           |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | yum[27402]: | NULL         | NULL            |     NULL |
|  4 |       NULL | 2014-08-09 05:49:16 | 2014-08-09 05:49:16 |        1 |        6 | localhost |  Installed: php-cli-5.3.3-26.el6.x86_64                                                              |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | yum[27402]: | NULL         | NULL            |     NULL |
|  5 |       NULL | 2014-08-09 05:49:17 | 2014-08-09 05:49:17 |        1 |        6 | localhost |  Installed: php-5.3.3-26.el6.x86_64                                                                  |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | yum[27402]: | NULL         | NULL            |     NULL |
+----+------------+---------------------+---------------------+----------+----------+-----------+------------------------------------------------------------------------------------------------------+------------+------------+-------------+-----------+---------------+---------+-----------------+--------------+-----------+----------+----------+------------+-------------+--------------+-----------------+----------+
5 rows in set (0.00 sec)

发现里面以及记录了。这样就成功了。

 

LogAnalyzer:通过webGUI展示日志信息

LogAnalyzer是分析系统日志,并用web界面展示的工具,下面我们就来安装一下。

 

# yum -y install httpd php php-mysql php-gd 
# tar xf loganalyzer-3.6.5.tar.gz        注意这里首先需要将包下载过来
# mkdir /var/www/html/loganalyzer
# cp loganalyzer-3.6.5/src/* /var/www/html/loganalyzer/
# cp loganalyzer-3.6.5/contrib/* /var/www/html/loganalyzer/
# cd /var/www/html/loganalyzer/
# chmod +x configure.sh secure.sh
# ./configure.sh
# ./secure.sh
# chmod 666 config.php
# chown -R apache.apache ./*


注意:该应用是基于LAMP的,所有相应在配置文件中需要修改的内容我这里没有给出。

如果一切正常的话那么就可以打开网页了。

Linux日志系统_第2张图片然后按照提示一步一步操作即可。

需要注意的是:在配置数据库的时候,每一项都必须与上面创建的一模一样,包括数据库名以及账号密码,必须严格区分大小写。

Linux日志系统_第3张图片

这是最终显示的界面。一旦你看到了这个就表明已经成功安装了。

好了本节的内容就到这里,谢谢!