远程用户尝试访问 root mysqld

远程用户尝试访问 root mysqld

我刚刚检查了我的系统日志文件,发现其中有大量以下条目:

8 月 25 日 13:06:17 ssrv001 mysqld:150825 13:06:17 [警告] 拒绝用户“root”@“61.160.232.48”访问(使用密码:是)

该 IP 是恶意的,因为除了我之外没有人拥有该服务器的 root 访问权限。我将删除 root mysqld 用户的远程访问权限,但这足以阻止此类事情发生吗?

我也在考虑实施某种措施,禁止多次发出无效请求的 IP 地址的连接。

答案1

首先,我建议您仅允许从 localhost 以 root 身份登录 mysql。如果您必须从另一台服务器连接到 mysql - 请创建新用户并仅授予其所需的权限。

此外,您可以使用 fail2ban 或类似程序在多次连接尝试失败后将黑客 IP 添加到黑名单。

最后,您可以更改您的 mysql 端口以避免愚蠢的暴力攻击。

在这里了解有关在 Linux 上保护 MySQL 数据库的更多信息:如何在 Linux VPS 中保护 MySQL 和 MariaDB 数据库

更新: 我忘了 MySQL 有自己的工具可以在登录尝试失败后阻止 IP。你可以在 mysql 配置文件中使用它:

最大连接错误=5;

但默认情况下,mysqld 会在 10 次连接错误后阻止主机。

在这里阅读更多内容:服务器系统变量 #sysvar_max_connect_errors和这里:主机“host_name”已被阻止

答案2

我同意 Maxim 和 knowhy 的观点,只允许从本地主机以 root 身份登录 MySQL。我甚至会进一步允许所有用户从本地主机或特定 ip 登录。

您可以通过 ssh 隧道以本地用户身份连接到远程 MySQL 服务器。

类似这样的代码应该适用于 UNIX 系统:

ssh -fNg -L 9999:127.0.0.1:3306 [email protected]

这将启用客户端端口 9999 作为到远程 yourhost.com:3306 端口的“隧道”。

对于 Windows 系统,也许 Putty 应该可以解决问题。看一下这个:

http://www.ytechie.com/2008/05/set-up-a-windows-ssh-tunnel-in-10-minutes-or-less/

目前大多数 MySQL 图形客户端都允许隧道连接,例如 MySQL Workbench 就运行良好:

https://www.mysql.com/products/workbench/

答案3

你应该用 iptables 来阻止 mysql。此代码片段将阻止来自 localhost 以外的任何主机的 mysql:

iptables -A INPUT -i lo -p tcp --dport mysql -j ACCEPT
iptables -A INPUT -p tcp --dport mysql -j DROP

请注意,iptables 中的这些设置不会持久。根据您的发行版,您应该编辑 iptables 配置。/etc/sysconfig/iptables例如,对于基于 Redhat6 的系统,您应该编辑。

您还应该使用以下 SQL 查询禁用 mysql 中的远程 root 登录:

DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');

您还可以考虑实施 fail2ban 来阻止登录失败次数过多的 IP。这个 serverfault 问题应该可以帮助你。

相关内容