Нужно ли иметь пароль для моего SSH RSA-ключа?

71

До того, как я приступил к своей текущей работе (в малом бизнесе), в моем офисе не было брандмауэра в сети, и буквально ничего не создавалось. Теперь, когда я вошел в систему как отдельный системный администратор / ИТ-специалист, я делал все возможное, чтобы это изменить. После объяснения моему боссу, насколько мы уязвимы, он позволил мне настроить несколько серверов резервного копирования, один из которых находится у него дома.

Прямо сейчас я пытаюсь настроить все так, чтобы я мог автоматизировать ежедневное резервное копирование. Я планирую использовать rsync через ssh для этого. В целях безопасности, а также для простоты автоматизации я планировал отключить вход по паролю SSH и использовать только проверку ключей RSA. Ну, если у меня установлен пароль RSA, тогда мне все равно придется вводить пароль, и это проблема.

Разве наличие пароля RSA не делает вещи значительно менее безопасными? Я единственный человек в компании, который имеет какое-либо представление о подобных вещах, поэтому я не слишком беспокоюсь о том, что кто-то вызовет терминал на моей машине (который всегда заблокирован, когда я AFK, в любом случае ) и ssh-в один из серверов резервного копирования и нанесение любого ущерба. Я все еще очень, очень плохо знаком с миром системного администрирования, и я впервые делаю что-то подобное, и я не хочу оставлять никаких пробелов в настройке безопасности.

Рассматриваемые здесь компьютеры работают под управлением Ubuntu 10.10, SME Server и OSX 10.6, если это как-то меняет ситуацию.

eckza
источник
5
На самом деле не должно быть никаких потерь в безопасности, если на вашем ключе нет ключевой фразы. Сохранение целостности ключа безопасности на этом этапе становится неотъемлемой частью, поскольку, если кто-то может скопировать его, то не существует секретного ключа, который мешал бы ему использовать его.
Крис Марисик,
1
Возможно это - только я, но я понятия не имею, что пытается сказать вышеупомянутый комментарий.
underscore_d
3
@underscore_d Он в основном говорит: не влияет на безопасность SSH, иметь или не иметь парольные фразы для ваших ключей, НО вы должны хранить свои ключи локально в безопасности.
Хартатор

Ответы:

89

Как вы знаете, преимущество, которое дает вам фраза-пароль, состоит в том, что если кто-то может прочитать ваш закрытый ключ, он «не сможет» его использовать.

Если кто-то может получить доступ к этому закрытому ключу, вы должны принять как должное, что у него есть доступ (ed) / скомпрометирован, независимо от того, какие машины настроены с открытым ключом. Такие вещи, как .bash_history или .ssh / config только облегчают эту задачу, даже если ваш .ssh / known_hosts запутан.

Отсутствие пароля на вашем ключе не конец света, вот 3 идеи, которые помогут вам защитить себя, несмотря на это. ( Biggie является вторым, прочитайте это, если ничего больше )


  1. Не используйте один и тот же ключ на всех машинах и пользователях. Создайте для каждого пользователя на каждой машине (которая должна делать подобные вещи) свою собственную пару ключей. Это позволит вам держать точный контроль над тем, что может ssh, где.

  2. При добавлении ключа в ваш файл author_keys вы можете заблокировать его, чтобы иметь возможность выполнять только определенную команду или использовать его только с определенного хоста.

    Смотрите man sshи ищите команду = и из =

    Синтаксис выглядит примерно так:

    from="1.2.3.4",command="/path/to/executable argument" ssh-rsa key name

    то есть, всплывающее окно «rsync» и только ключ rsync может быть вызван вашим ключом, и только с IP-адреса 1.2.3.4. Несколько IP-адресов могут быть разделены ,. Имена хостов также поддерживаются.

  3. Еще одна вещь, которая приходит на ум, это директива AllowUser в вашем sshd_config

    AllowUsers

    За этим ключевым словом может следовать список шаблонов имен пользователей, разделенных пробелами. Если указано, вход в систему разрешен только для имен пользователей, которые соответствуют одному из шаблонов. '*' а также '?' можно использовать в качестве шаблонов в шаблонах. Допустимы только имена пользователей; числовой идентификатор пользователя не распознается. По умолчанию вход разрешен для всех пользователей. Если шаблон принимает форму USER @ HOST, тогда USER и HOST проверяются отдельно, ограничивая вход в систему определенным пользователям с определенных хостов.

    Это в основном гарантирует, что пользователь может войти в систему только из определенного места. (хотя он также принимает и шаблоны). Не решит всех ваших проблем, но, по крайней мере, сделает их труднее для других.

дорогой
источник
1
Красивая - это именно то, что мне нужно было знать. Спасибо вам большое!
eckza
3
Нет проблем, просто не принимайте это как исчерпывающий список! :-) На ум приходят такие вещи, как регулярный просмотр auth.log / secure и т. Д.
Дорогой
3
Итак, одитинг вместо того, чтобы беспокоиться о краже вашей парольной фразы?
Этеш Чоудхури
3
@shurane Сделай оба!
Дорогой
4

Вы можете использовать что-то вроде цепочки для ключей, чтобы сделать фразу-пароль менее болезненной. Это немного более безопасно, чем использование входа без пароля, и может быть использовано в сочетании с другими ответами здесь. Ответ PriceChild был довольно хорошим.

Фахим Митха
источник
-4

Лично я использую DSA, а не RSA, главным образом потому, что это то, что я всегда использовал, и я знаю, что это «просто работает», но теория, я думаю, та же самая. Вы могли бы заменить dsaс rsaв ниже.

По источнику:

$ ssh-keygen -t dsa

Затем скопируйте содержимое .ssh/id_dsa.pubфайла .ssh/authorized_keysв учетную запись пользователя в месте назначения.

Тогда вы должны просто иметь возможность ssh между источником и местом назначения без паролей.

Majenko
источник
1
Есть ли причина, по которой вы защищаете DSA, а не RSA? Я чаще видел рекомендованное обратное.
Дорогой
@PriceChild: AFAIK, их безопасность более или менее эквивалентна (при условии достаточного размера ключа). Я не являюсь криптографом и доверяю решению OpenSSH и GnuPG использовать RSA в качестве алгоритма ключа по умолчанию. Смотрите также этот вопрос .
grawity
Никакой реальной причины - главным образом личного выбора - это и тот факт, что RSA был взломан недавно и украден чувствительный код - как это относится к ключам RSA, я понятия не имею (кто это делает?), Но я просто всегда использовал DSA, поскольку он казался более безопасным ,
Majenko
9
Боюсь, что взлом "компании RSA" не повлияет на безопасность "алгоритма RSA". Также проверьте secure.wikimedia.org/wikipedia/en/wiki/RSA_Security - «RSA был назван в честь алгоритма криптографии открытого ключа RSA, который в свою очередь был назван в честь инициалов его соавторов: Рона Ривеста, Ади Шамира и Лен Адлеман. "
Дорогой
6
@Matt: единственное, что у них общего, - это имя. Алгоритм шифрования RSA асимметричного чисто математика, нет никакого способа это может быть ослаблено обкаткой к системам некоторыхов корпорации.
grawity