У моїй компанії ми використовуємо LDAP, щоб мати послідовний набір облікових записів на всіх машинах, а потім використовуємо інструмент управління конфігурацією (у нашому випадку зараз cfengine) для розподілу authorized_keys
файлів для кожного користувача на всіх серверах. Самі файли ключів зберігаються (разом з іншою інформацією про конфігурацію системи) у сховищі git, щоб ми могли бачити, коли ключі надходять та йдуть. cfengine також поширює sudoers
файл, який контролює, хто має доступ, щоб запустити те, що як root на кожному хості, використовуючи користувачів та групи з каталогу LDAP.
Ідентифікація пароля повністю відключена на наших виробничих серверах, тому автентифікація ключа SSH є обов'язковою. Політика рекомендує використовувати окремий ключ для кожного ноутбука / робочого столу / будь-що та використовувати парольну фразу для всіх клавіш, щоб зменшити вплив втраченого / викраденого ноутбука.
У нас також є хост бастіону, який використовується для доступу до хостів у виробничій мережі, що дозволяє нам мати обмежувальні правила брандмауера навколо цієї мережі. Більшість інженерів мають деякі спеціальні конфігурації SSH, щоб зробити це прозорим:
Host prod-*.example.com
User jsmith
ForwardAgent yes
ProxyCommand ssh -q bastion.example.com "nc %h %p"
Додавання нового ключа або видалення старого вимагає трохи церемонії в цьому налаштуванні. Я заперечую, що для додавання нового ключа бажано, щоб це була операція, яка залишає аудиторський слід і є видимою для всіх. Однак, через накладні витрати, я думаю, що люди іноді нехтують видалити старий ключ, коли він більше не потрібен, і у нас немає реального способу відстежити це, крім прибирання, коли працівник покидає компанію. Це також створює додаткове тертя під час посадки нового інженера, оскільки їм потрібно генерувати новий ключ і висувати його на всі хости, перш ніж вони зможуть бути повністю продуктивними.
Однак найбільшою перевагою є наявність окремого імені користувача для кожного користувача, що дозволяє легко робити більш детальний контроль доступу, коли він нам потрібен, і надає кожному користувачеві ідентичність, яка відображається в журналах аудиту, що може бути дуже корисним при спробі відстеження відстеження виробничий випуск повертається до дії sysadmin.
У цій програмі нудно мати автоматизовані системи, які вживають заходів проти виробничих хостів, оскільки їх "відомі" SSH-ключі можуть слугувати альтернативним шляхом доступу. Поки ми лише зробили так, щоб облікові записи користувачів для цих автоматизованих систем мали лише мінімальний доступ, який їм потрібен для виконання своєї роботи, і визнали, що злісний користувач (який вже повинен бути інженером з виробничим доступом) також може робити ці самі дії напів- анонімно за допомогою ключа програми.