Jboss 安全和優化
一. Jboss後臺啓動:
添加後臺修改命令:
vi run.sh
while true; do
if [ "x$LAUNCH_JBOSS_IN_BACKGROUND" = "x" ]; then
# Execute the JVM in the foreground
nohup "$JAVA" $JAVA_OPTS \
-Djava.endorsed.dirs="$JBOSS_ENDORSED_DIRS" \
-classpath "$JBOSS_CLASSPATH" \
org.jboss.Main "$@"
JBOSS_STATUS=$?
else
# Execute the JVM in the background
"$JAVA" $JAVA_OPTS \
-Djava.endorsed.dirs="$JBOSS_ENDORSED_DIRS" \
-classpath "$JBOSS_CLASSPATH" \
org.jboss.Main "$@" &
JBOSS_PID=$!
# Trap common signals and relay them to the jboss process
trap "kill -HUP $JBOSS_PID" HUP
trap "kill -TERM $JBOSS_PID" INT
trap "kill -QUIT $JBOSS_PID" QUIT
trap "kill -PIPE $JBOSS_PID" PIPE
trap "kill -TERM $JBOSS_PID" TERM
# Wait until the background process exits
WAIT_STATUS=0
while [ "$WAIT_STATUS" -ne 127 ]; do
JBOSS_STATUS=$WAIT_STATUS
wait $JBOSS_PID 2>/dev/null
WAIT_STATUS=$?
done
fi
# If restart doesn't work, check you are running JBossAS 4.0.4+
# http://jira.jboss.com/jira/browse/JBAS-2483
# or the following if you're running Red Hat 7.0
# http://developer.java.sun.com/developer/bugParade/bugs/4465334.html
if [ $JBOSS_STATUS -eq 10 ]; then
echo "Restarting JBoss..."
else
exit $JBOSS_STATUS
fi
done &
二. Jboss內存優化:
修改這個兩參數,給jvm分配適當的內存,一般爲服務器的3/4內存量,推薦至少使用4G內存。
另外添加兩個參數 -XX:+UseParallelGC -XX:+UseParallelOldGC 這兩個讓服務並行回收內存空間。修改完成後,大致爲 JAVA_OPTS = “-Xms4096m -Xmx8192m -XX:+UseParallelGC -XX:+UseParallelOldGC -Dsum……
三. Jboss日誌輸出模式
[root@190MEM conf]# pwd
/usr/local/jboss/server/default/conf
[root@190MEM conf]# vi jboss-log4j.xml
<appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="File" value="${jboss.server.log.dir}/server.log"/>
<param name="Append" value="false"/>
<param name="Threshold" value="ERROR"/>
四. Jboss數據庫連接池優化
修改數據庫連接池:
<datasources>
<local-tx-datasource>
<jndi-name>training_master_db</jndi-name> <connection-url>jdbc:mysql://211.100.192.128:3306/dts?useUnicode=true&characterEncoding=UTF-8</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password></password>
<min-pool-size>100</min-pool-size>
<max-pool-size>500</max-pool-size> <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
五. Jboss部署目錄優化:
去掉和應用無關的部署,加快jboss運行速度
bsh-deployer.xml
client-deployer-service.xml
ear-deployer.xml
ejb-deployer.xml
http-invoker.sar
jboss-bean.deployer
jboss-ws4ee.sar
jms
jsr88-service.xml
schedule-manager-service.xml
scheduler-service.xml
sqlexception-service.xml
uuid-key-generator.sar
六. Jboss應用安全加固:
去掉:
Tomcat status (full) (XML)
JMX Console
JBoss Web Console
刪除deploy下的jmx-console.war/ management/
[root@190MEM deploy]# pwd
/usr/local/jboss/server/default/deploy
[root@190MEM deploy]# ls jmx-console.war/ management/
jmx-console.war/:
checkJNDI.jsp displayMBeans.jsp images inspectMBean.jsp META-INF WEB-INF
cluster displayOpResult.jsp index.jsp jboss.css style_master.css
management/:
console-mgr.sar
一、 前言:
Jboss默認安裝以後,會默認打開http://127.0.0.1,顯示如下:
JBoss Online Resources
• JBoss 4.0 documentation
• JBoss Wiki
• JBoss forums
JBoss Management
• Tomcat status (full) (XML)
• JMX Console
• JBoss Web Console
Jmx Console和Jboss Web Console 裏面可以修改和刪除應用的參數,如果不加強安全設置,將會帶來嚴重安全後果。
二、 關閉管理端口和相關統計信息:
1、 關閉jmx-console:
刪除
/export/home/jboss-4.0.3SP1/server/default/deploy下目錄jmx-console.war、management
2、 關閉web-console:
刪除
/export/home/jboss-4.0.3SP1/server/default/deploy/jbossweb-tomcat55.sar下目錄ROOT.war
3、 關閉status統計信息:
修改/export/home/jboss-4.0.3SP1/server/default/deploy/ROOT.war/WEB-INF/web.xml
屏蔽其中jboss的內容:粗體爲添加屏蔽符號:
<!--display-name>Welcome to JBoss </display-name>
<description>
Welcome to JBoss
</description>
<servlet>
<servlet-name>Status Servlet </servlet-name>
<servlet-class>org.jboss.web.tomcat.tc5.StatusServlet </servlet-class>
</servlet-->
<!--servlet-mapping>
<servlet-name>Status Servlet </servlet-name>
<url-pattern>/status </url-pattern>
</servlet-mapping-->
4、 刪除jboss主頁相目錄和文件:
/export/home/jboss-4.0.3SP1/server/default/deploy/ROOT.war下:Manager/favicon.ico/jboss.css/jbossindex.html/logo.gif
lion:/export/home/jboss-4.0.3SP1/server/default/deploy/ROOT.war # rm -rf manager favicon.ico jboss.css jbossindex.html logo.gif
5、 備註:
三、 關閉完成測試:
1、 http://127.0.0.1/jmx-console
2、 http://127.0.0.1/web-console
3、 http://127.0.0.1/jbossindex.html
4、 http://127.0.0.1/status
5、 測試結果:
測試人 時間
服務器 jmx-console web-console status jbossindex.html 測試
jboss默認配置了以下服務:
• JMX Console
• JBoss Web Console
爲了安全起見,需要用戶通過授權進行訪問。
一、JMX安全配置
STEP 1:
找到%JBOSS_HOME%/server/default/deploy/jmx-console.war/WEB-INF/jboss-web.xml文件,根據說明,去掉註釋。
<security-domain>java:/jaas/jmx-console</security-domain>
</jboss-web>
STEP 2:
與jboss-web.xml同級目錄下還有一個文件web.xml,找到其中的節點,根據說明,取消註釋。
<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>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>JBossAdmin</role-name>
</auth-constraint>
</security-constraint>
STEP 3:
在第一步中的jmx-console安全域和第二步中的運行角色JBossAdmin都是在login-config.xml中配置,我們在%
<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>
文件props/jmx-console-users.properties定義了用戶名、密碼;props/jmx-console-roles.properties定義了用戶所屬角色
注:
jmx-console-users.properties 格式是:用戶名=密碼明文
jmx-console-roles.properties 格式是:用戶名=角色1,角色2,角色3
二、WEB-CONSOLE的安全配置
STEP 1:
找到%JBOSS_HOME%/server/default/deploy/ management/console-mgr.sar/web-console.war/WEB-INF/jboss-web.xml文件,根據說明,去掉註釋。
<depends>jboss.admin:service=PluginManager</depends>
</jboss-web>
STEP 2:
與jboss-web.xml同級目錄下還有一個文件web.xml,找到其中的節點,根據說明,取消註釋。
<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>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>JBossAdmin</role-name>
</auth-constraint>
</security-constraint>
STEP 3:
在本目錄的classes文件夾下找到web-console-users.properties和web-console-roles.properties兩個文件更名爲:
<authentication>
<login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule"
flag = "required">
<module-option name="usersProperties">users.properties</module-option>
<module-option name="rolesProperties">roles.properties</module-option>
</login-module>
</authentication>
</application-policy>
啓動服務輸入http://localhost:8080/
然後分別點擊JMX Console以及Jboss Web Console測試安全機制
user.properties和role.propertie並修改users.properties其中的用戶名和密碼修改%JBOSS_HOME%/server/default/conf/login-config.xml中web-console節點修改爲以下:
到後自行修改或重新定義用戶名、密碼。JBOSS_HOME%/server/default/config下找到它。查找名字爲:jmx-console的application-policy:
http://wiki.jboss.org/wiki/Wiki.jsp?page=SecureTheJmxConsole
http://jira.jboss.com/jira/secure/attachment/12313981/index.html