引用自:http://yaoyan.me/2017/04/Tomcat-config1/

tomcat非配置项的策略问题,参考官方文档:Non-Tomcat setting

大意如下:

Tomcat配置不应该是唯一的防线。系统中的其他组件(操作系统、网络、数据库等)也应被保护。 Tomcat不应在root用户下运行。为Tomcat进程创建专用用户,并向用户提供操作系统的最小必要权限。例如,不可能使用Tomcat用户远程登录。 文件权限也应适当限制。以ASF的Tomcat实例为例(那里自动部署被禁用且Web应用程序使用目录部署),标准设置是所有的Tomcat文件为root所有,所属组为Tomcat组,同时所有者拥有读写权限,组只有读权限,其他用户没有任何权限。日志(logs)、临时目录(temp)和工作目录(work)例外,它们属于Tomcat用户而不是root。这意味着,即使攻击者攻陷了Tomcat进程,他们也不能改变Tomcat配置,部署新的Web应用程序或修改现有的Web应用程序。

据此,修改设置如下:

1. 为tomcat配置文件和应用发布设置专门用户

  1. 我们已决定使用tomcat用户来启动tomcat进程,那么按照官方的安全设置建议,我们需要为tomcat配置文件和tomcat应用发布创建专门的用户:
[root@test-140 /]# useradd -d /usr/users/tomcatconf  -g usr -m tomcatconf
[root@test-140 /]# useradd -d /usr/users/tomcatapp -g usr -m tomcatapp

2. 变更相关文件的所属用户及权限

  1. 去掉tomcat文件的other用户所有的权限。

     	[tomcat@test-140 apache-tomcat-7.0.76]$ cd ..
    [tomcat@test-140 app]$ ll
    总用量 8748
    drwxr-xr-x. 9 tomcat usr 172 4月 3 11:30 apache-tomcat-7.0.76
    -rw-r--r--. 1 tomcat usr 8957288 3月 9 22:08 apache-tomcat-7.0.76.tar.gz
    [tomcat@test-140 app]$ chmod -R o-wrx apache-tomcat-7.0.76
    [tomcat@test-140 app]$ ll
    总用量 8748
    drwxr-x---. 9 tomcat usr 172 4月 3 11:30 apache-tomcat-7.0.76
    -rw-r--r--. 1 tomcat usr 8957288 3月 9 22:08 apache-tomcat-7.0.76.tar.gz
  2. 将tomcat下的 webapps 的用户修改为tomcatapp,所属组保持为usr,并确保组权限为可读可执行,不能写。

     [root@test-140 apache-tomcat-7.0.76]# chown -R  tomcatapp:usr webapps
    [root@test-140 apache-tomcat-7.0.76]# chmod -R g-w webapps/
    [root@test-140 apache-tomcat-7.0.76]# chmod -R g+rx webapps/
  3. 将tomcat下其他目录,bin、conf、lib的用户修改为tomcatconf,所属组保持为usr,并确保组权限为可读可执行,不能写。

     [root@test-140 apache-tomcat-7.0.76]# chown -R  tomcatconf:usr  bin  conf  lib
    [root@test-140 apache-tomcat-7.0.76]# chmod -R g-w bin conf lib
    [root@test-140 apache-tomcat-7.0.76]# chmod -R g+rx bin conf lib

tomcat里目录权限变为:

[root@test-140 apache-tomcat-7.0.76]# ll
总用量 96
drwxr-x---. 2 tomcatconf usr 4096 4月 3 11:02 bin
drwxr-x---. 3 tomcatconf usr 174 4月 3 10:57 conf
drwxr-x---. 2 tomcatconf usr 4096 4月 3 10:13 lib
-rw-r-----. 1 tomcat usr 56846 3月 9 21:50 LICENSE
drwxr-x---. 2 tomcat usr 6 4月 3 10:55 logs
-rw-r-----. 1 tomcat usr 1239 3月 9 21:50 NOTICE
-rw-r-----. 1 tomcat usr 8965 3月 9 21:50 RELEASE-NOTES
-rw-r-----. 1 tomcat usr 16195 3月 9 21:50 RUNNING.txt
drwxr-x---. 2 tomcat usr 30 4月 3 10:13 temp
-rw-r-----. 1 tomcat usr 0 4月 3 11:30 test
drwxr-x---. 7 tomcatapp usr 81 3月 9 21:49 webapps
drwxr-x---. 3 tomcat usr 22 4月 3 10:14 work

