设为首页 收藏本站
查看: 824|回复: 0

[经验分享] apache 整合tomcat 学习-转载

[复制链接]

尚未签到

发表于 2017-1-1 10:26:04 | 显示全部楼层 |阅读模式
  近期遇到J2EE项目安全问题,翻遍互联网就那几篇文章,而且都是东写一点,西写一点,为了以后能给我自己和大家节约宝贵时间,现将我博览群网后的整理分享给大家
一个好的项目的几个指标我觉得应该是安全、稳定、快速、漂亮,也就是安全排第一,稳定排第二,快速排第三、漂亮排第四,现在就谈一下安全性问题:
Tomcat是实现了J2EE规范的标准容器,在项目开发中应用也是最广泛的,开发中的使用的tomcat称为它为开发容器,如果把项目架到服务器上运营,我们称之为生产容器。
既然项目架设到互联网上,那么大家都能访问,黑客也能访问,以下就是在互联网上架设Tomcat时,需要注意的几点,我们以在windows 2003 server上运行tomcat5.5 为例

  来阐述:
服务器本身的配置
能不开的端口就不开,开端口后密码尽量长和复杂,推荐用特殊符合字母数字的组合,长度大于10。
全部系统盘只保留system和Administrators组用户,并完全控制。
Tomcat本身的安全配置
1、安装Tomcat。下载并安装Tomcat5.5安装版,安装过程中的Admin密码随便写一个非常长的串,不要留空,也不要设置的非常简单让黑客一下就能猜出来。
2、创建一个低权限用户来启动Tomcat。命名为apache,之所以命名为apache,是备以后其与apache整合后,这个用户也可以给apache用,在服务中配置其以apache用户来

  启动。
3、分配用户权限,
apache用户只分配Tomcat所安装的那个盘的读取和运行权限,比如D盘。
Tomcat目录下如下文件夹或文件给apache用户完全控制权限:/work,/conf/tomcat-users.xml,/logs,/temp,这几个文件或者文件夹都是tomcat需要往里写东西的。
4、删除无用并且可能会带来危险的那些文件。这些无用的文件包括/webapps 下的全部、/server/webapps下的全部、/conf/Catalina/localhost 下的全部
5、用apache用户来重启Tomcat
经过以上配置,我们的Tomcat本身基本安全了,为什么说基本安全,看完下面就知道了。
运行项目采用目录映射的配置方式,参考:
http://www.javadn.com/read.php?tid-179.html
Jsp项目本身安全配置
Tomcat配置的再安全,如果项目本身不安全,以上的安全配置也形同虚设,以下谈的是开发中需要注意的安全问题:
1、sql注入安全的防范,防止sql注入非常简单,Statement不能防止sql注入,Statement只适合学习时使用,开发中请务必使用preparedStatement来执行sql,这也是为什

  
hibernate Ibatis等orm默认使用preparedStatement的原因。规范的项目开发都不会让每个程序员自己写最底层的DAO,通用的做法是调用经过了层层封装的DAO,比如

  对jdbc直接封装的DAO,对orm的二次封装等。
2、项目的目录权限,项目的根目录只给只读权限(运行权限给不给皆可),该给完全控制的给完全控制权限,比如项目中的logs、temp还有上传文件的目录等,这些目录

  都需要给apache用户完全控制的权限。
对于能够upload的文件夹,一定要当心,这里一般是木马的入口,jpg木马能从这里上传,传上去后直接变成jsp文件,然后黑客访问该jsp文件 就开始黑系统了,可怕

  吧。
