数据库恶意软件防护安装及MySQL审计插件
防恶意代码软件安装
安装 EPEL 仓库
sudodnfinstall-yhttps://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm安装 ClamAV
EPEL 仓库启用后,你现在可以正常安装 ClamAV 了。AlmaLinux 官方 Wiki 推荐使用epel-release,安装前最好更新软件源列表。
# 建议先更新软件源sudodnf update-y# 从 EPEL 仓库安装 ClamAV 及其守护进程sudodnfinstall-yclamav clamav-update clamd更新病毒库
安装完成后,使用freshclam命令手动更新病毒库,这能确保你的 ClamAV 能够检测到最新的威胁。
sudofreshclam配置守护进程 (ClamAV Daemon)
为了能让 ClamAV 作为后台服务运行,需要对配置文件进行简单调整。
ClamAV 守护进程 (clamd) 的配置文件是/etc/clamd.d/scan.conf。你需要编辑该文件,找到LocalSocket /run/clamd.scan/clamd.sock这行,去掉开头的#号,并取消注释Example行。
# 注释掉 Example 行sudosed-i-e"s/^Example/#Example/"/etc/clamd.d/scan.conf# 启用 LocalSocketsudosed-i-e"s/#LocalSocket /LocalSocket /"/etc/clamd.d/scan.conf启动与启用服务
确保clamd和freshclam服务开机自启,以保证实时防护和病毒库的持续更新。
sudosystemctlenable--nowclamd@scansudosystemctlenable--nowfreshclam或者使用crontab -e定时执行更新病毒库解决0 0 1 * * freshclam(每个月 1 号)。
使用sudo systemctl status clamd@scan和sudo systemctl status freshclam检查服务状态,确保它们正常运行。
MySQL 审计日志解决:安装 Percona 审计插件
获取插件包
# 建议替换链接中的版本号与你的 MySQL 主版本号一致wgethttps://downloads.percona.com/downloads/Percona-Server-8.0/Percona-Server-8.0.36-28/binary/tarball/Percona-Server-8.0.36-28-Linux.x86_64.glibc2.17-minimal.tar.gz解压并提取插件
解压并提取audit_log.so文件。
tar-xzfPercona-Server-8.0.36-28-Linux.x86_64.glibc2.17-minimal.tar.gz复制并赋权
将提取出的audit_log.so文件复制到 MySQL 插件安装目录。
cpPercona-Server-8.0.36-28-Linux.x86_64.glibc2.17-minimal/lib/plugin/audit_log.so /usr/lib64/mysql/plugin/chownmysql:mysql /usr/lib64/mysql/plugin/audit_log.sochmod755/usr/lib64/mysql/plugin/audit_log.so安装插件
登录数据库,执行安装命令。
mysql-uroot-pINSTALL PLUGIN audit_logSONAME'audit_log.so';验证安装
检查插件状态,确认Status列为ACTIVE。
SHOWPLUGINS;配置与启动审计
启用并设置策略:在数据库中执行以下命令,立即启用审计并设置策略为记录所有操作 (ALL)。
SETGLOBALaudit_log_policy='ALL';SETGLOBALaudit_log_format='JSON';写入配置文件 (my.cnf):为确保配置持久生效,将以下参数添加到my.cnf的[mysqld]部分,然后重启 MySQL 服务。
[mysqld] audit_log_policy = ALL audit_log_format = JSON audit_log_file = /var/log/mysql/audit.log日志轮转
审计日志增长很快,须配置logrotate以防止磁盘写满。
# /etc/logrotate.d/mysql-audit/var/log/mysql/audit.log{daily rotate180compress missingok notifempty create 0640 mysql mysql postrotate mysqladmin flush-logs endscript}