null

Повышаем уровень java security до уровня "Beginner"

В последнее время всё чаще приходится помогать коллегам с удалённым доступом к оборудованию через различные java-приложения.
В первую очередь этим страдают ILOM-ы, iDRAC-и, IMM-ы, switchExplorer (от Brocade), High-End HP и IBM системы хранения данных, да и многое другое оборудование, прошивки которого не самой первой свежести.
Выглядит это всё так, что если у вас java 7 или выше, при открытии сеанса удалённого подключения, java после своих обычных ошибок выводит серию ошибок, связанных с угрозой безопасности, невозможностью проверки self-signed сертификатов и прочие невнятные сообщения, которые по косвенным признакам можно отнести к работе системы безопасности.
Собственно, часть проблем обусловлена тем, что с течением времени, используемые на оборудовании алгоритмы шифрования были признаны невероятно уязвимыми и надёжная безопасная java категорически против их использования.
Чтобы убедительно попросить java или попробовать привести её в чуство, обычно помогает следующая последовательность действий.
1. Убеждаем java, что сайт, с которого будет открываться приложение действительно безопасный. Обычно он соответствует сайту, с которого нажимается кнопка "remote console", но точный адрес можно увидеть внутри jnlp файла. Чтобы это сделать, открываем jcontrol (Start->"Configure Java" в клиническом случае использования Windows). Переходим на вкладку "Security", нажимаем "Edit site list" и добавляем новый сайт. Если кнопка "Add" не нажимается, возвращаемся в jcontrol, переходим на вкладку "Advanced", прокручиваем вниз до раздела "Miscellaneous" и снимаем флажок "Store user settings in the roaming profile".
Есть ещё менее любимый программистами, но и более топорный метод -- отредактировать файл с исключениями. В него можно добавить строку с требуемым URL. На Windows и не-Windows версиях он расположен соответственно в:

%APPDATA%\..\LocalLow\Sun\Java\Deployment\security\exception.sites
$HOME/.java/deployment/security/exception.sites

2. Объясняем java, что используемые ей подходы не всегда подходят для работы в Enterprise. Для этого надо поправить файл java.security, расположенный в lib/security, внутри каталога с используемой jre. Для Windows и не-Windows версии, вероятно, его можно найти по путям:

%SYSTEMDRIVE%\Program Files\Java\jre*\lib\security
/usr/java/jre/lib/security

Ну а если у вас linux или другая UNIX-подобная поделка, можно попробовать выяснить месторасположение найдя исполняемый файл java:

$ type java
java is /usr/bin/java
$ ls -l /usr/bin/java
lrwxrwxrwx 1 root root 22 Sep 9  2007 /usr/bin/java -> /etc/alternatives/java
$ ls -l /etc/alternatives/java
lrwxrwxrwx 1 root root 39 Sep 9  2007 /etc/alternatives/java -> /usr/lib/jvm/java-8-oracle/jre/bin/java
$ ls -l /usr/lib/jvm/java-8-oracle/jre/lib/security/java.security
lrwxrwxrwx 1 root root 41 Sep 9 2007 /usr/lib/jvm/java-8-oracle/jre/lib/security/java.security -> /etc/java-8-oracle/security/java.security

или просто вручную просмотреть содержимое всех каталогов системы.
Внутри этого файла нужно привести два параметра, например, в следующий вид:

jdk.certpath.disabledAlgorithms=MD2
jdk.tls.disabledAlgorithms=DSA

Решение оставить MD2 и DSA в списке уязвимых обусловлено тем, что они-то как раз на самом деле уязвимы.
После этих нехитрых действий High-End оборудование, наконец, можно будет администрировать с лёгкостью и комфортом.

korg

 

Коротко о себе

Работаю в компании Tune-IT, администрирую инфраструктуру компании и вычислительную сеть кафедры Вычислительной ТехникиСПбНИУ ИТМО.

Интересы: администрирование UNIX и UNIX-like систем и активного сетевого оборудования, написание shell- и perl-скриптов, изучение технологий глобальных сетей.
Люблю собирать GNU/Linux и FreeBSD, использовать тайлинговые оконные менеджеры и писать системный софт.