通常,我们运维管理人员需要知道一台服务器上有哪些用户登录过,在服务器上执行了哪些命令,干了哪些事情,这就要求记录服务器上所用登录用户的操作信息,这对于安全维护来说很有必要。废话不多说了,下面直接记录做法:

1)查看及管理当前登录用户
使用w命令查看当前登录用户正在使用的进程信息,w命令用于显示已经登录系统的用户的名称,以及它们正在做的事。该命令所使用的信息来源于/var/run/utmp文件。w命令输出的信息包括:
-> 用户名称
-> 用户的机器名称或tty号
-> 远程主机地址
-> 用户登录系统的时间
-> 空闲时间(作用不大)
-> 附加到tty(终端)的进程所用的时间(JCPU时间)
-> 当前进程所用时间(PCPU时间)
-> 用户当前正在使用的命令 [root@test ~]# w
13:54:14 up 2 days, 2:53, 4 users, load average: 0.02, 0.02, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 - Mon11 3:44m 0.11s 0.06s -bash
test pts/0 172.16.255.202 10:11 1:48m 0.11s 0.03s vim userinfo.text
nanli pts/3 172.16.255.196 12:01 1:52m 0.00s 0.00s -bash
work pts/4 172.116.55.13 12:08 0.00s 0.02s 0.00s w 此外,可以使用"who am i"查看使用该命令的用户及进程,使用who查看所有登录用户进程信息,这些查看命令大同小异; 2、使用pkill强制退出登录的用户 使用pkill可以结束当前登录用户的进程,从而强制退出用户登录,具体使用可以结合w命令;
-> 使用w查看当前登录的用户,注意TTY所示登录进程终端号
-> 使用"pkill –9 -t TTY终端号" 结束该进程所对应用户登录(可根据FROM的IP地址或主机号来判断)
[root@test ~]# pkill -9 pts/4
[root@test ~]# w
13:59:23 up 2 days, 2:56, 4 users, load average: 0.02, 0.02, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 - Mon11 3:44m 0.11s 0.06s -bash
test pts/0 172.16.255.202 10:11 1:48m 0.11s 0.03s vim userinfo.text 2)查看所有登录用户的操作历史
在Linux系统的环境下,不管是root用户还是其它的用户只有登陆系统后用进入操作我们都可以通过命令history来查看历史记录。可是假如一台服务器多人登陆,一天因为某人误操作了删除
了重要的数据。这时候通过查看历史记录(命令:history)是没有什么意义了(因为history只针对登录用户下执行有效,即使root用户也无法得到其它用户histotry历史)。那有没有什么
办法实现通过记录登陆后的IP地址和某用户名所操作的历史记录呢?答案肯定是有的! 通过在/etc/profile文件底部添加以下代码就可以实现:
[root@test ~]# cat /etc/profile
......
#记录每个用户的操作信息
export PS1='[\u@\h \w]# '
history
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]
then
USER_IP=`hostname`
fi
if [ ! -d /opt/history ]
then
mkdir /opt/history
chmod 777 /opt/history
fi
if [ ! -d /opt/history/${LOGNAME} ]
then
mkdir /opt/history/${LOGNAME}
chmod 300 /opt/history/${LOGNAME}
fi
export HISTSIZE=4096
DT=`date +"%Y%m%d_%H%M%S"`
export HISTFILE="/opt/history/${LOGNAME}/${USER_IP} history.$DT"
chmod 600 /opt/history/${LOGNAME}/*history* 2>/dev/null [root@test ~]# source /etc/profile #使得上面配置生效 上面脚本在系统的/opt下新建个history目录,记录所有登陆过系统的用户和IP地址(文件名),每当用户登录/退出会创建相应的文件,该文件保存这段用户登录时期内操作历史,可以用这个
方法来监测系统的安全性。
------------------------------------------------------------------------------------------------------------------------------------------
上面的显示跟默认的linux终端显示不太习惯。现在要求终端里切换路径后,只显示当前的简介路径,不显示全部路径,并且后面带上#或$符号,那么只需要将上面的第一行
PS1参数后面的设置如下:
1)只显示当前简介路径,不显示全路径,显示#号。注意下面在"#"符号后面空出一格,这样终端的"#"符号跟命令之间就有了一格的距离,习惯而已!
PS1="[\u@\h \W]# "
2)只显示当前简介路径,不显示全路径,显示$号。注意下面的"$"符号后面空出一格。
PS1="[\u@\h \W]\$ " 这里我在脚本选择第(1)种带"#"号显示(也可以两种都不选,直接将第一行PS1的设置给去掉,这样就是默认的了终端显示.线上使用的话,推荐使用这种默认的),生效后的终
端显示内容和linux默认显示的一样。即export PS1="[\u@\h \W]# "
------------------------------------------------------------------------------------------------------------------------------------------ 比如:使用nanli账号操作:
[root@test ~]# su - nanbo
[nanbo@test ~]# echo "hahahahah"
hahahahah
[nanbo@test ~]# cd /usr/local/
[nanbo@test local]# ls
bin etc games include lib lib64 libexec libzip man openssl sbin share src
[nanbo@test local]# cat /etc/passwd
[nanbo@test local]# ls /var/log/messages
/var/log/messages 然后退出nanli账号,查看用户操作信息
[nanbo@test local]# logout
[root@test ~]# cd /opt/
[root@test opt]# ls
history rh
[root@test opt]# cd history/
[root@test history]# ls
nanbo root
[root@test history]# cd nanbo/
[root@test nanbo]# ls
172.16.255.193 history.20170816_150403
[root@test nanbo]# cat 172.16.255.193\ history.20170816_150403
#1502867049
echo "hahahahah"
#1502867052
cd /usr/local/
#1502867053
ls
#1502867056
cat /etc/passwd
#1502867062
ls /var/log/messages

过一段时间,root操作记录也会有

[root@test ~]# cd /opt/history/
[root@test history]# ls
nanbo root
[root@test history]# cd root/
[root@test root]# ll
total 32K
d-wx------ 2 root root 4.0K Aug 16 23:07 .
drwxrwxrwx 4 root root 4.0K Aug 16 15:04 ..
-rw------- 1 root root 2.4K Aug 16 16:43 192.168.1.193 history.20170816_134444
-rw------- 1 root root 1.2K Aug 16 17:05 192.168.1.193 history.20170816_150350
-rw------- 1 root root 251 Aug 16 18:43 192.168.1.202 history.20170816_184256
-rw------- 1 root root 18 Aug 16 20:54 192.168.1.213 history.20170816_205434
-rw------- 1 root root 329 Aug 16 23:07 192.168.1.213 history.20170816_210614
-rw------- 1 root root 185 Aug 16 15:24 172.29.20.24 history.20170816_150535
[root@test root]# cat 192.168.1.193\ history.20170816_134444
#1502861816
cat /etc/profile
#1502861851
ls
#1502861862
vim /etc/profile
#1502861881
source /etc/profile
#1502861887
cd /usr/local/
#1502861894
vim /etc/profile
#1502861906
source /etc/profile

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
还有一种方案:这个方案会在每个用户退出登录 时把用户所执行的每一个命令都发送给日志守护进程rsyslogd,你也可通过配置“/etc/rsyslog.conf”进一步将日志发送给日志服务器:

操作如下:
把下面内容添加到/etc/profile文件底部
[root@elk-node1 ~]# vim /etc/profile
........ #设置history格式
export HISTTIMEFORMAT="[%Y-%m-%d %H:%M:%S] [`who am i 2>/dev/null| \
awk '{print $NF}'|sed -e 's/[()]//g'`] " #登录时清空当前缓存
echo "" > .bash_history #记录shell执行的每一条命令
export PROMPT_COMMAND='\
if [ -z "$OLD_PWD" ];then
export OLD_PWD=$PWD;
fi;
if [ ! -z "$LAST_CMD" ] && [ "$(history 1)" != "$LAST_CMD" ]; then
logger -t `whoami`_shell_cmd "[$OLD_PWD]$(history 1)";
fi ;
export LAST_CMD="$(history 1)";
export OLD_PWD=$PWD;' [root@elk-node1 ~]# sudo /etc/profile 测试:
分别使用kevin,grace账号登陆这台服务器进行一些操作。
然后发现/var/log/message日志文件中已经记录了这两个用户的各自操作了~
[root@elk-node2 ~]# tail -20 /var/log/messages
Oct 24 14:16:04 elk-node2 root_shell_cmd: [/root] 321 [2016-10-24 14:16:04] [gateway] tail -100 /var/log/messages
Oct 24 14:19:09 elk-node2 root_shell_cmd: [/root] 322 [2016-10-24 14:18:51] [gateway] vim /etc/profile
Oct 24 14:19:12 elk-node2 su: (to kevin) root on pts/0
Oct 24 14:19:25 elk-node2 root_shell_cmd: [/root] 315 [2016-10-24 14:19:23] [gateway] tail -f /var/log/messages
Oct 24 14:19:40 elk-node2 kevin_shell_cmd: [/home/kevin] 2 [2016-10-24 14:19:40] [gateway] echo "123456" > test
Oct 24 14:19:43 elk-node2 kevin_shell_cmd: [/home/kevin] 3 [2016-10-24 14:19:43] [gateway] uptime
Oct 24 14:19:45 elk-node2 kevin_shell_cmd: [/home/kevin] 4 [2016-10-24 14:19:45] [gateway] who
Oct 24 14:19:47 elk-node2 kevin_shell_cmd: [/home/kevin] 5 [2016-10-24 14:19:47] [gateway] last
Oct 24 14:19:48 elk-node2 root_shell_cmd: [/root] 323 [2016-10-24 14:19:12] [gateway] su - kevin
Oct 24 14:19:52 elk-node2 su: (to grace) root on pts/0
Oct 24 14:20:00 elk-node2 grace_shell_cmd: [/usr/local/src] 2 [2016-10-24 14:20:00] [gateway] ls
Oct 24 14:20:03 elk-node2 grace_shell_cmd: [/usr/local/src] 3 [2016-10-24 14:20:03] [gateway] date
Oct 24 14:20:11 elk-node2 grace_shell_cmd: [/usr/local/src] 4 [2016-10-24 14:20:11] [gateway] free -m
Oct 24 14:20:12 elk-node2 root_shell_cmd: [/root] 324 [2016-10-24 14:19:52] [gateway] su - grace
Oct 24 14:20:23 elk-node2 root_shell_cmd: [/root] 316 [2016-10-24 14:20:18] [gateway] tail -f /etc/sudoers
Oct 24 14:20:30 elk-node2 root_shell_cmd: [/root] 317 [2016-10-24 14:20:24] [gateway] tail -f /var/log/messages
Oct 24 14:20:35 elk-node2 root_shell_cmd: [/root] 318 [2016-10-24 14:20:35] [gateway] tail -100 /var/log/messages
Oct 24 14:20:46 elk-node2 su: (to kevin) root on pts/0
Oct 24 14:23:42 elk-node2 root_shell_cmd: [/root] 325 [2016-10-24 14:20:46] [gateway] su - kevin
Oct 24 14:23:45 elk-node2 root_shell_cmd: [/root] 326 [2016-10-24 14:23:45] [gateway] cat /etc/profile

linux下用户操作记录审计环境的部署记录的更多相关文章

  1. linux下用户操作

    在linux中添加ftp用,并设置相应的权限,操作步骤如下: 1.环境:ftp为vsftp.被限制用户名为test.被限制路径为/home/test. 2.建用户:在root用户下: useradd  ...

  2. Linux下rsyslog日志收集服务环境部署记录【转】

    rsyslog 可以理解为多线程增强版的syslog. 在syslog的基础上扩展了很多其他功能,如数据库支持(MySQL.PostgreSQL.Oracle等).日志内容筛选.定义日志格式模板等.目 ...

  3. linux下查看和添加PATH环境变量

    linux下查看和添加PATH环境变量 $PATH:决定了shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录,当您运行一个程序时,Linux在这些目录下进行搜寻编译链接. 编辑你的 PA ...

  4. Linux学习心得之 Linux下命令行Android开发环境的搭建

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下命令行Android开发环境的搭建 1. 前言2. Jav ...

  5. linux 下用户管理

    linux 下用户管理 一.用户的分类 1.超级用户:root UID=0 2.系统用户:不需要登录系统,对应用程序服务,主要维护系统的正常运行:UID = 1 ~ 499(RHEL7 = 1 ~ 9 ...

  6. windows+linux下jdk安装及java环境变量配置

    对于初学java的用户来说,可能第一件要做的事情就是安装jdk及配置环境,以下内容主要讲述windows及linux下jdk的安装以及环境变量的配置. 1.首先下载相应平台可用版本jdk安装文件,可以 ...

  7. Linux下快速搭建php开发环境

    php开发环境快速搭建 一.Linux下快速搭建php开发环境 1.安装XAMPP for Linux XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包,使用XA ...

  8. Linux下日志文件监控系统Logwatch的使用记录

    Linux下日志文件监控系统Logwatch的使用记录 原文:http://www.cnblogs.com/kevingrace/p/6519504.html 在维护Linux服务器时,经常需要查看系 ...

  9. Linux下搭建C/C++编程环境

    Linux下搭建C/C++编程环境 1.KDevelop下载 wget -O KDevelop.AppImage https://download.kde.org/stable/kdevelop/5. ...

随机推荐

  1. oracle 数据库 导出与导入 expdb和impdb使用方法 (服务器本机)

    expdb 与exp 导出数据有区异,exp 无法导出空值表,用于客户端,expdb 只用于服务器端.备份出来的数据可再远程传输到另外一台linux 实现异地备份! 一  关于expdp和impdp ...

  2. linux E325: 注意 发现交换文件 "*.swp" 解决方法

    今天在linux里修改脚本文件时,不小心非正常关闭了脚本文件,再次编辑时,每次都提示 如下错误: E325: 注意发现交换文件 ".bqh.sh.swp" 所有者: root 日期 ...

  3. win10无法删除文件夹(其中的文件或者文件夹已在另一个程序中打开)怎么办?

    1. 右键点击任务管理器 2.打开资源监视器 3.搜索任务,结束任务(可能会死机)

  4. 1.2 Spyder的基本使用

    [TOC] 1.0 Spyder的基本使用 1.Spyder的主题与文字修改: 2.Spyder的使用技巧: (一)安装Anaconda: 官网下载:https://www.anaconda.com/ ...

  5. Vs .Net Framework 灵活配置

    背景:我们开发和部署项目时都是通过注释某些配置项 比如: 在调试时就注释掉生产的配置项,在生产时又要改回来,只有一个还好,如果多的话就会非常容易出错. 问题1:在发布时容易出错,需要控制发布时根据配置 ...

  6. MySQL客户端工具的选择

    最近因系统云化项目,学习使用MySQL集群,为了找一款顺手的mysql客户端,反复使用了多个工具,并筛选出一个自认为最满意的,在此分享. 先说我的选择:SQLyog. 尝试的客户端:Toad for ...

  7. Linux 小知识翻译 - 「环境变量」

    这次,谈谈关于「环境变量」的话题. 所谓变量,就是在程序中设置的,相当于在内存中准备的「一个用来存放数据的小箱子」. 即,程序通过变量来保存值,通过变量保存的内容来进行各式各样的计算处理. 「环境变量 ...

  8. SAP UI 搜索分页技术

    搜索分页技术往往和另一个术语Lazy Loading(懒加载)联系起来.今天由Jerry首先介绍S/4HANA,CRM Fiori和S4CRM应用里的UI搜索分页的实现原理.后半部分由SAP成都研究院 ...

  9. Java设计模式之十 ---- 访问者模式和中介者模式

    前言 2018年已经过去,新的一年工作已经开始,继续总结和学习Java设计模式. 在上一篇中我们学习了行为型模式的解释器模式(Interpreter Pattern)和迭代器模式(Iterator P ...

  10. easyui的datebox控件如何只要年月不要日谢谢知道的说一下

    例子2015-01 格式easyui-datebox 加上 data-options="formatter:myformatter,parser:myparser"function ...