您好!欢迎来到爱源码

爱源码

热门搜索: 抖音快手短视频下载   

Apache Tomcat 7.x安全加固指南 [导航网站源码]

  • 时间:2022-08-26 23:10 编辑: 来源: 阅读:288
  • 扫一扫,手机访问
摘要:Apache Tomcat 7.x安全加固指南 [导航网站源码]
版本:1.00日期:2014-1-11分类:Matthias Luft、Florian Grunow、Hendrik Schmidt1出版简介由于官方尚未发布Tomcat 7的增强版指南,ERNW对相关设置进行了总结,并做出了本文所列的列表。 虽然可以使用大量设置,但本文旨在提供一些加固方法的基础。 可能对操作系统产生严重影响并需要进一步广泛测试的设置未在此列表中列出,或者被标记为可选。 我们使用“强制”或“可选”来标记此列表中的每个推荐设置,并使用它来清楚地表达从我们的角度来看哪个设置是必要的(强制)或可取的(可选)。 “可选”也意味着我们建议您应该使用此设置,但这可能会影响系统的必要性能。 2操作和系统安全2.1补丁和漏洞管理强制执行:与安全相关的Tomcat升级必须及时安装:?具有高风险或重要优先级的升级和补丁必须在10天内安装。 ?中优先级升级和修补程序必须在发布后30天内安装。 ?低优先级升级必须在发布后90天内安装。 有关补丁程序的可用性和严重性的信息,请参见http://tomcat.apache.org/lists.html#tomcat-announce. 升级可能会影响工作。 对于Tomcat升级在核心/业务上可能产生的不利影响,请查看http://tomcat.apache.org/lists.html#tomcat-announce. 2.2 Tomcat服务的最低权限执行:在系统上运行低权限的Tomcat应用程序。 创建一个特殊的Tomcat服务,以便用户只能拥有最小的权限集(例如,不允许远程登录)。 有必要检查以最低权限用户的身份使用操作系统资源池安装程序的行为,以确保Tomcat不是以root/administrator身份运行。 这必须在配置启动机制的操作系统级别确保(例如,Microsoft Windows上的Windows服务或Unix上的rc脚本):图1: Windows服务配置有关安全服务配置,请参考ERNW Windows加固指南图2: FreeBSD rc脚本特定配置与Unix系统和Tomcat版本相关。 例如,FreeBSD上的Tomcat 7不再支持rc.conf中用户帐户的配置,因此用户名被硬编码在启动脚本中——这是不推荐的。 在FreeBSD上,应该使用的web和服务器应该作为www上的用户运行。请参考http://www . FreeBSD . org/doc/en/books/porters-handbook/using-PHP . html # we B- apps。 以低权限用户身份运行Tomcat可能会影响Tomcat的某些功能。 例如,特权端口不能设置为监听端口。 为了解决这个问题,可以通过本地HTTP代理(例如,使用Apache的mod_jk板)或代理在系统上定义数据包转发规则,以便将传入的流量转发到Tomcat监视的非特权端口。 2.3限制访问tomcat文件夹可选:Tomcat文件夹只能由Tomcat用户自己访问,尤其是目录$ { Tomcat _ home }/conf/和${tomcat_home}/webapps。 当不需要通过应用服务器进行自动部署时,标准配置是将所有Tomcat文件的所有者设置为root,并将他们的组设置为Tomcat。 那么使用chmod 740只允许root让用户编辑文件,Tomcat让用户读取文件。 是的,临时目录和工作目录的所有者应该是Tomcat用户,而不是root用户。 此设置会影响自动部署。 (见8.5小节)3可选管理接口Tomcat的主管理接口称为管理器应用程序。 虽然保护应用程序对于Tomcat服务器的安全性非常重要,但是已经发现它在许多环境中非常暴露(例如,没有部署网络级限制,使用弱/默认登录信息)。 如果可能,管理任务应该在操作系统级别执行(例如,使用RDP或SSH),并避免使用Manager应该使用的过程(另请参见第8.3节) 如果这是不可能的,下一节中描述的设置(或者可能是跳板机)应该与安全认证机制(参见第4节)和加密传输(参见第6.3节)相结合。 3.1网络层限制如果要使用Manager应该使用的程序,应该只允许从授权的IP地址访问其管理界面。 这可以通过在catalina _ home/web apps/manager/meta-INF/context . XML文件中设置以下内容来实现 以下设置仅允许从本地主机和特定IP地址或IP地址段访问管理界面:allow = "127 \。\ d+\。\ d+|::1 | 0:0:0:1 | 172 \ . 16 \..3}"/>还可以使用hostname:class name = " org . Apache . catalina . valves . remote host valve " allow = "。* \.管理员\。域\。com"/>允许和拒绝支持正则表达式(使用java.util.regex)3.2 3.2授权实施的最低规则:根据 角色如下,请记住只授予最低权限:?你能访问网络界面吗?经理-状态:只能访问“服务器状态”页面?Manager-script:你能编写文本界面和“服务器状态”页面的脚本吗?Manager-jmx:访问jmx代理界面和“server status”page 4身份验证以下设置通常适用于基于Tomcat的身份验证。 但在大多数环境下,主要是针对管理者应该使用的程序,所以以此为例。 如果部署的应用程序使用基于Tomcat的身份验证,该应用程序也可以使用这些设置。 4.1可选安全认证:如果要使用Manager应该使用的程序,还应该附加一个额外的认证机制。 认证机制的优先级如下:1 LDAPS或客户端证书2本地(基于消息摘要)。此外,管理器应该使用的身份验证过程和与程序的通信必须受到SSL的保护(见下文)。 强制:对于本地和基于证书的身份验证,必须部署帐户锁定机制(对于集中式身份验证,还应相应地配置目录服务)。 为了防止暴力破解,使用的认证域必须放在锁定的域中,配置如下:编辑CATALINA_HOME/conf/server.xml文件,添加以下锁定的域:class name = " org . Apache . CATALINA . realm . lock out realm " failure count = " 5 " lock out time = " 30 " >认证域-> 4.2禁止域的能力:几个域不适合生产用途,这些域必须被禁止。 打开文件CATALINA_HOME/conf/server.xml,搜索MemoryRealm并禁用。 还必须禁止JDBCRealm,而应使用DataSourceRealm。 大规模安装时,不要使用UserDatabaseRealm,禁止使用。 5会话解析5.1会话超时强制:所有web应用程序的会话超时必须设置为20分钟。 可以通过编辑CATALINA_HOME/conf/web.xml文件并进行如下配置来实现:205.2 HttpOnly标志强制:Tomcat 7自动开始对会话cookie使用HttpOnlycookie标志,并检查配置以确保该选项被禁止。 要开始使用HttpOnly,必须在CATALINA_BASE/conf/context.xml中进行以下设置,以便它可以在所有应该使用的程序中全局使用:useHttpOnly= >真实的:.../>如果需要通过JavaScript访问会话cookie,使用HttpOnly可能会影响应用程序功能。 如果应用程序需要通过JavaScript访问HttpOnly cookie,可以在METAINF/context.xml中的单独上下文中定义一个异常 5.3 CSRF保护强制:为了保护应该使用的程序,需要使用Tomcat启动跨站点请求伪造保护。 Tomcat 7提供基本的CSRF保护。 您可以在catalina _ base/conf/web.xml中配置全局过滤器。 使用WEB-INF/web.xml文件的每个应用程序都可以覆盖该筛选器。 需要进行以下设置:CSRFPreventionFilter/*详细说明及其他选项请参考Tomcat手册:http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html # csrf _ prevention _ filter 有必要记住这一点,使用CSRF保护可能会影响程序性能,尤其是在程序应该大量使用异步请求的情况下。 6网络安全6.1限制强制监控网络接口:不要让连接器监控服务器上所有可用的网络接口和IP地址,而是让连接器监控指定的网络接口和IP地址。 编辑CATALINA_HOME/conf/server.xml,检查每个连接器并指定正确的IP地址:address="LISTEN_IP_ADDRESS"…这将防止应用程序意外运行在开放的网络接口上。 6.2限制允许的网络连接力:只打开必要的Tomcat端口。 默认的TCP端口是8080和8443。 确保在Tomcat中正确配置了这些端口,并且可以在系统上安装现有的数据包过滤器。 打开CATALINA_HOME/conf/server.xml文件,查看每个连接器的端口配置。 拆下不需要的端子和连接器。 6.3强制加密网络连接:为了保护敏感应用程序(如管理器应用程序),需要使用和配置SSL(也需要解决敏感数据或提供登录功能)。 第一步是创建可信证书以避免证书警告,并为终端提供验证可信连接的方法。 第二步是创建一个证书密钥库,它包含CA、服务器证书和相应的私钥。 应该按照上一小节“保护密码安全”中的建议创建密钥库的密码。 要使用SSL支持,您可以使用以下配置(实际配置取决于给定的平台和需求), 并且必须放在CATALINA _ HOME/conf/In server . XML中:protocol = " org . Apache . coyote . http 11 . http 11 protocol " scheme = " 8443 " https " secure = " true " SSL enabled = " true " SSL protocol = " TLS " keystore file = " Path to keystore file " keystore pass = " keystore password "/>通过向SSL连接器添加以下密码套件来指定可用的SSL加密方法:ciphers =" SSL _ RSA _ with _ RC4 _ 128 SSL _ DHE _ RSA _ WITH _ 3 des _ EDE _ CBC _ SHA,SSL _ DHE _ DSS _ WITH _ 3 des _ EDE _ CBC _ SHA "…为了让Tomcat上托管的所有web都应该使用该程序来强制HTTPS,在关闭每个catalina _ home/web apps/$ web app/we b-INF/web . XML文件中的每个安全约束标签(标签)之前,必须包含以下内容:Confidential 7 Java Runtime 7.1 Java SecurityManager可选:您可以使用Java Security Manager来限制单个应用程序的功能 文件$ catalina _ home/conf/catalina . policy包含Java SecurityManager使用的安全策略的配置。 一旦配置了catalina.policy文件,就可以使用SecurityManager和- security选项启动Tomcat。 要了解全面的配置细节,请参考Tomcat SecurityManager官方教程:http://Tomcat . Apache . org/Tomcat-7.0-doc/security-manager-how to . html由于基本上所有的权限类型(如访问单个文件和目录或Java包)都要根据每个适用的程序单独配置,这样会大大增加运行成本。 另外,太严格的策略文件会影响要使用的程序的功能。 7.2对Java包的访问可选:Tomcat可以限制对某些Java包的访问。 如果检测到受限的数据包访问,将引发安全异常。 限制对Java包的访问,打开文件$ catalina _ base/conf/catalina . properties,将不允许访问的包添加到package.access列表中。 分析Java导入可以列出应该使用哪些程序,需要哪些包。 在Unix系统上,可以通过以下例子实现:grep–r import $ { Tomcat _ home }/web apps/web app 8。使用设置8.1确保默认设置的安全性:检查几个默认值以防止潜在的漏洞。 请参考第9节中列出的无法更改的默认配置。 8.2保证关机端口的安全性:如果需要在本地Tomcat系统上用网络端口开启关闭Tomcat的功能,就需要使用难以猜测的强密码。 编辑CATALINA_HOME/conf/server.xml文件,设置关机密码:shut down = " non deterministic words oshutdownwisnoteasytogues " >如果不需要这个函数,必须停止使用。设置如下:port="-1" shutdown="SHUTDOWN " >本地管理脚本可以关闭服务器,即使在关闭的端口被禁止。 8.3强制移除默认应用程序:Tomcat可以强制移除少量默认web应用程序。 如果他们不是绝对需要的,他们必须被删除。 移除${tomcat_home}/webapps中的所有默认web应用程序。 必须删除的适用程序有:ROOT、Documentation、Examples、Host Manager和Manager。 管理人员应该使用程序来提供管理功能,例如部署程序和检索日志信息。 这些功能应该在本地服务器上用命令行运行。 但是,如果这个应用程序是绝对必要的,它必须受到SSL的保护。 8.4设置自己的错误页是可选的:因为默认的错误页会泄露少量的内部信息(如版本号和堆栈跟踪),所以你应该使用自己设置的包含一般错误信息(如解决你的请求时的错误)的错误页来代替。 web应该使用的每个程序的web.xml文件中应该包含以下配置,该文件位于catalina _ home/web apps/$ web _ app/we b-INF:500/error pages/error . html Java . lang . throwable/error pages/error . html另外,如果Manager应该使用的应用程序没有被删除,则需要手动删除catalina _ home/web apps/Manager/we b-INF/JSP/ 8.5禁止使用自动部署强制:Tomcat允许应用程序在Tomcat运行时自动部署。 这个功能可能必须被禁止,因为它可能允许部署恶意或未经测试的应用程序。 自动部署由autoDeploy和deployOnStartup属性控制。 如果两者都为假,则只部署server.xml中定义的上下文,任何更改都需要重新启动Tomcat。 要禁用自动部署,请在$CATALINA_HOME/conf/server.xml文件中进行以下配置:auto deploy = " false " deployonstartup = " false "。在托管环境中,web应用程序可以是不可信的,或者可以将deployXML属性设置为false来忽略context.xml,以防止Web应用程序被授予更高的权限。 附录9:默认设置以下是不能更改的默认设置。默认情况下,这些设置被认为是安全的:server.xml中每个连接器的allowTrace值要么为空,要么设置为false。 在所有context.xml文件中,将privileged属性设置为false,除非您需要权限,如管理人员应该使用程序:?请确保crossContext值为空或设置为false。 crossContext值为true可能会导致允许恶意应用程序向受限应用程序发送请求。 ?请确保allowLinking值为空或设置为false。 真实的allowLinking值可能导致目录遍历和源代码泄漏漏洞。 ?禁止写入默认servlet。 ?在web.xml文件中将DefaultServlet的只读设置为true。 如果该值为false,则允许客户端删除或修改服务器上的静态资源,并上传新资源。 通常,未经身份验证,不应修改该值。 使用禁止显示列表?将DefaultServlet的列表设置为false。 这不仅是因为允许显示目录列表被认为是不安全的,还因为生成一个有几千个文件的目录列表会消耗大量的CPU资源,相当于被DDoS攻击。 当RECYCLE_FACADES选项设置为true时,Tomcat在请求之间回收会话facade。 这将导致请求之间的信息泄漏。 默认情况下,不设置此参数 确保使用的启动脚本不包含以下内容:?-dorg . Apache . catalina . connector . recycle _ facades = false。允许在Tomcat上指定不同的路径分隔符,但可能允许攻击者访问应用程序,而应用程序本应被代理程序(如mod_proxy)阻止。 默认情况下,不设置此参数 ?确保您使用的启动脚本不包含以下内容:?-dorg . Apache . catalina . connector . coyote adapter . allow _反斜杠= FALSE?-dorg . Apache . Tomcat . util . buf . ude coder . allow _ encoded _ slack = false允许您指定自己的标头状态消息,这样攻击者就可以插入标头。 这可能导致XSS的脆弱性。 默认情况下,不设置此参数 ?确保使用的启动脚本不包含以下内容:?-dorg . Apache . coyote . use _ CUSTOM _ STATUS _ MSG _ IN _ HEADER = false?-dorg . Apache . Tomcat . util . buf . ude coder . Allow _ encoded _ slack = false允许自己设置头状态消息,以便攻击者插入头。 这可能导致XSS的脆弱性。 默认情况下,不设置此参数 ?确保使用的启动脚本不包含以下内容:?-dorg . Apache . coyote . use _ custom _ status _ msg _ in _ header = false本文由看雪翻译组SpearMint整理,payatu@Rashid Feroze转载。请注明来自观雪社区。


  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【技术支持|常见问题】1502企业站群-多域名跳转-多模板切换(2024-04-09 12:19)
【技术支持|常见问题】1126完美滑屏版视频只能显示10个(2024-03-29 13:37)
【技术支持|常见问题】响应式自适应代码(2024-03-24 14:23)
【技术支持|常见问题】1126完美滑屏版百度未授权使用地图api怎么办(2024-03-15 07:21)
【技术支持|常见问题】如何集成阿里通信短信接口(2024-02-19 21:48)
【技术支持|常见问题】算命网微信支付宝产品名称年份在哪修改?风水姻缘合婚配对_公司起名占卜八字算命算财运查吉凶源码(2024-01-07 12:27)
【域名/主机/服务器|】帝国CMS安装(2023-08-20 11:31)
【技术支持|常见问题】通过HTTPs测试Mozilla DNS {免费源码}(2022-11-04 10:37)
【技术支持|常见问题】别告诉我你没看过邰方这两则有思想的创意广告! (2022-11-04 10:37)
【技术支持|常见问题】你正确使用https了吗? [php源码](2022-11-04 10:37)

联系我们
Q Q:375457086
Q Q:526665408
电话:0755-84666665
微信:15999668636
联系客服
企业客服1 企业客服2 联系客服
86-755-84666665
手机版
手机版
扫一扫进手机版
返回顶部