УДК 004.77
Технические науки
Мешкова Елена Владимировна, студентка, 5 курс электротехнического факультета, Пермский национальный исследовательский политехнический университет
e-mail: lenchik447@yandex.ru Митрошина Екатерина Валерьевна, студентка, 5 курс электротехнического факультета Пермский национальный исследовательский политехнический университет
e-mail: mitroshina.katya@inbox.ru
ОБЕСПЕЧЕНИЕ БЕЗОПАСНОСТИ ПРОТОКОЛА SSH: ШИФРОВАНИЕ, АУТЕНТИФИКАЦИЯ СЕРВЕРА, АУТЕНТИФИКАЦИЯ КЛИЕНТА
Аннотация: В статье рассматривается обеспечение безопасности протокола SSH путем шифрования передаваемых данных по каналам связи, аутентификации сервера и аутентификации клиента.
Ключевые слова: шифрование данных, аутентификация, сервер, клиент, секретный ключ, открытый ключ.
Abstract: The article describes the security of the SSH Protocol by encrypting the data transmitted via the communication channels, server authentication and client authentication.
Keywords: data encryption, authentication, server, client, private key, public key.
SSH (от англ. secure shell - безопасная оболочка) - это набор программ, позволяющие регистрироваться на компьютере по сети, удаленно выполнять на нем команды, а также копировать и перемещать файлы между компьютерами.
Для того, чтобы повысить безопасность протокола SSH необходимо свести к минимуму риск использования соединения протокола поверх небезопасных
каналов связи с помощью следующих решений: шифрование данных, аутентификация сервера и аутентификация клиента.
Шифрование передаваемых данных производится путем симметричного шифрования, в котором для шифрования и расшифровывания применяется один и тот же криптографический ключ. Для шифрования используются такие симметричные алгоритмы, как AES, Blowfish или 3DES.
Целостность передачи данных проверяется с помощью CRC32 (алгоритм нахождения контрольной суммы, основанном на определённых математических свойствах циклического кода) или HMAC-SHA1/HMAC-MD5 (механизм проверки целостности информации.
Аутентификация сервера SSH выполняется при помощи инфраструктуры открытых ключей. Клиент получает открытый ключ сервера при первом соединении с ним по открытому каналу связи, с помощью которого шифрует данные и передает их серверу в зашифрованном виде. Серверу, в свою очередь, необходимо расшифровать полученные данные при помощи закрытого ключа известного только ему и отправить данные в расшифрованном виде обратно клиенту. Клиент, после получения данных от сервера, может быть уверен в том, является ли хост тем, за кого себя выдает.
Аутентификация сервера не произойдет в том случае, если нарушитель перехватит открытый ключ, подменит записи на сервере DNS или перенаправит полученные IP-пакеты на свой хост, так как хосту нарушителя неизвестны необходимые секретные ключи для расшифровки данных.
Аутентификация клиента SSH выполняется с помощью одного из следующих методов:
1. Парольная аутентификация. Для проверки подлинности пользователя используется его логин и пароль. Клиент SSH передает логин пользователя серверу по защищенному соединению, на что сервер посылает обратно запрос пароля. Пользователю необходимо ввести пароль, который отправляется обратно на сервер по установленному ранее защищенному каналу. Сервер сравнивает
присланный пароль с имеющимся у него в базе пользователей, и при совпадении предоставляет пользователю регламентированный доступ.
2. Аутентификация с помощью открытых ключей. Пользователь создает пару ключей - секретный и публичный, и устанавливает открытый ключ в файле $HOME/.ssh/authorized_keys на целевом сервере [1]. Клиент SSH предает серверу имя пользователя и открытый пароль по защищенному соединению. Сервер проверяет, имеется ли в файле $HOME/.ssh/authorized_keys заявленного пользователя публичный ключ тождественный присланному. Если такой ключ есть, сервер возвращает клиенту положительный ответ, на который клиент SSH предлагает пользователю ввести пароль секретного ключа. При верном вводе секретного ключа клиент SSH отсылает серверу зашифрованное при помощи этого ключа специальное сообщение (сам секретный ключ не передается серверу и поэтому не может быть перехвачен), которое необходимо расшифровать серверу с помощью выбранного ранее открытого ключа. Если же расшифровка проходит удачно, то предоставляет регламентированный доступ.
3. Kerberos-аутентификация. Клиент SSH передает серверу, полученные от пользователя логин в открытом виде, имя домена, а также зашифрованное при помощи пароля пользователя текущее время на рабочей станции пользователя, которое является аутентификатором. Сервер проверяет логин пользователя и выявляет мастер ключ пользователя, который основан на пароле пользователя и расшифровывает время отправки запроса. Разница во времени отправки запроса и текущего времени на контроллере домена не должно превышать определенного значения, установленного политикой протокола Kerberos (значение по умолчанию равно пяти минутам) [2]. Затем создается ключ сессии, посредством которого будет обеспечиваться зашифрование данных при обмене между клиентом и сервером, и билет на получение билета Ticket-Granting Ticket (TGT), который включает вторую копию ключа сессии, имя пользователя, время окончания жизни билета, а также зашифровывается аутентификатор пользователя и ключ сессии с помощью ключа клиента. После этого эти данные отправляются клиенту.
Производя шифрование данных, аутентификацию сервера и аутентификацию клиента протокол SSH обеспечивает безопасность соединения, защищая от:
1. подмены IP-адресов, при которой посылаются пакеты удаленным хостом от имени другого хоста;
2. подмены DNS-записей, при которой соединение устанавливается с хостом нарушителя при помощи изменения записи на сервере DNS;
3. перехвата открытых ключей и различных данных, которые передаются по открытому каналу связи;
4. манипуляций над перехваченными данными [3].
Подводя итоги, можно сделать вывод, что протокол SSH был разработан для максимальной защиты сетевых взаимодействий с удаленными узлами сети. При использовании протокола SSH создается безопасная оболочка для любого небезопасного протокола, при помощи улучшенных возможностей аутентификации и шифрования передаваемых данных.
Библиографический список:
1. SSH аутентификация при помощи открытого ключа [Электронный ресурс] // DiPHOST. URL: http://wiki.diphost.ru/SSH-AUTH-KEYS (дата обращения: 13.11.2016)
2. Принципы аутентификации по протоколу Kerberos [Электронный ресурс] // ITBand. URL: http://itband.ru/2010/12/kerberos1/ (дата обращения: 13.11.2016)
3. Использование протоколов telnet, ssh [Электронный ресурс] // TOMAS. URL: http://tomas02.narod.ru/t/t10.html (дата обращения: 13.11.2016)