rsyslog远程记录系统日志

2024-02-08 18:12

本文主要是介绍rsyslog远程记录系统日志,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

rsyslog是一个快速处理手机系统日志的开源程序,提供了高性能,安全功能和模块化设计,rsyslog是syslog的升级版,他讲多重来源输入输出转换结果到目的地,rsyslog被广泛用于Linux系统以通过TCP/UDP协议转发或接收日志消息。

rsyslog守护进程可以被配置成两种环境,一种是配置成日志手机服务器,rsyslog进程可以从网络中收集其他主机上的日志数据,这些主机会将日志配置为发送到另外的远程服务器,rsyslog的另外一个用法,就是可以配置为客户端,用来过滤和发送内部日志消息到本地文件夹(如/var/log)或一台可以路由到的远程rsyslog服务器上

下面来操作一下:

  1. rsyslog服务器(收集):192.168.89.129
  2. rsyslog 主机(发送):192.168.89.128

实现client主机通过rsyslog发送自身的系统日志到rsyslog server服务器,服务器端将该主机系统日志存放到一个指定的目录里面,进行按IP和日志简单分类存储

  • rsyslog服务器端配置

centos系统默认安装了rsyslog服务

两台服务器都进行以下操作进行备份:

cp /etc/rsyslog.conf /etc/rsyslog.conf_default

vi /etc/rsyslog.conf

收集服务器:192.168.89.129:

  1. 取消下面两行注释,开始UDP 514接收配置

$ModLoad imudp

$UDPServerRun 514

  1. 在$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat这一行添加如下配置

 $template Remote,"/var/log/syslog/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log"

:fromhost-ip, !isequal, "127.0.0.1" ?Remote

& ~

  1. 重启rsyslog服务

systemctl restart rsyslog 

  • rsyslog客户端配置(发送):

vim /etc/rsyslog.conf

1、取消如下五行注释

$ActionQueueFileName fwdRule1 # unique name prefix for spool files

$ActionQueueMaxDiskSpace 1g   # 1gb space limit (use as much as possible)

$ActionQueueSaveOnShutdown on # save messages to disk on shutdown

$ActionQueueType LinkedList   # run asynchronously

$ActionResumeRetryCount -1    # infinite retries if host is down

  1. 最后一行添加收集端的信息

*.* @192.168.89.129

  1. 重启rsyslog服务

systemctl restart rsyslog

  • 在服务端验证效果

cd /var/log/syslog

cd 192.168.89.128

cat 192.168.89.128_2024-02-07.log

这时,就会记录系统中的常规系统日志到我们的日志服务器当中

然后,通过测试,发现日志的记录并不完全,我根据需求,想要的是记录到每个用户的操作记录,不管是管理员还是普通用户,类似于;

每一条都能记录,不管是执行了什么操作

这时,我们通过对每个用户的.bashrc文件进行操作

~/.bashrc       -每个用户的家目录下会有这个文件,使用ls -a可以看到

export PROMPT_COMMAND='RETRN_VAL=$?;logger -n XX.XX.XX.XX -P 514 -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//") [$RETRN_VAL]"'

这段代码的目的是在每次 Bash shell 提示符出现之前记录一条日志消息,这条消息包含了用户的一些信息和最后执行的命令。这可能用于审计或监控用户的活动。

`PROMPT_COMMAND` 是一个 Bash shell 特定的环境变量,每次命令提示符出现之前,都会执行 `PROMPT_COMMAND` 中定义的命令。

在这段代码中,`RETRN_VAL=$?` 获取并存储了最后执行的命令的返回值。

`logger -n XX.XX.XX.XX -P 514 -p local6.debug "$(whoami) [$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//") [$RETRN_VAL]"` 这条命令使用 `logger` 工具将一条日志消息发送到远程日志服务器 `XX.XX.XX.XX` 的 `514` 端口。这条消息包含了以下信息:

- 当前用户的用户名(`whoami`)

- 最后执行的命令(通过 `history 1 | sed "s/^[ ]*[0-9]\+[ ]*//"` 获取)

- 最后执行的命令的返回值(`$RETRN_VAL`)

总的来说,这段代码的作用是在每次提示符出现之前记录一条日志消息,这条消息包含了用户的一些信息和最后执行的命令。这可能用于审计或监控用户的活动。

到这里,我们的操作基本上就完成了,可以很完全的记录操作的信息,但是,唯一的一个遗憾,就是我通过测试,没能达到好的效果去检测 反弹shell 的操作记录,能够实现通过rsyslog记录,但是缺点就是在通过审计日志记录日志的时候,审计日志(auditd)会调用execve,但是execve可能会产生大量的日志数据,因为auditd会记录所有的execve调用,包括系统和服务的后台活动。我测试的时候几条命令,产生了一万五千多条日志,所以,有懂得老师们欢迎评论区留言

这篇关于rsyslog远程记录系统日志的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/691810

相关文章

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

Java服务实现开启Debug远程调试

《Java服务实现开启Debug远程调试》文章介绍如何通过JVM参数开启Java服务远程调试,便于在线上排查问题,在IDEA中配置客户端连接,实现无需频繁部署的调试,提升效率... 目录一、背景二、相关图示说明三、具体操作步骤1、服务端配置2、客户端配置总结一、背景日常项目中,通常我们的代码都是部署到远程

docker编写java的jar完整步骤记录

《docker编写java的jar完整步骤记录》在平常的开发工作中,我们经常需要部署项目,开发测试完成后,最关键的一步就是部署,:本文主要介绍docker编写java的jar的相关资料,文中通过代... 目录all-docker/生成Docker打包部署文件配置服务A的Dockerfile (a/Docke

MySQL使用EXISTS检查记录是否存在的详细过程

《MySQL使用EXISTS检查记录是否存在的详细过程》EXISTS是SQL中用于检查子查询是否返回至少一条记录的运算符,它通常用于测试是否存在满足特定条件的记录,从而在主查询中进行相应操作,本文给大... 目录基本语法示例数据库和表结构1. 使用 EXISTS 在 SELECT 语句中2. 使用 EXIS

Java实现远程执行Shell指令

《Java实现远程执行Shell指令》文章介绍使用JSch在SpringBoot项目中实现远程Shell操作,涵盖环境配置、依赖引入及工具类编写,详解分号和双与号执行多指令的区别... 目录软硬件环境说明编写执行Shell指令的工具类总结jsch(Java Secure Channel)是SSH2的一个纯J

Mac电脑如何通过 IntelliJ IDEA 远程连接 MySQL

《Mac电脑如何通过IntelliJIDEA远程连接MySQL》本文详解Mac通过IntelliJIDEA远程连接MySQL的步骤,本文通过图文并茂的形式给大家介绍的非常详细,感兴趣的朋友跟... 目录MAC电脑通过 IntelliJ IDEA 远程连接 mysql 的详细教程一、前缀条件确认二、打开 ID

基于Spring Boot 的小区人脸识别与出入记录管理系统功能

《基于SpringBoot的小区人脸识别与出入记录管理系统功能》文章介绍基于SpringBoot框架与百度AI人脸识别API的小区出入管理系统,实现自动识别、记录及查询功能,涵盖技术选型、数据模型... 目录系统功能概述技术栈选择核心依赖配置数据模型设计出入记录实体类出入记录查询表单出入记录 VO 类(用于

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