当前位置: 首页 > news >正文

服务器记录所有用户docker操作,监控删除容器/镜像的人

文章目录

  • 使用场景
  • 安装auditd
  • 添加docker审计规则
  • 设置监控日志大小与定期清除
  • 查询 Docker 操作日志
    • 查看所有用户,所有操作日志
    • 查看特定用户的 Docker 操作
    • 查看所有用户删除容器/镜像日志
    • 过滤特定时间范围内日志

使用场景

多人使用的服务器,使用的docker 容器或镜像被其他人删除,需要找到删除的人

查找方法:安装使用auditd工具,并配置规则记录所有用户的docker操作

auditd 是 Linux 审计守护进程(Audit Daemon),用于记录系统活动和安全事件。它是 Linux 内核审计子系统的一部分,帮助系统管理员跟踪关键系统事件、访问控制、用户活动等,从而增强系统安全性和合规性。

主要功能

  • 事件记录:记录系统调用(如文件访问、网络操作)以及用户、进程和权限相关的活动。
  • 安全审计规则:系统管理员可以定义规则,指定要审计的事件,比如监控特定文件或目录的访问。
  • 详细的审计日志:审计事件被存储在 /var/log/audit/audit.log 文件中,提供详细的信息,如时间戳、用户、进程ID、操作类型、结果(成功/失败)等。
  • 实时监控:可以使用工具(如 ausearch 或 auditctl)实时监控和查询审计日志。
  • 用户管理审计:监控用户登录、登出、权限更改等敏感操作。
  • 文件完整性监控:结合 auditd 和 audit rules,可以监控重要文件的访问、修改或删除操作。

相关工具

  • auditctl:管理和配置审计规则。
  • ausearch:搜索审计日志中的特定事件。
  • aureport:生成审计报告的工具。
  • aulast:显示用户登录和登出信息。
  • autrace:用于跟踪特定命令的审计事件。

常见用途

  • 合规性审计
  • 确保系统符合安全标准,如 PCI DSS、HIPAA 等。
  • 入侵检测
  • 监控可疑活动,如未经授权的访问或权限提升。
  • 系统故障排除
  • 调查安全事故或操作系统问题

配置文件

  • 主配置文件:/etc/audit/auditd.conf
  • 规则配置:/etc/audit/rules.d/

安装auditd

sudo apt-get install auditd
sudo systemctl enable auditd
sudo systemctl start auditd

添加docker审计规则

Docker 的常用二进制文件路径包括:

  • Docker CLI:/usr/bin/docker
  • Docker 服务:/usr/bin/dockerd

编辑规则文件

sudo vi /etc/audit/rules.d/audit.rules

文件最后添加以下内容:

# 监控 Docker 命令执行
-a always,exit -F path=/usr/bin/docker -F perm=x -F key=docker_actions# 监控 Docker 配置文件
-w /etc/docker/ -p wa -k docker_config

监控 Docker 命令执行解释

  • -a always,exit:在系统调用退出时触发规则。
  • -F path=/usr/bin/docker:指定要监控的路径。
  • -F perm=x:监控执行权限(执行 Docker 命令)。
  • -F key=docker_actions:为此规则设置一个键值(方便日志查询)。

监控 Docker 配置文件解释

  • -w:监控指定文件或目录。
  • -p wa:监控写入和属性更改。
  • -k docker_config:设置键值。

重新加载审计规则

sudo augenrules --load

设置监控日志大小与定期清除

避免日志记录大量操作,文件大小过大,可以设置日志轮替(Log Rotation)
默认日志存储位置:/var/log/audit/audit.log
编辑配置文件

sudo vi /etc/audit/auditd.conf

查看并修改以下配置:

max_log_file = 100          # 每个日志文件最大100MB
num_logs = 5                # 保留5个旧日志文件
max_log_file_action = ROTATE  # 超过大小时轮替

效果

  • 当日志文件达到 100MB 时,auditd 会创建一个新的日志文件。
  • 系统最多保留 5 个旧日志文件(audit.log.1, audit.log.2, …),超过的将被删除。

重新加载配置

sudo service auditd reload
# 或者
sudo systemctl restart auditd

查询 Docker 操作日志

