本文概述
- 删除服务器横幅
- 使用安全管理器启动Tomcat
- 启用S??SL / TLS
- 实现HTTPS
- 将Secure&HttpOnly标志添加到Cookie
- 从非特权帐户运行Tomcat
- 删除默认/不需要的应用程序
- 更改SHUTDOWN端口和命令
- 替换默认的404、403、500页
Tomcat是最流行的Servlet和JSP容器服务器之一。以下一些高流量网站使用它:
- LinkedIn.com
- Dailymail.co.uk
- Comcast.net
- Wallmart.com
- Reuters.com
- Meetup.com
- Webs.com
文章图片
资料来源:Plumbr
从技术上讲, 你可以将Tomcat用作前端服务器来直接服务站点请求。但是, 在生产环境中, 你可能希望使用某些Web服务器(如Apache, Nginx)作为前端将请求路由到Tomcat。
使用Web服务器处理请求可以提高性能和安全性。如果将Apache HTTP用作前端Web服务器, 则还必须考虑确保其安全。
使用默认的Tomcat配置可能会泄露敏感信息, 这有助于黑客为对应用程序的攻击做好准备。
以下是在Tomcat 7.x和UNIX环境下进行的测试。
听众
这是为中间件管理员, 应用程序支持, 系统分析师或任何正在工作或渴望学习Tomcat强化和安全性的人员设计的。
必须具备Tomcat&UNIX命令的良好知识。
笔记
我们需要一些工具来检查HTTP标头以进行验证。有两种方法可以执行此操作。
如果测试面向Internet的应用程序, 则可以使用以下HTTP Header工具来验证实现。
- HTTP标头检查器
- 黑客目标
最佳做法是, 你必须备份要修改的任何文件。
在本指南中, 我们将Tomcat安装文件夹称为$ tomcat。
让我们来看看强化和保护程序。
删除服务器横幅 从HTTP标头中删除服务器横幅是进行加固的第一件事。
使用服务器标语公开你正在使用的产品和版本, 并导致信息泄漏漏洞。
默认情况下, Tomcat服务的页面将显示如下。
文章图片
让我们从” 服务器” 标题中隐藏产品和版本的详细信息。
- 转到$ tomcat / conf文件夹
- 使用vi修改server.xml
- 将以下内容添加到连接器端口
Server =" "
例如:–
<
Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
Server =" "
redirectPort="8443" />
- 保存文件并重新启动Tomcat。现在, 当你访问应用程序时, 应该看到” 服务器” 标头的空白值。
文章图片
使用安全管理器启动Tomcat 安全管理器可保护你免受浏览器中运行的不受信任的applet的侵害。
使用安全管理器运行Tomcat优于不使用安全管理器运行。 Tomcat具有有关Tomcat Security Manager的出色文档。
这样做的好处是你不需要更改任何配置文件。这只是你执行startup.sh文件的方式。
你要做的就是以–security参数启动tomcat。
[[email
protected] bin]# ./startup.sh -security
Using CATALINA_BASE: /opt/tomcat
Using CATALINA_HOME: /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
Using Security Manager
Tomcat started.
[[email
protected] bin]#
启用S??SL / TLS 通过HTTPS服务Web请求对于保护客户端和Tomcat之间的数据至关重要。为了使你的Web应用程序可以通过HTTPS访问, 你需要实现SSL证书。
假设你已经准备好证书的密钥库, 则可以在连接器端口部分的server.xml文件中添加以下行。
SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS"
用你的密钥库文件名和密码更改。
【Apache Tomcat强化和安全性指南】如果你需要有关密钥库和CSR流程的帮助, 请参阅本指南。
实现HTTPS 仅在启用SSL的情况下适用。如果没有, 它将中断应用程序。
启用S??SL后, 最好将所有HTTP请求重定向到HTTPS, 以确保用户与Tomcat应用程序服务器之间的安全通信。
- 转到$ tomcat / conf文件夹
- 使用vi修改web.xml
- 在< / web-app> 语法之前添加以下内容
<
security-constraint>
<
web-resource-collection>
<
web-resource-name>
Protected Context<
/web-resource-name>
<
url-pattern>
/*<
/url-pattern>
<
/web-resource-collection>
<
user-data-constraint>
<
transport-guarantee>
CONFIDENTIAL<
/transport-guarantee>
<
/user-data-constraint>
<
/security-constraint>
- 保存文件并重新启动Tomcat
这是通过在web.xml文件的session-config部分的行下面添加来完成的
<
cookie-config>
<
http-only>
true<
/http-only>
<
secure>
true<
/secure>
<
/cookie-config>
配置屏幕截图:
文章图片
保存文件, 然后重新启动Tomcat以检查HTTP响应标头。
从非特权帐户运行Tomcat 最好为Tomcat使用一个单独的非特权用户。这里的想法是在任何帐户被盗用的情况下保护运行的其他服务。
- 创建一个UNIX用户, 例如tomcat
useradd tomcat
- 如果正在运行, 请停止Tomcat
- 将$ tomcat所有权更改为用户tomcat
chown -R tomcat:tomcat tomcat/
启动Tomcat, 并确保它与tomcat用户一起运行
删除默认/不需要的应用程序 默认情况下, Tomcat随附以下Web应用程序, 在生产环境中可能需要或不需要。
你可以删除它们以使其保持干净, 并避免使用Tomcat默认应用程序的任何已知的安全风险。
- ROOT –默认欢迎页面
- 文档– Tomcat文档
- 示例–用于演示的JSP和servlet
- 主机管理员经理– Tomcat管理
[[email
protected] webapps]# ls -lt
drwxr-xr-x 14 tomcat tomcat 4096 Sep 29 15:26 docs
drwxr-xr-x 7 tomcat tomcat 4096 Sep 29 15:26 examples
drwxr-xr-x 5 tomcat tomcat 4096 Sep 29 15:26 host-manager
drwxr-xr-x 5 tomcat tomcat 4096 Sep 29 15:26 manager
drwxr-xr-x 3 tomcat tomcat 4096 Sep 29 15:26 ROOT
[[email
protected] webapps]#
更改SHUTDOWN端口和命令 默认情况下, tomcat配置为在8005端口上关闭。
你是否知道可以通过对IP:端口进行telnet并发出SHUTDOWN命令来关闭tomcat实例?
Chandans # telnet localhost 8005
Trying ::1... telnet:
connect to address ::1:
Connection refused Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
SHUTDOWN Connection closed by foreign host.
Chandans #
危险的!
你会看到, 使用默认配置会带来很高的安全风险。
建议将tomcat shutdown端口和默认命令更改为不可预测的值。
- 在server.xml中修改以下内容
<
Server port="8005" shutdown="SHUTDOWN">
8005 –更改为其他未使用的端口
关机–更改为复杂的内容
前
<
Server port="8867" shutdown="NOTGONNAGUESS">
替换默认的404、403、500页 找不到默认页面(禁止), 服务器错误公开了版本详细信息。
让我们看一下默认的404页面。
文章图片
为了缓解这种情况, 你可以先创建一个常规错误页面, 然后将web.xml配置为重定向到常规错误页面。
- 转到$ tomcat / webapps / $ application
- 使用vi编辑器创建error.jsp文件
<
html>
<
head>
<
title>
Error Page<
/title>
<
/head>
<
body>
That's an error! <
/body>
<
/html>
- 转到$ tomcat / conf文件夹
- 在web.xml文件中添加以下内容。确保在< / web-app> 语法之前添加
<
error-page>
<
error-code>
404<
/error-code>
<
location>
/error.jsp<
/location>
<
/error-page>
<
error-page>
<
error-code>
403<
/error-code>
<
location>
/error.jsp<
/location>
<
/error-page>
<
error-page>
<
error-code>
500<
/error-code>
<
location>
/error.jsp<
/location>
<
/error-page>
- 重新启动tomcat服务器进行测试
文章图片
好多了!
你也可以针对java.lang.Exception执行此操作。如果有任何Java lang异常, 这将有助于不公开tomcat版本信息。
只需在web.xml中添加以下内容, 然后重新启动tomcat服务器。
<
error-page>
<
exception-type>
java.lang.Exception<
/exception-type>
<
location>
/error.jsp<
/location>
<
/error-page>
我希望以上指南能为你提供保护Tomcat的想法。如果你想了解有关Tomcat管理的更多信息, 请查看此在线课程。
推荐阅读
- Apache Web服务器强化和安全性指南
- win8 64位系统下如何查看电脑端口与关闭剩余的端口【图】
- win8系统电脑更改WindowsApps文件夹提示没有权限怎样办?
- Windows8系统电脑下如何将页面快捷方式放置在桌面方便迅速打开【图】
- Windows 8系统下RPCSS服务被禁用无法运行怎样办
- ghost win8系统下载安装之后如何查看具体的激活时间【图文】
- win8开机黑屏怎样办 win8安装后出现黑屏的处理办法
- Win8关机办法大集锦 win8关机快捷键
- win8怎样关机 win8如何关机 win8关机技巧【图文】