如何为集中日志管理设置rsyslog

本教程将介绍如何将rsyslog设置为集中式日志管理服务器。 集中日志管理意味着从一台日志服务器上的多个物理或虚拟化服务器收集各种日志,以监控服务器服务的运行状况和安全性。 我们在本教程中使用rsyslog,因为它提供了高性能,高安全性和模块化设计。 它还能够将日志存储在诸如MySQL,Oracle,Hadoop等其他数据库解决方案中,从而更好地整合。

初步说明

对于本教程,我使用32位版本的Oracle Linux 6.4。 请注意,尽管配置是在Oracle Linux下进行的,但在CentOS和Red Hat OS Linux上也可以使用相同的步骤。 在本教程中,我们将使用2台服务器。 第一个将作为rsyslog服务器,另一个将作为rsyslog客户端的工作站/客户端服务器。 在本教程结束之后,我们将看到,一旦用户登录到客户端服务器,rsyslog服务器就会自动记录他所做的活动。


2. Rsyslog安装

对于安装阶段,我们只需要安装rsyslog软件包及其依赖项。 首先,我们确认我们的操作系统版本。

[root@RSYS01 ~]# cat /etc/issue
Oracle Linux Server release 6.4
Kernel \r on an \m
[root@RSYS01 ~]# arch
i686
[root@RSYS01 ~]# uname -a
Linux RSYS01 2.6.32-358.el6.i686 #1 SMP Fri Feb 22 13:37:29 PST 2013 i686 i686 i386 GNU/Linux


接下来,我将配置一个新的存储库,通过yum实用程序安装rsyslog软件包。


[root@RSYS01 ~]# cd /etc/yum.repos.d/
[root@RSYS01 yum.repos.d]# vi rsyslog.repo
[rsyslog-v7-devel]
name=Adiscon Rsyslog v7-devel for CentOS-$releasever-$basearch
baseurl=http://rpms.adiscon.com/v7-devel/epel-$releasever/$basearch
enabled=0
gpgcheck=0
protect=1
[rsyslog-v7-stable]
name=Adiscon Rsyslog v7-stable for CentOS-$releasever-$basearch
baseurl=http://rpms.adiscon.com/v7-stable/epel-$releasever/$basearch
enabled=1
gpgcheck=0
protect=1

[root@RSYS01 yum.repos.d]# yum list rsyslog
Loaded plugins: refresh-packagekit, security
rsyslog-v7-stable | 2.5 kB 00:00
rsyslog-v7-stable/primary_db | 188 kB 00:01
Available Packages
rsyslog.i686 7.6.7-1.el6 rsyslog-v7-stable


完成,现在让我们开始安装新版本的rsyslog。 步骤如下所示:


