服务器记录所有用户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是一种分布式…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...

shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...

网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...