首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Rsyslog服务日志审计留存

Rsyslog服务日志审计留存

作者头像
全栈工程师修炼指南
发布于 2022-09-28 13:17:23
发布于 2022-09-28 13:17:23
1K00
代码可运行
举报
运行总次数:0
代码可运行

[TOC]

0x00 前言

Linux的rsyslog日志服务器配置:

代码语言:javascript
代码运行次数:0
运行
复制
vi /etc/rsyslog.conf
#将其中下面四行的注释取消
$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514

#### GLOBAL DIRECTIVES ####中加入如下内容:
$template IpTemplate,"/var/log/%FROMHOST-IP%.log"
*.* ?IpTemplate
& ~

#说明:实现在接收远程的日志为客户端IP地址命名。
#重新启动rsyslogd服务
service rsyslog restart

Linux的rsyslog日志客户端配置:

代码语言:javascript
代码运行次数:0
运行
复制
#vi /etc/rsyslog.conf
local1.debug    @@192.168.0.66

#然后重新启动rsyslogd服务
service rsyslog restart
0x01 实际案例
Linux安全运维历史命令记录发往Rsyslog服务器

描述:将history 命令记录发往Rsyslog服务器,即将Linux history 记录发往本地/远程Rsyslog 服务器的2种方法。

syslog日志收集:

方法1:

描述:从bash4.1 版本开始支持Rsyslog,所以我们需要下载bash4.1以后版本修改bash源码支持syslog记录,首先下载bash源码可以从gnu.org下载,并且系统需要安装gcc等编译环境;

1.修改两处源码:

bashhist.c : 这个源码文件和linux history记录处理有关

代码语言:javascript
代码运行次数:0
运行
复制
#bash_syslog_history 函数里面
void bash_syslog_history (line)
if (strlen(line) < SYSLOG_MAXLEN) {
  syslog (SYSLOG_FACILITY|SYSLOG_LEVEL, "HISTORY: PID=%d UID=%d USER=%s CMD=%s", getpid(), current_user.uid, current_user.user_name,line);
}else{
  strncpy (trunc, line, SYSLOG_MAXLEN);
  trunc[SYSLOG_MAXLEN - 1] = '\0';
  syslog (SYSLOG_FACILITY|SYSLOG_LEVEL, "HISTORY (TRUNCATED): PID=%d UID=%d USER=%s CMD=%s", getpid(), current_user.uid, current_user.user_name,trunc);
}

#效果
HISTORY (TRUNCATED): PPID=%d PID=%d SID=%d UID=%d User=%s %s", getppid(), getpid(), getsid(getpid()), current_user.uid, current_user.user_name, trunc

config-top.h : 设置开启syslog日志

代码语言:javascript
代码运行次数:0
运行
复制
# 里定义syslog的FACILITYuser (用户级别的日志)级别为info
#define SYSLOG_HISTORY
#if defined (SYSLOG_HISTORY)
#  define SYSLOG_FACILITY LOG_USER
#  define SYSLOG_LEVEL LOG_INFO
#  define OPENLOG_OPTS LOG_PID
#endif

#if defined (SYSLOG_HISTORY)
#define SYSLOG_SHOPT 1
#endif

2.编译与修改/etc/passwd 修改用户的登录shell (当然也可以直接替换原先的bash)

代码语言:javascript
代码运行次数:0
运行
复制
./configure --prefix=/usr/local/bash && make && make install 

#修改用户的默认bash
root:x:0:0:root:/root:/usr/local/bash/bin/bash
f3:x:1004:1004::/home/f3:/usr/local/bash/bin/bash

#建立软连接
$ln -s /usr/local/bash/bin/bash /usr/bin/bash

3.修改/etc/rsyslog.conf最后重启rsyslog

代码语言:javascript
代码运行次数:0
运行
复制
#将FACILITY为user且日志级别为info的信息发往 远程rsyslog 服务器 10.1.100.1
user.info  @@10.1.100.1

备注:

  • 此方法可以将其它shell类型禁用,并将bash软件软连接到/bin/sh中
方法2:

描述:不修改bash源码,利用trap和logger命令将执行命令记录发往远程Rsyslog 服务器

1.编辑/etc/profile文件:

代码语言:javascript
代码运行次数:0
运行
复制
# cat >> /etc/profile
function log2syslog(){
  #过滤PS命令执行(每次执行都有)  或者采用 PROMPT_COMMAND 系统变量代替下面
  if [ 'printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"' != "$BASH_COMMAND" ];then  
    logger -p user.notice -t bash-$$ -i -n 192.168.1.88 -- "${SSH_CONNECTION} - ${USER} - ${PWD} - ${BASH_COMMAND}"
  fi
}
trap log2syslog DEBUG


#函数解释一下:
我们知道用户登录之后shell 都会执行/etc/profile中的内容在shell中每执行一次命令都是一个activity,`trap log2syslog DEBUG`意为对shell中的每一个activity都执行一遍log2syslog 函数

