Настройка сетевых служб. OpenSSH
SSH - Secure SHell, т.е. безопасное соединение между компьютерами, в рамках которого пользователи могут отправлять команды на удалённый компьютер и получать ответы.
Всё взаимодействие происходит по зашифрованному каналу, т.е. злоумышленники не могут разобрать эти данные после перехвата.
Существует множество реализаций серверов и клиентов для данного протокола. Под GNU/Linux наиболее распространена реализация OpenSSH. Под Windows распространённым клиентом является PuTTY.
По умолчанию сервер работает на порту 22.
Конфигурационный файл сервера находится `/etc/ssh/sshd
Аутентификация по ключу
Ввиду того, что пароль является слабой защитой, рекомендуется для серверов, смотрящих в интернет, использовать аутентификацию по ключу. Для её работы необходимо
- Создать свой собственный уникальный ключ.
- Зарегистрировать ключ на сервере.
- Отключить авторизацию по паролю.
Плюсы авторизации по ключу:
- Очень стойкая к перебору. Длина ключа - 2048 бит, а длина среднестатистического пароля - 8 символов, что может дотянуть до 30 бит.
- При авторизации по ключу вы можете не вводить пароль.
- Ключ можно переносить с собой с компьютера на компьютер, упрощая жизнь по настройке каждой машины.
Как сделать это?
Создание ключа
ssh-keygen позволяет создать пару ключей: приватную и публичную часть. Публичная чать позволяет проверить приватную часть. Т.е. SSH использует асиметричное шифрование.
id_rsa - приватный ключ id_rsa.pub - публичный ключ
Регистрирация ключа
“Регистрация” ключа происходит для каждой учётной записи на сервере. Для её выполнения необходимо публичую часть ключа поместить в AuthorizedKeysFile. По умолчанию это ~/.ssh/authorized_keys
.
- Можно физически скопировать файл (буфер обмена, scp, sftp, wget….)
- А можно воспользоваться специализированной утилиой, ssh-copy-id.
Отключение пароля
- Исправить настройки SSH-сервера,
PasswordAuthentication no
. - Перезапустить SSH-сервер, systemctl restart openssh-server
Игра
- Скопировать приватный ключ с компьютера 12 из-под учётной записи student, файл ~/.ssh/id_rsa на локальный компьютер ~/12-private-key
- Используя этот ключ, подключиться к 24 серверу, ssh -i ~/12-private-key user@….
Закрытый сервер
Настройте СВОЙ playground таким образом, чтобы к нему мог подключиться только лишь пользователь user с использованием ключа, который защищён паролём.
- Создать ключ (новый), который защищён паролём. KeyPassword
- Скопировать ключ к себе в playground и поместить его в authorized_kes
- Удостовериться, что аутентификация по ключу проходит
- Перенастроить сервер, чтобы он принимал только подключения по ключу.
А если я не хочу вводить пароль от ключа?
Для решения этой задачи есть ssh agent. Он позволяет хранить в себе ключи уже расшифрованные, чтобы пользователь не указывал пароль к ключам каждый раз, когда это необходимо. Т.е. его задача - временное хранение для облегчения жизни пользователя. Хорошоей аналогией будет временное разрешение на использование sudo
в течение 5 минут.
Для добавления ключа в ssh agent необходимо выполнить команду ssh-add ПУТЬ К КЛЮЧУ.