一、 日志简介

Linux 保存了系统中所发生事件的详细记录,这些记录称作日志文件或消息文件。可以查阅日志文件来确定系统当前状态,观察***者踪迹,寻找某特定程序(或事件)相关的数据。centos6 使用 rsyslog 替代 syslog 记录日志

rsyslog 的日志文件位于 /etc/rsyslog.conf 文件中 #开头为注释 主要包括几大部分:

#### MODULES #### 表示系统加载的模块

1.$ModLoad imuxsock 表示加载 imuxsock 模块 模块文件位于 /lib64/rsyslog/目录下

其中下面几行注释的部分 用于通过 udp 或者 tcp 接受远程消息 端口是 514(默认注释也就是不开启)

# 提供 udp 接受消息#$ModLoad imudp #$UDPServerRun 514

# 提供 TCP 接受消息#$ModLoad imtcp #$InputTCPServerRun 514

#### GLOBAL DIRECTIVES #### 全局规则设定

$WorkDirectory /var/lib/rsyslog 工作目录

$IncludeConfig /etc/rsyslog.d/*.conf 包含 /etc/rsyslog.d 下所有 conf 结尾的配置文件

#### RULES #### 用于配置使 位置语法 facility.priority target

facility 表示产生日志的设备 有以下这些值

 

关键字

解释

kern

0

内核信息,首先通过 klogd 传递

user

1

由用户程序生成的信息

mail

2

与电子邮件有关的信息


daemon

3

与 inetd 守护进程有关的信息

auth

4

由 pam_pwdb 报告的认证活动

syslog

5

由 syslog 生成的信息

lpr

6

与打印服务有关的信息

news

7

来自新闻服务器的信息

uucp

8

由 uucp 生成的信息(uucp = unix to unix copy)

cron

9

与 cron 和 at 有关的信息

authpriv

10

包括私有信息(如用户名)在内的认证活动

ftp

11

与 FTP 有关的信息


12-15

系统保留

 

local0 ~ local7 16-23 由自定义程序使用,例如使用 local5 做为 ssh 功能

mark rsyslog 内部功能,用于生成时间戳

* 通配符代表除了 mark 以外的所有功能

 

 

priority 表示优先级 设置优先级后 所有低于该优先级的日志都输出到 target 中

 

 

关键字

解释

emerg

0

系统不可用

alert

1

需要立即被修改的条件

crit

2

(临界)阻止某些工具或子系统功能实现的错误条件

err

3

阻止工具或某些子系统部分功能实现的错误条件

warning

4

预警信息

notice

5

具有重要性的普通条件

info

6

提供信息的消息


debug 7 不包含函数条件或问题的其他信息

none (屏蔽所有来自指定设备的消息)没有优先级,通常用于排错

* 除了 none 之外的所有级别

facility 部分可以是用逗号(,)分隔的多个设备,而多个 seletor 之间也可以通过分号(;)组合在一起。注意多个组合在一起的选择符,后面的会覆盖前面的,这样就允许从模式中排除一些优先级。默认将对指定级别以及更严重级别的消息进行操作,但是可以通过 2 个操作符进行修改。等于操作符(=)表示仅对这个级别的消息进行操作,不等操作符(!)表示忽略这个级别以及更严重级别的消息。这两个操作符可以同时使用,不过"!"必须出现在"="的前面

比如 就表示 uucp 和 news 的 crit 消息 都记录在/var/log/spooler 中

uucp,news.crit /var/log/spooler

比如(所有设备的 info 消息 除了 mail 和 authpric 和 cron 外 都记录在/var/log/messages)

*.info;mail.none;authpriv.none;cron.none /var/log/messages

target:将日志记录于指定的目标地点有以下几种选择:

普通文件:使用文件的绝对路径来指明日志文件所在的位置,例如:/var/log/cron。终端设备:终端可以是/dev/tty0~/dev/tty6,也可以为/dev/console。

用户列表:例如动作为“root hackbutter”,将消息写入到用户 root 与 hackbutter 的计算机屏幕上。远程主机:将信息发往网络中的其他主机的 rsyslog 守护进程,格式为“@hostname”。

target 前使用“-”表示异步写入。比如

mail.* -/var/log/maillog

查看其中 一个 target 文件内容

[root@node1 ~]# more /var/log/messages

Nov 19 17:45:01 localhost rsyslogd: [origin software="rsyslogd" swVersion="7.4.7" x-pid="787" x- info="http://www.rsyslog.com"] rsyslogd was HUPed

Nov 19 17:50:31 node1 dhclient[1182]: DHCPREQUEST on eno16777736 to 192.168.58.254 port 67 (xid= 0x117d9a59)

Nov 19 17:50:31 node1 dhclient[1182]: DHCPACK from 192.168.58.254 (xid=0x117d9a59)


Nov 19 17:50:31 node1 NetworkManager[856]:  address 192.168.58.147

其中记录日志文件的内容为(记录: 时间,地点,人物,事件): 时间 主机名 进程名[进程 id]:日志的内容

.使用 rsyslog 做一台日志服务器




实验拓扑:

linux系统日志_第1张图片

实验角色设定:

主机

IP 地址

角色

Test01

192.168.100.1/24

日志服务器,接收局域网服务器产生的日志

Test02

192.168.100.2/24

日志产生主机,将产生的登陆认证日志通过局域

网传递给日志服务器记录。

实验过程:

日志产生主机 Test02 上的配置:

2.1)设定 selinux 状态和 iptables 防火墙

#测试网络连通性

[root@Test02 ~]# ping -c 1 192.168.100.1

PING 192.168.100.1 (192.168.100.1) 56(84) bytes of data.

64 bytes from 192.168.100.1: icmp_seq=1 ttl=64 time=3.75 ms

--- 192.168.100.1 ping statistics ---

1 packets transmitted, 1 received, 0% packet loss, time 4ms rtt min/avg/max/mdev = 3.759/3.759/3.759/0.000 ms


#设定selinux 状态为Permissive [root@Test02 ~]# setenforce 0

 

#设定防火墙

[root@Test02 ~]# iptables -L -n Chain INPUT (policy ACCEPT)

target prot opt source destination

ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ACCEPT icmp -- 0.0.0.0/0  0.0.0.0/0

ACCEPT all -- 0.0.0.0/0 0.0.0.0/0

ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22

REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT)

target prot opt source destination

REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT)

target prot opt source destination [root@Test02 ~]#

 

2.2)修改 rsyslog 的配置文件,将登陆认证日志发向 Test01

[root@Test02 ~]# vim /etc/rsyslog.conf

修改:

# The authpriv file has restricted access.