此时,除了运行时需要写入的temp、work、logs目录外,其他目录tomcat用户均无法写入,tomcat用户无法再修改conf里的配置文件、bin里的启动脚本、webapps里的应用程序,此时再使用tomcat用户启动tomcat进程。

3. 设置tomcat主目录权限,使新建的同组用户能进入操作

因为tomcat部署在相关用户的主目录中,而CentOS的用户主目录默认只有本用户可以进入,所以,使用tomcatapp、tomcatconf登陆时,无法进入tomcat部署目录,无法进行配置修改和应用发布。

[tomcatapp@test-140 users]$ ll
总用量 0
drwx------. 6 tomcat usr 155 4月 3 11:55 tomcat
drwx------. 5 tomcatapp usr 107 4月 3 12:05 tomcatapp
drwx------. 3 tomcatconf usr 78 4月 3 10:04 tomcatconf
[tomcatapp@test-140 users]$ cd tomcat
-bash: cd: tomcat: 权限不够
[tomcatapp@test-140 users]$

需要tomcat用户主目录设置同组的读取和执行权限:

[root@test-140 users]# chmod g+rx tomcat

此时,tomcatapp、tomcatconf这些同组用户就可以进入tomcat的主目录进行相关操作:

[tomcatapp@test-140 users]$ ll
总用量 0
drwx------. 10 redis usr 275 3月 19 23:47 redis
drwx------. 6 sw usr 155 3月 19 18:20 sw
drwxr-x---. 6 tomcat usr 155 4月 3 11:55 tomcat
drwx------. 5 tomcatapp usr 107 4月 3 12:05 tomcatapp
drwx------. 3 tomcatconf usr 78 4月 3 10:04 tomcatconf
[tomcatapp@test-140 users]$ cd tomcat
[tomcatapp@test-140 tomcat]$ ll
总用量 0
drwxr-xr-x. 3 tomcat usr 69 4月 3 10:13 app
[tomcatapp@test-140 tomcat]$ cd app/apache-tomcat-7.0.76/webapps/
[tomcatapp@test-140 webapps]$ ll
总用量 8
drwxr-x---. 14 tomcatapp usr 4096 4月 3 10:13 docs
drwxr-x---. 7 tomcatapp usr 111 4月 3 10:13 examples
drwxr-x---. 5 tomcatapp usr 87 4月 3 10:13 host-manager
drwxr-x---. 5 tomcatapp usr 103 4月 3 10:13 manager
drwxr-x---. 3 tomcatapp usr 4096 4月 3 10:13 ROOT
[tomcatapp@test-140 webapps]$

这样就实现了tomcat 进程启动、配置管理、应用发布 权限分离,一定程度增加安全性。

