Как я могу повысить безопасность SSH? Могу ли я потребовать ключ и пароль?


16

У меня небольшая сеть серверов, и я хотел бы повысить общую безопасность. У меня недостаточно времени / денег / паранойи для настройки VPN - как можно повысить безопасность моей системы?

Одной из причин может быть требование, чтобы пользователи отправляли свой ключ и вводили пароль. Это довольно сложно для Google, потому что все, что касается "ssh key password" - это sshing без пароля. :-)

Одна схема, с которой я всегда хотел поиграть, - требовать, чтобы входящие соединения исходили только из белого списка IP-адресов dyndns. Я знаю, что некоторые руководители службы безопасности рвались бы при мысли об этой идее, но в том-то и дело, что это значительно усложнит использование коробки.

Как вы думаете? Что еще там?


Вы также можете ограничить список пользователей, которым разрешено подключаться, используя директивы AllowUsers или DenyUsers. Подробнее об этом посте .
Фред

Ответы:


8

Логин с паролем и ключом такой же, как «просто с ключом». Во время создания ключа вам предлагается ввести кодовую фразу. Если вы оставите это поле пустым, пароль не будет запрашиваться. Если вы введете какую-нибудь фразу-пароль, вас будут спрашивать каждый раз, когда вы захотите войти в систему.

Если вы беспокоитесь о безопасности, рассмотрите некоторые из этих советов, упомянутых триллион раз на этом форуме:

  • Отключить логин ssh для пользователя root
  • Разрешить доступ по SSH только с определенных IP-адресов (iptables, hosts.allow, ...)
  • Переместить порт ssh на другой порт (больше неясности, чем безопасности, но это работает)
  • Отслеживайте попытки входа в систему за рубежом и реагируйте соответственно
  • Поддерживайте свою систему в актуальном состоянии

И т. Д.

Обновление: пожалуйста, обратитесь к ответу здесь, чтобы узнать, как запрашивать открытый ключ и пароль локальной системы для сервера OpenSSH.


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

12
Это не одно и то же. Если вам требуется только ключ, сервер не может применить политику надежности пароля для ключа. Неосторожный пользователь может иметь незашифрованный закрытый ключ, лежащий на клиенте, что делает ваш сервер уязвимым в случае кражи ключа.
200_успех

mkudlacek - я раньше не знал о hosts.allow - гуглил, кажется, моя идея белого списка dyndns не так уж и глупа, думаю, я попробую это.
Джон Башир

1
200_success - так возможно ли требовать и ключ, и пароль?
Джон Башир

Я также использую приложение DenyHosts, чтобы помочь заблокировать людей, которые продолжают пытаться войти и терпеть неудачу. Хороший маленький проактивный автоматизированный способ занесения в черный список людей ..
Джеймс Т Снелл

6

Одна идея, которая показалась мне интересной, - это стук портов - в основном, чтобы установить ssh-соединение, сначала нужно проверить последовательность других портов, прежде чем ssh-сервер подтвердит запрос на соединение. Если правильная последовательность портов не используется, ответ отсутствует, поэтому он выглядит так, будто сервер ssh не запущен. Последовательность портов настраивается и может использоваться совместно с вашими пользователями; все остальные фактически не смогут подключиться.

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


Я бы пошел с этим, если вы просто хотите «повысить общую безопасность», но вам, вероятно, следует попытаться решить конкретные проблемы безопасности.
Стефан Тиберг

Я использую это на всех сайтах, на которых я ssh, и это очень эффективно imho.
Sirex

Разве это не то же самое, что иметь пароль, который на 4 символа длиннее?
Джон Башир

на самом деле, нет. Всего 65536 портов и 26 букв. Также у вас есть последовательность стуков любой длины, и вы можете ограничить количество повторных попыток, используя стандартные методы брандмауэра. Это не безопасность как таковая, но приятно иметь.
Sirex

ну тогда 8 или 12 символов длиннее :-D
Джон Башир

3

Патчи, связанные с включением непосредственно в SSH, и множество актуальных обсуждений:

Это также можно сделать без изменений, используя скрипт проверки пароля в сочетании с использованием параметра ForceCommandконфигурации.

Наконец, хотя для него не существует модуля, если вы переместили аутентификацию с открытым ключом в PAM, то вам потребуется выполнить оба шага, прежде чем PAM сочтет аутентификацию успешной.


2

Просто используйте

RequiredAuthentications publickey, password

в , sshd_configесли вы используете SSHd от ssh.com. Эта функция недоступна в OpenSSH.


RequiredAuthenticationsэто определенно нестандартное расширение для OpenSSH
Hubert Kario

Вы знаете, какие реализации sshd поддерживают это?
Джон Башир

Сервер Tectia SSH поддерживает это. Кстати: используйте @nameOfUser при ответе на свои комментарии, таким образом, они будут уведомлены об ответе
Hubert Kario

Аналогичная функциональность поддерживается в OpenSSH начиная с
Сорен Лёвборг,

1

Вы также можете использовать одноразовые пароли для повышения безопасности. Это позволит пользователям входить в систему с небезопасного терминала, который может иметь кейлоггер, если они ранее сгенерировали следующий пароль. Также есть генераторы паролей, которые можно установить даже на старые телефоны Java MIDP, которые вы всегда носите с собой.


Да, на моем личном сервере я использую токен Yubikey в дополнение к своему паролю. Токен генерирует одноразовый пароль. Оба должны пройти проверку подлинности. В качестве альтернативы, я разрешаю обход пары пароль / otp, если вы аутентифицируетесь с ключом SSH. Yubikey дешев, и есть много программного обеспечения для его интеграции с Pam, расширяемой системой аутентификации Linux.
Мартейн Химельс

1

Я бы порекомендовал вам никогда не запускать sshd, rdp или подобные сервисы управления без ограничения IP. На самом деле, я бы предложил ограничить доступ к таким сервисам администраторам, подключающимся через VPN.



0

Я полностью согласен с 3моло. OpenSSH является SSH-сервером по умолчанию для Linux и Unix. У нас нет причин менять это, особенно в целях безопасности. VPN должно быть лучшим решением, которое может зашифровать наш трафик и обеспечить двухэтапную авторизацию пароля.


0

Не знаю, почему никто не упомянул об этом, но вы должны убедиться, что вы генерируете ключи длиннее 1024 бит по умолчанию, которые больше не считаются безопасными

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.