Linux 审计日志记录,linux日志服务器审计客户端history记录「建议收藏」

Linux 审计日志记录,linux日志服务器审计客户端history记录「建议收藏」需求将每台服务器上的每一个用户执行的命令、执行时间、登陆时间、主机ip、当前切换用户等信息保存到本地并实时传输至日志服务器进行异地保存。nginxIPhostname角色10.10.99.1test1rsyslog-server10.10.99.2test2rsyslog-client工具及服务1.loggerlogger是一个shell接口,能够经过该接口使用rsyslog的日志模块。webus…

大家好,又见面了,我是你们的朋友全栈君。

需求

将每台服务器上的每一个用户执行的命令、执行时间、登陆时间、主机ip、当前切换用户等信息保存到本地并实时传输至日志服务器进行异地保存。nginx

IP

hostname

角色

10.10.99.1

test1

rsyslog-server

10.10.99.2

test2

rsyslog-client

工具及服务

1.logger

logger是一个shell接口,能够经过该接口使用rsyslog的日志模块。web

usage: logger [-is] [-f file] [-p pri] [-t tag] [-u socket] [ message … ]

-i 逐行记录每一次logger的进程id

-f file记录特定的文件

-p 输入消息的特定优先级,默认是’user.notice’

-t tag为每行信息打上特定的标签

-u 以特定的socker代替内嵌系统常规工做

2.rsyslog日志服务器

rsyslog是syslog的增强版,能够用做客户端及服务器,咱们可使用local0~local7来自定义设备传输至rsyslog。shell

3.PROMPT_COMMAND

Linux系统的环境变量PROMPTCOMMAND的内容会在bash提示符显示以前被执行。该环境变量的默认值是 history -a 功能是将目前新增的history追加到histfiles 中,默认写入隐藏文件~/.bashhistory中vim

实现

1、配置rsyslog日志服务器bash

vim /etc/rsyslog.conf

#添加如下几行

#启动udp端口也能够是tcp端口

$ModLoad imudp

$UDPServerRun 514

#设置白名单

$AllowedSender UDP, 192.168.3.0/24, 10.0.0.0/8

#配置模板,以客户端ip为目录,以日期命名文件

$template IpTemplate,”/var/log/remote/%FROMHOST-IP%/%$YEAR%-%$MONTH%-%$DAY%.log”

#把非本地传输的日志按照指定的模板存放

:fromhost-ip, !isequal, “127.0.0.1” ?IpTemplate

# & 表示已经匹配处理的内容,~ 表示再也不进行其余处理

& ~

#重启服务

service rsyslog restart

2、配置rsyslog客户端

1.配置PROMP_COMMAND服务器

vim /etc/bashrc

readonly PROMPT_COMMAND=’logger -p local3.notice -t bash “$(ifconfig | grep -E “eth|em” -A 1 | grep “10.10” | grep -oP “(?<=addr:)[\d\.]+”) $(who am i |awk “{print \$1\” \”\$2\” \”\$3\” \”\$4\” \”\$5}”) [`pwd`] currentuser=$(whoami) command=$(history 1 | { read x cmd; echo “$cmd”; })”‘

source /etc/bashrc

其中:

local3.notice 使咱们自定义的设备,用于rsyslog调用;

bash 是咱们为每行打印的信息打印的tag;

ifconfig | grep -E “eth|em” -A 1 | grep “10.10” | grep -oP “(?<=addr:)[\d.]+用于获取咱们服务器的ip;

who am i |awk “{print $1\” \”$2\” \”$3\” \”$4\” \”$5}”用于获取咱们当前用户的登陆信息;

pwd用于列出咱们当前所在的目录;

whoami用于获取咱们当前切换的执行命令的用户,例如咱们从test 用户 sudo -i,执行命令的用户为root,可是登陆的用户test,方便咱们区分;

command 是咱们当前用户执行的命令。session

注意:

1.咱们须要在/etc/bashrc或/etc/profile中添加环境变量,用于全部用户。

2.export PROMPT_COMMAND 若是将PROMPT_COMMAND导出到用户工做区,那么对于有经验的用户就能够作赋值操做 export PROMPT_COMMAND =“” ,简单的语法就会致使记录功能当前session端不可用,因此PROMPT_COMMAND必须设置成只读的属性,readonly PROMPT_COMMANDsocket

2.配置rsyslog客户端tcp

vim /etc/rsyslog.conf

#添加以下行

#添加local3.none

*.info;mail.none;authpriv.none;cron.none;local3.none /var/log/messages

#保存到本地的文件

local3.notice /var/log/audit.log

#远程日志服务器

local3.notice @10.10.99.1

#重启

service rsyslog restart

其中:

1.local3.notice 是在logger中定义的设备,rsyslog调用并将打印信息输出至指定文件。

2.添加local3.none是避免日志写入/var/log/messagessvg

3.配置轮转日志

vim /etc/logrotate.d/rsyslog

/var/log/audit.log{

daily

rotate 4

missingok

notifempty

nocompress

create

dateext

sharedscripts

postrotate

/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true

endscript

}

#强制轮转

logrotate -vf /etc/logrotate.d/rsyslog

ls /var/log|grep audit

audit.log audit.log-20170420

测试

1.rsyslog客户端

[test@test2 ~]$ ls

test test.sh

[test@test2 ~]$ cat test.sh

[test@test2 ~]$ sudo -i

