0x01 账号口令
1 jmx-console
默认情况访问 http://ip:port/jmx-console 需要输入用户名和密码。设置用户名密码限制账号,并进行加密存储。jboss 6.0 之前的版本 JMX 控制台的配置文件位置为:server/$config/deploy/jmx-console.war/WEB-INF/,jboss 6.0 及以上、7.0 以前的版本,JMX 控制台的配置文件位置为:common/deploy/jmx-console.war/WEB-INF/①建议配置1
1)修改 Jboss 目录下server/$config/deploy/jmx-console.war/WEB-INF/jboss-web.xml , 去 掉<security-domain>节点的注释。 其中$config 表示用户当前使用的 JBoss服务器配置路径。修改 jboss-web.xml 同级目录下的 web.xml 文件,去掉 < security-constraint>节点的注释,在这里可以看到为登录配置了角色 JBossAdmin
2)jmx-console 的安全域和运行角色 JBossAdmin 都是在 login-config.xml 中配 置 , 在 Jboss 的 安 装 目 录 server/$CONFIG/config 下 找 到 。 在login-config.xml 中查找 jmx-console 的 application-policy 可以看到登录的角色 、 用 户 等 信 息 分 别 在 server/$config/config/props 的jmx-console-roles.properties 和 jmx-console-users.properties 文件中配置
②建议配置2
如无需jmx-console服务,可以删除相关文件。如:jboss 6.0 之前的版本 JMX 控制台的配置文件位置为:server/$config/deploy/jmx-console.war/WEB-INF/,jboss 6.0 及以上、7.0 以前的版本,JMX 控制台的配置文件位置为:common/deploy/jmx-console.war/WEB-INF/
③补充操作说明1)jmx-console-users.properties 文件中定义了一个用户名为 admin,的用户。
2)jmx-console-roles.properties 文件中默认为 admin 用户,定义了
JBossAdmin 和 HttpInvoker 这两个角色。
3)需要重启 JBoss
2 web-console
不需要输入用户名和密码存在安全隐患。设置用户名密码限制账号,并进行加密存储。①建议配置1
修改 Jboss 目录下server/$CONFIG/deploy/jmx-console.war/WEB-INF/jboss-web.xml , 去 掉<security-domain>节点的注释。 其中$CONFIG 表示用户当前使用的 JBoss服务器配置路径。修改 jboss-web.xml 同级目录下的 web.xml 文件,去掉 < security-constraint>节点的注释,在这里可以看到为登录配置了角色 JBossAdmin
2)jmx-console 的安全域和运行角色 JBossAdmin 都是在 login-config.xml 中配 置 , 在 Jboss 的 安 装 目 录 server/$CONFIG/config 下 找 到 。 在login-config.xml 中查找 jmx-console 的 application-policy 可以看到登录的角色 、 用 户 等 信 息 分 别 在server/$CONFIG/config/props 的jmx-console-roles.properties 和 jmx-console-users.properties 文件中配置
②建议配置2
如无需jmx-console服务,可以删除相关文件。Jboss 目录下server/$CONFIG/deploy/jmx-console.war/WEB-INF/jboss-web.xml ,
② 补充操作说明1)jmx-console-users.properties 文件中定义了一个用户名为 admin,的用户。
2)jmx-console-roles.properties 文件中默认为 admin 用户,定义了JBossAdmin 和 HttpInvoker 这两个角色。
3)需要重启 JBoss
3 Webservice
设置 webservice 控台用户名和密码进行保护。默认访问不需要输入用户名和密码。① 启用密码保护
先修改配置文件server/$CONFIG/deploy/jbossws-console.war/WEB-INF/web.xml,将<security-constraint> </security-constraint>部分的注释取消然后修改配置文件server/$CONFIG/deploy/jbossws-console.war/WEB-INF/jboss-web.xml,将<security-domain> </security-domain>部分的注释取消
2)设置复杂口令
为 jbossws 设置复杂的口令,修改配置文件server/$CONFIG/conf/props/jbossws-users.properties将其中 kermit=thefrog 修改为 kermit=复杂的密码
② 备注事项
1)口令长度至少 8 位,并包括数字、小写字母、大写字母和特殊符号 4 类中至少 3 类。
2)需要重启 JBoss
4 Admin-console
设置 admin-console 接口用户名和密码进行保护。默认用户名和密码为admin/admin.① 建议配置
修改$CONFIG/configuration/mgmt-users.properties 文件,将密码设置为复杂的口令。
② 备注事项
1)对于 JBoss 7.0 版本,可以直接检查下列文件中的明文口令:$CONFIG/configuration/mgmt-users.properties
2)口令长度至少 8 位,并包括数字、小写字母、大写字母和特殊符号 4 类中至少 3 类。
5 数据库连接用户和密码保护
① 建议配置1)在${jboss}/server/${server}/deploy/oracle-ds.xml配置文件中设置oracle密码<security-domain>EncryptDBPassword</security-domain>
2)在${jboss}/server/${server}/conf/login-config.xml配置文件中设置JNDI加密
<application-policy name="testDataSource"> --testDataSource 是连接池的名称
<authentication>
<login-module
code="org.jboss.resource.security.SecureIdentityLoginModule" flag="required">
<module-option name=“username”>apps</module-option> -- 用户名
<module-option name="password">3fb2b2b29f74131a</module-option>
--加密后的密码
<module-option name="managedConnectionFactoryName">
jboss.jca:service=LocalTxCM,name=testDataSource
</module-option>
</login-module>
</authentication>
</application-policy>
② 备注事项
口令长度至少 8 位,并包括数字、小写字母、大写字母和特殊符号 4 类中至少 3 类。
6 服务账号管理
禁用超级用户启动 JBoss。① 建议配置
Unix 系统:
(1) 创建 jboss 组:groupadd Jboss
(2) 创建 jboss 用户并加入 jboss 组:useradd Jboss –g Jboss
(3) 以 Jboss 身份启动服务
Windows 系统:
(1) 新建一个 Jboss 用户
(2) 设置 Jboss 用户对 Jboss_home 的相关权限
(3) 在服务管理器 (service.msc) 中找到 Jboss 服务,右键选择属性,设置登
录身份为 Jboss 用户
0x02 日志安全
设备应配置日志功能,对用户登录进行记录,记录内容包括用户登录使用的账号,登录是否成功,登录时间,使用的 IP 地址。
① 建议配置
编辑 server/$CONFIG/conf/ log4j.xml 配置文件,
<appender name="FILE-0"
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="true"/>
<param name="Threshold" value="ERROR"/>
<param name="DatePattern" value="'.'yyyy-MM-dd_HH"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%t]
7
[%c{1}] %l %m%n"/>
</layout>
</appender>
② 备注事项
Threshold 是个全局的过滤器,它将把低于所设置的 level 的信息过滤不显示出来,优先级由高到低分为 OFF ,FATAL ,ERROR ,WARN ,INFO ,DEBUG ,ALL参数都以%开始后面不同的参数代表不同的格式化信息(参数按字母表顺序
列出):
%c 输出所属类的全名,可修改为 %C{Num} ,Num 类名输出的围 如:"org.apache.elathen.ClassName",%C{2}将输出 elathen.ClassName
% 输出日志时间其格式为 %d{yyyy-MM-dd HH:mm:ss,SSS},可指定格式如 %d{HH:mm:ss}
%l 输出日志事件发生位置,包括类目名、发生线程,在代码中的行数
%n 换行符
%m 输出代码指定信息,如 info(“message”),输出 message
%p 输出优先级,即 FATAL ,ERROR 等
%r 输出从启动到显示该 log 信息所耗费的毫秒数
%t 输出产生该日志事件的线程名
0x03 服务
1 HTTPS协议
① 建议配置(1)使用 JDK 自带的 keytool 工具生成一个证书
JAVA_HOME/bin/keytool -genkey –alias tomcat –keyalg RSA
-keystore /path/to/my/keystore
(2)修改 server/$CONFIG/deploy/jbossweb-tomcat55.sar/conf/server.xml 配置文件,更改为使用 https 方式,增加如下行:
Connector classname=”org.apache.catalina.http.HttpConnector”
port=”8443” minProcessors=”5” maxprocessors=”100”
enableLookups=”true” acceptCount=”10” debug=”0”
scheme=”https” secure=”true” >
Factory classname=”org.apache.catalina.SSLServerSocketFactory”
clientAuth=”false”
keystoreFile=”/path/to/my/keystore” keystorePass=”runway”
protocol=”TLS”/>
/Connector>
其中 keystorePass 的值为生成 keystore 时输入的密码
(3)重新启动 Jboss 服务
2 更改默认端口
① 建议配置
(1)修改 server/$CONFIG/deploy/jbossweb-tomat55.sar/server.xml 配置文件,更改默认管理端口到 8100
<Connector port="8100" address="${jboss.bind.address}"
maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"
emptySessionPath="true"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="1800"
disableUploadTimeout="true" URIEncoding="utf-8"/>
(2)重启 JBOSS 服务
② 备注事项
Jboss 默认端口是 8080,通常占用的端口是 1098,1099,4444,4445,8080,8009,8083,8093
在 windows 系统中: 1098、1099、4444、4445、8083 端口在/server/ehr_jsprd
/conf/jboss-service.xml 中
8080 端口在/server/ ehr_jsprd /deploy/jboss-web.deployer/server.xml 中
8093 端口在/server/ ehr_jsprd /deploy/jms/uil2-service.xml 中。
3 定时退出
① 建议配置
编辑 server/$CONFIG/deploy/jbossweb-tomat55.sar/server.xml 配置文件,修改为 2000 秒
<Connector port="8100" address="${jboss.bind.address}"
maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"
emptySessionPath="true"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="300"
disableUploadTimeout="true" URIEncoding="utf-8"/>
② 备注事项
设置时间为30 分钟,即 3000 秒。
4 状态页面管理
删除或屏蔽状态页面,防止服务器信息泄露
① 建议配置
方法一:删除后台页面
如果不需要使用后台页面,在将 server/$CONFIG/deploy/ROOT.war 文件夹下的所有文件备份到其它位置后删除文件夹下的所有文件。
方法二:修改配置文件
修改配置文件 server/$CONFIG/deploy/ROOT.war/WEB-INF/web.xml,将以下部分注释掉
<servlet>
<servlet-name>Status Servlet</servlet-name>
<servlet-class>org.jboss.web.tomcat.service.StatusServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Status Servlet</servlet-name>
<url-pattern>/status</url-pattern>
</servlet-mapping>
② 备注事项
需重新启动 Jboss 服务
5 错误页面重定向
Jboss 错误页面重定向
① 建议配置
(1)编辑 server/$CONFIGdeploy/jbossweb-tomcat55.sar/conf 文件:
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
(2)重新启动 Jboss 服务
0x04 其他事项
1 认证授权与用户权限
在设备权限配置能力内,根据用户的业务需要,配置其所需的最小权限。① 建议配置
编辑 /server/default/config/login-config.xml 配置文件,修改用户角色权限
<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>
2 、备注事项
jmx-console 角色浏览 jboss 的部署管理信息。 Web-console 角色进行监控
2 禁止目录列出
① 建议配置
(1) 编辑 deploy/jbossweb-tomcat55.sar/conf 配置文件,
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
把 true 改成 false
(2)重新启动 Jboss 服务
欢迎大家分享更好的思路,热切期待^^_^^ !