mysql - 对 MySQL 的攻击——以及如何防止它?

标签 mysql apache debian xml-rpc

<分区>

我的服务器受到了攻击,并通过在 apache conf 文件中包含以下内容来阻止 xmlrpc 访问:

<files xmlrpc.php>
    order allow,deny
    deny from all
</files>

现在,它不是每隔几个小时就破坏 mysql 服务,而是每天破坏一次/两次。这仍然是一个问题。 fail2ban 禁止 2 次失败的 ssh 尝试一个小时。但是,我确实在 daemon.log 中看到了大约 100 多个以下条目:

mysqld[18852]: 2016-10-13 3:06:40 139773247216384 [Warning] Access denied for user 'root'@'139.196.28.237' (using password: YES)

所有这 100 多次尝试都在一分钟内发生,大约一个小时后我看到几条消息,例如:

mysqld[18852]: 2016-10-13 3:32:52 139773325777664 [Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted. Statement: DELETE FROM wp_generic_options WHERE option_name LIKE 'jetpack\_nonce\_%' AND CAST( option_value AS UNSIGNED ) < 1476340372 ORDER BY option_id LIMIT 100

一段时间后,mysql服务好像重启了,但是又失败了,在错误日志中发现如下几行:

InnoDB: Initializing buffer pool, size = 256.0M
InnoDB: mmap(281542656 bytes) failed; errno 12
InnoDB: Cannot allocate memory for the buffer pool
Plugin 'InnoDB' init function returned error.
Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
Unknown/unsupported storage engine: InnoDB
Aborting

有人可以向我解释发生了什么吗?以及如何阻止和防止它再次发生?

最佳答案

IP 地址 139.196.28.237 的地理位置报告它来自中国杭州。当 MySQL 客户端连接到您的 MySQL 实例时,您是否希望从那里发起?如果不是,则您可能遇到了外部攻击者。您可能根本不应该允许外部客户端访问您的 MySQL 服务器。您需要一个防火墙来阻止来自外部请求的 MySQL 端口。

您的二进制日志中有关不安全语句的警告消息可能无关。我记得“jetpack”是一个流行的 WordPress 插件,SQL 查询可能是 jetpack 代码的正常部分。您可以通过将 MySQL 二进制日志格式更改为 MIXED 或 ROW 来修复这些警告。要了解有关不安全语句的更多信息,请阅读 https://dev.mysql.com/doc/refman/5.7/en/replication-rbr-safe-unsafe.html

有关 InnoDB 未能为其缓冲池分配 256MB 内存的错误表明您的服务器上的进程正在使用比服务器拥有的更多的内存。 InnoDB 不会分配内存,除非物理内存可用(它不会分配已经交换的内存)。这也可能与尝试登录无关。您需要增加服务器上的内存。如果您使用的是 AWS,则需要增加实例大小。

关于mysql - 对 MySQL 的攻击——以及如何防止它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40024059/

相关文章:

ajax - 使用文件夹名称填充 JSP 下拉列表

c++ - 我可以在不同的 linux 上编译相同的 c++ 代码吗?

php - 通过命令行执行使用 ZendGuard 编码的 PHP 脚本

apache - 如何根据条件重写 URL?

MySQL 字符集和排序规则

java - 如何在单击按钮而不清除现有行的情况下将新行从数据库添加到 jTable

debian - 有 Kafka 的 deb 存储库吗

linux - Iptables,从 prerouting Captive Portal 中排除单个 ip

c# - 未解析特定表名的表名

mysql - 当我尝试删除数据库并且使用 mysql 作为元存储时,为什么 Hive 会给出元异常?