Аутентификация по SSH-ключам FreeIPA только

Вопрос или проблема

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

Отключение аутентификации по паролю в sshd_config просто отключает все методы аутентификации. Так что, очевидно, это какая-то опция PAM, которую я не могу найти.

Я приложил мой sshd_config ниже. Буду очень признателен за любую помощь.

# Смотрите man-страницу sshd_config(5) для подробностей

# Какие порты, IP-адреса и протоколы мы слушаем
Port 22
# Используйте эти параметры, чтобы ограничить интерфейсы/протоколы, к которым будет привязан sshd
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# Ключи хоста для протокольной версии 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
# Разделение привилегий включено для безопасности
UsePrivilegeSeparation yes

# Период жизни и размер временного ключа сервера версии 1
KeyRegenerationInterval 3600
ServerKeyBits 1024

# Логирование
SyslogFacility AUTH
LogLevel INFO

# Аутентификация:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes

RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile     %h/.ssh/authorized_keys

# Не читать файлы пользователя ~/.rhosts и ~/.shosts
IgnoreRhosts yes
# Для этого также нужны ключи хоста в /etc/ssh_known_hosts
RhostsRSAAuthentication no
# аналогично для протокольной версии 2
HostbasedAuthentication no
# Раскомментируйте, если вы не доверяете ~/.ssh/known_hosts для RhostsRSAAuthentication
#IgnoreUserKnownHosts yes

# Чтобы разрешить пустые пароли, измените на yes (НЕ РЕКОМЕНДУЕТСЯ)
PermitEmptyPasswords no

# Измените на yes, чтобы включить аутентификацию по методам "вызов-ответ" (учтите проблемы с
# некоторыми модулями PAM и потоками)
ChallengeResponseAuthentication yes

# Измените на no, чтобы отключить проксированные пароли в открытом виде
#PasswordAuthentication no

# Опции Кераberos
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes

# Опции GSSAPI
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no

#MaxStartups 10:30:60
#Banner /etc/issue.net

# Позволять клиенту передавать переменные окружения локали
AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server

# Установите это значение в 'yes', чтобы включить аутентификацию PAM, обработку учетных записей
# и обработку сеансов. Если это включено, аутентификация PAM будет
# разрешена через ChallengeResponseAuthentication и
# PasswordAuthentication. В зависимости от вашей конфигурации PAM,
# аутентификация PAM через ChallengeResponseAuthentication может обойти
# настройку "PermitRootLogin without-password".
# Если вы просто хотите, чтобы проверки учетной записи и сеанса PAM выполнялись без
# аутентификации PAM, тогда включите это, но установите PasswordAuthentication
# и ChallengeResponseAuthentication на 'no'.
#UsePAM yes
KerberosAuthentication no
PubkeyAuthentication yes
UsePAM yes
AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys
GSSAPIAuthentication yes
AuthorizedKeysCommandUser nobody

После долгих попыток, похоже, установка этого параметра в sshd_config работает. Что странно, потому что я пробовал это раньше, но теперь, кажется, это сработало.

AuthenticationMethods publickey

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

Ответ или решение

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

Настройка SSH для аутентификации по ключам

  1. Конфигурация sshd_config:

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

    AuthenticationMethods publickey

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

  2. Отключение паролей для улучшения безопасности:

    Вы упомянули, что хотели бы предотвратить попытки подбора паролей автоматами. Чтобы достичь этого, вы можете комбинировать настройки:

    PasswordAuthentication no
    ChallengeResponseAuthentication no

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

  3. Настройки PAM:

    Чтобы убедиться, что другие методы аутентификации, такие как PAM (Pluggable Authentication Modules), не будут мешать вашему сценарию, установите:

    UsePAM no

    Учтите, что это может отключить другие возможности, предоставляемые PAM, такие как учёт сеансов или управление доступом.

  4. Логирование и мониторинг:

    Рекомендуется настроить логирование для отслеживания попыток доступа. Вы можете использовать:

    LogLevel VERBOSE

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

  5. Дополнительные мер безопасности:

    • Fail2Ban: Установите и настройте Fail2Ban, чтобы блокировать IP-адреса, с которых осуществляется слишком много неудачных попыток входа.
    • Firewall: Рассмотрите возможность использования firewall (например, iptables или firewalld), чтобы ограничить доступ к SSH только с определённых адресов.

Заключение

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

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

Капча загружается...