一、 日志简介
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 |
由用户程序生成的信息 |
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]:
其中记录日志文件的内容为(记录: 时间,地点,人物,事件): 时间 主机名 进程名[进程 id]:日志的内容
二.使用 rsyslog 做一台日志服务器
实验角色设定:
主机 |
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.