audit审计

安装audit

参考: https://blog.youkuaiyun.com/u010039418/article/details/85091142

# 检查系统是否安装了audit服务
rpm -aq | grep audit
rpm -ql audit

在这里插入图片描述

# rhel
dnf install -y audit

# debian
## audispd-plugins提供了 一些插件和规则
sudo apt install -y auditd audispd-plugins

auditd程序

auditd程序解释
auditctl即时控制审计守护进程的行为的工具,比如如添加规则等等
aureport查看和生成审计报告的工具
ausearch查找审计事件的工具
auditspd转发事件通知给其他应用程序,而不是写入到审计日志文件中
autrace一个用于跟踪进程的命令

配置文件

配置文件功能作用
/etc/audit/auditd.confauditd工具的配置文件
/etc/audit/rules.d/audit.rules包含审核规则的文件
/etc/audit/audit.rules记录审计规则的文件

配置审计服务

审计守护进程可以在/etc/audit/auditd.conf

配置文件中进行配置。此文件包含修改审核守护进程行为的配置参数。任何空行或#后面的文本都将被忽略

默认情况下审计规则是空的

# 查看规则
auditctl -l

# 查看命令帮助
auditctl -h


配置auditd capp 环境

默认auditd配置应该适用于多数环境。但是,如果您的环境必须满足受控访问保护配置文件(CAPP)设置的标准

  • 保存审核日志文件的目录(通常为/var/log/audit)驻留在单独的分区上。这可以防止其他进程占用此目录中的空间,并为审计守护进程提供对剩余空间的准确检测
  • max_log_file参数指定单个审计日志文件的最大大小,必须设置为充分利用保存审计日志文件的分区上的的可用空间
  • max_log_file_action参数一旦max_log_file达到设置时采取的操作,应设置keep_logs为防止审计日志文件被覆盖

默认情况下审计规则是空的

# 查看规则
auditctl -l

# 查看命令帮助
auditctl -h

定义审计规则

审计系统根据一组审计规则运行,这些规则定义了日志文件中捕获的内容,可以指定三种类型的审计规则

  1. 控制规则–允许修改审计系统的行为以及某些配置
  2. 文件系统规则-也称为文件监视,允许审计对特定文件或目录的访问
  3. 系统调用规则–允许记录任何指定程序进行的系统调用

可以使用auditctl程序在命令行指定审计规则(请注意,这些规则在重新启动后不会持久),或写入/etc/audit/audit.rules文件

# 创建审计规则文件
touch /etc/audit/rules.d/10-root-commands.rules

配置审计规则内容如下

# 审计规则:针对 64 位架构,监控以 root 身份执行的命令
## -a always,exit: 添加一条审计规则,始终生效并在系统调用退出时触发
## -F arch=b64: 仅适用于 64 位架构
## -S execve: 监控 `execve` 系统调用(用于执行程序)
## -F euid=0: 仅审计有效用户 ID 为 0(即 root 用户)的进程
## -k root-commands: 将审计事件标记为 `root-commands`,便于后续查询
-a always,exit -F arch=b64 -S execve -F euid=0 -k root-commands

# 审计规则:针对 32 位架构,监控以 root 身份执行的命令
## -a always,exit: 添加一条审计规则,始终生效并在系统调用退出时触发
## -F arch=b32: 仅适用于 32 位架构
## -S execve: 监控 `execve` 系统调用(用于执行程序)
## -F euid=0: 仅审计有效用户 ID 为 0(即 root 用户)的进程
## -k root-commands: 将审计事件标记为 `root-commands`,便于后续查询
-a always,exit -F arch=b32 -S execve -F euid=0 -k root-commands

创建一条kill命令的审计规则

# 创建一条审计规则
## 始终记录64位架构上的kill系统调用尝试,无论成功与否,事件都会被标记为 kill_signals
## -a exit,always: auditctl 在每次系统调用退出时总是触发审计事件
## -F arch=b64: 指定要监控的64位系统架构
## -S kill: 指定监控的系统调用类型为 kill
## -k kill_signals: 将事件标记为kill_signals(可以指定为任意字符串)
auditctl -a exit,always -F arch=b64 -S kill -k kill_signals

auditd磁盘空间不足配置

参考:https://blog.youkuaiyun.com/u012085379/article/details/50973245

auditd服务会向/var/log/audit/目录中写入大量审计日志,如果配置不当,值配置为halt,会导致auditd服务磁盘空间不足时自动触发系统宕机

