前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Linux] linux审计脚本 -- 录屏用户操作 (记录用户屏幕输出内容)

[Linux] linux审计脚本 -- 录屏用户操作 (记录用户屏幕输出内容)

原创
作者头像
大大刺猬
发布2024-07-16 14:07:06
860
发布2024-07-16 14:07:06
举报
文章被收录于专栏:大大刺猬大大刺猬

导读

之前我记得有人问过linux上, 怎么记录用户的所有操作,包括输出的结果. 那时候我还不知道. 今天看python文档pty的时候看到个官方例子就是使用一个伪终端来模拟终端. 这不就是我们要的方法么.

官方链接: https://docs.python.org/3/library/pty.html

操作过程

官方的例子, 实际上就可以直接使用的. 但我们稍微改一改, 完善一下.

首先创建一个目录, 专门用来记录终端的输出信息的.

代码语言:shell
复制
mkdir -p /data_audit
chmod o+rw /data_audit # 得给其它账号写的权限

然后在/data_audit文件下创建一个脚本(模拟终端的).

代码语言:shell
复制
cat << EOF > /data_audit/.pty.py
#!/usr/bin/env python
import argparse
import os
import pty
import sys
import time

parser = argparse.ArgumentParser()
parser.add_argument('-a', dest='append', action='store_true')
parser.add_argument('-p', dest='use_python', action='store_true')
parser.add_argument('filename', nargs='?', default='.ptylogin.log')
options = parser.parse_args()

shell = sys.executable if options.use_python else os.environ.get('SHELL', 'sh')
filename = options.filename
mode = 'ab' if options.append else 'wb'

with open(filename, mode) as script:
    def read(fd):
        data = os.read(fd, 1024)
        script.write(data)
        return data

    print('WARNING! pty login on file:'+filename)
    script.write(('login %s\n' % time.asctime()).encode())

    pty.spawn(shell, read)

    script.write(('logout %s\n' % time.asctime()).encode())

EOF

接着就是配置/etc/profile来实现每次时直接调用该脚本. 添加如下内容即可

代码语言:shell
复制
if [ "`whoami`" != "root" ];then # 一般root账号是不允许登录的, 我们这里就排除root账号了
    mkdir -p /data_audit/`whoami` # 每个用户一个目录
    filename=/data_audit/`whoami`/`tty|sed 's/\///g'` 
    touch ${filename} # 创建相关日志文件
    python /data_audit/.pty.py -a ${filename}
    exit # 等用户退出登录时,我们也要退出
fi

到这里我们就配置好了.

我们这里没做权限控制. 如果要实现权限控制的话,自行修改脚本

测试

我们登录随便执行点信息

然后退出, 使用root账号查看记录的信息

如果使用该用户查看信息的话, 也会记录该信息到那个文件, 就循环上了.... 所以我们理论上是不允许普通账号查看审计日志的. 这也是我们排除root账号的原因.

发现记录的信息和上面终端输出的信息一致. 说明我们的录屏功能实现了.

没有做空间大小判断, 通常这种审计日志不会太多. 但还是得注意下. 尤其是那种cat大文件的操作(就尼玛离谱)

总结

这只是录屏用户的操作. 但用户的高危命令还是能执行的.所以权限控制还是十分重要的. 录屏功能主要是方便后续问题排查, 比如某些比较重要的信息输出到屏幕上, 但是操作多了就刷掉了, 就可以通过这种录屏来查看当时的命令和输出. 十分的方便.

参考: https://docs.python.org/3/library/pty.html

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 导读
  • 操作过程
  • 测试
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档