安装、配置rsyslog日志服务器

ly4983 2024-08-29 13:07:03 阅读 89

一、centos7.9默认已经安装rsyslog

1、程序环境:

​ 配置文件:/etc/rsyslog.conf, /etc/rsyslog.d/

​ 主程序:/usr/sbin/rsyslogd

​ 模块路径:/usr/lib64/rsyslog/

​ Unit File:/usr/lib/systemd/system/rsyslog.service

2、rsyslog中的术语:

​ facility:设施、信道;

​ auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security, user, uucp, syslog, local0-local7

​ priority:记录日志的等级,如果等级是info,代表包含了info以及以上的所有等级事件日志都记录

​ debug, info, notice, warn(warning), err(error), crit(critical), alert, emerg(panic)

3、配置文件:

​ 由三部分组成:严格按照配置段位置添加配置

<code>[12:58 root@centos6.8~]# grep "####" /etc/rsyslog.conf

#### MODULES ####

#### GLOBAL DIRECTIVES ####

#### RULES ####

​ MODULES:定义了模块的选修,如接下来的使用mysql模块记录日志则需要在这里配置

​ GLOBAL DIRECTIVES:定义了全局的环境

​ RULES:定义了记录日志的设施以及等级等信息

RULES的语法说明

facitlity.priority Target

设备 .级别 动作

===============================================================

#设备字段:

=====================================================================

auth #pam产生的日志,认证日志

authpriv #ssh,ftp等登录信息的验证信息,认证授权认证

cron #时间任务相关

kern #内核

lpr #打印

mail #邮件

mark(syslog) #rsyslog服务内部的信息,时间标识

news #新闻组

user #用户程序产生的相关信息

uucp #unix to unix copy, unix主机之间相关的通讯

local 1~7 #自定义的日志设备

===============================================================

#priority: 级别日志级别:

=====================================================================

7 debug #有调式信息的,日志信息最多

6 info #一般信息的日志,最常用

5 notice #最具有重要性的普通条件的信息

4 warning, warn #警告级别

3 err, error #错误级别,阻止某个功能或者模块不能正常工作的信息

2 crit #严重级别,阻止整个系统或者整个软件不能正常工作的信息

1 alert #需要立刻修改的信息

0 emerg, panic #内核崩溃等严重信息

none #什么都不记录

###从上到下,级别从低到高,记录的信息越来越少,如果设置的日志内性为err,则日志不会记录比err级别低的日志,只会记录比err更高级别的日志,也包括err本身的日志。

=====================================================================

Target:

=====================================================================

#文件, 如/var/log/messages

#用户, root,*(表示所有用户)

#日志服务器,@172.16.22.1

#管道 | COMMAND

举例:

mail.info /var/log/maillog: 比指定级别更高的日志级别,包括指定级别自身,保存到/var/log/maillog中

mail.=info /var/log/maillog: 明确指定日志级别为info,保存至/var/log/maillog

mail.!info /var/log/maillog: 除了指定的日志级别(info)所有日志级别信息,保存至/var/log/maillog

*.info /var/log/maillog: 所有facility的info级别,保存至/var/log/maillog

mail.* /var/log/maillog: mail的所有日志级别信息,都保存至/var/log/maillog

mail.notice;news.info /var/log/maillog: mail的notice以上记得日志级别和news的info以上的级别保存至/var/log/maillog

mail,news.crit -/var/log/maillog: mail和news的crit以上的日志级别保存/var/log/maillog中;“-”代表异步模式

客户端的动作有

@hostname -将信息发送可解析远程主机hostname或IP,该主机必须正在运行rsyslogd,并可以识别rsyslog的配置文件,使用upd:514端口传送日志信息

@@hostname -将信息发送可解析远程主机hostname或IP,该主机必须正在运行rsyslogd,并可以识别rsyslog的配置文件,使用tcp:514端口传送日志信息

filename -指定绝对路径的日志文件名来记录日志信息

:omusrmsg:users -发送信息到指定的用户,users可以是用逗号分隔符的用户类别,*表示所有用户

device -将信息发送到指定设备中,如/dev/console

|named-pipe -将日志记录到命令管道,用于日志调试非常方便

以下为rsyslog客户与rsyslgo服务器使用到的模块与配置语法

二、配置与测试

2.1.服务器端配置

1、vi /etc/rsyslog.conf 

<code># Provides UDP syslog reception

$ModLoad imudp

$UDPServerRun 514

# Provides TCP syslog reception

$ModLoad imtcp

$InputTCPServerRun 514

将modules下的这四行的#注释删除。一个udp服务端口、一个是tcp服务端口。可以根据需求只开放UDP或TCP.

2、vi /etc/sysconfig/rsyslog

SYSLOGD_OPTIONS="-r -m 0"code>

-r指定监听端口  默认514  也可以指定其他端口。

测试1:

日志服务器配置:

1.修改/etc/rsyslog.conf

# Provides UDP syslog reception

$ModLoad imudp

$UDPServerRun 514

# Provides TCP syslog reception

$ModLoad imtcp

$InputTCPServerRun 514

