Linux下记录所有用户的操作命令,以方便后期审计

运维与研发人员一多,登录服务器操作的情况越来越常见,为了安全,有必要对登录系统的每次操作都进行记录,以方便后期了解,掌握,审计。

简单解决办法:

修改/etc/profile文件,在最后增加如下内容:

HISTFILESIZE=2000

HISTTIMEFORMAT="%Y%m%d-%H%M `whoami`   "

保存文件,退出,输入source /etc/profile,让环境生效,或者退出终端,重新登录也可以。

查看命令,在终端输入history即可看到历史命令的

但这里有个问题,因为只是记录了时间与命令,没有记录登录的IP地址,后期的审计也不方便,为防止以上情况,可以在/etc/profile文件中,进行完善,把以下两条命令去掉,用新的内容进行填充。

HISTFILESIZE=2000

HISTTIMEFORMAT="%Y%m%d-%H%M `whoami`   "

新内容为:

### add by lgh2 at 2016-01-06

#history

export HISTTIMEFORMAT="[%Y%m%d-%H%M-:%S]"

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

HISTDIR=/var/log/.hist

if [ -z $USER_IP ]

then

USER_IP=`hostname`

fi

if [ ! -d $HISTDIR ]

then

mkdir -p$HISTDIR

chmod 777$HISTDIR

fi

if [ ! -d $HISTDIR/${LOGNAME} ]

then

mkdir -p $HISTDIR/${LOGNAME}

chmod 300$HISTDIR/${LOGNAME}

fi

export HISTSIZE=4096

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

exportHISTFILE="$HISTDIR/${LOGNAME}/${USER_IP}.hist.$DT"

chmod 600 $HISTDIR/${LOGNAME}/*.hist* 2>/dev/null

###end by lgh2

解说:所有操作命令记录存放在/var/log/.hist/{用户}/目录下,即使是同一个终端几个不同的窗口,在该窗口退出或关闭时,该用户目录下会生产一个文件,多个窗口会生产多个文件,最后只要查看这些文件内容,就可以看出历史操作了。

命令是记录了,但从安全角度讲,如果他清楚,所有操作均记录了的话,是可以进入日志记录目录,进行文件删除或文件修改的,于是需要将这些文件及时传到日志收集服务器中,最好是作一个后台实时监控进程,该目录下有文件变化的话,直接触发同步操作,把文件及时同步到日志收集服务器,网上也有人把所有记录实时通过日志进程syslog,把日志实时发至日志服务器中。

时间: 2024-10-13 08:26:21

Linux下记录所有用户的操作命令,以方便后期审计的相关文章

在Linux下记录所有用户的登录和操作日志

一般我们可以用history命令来查看用户的操作记录,但是这个命令不能记录是哪个用户登录操作的,也不能记录详细的操作时间,且不完整:所以误操作而造成重要的数据丢失,就很难查到是谁操作的. 在这里我们通过脚本代码来实现记录所以用户的登录操作日志: 编辑/etc/profile文件,在文件末尾加入下面代码: 首先加上一行,来记录实时的 export HISTTIMEFORMAT="%F %T `who am i|awk '{print $1}'` as `whoami` : " 实时的有缺

Linux 下 FTP虚拟用户的使用配置

Linux下FTP虚拟用户的使用配置 Linux的FTP服务支持3种用户: 1.匿名帐户 2.本地帐户 3.虚拟用户 为什么要使用虚拟用户: 匿名帐户可以很好的保证FTP服务器的安全性,但是,对匿名用户的权限管理不够灵活.如果想对访问FTP的帐户给予更多的权限,就可以用本地帐户来实现.但是,本地帐户默认情况下是可以登陆Linux系统的,这样对Linux系统来说是一个安全隐患.那么怎么能在灵活的赋予FTP用户权限的前提下,保证FTP服务器乃至整个Linux系统的安全呢?使用虚拟用户就是一种解决办法

Linux下非root用户安装软件

下面简要说一下Linux下非root用户安装软件的一般流程:1. 获取源代码,一般是wget方式,ubuntu可以使用apt-get source来获取源代码.2. 解压源代码,一般使用tar -zxvf xxx.tar.gz即可3. 切换到解压后的目录,运行 ./configure.其选项可以通过 ./configure –help来获取,非root用户下最重要的应该是定义安装目录,即应该定义 ./configure –prefix=/path/to/bin, 对于一些依赖库,可能还需要使用

linux下非root用户如何修改root权限的文件

在linux下会出现把一些配置文件参数配错.root密码忘记等导致系统无法启动或进入root的窘迫境地,本文以redhat  enterprise linux server 6.4为例介绍root身份修改root权限配置文件的参数后,root无法登录,然后通过linux的rescue模式改回配置文件,巧妙以非root身份修改了root权限的文件的解决方案. 首先,插入linux安装盘重启系统,等到引导进入安装会话,上下移动方向键,选rescue installed system: 第二,进入修复

Linux下如何修改用户默认目录

Linux下默认的用户目录一般为/home/xxx(root用户除外),有些时候我们可能需要修改这个目录,下面我就给大家分享2中修改的方法 工具/原料 Linux操作系统 方法/步骤 1 1.切换到root用户,直接修改/etc/passwd文件,找到你的用户名你一行,如下图所示修改路径,然后保存即可. 2 2.切换到root用户,使用usermod命令,例如usermod -d /tmp test (test为你的用户名),使用该命令请确保该用户下没有运行的软件或进程 3 最后切换到普通账户,

linux下非root用户的sudo问题

linux下的root用户是个超级管理员,一般是不用这个用户登录进行操作的,但有时候需要root权限,又不想切换用户的话可以使用sudo命令.但是不是所有的用户都可以使用sudo命令的. 首先可能会遇到下面的提示: ××× is not in the sudoers file.  This incident will be reported. 解决办法: 1.修改/etc/sudoers 文件 #su - #chmod u+w /etc/sudoers 在 root    ALL=(ALL) 

在linux下如何终止用户会话?

公司使用的监控工具是cacti,在阈值里的设置是当已登录用户超过2个的时候就会报警.那么,我的疑问就出来了,如何终止多于的用户会话呢?我自己又是哪个用户会话呢,总不能自己把自己给终止会话了吧. 第一步:查看哪些IP在操作服务器,who命令 [[email protected] ~]# who root     tty1         2014-04-20 08:42 root     pts/0        2014-04-20 09:10 (192.168.204.50) 第二步:查看服务

Linux下vsftp匿名用户配置

Linux下vsftp匿名用户上传和下载的配置 配置要注意三部分,请一一仔细对照: 1.vsftpd.conf文件的配置(vi /etc/vsftpd/vsftpd.conf) #允许匿名用户登录FTP anonymous_enable=YES #设置匿名用户的登录目录(如需要,需自己添加并修改) anon_root=/var/ftp/pub #打开匿名用户的上传权限 anon_upload_enable=YES #打开匿名用户创建目录的权限 anon_mkdir_write_enable=YE

linux下mysql的用户管理及访问问题

1.mysql的安装配置 linux下有一个很神奇的东西叫yum,只要有源,用yum来安装是一件非常容易的事,什么都不用管,它会为你解决好一些软件依赖的问题.一键安装mysql: [[email protected] ~]# yum install mysql-server mysql-devel 安装完成后我们就可以使用mysql了: [[email protected] ~]# /etc/init.d/mysqld start Starting mysqld: [ OK ] [[email