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. Регулярно пересматривайте конфигурацию при обновлении дистрибутива и смене модели угроз.