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, вы должны взглянуть на эти два инструмента:
- Скапи и этот учебник
- Немезида и эта страница
- GSpoof, который может быть самым простым из всех трех из-за его GUI
Я предполагаю, что это сгенерирует ошибку, которую вы хотите, но я никогда не пробовал.