tomcat 安全规范(tomcat安全加固和规范)

tomcat是一个开源Web服务器,基于Tomcat的Web运行效率高,可以在一般的硬件平台上流畅运行,因此,颇受Web站长的青睐。不过,在默认配置下其存在一定的安全隐患,可被恶意攻击。以下是一些安全加固的方法:

版本安全

升级到最新稳定版,出于稳定性考虑,不建议进行跨版本升级。

服务降权

不要使用root用户启动tomcat,使用用普通用户启动Tomcat,集群内用户名统一UID

端口保护

1 更改tomcat管理端口8005 ,此端口有权限关闭tomcat服务,但要求端口配置在8000~8999之间,并更改shutdown执行的命令
2 若 Tomcat 都是放在内网的,则针对 Tomcat 服务的监听地址都是内网地址
3 修改默认的ajp 8009端口为不易冲突(大于1024),但要求端口配置在8000~8999之间

禁用管理端

1 删除默认$CATALINA_HOME/conf/tomcat-users.xml文件,重启tomcat将会自动生成新的文件
2 删除$CATALINA_HOME/webapps下载默认的所有目录和文件
3 将tomcat应用根目录配置为tomcat安装目录以外的目录

隐藏Tomcat的版本信息

针对该信息的显示是由一个jar包控制的,该jar包存放在$CATALINA_HOME/lib目录下,名称为 catalina.jar,
通过 jar xf 命令解压这个 jar 包会得到两个目录 META-INF 和 org ,
修改 org/apache/catalina/util/ServerInfo.properties 文件中的 serverinfo 字段来实现来更改我们tomcat的版本信息

关闭war自动部署

默认 Tomcat 是开启了对war包的热部署的。为了防止被植入木马等恶意程序,因此我们要关闭自动部署。

修改实例:

<Host name="localhost" appBase=""
           unpackWARs="false" autoDeploy="false">

自定义错误页面

编辑conf/web.xml,在</web-app>标签上添加以下内容:

<error-page>
  <error-code>404</error-code>
  <location>/404.html</location>
</error-page>
<error-page>
  <error-code>500</error-code>
  <location>/500.html</location>
</error-page>

屏蔽目录文件自动列出

编辑conf/web.xml文件

<servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
    <init-param>
      <param-name>debug</param-name>
      <param-value>0</param-value>
    </init-param>
    <init-param>
      <param-name>listings</param-name>
      <param-value>false</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

<param-value>false</param-value>

这里false为不列出,true为充许列出

多虚拟主机

强烈建议不要使用 Tomcat 的虚拟主机,推荐每个站点使用一个实例。即,可以启动多个 Tomcat,而不是启动一个 Tomcat 里面包含多个虚拟主机。
因为 Tomcat是多线程,共享内存,任何一个虚拟主机中的应用崩溃,都会影响到所有应用程序。虽然采用多实例的方式会产生过多的开销,但至少保障了应用程序的隔离和安全。

脚本权限回收

