Linux Rsyslog日志服务器部署宝典:Linux、Windows及网络设备日志一网打尽
文章目录
1 Rsyslog日志服务器简介
1.1 目的
为了方便日志监控和防止日志被篡改,我们可以使用rsyslog搭建日志服务器用于存放其它服务器的日志。
对于入侵排查工作来说,操作系统的认证日志、计划任务日志和历史命令都是非常重要的。我们把各个系统的相应日志保存到专门的rsyslog日志服务器,保存日志的路径格式为:源IP地址/设施名(日志类别)、年月.log。
1.2 平台及软件
名称 | IP | 操作系统版本 | 软件 | 备注 |
---|---|---|---|---|
日志服务器端 | 10.165.42.71 | CentOS Linux release 7.9.2009 (Core) | rsyslog | 负责接收客户端发来的日志并存储在本地,支持文件存储和数据库存储方式。 |
Linux客户端 | 10.165.42.72 | CentOS Linux release 7.9.2009 (Core) | rsyslog | 负责发送日志到远程日志服务器,支持udp,tcp,relp协议。 |
Windows客户端 | 10.165.42.75 | Windows Server 2012 R2 Standard | rsyslog | 负责发送日志到远程日志服务器,支持udp,tcp,relp协议。 |
2 Rsyslog服务端安装及配置(日志服务器)
2.1 安装Rsyslog
# yum install rsyslog -y
2.2 配置Rsyslog
编辑配置文件:
# vi /etc/rsyslog.conf
2.1.1 取消下面4行的注释
TCP和UDP可以被同时生效来监听TCP/UDP 连接。
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
2.1.2 创建日志接收模板
注释掉原有的ActionFileDefaultTemplate指令(使用传统的格式)
#$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
2.1.3 使用自定义的时间格式
$template myformat,"%$NOW% %TIMESTAMP:8:15% %hostname% %syslogtag% %msg%\n"
$ActionFileDefaultTemplate myformat
2.1.4 在RULES段的前面写入下面的行
$template local1_path, "/infook/rsyslog/%FROMHOST-IP%/bash_history/%$YEAR%%$MONTH%.log"
$template remote_path, "/infook/rsyslog/%FROMHOST-IP%/%syslogfacility-text%/%$YEAR%%$MONTH%.log"
if $fromhost-ip != '127.0.0.1' and $syslogfacility-text == 'local1' then ?local1_path
& ~
if $fromhost-ip != '127.0.0.1' then ?remote_path
& ~
2.1.5 保存退出
命令行模式下。
:x
说明:
$template定义了两个模板,名称分别为local1_path和remote_path,模板名称后面指定了将消息保存到的日志文件的路径。
if开头的指令是基于表达式的过滤器。第一条if指令的意思是,如果日志消息的来源IP地址不是本机,且消息的syslogfacility-text为local1,那么将这条消息写入由模板local1_path对应的文件。
& ~的含义是让满足上面过滤器条件的消息不再匹配后续的规则。默认情况下,日志消息会按顺序匹配rsyslog.conf中的每条规则。& ~在这里会让消息跳过后面的规则,这样这条消息就不会再被写入其他的日志文件了。
第二条if开头的指令将来自于本机之外的所有日志消息(由于前面的& ~,满足这个条件的只有auth、authpriv和cron消息)写入remote_path所对应的文件。
2.3 重启Rsyslog服务
# systemctl restart rsyslog
2.4 配置防火墙
作为日志服务器,需要开启访问端口。(或者直接关闭防火墙)
开放514端口
# firewall-cmd --zone=public --add-port=514/tcp
# firewall-cmd --zone=public --add-port=514/udp
3 Linux客户端安装及配置
3.1 安装Rsyslog
# yum install rsyslog -y
3.2 配置Rsyslog
3.2.1 配置日志发送
编辑配置文件:
# vi /etc/rsyslog.conf
编辑rsyslog服务配置文件,文件末尾加入一行
*.* @@10.165.42.71:514
保存退出。认证和计划任务日志等在本地保存的同时,还会保存到远程日志服务器。
配置术语说明:
facility:中文翻译过来是设施的意思,从功能或程序上对日志分类,
在Linux中常见的facility有:
auth(认证相关的日志),authpriv(授权相关的日志),cron(计划任务相关日志),
daemon(系统服务相关日志),ftp(ftp服务相关的日志),kern(内核相关日志),
lpr(打印相关的日志),mail(邮件相关日志),news(新闻相关的日志),
security(安全相关的日志),user(用户相关的日志),uucp(文件copy相关的日志),
local0-local7(自定义相关的日志)
priority:优先级别,从低到高排序:
debug(调试),
info(消息),
notice(注意),
warn(warning警告),
err(error错误),
crit(critical严重警告),
alert(需要立即修改的信息)
emerg(panic内核崩溃,内核恐慌等严重的信息)
一个@代表通过UDP协议发送日志,
两个@@代表以tcp方式传送日志。
与UDP相比,TCP传输的方式更加稳定一些。
3.2.2 将客户端执行的所有命令写入系统日志中
编辑/etc/bashrc
# vi /etc/bashrc
文件底部添加一行,加入以下内容
export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y; });logger "[euid=$(whoami)]":$(who am i):[`pwd`]"$msg"; }'
设置使其生效
# source !$
3.3 重启Rsyslog服务
重启服务,使配置更改生效
# systemctl restart rsyslog
3.4 测试验证
3.4.1 在客户端发送一条日志信息
发送一条info级别或以上级别的日志
# logger -p "mail.info" "this is test log"
3.4.2 在日志服务器 /var/log目录下
# tail -f /infook/rsyslog/10.165.42.72/mail/<yyyymm>.log
说明:
不管在任何情况下,都不要配置rsyslog客户端将日志消息通过不安全的网络转发,或者,特别是通过互联网转发,因为syslog协议是一个明文协议。要进行安全传输,可以考虑使用TLS/SSL来加密日志消息的传输。
4 Windows 客户端安装及配置
在Windows环境下,要安装和配置Rsyslog Agent,您可以按照以下步骤操作:
4.1 下载Rsyslog Windows版本
访问 https://www.rsyslog.com/windows-agent/windows-agent-download/ 并下载最新的Rsyslog MSI安装程序。
4.2 安装Rsyslog
4.2.1 双击下载的rsyslogwa.exe
4.2.2 点击是(Y)
4.2.3 点击Next
4.2.4 选择I accept the terms in the license agreement,点击Next
4.2.5 设置安装路径,点击Change…
4.2.6 设置安装路径,点击Ok
4.2.7 点击Next
4.2.8 选择Complete,点击Next
4.2.9 点击Install
4.2.10 点击Finish
4.3 配置Rsyslog
4.3.1 方法一:
打开RSyslog Windows Agent Configuration,依次展示RuleSets—>Default RuleSet—>ForwardSyslog—>Actions—>Rsyslog,进行Rsyslog转发配置,并启用服务。
4.3.2 方法二:
打开Rsyslog配置文件 rsyslog.conf
,通常位于 D:\Program Files\rsyslog\
目录下。
例如,如果您想将日志发送到远程的Rsyslog服务器,您可以在配置文件中添加如下行:
*.* @@10.165.42.71:514
其中10.165.42.71
是Rsyslog服务器的IP地址,514
是默认的Rsyslog端口。
4.4 重启Rsyslog服务
可以通过服务管理器(services.msc)来重启Rsyslog服务,或者使用命令行:
net stop rsyslog && net start rsyslog
4.5 验证配置并测试连接
4.5.1 方法一:
打开RSyslog Windows Agent Configuration,在Tools—> Stslog Test Message,配置Syslog Server服务器地址,点击Send,进行测试。
4.5.2 方法二:
确保Windows防火墙允许Rsyslog通过514端口发送和接收信息。您可以使用 telnet
命令测试与远程服务器的连接:
telnet 10.165.42.71 514
其中10.165.42.71
是Rsyslog服务器的IP地址,514
是默认的Rsyslog端口。
5 网络设备客户端配置
5.1 Huawei
<Huawei> system-view
[Huawei] info-center loghost source Vlanif99
[Huawei] info-center loghost 10.165.42.71 facility local5
5.2 H3C
<H3C> system-view
[H3C] info-center loghost source Vlan-interface99
[H3C] info-center loghost 10.165.42.71 facility local6
5.3 Cisco
Cisco>
Cisco> enable
Cisco# config terminal
Cisco(config)# logging on
Cisco(config)# logging 10.165.42.71
Cisco(config)# logging facility local4
Cisco(config)# logging source-interface e0
5.4 Ruijie
Ruijie>
Ruijie> enable
Ruijie# config terminal
Ruijie(config)# logging buffered warnings
Ruijie(config)# logging source interface VLAN 99
Ruijie(config)# logging facility local6
Ruijie(config)# logging server 10.165.42.71
说明:
10.165.42.71为rsyslog服务器的IP。
原文链接:https://mp.weixin.qq.com/s?__biz=MzkxNzI1OTE3Mw==&mid=2247491966&idx=1&sn=074fd3cccb868974d209159eb47baa41&chksm=c141f7b4f6367ea299b18052ce0e85c2606c98cb400514fbde1fcd6fef41d0895ac0d160eff4#rd
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!