Базовый чек-лист SSH: ключи, конфиги и аудит
Компактный чек-лист по SSH: ключи Ed25519, безопасная конфигурация sshd, клиентские конфиги, jump-хосты и аудит.
Базовый чек-лист SSH: ключи, конфиги и аудит
Введение
SSH — основной канал управления Linux-инфраструктурой. Ниже — компактный чек-лист для приведения хостов к единому безопасному стандарту: от генерации ключей до аудита конфигураций и логов.
Ключи и аутентификация
- Предпочитайте Ed25519:
ssh-keygen -t ed25519 -a 100. RSA 4096 — только при требованиях совместимости. - Отключите парольную аутентификацию:
PasswordAuthentication noв/etc/ssh/sshd_config. - Ограничьте методы:
PubkeyAuthentication yes,KbdInteractiveAuthentication no,GSSAPIAuthentication no(если не используется Kerberos). - Принудительно используйте SSHv2:
Protocol 2.
Ключи в инфраструктуре
- Храните приватные ключи в менеджере секретов или HSM; на хостах — только при крайней необходимости и с
chmod 600. - Для доступа по CI/CD используйте отдельные сервисные ключи с ограничением по
command=иfrom=вauthorized_keys. - Регулярно ротируйте ключи; применяйте
Valid Lifetimeи напоминания в трекере.
Конфигурация сервера
Минимальный набор в /etc/ssh/sshd_config:
Port 22
Protocol 2
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin prohibit-password
AllowUsers admin_ops
LoginGraceTime 30
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2
X11Forwarding no
AllowTcpForwarding no
PermitTunnel no
После изменений: systemctl reload sshd (или sshd -t для проверки синтаксиса).
Конфигурация клиента
~/.ssh/config для единообразия:
Host *
AddKeysToAgent yes
UseKeychain yes
ServerAliveInterval 60
ServerAliveCountMax 3
IdentitiesOnly yes
Host git-*
User git
IdentityFile ~/.ssh/id_ed25519_git
IdentitiesOnly yes
Host db-*
User admin
IdentityFile ~/.ssh/id_ed25519_db
ProxyJump jump.example.com
Аудит и мониторинг
- Логи:
/var/log/auth.log(Debian/Ubuntu) или/var/log/secure(RHEL). Мониторьте «Failed password», «Invalid user», «Accepted publickey». - Включите verbose-аудит при инцидентах:
LogLevel VERBOSE. - Периодически проверяйте
sshd -Tдля эффективной конфигурации. - Сканируйте конфигурацию автоматикой (CIS, Lynis) и фиксируйте drift.
Jump-хосты и Bastion
- Один входной узел с MFA и строгим
AllowUsers/AllowGroups. - Принудительный
ProxyJumpдля всех внутренних хостов; прямой доступ из интернета закрыт. - Логируйте сессии (если допустимо) через
auditdили специализированные решения.
Типовые ошибки
- «Permission denied (publickey)» — неверные права на
~/.ssh(должно быть 700) иauthorized_keys(600); проверьте владельца. - «Connection closed by port 22» — блокировка фаерволом или
AllowUsers/DenyUsers. - «no mutual signature algorithm» — несовпадение алгоритмов; обновите клиент/сервис или добавьте
PubkeyAcceptedAlgorithms.
Заключение
Единый стандарт SSH снижает поверхность атаки и упрощает расследование инцидентов. Чек-лист можно превратить в Ansible-роль и прогонять регулярно.
Теги
#ssh #openssh #безопасность #Linux #автоматизация #ключи #аудит