控制CATALINAHOME/bin目录下的start.sh、catalina.sh、shutdown.sh的可执行权限
chmod−R744 CATALINA_HOME/bin/*

分离 Tomcat 和项目的用户

为了防止 Tomcat 被植入 web shell 程序后,可以修改项目文件。因此我们要将 Tomcat 和项目的属主做分离,这样子,即便被搞,他也无法创建和编辑项目文件。

server head重写

在HTTP Connector配置中加入server的配置 server="server_name",默认是Apache-Copyote/1.1
通过配置,限定访问的IP来源

<Host name="localhost"  appBase="/data/www/tomcat_webapps"   unpackWARs="true" autoDeploy="false">
   <Valve className="org.apache.catalina.valves.RemoteAddrValve"  allow="192.168.1.10,192.168.1.30,192.168.2.*" deny=""/> 
   <Valve className="org.apache.catalina.valves.RemoteHostValve"  allow="www.test.com,*.test.com" deny=""/>
</Host>

访问日志格式规范
开启tomcat默认访问日志中Referer和User-Agent记录

标准配置:

<Valve className="org.apache.catalina.valves.AccessLogValve"
   directory="logs" prefix="localhost_access_log"
     suffix=".txt" pattern="%h %l %u %t "%r" %s %b %{Referer}i %{User-Agent}i %D"
     resolveHosts="false" />

tomcat禁用非法HTTP方法

编辑web.xml文件中配置

org.apache.catalina.servlets.DefaultServlet的
<init-param>
<param-name>readonly</param-name>
<param-value>true</param-value>
</init-param> 

其中param-value为true时,即不允许delete和put操作。

tomcat用户具有远程管理权限
在tomcat-users.xml中,修改tomcat用户的role值包含manager,如:

<user username="tomcat" password="***"
roles="manager">

tomcat自动登出时间不大于30秒
编辑server.xml,修改自动登出时间为30秒,如下:

<Connector
port="8080" maxHttpHeaderSize="8192" maxThreads="150"
minSpareThreads="25" maxSpareThreads="75"、
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="30000" disableUploadTimeout="true" />

tomcat应根据机器性能和业务需求,设置最小连接数和最大连接数

编辑server.xml文件,

样例如下: <Connector port="8080" minSpareThreads="25" ……/>
minSpareThreads=“25” 表示即使没有人使用也开这么多空线程等待
根据实际情况设置连接数

编辑server.xml文件,
样例如下: <Connector port="8080" maxThreads="150"……/>
maxThreads=“150” 表示最多同时处理150个连接
根据实际情况配置连接数

Tomcat配置访问日志
修改server.xml,将如下内容的注释标记取消:

<Valve className=”org.apache.catalina.valves.AccessLogValve”
Directory=”logs” prefix=”localhost_access_log.” Suffix=”.txt”
Pattern=”common” resloveHosts=”false”/>

配置Tomcat错误页面重定向

编辑web.xml文件,修改如下:

<error-page>
<error-code>404</error-code>
<location>/noFile.htm</location>
</error-page>
……………
<error-page>
<exception-type>java.lang.NullPointerException</exception-type>
<location>/ error.jsp</location>
</error-page>

这篇文章就介绍到这了,后续我们小编会为大家分享更多的知识。

(0)

相关推荐

  • Tomcat服务器 安全设置第1/3页

    另外,由于其功能比较单纯需要我们进一步地进行设置.本机将从安全和功能两方面谈谈基于Tomcat的Web服务器的部署,希望对大家有所帮助. 环境描述 OS:Windows Server 2003 IP:192.168.1.12 Tomcat:6.0.18 1.安全测试 (1).登录后台 在Windows Server 2003上部署Tomcat,一切保持默认.然后登录Tomcat后台,其默认的后台地址为: http://192.168.1.12:8080/manager/html.在浏览器中输入该

  • 基于Tomcat安全配置与性能优化详解

    Tomcat 是 Apache软件基金会下的一个免费.开源的WEB应用服务器,它可以运行在 Linux 和 Windows 等多个平台上,由于其性能稳定.扩展性好.免费等特点深受广大用户喜爱.目前,很多互联网应用和企业应用都部署在 Tomcat 服务器上,比如我们公司,哈. 之前我们 tomcat 都采用的是默认的配置,因此在安全方面还是有所隐患的.上周对测试环境的所有服务器的tomcat都做了安全优化,其间也粗略做了一些性能优化,这里就简单记录分享下! 一.版本安全 升级当前的tomcat版本

  • tomcat服务器安全设置方法

    Tomcat是一个HTTP服务器,是Sun透过Java Community Process开发的.对广泛使用的Servlet和JavaServer Page(JSP)技术的正式参考实作.Servlet和JSP技术用于建构HTTP服务器应用程序.虽然Servlet技术中加入了许多特性(包括存取安全性.Session管理和执行绪控制).JSP技术提供了一种处理动态生成的 HTML 页面的简便方法,这些 HTML 页面被直接编译成 Servlet 以用于快速执行时作业.Tomcat除了上述的两种技术保

  • web安全—tomcat禁用WebDAV或者禁止不需要的 HTTP 方法

    WebDAV WebDAV (Web-based Distributed Authoring and Versioning)是基于 HTTP 1.1 的一个通信协议.它为 HTTP 1.1 添加了一些扩展(就是在 GET.POST.HEAD 等几个 HTTP 标准方法以外添加了一些新的方法),使得应用程序可以直接将文件写到 Web Server 上,并且在写文件时候可以对文件加锁,写完后对文件解锁,还可以支持对文件所做的版本控制.这个协议的出现极大地增加了 Web 作为一种创作媒体对于我们的价值

  • Tomcat安全设置 win2003 下tomcat权限限制

    实验环境:microsoft windows server 2003 Service Pack 2, tomcat 6.0.18 1.新建一个tomcat管理用户: 2.给tomcat 用户启动tomcat服务: 3.设置tomcat以tom启动: 4.再给tomcat安装目录和jdk目录相应的权限: tocat目录:各工作目录的权限要设置好,否则即使tomcat能启动,也不能正常运行,这里我给了"完全控制",可以设置更细一点. jdk目录: 经过设置之后,即使不小心被上传了jsp木马

  • windows使用批处理发布web到tomcat并启动tomcat脚本分享

    复制代码 代码如下: @ECHO OFF@REM 部署WEB系统到Tomcatset date=%date:~0,10%set time=%time:~0,8%set currDate=%date% %time%echo 开始运行将工作空间里面编译后的代码拷贝到Tomcat中...%currDate% echo 设置参数set WORK_SPACE=J:\飘\IT\workspaceset PRJ_NAME=MyStruts1Prjset PRJ_WEB_ROOT=MyStruts1Prj\We

  • PHP开发规范手册之PHP代码规范详解

    涉及多个方面,比如PHP代码规范.PHP文件命名规范.网站开发流程.网站安全与维护等.作为PHP开发规范的开篇,我从一个纯PHP开发者的角度来说说我所认为的PHP代码规范,主要从PHP目录框架结构.PHP代码书写规范.PHP文件命名规范三个角度来阐述,希望对PHP入门学习者有所帮助. 合理建设PHP目录框架结构 我们知道在使用PHP进行网站开发之前,我们需要建设网站的目录结构,网站目录框架结构设计得合理规范,不但有利于网站开发,而且对SEO,网站推广都有好处. 一般最基础的PHP网站结构涉及图片

  • Linux(CentOS7)安装Tomcat与设置Tomcat为开机启动项(tomcat8为例)

    安装Tomcat 下载Tomcat压缩包 Tomcat有Tomcat7,Tomcat8和Tomcat9等版本,目前企业使用较多的是Tomcat8,所以这里以Tomcat8为列 进入Tomcat8下载网址:Tomcat8下载网址https://tomcat.apache.org/download-80.cgi 点击左侧Download下的对应版本,这里我下载的是apache-tomcat-8.5.47.tar.gz,即Linux环境的压缩包 Tomcat主要有三个安装版本 tar.gz:Linux

  • tomcat 安全规范(tomcat安全加固和规范)

    tomcat是一个开源Web服务器,基于Tomcat的Web运行效率高,可以在一般的硬件平台上流畅运行,因此,颇受Web站长的青睐.不过,在默认配置下其存在一定的安全隐患,可被恶意攻击.以下是一些安全加固的方法: 版本安全 升级到最新稳定版,出于稳定性考虑,不建议进行跨版本升级. 服务降权 不要使用root用户启动tomcat,使用用普通用户启动Tomcat,集群内用户名统一UID 端口保护 1 更改tomcat管理端口8005 ,此端口有权限关闭tomcat服务,但要求端口配置在8000~89

  • 在IDEA中配置tomcat并创建tomcat项目的图文教程

    上篇文章给大家介绍了在idea中将创建的java web项目部署到Tomcat中的过程图文详解,可以参考下,本文给大家继续介绍如何在IDEA中配置tomcat并创建tomcat项目. 如何配置? 1.菜单栏中的Run - Edit Configurations 2.Templates - Tomcat Server - Local - 点击Configure选择Tomcat所在的文件夹(端口号不改)-点击OK 如何创建? New - Moudle - Java Enterprise - 勾选We

  • 使用Tomcat Native提升Tomcat IO效率的方法详解

    简介 IO有很多种,从最开始的Block IO,到nonblocking IO,再到IO多路复用和异步IO,一步一步的将IO的性能提升做到极致. 今天我们要介绍一下怎么使用Tomcat Native来提升Tomcat IO的效率. Tomcat的连接方式 Tomcat中使用连接器来处理与外部客户端的通信.Connecter主要用来接受外部客户端的请求,并转交给处理引擎处理. 在Tomcat中有两种Connector.一种是 HTTP connector, 一种是AJP connector. HT

  • 详解Redis中key的命名规范和值的命名规范

    数据库中得热点数据key命名惯例 表名:主键名:主键值:字段名 例如 user:id:0001:name 例如 user:id:0002:name 例如 order:id:s2002:price 上面的key对应的值则可以是 存放的方式 key value 优点 单独的key:value形式 order:id:s2002:price 2000 方便简单的操作,例如incr自增或自减 json格式 user:id:0001 {id:0001,name:"张三"} 方便一次性存和取数据,但

  • JAVA开发中的一些规范讲解(阿里巴巴Java开发规范手册)

    一.编程规约 (一) 命名规约 1.   [强制]所有编程相关命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束.反例: _name / __name / $Object / name_ / name$ / Object$ 2.   [强制]所有编程相关的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式.说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义.注意,即使纯拼音命名方式也要避免采用. 反例: DaZhePromotion [打折] / getPingfen

  • Tomcat架构设计及Servlet作用规范讲解

    目录 1.Servlet规范 1.1 Servlet作用讲解 1.2 Servlet核心API 1.3 ServletRequest 1.4 ServletResponse 2.Tomcat的设计 2.1 什么是Tomcat 2.2 Tomcat的架构结构 2.3 组件分类 1.Servlet规范 1.1 Servlet作用讲解 Servlet是JavaEE规范中的一种,主要是为了扩展Java作为Web服务的功能,统一定义了对应的接口,比如Servlet接口,HttpRequest接口,Http

  • Dockerfile制作官方Tomcat镜像及镜像使用详解

    这两天学习了Dockerfile感觉这个地方知识点挺多的,而且很重要,所以,今天添加一点小笔记. 官方Tomcat镜像 地址:https://hub.docker.com/_/tomcat/ 镜像的Full Description中,我们可以得到许多信息,这里简单介绍几个: 1.Supported tags and respective Dockerfile links 支持的标签,以及对应的Dockerfile链接.一个Dockerfile可以对应多个标签,我们将以8.5.16-jre8版本的

随机推荐