0x00 JBoss应用介绍
JBoss是一个基于J2EE的开放源代码的应用服务器。 JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。
0x01 为什么要做安全配置
之前我们讨论了Apache和Nginx的安全配置,Java的web中间件同样也存在因为安全配置不合适导致的安全问题。JBoss的默认配置中存在一些安全问题,例如弱密码、未配置使用SSL协议等。因此安全配置JBoss服务器能有效的减少安全威胁,下面将对JBoss的安全配置进行讨论。因JBoss版本较多,本期加固方法以JBoss 6为例。
0x02 如何进行安全配置
1.设置jmx-console登录的用户名和密码,并且密码复杂度符合要求
JBoss应配置jmx-console登录的用户名和密码,并且密码长度至少 8 位,并包括数字、小写字母、大写字母和特殊符号 4 类中至少 3 类。
加固方法:
1)启用密码保护
修改 Jboss 目录下server/$CONFIG/deploy/jmx-console.war/WEB-INF/jboss-web.xml , 去 掉节点的注释。 其中$CONFIG 表示用户当前使用的 JBoss服务器配置路径。修改 jboss-web.xml 同级目录下的 web.xml 文件,去掉节点的注释,在这里可以看到为登录配置了角色 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 文件中配置。
3)重新启动Jboss服务。
2.设置web service密码,并且密码复杂度符合要求
JBoss应配置web service登录的用户名和密码,并且密码长度至少 8 位,并包括数字、小写字母、大写字母和特殊符号 4 类中至少 3 类。
加固方法:
1)启用密码保护
先修改配置文件
$$/common/$$/jbossws-console.war/WEB-INF/web.xml,将 部分的注释取消
然后修改配置文件$$/common/$$/jbossws-console.war/WEB-INF/jboss-web.xml,将 部分的注释取消。
2)设置复杂口令
为 jbossws 设置复杂的口令,修改配置文server/$CONFIG/conf/props/jbossws-users.properties将其中 kermit=thefrog 修改为 kermit=复杂的密码。
3)重新启动Jboss服务。
3.Jboss进程的用户不是超级用户
JBoss进程的用户应该是非超级用户。查看当前系统的 JBoss 进程,确认程序启动时使用的身份。禁用超级用户启动 JBoss。
加固方法:
1) 创建 jboss 组: groupadd Jboss
2) 创建 jboss 用户并加入 jboss 组: useradd Jboss -g Jboss
3) 以 Jboss 身份启动服务
4.设置支持加密协议
JBoss应开启HTTP 加密协议,使用 https 方式登录 Jboss 服务器管理页面。对于通过 HTTP 协议进行远程维护的设备,设备应支持使用 HTTPS 等加密议。
加固方法:
1)使用JDK自带的keytool工具生成一个证书 JAVA_HOME/bin/keytool -genkey -alias tc-ssl -keyalg RSA -keystore /opt/keystore (/opt/keystore为存储证书得位置) 。
2) 编辑$/server/$/deploy/jbossweb.sar/server.xml文件, 取消SSL/TLS节点的配置,并设置keystoreFile="/opt/keystore" keystorePass="nsfocus". 修改后内容如下(是具体情况而定):
其中keystoreFile的为存储证书的路径 keystorePass为生成keystore时输入的密码 。
3)重新启动Jboss服务。
5.修改默认端口
为防止恶意的攻击,使得攻击者难以找到数据库并将其定位,使用 HTTP 协议的设备, 应更改 JBoss 服务器默认端口。
加固方法:
编辑$/server/$/deploy/jbossweb.sar/server.xml配置文件,修改8080端口为8100端口. 参考配置如下:
6.设置超时登出
对于具备字符交互界面的设备,应支持定时账户自动登出。登出后用户需再次登录才能进入系统。登录 jboss 默认页面 ,使用管理账号登录,闲置30 分钟后,用户自动登出。
加固方法:
编辑$/server/$/deploy/jbossweb.sar/server.xml 文件, 修改Connector节点的connectionTimeout值1800秒。
7.设置错误页面重定向
Jboss应配置错误页面重定向,URL 地址栏中输入http://ip:8100/manager12345后,跳转至指向指定错误页面。
加固方法:
1)编辑$/server/$/deploy/jbossweb.sar/web.xml文件:
2)重新启动 Jboss 服务
8.限制目录列表访问
应禁止Jboss列表显示文件,当 WEB 目录中没有默认首页如 index.html,index.jsp 等文件时,不会列出目录内容。
加固方法:
1) 编辑$/server/$/deploy/jbossweb.sar/web.xml配置文件,
2)重新启动 Jboss 服务
9.屏蔽状态信息
在配置文件中应删除或屏蔽状态页面,防止服务器信息泄露。访问 http://ip:port/status,不能看到状态信息。
加固方法:编辑$/server/$/deploy/ROOT.war/WEB-INF/web.xml文件, 注释如下内容
10.记录用户登录行为
设备应配置日志功能,对用户登录进行记录,记录内容包括用户登录使用的
账号,登录是否成功,登录时间,使用的 IP 地址。
加固方法:
日志输出格式应为%d %-5p [%t] [%c] %l %m%n 配置文件路径: $/server/$/deploy/jboss-logging.xml 修改periodic-rotating-file-handler节点的pattern值。
0x03 总结
对JBoss进行安全配置可以有效的防范一些常见安全问题,按照基线标准做好安全配置能够减少安全事件的发生。国内常见的基线标准有中国信息安全等级保护、电信网和互联网安全防护基线配置要求及检测要求,不同的企业也可以根据自身企业业务制定符合自己企业的安全基线标准。
0x04 参考链接
国家信息安全等级保护制度要求
电信网和互联网安全防护基线配置要求及检测要求
领取专属 10元无门槛券
私享最新 技术干货