linux历史记录简易审计系统

news2024/11/30 10:45:40

1、有时候我们需要对线上用户的操作进行记录,可以进行追踪,出现问题追究责任,但是linux自带的history并不会实时的记录(仅仅在内存中,当用户正常退出(exit logout )时才会记录到history文件里),并且还有1000行的限制可以删除的;

为了保证让用户的操作进行实时记录;可以做一个简易的审计系统;审计用户的操作历史;

1:首先创建一个目录,这个目录是用来记录所有用户的操作历史的

[root@localhost_001 ~]# mkdir -p /usr/local/domob/records/

2:然后给目录777权限;(让任何用户都可以写入文件);

[root@localhost_001 ~]# chmod 777 /usr/local/domob/records/

3:还有给目录加上 t 权限;普通用户之间无法互相删除;

[root@localhost_001 ~]# chmod o+t /usr/local/domob/records/

4:在/etc/profile里添加如下内容;并执行立即生效命令:  source   /etc/profile

[root@localhost_001 ~]# vim /etc/profile

if [ ! -d /usr/local/domob/records/${LOGNAME} ]

then

mkdir -p /usr/local/domob/records/${LOGNAME}

chmod 300 /usr/local/domob/records/${LOGNAME}

fi

#需要声明变量;

export HISTORY_FILE="/usr/local/domob/records/${LOGNAME}/bash_history"

export PROMPT_COMMAND='{ date "+%Y-%m-%d %T ##### $(who am i |awk "{print \$1\" \"\$2\" \"\$5}") #### $(history 1 | { read x cmd; echo "$cmd"; })"; } >>$HISTORY_FILE'


[root@localhost_001 ~]# source /etc/profile

详细步骤

[root@localhost_001 ~]# mkdir -p /usr/local/domob/records/

[root@localhost_001 ~]# chmod 777 /usr/local/domob/records/

[root@localhost_001 ~]# chmod o+t /usr/local/domob/records/

[root@localhost_001 ~]# vim /etc/profile

if [ ! -d /usr/local/domob/records/${LOGNAME} ]

then

mkdir -p /usr/local/domob/records/${LOGNAME}

chmod 300 /usr/local/domob/records/${LOGNAME}

fi

export HISTORY_FILE="/usr/local/domob/records/${LOGNAME}/bash_history"

export PROMPT_COMMAND='{ date "+%Y-%m-%d %T ##### $(who am i |awk "{print \$1\" \"\$2\" \"\$5}") #### $(history 1 | { read x cmd; echo "$cmd"; })"; } >>$HISTORY_FILE'



​​​​​​​[root@localhost_001 ~]# source /etc/profile

2、然后在linux下root用户运行一些命令,然后去查看命令历史;

[root@localhost_001 ~]# cd

[root@localhost_001 ~]# pwd

/root

[root@localhost_001 ~]# ls

anaconda-ks.cfg CentOS7-Base-163.repo test

authorized_keys link test.txt

[root@localhost_001 ~]# cd /etc/sysconfig/network-scripts/

[root@localhost_001 network-scripts]# cd

3、然后去存放命令的目录下查看: /usr/local/domob/records/username

[root@localhost_001 ~]# cat /usr/local/domob/records/root/bash_history

2018-10-20 12:11:17 ##### root pts/0 (192.168.149.135) #### source /etc/profile

2018-10-20 12:11:20 ##### root pts/0 (192.168.149.135) #### cd

2018-10-20 12:11:21 ##### root pts/0 (192.168.149.135) #### pwd

2018-10-20 12:11:21 ##### root pts/0 (192.168.149.135) #### ls

2018-10-20 12:11:27 ##### root pts/0 (192.168.149.135) #### cd /etc/sysconfig/network-scripts/

2018-10-20 12:11:27 ##### root pts/0 (192.168.149.135) #### cd

4、我们切换到普通用户随意执行一些命令,然后查看是否会记录;

​​​​​​​[root@localhost_001 ~]# su - fenye

上一次登录:四 10月 18 22:35:24 CST 2018pts/0 上

[fenye@localhost_001 etc]$ cd

[fenye@localhost_001 ~]$ pwd

/home/fenye

[fenye@localhost_001 ~]$ cd

[fenye@localhost_001 ~]$ ksjd;lsdjf

-bash: ksjd: 未找到命令

-bash: lsdjf: 未找到命令

[fenye@localhost_001 ~]$

[fenye@localhost_001 ~]$ cd /etc/

[fenye@localhost_001 etc]$ cd

