如何保证Tomcat安全?Tomcat配置安全,应用安全和传输安全实现详解

377 阅读3分钟

这是我参与2022首次更文挑战的第24天,活动详情查看:2022首次更文挑战

配置安全

  • 安装Tomcat后,删除webapps目录下的文件,禁用Tomcat管理界面
  • 注释或者删除tomcat-users.xml文件内用户的权限
  • 更改或者禁用Tomcat监听的指令:
    • Tomcatserver.xml中定义了关闭Tomcat实例监听的端口指令,默认端口是8005
    • 此时,只要听过telnet连接上该端口后,通过默认的SHUTDOWN指令就可以关闭Tomcat实例.这里实例关闭了,但是进程是存在的
    • 所以需要修改Tomcat监听的指令:
      • 方案一 : 更改默认的端口号和指令
      <Server port="8886" shudown="tomcat_shutdown">
      
      • 方案二 : 禁用Tomcat监听关闭实例指令的端口
      <Server port="-1" shutdown="SHUTDOWN">
      
  • 自定义错误页面:
    • webapps/ROOT目录下自定义错误页面404.html500.html
    • 然后在tomcat/conf/web.xml配置错误页面
    <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>
    

应用安全

  • 在大部分Web应用中,特别是后台应用系统,都会实现安全管理的权限模块,用于控制系统的安全访问
  • 应用安全包含两个部分:
    • 认证:
      • 登录
      • 单点登录
    • 授权:
      • 功能权限
      • 数据权限
  • 对于业务系统而言,可以自定义一套业务系统的权限模块,也可以直接使用一些功能完善的安全框架,集成到web应用中,比如SpringSecurityApache Shiro

传输安全

HTTPS协议

  • HTTPS: 超文本传输安全协议Hypertext Transfer Protocol Secure
    • HTTPS协议是一种网络安全传输协议
    • HTTPS协议是在HTTP协议的基础上增加SSL或者TLS进行数据加密,保护交换的数据不被泄漏和窃取

SSL协议

  • SSLTLS是用于网络通信安全的加密协议,允许在客户端和服务器之间通过安全链接进行通信
  • SSL协议具有以下三个特性:
    • 保密: 通过SSL链接传输的数据加密
    • 鉴别: 通信双方的身份鉴别,至少有一方需要进行验证.通常是可选的
    • 完整性: 传输数据的完整性检查
  • 从性能角度而言,加密解密是一项具有昂贵计算的处理,因此,不需要将整个Web应用都采用SSL链接.在实际部署的过程中,只需要选择有必要进行安全加密的页面,也就是存在敏感信息传输的页面采用SSL通信

HTTPS和HTTP比较

  • HTTPS协议需要到证书颁发机构CA申请SSL证书,然后和域名进行绑定 . HTTP不需要申请证书
  • HTTPS是具有SSL加密传输安全性的传输协议,对数据的传输进行加密,相当于是HTTP的升级版 . HTTP是超文本传输协议,是应用层的信息传输协议
  • HTTPSHTTP采用完全不同的连接方式,使用的默认端口不一样 . HTTPS使用的8443端口 . HTTP使用的是8080端口
  • HTTPS协议是由SSL+HTTP协议构建的可以进行加密传输,身份认证的网络协议,比HTTP协议安全 . HTTP协议是无状态的连接简单的协议

HTTP协议的优点

  • 提高网站排名,有利于SEO
  • 隐私信息加密,防止流量劫持
  • 浏览器受信任

Tomcat配置HTTPS

  • 生成密钥库文件: 输入对应的密钥库密码和密钥口令等信息之后,会在当前文件夹中生成一个密钥库文件
keytool -genkey -alias tomcat -keyalg RSA -keystore tomcatkey.keystore
  • 将密钥库文件tomcatkey.keystore拷贝到tomcat/conf目录下
  • tomcat/conf/server.xml中配置HTTPS协议
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" schema="https" SSLEnabled="true">
	<SSLHostConfig certificateVerification="false">
		<Certificate certificateKeystoreFile="conf/tomcatkey.keystore" certificateKeystorePassword="tomcat" type="RSA"></Certificate>
	</SSLHostConfig>
</Connector>