Закріпити паролі SSH-ключа?


9

Я шукаю видалення вхідних даних для SSH. Однак я не хочу дозволити паролі ssh-ключів, оскільки це було б ще гірше.

Як я можу переконатися, що можуть підключатися лише SSH-ключі з паролями?

Якщо цього не вдається зробити, чи існують альтернативи, як централізоване управління генеруванням ключів SSH та заборона користувачам генерувати та / або використовувати власні ключі? Щось на кшталт PKI, я думаю.

Відповіді:


20

Парольна фраза, яку можна встановити в приватному ключі, не має відношення до SSH-сервера або підключення до нього. Встановлення парольної фрази до приватного ключа - це лише міра безпеки, яку може вжити власник ключа, щоб запобігти доступу до його віддаленої оболонки третьою стороною у випадку, якщо приватний ключ буде вкрадений.

На жаль, ви не можете змусити користувачів захищати свої приватні ключі за допомогою парольних фраз. Іноді для автоматизованого доступу до віддаленого SSH-сервера потрібні незахищені приватні ключі. Одна хороша звичка , яку я дуже рекомендую для таких випадків порадити користувачам хеша в known_hosts файл (зберігається в ~ / .ssh / known_hosts ), яка зберігає інформацію про віддалених хостів в підключає користувачів до, використовуючи наступну команду:

ssh-keygen -H -f ~/.ssh/known_hosts

Таким чином, навіть якщо третя сторона отримала доступ до незахищеного приватного ключа, було б вкрай важко з'ясувати, для яких віддалених хостів цей ключ дійсний. Звичайно, очищення історії оболонки обов'язково, щоб ця методика мала будь-яку цінність.

Крім того, інша річ, яку ви завжди повинні мати на увазі, - це не дозволяти кореневі дистанційно входити в систему, додаючи в конфігурацію вашого SSH-сервера наступне (sshd_config):

PermitRootLogin no

З іншого боку, якщо ви хочете заборонити користувачам використовувати ключі для автентифікації, але замість цього використовувати паролі, слід додати наступне до свого sshd_config :

PasswordAuthentication yes
PubkeyAuthentication no

8

Це неможливо.

Користувачі можуть робити все, що завгодно, зі своїми файлами ключів, перетворюючи їх у без паролів, навіть якщо ви, наприклад, створили його.


3

Ви не можете. Після того, як у користувача є ключові дані, якими він володіє, ви не можете зупинити їх у видаленні парольної фрази. Вам потрібно буде шукати інші способи аутентифікації.


2

Щоб отримати контроль над ключами користувача, усі ключі повинні бути переміщені до каталогу, що належить кореневі, де ключі читаються, але не змінюються кінцевим користувачем. Це можна зробити, оновивши sshd_config.

Після того, як файли ключів знаходяться в контрольованому місці, вам знадобиться інтерфейс управління для оновлення (та застосування політики паролів) з подальшим розповсюдженням ключів до потрібних хостів. Або згорніть самі, або подивіться на такі продукти, як FoxT / Tectia тощо.


... що порушує переваги відкритого ключа
Патві

0

Одним із пом'якшень було б використання модуля PAM модуля аутентифікатора google. Зазвичай доступні в рамках офіційних пакетів.

Це зробить доступним 2FA через 6-значний код на вашому смартфоні.

Інструкції тут: Як налаштувати багатофакторну автентифікацію для SSH на Ubuntu 16.04


1
Слід зазначити, що це не відповідає безпосередньо на питання, але є (хорошою) альтернативою.
ceejayoz

1
@ceejayoz Ви праві. На початку відповіді я зараз додав "Одне пом'якшення було б використовувати ..", щоб зрозуміти, що це альтернатива.
Василь А

-1

ПРОСТО, ви просто розширите протокол SSH, щоб клієнт SSH або агент SSH повідомляв / встановлював прапор, щоб сказати, чи був зашифрований оригінальний приватний ключ чи ні (можливо, сторона сервера може навіть ставити запит) - оскільки клієнтська сторона має видимість приватного ключа і навіть підказує вже для парольної фрази, коли ключ зашифрований.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.