ubuntu rsyslog mysql_Ubuntu下rsyslog审计用户bash操作命令、收集、写入MySQL

本文介绍了如何在Ubuntu系统中利用rsyslog收集和审计用户的bash操作命令,并将这些信息存储到MySQL数据库中。首先,通过安装rsyslog和MySQL服务,然后创建数据库表结构。接着,编辑rsyslog配置文件,定义模板以将日志插入到数据库中,并设置过滤条件。最后,在客户端配置rsyslog收集用户历史记录并发送到服务端。
摘要由CSDN通过智能技术生成

服务端

2台服务端:10.25.109.64、10.45.18.133

1、rsyslog最新版本安装

sudo add-apt-repository ppa:adiscon/v8-stable

sudo apt-get update

sudo apt-get install rsyslog

2、安装数据库

apt-get install rsyslog-mysql mysql-server -y#安装过程中会自动创建表

3、创建表结构 #使用show create table SysEvents,查看ommysql插件默认的建表sql,更改一下.

CREATE TABLE `BashEvents` (

`ID` int(10) unsigned NOT NULL AUTO_INCREMENT,

`ReceivedAt` datetime DEFAULT NULL,

`DeviceReportedTime` datetime DEFAULT NULL,

`Facility` smallint(6) DEFAULT NULL,

`Priority` smallint(6) DEFAULT NULL,

`FromHost` varchar(60) DEFAULT NULL,

`Message` text,

`EventUser` varchar(60) DEFAULT NULL,

`InfoUnitID` int(11) DEFAULT NULL,

`SysLogTag` varchar(60) DEFAULT NULL,

PRIMARY KEY (`ID`)

) ENGINE=InnoDB AUTO_INCREMENT=1784 DEFAULT CHARSET=latin1

4、编辑配置文件

vim /etc/rsyslog.d/50-default.conf

$ModLoad ommysql

#bash_log

$template bash_mysql_insert,"insert into BashEvents (Message, Facility, FromHost,Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag,EventUser) values('%msg:F,124:6%', %syslogfacility%, '%HOSTNAME%', %syslogpriority%,'%timereported:::date-mysql%', '%timegenerated:::date-mysql%', %iut%,'%syslogtag%','%msg:F,124:4%');",SQL

$template Bash-history,"/var/log/remote_log/bash-log/%hostname%_%fromhost-ip%_log_%app-name%_%$YEAR%-%$MONTH%-%$DAY%.log"

if ($msg contains "normal" and $app-name == "bash-log") then {

action(type="omfile" DynaFile="Bash-history")

action(type="ommysql" server="localhost" serverport="3306" db="Syslog" uid="rsyslog" pwd="123.com" template="bash_mysql_insert")

stop

}

5、相关说明

"%msg:F,124:4%": 代表将msg信息以|为分割,取出第四个区域的内容,F代表分割,124是|的ASCII码

"%msg:1:2%": 读取从pos从1到2的数据

"%msg:::lowercase%" :将整个消息转换为小写

"%msg:10:$%" : 截取pos从10到最后的消息内容

"%msg:R:.*Sev:. (.*) [.*–end%" : 取"*Sev:."和[.*之间内的所有内容

------------------------------------------------------------------------------

R,,,,

regexp-type :

------------------------------------------------------------------------------

-->"BRE" (基本的正则表达式)或"ERE" (扩展的正则表达式)

0-9是标识submatch的,0标识所有内容,1-9标识相应序号的内容。(和shell类似,其实就是正则表达式中括号的用法)

如果相同的实例被匹配到,那么第一个匹配的是0,之后的匹配依次排列

-->nomatch :

标识没有匹配到的时候写什么

实例:

"%msg:R,ERE,1,FIELD:for (vlan[0-9]*):--end%"

"%msg:R,ERE,1,FIELD,1:for (vlan[0-9]*):--end%"

"F,44" : 设置分隔符(用ACSII表示),针对分隔符,在引用时,0代表没找到,匹配的实例从1开始数

"%msg:F,59:3%" : 以分号为分隔符,提取第三个区域的内容

"%msg:F,59,5:3,9%" : 以分号为分隔符,从第5个子串中,提取3-6位的字符

"%msg:F,32+:2%" : 如果多个分隔符(比如:日志中有n个空格作为分割,那么可以添加一个+)

客户端

1、rsyslog最新版本安装

sudo add-apt-repository ppa:adiscon/v8-stable

sudo apt-get update

sudo apt-get install rsyslog

2、创建相关关键目录以及授权

mkdir -p /usr/share/.history

chmod 777 /usr/share/.history

chattr +a /usr/share/.history

3、在/etc/profile中写入以下内容

USER_IP=`who -u am i 2>/dev/null|awk '{print $NF}'|sed -e 's/[()]//g'`

HISTDIR=/usr/share/.history

if [ -z $USER_IP ]

then

USER_IP=`hostname`

fi

if [ ! -d $HISTDIR ]

then

mkdir -p $HISTDIR

chmod 777 $HISTDIR

fi

export HISTSIZE=9999

DT=`date +%Y%m%d_%H%M%S`

export HISTFILE="$HISTDIR/${LOGNAME}.${USER_IP}.history.$DT"

original_user=${SUDO_USER:-$(pstree -Alsu "$$" | sed -n "s/.*(([^)]*)).*($USER)[^(]*$/1/p")}

export HISTTIMEFORMAT="|normal|%F %T|${original_user:-$USER}|$$|"

chmod 644 %HISTDIR/${LOGNAME}.*.histroy* 2>/dev/null

export PROMPT_COMMAND='builtin history 1 >> $HISTFILE'

4、在rsyslog.d中写一个配置文件

vim bash.conf

module(load="imfile" PollingInterval="1")

input(type="imfile" File="/usr/share/.history/*history*"

Tag="bash-log"

Facility="local7"

Severity="debug"

deleteStateOnFileDelete="on"

)

local7.* @10.25.109.64:514

local7.* @10.45.18.133:514

5、重新加载profile文件

source /etc/profile

6、重启rsyslog

/etc/init.d/rsyslog restart

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值