auditd配置文件/etc/audit/auditd.conf

修改在磁盘空间不足时,auditd的动作参数space_left_actionadmin_space_left_actiondisk_full_action的值。

推荐修改为SUSPEND,表示磁盘空间不足时auditd停止写入审计日志。

space_left = 75 space_left_action = SUSPEND admin_space_left = 50 admin_space_left_action = SUSPEND disk_full_action = SUSPEND

使用auditctl应用程序定义审计规则

与审计服务和审计日志文件交互的所有命令都需要root权限。确保以root用户执行这些命令

auditctl命令允许您控制审计系统的基本功能并决定记录哪些事件的规则


定义控制规则

以下是一些允许您修改审计系统行为的控制规则

# -b 设置内核中现有审计缓存区的最大数值
auditctl -b 8192
  • -f 该选项允许确定希望内核如何处理关键错误,有0,1,2三个值,0是不输出日志,1位输出printk日志,2会大量输出日志信息。默认值位1
# -f  该选项允许确定希望内核如何处理关键错误
auditctl -f 2

重载规则

# 重载规则
sudo augenrules --load

# 验证规则是否已加载
sudo auditctl -l

审计

# 审计
sudo ausearch -k root-commands

# 只看命令执行记录
sudo ausearch -k root-commands|grep argc

# 查看最近10分钟的
sudo ausearch -k root-commands -ts recent

# 查看今天的
sudo ausearch -k root-commands -ts today

## -i 格式化输出,更易读
sudo ausearch -k root-commands -i

