SSH с поддержкой российских криптоалгоритмов
(ПК «FoxSSH» / ПК «FoxPutty»)
SSH (англ. Secure Shell — «безопасная оболочка») — сетевой протокол прикладного уровня, позволяющий получить безопасный доступ к удаленному компьютеру. Безопасный доступ к удаленному компьютеру может быть необходим для различных целей:
- разработчикам необходим доступ к хранилищу проектов (SVN);
- системному администратору для настройки компьютеров сотрудников;
- сетевому администратору для настройки узлов сети;
- администратору сайтов/порталов как для управления, так и для размещения информации;
- и т.д.
Безопасный доступ при использовании SSH-2 достигается двумя составляющими:
- защитой от несанкционированного доступа (НСД);
- защитой трафика путем его шифрования.
Защита от несанкционированного доступа путем аутентификации клиента на сервере с использованием механизмов электронной подписи.
Общий принцип для аутентификации на основе электронной, в протоколе SSH-2, таков:
С помощью программы ssh-keygen, должна быть сгенерирована пара ключей, публичный ключ ( public key ) и секретный ключ ( private key )
Клиент, отправляет SSH серверу свой публичный ключ и запрашивает аутентификацию по данному ключу.
Сервер проверяет файл ~/.ssh/authorized_keys, если такой ключ найден, SSH сервер отправляет клиенту сообщение, подписанное найденным публичным ключом пользователя.
Клиент должен проверить подпись с помощью своего приватного ключа. Если приватный ключ защищен паролем, программа ssh, попросит пользователя ввести пароль, чтобы сначала получить доступ к самому ключу.
Если подпись сообщения проверена успешно, правильность публичного и приватного, ключей, считается подтвержденной и пользователю предоставляется доступ в систему.
Вычисление и проверку электронной подписи (ЭП) FoxSSH-2 выполняется в соответствии с ГОСТ Р 34.10-2001 и ГОСТ Р 34.10-2012 с длиной публичного ключа как 512 бит, так и 1024 бита.
Для создания и управления ключами, предназначена программа ssh-keygen, так-же входящая в пакет программного обеспечения FoxSSH-2:
#ssh-keygen –t <тип ключа>
Опция <тип ключа> может принимать следующие значения:
- GOSTR3410-2001 – генерация ключевой пары в соответствии с ГОСТ Р 34.10-2001
- GOSTR3410-2012-256 – генерация ключевой пары в соответствии с ГОСТ Р 34.10-2012 и длиной публичного ключа 512 бит;
- GOSTR3410-2012-512 – генерация ключевой пары в соответствии с ГОСТ Р 34.10-2012 и длиной публичного ключа 1024 бит.
В процессе генерации создается файл с секретным и файл с публичным ключом:
Секретный ключ, всегда остается у клиента и никому никогда не передается.
Публичный ключ копируется на удаленный SSH сервер и добавляется в специальный файл, известный SSH серверу. По-умолчанию, для хранения публичных ключей, используется файл ~/.ssh/authorized_keys. Файл для хранения ключей назначается в файле конфигурации SSH сервера директивой AuthorizedKeysFile.
Ключи для сервера FoxSSH-2 генерятся аналогичным образом.
После того как ключи сгенерированы, публичный ключ пользователя добавлен на стороне сервере в файл authorized_keys можно начинать пользоваться FoxSSH-2. Для этого сначала на стороне сервера следует запустить (если он не был запущен) сервер foxsshd:
#/usr/bin/foxsshd –f /usr/local/etc/foxssh/foxsshd_config
После этого можно запускать клиента foxssh:
#./foxssh a513@192.168.0.196 -p 2022 -c gost-cfb -m hmac-gosthash3411-2012-256
Опция –с задает с помощью какого механизма будет шифроваться трафик. FoxSSH поддерживает шифрование трафика в соответствии с ГОСТ-28147-94 в режимах CFB и ECB. В качестве криптоядра в FoxSSH используется СКЗИ «ЛИРССЛ». Для того, чтобы узнать, с помощью каких механизмов можно шифровать трафик, достаточно выполнить команду:
bash-4.3$ ./foxssh -Q cipher
3des-cbc
blowfish-cbc
cast128-cbc
…
gost-cfb
gost-ecb
bash-4.3$
Опция –m определяет механизм контроля целостности трафика. FoxSSH поддерживает следующие механизмы контроля целостности:
hmac-gosthash3411-94;<\b><\p><\li>
hmac-gosthash3411-2012-256;<\b><\p><\li>
hmac-gosthash3411-2012-256.<\b><\p><\li>
Получить список поддерживаемых механизмов контроля целостности можно выполнив команду:
bash-4.3$ ./foxssh -Q mac
hmac-sha1
...
hmac-sha1-96-etm@openssh.com
...
hmac-gosthash3411-94
hmac-gosthash3411-2012-256
hmac-gosthash3411-2012-512
bash-4.3$
Помимо клиента FoxSSH-2 получить доступ по протоколу SSH-2 с российской криптографией можно также, воспользовавшись клиентом FoxPuTTY-2.
В этом случае генерация пользовательской ключевой пары выполняется утилитой foxputtygen:
Генерация ключевой пары пользователя с сохранением ее в файле PUTTY_GOST2001 выполняется командой:
bash-4.3$ ./foxputtygen -t gost3410-2001 -o PUTTY_GOST2001
Enter passphrase to save key:
Re-enter passphrase to verify:
bash-4.3$
После генерации ключевой пары необходимо получить публичный ключ в формате openssh-2 :
bash-4.3$ ./foxputtygen PUTTY_GOST2001 -O public-openssh -o PUTTY_GOST2001.pub
bash-4.3$ cat PUTTY_GOST2001.pub
ssh-gost3410-2001
AAAAEXNzaC1nb3N0MzQxMC0yMDAxAAAAByqFAwICHgEAAAAHKoUDAgIkAAAAAEAwN0TpyNrx+I3
NOW7tVKK1i+S9Eblssdfjw4jyxQ2b24QpI4dXMHM5bfq3YBG5iRJc5g6b5jcEFiGzHfCMjKVM gost3410-
key-20150728
bash-4.3$
Полученный публичный ключ как и в случае с клиентом foxssh необходимо добавить на стороне сервера foxssh в файл authorized_keys.
Теперь можно запускать клиента foxputty:
Нажмите кнопку "Open" и вы на удаленном компьютере: