Время от времени происходят неудачные попытки входа в систему на нашем производственном сервере MySQL (панель управления MySQL предупреждает нас). Есть ли способ регистрировать каждый успешный и неудачный вход на сервер MySQL без включения general_log
?
Мы думаем, что general_log
это не вариант, потому что это рабочий сервер с высокой нагрузкой.
As of MySQL 5.5.28, MySQL Enterprise Edition includes MySQL Enterprise Audit, implemented using a server plugin named audit_log.
только у предприимчивой версии.Ответы:
просто чтобы сообщить любопытному: копайся в своем журнале ошибок и presto!
(1). отредактируйте my.cnf (документация по настройкам находится здесь )
(2). при командном заезде
(3). и у тебя это есть!
(4). если вам нужно ограничить пользователя (атака dos или попытка восстановления пароля пользователя mysql в многопользовательской базе данных), тогда ( http://dev.mysql.com/doc/refman/5.5/en/user-resources.html )
ограничить только 100 попыток восстановления пароля в час.
источник
Я думаю, что общий журнал может регистрировать все попытки входа в систему (успех и неудача) среди множества других вещей. Основная проблема заключается в том, что общий журнал будет влиять на производительность вашей базы данных. Вы можете включить общий журнал с запросом
для более новых версий MySQL.
источник
/etc/mysql/my.cnf
MySQL?--general-log
к флагам при запуске MySQL.Привет, я не думаю, что это возможно.
Начиная с mysql 5.1.29 - вы можете указать опцию хранения (таблица или файл) и местоположение, а также какой журнал вы хотите - ошибка, общий, двоичный или медленный запрос. Насколько я знаю - вы не можете указать формат журнала или что регистрируется. Я могу ошибаться - но я думаю, что все попытки входа будут регистрироваться в общем журнале, а не в ошибке.
Однако, предполагая, что ваш сервер MySQL работает на отдельной машине, от вашего сервера приложений, и вам нужен открытый порт 3306 (или любой другой), и вы не можете использовать туннель SSH, ваш сервер MySQL все равно не должен быть доступен любому желающему. неволей. Я настоятельно рекомендую не подвергать его веб-трафику, и если вы должны (как в случае проживания где-то не за брандмауэром) привязать его к ip-адресу или ip-блоку вашего сервера приложений и вашему ip доступа администратора (где вы находитесь) доступ из)
Надеюсь, это поможет.
источник
Можно войти
connect
иquit
команды с помощью MySQL-Audit-плагин.audit-plugin-percona-5.7-1.1.7-805-linux-x86_64.zip
.so
файл в место, указанноеmysqladmin variables | grep plugin_dir
.mysql>install plugin audit soname 'libaudit_plugin.so'
mysql>set global audit_json_file=ON
, по умолчанию она регистрирует все успешные операции. установивset global audit_record_cmds='quit,connect'
его, логи подключаются и выходят, я полагаю, в соответствии с конфигурацией mysql-audit-plugin .Вот как это выглядит в файле для входа и выхода из системы:
источник
если у рассматриваемого сервера не должно быть внешних подключений, как настроено, я бы беспокоился о какой-либо атаке на ваш сервер приложений, если только неудачные входы в систему происходят из новых приложений, развертываемых до того, как был настроен пользователь / пароль.
если сервер каким-то образом подвергается внешним соединениям на 3306, если это не является преднамеренным и необходимым, я бы установил конфигурацию, как сказал Ник, а также рассмотрю использование iptables для ограничения трафика до 3306 только с серверов вашего приложения.
источник
На http://www.mysqlperformanceblog.com/2008/11/07/poor-mans-query-logging/ автор показывает метод захвата пакетов с использованием tcpdump и фильтрации выходных данных на основе строки.
Это работает вокруг ваших опасений относительно general_log и производительности, хотя tcpdump может сам по себе подвергнуться незначительному снижению производительности. Это решение также регистрирует меньше данных, чем общий журнал запросов.
Я не использовал это сам, но это звучит очень полезно.
источник