apache 整合tomcat 学习-转载

近期遇到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>
====================================================================================================================

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值