天天看点

jboss安全配置参考0x01 账号口令0x03 服务0x04 其他事项

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 服务

欢迎大家分享更好的思路,热切期待^^_^^ !

继续阅读