[root@RSYS01 yum.repos.d]# yum install rsyslog -y
Loaded plugins: refresh-packagekit, security
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package rsyslog.i686 0:7.6.7-1.el6 will be installed
--> Processing Dependency: liblogging-stdlog.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libjson-c.so.2 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libgthttp.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libgtbase.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libgt for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libestr.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Running transaction check
---> Package json-c.i686 0:0.11-3.el6 will be installed
---> Package libestr.i686 0:0.1.9-1.el6 will be installed
---> Package libgt.i686 0:0.3.11-1.el6 will be installed
---> Package liblogging.i686 0:1.0.4-1.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
===============================================================================================================
Package Arch Version Repository Size
===============================================================================================================
Installing:
rsyslog i686 7.6.7-1.el6 rsyslog-v7-stable 920 k
Installing for dependencies:
json-c i686 0.11-3.el6 rsyslog-v7-stable 46 k
libestr i686 0.1.9-1.el6 rsyslog-v7-stable 9.0 k
libgt i686 0.3.11-1.el6 rsyslog-v7-stable 55 k
liblogging i686 1.0.4-1.el6 rsyslog-v7-stable 23 k
Transaction Summary
===============================================================================================================
Install 5 Package(s)
Total download size: 1.0 M
Installed size: 3.2 M
Downloading Packages:
(1/5): json-c-0.11-3.el6.i686.rpm | 46 kB 00:00
(2/5): libestr-0.1.9-1.el6.i686.rpm | 9.0 kB 00:00
(3/5): libgt-0.3.11-1.el6.i686.rpm | 55 kB 00:00
(4/5): liblogging-1.0.4-1.el6.i686.rpm | 23 kB 00:00
(5/5): rsyslog-7.6.7-1.el6.i686.rpm | 920 kB 00:03
---------------------------------------------------------------------------------------------------------------
Total 114 kB/s | 1.0 MB 00:09
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : libgt-0.3.11-1.el6.i686 1/5
Installing : liblogging-1.0.4-1.el6.i686 2/5
Installing : libestr-0.1.9-1.el6.i686 3/5
Installing : json-c-0.11-3.el6.i686 4/5
Installing : rsyslog-7.6.7-1.el6.i686 5/5
Verifying : json-c-0.11-3.el6.i686 1/5
Verifying : libestr-0.1.9-1.el6.i686 2/5
Verifying : liblogging-1.0.4-1.el6.i686 3/5
Verifying : libgt-0.3.11-1.el6.i686 4/5
Verifying : rsyslog-7.6.7-1.el6.i686 5/5

Installed:
rsyslog.i686 0:7.6.7-1.el6

Dependency Installed:
json-c.i686 0:0.11-3.el6 libestr.i686 0:0.1.9-1.el6 libgt.i686 0:0.3.11-1.el6 liblogging.i686 0:1.0.4-1.el6

Complete!

[root@RSYS01 yum.repos.d]# rsyslogd -v
rsyslogd 7.6.7, compiled with:
FEATURE_REGEXP: Yes
GSSAPI Kerberos 5 support: Yes
FEATURE_DEBUG (debug build, slow code): No
32bit Atomic operations supported: Yes
64bit Atomic operations supported: Yes
Runtime Instrumentation (slow code): No
uuid support: Yes
Number of Bits in RainerScript integers: 64

See http://www.rsyslog.com for more information.

[root@RSYS01 ~]# rpm -qa|grep rsyslog
rsyslog-7.6.7-1.el6.i686


接下来,我们继续安装阶段。 对于本教程,我们将跳过安全层,使事情变得简单。 我们将禁用SELINUX,以确保在此期间没有相关的安全性提升问题。 请注意,您不应该在现场设置上禁用SELinux和防火墙。 以下步骤如下:

首先,检查我们的SELINUX策略的当前状态。

[root@RSYS01 ~]# getenforce
Enforcing

要永久禁用它,请按照以下步骤操作:

[root@RSYS01 ~]# cd /etc/sysconfig/
[root@RSYS01 ~]# vi selinux

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted


之后,我们确保我们已禁用防火墙,以避免服务器和客户端连接之间的任何阻塞。

[root@RSYS01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@RSYS01 ~]# /etc/init.d/iptables stop
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Unloading modules: [ OK ]
[root@RSYS01 ~]# /etc/init.d/iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination

Chain FORWARD (policy ACCEPT)
num target prot opt source destination

Chain OUTPUT (policy ACCEPT)
num target prot opt source destination


完成,现在安装阶段已经成功。 我们进入配置阶段。


Rsyslog配置

已经安装了所有软件包依赖关系,我们将重点介绍rsyslog的配置。 我们进入配置文件,进行如下更改:

[root@RSYS01 ~]# vi /etc/rsyslog.conf 

module(load="imudp") # needs to be done just once
input(type="imudp" port="514")

$template Auditlog, "/var/log/rsyslog_client/%HOSTNAME%/%PROGRAMNAME%.log"
$template TmplMsg, "/var/log/rsyslog_client/%HOSTNAME%/%PROGRAMNAME%.log"
authpriv.* ?Auditlog