查看所有用户,所有操作日志

sudo ausearch -k docker_actions

输出结果中的单个样例如下

----
time->Wed Nov 01 18:59:24 2024  # 命令执行时间
type=PROCTITLE msg=audit(1732695555.363:1213): proctitle=646F636B6572007073002D61
type=PATH msg=audit(1732695555.363:1213): item=1 name="/lib64/ld-linux-x86-64.so.2" inode=217841670 dev=08:12 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
type=PATH msg=audit(1732695555.363:1213): item=0 name="/usr/bin/docker" inode=79708287 dev=08:12 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
type=CWD msg=audit(1732695555.363:1213): cwd="/home/haha/test"   # 在哪个目录执行的命令
type=EXECVE msg=audit(1732695555.363:1213): argc=3 a0="docker" a1="ps" a2="-a"   # 执行的具体命令
# 执行命令的用户
type=SYSCALL msg=audit(1732695555.363:1213): arch=c000003e syscall=59 success=yes exit=0 a0=56353bdf70c0 a1=56353bec7ba0 a2=56353be1f680 a3=8 items=2 ppid=78046 pid=78448 auid=1014 uid=1014 gid=1014 euid=1014 suid=1014 fsuid=1014 egid=1014 sgid=1014 fsgid=1014 tty=pts24 ses=15298 comm="docker" exe="/usr/bin/docker" key="docker_actions"
----

在 audit.log 文件中,每条审计记录都会包含用户相关信息,比如:

  • uid:用户ID
  • auid:审计用户ID(通常是登录用户的ID,即使提权后也保持不变)
  • euid:有效用户ID(通常是执行操作时的用户)
  • ses:会话ID

比如在上面的输出中uid=1014,即为用于ID。为了知道该用户ID对应的用户名,使用如下命令即可

cat /etc/group | grep 1014

查看特定用户的 Docker 操作

sudo ausearch -k docker_actions -ui <用户ID>

查看所有用户删除容器/镜像日志

sudo ausearch -k docker_actions | grep -E 'a1="rm"|a1="rmi"'  -A 1

命令解释:

  • -E ‘docker.*(rm|rmi)’:正则表达式,匹配包含 docker 和 rm 或 rmi 的行。
  • -A 1:(可选参数)表示包括匹配行和紧接的下一行。由于检索到的日志包含大量内容,操作用户id出现在匹配行的下一行。因此只需要显示一行

过滤特定时间范围内日志

sudo ausearch -k docker_actions -ts yesterday -te now

http://www.mrgr.cn/news/78359.html

相关文章:

  • AIGC--------AIGC在医疗健康领域的潜力
  • 第六届国际科技创新学术交流大会暨新能源科学与电力工程国际(NESEE 2024)
  • 【四轴】利用PWM捕获解析接收机信号
  • [工具分享] 根据Excel数据根据Word文档模板,批量创建生成Word文档并重命名,方便快速查找打印
  • ssm190基于ssm的“游侠”旅游信息管理系统+jsp(论文+源码)_kaic
  • Linux:基础开发工具
  • 自动化运维(k8s)之微服务信息自动抓取:namespaceName、deploymentName等全解析
  • ComfyUI节点安装笔记
  • 数据结构--图
  • 【NLP 3、深度学习简介】
  • 1-深度学习干货总结(持续更新)
  • Matlab Simulink HDL Coder FPGA开发初体验—计数器
  • 表征对齐在训练DiT模型中的重要性
  • 【算法 python A*算法的实现】
  • 某j,mybatis-plus,多租户,多表关联查询 ,主表不追加租户条件bug解决
  • element ui select绑定的值是对象的属性时,显示异常.
  • SAP学习
  • Android 图形系统之一:概览
  • 【Zookeeper】三,Zookeeper的安装与基本操作
  • 《Learning Three.js》学习(1)使用Three.js创建三维场景
  • ABAP OOALV模板
  • 蓝桥杯备赛笔记(一)
  • transformer学习笔记-神经网络原理
  • mini-spring源码分析
  • Leetcode(快慢指针习题思路总结,持续更新。。。)
  • 【halcon】Metrology工具系列之 get_metrology_object_model_contour