Site icon 8HOST.COM

Тонкая настройка демона SSH на Linux VPS

SSH – это основной способ подключения к удаленным Linux- и Unix-подобным серверам с помощью командной строки. SSH обеспечивает безопасное соединение, которое позволяет запускать команды, взаимодействовать с системой и создавать туннели.

Большинство пользователей знают об основных принципах запуска и подключения к удаленному серверу. Обычно это делается с помощью такой команды:

ssh username@remote_server

Читайте также: Использование SSH для подключения к удаленному серверу на Ubuntu

Есть еще много вариантов настройки SSH-демона, которые могут повысить безопасность, улучшить управление пользовательскими подключениями и т. д. В данном руководстве рассматриваются опции тонкой настройки SSH.

Примечание: Руководство выполнено на сервере Ubuntu 12.04, но любой современный дистрибутив Linux должен работать аналогичным образом.

1: Конфигурационный файл SSHD

Основным конфигурационным файлом демона SSH является /etc/ssh/sshd_config.

Примечание: Не путайте этот файл с ssh_config, который определяет параметры клиентов.

Откройте файл в редакторе:

sudo nano /etc/ssh/sshd_config

Вы увидите файл с большим количеством опций и комментариев (в зависимости от вашего дистрибутива). Большинство дистрибутивов предлагают довольно хорошие значения по умолчанию, но при желании вы можете отладить параметры и сделать их ещё лучше.

Рассмотрим базовые опции в файле дистрибутива Ubuntu 12.04.

Порты и протоколы

Ключи

Логирование и ограничения

Отображение на экране

Подключения и среда

2: Другие опции SSHD

Есть много других опций, которые может использовать SSH-демон. Некоторые из них могут быть полезны в большинстве случаев, а другие можно использовать только в определенных обстоятельствах. Рассмотрим основные опции.

Фильтрация пользователей и групп

Некоторые параметры позволяют контролировать, какие пользователи будут иметь возможность входа через SSH. Эти опции следует рассматривать как взаимоисключающие. Например, параметр AllowUsers подразумевает, что всем остальным пользователям доступ запрещен.

Кроме того, существуют другие ограничительные параметры. Они могут использоваться в сочетании с любым из вышеперечисленных параметров.

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

Существует несколько параметров для настройки сетевого трафика, который будет прослушивать демон SSH:

Доступны также параметры для настройки аутентификации на основе сертификатов, параметры ограничения подключения (ClientAliveCountMax и ClientAliveInterval), а также опции, которые могут изолировать вошедшего в систему пользователя в предварительно сконфигурированной среде chroot (опция ChrootDirectory).

3: Ограничение входа

Вые были упомянуты некоторые из инструментов, которые могут ограничить доступ пользователей и групп к системе. Рассмотрим их подробнее.

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

AllowUsers demouser fakeuser madeupuser

Как видите, в каждой из этих директив можно указать несколько пользователей через пробел.

Мы также можем использовать подстановочные символы и инвертированные параметры. Например, чтобы разрешить доступ всем, кроме пользователя john, можно ввести:

AllowUsers * !john

Эта строка сделает то же самое:

DenyUsers john

Вместо символа ? может стоять любой символ. Например, строка:

AllowUsers ?im

разрешит доступ в систему пользователям tim, jim, vim и т.п.

В определении пользователей можно использовать формат user@hostname, чтобы ограничить вход пользователю, который привязан к конкретному хосту.

AllowUsers demouser@host1.com fakeuser

Эта опция заблокирует доступ всем пользователям с именем fakeuser и пользователю demouser, если он принадлежит хосту host1.

Также ограничить доступ по хосту вне файла sshd_config через TCP-упаковщики. Это настраивается с помощью файлов /etc/hosts.allow и /etc/hosts.deny.

Например, ограничить доступ можно на основе трафика SSH; для этого нужно добавить такие строки в файл hosts.allow:

sshd: .example.com

Предположим, что в файле hosts.deny есть строка, которая выглядит так:

sshd: ALL

Она разрешит вход в систему только тем пользователям, которые приходят с домена example.com или субдомена.

4: Опция match

Опция match определяет шаблон критериев, согласно которому будут применяться или не применяться остальные параметры.

Опция Match содержит пары «ключ-значение». Она может использовать ключи User, Group, Host, Address. Их можно отделить друг от друга пробелами. Сами шаблоны отделяются запятыми. Также тут можно использовать подстановочные символы и инвертированные параметры.

Match User !demouser,!fakeuser Group sshusers Host *.example.com

Шаблон сработает только тогда, когда пользователь – не demouser или fakeuser, входит в группу sshusers и привязан к example.com  или поддомену.

Ключ Address может обрабатывать CIDR.

Читайте также: Сетевые технологии: IP-адреса, подсети и бесклассовая адресация CIDR

Параметры, которые соответствуют шаблонам Match, применяются условно. Область действия этих условных опций – до конца файла или до совпадения со следующим шаблоном. Поэтому значения по умолчанию рекомендуется помещать в начало файла, а исключения в конце.

В связи с этим опции часто указывают, что они выполняются только в случае совпадения предыдущего шаблона. Например:

Match User !demouser,!fakeuser Group sshusers Host *.example.com
AuthorizedKeysFile /sshusers/keys/%u
PasswordAuthentication yes
X11Forwarding
X11DisplayOffset 15

Чтобы увидеть полный список параметров Match, посмотрите справочную страницу sshd_config:

man sshd_config

Найдите раздел Match.

Заключение

Как видите, доступ пользователей к системе и качество работы демона SSH во многом зависит от его настроек. Прежде чем применить изменения настроек, нужно тщательно их протестировать и заранее исправить все ошибки.

Файл /etc/ssh/sshd_config позволяет управлять доступом к серверу. Умение настраивать SSH – очень важный навык для всех пользователей Linux.