带你读《Apache Tomcat的云原生演进》——Securing Apache Tomcat(2)https://developer.aliyun.com/article/1377509
分离CATALINA_HOME和CATALINA_BASE是另一个很好的实践。CATALINA_HOME表示Tomcat安装的根目录,CATALINA_BASE是特定Tomcat 实例的运行时配置的根目录。始终建议只使用所需的权限限制对这些目录的访问。Conf目录中放置的配置文件必须受到限制,并且文件必须以最小的权限授予。
我还建议将部署应用程序war构建的“webapps”,文件夹保留在CATALINA_BASE之外的位置。将日志保存在单独的位置,最好是在有足够存储空间的另一个文件系统中。
在服务器级别,取决于应用程序的重要性。你可以进一步配置Tomcat并在启用SELinux的主机上运行。如之前所说的,必须删除或修改默认的用户名、密码和角色。保存敏感密码或数据也是配置文件中的重要内容。默认情况下,Tomcat不提供任何加密或解密敏感密码的机制,但你可以使用诸如PicketVault之类的工具,或者通过扩展Tomcat Digester类定制开发的加密-解密实用程序。
传输层安全是web应用程序安全的关键组成部分,使用TLS保护Tomcat也是至关重要的,保护数据的完整性和保密性。我们必须把重点放在保护连接器、实现适当的证书配置,并为API端点启用双向TLS。
我们知道未使用的连接器可能会无意中使服务器暴露于潜在的威胁中。检查服务配置并禁用应用程序操作不需要的任何连接器是必要的。类似地,组织应该使用来自可信证书颁发办法机构的有效TLS证书,并在Tomcat中设置它们。这包括配置密钥秘钥存储库和信任存储库,访问证书链以及为了进一步的安全性启用证书撤销检查。
必须禁用过时和易受攻击的TLS协议版本,并强制使用TLS 1.2或1.3。这降低了由于旧协议和密码套件中的已知漏洞而被利用的风险。弱密码套件容易受到攻击,因此,应该将Tomcat连接器配置为使用现代且健壮的密码套件,以便在安全性和性能之间取得去的平衡。
实现完美的前向保密密码,如ECDHE密码套装,确保即使服务器私钥被泄露,以前记录的TLS会话仍然是安全的。保护JMX或任何公开的端点也同样重要,就像保护连接器一样。这样的端点应该有适当的访问控制和启用TLS的安全密码套件。通过客户端证书身份验证启用双向TLS和mTLS身份验证。
为确保客户端和服务器都是用TLS证书对彼此进行身份验证。这种增强的身份验证级别降低了未经授权访问的风险,并保护敏感的API端点面授恶意用户的攻击。
身份验证和授权是web应用程序安全的关键组成部分,确保只有授权用户才能访问特定的资源和功能。Tomcat提供了各种身份验证机制来增强安全性和保护敏感数据。一个主要的安全考虑是避免使用Tomcat包中主机管理器提供的默认凭证,并使用唯一的密码。
与以Base64编码的明文形式发送用户名和密码的基本身份验证相比,我们始终建议使用发送散列凭证的摘要身份验证,鼓励使用基于表单的身份验证,该身份验证可以通过多因素身份验证进一步扩展。同样,单点登录增强了用户的可用性和便利性。
在集中认证和认证管理的同时,并减少密码疲劳的风险和多次登录尝试相关的潜在漏洞。Tomcat可以使用Realm来处理外部访问控制源的身份验证和授权,它可以集中用户管理,并允许组织跨各种应用程序应用现有的安全策略,提高一致性和管理便利性,可以为相互TLS身份验证或证书固定构建自定义阀门。这种自定义阀门允许组织实现针对其环境的特定安全需求。
带你读《Apache Tomcat的云原生演进》——Securing Apache Tomcat(4)https://developer.aliyun.com/article/1377506