Блог "Дети ОИТа"
/поиск

OpenSSH: безопасные практики конфигурации и управления ключами

Production-ready практики по конфигурации OpenSSH, управлению ключами и интеграции с LDAP/AD.

OpenSSH: безопасные практики конфигурации и управления ключами

Введение

OpenSSH — стандарт де-факто для безопасного удалённого доступа и автоматизации. Цель данного руководства — собрать production-ready практики по конфигурации sshd_config, управлению ключами и интеграции с централизованными системами аутентификации.

Архитектура и угрозы

  • Основные векторы: перехват ключей, несанкционированный доступ по паролям, forwarding-атаки, MITM при первом подключении.
  • Защитные меры: отключение паролей, ограничение методов аутентификации, строгий контроль agent-forwarding, проверка host keys.

Базовая конфигурация sshd_config

# /etc/ssh/sshd_config
Port 22
Protocol 2
PermitRootLogin prohibit-password
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM yes
KerberosAuthentication no
GSSAPIAuthentication no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
AllowTcpForwarding no
GatewayPorts no
X11Forwarding no
PrintMotd no
PrintLastLog yes
Subsystem sftp /usr/lib/openssh/sftp-server -l INFO

Управление ключами

  • Предпочитайте ed25519: ssh-keygen -t ed25519 -a 100
  • Храните ключи в ssh-agent с таймаутом: ssh-add -t 10h
  • Для автоматизации — deploy-ключи с правами только на чтение и ограничением commands через command= в authorized_keys.
  • Отключайте agent forwarding на jump-хостах: AllowAgentForwarding no

Hardening

  • Ограничение по источникам: Match Address 10.0.0.0/8 → PasswordAuthentication yes (только для управления), остальное — нет.
  • Rate limiting на уровне firewall (iptables/nftables или fail2ban) для защиты от brute-force.
  • Мониторинг: LogLevel VERBOSE, анализ auth.log на события Accepted publickey и Connection closed by authenticating user.

Интеграция с LDAP/AD и Kerberos

  • Для enterprise: используйте AuthorizedKeysCommand с обёрткой, запрашивающей ключи из LDAP/AD.
  • При необходимости GSSAPI: включайте только в доверенных сегментах и с ограничением GSSAPICleanupCredentials yes.

Диагностика

# Проверка конфигурации
sshd -t
# Проверка загруженных ключей в агенте
ssh-add -l
# Логи аутентификации
grep 'sshd' /var/log/auth.log | tail -n 100

Заключение

Следование данным практикам снижает поверхность атаки OpenSSH до минимума и совместимо с требованиями compliance. Регулярно пересматривайте конфигурацию при обновлении дистрибутива и смене модели угроз.