Доступ по OpenSSH

Общие сведения об OpenSSH

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

В большинстве дистрибутивов OpenSSH-сервер уже присутствует в ОС, и его установка не требуется. В случае отсутствия OpenSSH следующая команда выполнит установку необходимых пакетов:

sudo dnf openssh

Далее следует добавить SSH-сервер в автозагрузку. При следующем запуске сервера ОС выполнит автоматический запуск SSH-сервера. Как и в случае с другими сервисами, systemd позволяет управлять параметрами запуска, автозагрузки и рестарта демона OpenSSH. Автозапуск включается командой:

sudo systemctl enable ssh

Работоспособность утилиты проверяется командой:

ssh localhost

Настройка SSH

Настройка SSH необходима для улучшения защищенности Системы. Например, можно отключить возможность входа от имени пользователя root или изменить порт подключения со стандартного 22 на произвольный. Лучше использовать порты из верхнего диапазона (50000-65000).

Примечание – В стеке протоколов TCP/IP доступно 65536 портов.

Настройка выполняется в конфигурационном файле. Перед его модификацией создают резервную копию.

sudo cp /etc/ssh/sshd_config
/etc/ssh/sshd_config.factory-defaults

Все изменения конфигурации SSH проводятся в файле /etc/ssh/sshd_config. Для его редактирования нужно выполнить команду:

sudo nano /etc/ssh/sshd_config

В файле нужно раскомментировать строку "Port 22" и изменить значение на 55555 (рисунок 38).

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

Рисунок 38 – Изменение стандартного порта подключения

Далее нужно отключить возможность входа на сервер учетной записи суперпользователя (root) и добавить возможность входа через ключи. Для этого необходимо изменить значения параметров PermitRootLogin на no и PubkeyAuthentication на yes (рисунок 39).

Рисунок 39 – Изменение параметров PermitRootLogin и PubkeyAuthentication

После этого следует перезагрузить демон SSH. Соединение при этом будет разорвано и подключиться можно будет через новый порт и пользовательскую учетную запись (она должны быть предварительно создана):

sudo systemctl restart ssh

Далее нужно переподключиться от обычной учетной записи и по другому порту:

ssh -p 55555 ansible@192.168.0.104

После успешного подключения можно продолжать работу с сервером.

Пары ключей

Еще один способ аутентификации на сервере – пара ключей RSA: открытый и закрытый. Открытый хранится на сервере, к которому будет выполняться подключение, а закрытый – на удаленном компьютере (или другом сервере), с которого выполняется подключение.

Далее (рисунок 40) в качестве примера приведена схема безопасного обмена ключами между "Отправителем" и "Получателем". "Злоумышленник" может читать сообщения, если они не зашифрованы. Здесь "Отправитель" или "Получатель" шифруют сообщение при помощи открытого ключа принимающей стороны, которая его дешифрует при помощи своего закрытого ключа.

Рисунок 40 – Безопасный обмен ключами

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

ssh-keygen -t rsa

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

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

ssh-copy-id -i ~/.ssh/id_rsa.pub rosa@192.168.0.104

В этом примере 192.168.0.104 – это IP-адрес удаленного сервера. После ввода пароля ключ копируется в папку .ssh домашней директории пользователя.

Сразу же после выполнения копирования следует проверить доступ при помощи созданной пары ключей:

ssh rosa@192.168.0.104

Для отключения возможности входа по паролю необходимо в файле /etc/ssh/sshd_config отредактировать значение PasswordAuthentication и присвоить no (рисунок 41).

Рисунок 41 – Редактирование параметра PasswordAuthentication

После изменения настроек нужно перезагрузить службу SSH:

sudo systemctl restart ssh

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

При этом подключение при помощи ключа будет успешным.

Отключение доступа по паролю значительно повышает безопасность сервера.