[fenye@localhost_001 ~]$ ls

[fenye@localhost_001 ~]$ klsd;ksjfksf

-bash: klsd: 未找到命令

-bash: ksjfksf: 未找到命令

注释:查看/usr/local/domob/relcords已记录,但是无法打开,因为普通用户只有写入的权限;

[fenye@localhost_001 ~]$ cd /usr/local/domob/records/

fenye/ root/

[fenye@localhost_001 ~]$ cd /usr/local/domob/records/fenye/

[fenye@localhost_001 fenye]$ ls

ls: 无法打开目录.: 权限不够

切换至root用户,查看其用户的历史命令是否有记录;有记录;

[fenye@localhost_001 fenye]$ exit

登出

[root@localhost_001 ~]# cat /usr/local/domob/records/

fenye/ root/

[root@localhost_001 ~]# cat /usr/local/domob/records/fenye/bash_history

2018-10-20 12:17:52 ##### root pts/0 (192.168.149.135) ####

2018-10-20 12:17:54 ##### root pts/0 (192.168.149.135) #### ls

2018-10-20 12:17:55 ##### root pts/0 (192.168.149.135) #### klsjdkfs

2018-10-20 12:17:56 ##### root pts/0 (192.168.149.135) #### jsjfkls

2018-10-20 12:17:57 ##### root pts/0 (192.168.149.135) #### ls

2018-10-20 12:17:58 ##### root pts/0 (192.168.149.135) #### pwd

2018-10-20 12:17:58 ##### root pts/0 (192.168.149.135) #### cd

2018-10-20 12:18:01 ##### root pts/0 (192.168.149.135) #### cd /etc/

2018-10-20 12:18:02 ##### root pts/0 (192.168.149.135) #### ls

2018-10-20 12:18:04 ##### root pts/0 (192.168.149.135) #### cd

2018-10-20 12:18:09 ##### root pts/0 (192.168.149.135) #### pwd

2018-10-20 12:18:10 ##### root pts/0 (192.168.149.135) #### cd

转载于:https://my.oschina.net/yuanhaohao/blog/2249855

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/625855.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python入门:如何下载NumPy库

Python入门:如何下载NumPy库 如果你是Python初学者或是有开发经验的工程师,你可能会涉及到使用NumPy库。NumPy是Python中一个非常重要的科学计算库,它提供了高效的多维数组数据结构和数学函数,被许多人用于数据分析、机器学习、科…

Verilog基础:task和function的使用(二)

相关文章 Verilog基础:表达式位宽的确定(位宽拓展) Verilog基础:表达式符号的确定 Verilog基础:数据类型 Verilog基础:位宽拓展和有符号数运算的联系 Verilog基础:case、casex、ca…

CSS的学习1

使用css的目的是让网页具有美观一致的页面。 语法 CSS规则由两个主要的部分构成:选择器以及一条或多条声明(样式) 选择器:h3 声明:{color:red;font-size:30px;} 选择器通常是需要改变的HTML元素; 每条…

六一儿童节-王者连连看

庆祝六一 用java实现的连连看练手小游戏 王者连连看 🤣 游戏介绍😜 核心😮‍💨总结: 🤣 游戏介绍 王者连连看游戏的目标是通过消除相同的图案来得分并进入更高级别的挑战。   游戏分为四个难度   可以自…

cpp: Visitor Pattern

