Настройка сервера OpenSSH #
Васильев Андрей Михайлович, 2024
Версии презентации
Технология SSH #
SSH (Secure Shell, «безопасная оболочка») — это протокол удалённого управления компьютера с ОС семейства Linux
- SSH поддерживает множество актуальных алгоритмов шифрования
- SSH-клиенты и SSH-серверы доступны для большинства сетевых ОС
- SSH позволяет безопасно передавать в незащищённой среде практически любой другой сетевой протокол
- SSH может использовать сжатие передаваемых данных перед отправкой
Установка SSH-сервера #
Существует несколько реализаций SSH-сервера, рассмотрим наиболее популярное и проверенное решение — сервер OpenSSH
В операционных системах Альт данный сервер поставляется в пакете
openssh-server
После установки данного пакета службу сервера неолбходимо запустить:
systemctl enable --now sshdОбратите внимание, что служба называется не также как и пакет
Подключение к SSH-серверу #
Клиентские приложения поставляются в пакете openssh-clients
Для выполнения подключения к удалённому серверу с целью получения интерактивного
доступа следует воспользоваться приложением ssh
В самой простейшей форме подключение будет выглядеть следующим образом:
ssh hostгде host — это IP-адрес или доменное имя сервера, к которому выполняется
подключение
По умолчанию предполагается, что имя пользователя на удалённом сервере совпадает с именем текущего пользователя
Для явного указания удалённого имени используйте форму
ssh user@hostВозможности клиента #
Приложение ssh поддерживает множество разных функций, которые доступны через множество аргументов, рассмотрим некоторые из них
ssh [-p port] destination [command [argument ...]]Указание порта сервера #
По умолчанию сервер ожидает подключения по порту 22, но в некоторых ситуациях он может быть запущен (или доступен) по другому порту
ssh -p 2022 user@localhostИнтерактивный запуск команд #
Если не указать команду для запуска на удалённом сервере, то на сервере будет запущен, если доступен, интерактивный интерпретатор команд
Когда он завершит свою работу (по вводу команды exit, например), будет
завершено и ssh-соединение
Аутентификация пользователей #
OpenSSH-сервер поддерживает множество вариантов по выполнению аутентификации:
- Аутентификация с помощью Kerberos
- Аутентификация по ключу хоста, расположенном на клиенте
- Аутентификация по нескольким текстовым факторам
- Аутентификация по паролю
- Аутентификация по ключу пользователя
Рассмотрим наиболее часто применяемые: по паролю и по ключу пользователя
Аутентификация по паролю #
- Пароль надо вводить при каждом подключении
- Проверка пароля делигирована стандартной подсистеме аутентификации, Pluggable Authentication Modules
- Возможности пользователя могут отличаться от тех, что доступны при локальном входе
Аутентификация по ключу #
- Обычно используются ключи по умолчанию, расположенные в каталоге
~/.ssh - Пользователь при подключении может указать путь к любому ключу
- Ключ может быть защищён паролём, при его считывании будет запрошен пароль у пользователя
Создание ssh-ключей #
В протоколе SSH используется ассиметричное шифрование, для которого применяется пара из:
- Публичного ключа, с помощью которого можно расшифровать данные
- Приватного ключа, с помощью которого можно зашифровать данные (или наоборот)
Для создания ключей использутеся приложение ssh-keygen:
ssh-keygen -t ed25519Далее будут заданы вопросы о местоположении и пароля
- По умолчанию пара ключей создаются в каталоге
~/.ssh - Пароль не является необходимостью, но его использование повышает безопасность
В результате работы команды будут созданы файлы:
id_ed25519— секретный ключ, который нельзя никому передаватьid_ed25519.pub— публичный ключ, который передаётся на сервер
Передача ключа на сервер #
На сервере необходимо установить публичную часть ключа, чтобы выполнить аутентификацию пользователя
Это делается путём копирования содержимого публичного ключа в список
авторизованных ключей. Обычно этот файл находится по пути
~/.ssh/authorized_keys
Файл можно передать путём копирования файла, использования текстового редактора
и буфера обмена или с помощю приложения ssh-copy-id:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@192.168.122.9Необходимо будет пройти настроенную аутентификацию (по паролю или другому ключу)
SSH-Агент #
Ключи, защищённые паролём, безопаснее беспарольных альтернатив, но требуют постоянного ввода пароля
Ключи можно загрузить в специальную службу ssh-agent, введя пароль от ключа, чтобы затем ssh-клиент считывал их из службы, а не с файловой системы
Для загрузки ключа в агент используется приложение ssh-add:
ssh-add [file ...]- Можно передать список приватных файлов, которые необходимо открыть
- Если не передать список, то в агент будут добавлены все ключи из
~/.ssh
Конфигурационный файл пользователя #
Если необходимо выполнять подключения к разным системам с разнородными параметрами, то их удобно единожды зафиксировать в конфигурационном файле
Рассмотрим пример файла ~/.ssh/config:
Host playground
HostName 127.0.0.1
Port 2022
User user
IdentityFile ~/.ssh/playground-keyТогда для подключения к данному серверу достаточно будет выполнить:
ssh playgroundВместо:
ssh -i ~/.ssh/playground-key -p 2022 user@127.0.0.1Настройка сервера OpenSSH #
Конфигурация сервера OpenSSH в ОС семейства Альт находится по пути
/etc/openssh/sshd_config, а его описание находится в 5-м разделе руководства
Процесс редактирования сервера sshd надо выполнять аккуратно, т.к. некорректная конфигурация потребует наличия альтернативного способа подключения к серверу, что зачастую затруднено или дорого
Процесс редактирования:
- Сделайте резервную копию файла конфигурации
- Отредактируйте текущий файл конфигурации
- Проверьте техническую корректность файла
sshd -t - Проверьте логическую корректность файла
- С помощью
systemctl reload sshdперезагрузите конфигурационный файл
Ряд параметров сервера #
PermitRootLogin noЗапрещает аутентификацию пользователя root, рекомендуемая настройка
AllowUsers studentРазрешает доступ только пользователю student, все другие пользователи не смогут подключиться.
AllowGroups wheel sshРазрешает доступ только пользователей, входящих в одну из групп wheel или
ssh
Использование инструмента control #
Альт предоставляет инструмент control с помощью которого можно выполнять
настройку политик безопасности: разрешать или запрещать выполнять различные
операции
Данный инструмент позволяет настраивать следующие политики:
sshd-password-auth— разрешить или запретить аутентификацию по паролюsshd-allow-groups— включить список групп, которым разрешён доступ
Например для отключения аутентификации по паролю:
- Нужно настроить политику:
control sshd-password-auth disabled - Перезагрузить службу:
systemctl restart sshd