Как настроить двухфакторную аутентификацию для SSH в Linux
Secure Shell или SSH – это криптографический сетевой протокол, который обеспечивает безопасный доступ к устройствам по незащищенной сети. Он находит свои приложения в различных сценариях использования, таких как удаленный вход в систему, удаленный доступ к командной строке и удаленное выполнение команд.
Если вы использовали SSH, вы уже знаете, что он использует механизм однофакторной аутентификации, который требует либо SSH-ключ, либо пароль для аутентификации. Хотя вначале это может не показаться тревожным, в результате система остается уязвимой для нескольких открытых уязвимостей.
Поэтому часто рекомендуется включить двухфакторную аутентификацию (2FA) для SSH, чтобы усилить его безопасность. В этой статье мы подробно обсудим двухфакторную аутентификацию, а также подробное руководство о том, как включить 2FA для SSH.
Что такое двухфакторная аутентификация?
Двухфакторная аутентификация или 2FA – это форма механизма многофакторной аутентификации (MFA), которая требует второго фактора аутентификации в дополнение к первому для аутентификации вашего входа в систему и защиты вашей учетной записи от несанкционированного доступа.
Вы можете думать о 2FA как о проверочном коде, сгенерированном либо приложением-генератором кода, либо аппаратным генератором токенов, который вам необходимо предоставить во время входа в систему после ввода пароля для доступа к вашей учетной записи.
Когда вы регистрируете учетную запись в любом онлайн-сервисе, вы создаете пароль для ее защиты. Этот пароль действует как ваш первый фактор аутентификации, и он требует от службы аутентификации вас каждый раз, когда вы входите в свою учетную запись.
Почему вы должны включать 2FA для SSH?
SSH по умолчанию аутентифицирует вас с помощью открытого ключа или пароля перед установкой соединения между вами и другим устройством / сервером.
В целом, эта конфигурация работает абсолютно нормально, и в большинстве случаев вы можете обойтись без нее. Однако, когда вы подключаетесь к устройству / серверу, которое хранит конфиденциальную или личную информацию по SSH, вам понадобится дополнительный уровень защиты в этой системе.
Один из способов сделать это – включить двухфакторную аутентификацию на сервере / главном компьютере, которая защищает его доступ по SSH и требует второго фактора аутентификации для аутентификации входа клиента.
В результате, даже если кому-то удастся получить пароль клиента / хоста, он все равно не сможет получить доступ к системе через SSH, если не предоставит также код 2FA.
Как настроить 2FA для SSH в Linux
Установка и запуск 2FA для SSH в Linux включает в себя ряд шагов. Вот разбивка каждого шага, чтобы помочь вам в этом процессе.
Предпосылки
Само собой разумеется, что вам нужна программа сервера SSH, установленная в системе, в которой вы хотите включить 2FA. Чтобы убедиться в этом, откройте терминал и введите:
ssh -V
Если у вас установлен SSH-сервер, переходите к следующему шагу. Если нет, введите следующую команду, чтобы установить его:
sudo apt install openssh-server
После завершения установки проверьте, включен ли SSH в системе. Для этого введите:
sudo systemctl status ssh
Если ваш статус отражает Активный: активный (работает) , вы можете продолжить. Но если это показывает обратное, введите следующую команду:
sudo systemctl enable ssh
В некоторых случаях конфигурация брандмауэра может мешать работе SSH, и вам может потребоваться выполнить приведенную ниже команду, чтобы включить сервер SSH в вашей системе.
sudo ufw allow ssh
Шаг 1. Установка Google Authenticator PAM
Когда сервер OpenSSH запущен на вашем хост-компьютере, первое, что вам нужно сделать, это установить подключаемый модуль аутентификации (PAM), который предлагает необходимую инфраструктуру для интеграции многофакторной аутентификации для SSH в Linux.
Google Authenticator PAM – самый популярный выбор в этом отношении, поскольку его проще реализовать и использовать, чем некоторые другие модули аутентификации. Он предлагает всю необходимую инфраструктуру, необходимую для аутентификации пользователей с использованием кодов одноразовых паролей на основе времени (TOTP), и имеет приложения-генераторы кода, доступные для Android и iOS.
Чтобы установить Google Authenticator PAM, откройте окно терминала и выполните следующую команду:
sudo apt install libpam-google-authenticator
Введите y в приглашении к установке, чтобы подтвердить процесс.
Шаг 2: Настройка SSH
Теперь, когда в вашей системе установлен Google Authenticator PAM, пора заставить SSH использовать этот модуль для аутентификации. Для этого вам нужно отредактировать пару файлов конфигурации.
Мы рекомендуем сделать резервную копию этих файлов, чтобы избежать проблем, если во время процесса что-то пойдет не так. После этого продолжайте следующие шаги:
- Откройте файл конфигурации PAM с помощью nano . Не стесняйтесь использовать любой другой текстовый редактор Linux .
sudo nano /etc/pam.d/sshd
- Добавьте в файл следующую строку.
auth required pam_google_authenticator.so
- Сохраните и выйдите из окна редактирования файла.
- Перезапустите службу sshd с помощью systemctl.
sudo systemctl restart sshd.service
Затем отредактируйте файл конфигурации SSH, который отвечает за настройку SSH.
- Откройте файл с помощью nano.
sudo nano /etc/ssh/sshd_config
- В этом файле найдите строку ChallengeResonseAuthentication no и измените ее статус с « нет » на « да ». Это даст указание SSH запрашивать код аутентификации всякий раз, когда кто-то пытается войти в систему.
- Сохраните файл и перезапустите демон SSH.
sudo systemctl restart sshd.service
Шаг 3. Настройка аутентификатора в Linux
Теперь, когда вы установили и настроили SSH, вам нужно настроить Google Authenticator для генерации кодов TOTP.
Для этого откройте терминал и запустите Google Authenticator с помощью следующей команды:
google-authenticator
Google Authenticator предложит вам ряд вопросов. Ответ на эти вопросы с или да (у) или нет (п). На большинство вопросов ответ по умолчанию – да, если только вы не выберете вариант, отличный от варианта по умолчанию.
Вот сокращенный список вопросов, которые вам задаст приложение:
- Сделать токены аутентификации привязанными по времени (да / нет): y
- Обновите файл " ~ / .google_authenticator " (y / n): y
- Запретить многократное использование одного и того же токена аутентификации ?: y
- Увеличить частоту генерации кода (y / n): n
- Включить ограничение скорости (да / нет): y
Шаг 4. Настройка аутентификатора на телефоне
Как только вы ответите утвердительно на первый вопрос аутентификации Google, Google PAM сгенерирует QR-код на вашем экране вместе с секретным ключом и несколькими кодами восстановления. Выполните следующие действия, чтобы зарегистрировать Google Authenticator на своем телефоне.
Но сначала вам нужно скачать приложение Google Authenticator на свой смартфон.
Скачать: Google Authenticator для Android | iOS (бесплатно)
- Щелкните значок « Плюс» ( + ) и выберите « Сканировать код» в меню.
- Направьте камеру своего устройства на QR-код на экране компьютера, чтобы автоматически создать запись в приложении.
- Либо выберите « Ввести ключ настройки» в меню « Плюс» (+) и введите необходимые данные. Для этого сначала дайте своей записи имя – оно должно быть легко узнаваемым – а затем введите секретный ключ, отображаемый под QR-кодом на экране.
- Наконец, нажмите « Добавить», чтобы сохранить запись.
В качестве меры предосторожности скопируйте все коды восстановления, отображаемые под QR-кодом, и сохраните их в безопасном месте. Они могут вам понадобиться, если вы не можете получить доступ к Google Authenticator на своем телефоне или потеряли доступ к нему.
Защита доступа по SSH в Linux с помощью 2FA
Если вы правильно выполнили приведенные выше инструкции, у вас должна быть включена двухфакторная аутентификация для SSH в вашей системе Linux.
Теперь каждый раз, когда вы хотите получить доступ к этому серверу / устройству через SSH, вам необходимо сначала ввести пароль SSH (первый фактор), а затем ввести код TOTP (второй фактор) из приложения Google Authenticator для аутентификации вашего авторизоваться. Это отличный способ управлять удаленными входами по SSH и защищать их от злоумышленников в Интернете.