2.修改vi /etc/sysconfig/rsyslog

SYSLOGD_OPTIONS="-r -m 0"code>

3.重启

systemctl restart rsyslog

4.netstat -npa | grep 514

查看端口

linux客户端配置:

1.修改/etc/rsyslog.conf

echo 'mail.info @@10.23.3.2:514'>>/etc/rsyslog.conf

@@的意思是使用tcp,此时日志服务器端必须开启tcp514

2.重启

systemctl restart rsyslog

3.测试

logger -p mail.info "this is a test for rmote log."

服务器端查看结果:

[root@node1 ~]# tail -f /var/log/maillog

Jul 16 09:13:08 localhost root: this is a test for rmote log.

Jul 16 09:13:08 localhost root: this is a test for rmote log.

Jul 16 09:13:24 localhost root: this is a test for rmote log.

Jul 16 09:13:24 localhost root: this is a test for rmote log.

由于日志服务器的让所有s*log.conf的配置文件中默认存在

# Log all the mail messages in one place.

mail.* -/var/log/maillog

将mail.设备的所有信息保存到/var/log/maillog下。

测试2:

H3C设备客户端

<H3C>dis cur | incl info

info-center loghost source GigabitEthernet0/1

#定义源接口地址

info-center loghost 10.23.3.2 facility local6

定义日志服务器地址,及设备名称,local6 为自定义名称

<H3C>

<H3C>

服务器端查看

tail -f /var/log/message

ound.

Jul 16 10:36:12 2024 H3C %%10SHELL/5/SHELL_LOGINFAIL(l): -DevIP=10.10.10.249-DEV_TYPE=SECPATH-PN=210235A0W0H158000005; TELNET user root failed to log in from 81.26.240.200 on VTY0.

Jul 16 09:23:47 node1 kernel: net_ratelimit: 1 callbacks suppressed

Jul 16 10:36:16 2024 H3C %%10SC/6/SC_AAA_LAUNCH(l): -DevIP=10.10.10.249-DEV_TYPE=SECPATH-PN=210235A0W0H158000005-AAAType=AUTHEN-AAAScheme= local-Service=login-UserName=enable@system; AAA launched.

Jul 16 10:36:16 2024 H3C %%10LS/5/LS_AUTHEN_FAILURE(l): -DevIP=10.10.10.249-DEV_TYPE=SECPATH-PN=210235A0W0H158000005-AccessType=login-UserName=enable; Authentication is failed. User not found.

Jul 16 10:36:16 2024 H3C %%10SHELL/5/SHELL_LOGINFAIL(l): -DevIP=10.10.10.249-DEV_TYPE=SECPATH-PN=210235A0W0H158000005; TELNET user enable failed to log in from 81.26.240.200 on VTY0.

Jul 16 10:36:19 2024 H3C %%10SC/6/SC_AAA_LAUNCH(l): -DevIP=10.10.10.249-DEV_TYPE=SECPATH-PN=210235A0W0H158000005-AAAType=AUTHEN-AAAScheme= local-Service=login-UserName=shell@system; AAA launched.

Jul 16 10:36:19 2024 H3C %%10LS/5/LS_AUTHEN_FAILURE(l): -DevIP=10.10.10.249-DEV_TYPE=SECPATH-PN=210235A0W0H158000005-AccessType=login-UserName=shell; Authentication is failed. User not found.

Jul 16 10:36:19 2024 H3C %%10DPBLS/5/BLS_ENTRY_OPERATION(l): -DevIP=10.10.10.249-DEV_TYPE=SECPATH-PN=210235A0W0H158000005-VirDev(1000)=Root; blsOptMode(1026)=add;srcIPAddr(1017)=81.26.240.200;blsOptReason(1027)= Auto insert;blsHoldTime(1028)=10

Jul 16 10:36:19 2024 H3C %%10SHELL/5/SHELL_LOGINFAIL(l): -DevIP=10.10.10.249-DEV_TYPE=SECPATH-PN=210235A0W0H158000005; TELNET user shell failed to log in from 81.26.240.200 on VTY0.

可以成功看到H3C设备发过来的日志。

测试三  改变日志服务器的rules规则,使H3C设备的日志,存放到其他非/var/log/message文件中。

修改日志服务器端配置文件

/etc/rsyslog.conf

# Save net-dev messages to net.log

local6.* /var/log/net.log

由于H3C设备的配置 info-center loghost 10.23.3.2 facility local6   使用local6,则在日志服务器端定义规则,local6的所有日志传输到/var/log/net.log下

验证:

[root@node1 ~]# tail -f /var/log/net.log

Jul 16 10:41:04 2024 H3C %%10SHELL/4/LOGINAUTHFAIL(t): -DevIP=10.10.10.249-DEV_TYPE=SECPATH-PN=210235A0W0H158000005; Trap 1.3.6.1.4.1.25506.2.2.1.1.3.0.3<hh3cLogInAuthenFailure>: failed to login from VTY, reason is 3

