JSch Отключить определенные шифры без изменения кода - PullRequest
0 голосов
/ 20 ноября 2018

Я работаю с рядом финансовых учреждений, и одно из них попросило отключить некоторые из наших шифров, используемых для подключения к ним.В частности, они просили удалить hmac-md5 и aes128-ctr и рекомендовали удалить aes128-cbc из-за их меньшей безопасности.

Есть ли способ, с помощью переключателей командной строки или файла безопасности Java, легко удалить эти шифры?

Глядя на некоторые из примеров, похоже, что мне пришлось бы составить список тех, которые мне нужны, без вышеперечисленных трех (плохой пример скопирован из примера AES):

session.setConfig("cipher.s2c", "aes128-cbc,3des-cbc,blowfish-cbc");
session.setConfig("cipher.c2s", "aes128-cbc,3des-cbc,blowfish-cbc");
session.setConfig("CheckCiphers", "aes128-cbc");

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

Фрагмент из журнала отладки:

INFO: Remote version string: SSH-2.0-WS_FTP-SSH_8.5.0
INFO: Local version string: SSH-2.0-JSCH-0.1.54
INFO: CheckCiphers: aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,3des-ctr,arcfour,arcfour128,arcfour256
INFO: CheckKexes: diffie-hellman-group14-sha1,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521
INFO: CheckSignatures: ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
INFO: SSH_MSG_KEXINIT sent
INFO: SSH_MSG_KEXINIT received
INFO: kex: server: diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group14-sha256,diffie-hellman-group-exchange-sha256
INFO: kex: server: ssh-dss,ssh-rsa
INFO: kex: server: aes256-ctr,aes192-ctr,aes128-ctr,3des-cbc,blowfish-cbc,aes256-cbc,aes128-cbc
INFO: kex: server: aes256-ctr,aes192-ctr,aes128-ctr,3des-cbc,blowfish-cbc,aes256-cbc,aes128-cbc
INFO: kex: server: hmac-sha1,hmac-md5,hmac-sha2-256,hmac-sha2-384,hmac-sha2-512
INFO: kex: server: hmac-sha1,hmac-md5,hmac-sha2-256,hmac-sha2-384,hmac-sha2-512
INFO: kex: server: none
INFO: kex: server: none
INFO: kex: server:
INFO: kex: server:
INFO: kex: client: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
INFO: kex: client: ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
INFO: kex: client: aes128-ctr,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbc,aes192-ctr,aes192-cbc,aes256-ctr,aes256-cbc
INFO: kex: client: aes128-ctr,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbc,aes192-ctr,aes192-cbc,aes256-ctr,aes256-cbc
INFO: kex: client: hmac-md5,hmac-sha1,hmac-sha2-256,hmac-sha1-96,hmac-md5-96
INFO: kex: client: hmac-md5,hmac-sha1,hmac-sha2-256,hmac-sha1-96,hmac-md5-96
INFO: kex: client: none
INFO: kex: client: none
INFO: kex: client:
INFO: kex: client:
INFO: kex: server->client aes128-ctr hmac-md5 none
INFO: kex: client->server aes128-ctr hmac-md5 none

1 Ответ

0 голосов
/ 21 ноября 2018

JSch по умолчанию не загружает конфигурацию по умолчанию из любого места.

Поэтому изменить конфигурацию невозможно, если ваш код явно не готов к этому.

Есть простой способреализовать это все же.Вы можете использовать OpenSSHConfig класс , который может анализировать файл с общим синтаксисом OpenSSH ssh_config file .

OpenSSHConfig config = new OpenSSHConfig();
config.parse("/some/path/ssh_config-like-file");
JSch.setConfigRepository(config);

ssh_configПодобный файл может содержать:

Ciphers aes128-cbc,3des-cbc,blowfish-cbc

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

...