/*****************************************************************//*** \file Gold.h* \brief 访问者模式 Visitor Pattern C 14 行为模式* 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C新经典设计模式》 王健伟编著 清华大学出版社* \author…

记录:VS2019+OpenCV4.7.0编译

一、准备 OpenCV官网提供了动态库的安装包,但是只有64位,而且没看到编译参数,如果需要32位或者静态链接还是得自己编译。 CMake:https://cmake.org/download/ Visual Studio:https://visualstudio.microsoft.com/zh…

计算机组成原理——中央处理器

文章目录 **一 CPU的功能和基本结构****1 CPU的功能****2 [基本结构](http://t.csdn.cn/bpCt3)****2.1 运算器****2.2 控制器** **二 指令执行过程****1 指令周期****2 指令周期的数据流****2.1 取指周期****2.2 间址周期****2.3 执行周期****2.4 中断周期** **3 指令的执行方案…

chatgpt赋能python:如何下载Python中的jieba包

如何下载Python中的jieba包 随着Python的普及,很多程序员选择使用Python作为自己的主力编程语言。对于自然语言处理方面的任务,jieba是Python中一个非常优秀的分词工具。那么,如何下载和使用Python中的jieba包呢?本篇文章将为您详…

【MySQL数据库 | 第十四篇】多表查询案例

目录 前言: 引入背景: 练习: 前言: 在第十三篇我们已经详细的介绍了多表查询的类别以及每一个类别的语法:【MySQL数据库 | 第十三篇】多表查询,今天我们将通过案例来巩固我们对多表查询语法的熟悉度。 引入…

JavaSE笔记(二)重制版

面向过程篇 前面我们已经认识了Java语言的相关特性,并且已经成功配置好了开发环境,从这节课开始,我们就可以正式进入到Java语言的学习当中了。Java语言是一门面向对象的语言,但是在面向对象之前,我们还得先学会如何面…

【IMX6ULL驱动开发学习】05.IMX6ULL驱动开发_编写第一个hello驱动【熬夜肝】

经过以下四个步骤,终于可以开始驱动开发了 01.安装交叉编译环境【附下载地址】 02.IMX6ULL烧写Linux系统 03.设置IMX6ULL开发板与虚拟机在同一网段 04.IMX6ULL开发板与虚拟机互传文件 目录 一、获取内核、编译内核 二、创建vscode工作区,添加内核目录…

《计算机组成原理》期末考试手写笔记——模块五: 并行主存系统(交叉存储器+顺序存储器“带宽”的计算方法)

目录 (一)知识点总结 (二)经典考试例题 1.设主存储器容量为256字,字长为32位,模块数m4,分别用顺序方式和交叉方式进行组织。主存储器的存储周期T200ns,数据总线宽度为32位&#x…

EMQ X(2):EMQ X服务端环境搭建与配置

1 安装 EMQ X 目前支持的操作系统: Centos6Centos7OpenSUSE tumbleweedDebian 8Debian 9Debian 10Ubuntu 14.04Ubuntu 16.04Ubuntu 18.04macOS 10.13macOS 10.14macOS 10.15Windows Server 2019 产品部署建议 Linux 服务器,不推荐 Windows 服务器。 安装的方式有…

【Linux】HTTP协议

目录 🚀前言🚃HTTP协议 🚄1、URL网址🚅2、URL的编码和解码🚇3、HTTP协议格式🚈4、HTTP请求🚉4.1、 HTTP GET和POST方法🚋4.2、HTTP状态码🚊4.3、HTTP常见Header &#x1…

redis架构设计: redis-server的启动(硬核分析)

怎么在windows上用clion搭建redis的源码阅读环境 请看我的上一篇文章 redis启动之后都干了什么呢? 我们知道,redis的服务端对应的源码位置是server.c main函数是程序启动的入口 ,下面我来一行一行的分析server.c的源码 1、定义时间函数变量 struct …

chatgpt赋能python:Python多种输出格式详解

Python多种输出格式详解 对于Python程序员来说,输出是非常重要的。无论是在开发阶段还是在生产环境中,输出都是我们调试程序和确认程序运行是否正常的重要手段。Python标准库提供了丰富的输出格式,本文介绍了几种常见的输出格式及其使用方法…

因为写不出拖拽移动效果,我恶补了一下Dom中的各种距离

目录 背景 JS Dom各种距离释义 第一个发现 window.devicePixelRatio 的存在 document.body、document.documentElement和window.screen的宽高区别 scrollWidth, scrollLeft, clientWidth关系 元素自身和父级元素的scrollWidth和scrollLeft关系? offsetWidth和clientWid…

【FDA】图像通过傅里叶变换改变光谱风格,实现域自适应

FDA: Fourier Domain Adaptation for Semantic Segmentation, CVPR2020 翻译:CVF2020邻域自适应/语义分割:FDA: Fourier Domain Adaptation for Semantic SegmentationFDA:用于语义分割的傅立叶域自适应算法_傅里叶域适应_HheeFish的博客-CS…

【TCP/IP】多进程服务器的实现(进阶) - 进程和僵尸进程

目录 僵尸(Zombie)进程 僵尸进程的产生机制 僵尸进程的危害 僵尸进程的销毁 wait函数 waitpid函数 进程管理在网络编程中十分重要,如果未处理好,将会导致出现“僵尸进程”,进而影响服务器端对进程的管控。 僵尸(Zombie)进程 第一次听到…

数据类型

常见的数据类型: int,整数类型(整形)bool,布尔类型str,字符串类型list,列表类型tuple,元组类型dict,字典类型set,集合类型float,浮点类型&#x…