以下是我们所做的配置更改的说明:

  • 模块(load =“imudp”) #需要完成一次==>我们将提供通过UDP协议在服务器和客户端之间接收rsyslog消息的能力
  • 输入(type =“imudp”port =“514”) ==>我们将使用端口514作为rsyslog服务
  • $ template Auditlog“/var/log/rsyslog_client/%HOSTNAME%/%PROGRAMNAME%.log” ==>对于连接到rsyslog服务器的每个客户端,系统将自动创建客户端主机名文件夹和相关服务文件名
  • $ template TmplMsg“/var/log/rsyslog_client/%HOSTNAME%/%PROGRAMNAME%.log” ==>对于连接到rsyslog服务器的每个客户端,系统将自动创建客户端主机名文件夹和相关服务文件名


配置完成后,让我们启动rsyslog服务。

[root@RSYS01 yum.repos.d]# /etc/init.d/rsyslog restart
Shutting down system logger: [FAILED]
Starting system logger: [ OK ]

使用netstat o确保rsyslog服务是否已启动并运行:

[root@RSYS01 yum.repos.d]# netstat -uanp|grep rsyslog
udp 0 0 0.0.0.0:514 0.0.0.0:* 2430/rsyslogd
udp 0 0 :::514 :::* 2430/rsyslogd

以上您可以看到我们的rsyslog服务正在与我们所做的端口分配一起运行。 默认情况下,rsyslog还会审核自己的服务器访问,因为它将rsyslog服务器视为客户端。 为了确保它是否正常工作,我们可以查看/ var / log文件夹。 我们来检查是否存在名称为RSYS01(这是服务器主机名)的文件夹。

[root@RSYS01 log]# cd /var/log/
[root@RSYS01 log]# ls -l|grep rsyslog
drwx------ 3 root root 4096 Oct 24 18:21 rsyslog_client
[root@RSYS01 log]# cd rsyslog_client
[root@RSYS01 rsyslog_client]# ls
RSYS01
[root@RSYS01 rsyslog_client]# cd RSYS01/
[root@RSYS01 RSYS01]# ls
rsyslogd.log

好,似乎一切都像一个魅力! 现在我们继续进行测试阶段,总结出所有的配置是按预期的。

4.测试阶段

由于运行rsyslog服务的服务器也可以作为客户端使用,如果监视本地登录信息,我们可以看到服务器本身。 为了确保它是否正确,让我们使用SSH服务登录到另一个会话的rsyslog服务器。 对于这一步,我们假设服务器本身已经配置了无密码配置。 以下步骤如下:

[root@RSYS01 RSYS01]# ssh root@RSYS01
Last login: Sat Oct 22 15:45:48 2016 from 172.20.181.70
[root@RSYS01 ~]# who
root pts/0 2016-10-22 00:21 (172.20.181.11)
root pts/1 2016-10-24 18:22 (127.0.0.1)
[root@RSYS01 ~]# exit
logout
Connection to RSYS01 closed.

完成,就这么简单。 我们只需登录到rsyslog服务器本身,一旦创建了新的会话,我们只需要再次登录,以确保rsyslog服务对会话进行了审核。 现在,我们来看看会话是否被审计。 以下步骤如下:

[root@RSYS01 ~]# cd var/log/rsyslog_client/RSYS01
[root@RSYS01 RSYS01]# ls
rsyslogd.log sshd.log
[root@RSYS01 RSYS01]# tail -f sshd.log
Oct 24 18:22:46 RSYS01 sshd[2536]: Accepted password for root from 192.168.43.101 port 52862 ssh2
Oct 24 18:22:46 RSYS01 sshd[2536]: pam_unix(sshd:session): session opened for user root by (uid=0)
Oct 24 18:22:50 RSYS01 sshd[2536]: Received disconnect from 192.168.43.101: 11: disconnected by user
Oct 24 18:22:50 RSYS01 sshd[2536]: pam_unix(sshd:session): session closed for user root
^C


