读书笔记《apache-tomcat-7-essentials》保护Tomcat 7的安全
互联网在 21 世纪掀起了一场革命;它为我们提供了在几秒钟内收集信息的能力,而以前收集信息需要几个月的时间。这也引发了对信息隐私的安全担忧,并提出了通过 Internet 保护信息的要求。
每天,新技术都在不断涌现,以改善应用程序的 Internet 使用。随着市场上的这些技术,黑客和其他社区访问安全信息成为一项棘手的工作。
在本章中,我们将讨论以下主题:
Tomcat 安全权限
卡塔利娜房产
Tomcat 7 上的 SSL 实现
安全性是 IT 公司的主要关注点,因此每个公司都创建了一个单独的 IT 安全管理部门。他们的主要职责是确保网络、Web 和操作系统基础设施方面没有漏洞。
我们应该从 Tomcat 网站或任何安全的已知主机下载 Tomcat。如果我们从未知来源下载恶意软件,Tomcat 就有可能附带恶意软件。下载完成后,使用 MD5/PGP 验证 Tomcat 的完整性。对于 Linux,MD5 可以通过 Open Specification for Pretty Good Privacy (OpenPGP< /strong>)。这是生产系统过程中必须的。
Apache Tomcat 带有良好的安全启用选项,但每个环境都有自己的安全要求,具体取决于应用程序的使用情况。例如,银行网站需要高度的安全性,而基于用户的应用程序则需要很少的安全性。
在 Tomcat 7 中,默认权限配置在 TOMCAT_HOME/Conf
目录中。安全性是构成系统的四个文件的集体努力。让我们讨论每个文件及其功能。
该文件包含包的访问、包定义、通用加载器、共享加载器以及JAR文件列表等相关信息,这些信息在Tomcat启动时不需要扫描。它有助于提高性能,因为将太多 JAR 文件添加到跳过列表会提高内存消耗。如果要添加任何常见的 JAR,则必须在 catalina.properties
下定义它。
在生产环境中,一些库 JAR 在许多 Tomcat 实例之间共享,在这种情况下,我们可以使用 shared loader 参数。默认情况下,Tomcat 7 策略附带以下软件包以增强安全性。我们可以根据应用程序的要求和使用类型自定义策略。以下是 catalina.properties 中使用的关键语法:
此文件包含运行时使用的 Tomcat 权限详细信息及其部署的应用程序。如果您想从不同目录访问任何系统参数,例如操作系统详细信息、Tomcat 内部代码或 Web 应用程序代码,您可以在此处定义权限。在 Tomcat 7 上基本上可以实现三种权限。下图显示了 Catalina 的不同类型的策略:
此策略允许您访问 Java 库,该库需要在运行时由 Tomcat 实例进行验证。以下代码显示为 Java 库授予完全访问权限:
以下几点描述了我们可以在 Tomcat 7 中添加的不同自定义策略:
对 Web 应用程序的文档根目录的读/写访问 (R/W)。
用户对 Web 应用程序目录的读取、写入和删除访问权限。以下屏幕截图显示了不同的选项:
在本主题中,我们将讨论用于保护 Tomcat 7 的最佳实践。保护 Tomcat 不仅仅意味着 Tomcat,它包括 Tomcat 配置和其他基础设施配置。我们先从 Tomcat 配置开始。
保护 Tomcat 7 的方法有多种,具体取决于应用程序的要求和 IT 组织使用的安全策略。
在 Tomcat 7 中,有不同的配置,需要更改或启用这些配置以保护 Tomcat 的外部环境。让我们讨论一下每种配置及其在实时环境中的用法。
默认情况下,Tomcat 7 使用 HTTP 协议在端口 8080 上运行。众所周知,默认端口,黑客更容易攻击该端口并陷阱服务器。因此,始终建议更改连接器端口以及在 8009 上运行的 AJP 端口,以保护 Tomcat。
我们可以通过查看 Windows 和 Linux 中的 services
文件来检查不同服务使用的端口。下表详细介绍了 Windows 和 Linux 中 services
文件的位置。此信息对于避免两个服务之间的端口冲突非常有用。
以下屏幕截图显示了各种应用程序使用的不同端口:
操作系统 |
|
---|---|
Linux |
|
视窗 |
|
The network administrator is responsible for allocating new ports and updating assigned ports in the previous code, which will be in effect after the recycle.
在上一节中, Tomcat 设置,我们已经讨论了 Tomcat 级别的配置来实现 Tomcat 7 的安全策略。在实时环境中,使用新的和最新的技术,这些设置不足以应对安全威胁。为了使系统更安全,我们必须保护我们的基础设施。让我们讨论一些保护 Web 基础架构的最佳实践。
我们不应该以 root 用户身份运行 Tomcat。相反,创建一个新用户并授予该用户运行 Tomcat 服务器的权限。配置文件也应该有root和用户组的权限,其他目录如 logs
,应该有这个用户/组的读/写权限。
如果 Tomcat 不是前端应用程序,则应该在内部区域中配置它,并且只有连接器端口(AJP 端口)应该从外部 DMZ 服务器打开。如果在任何情况下,Tomcat 是在前端应用程序中配置的,那么数据库服务器应该放置在具有完全防火墙限制的内部区域中。为了创建强大的防火墙,我们可以使用系统防火墙在操作系统级别启用或禁用端口。您还可以验证防火墙规则是否放置正确。
在 Windows 中,我们可以通过 netsh
命令验证防火墙设置,方式如下:
前面的命令显示防火墙规则的当前状态。
前面的命令显示了防火墙的运行模式状态。以下屏幕截图显示了前两个命令的输出:
为了添加或删除任何防火墙策略,我们可以运行以下命令:
前面的命令允许我们编辑配置规则。
以下命令在子网上添加 TCP 端口 8085。因此,此端口可在系统外部访问。
在 Linux 中,我们可以使用 iptables
命令以如下方式验证防火墙设置:
以下屏幕截图显示了 Linux 环境的防火墙规则。目前,没有定义防火墙规则:
如果我们必须编辑防火墙规则,则需要执行以下命令:
前面的命令定义了防火墙规则,它通过 TCP 协议接受从任何地方到目标 192.168.1.2 的所有请求。
Note
有关 DMZ 的更多信息,请访问 http://en.wikipedia.org/wiki /非军事区。
Secure Socket Layer (SSL) 是另一种保护数据的方式沟通。它是一种加密协议,其中数据通过安全通道传输。服务器向客户端浏览器发送一个安全密钥,客户端浏览器对其进行解密,然后在服务器和客户端之间进行握手,或者我们可以说这是安全层上的双向握手。
如果您使用 Tomcat 作为前端服务器,SSL 会更有效。如果您使用的是 Apache 或 IIS,则建议在 Apache 或 IIS 服务器上安装 SSL。
安装 SSL 的过程因每个服务器而异,但每个服务器都有某些参数是通用的,用于生成证书签名请求(企业社会责任)。生成 CSR 的方法可能会有所不同,但生成 CSR 所需的信息保持不变。下表提供了 CSR 模板:
企业社会责任属性 |
需要生成哪些 CSR 的域信息 |
---|---|
通用名称 |
定义域名 |
组织 |
机构名称 |
部门 |
机构部门名称 |
城市 |
该组织所在的城市 |
状态 |
该组织所在的州 |
国家 |
该组织所在的国家 |
密钥大小 |
2048(加密位) |
让我们在 Tomcat 7 上实时实现 SSL 证书的安装。我们将通过执行以下步骤在 Tomcat 7 中为 host tomcat7packtpub.com
安装 SSL 证书:
1. 为
tomcat7packtpub.com
创建一个 CSR 模板。企业社会责任属性
需要生成哪些 CSR 的域信息
通用名称
tomcat7packtpub.com
组织
tomcat7packtpub.com
部门
雄猫
城市
海德
状态
美联社
国家
在
密钥大小
2048
2. 我们需要为主机
tomcat7packtpub.com
创建CSR。为了创建 CSR,我们需要运行JAVA_HOME/bin
中的keytool
。以下命令将捕获 CSR 的参数:3. 使用以下命令生成 CSR 格式的证书。它将询问密码并将其发送给相应的供应商以创建签名证书。
4. 将证书导入以下 Tomcat 密钥库。复制
TOMCAT_HOME/conf
中的tomcat7.jks
。
一旦您签署了现在创建的证书,就该更改 Tomcat 配置了。
1. 打开
server.xml
并更改设置,如以下代码片段所示:2. 保存
server.xml
并重启Tomcat服务。3. 安装完成后,下一步是验证 SSL。您可以使用 URL
https://yoursitename
或https://localhost:8443
访问应用程序。在这里,我们没有创建签名证书,因为它是一项付费服务,但我们可以使用 www.gmail。 com 为例,它也使用 SSL。点击 URL,页面加载后,您将看到 SSL 图标。点击查看证书详情,如下截图:-