vitus_wagner (
vitus_wagner) wrote2014-09-30 10:40 am
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Entry tags:
SSH сертификаты
Тут я задумался над вопросом, что слишком много у меня развелось ключевых пар SSH. Я держу отдельный секретный ключ на каждом устройстве. за экраном которого я могу работать, чтобы иметь возможность отзвать ключ в случае чего.
Раньше как-то меня устраивала схема с authorized_keys. Но сейчас развелось планшетов, ноутбуков, виндовых виртуалок (в которых я держу отдельные ключи, поскольку они более подвержены всяким троянам, и может понадобится отозвать ключ виртуалки, не отзывая ключ хоста). В общем authorized_keys на моей домашней машине содержит уже 15 строчек. И распространять его по всем машинам, на которые приходится заходить, надо как-то слишком часто.
А known_hosts вообще под 200 строчек, и большая часть из них про несуществующие уже машины и их ключи. А с тех пор как ssh стал имена хостов хэшировать, чистить его стало неудобно.
В общемя, ч я призадумался над вопросом, а не стоит ли перейти на использование сертификатов.
Сертификаты появились в OpenSSH довольно давно. Более менее вменяемое описание как ими пользоваться можно найти здесь
В этом случае в authorized_keys и known_hostsо станется по одной строчке со ссылокй на ключ CA (ну в known_hosts может быть две - для домашнего CA и для рабочего, чтобы не подписывать своим CA ключи не принадлежащих мне серверов).
Остаются пока следующие вопросы:
1. Как организовать распространение файла RevokedKeys (учитывая что значительная часть машин не всегда влючены)
2. Поддерживаются ли сертификаты во всяких альтернативных по сравнению с openssh клиентах и серверах, которыми приходится пользоваться - putty, vx-connectbot, dropbear, acrosync? Вот sftp-plugin к total commander по-мему их как раз поддерживает, не поддерживая старой схемы с authorized_keys.
Раньше как-то меня устраивала схема с authorized_keys. Но сейчас развелось планшетов, ноутбуков, виндовых виртуалок (в которых я держу отдельные ключи, поскольку они более подвержены всяким троянам, и может понадобится отозвать ключ виртуалки, не отзывая ключ хоста). В общем authorized_keys на моей домашней машине содержит уже 15 строчек. И распространять его по всем машинам, на которые приходится заходить, надо как-то слишком часто.
А known_hosts вообще под 200 строчек, и большая часть из них про несуществующие уже машины и их ключи. А с тех пор как ssh стал имена хостов хэшировать, чистить его стало неудобно.
В общемя, ч я призадумался над вопросом, а не стоит ли перейти на использование сертификатов.
Сертификаты появились в OpenSSH довольно давно. Более менее вменяемое описание как ими пользоваться можно найти здесь
В этом случае в authorized_keys и known_hostsо станется по одной строчке со ссылокй на ключ CA (ну в known_hosts может быть две - для домашнего CA и для рабочего, чтобы не подписывать своим CA ключи не принадлежащих мне серверов).
Остаются пока следующие вопросы:
1. Как организовать распространение файла RevokedKeys (учитывая что значительная часть машин не всегда влючены)
2. Поддерживаются ли сертификаты во всяких альтернативных по сравнению с openssh клиентах и серверах, которыми приходится пользоваться - putty, vx-connectbot, dropbear, acrosync? Вот sftp-plugin к total commander по-мему их как раз поддерживает, не поддерживая старой схемы с authorized_keys.
no subject
no subject
no subject
no subject
no subject
no subject
Там сейчас явно есть UI для указание секретного ключа. Вот сертификат соответствующего открыого ключа скорее всего UI не потребует. Его можно будет найти по известным соглашениям об именах файлов, исходя из выбранного секретного ключа.
no subject
no subject
no subject
no subject
no subject
это можно отключить
no subject
Да, я знаю что еще и completion имен хостов заработает, если хэширование отключить.
no subject
no subject
no subject
no subject
no subject
HashKnownHosts no
no subject
no subject
no subject
Во-вторых... можно ли попросить составить список, что надо прочитать, чтобы прокачаться в сетях и смежных дистиплинах до Вашего уровня? То есть, практически с нуля, и... Вопрос, наверное, даже не в книгах, а в списке тем, дальше, зная тему, можно уже искать и самому...
no subject
Но начинал я с Linux Network Administrator Guide Олафа Кирха. (тогда еще перевода не существовало). В наше время параллельно следует читать "Секреты и ложь" Шнайера и его же "Applied Cryptohraphy". Шнайера вообще надо читать всего, только на днях закончил читать его свежий сборник эссе "Carry On", купленный на Амазоне еще в начале июля.
no subject
no subject
no subject
no subject
no subject
no subject
Выложить публично на гитхаб и прописать на целевых машинах cron/init скрипт который делает git pull.
no subject
То есть идея использования парочки cron+anacron для обновления, вероятно, правильная. Но этого недостаточно. Нужно еще придумать как целостность обеспечить.
no subject
no subject
а) подписи при выпуске нового файла
б) проверки при скачивании.
no subject
б) Проверки при скачивании это + одна команда.
no subject
б) Проверки при скачивании это не одна команда, а во-первых, поддержка отдельной ключепвой инфрмструктуры для проверки, во-вторых, сценарий реагирования на инцидент.
no subject
открытый ключ корневого сертификата в любом случае на машине есть значит проверки сводятся к:
git pull && gpg --verify RevokedKeys.sig RevokedKeys && ln RevokedKeys /etc/openssh/RevokedKeys
Сценарий реагирования: если подпись не совпадает, не делать ничего.
no subject
То есть придется для gpg поддерживать отдельную "связку ключей" (keyring) содержащую тот ключ, которым подписывается файл.
Вообще говоря, форматы ключей pgp/gpg, X.509 и ssh это три разных формата.
Не делать ничего в случае если у нас не сошлась подпись под файлом отозванных ключай - это запредельная глупость. Если кто-то подменил этот файл, значит произошла УСПЕШНАЯ попытка взлома системы.
no subject
no subject
что есть грустно.
no subject
Из man ssh-keygen:
no subject
я изучал тему, как обеспечить смену ключей по времени, и тогда я решил, что ssh-сертификаты для этого не подходят
no subject
man был от 6.0p1 из stable
no subject
no subject