1

На моем тестовом сервере CentOS кто-то изменил пароль root для MySQL. Есть ли способ узнать, кто менял пароль и когда?

1 ответ1

0

Во-первых, если пользователь выполнил смену пароля «root» с удаленной машины, а регистрация в MySQL не была включена, то в любом месте, где бы у вас не было доступа, не было бы журналов с любым значением, которые бы связывали пользователя с этим конкретным действием. Но при условии, что пользователь вошел в систему через сеанс командной строки, вы должны проверить несколько вещей, которые могут дать некоторые подсказки.

Поскольку любой пользователь, запускающий MySQL из командной строки, автоматически создает .mysql_history в своем домашнем каталоге, вы можете запустить такую команду в системе, чтобы проверить, не зацепится ли она что-нибудь:

grep -i -e "password" /home/*/.mysql_history

Это сделало бы поиск без учета регистра в файле .mysql_history каждого пользователя, ища слово password предполагая, что они меняют пароль, находясь в самом клиенте MySQL и используя сам клиент для изменения пароля.

Но вы также можете просмотреть их .bash_history чтобы увидеть, что кто-то вообще использует MySQL, а затем, возможно, сосредоточиться на них как на потенциальном подозреваемом.

grep -i -e "mysql" /home/*/.bash_history

Это сделало бы регистронезависимым через файл .bash_history каждого пользователя, ищущий слово mysql которое означало бы, что он запускал - или пытался запустить - что-то, что MySQL подключал из командной строки.

Но это все, если предположить, что рассматриваемый пользователь не удалил и не изменил свои файлы .bash_history или .mysql_history чтобы скрыть свои следы. Если они были достаточно осведомлены, чтобы стереть эти файлы истории, не слишком уверены, что вы сможете отследить их до тех пор, пока не будет включена регистрация в MySQL. А протоколирование MySQL обычно отключено по умолчанию из-за негативного влияния на производительность системы.

Все это говорит о том, что если в этой настройке MySQL включены другие пользователи, откройте для себя мысль о том, что, возможно, кто-то назначил пользователя, который мог отличаться от «root», но ему фактически были предоставлены те же права доступа, что и «root». Это означает, что они могли использовать свой якобы не-root-аккаунт, чтобы делать то, что хотели.

Быстрые, незакрепленные и небезопасные гранты MySQL очень распространены и часто применяются администраторами баз данных, которые по любой причине просто настраивают отдельную учетную запись «без полномочий root», а затем просто используют GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost'; при назначении прав новому пользователю. Ужасная идея, поскольку GRANT ALL PRIVILEGES ON *.* основном означает: «Пусть этот пользователь сделает что-нибудь с любой базой данных, как если бы он был пользователем root».

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .