Mysql заблокировал мой веб-сервер max_connect_error достигнут

В конце прошлой недели один из моих двух веб-серверов был заблокирован сервером MySQL. В результате все запросы на этом заблокированном веб-сервере показывают страницу с ошибками.

Я думаю, чтобы реализовать сценарий, чтобы предотвратить эту проблему. но я не могу воспроизвести эту ошибку в моей тестовой лаборатории.

Mysql doc говорит, что эта ошибка связана с сетевыми проблемами и является защитной реализацией для блоковых атак.

У вас есть идеи о том, как воспроизвести эту ошибку?

я попытался подключиться к моему тестовому серверу с неправильным логином /pwd для имитации атаки методом перебора. Также я выполнил сложные запросы, которые заняли несколько минут, чтобы получить ответ, и остановили его, прежде чем получить ответ (много раз).

Я видел увеличение переменной Aborted_connects, но не Aborted_clients, и мой тестовый сервер не блокировал мой хост.

Любая идея?

Заранее спасибо.

2 ответа

Решение

Я знаю, что он старый, но я нашел способ воспроизвести его.

Сначала вы должны понизить значение max_connection_error, чтобы не повторяться:

SET GLOBAL max_connect_errors=2;

тогда вы можете использовать программу telnet для установления неисправных соединений. после команды просто дважды нажмите ввод:

$ telnet 192.168.128.98 3306

Trying 192.168.128.98...
Connected to 192.168.128.98.
Escape character is '^]'.
a
5.6.14-1+debphp.org~precise+1?"sC1kHf?s,{MO$dK-<(Smysql_native_password    
!#08S01Got packets out of orderConnection closed by foreign host.

$ telnet 192.168.128.98 3306

Trying 192.168.128.98...
Connected to 192.168.128.98.
Escape character is '^]'.
a
5.6.14-1+debphp.org~precise+1?"sC1kHf?s,{MO$dK-<(Smysql_native_password

!#08S01Got packets out of orderConnection closed by foreign host.

тогда вы увидите, что ваше соединение отказывается:

$ telnet 192.168.128.98 3306

Trying 192.168.128.98...
Connected to 192.168.128.98.
Escape character is '^]'.
kHost '192.168.128.1' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'Connection closed by foreign host.

Если количество хостов превышает количество прерванных соединений с хоста, этот хост блокируется от дальнейших соединений. Вы можете разблокировать заблокированные хосты с помощью оператора FLUSH HOSTS.
Если соединение установлено успешно в течение менее чем попыток max_connect_errors после того, как было прервано предыдущее соединение, счетчик ошибок для хоста сбрасывается в ноль. Однако, как только хост заблокирован, оператор FLUSH HOSTS является единственным способом разблокировать его.

Источник: http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html

Обратите внимание, что значение по умолчанию в MySQL 5.1.x установлено на 10.

РЕДАКТИРОВАТЬ: Если вы хотите попробовать создать недопустимый пакет TCP, надеясь, что он будет вызывать ошибки подключения в MySQL, вы должны взглянуть на эти два инструмента:

Я предполагаю, что это сгенерирует ошибку, которую вы хотите, но я никогда не пробовал.

Другие вопросы по тегам