
Как знают многие пользователи, я запускаю много серверов Debian для личных, рабочих и волонтерских организаций. В последнее время я вижу много сообщений как на Superuser, так и на IT Security об отключении паролей и простом использовании аутентификации на основе ключей.
Я использую аутентификацию на основе ключей для всего моего root
доступа с моего личного сервера, моего рабочего ноутбука и компьютера, который я использую большую часть времени вне работы. Однако, чтобы попасть на любой из серверов, не использующих WinSCP (где я храню свои ключи, по крайней мере для моего ПК с Windows), я вхожу в систему как мой стандартный аккаунт пользователя, затем su
как root, используя очень длинный пароль.
На серверах, которыми я не управляю в рабочих целях, я храню эти ключи только в этих трех местах, в основном для резервного копирования. Я использую очень надежные пароли (по моему мнению), и только PermitRootLogin withoutpassword
(я люблю, когда файлы конфигурации позволяют мне использовать их в предложениях!). Когда я захожу из другого места, я использую свою обычную учетную запись с надежным паролем, потому чтоУ меня нет места, где я мог бы хранить ключи и подъехать к нему, если мне понадобится войти в систему обычным способом с нового устройства..
Я вижу два возможных решения этой проблемы:
- Хранение ключей в открытом виде или в зашифрованном виде где-то удаленно, отключение всех методов аутентификации на основе пароля на моих серверах. Если да, то где и как я могу хранить их безопасно, чтобы они невероятныйподвергнуться риску?
- Использование надежного пароля обычного пользователя и его смена каждые 90 дней. Это хорошая практика, я уверен, но моя память действительно отстой. Я уверен, что я бы продолжал использовать тот же пароль в любом случае, просто по привычке, что сводит на нет весь смысл этого.
Я бы очень хотел использовать метод 1, но не знаю, что будет лучшей практикой с таким количеством серверов, и многие из них используют разные пароли, чтобы НАЧАТЬ входить из нового места. Например, я регулярно использую свой мобильный телефон, чтобы проложить туннель домой или проверить статус службы на удаленном сайте.
решение1
Опыт и исследования показали, что наиболее безопасными паролями являются те,большой по длине, а не сложный, что действительно отстой для тех, у кого плохая память (включая меня!). Поэтому, по моему мнению, использование аутентификации на основе ключей — это правильный путь, когда речь идет об управлении большим количеством серверов.
В то же время, все, что касается безопасности ихранение удаленнов одном предложении обычно режет уши. Я не говорю,любойУдаленное место потенциально небезопасно, но вы не можете знать, так ли это на самом деле. С другой стороны, с точки зрения практичности,у тебя будетдля хранения SSH-ключа в удаленном месте.
Итак, смешав все эти ингредиенты, у меня есть 2 предложения:
Используйте менеджера ИТ-конфигурации
Примеры: Puppet, Chef-сервер и т.п.
Вы упоминаете, что у вас есть личный сервер. Вероятно, этопо крайней мере хужеместо для размещения вашего центрального сервера конфигурации. Вы можете создать модуль, который сохранит ваш SSH-ключ в зашифрованном виде и позволит вашему персональному компьютеру, вашему рабочему ноутбуку и потенциальным новым устройствам развернуть его.
Мы используемШеф-повар сервердля выполнения этих задач. У него есть функция, называемая пакетами данных, и очень интересный вид этих, называемыхзашифрованные пакеты данныхкоторые действительно позволяют вам хранить все ваши пароли, SSH-ключи и любые полезные данные.
Независимо от того, какой менеджер конфигурации вы выберете, вы можете использовать его для развертывания ключей на обоих серверах.иперсональные компьютеры.
Такой подход имеет большой плюс: если в результате каких-либо изменений ваш закрытый ключ будет скомпрометирован, вы измените его в одном месте, и он будет развернут на всех серверах и клиентах без потери времени.
Однако у этого есть и обратная сторона. Если вы планируете получать доступ к своим серверам с мобильных устройств, таких как мобильные телефоны, планшеты и т. д., у вас, вероятно, не будетChef|Puppet|Поместите-вашу-любимую-конфигурацию-обработчика-сервера-здеськлиент там.
Более подробная информация о них:
Используйте зашифрованный локальный файловый менеджер
Есть программное обеспечение, которое зашифрует ваши ключи, независимо от того, являются ли они паролями, SSH-ключами или банковскими данными. У этого есть очевидный недостаток: для защиты ваших паролей вам нужен пароль (и, вероятно, вы захотите очень хороший пароль). В любом случае, если вам нравится такой подход, вы можете сохранить свой зашифрованный ключ на флеш-накопителе и брать его с собой, куда бы вы ни пошли.
У этого есть еще один потенциальный недостаток: вы можете потерять свой флеш-накопитель, кто-то может его украсть... В этом случае этовсе ещезашифровано, но вам, вероятно, понадобится выпить несколько чашек кофе, чтобы изменить SSH-ключ на всех ваших серверах и клиентах Debian, что, вероятно, наведет вас на мысль, что подход 1 гораздо более масштабируемый.
В любом случае, я знаю только одно программное обеспечение такого рода, которое достаточно безопасно для хранения всех ваших ключей (кстати: вы можете защитить свой файл паролей паролем (как уже упоминалось), файлом ключей или и тем, и другим).
Если вам нравится этот подход, вы, вероятно, захотите взглянуть наKeepass.