tomcat非配置项的策略问题的更多相关文章

  1. 【出错记录】Tomcat非root用户启动无法拥有权限读写文件

    简单记录下,如有必要,将深入补充: 一.非root用户运行Tomcat及原因 由于项目中,为了安全需要,Tomcat将禁止以root形式启动,原因很简单,举个例子,一旦有人恶意将jsp文件透过某个别的 ...

  2. jenkins+svn+Ant+tomcat+非maven项目构建

    首先,输入项目名称,创建一个自由风格的项目; 然后,配置旧项目的策略参数,目的是防止构建项目太多,占用资源. 下一步,jdk版本选择: 下一步,关联svn项目. 下一步:配置ant 看不清,再来一张. ...

  3. Web系统与自控系统数据通讯架构 之 OPC DA DataChangeEventHandler 非热点数据更新策略 ,

    在使用OPC 采集 工控数据时,在DA模式下.采集数据通常用到 DataChangeEventHandler这个事件.但有时会遇到一些问题,就是当数据不变化时时不会触发 DataChange 这个事件 ...

  4. Tomcat非root身份运行制作Linux系统服务管理

    理论知识怱略,马上开始实战 一.首先准备好tomcat 启动.关闭.重启Shell脚本: 以下Shell脚本主要修改值 tomcatPath:tomcat目录 runUser:以哪个身份运行 此处测试 ...

  5. 企业级应用TOMCAT

    第1章 Tomcat 1.1 Tomcat简介 Tomcat是一个免开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不多的场合下被普遍使用,是开发调试JSP程序的首选,另 ...

  6. Spring Boot 学习系列(11)—tomcat参数配置建

    此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 在SpringBoot项目中,使用的是内嵌的Tomcat容器,相关的配置项如下表: 除去和默认值相同的配置, ...

  7. eclipse中将web项目部署到tomcat

    eclipse中将web项目部署到tomcat. myeclipse部署WEB项目到tomcat比较方便,但eclipse貌似默认是不会替你将web自动部署到tomcat下的.你Run as该web项 ...

  8. Eclipse中web项目部署至Tomcat步骤

    Eclipse的web工程至Tomcat默认的部署目录是在工程空间下,本文旨在将部署目录改为Tomcat安装目录,并解决依赖包输出问题. 1.在Eclipse中添加Tomcat服务器. 2.将web工 ...

  9. Eclipse中web项目部署至Tomcat【转】

    Eclipse的web工程至Tomcat默认的部署目录是在工程空间下,本文旨在将部署目录改为Tomcat安装目录,并解决依赖包输出问题. 1.在Eclipse中添加Tomcat服务器.  2.将web ...

  10. Java初转型-Tomcat安装和配置

    1.http://www.cnblogs.com/diegodu/p/5915358.html tomcat直接解压,启动然后测试是否正常. 2.http://www.cnblogs.com/mq00 ...

随机推荐

  1. 2022-04-22内部群每日三题-清辉PMP

    1.供应商建议项目经理,为了满足要求的规格,需要更换特定材料.为确保成本基准不受影响,项目经理应该审查下列哪一项? A.成本预测 B.挣值(EV)分析 C.管理储备 D.应急储备 2.项目经理确定项目 ...

  2. 2022-04-12内部群每日三题-清辉PMP

    1.一个项目的成本绩效指数(CPI)为1.2,且关键路径上的一个可交付成果落后于进度. 如果项目经理将项目回正轨,项目会发生什么情况? A.活动将并行执行 B.范围将被修改 C.成本和风险将会增加 D ...

  3. Python学习笔记之7.5 - 定义有默认参数的函数》》》直接在函数定义中给参数指定一个默认值,默认参数的值应该是不可变的对象

    问题: 你想定义一个函数或者方法,它的一个或多个参数是可选的并且有一个默认值. 解决方案: 定义一个有可选参数的函数是非常简单的,直接在函数定义中给参数指定一个默认值,并放到参数列表最后就行了.例如: ...

  4. 「SOL」E-Lite (Ural Championship 2013)

    为什么这数据能水到可以枚举角度 ac 啊 # 题面 给你 \(n\) 个平面向量 \((x_i,y_i)\),对于每个 \(k=1\sim n\),求「从给出的 \(n\) 个向量中不重复地选择 \( ...

  5. nkIO方法

    import java.util.*; public class Main{ public static void main(String args[]){ Scanner sc = new Scan ...

  6. Array 方法总结

    会改变自身的方法: 返回新数组的长度,改变原数组 1.push 2.pop 3.shift 4.unshif 返回新数组,改变原数组 5.reverse 6.sort 按字符串在字典中的顺序排序 自定 ...

  7. angular 父组件调用子组件的方法

  8. java中锁的应用(synchronized)

    在面试菜鸟的时候碰到的锁的编程问题,没答好,记录一下: package com.xielu.test; /** * Hello world! * */ public class App { priva ...

  9. 记 第一次linux下简易部署 django uwsgi nginx

    1.首先确定django项目是跑起来的 2.装nginx  uwsgi ,网上教程一大堆 3.uwsgi的配置了 我是通过ini启动的 随意找个顺手的文件夹创建uwsgi.ini文件 我是在/home ...

  10. 第12组 Beta冲刺 总结

    1.基本情况: 组长博客链接:https://www.cnblogs.com/yaningscnblogs/p/14050343.html 答辩总结:答辩中,对于老师提出的意见,我们认为能够帮助我们更 ...