Перейти к содержимому

sshd_config: минимум для стенда

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

Зачем менять умолчания

Дистрибутивные sshd идут с permissive-настройками: root-вход по паролю, без ограничений пользователей, три попытки авторизации. На стенде это терпимо, пока не появится в логах:

Failed password for root from 1.2.3.4 port 42341 ssh2
Failed password for root from 1.2.3.4 port 42342 ssh2
Failed password for root from 1.2.3.4 port 42343 ssh2

Локальная сеть не означает доверенную. Конфигурация по умолчанию — это риск и шум в мониторинге.

Проверка текущих значений

Перед правкой смотрим, что уже установлено:

sshd -T | grep -E '^(permitrootlogin|passwordauthentication|maxauthtries|allowusers)'

Вывод покажет реальные значения, с которыми sshd стартует, включая параметры из Match-блоков.

Четыре параметра для стенда

ПараметрЗначениеЗачем
PermitRootLoginnoRoot не должен входить напрямую
AllowUsersdevops adminБелый список, остальные отклоняются
PasswordAuthenticationnoТолько ключи, пароли отключены
MaxAuthTries3Блокировка после трёх ошибок
Предупреждение

Изменения применяются после systemctl reload sshd. Вносите правки через ssh -t user@host "sudo nano /etc/ssh/sshd_config", чтобы не потерять сессию при ошибке.

PermitRootLogin

Прямой вход под root — первое, что брутят. Отключаем:

sudo sed -i 's/^PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config

Если нужен root-доступ — заходите под обычным пользователем и поднимайтесь через sudo. Это логирует ваши действия в auth.log.

AllowUsers

Белый список отсекает всех, кого не добавили явно. Если пользователь не в списке, sshd отдаёт Permission denied до запроса пароля.

echo "AllowUsers devops admin monitoring" | sudo tee -a /etc/ssh/sshd_config
Примечание

Указывайте пользователей через пробел. Для групп используйте AllowGroups. Оба параметра поддерживают шаблоны: AllowUsers devops@10.0.0.* ограничит вход по сети.

PasswordAuthentication

Ключи не брутфорсятся в принципе. Переключаем:

sudo sed -i 's/^PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config

Перед отключением убедитесь, что ваш публичный ключ в ~/.ssh/authorized_keys на стенде есть. Иначе закроете себе вход.

MaxAuthTries

Защита от брутфорса. После трёх неудачных попыток соединение рвётся:

MaxAuthTries 3

Значение меньше единицы отключает ограничение. Ставьте 3–5 в зависимости от надёжности вашей сети.

Проверка конфигурации

После правки всегда проверяйте синтаксис:

sudo sshd -t

Пустой вывод означает, что sshd запустится с новыми параметрами. Любая ошибка выводится на экран.

Затем применяйте:

sudo systemctl reload sshd

Типичные ошибки

Правка не того файла. В некоторых дистрибутивах sshd_config лежит в /etc/ssh/sshd_config.d/. Подключаемые файлы читаются в алфавитном порядке. Дефолтный /etc/ssh/sshd_config может перезаписываться при обновлении пакета — лучше класть кастомные параметры в .conf-файл с осмысленным именем.

Пробелы после параметра. Синтаксис требует пробела между ключом и значением:

# Неправильно
PermitRootLogin= no

# Правильно
PermitRootLogin no

Комментарии вместо параметров. Строка #PasswordAuthentication no — это комментарий, sshd её игнорирует. Убирайте # или добавляйте новую строку.

Match-блок перекрывает глобальные настройки. Если в конце файла есть Match User root, он может вернуть PermitRootLogin yes для конкретного пользователя. Проверяйте вывод sshd -T.

Дополнительно

Для стенда этого достаточно. В продакшене добавляют ClientAliveInterval 300, ClientAliveCountMax 2 для keepalive и X11Forwarding no, если графика не нужна. Но на развертывание минимального baseline хватит четырёх параметров и пары команд.