2015-10-17 3 views
4

Я собирался открыть порт для удаленной отладки веб-сервисов на базе Java через Интернет, но, думая дважды, я понял, что у него нет никакой аутентификации.Безопасно ли выставлять удаленный порт отладки java в Интернет?

Теоретически, представляется возможным написать инструмент, который подключается к удаленному порту отладчика, и выполняет произвольные системные команды через Java API. Или изменяет/сбрасывает базу данных и т. Д. По крайней мере, этот пробег http://securityaffairs.co/wordpress/36394/hacking/paypal-remote-code-execution.html

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

Может ли кто-нибудь прокомментировать, безопасно ли и/или как это сделать безопасным образом на произвольной веб-службе на основе Java? Моя цель - иметь возможность выполнять удаленную отладку на рабочем сервере.

+0

Почему отладка производства? Я предлагаю использовать удаленный отладочный файл в среде разработки. вы можете применить фильтрацию ip и рычаги на брандмауэре вашей фирмы для достижения безопасности. – Bon

+0

Вам действительно нужно отлаживать этот сервер, думая о настройке всего на локальном хосте и открытии туннеля ssh, если это когда-либо понадобится. Затем вы можете отлаживать, если кто-либо еще не сможет. – Marged

+0

Я думал о ssh туннеле. Просто интересно, действительно ли это проблема, и, возможно, существует общий способ (например, pubkey-auth) для архивирования этого. – Dmitriusan

ответ

5

Вы можете настроить удаленное отладочное использование для использования SSL и аутентификации, это работает как для Windows, так и для Linux, но немного громоздко. И порт открыт все время.

Уверен, что у вас есть все основания для отладки вашего реального/полезного приложения и знаете, что когда вы действительно отлаживаете его и не только используете соединение для получения доступа к данным JMX, например, ваше приложение перестанет работать при подключении отладчика ,

Oracle documents некоторые риски, некоторые выше или ниже, в зависимости от того, как настроить агент:

Внимание - Потенциальная проблема безопасности, был определен с паролем аутентификации для удаленных соединителей, когда клиент получает удаленный соединитель из небезопасного реестра RMI (по умолчанию). Если злоумышленник запускает фиктивный RMI-реестр на целевом сервере до запуска законного реестра , тогда злоумышленник может украсть пароли клиентов . Этот сценарий включает случай, когда вы запускаете виртуальную машину Java с включенным удаленным управлением, используя системное свойство com.sun.management.jmxremote.port = portNum, даже если включен SSL. Хотя такие атаки, вероятно, будут замечены, это, тем не менее, уязвимость .

Внимание: эта конфигурация небезопасна. Любой удаленный пользователь, который знает (или догадывается), ваш номер порта JMX и имя хоста смогут контролировать и управлять вашим Java-приложением и платформой. Хотя он может быть приемлемым для разработки, он не рекомендуется для производства систем .

Внимание! Эта конфигурация небезопасна: любой удаленный пользователь, который знает (или догадывается), будет иметь возможность отслеживать номер вашего порта и имя хоста и управлять вашими приложениями и платформой Java. Кроме того, возможный вред не ограничивается операциями, которые вы определяете в своих MBeans. A Удаленный клиент может создать javax.management.loading.MLet MBean и использовать его для создания новых MBeans с произвольными URL-адресами, по крайней мере, если нет менеджера безопасности. Другими словами, удаленный клиент-мошенник мог бы сделать вашим приложением Java для выполнения произвольного кода.

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

Даже при использовании самой высокой степени безопасности (перемещение порта, ssl enabled, аутентификация по сертификату клиента ssl) по-прежнему несет риски. Если вам все еще нужно отладочное соединение, я предлагаю вам использовать предположительно уже существующее ssh-соединение с сервером и использовать его для создания туннеля ssh в порт отладчика. Вы можете узнать больше об этом здесь: Cannot remotely debug JVM via SSH tunnel (потому что он уже на SO Я не копирую детали)

Открытие порта без шифрования и аутентификации позволит любому подключиться к вашему jvm. Это позволит считывать и записывать значения JMX, останавливать выполнение кода, изменять значения, создавать heapdumps, переписывать код и все другие плохие вещи.

+0

спасибо за полный ответ – Dmitriusan

Смежные вопросы