logger 是一个向syslog发送日志的接口:-p 表示syslog的Facility   -t 表示tag  -n 表示远程syslog 地址    # 信息之间用— 隔开
$BASH_COMMAND 表示 最新执行的shell命令
$$ 表示当前shell的进程id
$SSH_CONNECTION   当前ssh连接的tcp socket 五元组信息
$USER 表示当前执行命令的用户
$PWD 表示执行命令时所在目录

2.vim /etc/rsyslog.conf 增加修改配置后user.* @@192.168.1.88,重启rsyslog service rsyslog restart

代码语言:javascript
代码运行次数:0
运行
复制
#log日志服务器
user.* @@192.168.1.88:514
Aug  2 13:42:35	10.10.107.222	master	local1	notice	bash-12610[12650]	192.168.1.88 52965 10.10.107.222 22 - root - /root - grep --color=auto "12610"

注意事项:

  • logger方法的不足:每记录一条命令日志到远程syslog服务器都会产生一个新的进程,如果命令activity 量很大则相比修改bash源码方式而言比较消耗性能
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-08-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Linux运维人员共用root帐户权限审计
一、应用场景 在中小型企业,公司不同运维人员基本都是以root 账户进行服务器的登陆管理,缺少了账户权限审计制度。不出问题还好,出了问题,就很难找出源头。 这里介绍下,如何利用编译bash 使不同的客户端在使用root 登陆服务器使,记录各自的操作,并且可以在结合ELK 日志分析系统,来收集登陆操作日志   二、环境 服务器:centos 6.5、Development tools、使用密钥认证,SElinux 关闭。 客户端:生成密钥对,用于登录服务器 (2台) 三、搭建部署 服务器操作 : 192.16
小小科
2018/05/04
4.4K0
Linux运维人员共用root帐户权限审计
介绍linux下利用编译bash设置root账号共用的权限审计设置
在日常运维工作中,公司不同人员(一般是运维人员)共用root账号登录linux服务器进行维护管理,在不健全的账户权限审计制度下,一旦出现问题,就很难找出源头,甚是麻烦! 在此,介绍下利用编译bash使不同人员在使用root账号登陆服务器后,能记录各自的操作,并且可以结合ELK日志分析系统收集登陆操作日志。 废话不多说!下面分享下操作记录: 服务器ip:192.168.1.180 首先是编译bash [root@dev ~]# cd /usr/local/src/ [root@dev src]# wget h
洗尽了浮华
2018/01/23
2.1K0
系统各类日志查看
描述:用于对系统日志进行轮转、压缩和删除,也可以将日志发送到指定邮箱,防止linux系统日志文件过大
全栈工程师修炼指南
2022/09/28
1.8K0
系统各类日志查看
Linux下rsyslog日志收集服务环境部署记录
rsyslog 可以理解为多线程增强版的syslog。 在syslog的基础上扩展了很多其他功能,如数据库支持(MySQL、PostgreSQL、Oracle等)、日志内容筛选、定义日志格式模板等。目前大多数Linux发行版默认也是使用rsyslog进行日志记录。rsyslog提供了三种远程传输协议:
星哥玩云
2022/07/13
2.1K0
Linux下的rsyslog系统日志梳理(用户操作记录审计)
rsyslog 可以理解为多线程增强版的syslog。 在syslog的基础上扩展了很多其他功能,如数据库支持(MySQL、PostgreSQL、Oracle等)、日志内容筛选、定义日志格式模板等。目前大多数Linux发行版默认也是使用rsyslog进行日志记录。rsyslog提供了三种远程传输协议: UDP 传输协议 基于传统UDP协议进行远程日志传输,也是传统syslog使用的传输协议; 可靠性比较低,但性能损耗最少, 在网络情况比较差, 或者接收服务器压力比较高情况下, 可能存在丢日志情况。 在对日
洗尽了浮华
2018/01/22
12K3
用 Shell 搞定 Linux 命令审计
前段时间学习群中有朋友在询问线上 Linux 主机的命令行操作审计方案时,当时给了一个用 rsyslog + elasticsearch 的方案简单搪塞过去了,并没有对方案的细节进行说明。要命的是当时立了个 flag 说在下次公众号文章更新中推送,时间一晃快 2 个月过去了,今天终于来把之前的挖的坑给填上。
云原生小白
2022/04/13
1.3K0
用 Shell 搞定 Linux 命令审计
【老金知道】Zabbix日志监控前传:rsyslog收集网络设备日志
2. yum install rsyslog-mysql -y #rsyslog使用此模块将数据传入MySQL数据库,必须安装
Zabbix
2021/02/03
5.9K0
rsyslog日志服务器_php日志系统
rsyslog可以理解为增强版的syslog,在syslog的基础上扩展了很多其他功能,如数据库支持(Mysql,PostgreSQL、Oracle等)、日志内容筛选、定义日志格式模板等。除了默认的udp协议外,rsyslog还支持tcp协议来接收日志,可以yum安装,也可以源码安装,下载地址:
全栈程序员站长
2022/09/21
5.3K0
利用rsyslog 对Linux用户进行审计
rsyslog 是标准Linux系统的一部分,能够实时的写日志,并且还可以将日志选择性的发送到远程日志服务器。
星哥玩云
2022/07/03
1.3K0
Linux下使用Rsyslog搭建集中日志服务器
ryslog 是一个快速处理收集系统日志的程序,提供了高性能、安全功能和模块化设计。rsyslog 是syslog 的升级版,它将多种来源输入输出转换结果到目的地。
星哥玩云
2022/07/13
3.4K0
Linux下使用Rsyslog搭建集中日志服务器
linux系统日志管理详解
日志文件记录了时间,地点,人物,事件四大信息,故系统出现故障时,可以查询日志文件。 系统的日志文件默认都集中放置到/var/log/目录内,其中又以message记录的信息最多。 日志文件的重要性主要体现在以下三方面:
咻一咻
2020/05/29
9.5K0
rsyslog+loganalyzer日志服务器部署记录
日志功能对于操作系统是相当重要的,在日常运维工作中,无论是系统还是应用等出了任何问题,我们首先想到的便是分析日志,查找问题原因。自从CentOS 6系统开始,CentOS便开始使用rsyslog做为日志收集服务了,相对于之前的syslog它能够支持多线程,数据库存储,支持更多了传输协议等等优点。之前介绍了Linux下rsyslog日志收集服务环境部署记录,下面再结合LogAnalyzer进行部署说明。 LogAnalyzer则是一款基于 PHP 开发的 syslog 日志和其他网络事件数据的 Web 前端。
洗尽了浮华
2018/07/03
2.1K0
MySQL 8.0 数据库审计日志平台部署
数据库审计平台(简称DB Audit),实时记录用户操作数据库的行为,对数据库操作进行细粒度审计的合规性管理,对数据库遭受到的风险行为进行实时告警。通过对用户访问数据库行为记录、分析和汇报,来帮助DBA事后生成合规报告、事故追根溯源,同时通过搜索技术提供高效查询审计报告,定位事件原因,以便日后查询、分析、过滤,实现加强内外部数据库网络行为的监控与审计,提高数据资产安全。
贺春旸的技术博客
2023/11/13
1.6K0
MySQL 8.0 数据库审计日志平台部署
rsyslog日志管理[通俗易懂]
rsyslog是一个快速的日志处理系统,具有卓越的性能和出色的安全性,采用模块化设计,他可以从各种数据源中接收输入、转换数据再将结果输出到指定的位置。他不仅适用于企业,也适用于小型系统。
全栈程序员站长
2022/11/08
2.1K0
CentOS上配置rsyslog客户端用以远程记录日志
rsyslog是一个开源工具,被广泛用于Linux系统以通过TCP/UDP协议转发或接收日志消息。rsyslog守护进程可以被配置成两种环境,一种是配置成日志收集服务器,rsyslog进程可以从网络中收集其它主机上的日志数据,这些主机会将日志配置为发送到另外的远程服务器。rsyslog的另外一个用法,就是可以配置为客户端,用来过滤和发送内部日志消息到本地文件夹(如/var/log)或一台可以路由到的远程rsyslog服务器上。
星哥玩云
2022/07/04
2.6K0
CentOS上配置rsyslog客户端用以远程记录日志
rsyslog 时区问题
官方提供的镜像rsyslog/syslog_appliance_alpine无法获取时区信息。宿主机是东八区时区,但是rsyslog接收远程syslog日志存储时给的时间是UTC时间。
奇门水镜
2024/03/26
5340
通过 filebeat、logstash、rsyslog 采集 nginx 日志的几种方式
由于nginx功能强大,性能突出,越来越多的web应用采用nginx作为http和反向代理的web服务器。而nginx的访问日志不管是做用户行为分析还是安全分析都是非常重要的数据源之一。如何有效便捷的采集nginx的日志进行有效的分析成为大家关注的问题。
业余草
2020/05/27
2.4K0
Linux系统实战项目——sudo日志审计
由于企业内部权限管理启用了sudo权限管理,但是还是有一定的风险因素,毕竟运维、开发等各个人员技术水平、操作习惯都不相同,也会因一时失误造成误操作,从而影响系统运行
民工哥
2020/09/16
1.9K0
rsyslog详解
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/08
1.8K0
使用Rsyslog管理日志
在 Linux 系统中,日志文件记录了系统中包括内核、服务和其它应用程序等在内的运行信息。 在我们解决问题的时候,日志是非常有用的,它可以帮助我们快速的定位遇到的问题。
用户2131907
2019/02/27
3.3K0
相关推荐
Linux运维人员共用root帐户权限审计
更多 >
目录
  • 0x00 前言
  • 0x01 实际案例
  • Linux安全运维历史命令记录发往Rsyslog服务器
    • 方法1:
    • 方法2:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档