非常好,当服务器上的会话启动时,rsyslog服务自动创建一个sshd.log文件。 在日志文件中,我们可以看到有详细的列表列出了在会话下创建的时间,端口和用户。

现在,一切都按预期工作。 我们设置rsyslog客户端的工作站,由rsyslog服务器审核。 对于rsyslog客户端,您只需要安装rsyslog软件包,并在配置文件中进行简单的更改以链接到rsyslog服务器。 以下步骤如下:

[root@CLIENT01 ~]# cd /etc/yum.repos.d/
[root@CLIENT01 yum.repos.d]# yum list rsyslog
Loaded plugins: refresh-packagekit, security
rsyslog-v7-stable | 2.5 kB 00:00
rsyslog-v7-stable/primary_db | 188 kB 00:01
Available Packages
rsyslog.i686 7.6.7-1.el6 rsyslog-v7-stable

[root@RSYS01 yum.repos.d]# yum install rsyslog -y
Loaded plugins: refresh-packagekit, security
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package rsyslog.i686 0:7.6.7-1.el6 will be installed
--> Processing Dependency: liblogging-stdlog.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libjson-c.so.2 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libgthttp.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libgtbase.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libgt for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libestr.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Running transaction check
---> Package json-c.i686 0:0.11-3.el6 will be installed
---> Package libestr.i686 0:0.1.9-1.el6 will be installed
---> Package libgt.i686 0:0.3.11-1.el6 will be installed
---> Package liblogging.i686 0:1.0.4-1.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===============================================================================================================
Package Arch Version Repository Size
===============================================================================================================
Installing:
rsyslog i686 7.6.7-1.el6 rsyslog-v7-stable 920 k
Installing for dependencies:
json-c i686 0.11-3.el6 rsyslog-v7-stable 46 k
libestr i686 0.1.9-1.el6 rsyslog-v7-stable 9.0 k
libgt i686 0.3.11-1.el6 rsyslog-v7-stable 55 k
liblogging i686 1.0.4-1.el6 rsyslog-v7-stable 23 k

Transaction Summary
===============================================================================================================
Install 5 Package(s)

Total download size: 1.0 M
Installed size: 3.2 M
Downloading Packages:
(1/5): json-c-0.11-3.el6.i686.rpm | 46 kB 00:00
(2/5): libestr-0.1.9-1.el6.i686.rpm | 9.0 kB 00:00
(3/5): libgt-0.3.11-1.el6.i686.rpm | 55 kB 00:00
(4/5): liblogging-1.0.4-1.el6.i686.rpm | 23 kB 00:00
(5/5): rsyslog-7.6.7-1.el6.i686.rpm | 920 kB 00:03
---------------------------------------------------------------------------------------------------------------
Total 114 kB/s | 1.0 MB 00:09
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : libgt-0.3.11-1.el6.i686 1/5
Installing : liblogging-1.0.4-1.el6.i686 2/5
Installing : libestr-0.1.9-1.el6.i686 3/5
Installing : json-c-0.11-3.el6.i686 4/5
Installing : rsyslog-7.6.7-1.el6.i686 5/5
Verifying : json-c-0.11-3.el6.i686 1/5
Verifying : libestr-0.1.9-1.el6.i686 2/5
Verifying : liblogging-1.0.4-1.el6.i686 3/5
Verifying : libgt-0.3.11-1.el6.i686 4/5
Verifying : rsyslog-7.6.7-1.el6.i686 5/5

Installed:
rsyslog.i686 0:7.6.7-1.el6

Dependency Installed:
json-c.i686 0:0.11-3.el6 libestr.i686 0:0.1.9-1.el6 libgt.i686 0:0.3.11-1.el6 liblogging.i686 0:1.0.4-1.el6

Complete!


完成了,现在我们在客户端工作站上安装了rsyslog软件包。 现在让我们在rsyslog配置文件中进行修改。 对于客户端配置,您只需要修改以下配置:

