sshd_config: минимум для стенда
SSH-доступ к стенду обычно открывают по-быстрому, а потом удивляются брутфорсу в логах. Базовый sshd_config, который отсекает типовые проблемы, укладывается в пять параметров и двадцать минут.
Зачем менять умолчания
Дистрибутивные sshd идут с permissive-настройками: root-вход по паролю, без ограничений пользователей, три попытки авторизации. На стенде это терпимо, пока не появится в логах:
Локальная сеть не означает доверенную. Конфигурация по умолчанию — это риск и шум в мониторинге.
Проверка текущих значений
Перед правкой смотрим, что уже установлено:
Вывод покажет реальные значения, с которыми sshd стартует, включая параметры из Match-блоков.
Четыре параметра для стенда
| Параметр | Значение | Зачем |
|---|---|---|
PermitRootLogin | no | Root не должен входить напрямую |
AllowUsers | devops admin | Белый список, остальные отклоняются |
PasswordAuthentication | no | Только ключи, пароли отключены |
MaxAuthTries | 3 | Блокировка после трёх ошибок |
Изменения применяются после systemctl reload sshd. Вносите правки через ssh -t user@host "sudo nano /etc/ssh/sshd_config", чтобы не потерять сессию при ошибке.
PermitRootLogin
Прямой вход под root — первое, что брутят. Отключаем:
Если нужен root-доступ — заходите под обычным пользователем и поднимайтесь через sudo. Это логирует ваши действия в auth.log.
AllowUsers
Белый список отсекает всех, кого не добавили явно. Если пользователь не в списке, sshd отдаёт Permission denied до запроса пароля.
Указывайте пользователей через пробел. Для групп используйте AllowGroups. Оба параметра поддерживают шаблоны: AllowUsers devops@10.0.0.* ограничит вход по сети.
PasswordAuthentication
Ключи не брутфорсятся в принципе. Переключаем:
Перед отключением убедитесь, что ваш публичный ключ в ~/.ssh/authorized_keys на стенде есть. Иначе закроете себе вход.
MaxAuthTries
Защита от брутфорса. После трёх неудачных попыток соединение рвётся:
Значение меньше единицы отключает ограничение. Ставьте 3–5 в зависимости от надёжности вашей сети.
Проверка конфигурации
После правки всегда проверяйте синтаксис:
Пустой вывод означает, что sshd запустится с новыми параметрами. Любая ошибка выводится на экран.
Затем применяйте:
Типичные ошибки
Правка не того файла. В некоторых дистрибутивах sshd_config лежит в /etc/ssh/sshd_config.d/. Подключаемые файлы читаются в алфавитном порядке. Дефолтный /etc/ssh/sshd_config может перезаписываться при обновлении пакета — лучше класть кастомные параметры в .conf-файл с осмысленным именем.
Пробелы после параметра. Синтаксис требует пробела между ключом и значением:
Комментарии вместо параметров. Строка #PasswordAuthentication no — это комментарий, sshd её игнорирует. Убирайте # или добавляйте новую строку.
Match-блок перекрывает глобальные настройки. Если в конце файла есть Match User root, он может вернуть PermitRootLogin yes для конкретного пользователя. Проверяйте вывод sshd -T.
Дополнительно
Для стенда этого достаточно. В продакшене добавляют ClientAliveInterval 300, ClientAliveCountMax 2 для keepalive и X11Forwarding no, если графика не нужна. Но на развертывание минимального baseline хватит четырёх параметров и пары команд.