Mysql заблокировал мой веб-сервер max_connect_error достиг [закрыто]

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

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

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

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

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

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

Есть идеи?

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

-1
задан 10 February 2012 в 12:06
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.
1
ответ дан 5 December 2019 в 19:33

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

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

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

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

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

1
ответ дан 5 December 2019 в 19:33

Теги

Похожие вопросы