如何在CentOS 6.5中安装并配置rsyslog集中式日志服务器

时间:2019-08-20 17:58:21  来源:igfitidea点击:

在本教程中,我们将在RHEL/CentOS 6.5中安装并设置rsyslog集中式日志服务器。
所有来自客户端服务器的日志都将被发送到集中式日志服务器,即rsyslog服务器。

检查预装的rsyslog包

首先检查rsyslog包是否安装在系统

一般来说默认情况下,RHEL 6.x和CentOS 6.x默认为rsyslog 5.x版本,因此我们将用新版本7.6更新rsyslog。

查看rsyslog版本信息

rpm -qa|grep rsyslog
rsyslogd -v

在RHEL 6.x/CentOS 6.x中安装/更新rsyslog 7.6版本

创建一个新的yum repo文件

vi /etc/yum.repos.d/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

安装rsyslog:

yum install rsyslog

更新rsyslog版本

yum update rsyslog

在RHEL 6.x/CentOS 6.x中配置rsyslog

开启模块

备份原始文件

cp -pv /etc/rsyslog.conf /etc/rsyslog.conf.orig

编辑/etc/rsyslog.conf文件

vi /etc/rsyslog.conf

删除这些模块名称前面的井号#来取消注释

module(load="imuxsock") # provides support for local system logging (e.g. via logger command)
module(load="imklog")   # provides kernel logging support (previously done by rklogd)

将emerg的动作设置为 :omusrmsg:*

*.emerg                        :omusrmsg:*

启用UDP端口514:

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

在文件 /etc/rsyslog.conf的后面,添加下面内容:

$template TmplAuth, "/var/log/rsyslog_custom/%HOSTNAME%/%PROGRAMNAME%.log" 
$template TmplMsg, "/var/log/rsyslog_custom/%HOSTNAME%/%PROGRAMNAME%.log" 
authpriv.*   ?TmplAuth
*.info,mail.none,authpriv.none,cron.none   ?TmplMsg

配置之后,内容如下(参考):

[root@localhost /]# egrep -v '^#|^$' /etc/rsyslog.conf -v 
module(load="imuxsock") # provides support for local system logging (e.g. via logger command)
module(load="imklog")   # provides kernel logging support (previously done by rklogd)
module(load="imudp") # needs to be done just once
input(type="imudp" port="514")
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
authpriv.*                                              /var/log/secure
mail.*                                                  /var/log/maillog
cron.*                                                  /var/log/cron
*.emerg                                                 :omusrmsg:*
uucp,news.crit                                          /var/log/spooler
local7.*                                                /var/log/boot.log
$template TmplAuth, "/var/log/rsyslog_custom/%HOSTNAME%/%PROGRAMNAME%.log"
$template TmplMsg, "/var/log/rsyslog_custom/%HOSTNAME%/%PROGRAMNAME%.log"
authpriv.*   ?TmplAuth
*.info,mail.none,authpriv.none,cron.none   ?TmplMsg
[root@localhost /]#

编辑/etc/sysconfig/rsyslog文件, 设置 SYSLOGD_OPTIONS

SYSLOGD_OPTIONS=""

启动/重启rsyslog服务

启动rsyslog

/etc/init.d/rsyslog start

重新启动rsyslog

/etc/init.d/rsyslog restart

如果要停止rsyslog:

/etc/init.d/rsyslog stop

在/var/log中新建一个目录

用于将所有服务器的日志保存在这个目录中。

mkdir -p /var/log/rsyslog_custom

为rsyslog设置SELINUX规则

一些系统管理员,禁用了selinux。

如果我们想保持启用SELINUX。那么需要进行规则设置:

semanage fcontext -a -t syslogd_exec_t /sbin/rsyslogd
restorecon /sbin/rsyslogd

/usr/sbin/semanage fcontext -a -t var_log_t "/var/log/rsyslog_custom(/.*)?"
/sbin/restorecon -R -v /var/log/rsyslog_custom

为rsyslog设置IPTABLES

rsyslog服务使用UDP端口号514。

编辑 /etc/sysconfig/iptables文件

vi /etc/sysconfig/iptables

添加下面规则:

-A INPUT -m state --state NEW -m udp -p udp --dport 514 -j ACCEPT

重新启动iptables服务

/etc/init.d/iptables restart

使用iptables-nL命令检查iptables规则

重启rsyslog,验证514端口监听状态

/etc/init.rsyslog restart

检查端口514的侦听状态

netstat -uanp|grep rsyslog

在客户端服务器中配置rsyslog

编辑客户端系统中的rsyslog.conf文件。
该方法适用于基于Red Hat和Debian的操作系统(如RHEL、CentOS、Debian、Ubuntu)

语法:

*.* @rsyslog服务器ip:514

示例:

编辑文件

vi /etc/rsyslog.conf

添加下面内容

*.* @192.168.56.102:514

重启rsyslog服务

/etc/init.d/rsyslog restart

现在在客户机系统中重新登录,这样我们将捕获日志。同时我将在rsyslog服务器中看到相同的日志信息。

验证 服务器日志

切换到目录/var/log/rsyslog_custom。
下面有各个客户端主机名的目录。

[root@localhost ~]# ls -l /var/log/rsyslog_custom/
total 8
drwx------. 2 root root 4096 Mar  1 07:52 localhost
drwx------. 2 root root 4096 Mar  1 07:47 theitroad
[root@localhost ~]# 
[root@localhost ~]# ls -l /var/log/rsyslog_custom/theitroad/
total 32
-rw-------. 1 root root 193 Mar  1 07:46 CRON.log
-rw-------. 1 root root 619 Mar  1 07:47 dbus.log
-rw-------. 1 root root 255 Mar  1 07:47 dhclient.log
-rw-------. 1 root root   0 Mar  1 07:46 kernel.log
-rw-------. 1 root root 659 Mar  1 07:47 NetworkManager.log
-rw-------. 1 root root 120 Mar  1 07:46 rsyslogd-2039.log
-rw-------. 1 root root 149 Mar  1 07:46 rsyslogd.log
-rw-------. 1 root root 296 Mar  1 07:44 sudo.log
-rw-------. 1 root root 316 Mar  1 07:44 su.log
[root@localhost ~]#

重要提示:设置好所有内容后,最好检查*/var/log/messages*。如果发现与rsyslog相关的错误/警告

注意:建议在安全内部网络中使用此rsyslog服务器设置。rsyslog服务器不应公开。

以防万一你想

安全设置

为了保护rsyslog服务器。我们可以使用iptable来控制,只接受来自特定ip地址/服务器的日志。

例如,只允许192.168.56.1发送的日志:

vi /etc/sysconfig/iptables

-A INPUT -m state --state NEW -m udp -p udp -s 192.168.56.1 --dport 514 -j ACCEPT

只允许网络10.0.0.0/255.255.255.0 连接到rsyslog服务器

vi /etc/sysconfig/iptables

-A INPUT -m state --state NEW -m udp -p udp -s 10.0.0.0/24 --dport 514 -j ACCEPT

重新启动iptable使规则生效:

/etc/init.d/iptables restart