/ / Спеціальне шифрування паролів JBoss DataSorurce? - безпека, шифрування, jboss, джерело даних, jboss-4.2.x

Користувальницький JBoss DataSorurce шифрування паролем? - безпека, шифрування, jboss, джерело даних, jboss-4.2.x

Я працюю з JBoss 4.2.1GA.

Як ви, можливо, зараз є спосіб уникнути наявності Пароль JBoss DataSoruce у простому тексті. Однак ця методика має фундаментальний недолік безпеки, який стає очевидним, коли ви дивитесь, як це зробити org.jboss.resource.security.SecureIdentityLoginModule декодувати і кодувати методи реалізовані. Шифрування - це звичайно звичайна мухоловка за допомогою фіксованого секретного ключа ("Яас - це шлях")

Я шукаю спосіб змінити фіксований секретний ключ для одного, який я вибираю, або змінити спосіб шифрування / дешифрування.

Я схильний думати, що це можна зробити шляхом повторного доповнення SecureIdentityLoginModule це нормально, але мені важко повірити, що для цього немає жодного варіанта (поки що я не знайшов)

Хтось робив щось подібне?

Відповіді:

3 для відповіді № 1

Для цього випуску є видатний квиток на помилку, принаймні для JBoss 4.0.x: https://issues.jboss.org/browse/JBAS-4460

Зверніть увагу на коментар:

Справа пароля "зашифрувати базу даних"там для проходження дурних аудитів безпеки. Зрештою, десь буде якийсь пароль, оскільки системі потрібно розшифрувати пароль, щоб надіслати його до бази даних. Це відносно досвідчений програміст завжди буде зламати це. Безпека файлової системи / ОС + безпека транспорту - ваша єдина надія.

Те, що говорить коментатор, є загальним питаннямдля всіх систем безпеки: в якийсь момент є ключ, який можна розшифрувати. Переконайтеся, що безпека файлової системи вашого сервера прибита, щоб цей ключ не був легко доступний, і вам слід добре.


1 для відповіді № 2

Погляньте на наступне Вікі документ. Він описує два способи шифрування паролів JBoss. Перший - це те, що ви описали, а другий - шифрування на основі пароля.


0 для відповіді № 3

Гаразд, ось як я це досяг (я працюю над) JBOSS 4.2.1 GA і Oracle, тому деякі речі можуть відрізнятися між версіями та постачальниками БД):

Вам потрібно розширити AbstractPasswordCredentialLoginModule.

Я базував свою (називається PGPLoginModule) на зовнішній виклик реалізації, що називається SecureIdentityLoginModule Єдина різниця між цим і моїм - церозшифрувати та кодувати методи, які використовують інший алгоритм та процес шифрування (у мене використовується сертифікат PGP для дешифрування файлу властивостей, де зберігається пароль), аналогічно тому, що пояснено в Ця стаття, але ви можете використовувати будь-який спосіб, який ви віддаєте перевагу.

Вам потрібно буде додати наступні банки, розташовані в папках бібліотеки jboss, щоб вирішити залежності:

  • [JBOSS_HOME]/lib/jboss-common.jar
  • [JBOSS_HOME]/lib/jboss-jmx.jar
  • [JBOSS_HOME]/server/default/lib/jbosssx.jar
  • [JBOSS_HOME]/server/default/lib/jboss-jca.jar

Вам потрібно JAR свого класу і розмістити банку на будь-якому:

  • [JBOSS_HOME]/ сервер / за замовчуванням / lib

або

  • [JBOSS_HOME]/ lib

Коли у вас з'явиться необхідність налаштувати його в домені безпеки, визначеному в jboss "s login-config.xml, щоб він використовував ваш клас (у мене є org.company.resource.security.PGPLoginModule), а не використовувати типовий, щоб він виглядав приблизно так:

<application-policy name="PGPDomain">
<authentication>
<login-module code="org.company.resource.security.PGPLoginModule" flag="required">
<module-option name="username">[DB_USER]</module-option>
<module-option name="password">[ENCTRYPTED_PASSWORD]</module-option>
<module-option name="managedConnectionFactoryName">jboss.jca:service=LocalTxCM,name=OracleDS</module-option>
</login-module>
</authentication>
</application-policy>

Зауважте, що залежно від міцності та алгоритму, який ви вирішили використовувати, можливо, вам знадобиться встановити Файли політики політики необмеженої міцності з розширенням Java до вашого JRE.

Сподіваюся, хтось вважає це корисним.