Pull to refresh

~/mysql_history и безопасность

Reading time1 min
Views3.5K
Как правило, безопасность обратно пропорциональна удобству. Сохранять историю команд, по которой можно перемещаться в CLI, — очень удобно. Так делает, например, bash. Так делает и MySQL, бережно и построчно записывая команды в ~/.mysql_history в виде простого текста (включая пароли).

Снизить риск или полностью избежать утечки можно, если (от более допустимых, на мой взгляд, способов к менее допустимым):
  • домашняя директория пользователя имеет режим доступа 700;
  • файл ~/.mysql_history имеет режим доступа 600;
  • вызывать сценарий, который чистит файл ~/.mysql_history от «лишних» записей;
  • «вручную» чистить файл ~/.mysql_history от «лишних» записей;
  • удалить файл ~/.mysql_history (этот вариант предлагает SecurityFocus);
  • ~/.mysql_history является символической ссылкой на /dev/null (история не ведется).

С точки зрения СУБД это не является проблемой безопасности, так как в истории запросов может быть куда более ценная информация, нежели пароли (платежная информация, например), поэтому разработчики не позаботись о подобных исключениях на уровне журналирования истории команд.

Собственно зачем затронута эта тема. Какие есть еще варианты?

Bonus track. Затрагивая вопрос о безопасности MySQL, хочу отметить, что часто наблюдаю данные учетной записи root в сценариях резервного копирования, использующих mysqldump. Очень распространенная ошибка, а ведь не так уж и сложно создать специального пользователя для выгрузки баз парой команд:
GRANT SELECT, LOCK TABLES ON .* TO <user-dumper>@localhost IDENTIFIED BY '<dumper-password>';
FLUSH PRIVILEGES;
Tags:
Hubs:
Total votes 8: ↑6 and ↓2+4
Comments2

Articles