Как Настроить и Защитить SSH-сервер (sshd) на Примерах
09:41, 25.05.2026
Secure Shell (SSH) является основой удаленного управления серверами. Его серверный компонент, sshd, предлагает широкие возможности настройки как для обычных пользователей, так и для корпоративных администраторов. В этом руководстве описано, как настроить и защитить sshd, а также приведены практические примеры, которые помогут вам понять и применить лучшие практики.
Как взаимодействуют файлы конфигурации
Основным файлом конфигурации для демона SSH является /etc/ssh/sshd_config. Этот файл определяет, как сервер ведет себя при приеме SSH-соединений.
В отличие от этого, настройки клиента хранятся в файле /etc/ssh/ssh_config или в пользовательском файле ~/.ssh/config. Однако именно в sshd_config администраторы контролируют методы аутентификации, правила доступа и поведение сеансов.
Когда демон SSH запускается или перезагружается, он считывает sshd_config сверху вниз. Если директива повторяется, обычно действует последнее действительное вхождение. После внесения изменений выполните:
sudo systemctl restart sshd
Или на некоторых системах:
sudo service ssh restart
Чтобы проверить конфигурацию перед перезапуском:
sshd -t
Типовые настройки для личного использования SSH
Если вы управляете личным VPS или домашней лабораторией, вы можете повысить безопасность и удобство с помощью нескольких простых настроек:
Порт 2222
PermitRootLogin no
PasswordAuthentication no
AllowUsers alice
Эти настройки изменяют стандартный порт SSH, отключают вход пользователя root, требуют аутентификации с помощью ключей и ограничивают доступ к определенным пользователям. Всегда создавайте резервную копию исходного файла перед внесением изменений.
Общие настройки SSH для организаций
В корпоративных средах конфигурация SSH должна обеспечивать баланс между удобством использования, соответствием требованиям и безопасностью. Ниже приведены основные настройки, которые организации часто изменяют в sshd_config.
Настройка политики шифрования
Установите надежные современные алгоритмы шифрования для защиты данных при передаче. Используйте директивы Ciphers, MACs и KexAlgorithms :
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com
KexAlgorithms curve25519-sha256,ecdh-sha2-nistp521
Эти настройки удаляют устаревшие алгоритмы и обеспечивают соблюдение лучших практик в области криптографии.
Включение подробного журнала
Для целей аудита и отладки увеличьте уровень детализации журнала:
LogLevel VERBOSE
Это предоставляет более подробную информацию об активности пользователей и попытках аутентификации, что полезно для мониторинга безопасности.
Настройка пути для AuthorizedKeysFile
Чтобы централизовать или настроить место, откуда считываются открытые ключи:
AuthorizedKeysFile /etc/ssh/authorized_keys/%u
В этом примере открытый ключ каждого пользователя хранится в общем каталоге, заменяя %u на имя пользователя.
Контроль доступа root
Вход root должен строго контролироваться или быть полностью отключен:
PermitRootLogin prohibit-password
Это позволяет вход root только через аутентификацию на основе ключей. Чтобы полностью отключить доступ root:
PermitRootLogin no
Отображение баннера входа
Чтобы соответствовать стандартам соответствия или отображать юридическое предупреждение, настройте баннер входа:
Banner /etc/issue.net
Заполните /etc/issue.net желаемым сообщением, например:
Несанкционированный доступ к этой системе запрещен.
Вся активность отслеживается и регистрируется.
Управление настройками переадресации портов
Ограничьте или включите переадресацию портов в зависимости от внутренней политики:
AllowTcpForwarding no
PermitTunnel no
X11Forwarding no
Для пользователей, которым требуется безопасное туннелирование, эти параметры можно выборочно включить.
Использование аутентификации на основе сертификатов
Для сред, управляющих большим количеством пользователей, сертификаты SSH обеспечивают масштабируемый контроль доступа. Создайте ключ CA и подпишите открытые ключи пользователей:
ssh-keygen -s ca_key -I user_id user_key.pub
В файле sshd_config укажите доверенный CA:
TrustedUserCAKeys /etc/ssh/ca.pub
Это позволяет аутентифицировать любой ключ, подписанный указанным CA, что упрощает управление пользователями.
Объяснение синтаксиса и структуры sshd_config
Синтаксис sshd_config прост: одна директива на строку, за которой следуют её значения. Комментарии начинаются с #.
# Это комментарий
Порт 22
PermitRootLogin no
Директивы нечувствительны к регистру, но для удобства чтения следует придерживаться общепринятого форматирования. Распространенные ошибки:
- Пробелы в конце строки
- Неправильные значения параметров
- Повторение противоречивых директив
Чтобы применить изменения:
sudo systemctl reload sshd
Или воспользуйтесь sshd -t перед перезапуском, чтобы убедиться в правильности синтаксиса.