Мы уже как то затрагивали тему хардеринга SSH в Fedora:
Как защитить ssh в CentOS / RHEL / Fedora
Идем дальше 🙂
Кажется, каждый день сообщается о множестве нарушений, когда наши данные находятся в опасности.
Несмотря на то, что SSH является безопасным способом удаленного установления соединения с системой Linux, но все же неизвестный пользователь может получить доступ к вашей машине Linux, если они украдут ваши ключи SSH, даже если вы отключите пароли или разрешите подключения SSH только через открытый и закрытый ключи.
В этой статье мы расскажем, как настроить двухфакторную аутентификацию (2FA) для SSH в дистрибутиве Fedora Linux, используя Google Authenticator для более безопасного доступа к удаленной системе Linux, предоставив TOTP ( Одноразовый пароль) число, сгенерированное случайным образом приложением-аутентификатором на мобильном устройстве.
Обратите внимание, что вы можете использовать любое приложение двухфакторной аутентификации для вашего мобильного устройства, совместимое с алгоритмом TOTP.
Существует множество бесплатных приложений для Android или IOS, которые поддерживают TOTP как и Google Authenticator, но в этой статье в качестве примера используется Google Authenticator.
Установка Google Authenticator на Fedora
Сначала установите приложение Google Authenticator на свой сервер Fedora, используя следующую команду dnf.
$ sudo dnf install -y google-authenticator
После установки Google Authenticator вы можете запустить приложение.
$ google-authenticator
Приложение предложит вам ряд вопросов.
В следующих фрагментах показано, как ответить на вопросы относительно разумной настройки безопасности.
Do you want authentication tokens to be time-based (y/n)y
Do you want me to update your "/home/user/.google_authenticator" file (y/n)?y
Приложение предоставляет вам секретный ключ, код подтверждения и коды восстановления.
Сохраните эти ключи в надежном безопасном месте, так как эти ключи – единственный способ получить доступ к вашему серверу, если вы потеряете мобильное устройство.
Настройка проверки подлинности мобильного телефона
На вашем мобильном телефоне перейдите в магазин приложений Google Play или iTunes, найдите Google Authenticator и установите приложение.
Теперь откройте приложение Google Authenticator на своем мобильном телефоне и отсканируйте QR-код, отображаемый на экране терминала Fedora.
После завершения сканирования QR-кода вы получите случайным образом сгенерированное число приложением-аутентификатором и будете использовать его каждый раз, когда вы подключаетесь к серверу Fedora удаленно.
Завершите настройку Google Authenticator
Приложение Google Authenticator предлагает дополнительные вопросы, а в следующем примере показано, как ответить на них, чтобы настроить безопасную конфигурацию.
Теперь вам нужно настроить SSH для использования новой двухфакторной аутентификации, как описано ниже.
Настройте SSH для использования Google Authenticator
Чтобы настроить SSH для использования приложения-аутентификатора, сначала необходимо иметь работающее соединение SSH с использованием открытых ключей SSH, поскольку мы будем отключать парольные соединения.
Откройте файл /etc/pam.d/sshd на своем сервере.
$ sudo vi /etc/pam.d/sshd
Закомментируйте строку auth substack password-auth в файле настроек.
#auth substack password-auth
Затем поместите следующую строку в конец файла.
auth sufficient pam_google_authenticator.so
Сохраните и закройте файл.
Затем откройте и отредактируйте файл /etc/ssh/sshd_config.
$ sudo vi /etc/ssh/sshd_config
Найдите строку ChallengeResponseAuthentication и измените ее на yes.
ChallengeResponseAuthentication yes
Найдите строку PasswordAuthentication и измените ее на no.
PasswordAuthentication no
Затем поместите следующую строку в конец файла.
AuthenticationMethods publickey,password publickey,keyboard-interactive
Сохраните и закройте файл, а затем перезапустите SSH.
$ sudo systemctl restart sshd
Тестирование двухфакторной аутентификации на Fedora
Теперь попробуйте подключиться к вашему серверу удаленно, он попросит вас ввести проверочный код.
$ ssh user@example.com Verification code:
Код подтверждения генерируется случайным образом на вашем мобильном телефоне с помощью вашего приложения для проверки подлинности.
Поскольку сгенерированный код меняется каждые несколько секунд, вам необходимо быстро ввести его, прежде чем он создаст новый.
Если вы введете неправильный код подтверждения, вы не сможете подключиться к системе и получите следующую ошибку «Permission denied».
$ ssh user@example.com Verification code: Verification code: Verification code: Permission denied (keyboard-interactive).
Заключение
Внедрив эту простую двухфакторную аутентификацию, вы добавите дополнительный уровень безопасности в свою систему, что также затрудняет доступ неизвестного пользователя к вашему серверу.
См. также:
Как настроить SSH двухфакторную аутентификацию на Ubuntu 18.04, 18.10 Server