Когда вы научились придумывать и использовать надёжные пароли — это хорошо. Однако всю пользу можно свести на нет, если хранить их как ключ под ковриком. Чтобы пароли обеспечивали достаточный уровень защиты, помимо правильного подхода к созданию, нужно их правильно хранить и регулярно обновлять. Давайте разберёмся, с какой стороны можно подступиться к этой задаче.
Как безопасно хранить пароли
Лучше всего хранить пароли в собственной памяти — туда добраться с помощью вредоносного ПО пока невозможно. Но, с учётом количества паролей, с которыми работает среднестатистический админ или разработчик, это крайне сложно:
- пароль от электронной почты
- пароль от учётной записи хостинга
- пароль от пользователя root VDS (пароль панели управления)
- пароли непривилегированных пользователей VDS (пароли пользователей панели управления)
- пароль пользователя root для сервера баз данных
- пароли пользователей сервера баз данных
- пароли пользователей FTP
- пароли почтовых ящиков на сервере
- пароли подключенных хранилищ (диск для бэкапов и пр.)
- пароли сторонних сервисов — CDN, внешних прокси и т.п.
И это без учёта сервисов, которые мы используем в личной жизни. А если взять пароли среднестатистической компании, их наберётся больше трёх десятков. Плюс к ним должны иметь доступ разные сотрудники одновременно, в том числе удалённо.
Способов хранения паролей достаточно много, но самым распространённым и удобным можно назвать менеджеры паролей. В чём преимущества хорошего менеджера:
- шифрование исходных данных;
- кросплатформенность;
- возможность хранения данных в облаке для удалённого доступа.
И да, есть аргументы и против их использования. Но мы за удобство и здравый смысл.
Какой менеджер выбрать — дело вкуса: нужно попробовать разные, чтобы понять, какой решает нужные вам задачи.
В качестве точки отсчёта порекомендуем KeePass 2: это менеджер паролей с открытым исходным кодом. Он позволяет создать файл паролей и защитить его с помощью мастер-пароля или мастер-файла. Базу с паролями можно хранить в облаке (например, на собственном сервере Nextcloud, в Google Drive или DropBox), пользуясь ей удалённо с помощью мастер-ключа, который известен только вам. Таким образом вам будет достаточно помнить только один пароль.
NextCloud: знакомство и быстрый старт
Как часто нужно менять пароль
Как гласит цитата известного системного администратора, астронома и разоблачителя хакеров Клиффорда Столла:
Обращайтесь с вашим паролем как с зубной щёткой. Не позволяйте никому другому им пользоваться и меняйте каждые 6 месяцев.
По статистике в сфере бизнеса, где информационная безопасность занимает видное место, пароли меняются где-то раз в три месяца.
Тем не менее, в последнее время набирает обороты новая тенденция: вместо того, чтобы заставлять пользователей менять пароли часто, рекомендуется придумать один, но по-настоящему сложный пароль. Этот подход практикуется, например, в Windows 10.
В чём смысл: чем чаще от пользователя требуется сменить пароль, тем менее ответственно он к этому подходит — придумывает всё более слабые пароли, повторяется. Тем самым сервис усложняет жизнь как пользователю, так и себе — в обоих случаях растут ненужные риски ущерба от потери ценных данных.
C точки зрения клиентоориентированности более правильной практикой будет придерживаться следующих правил:
-
помогать придумывать сложные пароли — например, выводить рекомендации в подсказках к полям ввода, не принимать заведомо слабые пароли;
-
хранить пароли в закодированном виде, используя наиболее сложные алгоритмы и в обязательном порядке — уникальную «соль»;
Соль в сфере криптографии используется для обеспечения избыточности данных при кодировке. Это крайне усложняет процесс подбора такого хэша.
Например, так будет выглядеть кодировка пароля в чистом виде. Соответственно, чтобы расшифровать пароль, достаточно просто угадать тип алгоритма — и пароль будет у вас в руках:
SHA512(qWeRtY123@) = 5cd2968b53f19357851c5f47213ff170535022c4627c2a767b8e39920310b12d82b3c8411f1ff0dd57bcaabeb217563cb7dab0a6804249477fb3b979e9b473c5
А вот так — более надёжная, с солью и несколькими алгоритмами. Тут надо не только угадать последовательность алгоритмов, но и понять, какая часть пароля является лишней:
SHA512(base64(qWeRtY123@ + thisIsSalt)) = 02f3ee54dfa176bd468f30f264bc254c5200e43da81c7258a1bb0d7254e0511c67871a37e18a0e7a0d586f8b3b1cb5c84817a2af72c9bea56e7c650569e2d3cc
Вишенка на торте — когда соль индивидуальна для разных пользователей, и алгоритм хэширования запускается несколько раз.
Конечно, в таком подходе есть свои подводные камни — чем сложнее алгоритмы шифрования и длиннее хэши, тем больше вычислительных ресурсов требуется для их хранения и обработки.
- обеспечить хранимым хэшам максимально возможную безопасность для предотвращения утечек.
В случае, если мы даже не представляем, как именно может храниться наш пароль на стороне сервиса, можно просто следовать здравому смыслу: менять пароль в период, немного меньший, чем предполагаемое время подбора этого пароля. Но не реже одного раза в 6 месяцев.
Чтобы упростить процесс обновления пароля, можно менять его частично. Например, взять некоторую часть, дату и/или время, обработать её по известному только вам набору правил и добавить к текущему паролю.
12:51 27 июля 2020 → 12:51 twenty eight July twenty twenty → 12:51 teJtt → 12:51 73J77 → 35*73_95L99
Если говорить о паролях сервера, процесс обновления можно немного автоматизировать с помощью утилиты chage
. Она позволяет задать срок годности для паролей. По его истечении пользователь получит уведомление (если у вас настроен почтовый сервер), а при отсутствии реакции — его учётная запись будет автоматически заблокирована.
Следующая команда отобразит информацию о настройках пароля для конкретного пользователя:
chage -l username
А так можно задать максимальный срок действия пароля пользователя, например, 90 дней:
chage -M 90 username
Подробнее о возможностях этой утилиты можно узнать с помощью команды:
man chage