Как включить двухфакторный вход в систему по SSH – CloudSavvy IT

Мужчина держит смартфон.
Shutterstock / TATSIANAMA

Если вы действительно хотите заблокировать свой облачный сервер, вы можете включить двухфакторную аутентификацию для SSH таким же образом, как вы добавили бы ее в свою учетную запись Gmail, не позволяя никому получить доступ, если они украли ваш закрытый ключ SSH.

Это действительно необходимо?

По сравнению с наличием двух факторов для электронной почты или учетной записи в Интернете, два фактора для SSH не так полезны. Для чего-то вроде электронной почты причиной сбоя обычно являются схемы сброса пароля, легко взломанные пароли или утечка данных. Действительно, все, что связано с плохими паролями или плохим управлением паролями.

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

Но в некоторых случаях два фактора могут быть хорошим выбором. Если какой-то сумасшедший хакер решит украсть ваш ноутбук с намерением получить вместе с ним ваши SSH-ключи (а не просто продать его в Craigslist, когда они не смогут взломать пароль вашего устройства), наличие двух факторов сделает вас на шаг впереди.

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Однако более реальная проблема связана с переадресацией агента SSH; При включенной переадресации агентов запросы на ключ для входа на дополнительные серверы перенаправляются обратно на ваше устройство. Это позволяет вам подключаться по SSH к общедоступному серверу и – с этого общедоступного сервера – снова SSH к другому частному серверу в той же сети, предоставляя вам доступ аналогично тому, как будет работать VPN.

Проблема, однако, заключается в том, что если общедоступный сервер скомпрометирован, если у вас включена переадресация агента, злоумышленник может действовать как вы, пока вы подключены к общему серверу. Это потенциальное повышение привилегий в зависимости от того, как вы настроили свою сеть. Двухфакторный SSH решил бы эту проблему.

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

Как включить два фактора для SSH

Для обработки двухфакторных запросов мы будем использовать подключаемый модуль аутентификации Google (PAM), который работает с Authy и Google Authenticator. Установите его из диспетчера пакетов вашего дистрибутива:

sudo apt-get install libpam-google-authenticator

Затем выполните команду инициализации:

google-authenticator

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

Гигантский QR-код.

Откройте приложение-аутентификатор и отсканируйте код (не снимок экрана). Ваше приложение должно синхронизироваться и начать выводить шестизначные коды, которые меняются каждые 30 секунд.

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

На следующие вопросы ответьте на следующие вопросы:

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

Все ваши настройки сохранены в ~/.google-authenticator, Вы можете скопировать этот файл на дополнительный сервер, чтобы применить ту же конфигурацию; больше не запускайте инструмент инициализации, иначе вам придется связать два отдельных устройства.

Настройте SSH для работы с Google PAM

Откройте файл конфигурации PAM по адресу /etc/pam.d/sshd в вашем любимом текстовом редакторе и добавьте следующую строку в самом низу:

auth required pam_google_authenticator.so nullok

nullok Директива означает, что это временно, поэтому два фактора будут необязательными, пока вы не измените это. Оставьте это таким образом для тестирования. Вы также хотите найти строку, которая содержит @include common-authи закомментируйте это с #:

# Standard Un*x authentication.
#@include common-auth

Это отключает аутентификацию на основе пароля, которую вы не хотите.

Затем откройте настройки SSH на /etc/ssh/sshd_config, Найти ChallengeResponseAuthentication вариант, и включите его:

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication yes

Это позволяет использовать 2FA, однако SSH-ключи переопределяют 2FA по умолчанию, поэтому вам придется это исправить, добавив следующую строку в конец sshd_config:

AuthenticationMethods publickey,keyboard-interactive

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

SSH теперь настроен, поэтому вы можете перезагрузить sshd чтобы включить эти новые настройки:

sudo systemctl restart sshd.service

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

Если все работает правильно, и вы дважды проверили, что нет проблем со входом, вы можете удалить «nullokДиректива в /etc/pam.d/sshd сделать 2FA обязательным.

Если вы потеряете доступ, вы все равно сможете войти в систему с помощью кодов чрезвычайной ситуации, которые вы получили при настройке PAM, и секретный ключ должен позволить вам повторно связать приложение TOTP, если по какой-либо причине ваше приложение перестало подключаться.

Добавить доступ к учетным записям служб

Если у вас есть учетная запись службы, которая должна получить доступ к вашему серверу (например, rsync), вы должны отключить 2FA для этой учетной записи. Это довольно легко сделать; Во-первых, мы хотим создать новую группу для добавления учетных записей служб:

sudo groupadd service

Затем добавьте пользователя в эту группу:

sudo useradd 
sudo usermod -a -G service 

Затем откройте конфигурацию PAM в /etc/pam.d/sshdи добавьте следующую строку:

auth [success=done default=ignore] pam_succeed_if.so user ingroup service

Обратите внимание, что это разрешает доступ к вашему серверу без 2FA, но если пользователь не является пользователем root, это может не иметь большого значения.

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *