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

40978
eckza

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

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

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

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

64
На самом деле не должно быть никаких потерь в безопасности, если на вашем ключе нет ключевой фразы. Сохранение целостности ключа безопасности на этом этапе становится неотъемлемой частью, поскольку, если кто-то может скопировать его, то не существует секретного ключа, который мешал бы ему использовать его. Chris Marisic 13 лет назад 3
Возможно это - только я, но я понятия не имею, что пытается сказать вышеупомянутый комментарий. underscore_d 9 лет назад 0
@underscore_d Он в основном говорит: не влияет на безопасность SSH, чтобы иметь или не иметь парольные фразы для ваших ключей, НО вы должны сохранять свои ключи локально защищенными. Hartator 8 лет назад 2

3 ответа на вопрос

80
PriceChild

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

Если кто-то может получить доступ к этому закрытому ключу, вы должны принять как должное, что у него есть доступ (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 проверяются отдельно, ограничивая вход в систему определенным пользователям с определенных хостов.

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

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

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

-4
Majenko

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

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

$ ssh-keygen -t dsa 

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

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

Есть ли причина, по которой вы защищаете DSA, а не RSA? Я чаще видел рекомендованное обратное. PriceChild 13 лет назад 1
@PriceChild: AFAIK, их безопасность более или менее эквивалентна (при условии достаточного размера ключа). Я сам не криптограф, а доверяю решению OpenSSH и GnuPG использовать RSA в качестве алгоритма ключа по умолчанию. Смотри также [этот вопрос] (http://superuser.com/questions/13164/what-is-better-for-gpg-keys-rsa-or-dsa). grawity 13 лет назад 0
Никакой реальной причины - главным образом личного выбора - это и тот факт, что RSA был взломан недавно и украден чувствительный код - как это относится к ключам RSA, я понятия не имею (кто это делает?), Но я просто всегда использовал DSA, поскольку он казался более безопасным , Majenko 13 лет назад 0
Боюсь, что взлом "компании RSA" не повлияет на безопасность "алгоритма RSA". Также ознакомьтесь с https://secure.wikimedia.org/wikipedia/en/wiki/RSA_Security - «RSA был назван в честь алгоритма криптографии открытого ключа RSA, который, в свою очередь, был назван в честь инициалов его соавторов: Рона Ривеста, Ади Шамир и Лен Адлеман. " PriceChild 13 лет назад 8
@Matt: единственное, что у них общего, - это имя. Асимметричный криптографический алгоритм RSA - это чистая математика, и никоим образом он не может быть ослаблен взломом систем некоторых корпораций. grawity 13 лет назад 6
@ grawity Это приятно знать ... Я уже все настроил с помощью RSA - с индивидуальными ключами для каждой системы и т. д. - и мне не очень хотелось делать это заново с нуля. eckza 13 лет назад 0

Похожие вопросы