如果咱们的Tomcat整合了apache(整合方法参考:
http://www.javadn.com/read.php?tid-805.html),利用apache完全可以拦截对指定目录指定文件类型的访问(参考
  http://www.javadn.com/read.php?tid-1119.html
但是我不想整合apache就没有办法了么,总不能只给只读权限吧,那样文件就无法上传了。我曾经为这个问题就纠结过,最后想到了一个办法,写一个针对该目录的过

  滤器,只要是针对该目录下jsp文件的访问
就直接返回。具体这个过滤器的写法和配置也不麻烦,我已经实现了。
3、项目开发中的jsp文件放到WEB-INF下面,因为WEB-INF的文件是不允许用户直接访问的,但是tomcat可以读取他们。
经过以上三步配置以后,服务器安全性可以说做了80%,世界上没有绝对的安全,任何系统都需要进行安全性维护的。
JavaDN技术网站原文地址:
http://www.javadn.com/read.php?tid-1173.html
  
==================================================================================================================
如何在Tomcat5.5上发布项目-目录映射(原创)

  
如何在Tomcat5.5上发布项目-目录映射(原创) 不推荐多数人所用的在webapp下面去发布项目的做法。一个原因,麻烦。好多初学者都不知道目录映射这种方式,在此写出

  来,供大家参考。采用目录映射的方式,你所做的编辑立即能够体现出来。当然,在做java文件 xml配置文件的修改后,记得重启一下tomcat。这种发布项目的方式在开发
  中将给你省去无尽的打包、部署的烦恼。在用这种方式时,记得把webapps下面的全部项目删除。切入正题,如下:打开server.xml 找到<Host name="localhost" ,将标签
  内内容以一下替换,重启tocmat
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">



<Context path="/" docBase="d:/workspace_java/project" >

</Context>

</Host>
如果需要配置jndi
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">



<Context path="/" docBase="d:/workspace_java/project" >
<Resource name="jdbc/projectDataSource" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000" removeAbandoned="true"
username="root" password="a" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/project_db?useUnicode=true&characterEncoding=utf8"/>
</Context>

</Host>

  
==================================================================================================================
apache2.2.x(x>=3)安装配置及与tomcat5.5整合(原创)

  
Tomcat5.5与apache2.2.x整合,大部分J2EE的网站都是采用的二者整合的做法。

  
  Apache版本 2.2.x (x>=3)
  
  过程如下;
  
  1.首先安装apache,装完后把IIS停掉后,再启动 apache 的服务器(安装时根据提示安装即可,安装目录一般不装到系统盘上)
  
  2.安装tomcat(安装之前请先把JDK 安装好)
  
  3.安装tomcat 过程中会需要用户设置用户名和密码,密码部分记住一定要输,最好设置的尽量复杂些
  
  4.安装mysql (安装过程有此不详述)
  
  5.安装完成后把mysql 的驱动程序mysql-connector-java-5.0.4-bin.jar放到apache-tomcat-5.5.23/common/lib下
  
  6.到jk官方去下载者windows对应apache版本的jk ,jk官方下载地址:http://labs.xiaonei.com/apache-mirror/tomcat/tomcat-connectors/jk/binaries/
  
  7.在httpd.conf中配置如下:
  
   a.在该文件中找到这条语句LoadModule rewrite_module modules/mod_rewrite.so 并把这条语句前面的#注释去掉,打开此模块
  
   b.把该条语句LoadModule jk_module modules/mod_jk-1.2.27-win-httpd-2.2.10.so放入该文件中(其中该部分mod_jk-1.2.27-win-httpd-2.2.10.so是你所下的JK的版
  本号),是为了让tomcat和apache进行通信的
  
   c.把此语句DocumentRoot "D:/Program Files/Apache Software Foundation/Apache2.2/htdocs" 改为 DocumentRoot "D:/webroot",(调置所有网站的家目录,若启
  用虚拟主机功能此设置自动失效)
  
   d.把此语句<Directory "D:/Program Files/Apache Software Foundation/Apache2.2/htdocs">改为<Directory "D:/webroot">(为所有网站设置公共目录属性)
  
   e.把此语句Options Indexes FollowSymLinks改为Options FollowSymLinks (禁止用户进行目录浏览)
  
   f. 把此语句AllowOverride None 改为AllowOverride All(使网站自已的重写规则生效)
  
   g.把此语句DirectoryIndex index.html后添加 index.htm index.jsp 等(为网站目录设置默认首页)
  
   h.#Include conf/extra/httpd-vhosts.conf前的#注释去掉,是为了启用虚拟主机
  
  8.配置apache-tomcat-5.5.23/conf下的server.xml文件 为localhost添加context单元。
  
   a.如果只有一个域名,就只需添加context单元
  
   <Context path="/web1" docBase="D:/webroot/web1" >
   <Resource name="jdbc/testDataSource" auth="Container" type="javax.sql.DataSource"
   maxActive="100" maxIdle="30" maxWait="10000" removeAbandoned="true"
   username="root" password="123" driverClassName="com.mysql.jdbc.Driver"
   url="jdbc:mysql://127.0.0.1:3306/web1db?useUnicode=true&characterEncoding=utf8"/>
  </Context>
apache httpd.conf中找到#Include conf/extra/httpd-vhosts.conf,去掉#号

   Apache Software Foundation/Apache2.2/conf/extra/vhost.conf 文件需要添加一个VirtualHost目录
  
   <VirtualHost *:80> DocumentRoot D:/webroot </VirtualHost>
  
   b.如果多于一个域名,则需要添加host单元(context应包含其中)
  
   <Host name="www.javadn.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
   <Alias>javadn.com</Alias>
   <Context path="" docBase="D:/webroot/web1">
   <Resource name="jdbc/testDataSource" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000"
  removeAbandoned="true" username="root" password="123" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/web1db?
  useUnicode=true&characterEncoding=utf8" />
   </Context>
   </Host>
  
   注:Alias别名可以指定多个,每在server.xml文件中添加一个host单元,就必须在vhost.conf文件中对应的添加一个VirtualHost单元,vhost.conf文件中的
  ServerName的值对应server.xml中的Host单元的name值, ServerAlias 对应server.xml中的 Alias值,如果有多个别名,可以排着往后写例如:ServerAlias javadn.com
  aaa.com www.bbb.com
  
   附:VirtualHost 常用配置
  
   <VirtualHost *:80>
   DocumentRoot D:/webroot
   JkMount /*.jsp ajp13(遇到.jsp的文就会通过ajp13交给tomcat来处理,像.jpg,.gif等文件则由apache来处理)
   JkMount /*.do ajp13
   ServerName www.javadn.com
   ServerAlias javadn.com aaa.com www.bbb.com
   </VirtualHost>
  
   以上.do和.jsp 文件交由tomcat来处理;网站中的静态文件都交由apache来处理,因为apahce本身处理静态文件的速度比tomcat要快 ,这样一来动态文件由tomcat来处
  理,静态文件由apache来处理,不但减轻了tomcat的负担而且还有效的提高了网站的访问速度。
  
   重启Tomcat,重启Apache,成功。就是这么简单,注意上面的ajp13,直接用就可以,我发现在Apache2.2.3以后的jk版本中已经默认实现了。
  ==================================================================================================================
apache windows upload directory php
<Directory ~ "D:/webroot/site1/upload" >
<Files ~ "/.php$">
order allow,deny
deny from all
</Files>
</Directory>
====================================================================================================================

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-322334-1-1.html 上篇帖子: Apache Jakarta Commons工具集 下篇帖子: 使用Apache配置Tomcat集群
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表