[root@test2 ~]$ vim /var/log/audit.log

#查看日志文件

Apr 20 11:35:31 test2 bash: 10.10.99.2 test pts/1 2017-04-20 08:20 (10.11.2.102) [/home/test] currentuser=test command=ls

Apr 20 11:36:13 test2 bash: 10.10.99.2 test pts/1 2017-04-20 08:20 (10.11.2.102) [/home/test] currentuser=test command=cat test.sh

Apr 20 11:36:55 test2 bash: 10.10.99.2 test pts/1 2017-04-20 08:20 (10.11.2.102) [/home/test] currentuser=test command=vim /var/log/audit.log

Apr 20 11:36:58 tset2 bash: 10.10.99.2 test pts/1 2017-04-20 08:20 (10.11.2.102) [/root] currentuser=root command=exit

Apr 20 11:36:58 tset2 bash: 10.10.99.2 test pts/1 2017-04-20 08:20 (10.11.2.102) [/root] currentuser=root command=ls

注意:咱们切换成root的记录,登陆用户仍为test,可是咱们经过currentuser=root得知test用户已经切换成root了

2.rsyslog服务器

查看从客户端传过来的日志目录

[test@test1 remote]# tree /var/log/remote/

/var/log/remote/

└── 10.10.99.2

└── 2017-04-20.log

[test@test1 remote]# cat 2017-04-20.log

Apr 20 11:35:31 test2 bash: 10.10.99.2 test pts/1 2017-04-20 08:20 (10.11.2.102) [/home/test] currentuser=test command=ls

Apr 20 11:36:13 test2 bash: 10.10.99.2 test pts/1 2017-04-20 08:20 (10.11.2.102) [/home/test] currentuser=test command=cat test.sh

Apr 20 11:36:55 test2 bash: 10.10.99.2 test pts/1 2017-04-20 08:20 (10.11.2.102) [/home/test] currentuser=test command=vim /var/log/audit.log

Apr 20 11:36:58 tset2 bash: 10.10.99.2 test pts/1 2017-04-20 08:20 (10.11.2.102) [/root] currentuser=root command=exit

Apr 20 11:36:58 tset2 bash: 10.10.99.2 test pts/1 2017-04-20 08:20 (10.11.2.102) [/root] currentuser=root command=ls

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/135964.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 华为笔记本键盘锁住了(笔记本电脑键盘怎么亮起来)

    展开全部1、取消键:(退出e69da5e887aa62616964757a686964616f31333366306434键Esc)意思是逃脱、出口。主要作用是退出某个程序。如:在玩游戏时想退出来,按一下这个键即可。2、功能键:(F1——F12)在不同软件中,可起到不同的相应功用,也可以配合其它的键共同起作用。如:F1是帮助功能。3、切换键:(表格键Tab)意思是表格。主要是在文字处理软件里(如W…

  • python和java哪个更值得入手-Python和Java该如何选择?选哪个好?[通俗易懂]

    python和java哪个更值得入手-Python和Java该如何选择?选哪个好?[通俗易懂]在这里为大家介绍一下,其实Python和Java是两种截然不同的编程语言,两者都算是互联网行业中主流的编程语言,不过两者使用起来都是非常好用的,当然要看自己的需求,接下来为大家简单的区分一下Python和Java。Java和Python该如何选择?可以通过以下几个方面来决定:1、从语法结构上来说,Java是面向对象的编程语言,语法结构上面更加严谨一些,不过Java的模块化存在问题。而对比Java来…

  • cinemachine_2D Cinemachine:提示和技巧「建议收藏」

    cinemachine_2D Cinemachine:提示和技巧「建议收藏」cinemachineHaveyoubeenworkingonacamerasystemforyour2DgameforagesandwishtherewassomethinglikeCinemachinefor2D?Notmanypeopleknowaboutit,buttherealreadyis!Thisblogpost…

  • 用python随机生成数字_如何实现python随机生成数字?

    用python随机生成数字_如何实现python随机生成数字?今天小编就生成随机数,整理了多个方式,方便大家在项目时,根据自己的需求,直接拿来套用即可,以下内容相当详细,具体来看看吧~说明:python中生成随机数主要用到random模块,方法主要包括:randint、uniform、random、sample、choice等几种常用方法;环境:MacOS10.14.6/Windows10、python3.7.31、在[a,b]之间产生随机整数(ran…

    2022年10月23日
  • 字符串指针赋值小结

    字符串指针赋值小结字符指针赋值探究小结1,字符指针有初始值时,不能修改其中字符的值#include<iostream>usingnamespacestd;intmain(){ char*p1=”nihao”;//字符指针赋值给字符指针只能读不能修改字符的值 …

  • php熔断机制,如何保证核心链路稳定性的流控和熔断机制?

    php熔断机制,如何保证核心链路稳定性的流控和熔断机制?仅从设计优化、服务拆分、自动扩容等方面进行优化,有时候并不能完全解决问题。比如,有时流量增长过快,扩容流程还来不及完成,服务器可能就已经抗不住了既然突发流量我们没法预测,业务上也不可能不依赖任何外部服务和资源,那么有什么办法能尽量避免,或者降低出现这些问题时对核心业务的影响呢?流量控制01.流控常用的算法目前业内常用的流控方法有两种:漏桶算法和令牌桶算法漏桶算法“漏桶算法”的主要目的是控制数据注…

    2022年10月30日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号