服务器记录所有用户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
相关文章:
服务器记录所有用户docker操作,监控删除容器/镜像的人
文章目录 使用场景安装auditd添加docker审计规则设置监控日志大小与定期清除查询 Docker 操作日志查看所有用户,所有操作日志查看特定用户的 Docker 操作查看所有用户删除容器/镜像日志过滤特定时间范围内日志 使用场景 多人使用的服务器,使用的docker …...
关于使用天地图、leaflet、ENVI、Vue工具实现 前端地图上覆盖上处理的农业地块图层任务
1.项目框架搭建 项目地址:Webgis: 一个关于webgis、天地图、Leaflet、Vue、数据库的学习框架。 ①git到本地,vscode打开。 ② 配置后端 搜索下载MySQL插件(前提:电脑中装有MySQL才可应用)。 连接数据库。 配置基本…...
基于yolov4深度学习网络的排队人数统计系统matlab仿真,带GUI界面
目录 1.算法仿真效果 2.算法涉及理论知识概要 3.MATLAB核心程序 4.完整算法代码文件获得 1.算法仿真效果 matlab2022a仿真结果如下(完整代码运行后无水印): 仿真操作步骤可参考程序配套的操作视频。 2.算法涉及理论知识概要 在现代社会…...
用 React 编写一个笔记应用程序
这篇文章会教大家用 React 编写一个笔记应用程序。用户可以创建、编辑、和切换 Markdown 笔记。 1. nanoid nanoid 是一个轻量级和安全的唯一字符串ID生成器,常用于JavaScript环境中生成随机、唯一的字符串ID,如数据库主键、会话ID、文件名等场景。 …...
如何离线安装dockerio
如何离线安装dockerio 一、下载Docker离线安装包二、上传离线安装包三、解压安装包四、复制文件到系统目录五、配置Docker服务六、设置文件权限并重新加载配置七、启动Docker服务八、设置开机自启动九、验证安装Docker是一个开源的容器化平台,用于开发、发布和运行应用程序。离…...
LocalDateTime序列化(跟redis有关)
使用过 没成功,序列化后是[2024 11 10 17 22 20]差不多是这样, 反序列化后就是: [ 2024 11 10.... ] 可能是我漏了什么 这是序列化后的: 反序列化后: 方法(加序列化和反序列化注解)&…...
【redis】如何跑
在 Windows 上配置 Redis 需要一些额外的步骤,因为 Redis 官方并没有为 Windows 提供原生支持。不过,可以通过以下方法来安装和配置 Redis。 方法一:使用 Windows 版 Redis(非官方版本) 下载 Redis for Windows Redis…...
Scala学习记录,全文单词统计
package test32 import java.io.PrintWriter import scala.io.Source //知识点 // 字符串.split("分隔符":把字符串用指定的分隔符,拆分成多个部分,保存在数组中) object test {def main(args: Array[String]): Unit {//从文件1.t…...
【MyBatis】验证多级缓存及 Cache Aside 模式的应用
文章目录 前言1. 多级缓存的概念1.1 CPU 多级缓存1.2 MyBatis 多级缓存 2. MyBatis 本地缓存3. MyBatis 全局缓存3.1 MyBatis 全局缓存过期算法3.2 CacheAside 模式 后记MyBatis 提供了缓存切口, 采用 Redis 会引入什么问题?万一遇到需强一致场景&#x…...
学习ASP.NET Core的身份认证(基于Session的身份认证3)
开源博客项目Blog中提供了另一种访问控制方式,其基于自定义类及函数的特性类控制访问权限。本文学习并测试开源博客项目Blog的访问控制方式,测试程序中直接复用开源博客项目Blog中的相关类及接口定义,并在其上调整判断逻辑。 首先是接口A…...
速盾:高防 CDN 可以配置客户端请求超时配置?
在高防 CDN(Content Delivery Network,内容分发网络)的运行管理中,客户端请求超时配置是一项重要的功能设定,它对于优化网络资源分配、保障服务质量以及维护系统稳定性有着关键意义。 一、客户端请求超时配置的概念 …...
DRM(数字权限管理技术)防截屏录屏----ffmpeg安装
提示:ffmpeg安装 文章目录 [TOC](文章目录) 前言一、下载二、配置环境变量三、运行ffmpeg四、文档总结 前言 FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的…...
使用PyQt5开发一个GUI程序的实例演示
一、安装Python 下载安装到这个目录 G:\Python38-32 安装完成有这些工具,后面备用: G:\Python38-32\Scripts\pyrcc5.exe G:\Python38-32\Scripts\pyuic5.exe 二、PyQt环境配置 pip install PyQt5 pip install pyqt5-tools 建议使用国内源,…...
【VUE3】【Naive UI】<NCard> 标签
【Vue3】【Naive UI】 标签 title 属性bordered 属性header-style 和 body-style 属性footer 属性actions 属性hoverable 属性loading 属性size 属性type 属性cover 和 avatar 属性description 属性style 属性 【VUE3】【Naive UI】<NCard> 标签 【VUE3】…...
选择排序之大根堆
大根堆:树的根节点大于左右子树的结点值,这样就能保证每次从树根取的是最大值 灵魂在于HeadAdjust函数,以某节点为树根通过下落调整为大根堆, 建树思想 就是,从最后一个非终端结点开始调整以该结点为根的子树&#x…...
AI的魔力:如何为开源软件注入智慧,开启无限可能
“AI的魔力:如何为开源软件注入智慧,开启无限可能” 引言: 在科技发展的浪潮中,开源软件生态一直扮演着推动创新与共享的重要角色。从Linux到Python,开源项目赋予了开发者全球协作的机会,推动了技术的飞速…...
如何在 VPS 上使用 Git 设置自动部署
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 介绍 要了解 Git 的基本知识以及如何安装,请参考介绍教程。 本文将教你如何在部署应用程序时使用 Git。虽然有许多使用 Gi…...
Linux下的三种 IO 复用
目录 一、Select 1、函数 API 2、使用限制 3、使用 Demo 二、Poll 三、epoll 0、 实现原理 1、函数 API 2、简单代码模板 3、LT/ET 使用过程 (1)LT 水平触发 (2)ET边沿触发 4、使用 Demo 四、参考链接 一、Select 在…...
通过 SSH 进行WordPress网站的高级服务器管理
我在管理hostease的服务器时,时常需要通过SSH登录服务器进行修改。而在网站管理中,SSH不仅是一个基础工具,更是高级用户用来精细化管理和优化服务器的重要工具。通过SSH,你可以深入监控服务器的性能、精细管理系统资源,…...
速盾高防cdn支持移动端独立缓存
随着移动互联网的快速发展,移动端网页访问量也越来越大。然而,移动端的网络环境相对不稳定,用户体验可能会受到影响。因此,使用高防CDN来加速移动端网页访问,成为越来越多网站运营者的首选。 速盾高防CDN是一种分布式…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
