服务器记录所有用户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是一种分布式…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...

Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...