Jul 16 10:41:04 2024 H3C %%10SHELL/4/LOGOUT(t): -DevIP=10.10.10.249-DEV_TYPE=SECPATH-PN=210235A0W0H158000005; Trap 1.3.6.1.4.1.25506.2.2.1.1.3.0.2<hh3cLogOut>: logout from VTY

Jul 16 10:41:04 2024 H3C %%10SC/6/SC_AAA_LAUNCH(l): -DevIP=10.10.10.249-DEV_TYPE=SECPATH-PN=210235A0W0H158000005-AAAType=AUTHEN-AAAScheme= local-Service=login-UserName=root@system; AAA launched.

Jul 16 10:41:04 2024 H3C %%10LS/5/LS_AUTHEN_FAILURE(l): -DevIP=10.10.10.249-DEV_TYPE=SECPATH-PN=210235A0W0H158000005-AccessType=login-UserName=root; Authentication is failed. User not found.

Jul 16 10:41:04 2024 H3C %%10SHELL/5/SHELL_LOGINFAIL(l): -DevIP=10.10.10.249-DEV_TYPE=SECPATH-PN=210235A0W0H158000005; TELNET user root failed to log in from 220.94.82.231 on VTY1.

Jul 16 10:41:06 2024 H3C %%10SHELL/4/LOGINAUTHFAIL(t): -DevIP=10.10.10.249-DEV_TYPE=SECPATH-PN=210235A0W0H158000005; Trap 1.3.6.1.4.1.25506.2.2.1.1.3.0.3<hh3cLogInAuthenFailure>: failed to login from VTY, reason is 3

Jul 16 10:41:06 2024 H3C %%10SHELL/4/LOGOUT(t): -DevIP=10.10.10.249-DEV_TYPE=SECPATH-PN=210235A0W0H158000005; Trap 1.3.6.1.4.1.25506.2.2.1.1.3.0.2<hh3cLogOut>: logout from VTY

Jul 16 10:41:10 2024 H3C %%10FILTER/6/ZONE_DP_FLT_EXECUTION_TCP_LOG(l): -DevIP=10.10.10.249-DEV_TYPE=SECPATH-PN=210235A0W0H158000005-VirDev(1000)=Root; srcZoneName(1034)=SC;destZoneName(1035)=Trust;rule_ID(1070)=0;policyActType(1071)=permitted;protType(1001)=TCP(6);srcIPAddr(1017)=10.23.3.2;destIPAddr(1019)=10.10.10.33;srcPortNum(1018)=47344;destPortNum(1020)=10051;beginTime_e(1013)=07162024104037;endTime_e(1014)=07162024104109;

我们看到了H3C设备发过来的日志。

dockerSyslog-ng是一个可靠、多功能的日志管理系统,用于收集日志并将其转发到指定的日志分析工具。

使用Docker CLI方式搭建

步骤 1: 拉取Syslog-ng镜像

首先,需要从Docker Hub拉取Syslog-ng的官方镜像。

docker pull balabit/syslog-ng:latest

步骤 2: 启动Syslog-ng容器

使用下列命令启动Syslog-ng容器,以下示例展示了一些常用的参数和配置。

docker run -d --name syslog-ng \

  -p 514:514/udp \

  -p 601:601 \

  -v /path/to/your/syslog-ng.conf:/etc/syslog-ng/syslog-ng.conf \

  balabit/syslog-ng:latest

-d: 后台运行容器。

--name: 指定容器的名称,这里为syslog-ng。

-p 514:514/udp: 将容器的514端口(UDP协议)映射到宿主机的514端口,用于接收Syslog消息。

-p 601:601: 将容器的601端口(TCP协议)映射到宿主机的601端口,也是用于接收Syslog消息,但是通过TCP。

-v /path/to/your/syslog-ng.conf:/etc/syslog-ng/syslog-ng.conf: 将宿主机上的Syslog-ng配置文件映射到容器内部,用于自定义Syslog-ng的行为。

步骤 3: 验证运行状态

使用以下命令检查容器运行状态:

docker ps

确保Syslog-ng容器正在运行。

使用Docker Compose方式搭建

Docker Compose提供了一种更为简便的方式来定义和运行多容器Docker应用程序。

步骤 1: 创建Docker Compose文件

在一个目录中创建一个名为docker-compose.yml的文件,并添加以下内容:

version: '3'

services:

  syslog-ng:

    image: balabit/syslog-ng:latest

    container_name: syslog-ng

    ports:

      - "514:514/udp"

      - "601:601"

    volumes:

      - /path/to/your/syslog-ng.conf:/etc/syslog-ng/syslog-ng.conf

version: 指定Docker Compose文件格式版本。

services: 定义了要运行的服务容器。

syslog-ng: 定义一个服务,名称为syslog-ng。

image: 指定使用的Docker镜像。

container_name: 容器的名称。

ports: 端口映射配置。

volumes: 卷映射配置,用于Syslog-ng的配置文件。

步骤 2: 启动Syslog-ng服务

在包含docker-compose.yml文件的目录中,运行以下命令来启动Syslog-ng服务:

docker-compose up -d

步骤 3: 验证服务状态

使用以下命令查看服务状态:

docker-compose ps

确保syslog-ng服务已经成功启动并且运行中。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。