# 向history一样只显示命令
ausearch -k root-commands -i | grep 'proctitle='
<think>我们正在讨论如何开启MySQL的审计功能。根据引用内容,MySQL的审计功能在不同版本和系统上有不同的配置方式。用户询问的是如何开启audit审计功能,我们需要提供具体的配置方法。首先,注意MySQL企业版和社区版的区别:-企业版自带审计插件(audit_log),可以直接在配置文件中开启。 -社区版没有内置审计插件,需要额外安装插件,例如使用MariaDB的server_audit插件。根据引用[1]:企业版开启审计功能的方法是在配置文件(my.cnf)中添加相关配置。引用[2][3][4][5]则提到了社区版通过安装第三方插件(如server_audit)来实现。用户没有明确说明是哪个版本,因此我们需要提供两种情况的配置方法。步骤:1.确认MySQL版本和系统环境(Linux或Windows)。2.根据版本选择对应的开启方式。情况一:MySQL企业版(以引用[1]为例)-编辑配置文件(my.cnf或my.ini)-添加配置项:[mysqld]audit_log= ONaudit_log_format =JSON#日志格式,也可以是OLD(XML)或NEW(默认格式)audit_log_policy= ALL#记录所有事件,也可以设置为LOGINS(仅登录)、QUERIES(仅查询)、NONE(无)audit_log_file =/var/log/mysql/audit.log#日志文件路径(Linux)或Windows路径注意:在Windows系统中,路径使用反斜杠,例如:audit_log_file =C:\\mysql\\audit.log情况二:MySQL社区版(需要安装插件)-首先需要获取审计插件文件(server_audit.so或server_audit.dll)。引用[4]提到可以从MariaDB获取(Linux下是.so,Windows下是.dll)。-将插件文件放入MySQL的插件目录(可通过`show variableslike 'plugin_dir';`查看)。-在配置文件中添加配置(或通过SQL命令加载插件并设置参数)。社区版配置步骤(以Linux为例,引用[4][5]):1.获取server_audit.so文件(例如从MariaDB的安装目录中复制)。2.将文件复制到MySQL的插件目录(如/usr/lib/mysql/plugin/)。3.在MySQL配置文件(my.cnf)中添加:[mysqld]plugin-load=server_audit=server_audit.soserver_audit_logging=ONserver_audit_events=CONNECT,QUERY,TABLE#需要记录的事件类型server_audit_file_path=/var/log/mysql/server_audit.logserver_audit_file_rotate_size=30000000#日志文件大小,单位字节server_audit_file_rotations=200#保留的日志文件数量4.重启MySQL服务。或者通过SQL命令动态加载(无需重启):INSTALLPLUGIN server_audit SONAME 'server_audit.so';SETGLOBALserver_audit_logging=ON;...(其他参数也可以通过SET命令设置)注意:Windows系统使用.dll文件,配置方法类似,只需将文件名改为server_audit.dll。另外,引用[5]提到了一些动态设置的参数:SET GLOBAL server_audit_events='query,table';SETGLOBALserver_audit_file_path= 'server_audit.log';SETGLOBALserver_audit_file_rotate_size=300*1024*1024;#300MBSET GLOBAL server_audit_file_rotate_now=ON;#立即轮转日志SETGLOBALserver_audit_logging=1;#开启日志记录但是,通过SQL命令设置的参数在重启后会失效,建议将配置写入配置文件。总结:-企业版:直接配置参数即可。-社区版:需要安装插件,然后配置参数。注意:无论哪种方式,都要确保日志文件的路径MySQL有权限写入。根据用户的问题,我们给出两种情况的配置方法,并提醒用户根据实际版本选择。由于用户没有提供具体的版本和系统,我们提供通用方法。最后,生成相关问题。</think>### 开启 MySQL Audit 审计功能的配置方法 #### 一、MySQL 企业版配置方法(推荐) MySQL 企业版内置审计插件,通过修改配置文件开启: 1. 编辑 MySQL 配置文件: ```bash sudo vim /etc/my.cnf # Linux 系统 # 或修改 my.ini (Windows) ``` 2. 在 `[mysqld]` 段添加配置: ```ini [mysqld] audit_log = ON audit_log_format = JSON # 日志格式:JSON/OLD/NEW audit_log_policy = ALL # 记录策略:ALL/LOGINS/QUERIES/NONE audit_log_file = /var/log/mysql/audit.log # 日志路径 ``` 3. 创建日志目录并授权: ```bash sudo mkdir -p /var/log/mysql sudo chown mysql:mysql /var/log/mysql ``` 4. 重启 MySQL 服务: ```bash sudo systemctl restart mysqld # Linux # Windows: 服务管理器重启 MySQL ``` 5. 验证状态: ```sql SHOW VARIABLES LIKE 'audit_log%'; ``` ![企业版审计状态示例](https://example.com/mysql-audit-status.png) *图:审计功能开启后的状态输出[^1]* #### 二、MySQL 社区版配置方法(需插件) 社区版需安装第三方审计插件(如 MariaDB 的 `server_audit`): 1. **获取插件文件**: - Linux: `server_audit.so`(从 MariaDB 安装包提取) - Windows: `server_audit.dll`([官方下载](https://mariadb.com/kb/en/mariadb-audit-plugin/)) 2. **安装插件**: ```sql INSTALL PLUGIN server_audit SONAME 'server_audit.so'; # Linux -- Windows: INSTALL PLUGIN server_audit SONAME 'server_audit.dll'; ``` 3. **动态配置参数**: ```sql SET GLOBAL server_audit_logging = ON; SET GLOBAL server_audit_events = 'CONNECT,QUERY,TABLE'; # 监控事件 SET GLOBAL server_audit_file_path = '/var/log/mysql/server_audit.log'; ``` 4. **持久化配置(添加到 my.cnf)**: ```ini [mysqld] plugin-load = server_audit=server_audit.so server_audit_logging = ON server_audit_file_rotate_size = 30000000 # 单个日志大小(30MB) ``` #### 三、关键参数说明 | 参数 | 企业版 | 社区版 | 作用 | |------|--------|--------|------| | 日志格式 | `audit_log_format` | `server_audit_output_type` | JSON/CSV/TEXT | | 事件类型 | `audit_log_policy` | `server_audit_events` | 控制记录的操作类型 | | 日志路径 | `audit_log_file` | `server_audit_file_path` | 日志存储位置 | | 日志轮转 | 系统日志工具 | `server_audit_file_rotate_now` | 触发日志切割 | > **注意**: > 1. Windows 路径需转义:`audit_log_file = C:\\mysql\\audit.log` > 2. 社区版需定期执行 `SET GLOBAL server_audit_file_rotate_now=ON;` 手动轮转日志 > 3. 审计日志可能影响 5-15% 性能,建议仅记录关键操作[^5] #### 四、验证审计效果 ```sql -- 执行测试操作 CREATE TABLE test.t(id INT); SELECT * FROM test.t; -- 查看审计日志(Linux) sudo tail -f /var/log/mysql/audit.log ``` 输出示例(JSON 格式): ```json { "timestamp": "2023-08-20T10:23:45 UTC", "user": "root@localhost", "ip": "192.168.1.10", "action": "QUERY", "query": "SELECT * FROM test.t" } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

教Linux的李老师

赞赏是第一生产力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值