首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >标识执行查询和更改数据库的MySQL用户

问标识执行查询和更改数据库的MySQL用户
EN

Database Administration用户
提问于 2023-01-31 06:22:55
回答 2查看 76关注 0票数 1

我们的数据库被攻破了。尽管我们更改了MySQL数据库用户凭据,甚至移到了一个新数据库,更改了服务器用户凭据、CPanel和FTP用户凭据,并增强了安全性,但数据还是一再遭到破坏。

它似乎是隐藏在系统文件中的特洛伊木马/恶意软件。我们尝试了几乎所有的东西(完全恶意软件/病毒扫描,将安全补丁应用于我们的应用程序,启用MySQL日志),无论是从我们的终端还是从主机提供商,但仍然没有找到恶意软件。

到目前为止我们发现的是,

  • 恶意程序不会使用应用程序破坏我们的数据库。因为如果它使用应用程序,它也会被记录下来,因为它不使用应用程序用于交互和管理数据的MySQL用户。
  • 它只更改特定的数据库实体,并向表中添加冗余信息。

我们启用了MySQL通用查询日志来记录所有查询(尽管我们只需要记录数据操作查询),通过此我们可以找到查询及其时间戳,而没有其他关键细节,比如执行查询的MySQL用户以及用户如何连接到数据库。

1. MySQL / MariaDB安全专家能否帮助我们找到哪个MySQL用户运行哪个查询,通过一些日志,甚至数据库插入,在触发器之前/之后或更新前/之后都会有帮助?

2.是否有任何方法监视MySQL进程以检查哪个系统进程触发了MySQL守护进程来执行查询,或者换句话说,MySQL用户如何连接到数据库?

EN

回答 2

Database Administration用户

发布于 2023-01-31 19:05:10

MySQL/MariaDB不具备所需的审核功能。有一个“审核”插件,你应该添加。

作为预防措施:

  • 如果是黑客,那么您需要加强对PHP源代码、Apache目录等的访问。我经常看到大量Apache日志条目,机器人尝试各种登录名/密码。
  • 每个程序员/DBA都需要有自己的登录名。看见
  • 每个应用程序都需要自己的登录,它的密码需要在一个安全的地方(这是一个单独的讨论)。
  • 大多数用户和应用程序应该是GRANTed访问dbname.*,而不是*.*。此外,PRIVILEGES应该仅限于所需的内容,而不是ALL PRIVILEGES。
  • 向其他用户隐藏每个用户的密码:# setup: mysql_config_editor set -G main_mysql -u Joe -p -h host.machine #(并输入密码)# use (由Joe):mysql -login-path=main_mysql
  • 有限数量的用户应该拥有SUPER特权。
  • 副本只需要REPLICATION SLAVE特权。那些需要查看副本状态的人可以被授予REPLICATION CLIENT。(这可能相当安全。)
  • 使用Unix而不是Windows;后者在黑客中更受欢迎。
  • “绑定”或“转义”所有来自<form>s的填充。阅读"SQL注入“的罪恶和恐怖--这让黑客不仅可以访问数据库,还可以访问整个文件系统。
票数 3
EN

Database Administration用户

发布于 2023-01-31 21:12:35

最简单的方法是使用启用慢日志而不是普通日志。

慢速日志文件和表都可以记录执行的查询的用户和主机。

您必须将长_查询_时间设置为0.0001才能捕获几乎所有的查询。

唯一的缺点是缓慢的日志只记录已完成的查询。长期运行的查询,改变事情不会被记录,直到他们完成。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/322814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档