Новости МирТесен

voinkiber@bk.ru


Новости МирТесен

С умом к SSH

Поделиться:

Добрый день. Сегодня мы подробнее изучим реализацию SSH протокола в дистрибутиве Linux, а также научимся настраивать более безопасную работу SSH по сертификатам асимметричного шифрования. Статья будет продолжением знакомства с SSH.

Итак, мы установили OpenSSH, и в нашу ОС добавились некие файлы. Давайте рассмотрим их.

Открываем каталог(папку) /etc/ssh командой:

#cd /etc/ssh

Видим всего 10 файлов:

Рассмотрим их по порядку. Файл с названием moduli содержит множество простых чисел и генераторов, которые используются демоном (так называются фоновые процессы в Linux) sshd в методе обмена ключами.

ssh_config — конфигурационный файл или файл, в котором прописываются настройки работы клиентского SSH,

sshd_config — тоже конфигурационный файл, но он уже предназначенный для демона sshd, который прослушивает на сервере входящие подключения.

Далее видим 6 файлов начинающихся на «ssh_host_» — это 3 пары файлов с ключами асимметричного шифрования. По каждой отдельно:

ecdsa — алгоритм шифрования, в основе которого эллиптическая кривая (не будем вдаваться в подробности шифрования данным алгоритмом, но просто отметим, что на сегодняшний день это один из самых стойких (надежных) алгоритмов);

ed25519 — алгоритм EdDSA, который использует более быструю схему шифрования на основе той же эллиптической кривой.

rsa — исторически первый алгоритм асимметричного шифрования на основе больших целых чисел. В сравнении с вышеуказанными алгоритмами является менее стойким.

Крайний файл ssh_import_id используется для получения ключей аутентификации через платформу Launchpad.net по защищенному протоколу https (это может помочь обезопасить себя от атаки «Человек по середине»).

Рассмотрим конфигурационный файл ssh_config через текстовый редактор nano:

# nano /etc/ssh/ssh_config

И первое что видим — пояснительная часть, к сожалению, на басурманском языке, однако деваться некуда и всегда приходится переводить. Затем идут сами настройки клиентского подключения в виде ключевых слов и их аргументов (yes, no, адреса). Заметьте, что все они закомментированы # решеткой — ssh не считывает их при запуске т.к. эти настройки и так уже заложены по умолчанию в ssh. Для изменения настроек достаточно раскомментировать ключевое слово и поменять аргумент.

Теперь взглянем на sshd_config:

Структура файла аналогичная, но настройки уже для сервера. Познакомимся с некоторыми из них, настроив управление сервером через сертификаты.

Для справки. Сертификат в SSH схож по смыслу с сертификатом электронной подписи. И там и там применяется асимметричное шифрование. Сертификат содержит закрытый (приватный) ключ, шифруя которым данные, мы можем подтвердить, что владелец этих данных именно тот за кого он себя выдает. Открытый ключ используется как раз для проверки со стороны другого субъекта (в нашем случае сервера) владельца данных путем их расшифрования.

Итак. Сервер у нас будет на том же Backbox, а клиент будет на Kali Linux.

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

# cp /etc/ssh/sshd_config /etc/ssh/sshd_config_old

Теперь в sshd_config раскомментируем строку PermitRootLogin и вместо no ставим yes. Сохраянем CTRL+O и выходим CTRL+X.

На Kali (нашем клиенте) создаем папку для ключей:

# mkdir keys

Заходим в неё и генерируем ключи командой:

# ssh-keygen -t ed25519 -f id_ed25519

Нас попросят указать фразу-пароль (это может быть любое слово). И теперь в нашей папке keys появились два файла:

id_ed25519 — приватный ключ, мы его зарегистрируем на клиентской машине

id_ed25519.pub — публичный ключ, который должен быть зарегистрирован на сервере. Отправляем его на сервер командой:

# shh-copy-id -i id_ed25519.pub root@192.168.1.37

Ответим на подключение yes, введем пароль от рута на сервере и вуаля: ссэйтч пишет, что добавлен 1 ключ. Проверить добавленный на сервер ключ можно заглянув в ~/.ssh/authorized_keys (но сначала, конечно, нужно войти на сервер нашей давно проверенной командой # ssh root@192.168.1.37).

Теперь регистрируем приватный ключ у себя на клиенте:

# ssh-add ~/keys/id_ed25519

Сообщаем нашу фразу-пароль, придуманную при генерации и видим успех:

Далее пробуем подключиться… и вот он уже не просит нас пароль! Удобно не правда ли? И к удобству добавляется ещё и безопасность. Кстати, используемый нами алгоритм шифрования ed25519 является на данный момент лучшим из всех остальных (rsa, ecdsa).

Но это ещё не всё. Если мы подключимся с опцией -v (при подключении отображается больше информации) , мы заметим, что аутентификация по паролю ещё осталась, т.е. кроме нас могут по паролю подключиться ИНЫЕ, даже если у них нет приватного ключа.

Нам это, конечно же, не нужно. Поэтому заходим на сервер и в файле sshd_config раскомментируем строку PasswordAuthentication и ставим напротив значение no.

И перезагружаем ssh:

# service ssh restart

Пробуем снова подключение с -v:

Всё. Подключение по паролю теперь недоступно. Теперь мы с умом используем возможности SSH для управления сервером .

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

2 комментария для “С умом к SSH”

  1. Rafayel:

    Если честно мне пришлось прочитать дважды

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Новости МирТесен