В интернетах распространяется JBoss worm - червь, атакующий сервера JBoss с настройками jmx-консоли и web-консоли по умолчанию. Суть в том, что через консоль можно получить доступ к серверу (выполнить произвольный код в контексте пользователя JBoss), а в настройках по умолчанию защита или выключена вообще (JBoss 4.X) или ограничена типами HTTP-запросов GET и POST, что червь легко обходит.
Что надо сделать, чтобы защитить консоли JBoss (в примере - с использованием файла с логином/паролем):
Что надо сделать, чтобы защитить консоли JBoss (в примере - с использованием файла с логином/паролем):
- Не забыть сделать резервную копию всех изменяемых файлов
- Определить используемую конфигурацию JBoss (all, default, и т.д.) - далее по тексту она обозначена как PROFILE
- Найти файл web.xml от JMX Console (server/PROFILE/deploy/jmx-console.war/WEB-INF/web.xml)
- Раскомментировать в нём секцию <security-constraint>...</security-constraint>
- Если в раскомментированной секции есть строки
<http-method>GET</http-method>
<http-method>POST</http-method>
- удалить их (constraint станет действовать на все типы запросов). Раскомментированная секция должна выглядеть так:
<security-constraint>
<web-resource-collection>
<web-resource-name>HtmlAdaptor</web-resource-name>
<description>An example security config that only allows users with the
role JBossAdmin to access the HTML JMX console web application
</description>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>JBossAdmin</role-name>
</auth-constraint>
</security-constraint> - Найти рядом с web.xml файл jboss-web.xml (server/PROFILE/deploy/jmx-console.war/WEB-INF/jboss-web.xml)
- Раскомментировать в нём секцию <security-domain>...</security-domain> - она указывает на настройки аутентификации и авторизации (JAAS) в файле server/PROFILE/conf/login-config.xml (он будет отредактирован в п.10)
- Аналогично пунктам 3-5 изменить файл web.xml от Web Console (server/PROFILE/deploy/management/console-mgr.sar/web-console.war/WEB-INF/web.xml). Раскомментированная секция должна выглядеть так:
<security-constraint>
<web-resource-collection>
<web-resource-name>HtmlAdaptor</web-resource-name>
<description>An example security config that only allows users with the
role JBossAdmin to access the HTML JMX console web application
</description>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>JBossAdmin</role-name>
</auth-constraint>
</security-constraint> - Аналогично пунктам 6-7 изменить jboss-web.xml (server/PROFILE/deploy/management/console-mgr.sar/web-console.war/WEB-INF/jboss-web.xml)
- Найти файл server/PROFILE/conf/login-config.xml
- Найти в файле секции <application-policy name="jmx-console">...</application-policy name="jmx-console"> и <application-policy name="web-console">...</application-policy name="web-console">. При использовании для аутентификации/авторизации файла с логином/паролем они должны выглядеть так:
<application-policy name="jmx-console">
<authentication>
<login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule"
flag="required">
<module-option name="usersProperties">props/jmx-console-users.properties</module-option>
<module-option name="rolesProperties">props/jmx-console-roles.properties</module-option>
</login-module>
</authentication>
</application-policy>
<application-policy name="web-console">
<authentication>
<login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule"
flag="required">
<module-option name="usersProperties">props/jmx-console-users.properties</module-option>
<module-option name="rolesProperties">props/jmx-console-roles.properties</module-option>
</login-module>
</authentication>
</application-policy>
у меня usersProperties и rolesProperties консолей указывают на одни и те же файлы, т.к. нет смысла дублировать одинаковое содержимое - В файле server/PROFILE/conf/props/jmx-console-users.properties изменить пароль по умолчанию администратора консоли
- В файле server/PROFILE/conf/props/jmx-console-roles.properties проверить наличие роли администратора консоли, указанной в web.xml в пунктах 5 и 8 (по умолчанию это JBossAdmin)
- Перезапустить JBoss, проверить доступ к консолям
- ...
- PROFIT
Комментариев нет:
Отправить комментарий