[root@CLIENT01 ~]# vi /etc/rsyslog.conf

*.* @192.168.43.101:514

就是这样,我们在配置文件中包含IP 192.168.43.101和端口514。 该IP是rsyslog服务器的IP。 现在,一切都完成了,我们重新启动客户端工作站上的rsyslog服务来加载更改。 以下步骤如下:

[root@CLIENT01 ~]# /etc/init.d/rsyslog restart
Shutting down system logger: [FAILED]
Starting system logger: [ OK ]


现在让我们回到我们的rsyslog服务器,看看是否在rsyslog日志目录中创建了rsyslog客户端主机名的文件夹。 以下步骤如下:

[root@RSYS01 ~]# cd var/log/rsyslog_client/
[root@RSYS01 rsyslog_client]# ls
RSYS01 CLIENT01


非常好,请注意,已经自动创建了具有rsyslog客户端主机名的文件夹。 这确认我们的配置是正确的,并且rsyslog客户端能够建立到rsyslog服务器的UDP连接。

对于下一个测试过程,我们以另一个用户身份登录到rsyslog客户端,看看rsyslog服务器是否设法捕获活动。 以下步骤如下:

::CLIENT01::
login as: shahril
shahril@192.168.43.102's password:
Last login: Sun Oct 23 00:21:40 2016 from 172.20.181.11
[shahril@CLIENT01 ~]$ who
shahril pts/0 2016-10-24 17:01 (192.168.43.80)
[shahril@CLIENT01 ~]$ exit


现在,我们检查rsyslog服务器中的日志目录,看看我们是否设法记录从rsyslog客户端创建的活动。

[root@RSYS01 ~]# cd var/log/rsyslog_client/
[root@RSYS01 rsyslog_client]# cd CLIENT01/
[root@RSYS01 CLIENT01]# ls
rsyslogd.log sshd.log
[root@RSYS01 CLIENT01]# tail -10 sshd.log
Oct 24 17:01:47 CLIENT01 sshd[2102]: Accepted password for shahril from 192.168.43.80 port 17002 ssh2
Oct 24 17:01:47 CLIENT01 sshd[2102]: pam_unix(sshd:session): session opened for user shahril by (uid=0)


伟大的结果显示,过程按预期工作。 现在进行最后的测试,让我们重新登录到rsyslog客户端,并安装一个包来测试rsyslog服务是否设法记录比会话创建的其他活动。 以下步骤如下:

::CLIENT01::
login as: root
root@192.168.43.102's password:
Last login: Sat Oct 22 10:21:40 2016 from 172.20.181.11
[root@CLIENT01 ~]# yum install firefox -y
Loaded plugins: refresh-packagekit, security
Repository 'OEL64' is missing name in configuration, using id
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package firefox.i686 0:10.0.12-1.0.1.el6_3 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
firefox i686 10.0.12-1.0.1.el6_3 OEL64 20 M

Transaction Summary
================================================================================
Install 1 Package(s)

Total download size: 20 M
Installed size: 23 M
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : firefox-10.0.12-1.0.1.el6_3.i686 1/1
Verifying : firefox-10.0.12-1.0.1.el6_3.i686 1/1

Installed:
firefox.i686 0:10.0.12-1.0.1.el6_3

Complete!

以上显示我们已经在rsyslog客户端工作站中成功安装了Firefox浏览器安装程序。 现在让我们回到我们的rsyslog服务器,检查rsyslog是否能够将安装第三方软件包的过程记录到工作站中。 以下步骤如下:

[root@RSYS01 ~]# cd var/log/rsyslog_client/
[root@RSYS01 CLIENT01]# ls
rsyslogd.log sshd.log yum.log
[root@RSYS01 CLIENT01]# tail -20 yum.log
Oct 25 17:13:17 CLIENT01 yum[2319]: Installed: firefox-10.0.12-1.0.1.el6_3.i686

优秀的rsyslog服务设法审核客户端工作站中安装活动的信息。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