OpenSuse Leap 15.3下MariaDB数据目录/var/lib/mysql异常丢失求助
问题排查与解决方案
1. SQL注入/命令注入排查
SQL注入本身无法直接删除系统文件,但如果PHP代码存在命令注入漏洞(比如将用户输入直接传入exec()/system()等执行系统命令的函数),则可能被利用执行删除操作:
- 检查所有PHP业务代码:确认数据库交互是否使用预处理语句(PDO
prepare()/execute()、mysqli预处理),避免直接拼接SQL;排查是否有执行系统命令的逻辑,是否对用户输入做了严格过滤。 - 查看Apache日志:执行
cat /var/log/apache2/access_log、cat /var/log/apache2/error_log,筛选带特殊字符、SQL语句片段的异常请求。
2. SSH入侵排查
非默认端口不代表绝对安全,暴力破解仍可能成功:
- 查看SSH登录日志:执行
cat /var/log/secure或cat /var/log/auth.log,查找陌生IP登录记录、多次失败后成功的登录条目。 - 检查系统可疑项:
ps aux查看未知进程;cat /etc/passwd检查是否新增可疑用户;- 建议禁用密码登录,改用SSH密钥认证,同时限制允许登录的IP段。
3. Apache权限与配置问题排查
Apache运行用户(通常为wwwrun)若拥有/var/lib/mysql的写权限,可能被恶意利用:
- 检查目录权限:执行
ls -ld /var/lib/mysql,正常应为mysql:mysql所有,权限700。若异常,执行:chown -R mysql:mysql /var/lib/mysql chmod -R 700 /var/lib/mysql - 查看系统审计日志:执行
ausearch -f /var/lib/mysql,定位删除文件的进程和用户。 - 检查Apache配置:确认未启用不安全模块,虚拟主机权限配置无错误。
4. MariaDB与系统定时任务排查
- 查看MariaDB日志:执行
cat /var/log/mariadb/mariadb.log,检查是否有异常启动、崩溃记录,或DROP DATABASE、ALTER USER等恶意操作日志。 - 检查定时任务:
crontab -e查看当前用户定时任务;- 检查
/etc/crontab、/etc/cron.d/下的系统级任务,排查是否有删除/var/lib/mysql的脚本。
- 扫描可疑文件:执行
find / -type f -mtime -1查找最近1天修改的未知文件,重点排查/tmp、/var/tmp目录。
临时应急措施
- 暂时关闭MariaDB外部端口转发,仅允许内部访问,观察问题是否复现;
- 启用MariaDB通用查询日志,记录所有SQL操作:修改
my.cnf添加general_log = 1、general_log_file = /var/log/mariadb/general.log,重启服务; - 全量更新系统与软件:执行
zypper update,修复已知漏洞。
内容的提问来源于stack exchange,提问作者René Wachter
相关产品推荐
相关产品推荐

