很多多论坛网站,都具备有上传附件的的功能,一般都会开放rar附件上传,并可能会保留原来文件名称,这从而可能导致一个很严重的问题,test.php.rar文件可能会被Apache当作php文件来执行,造成一定程度的安全隐患。
        如何测试? 当你将某个php程序文件后缀名修改成 test.php.rar,这时测试一下,还是按照PHP文件解析执行,Apache并不会认为这是一个rar文件,这是为什么呢?
        其实,因为每遇到一种后双重后缀名(如test.php.rar)的文件,Apache都会去conf/mime.types文件中检查最后一个后缀,如果最后一个后缀并没有在mime.types文件中定义,则使用前一个后缀来解释,因为在默认情况下,rar并未在mime.types中定义,故 Apache会使用php后缀来解释文件,这就是漏洞的原因所在吧。
        由此可知,如果使用test.jsp.aaa.rar则会很可能认为是jsp文件,如果修改成test.shtml.rar,则会识别成shtml文件。
        如果没有相应修改设置,不知道有多少网站可能存在这个问题? 如何杜绝这个隐患 ?
        修改Apache相应的配置文件httpd.conf文件内容:

    AddType application/rar .rar
    AddType application/x-compressed .rar
    AddType application/x-rar .rar
    AddType application/x-rar-compressed .rar
    AddType application/x-rar-compressed; application/x-compressed .rar
    AddType compressed/rar; application/x-rar-compressed .rar

        然后重新启动Apache服务
        针对Web管理员及Web程序开发者,如何更安全
        1.只允许上传指定后缀名的文件,当然,要禁止掉rar格式文件上传。(但这条往往行不通,一般的网站都需要上传rar文件)
        2.对上传后的文件名进行强制重命名,强制使用最后一个扩展名,如原始文件名为test.php.rar,上传后强制重命名为20090412.rar即可避免这个隐患
        ps:早期版本的phpcms、discuz等貌似存在这个漏洞

 

软件版本:

Apache_2.2.9-win32-x86-no_ssl-r2.msi

Php-5.2.6-Win32.zip

Mysql-5.1.26-rc-win32.zip

安装目录:

D:/xmlinux/webapp

PHP配置:

1)将D:”xmlinuxer”webapp”php5″目录下的libmysql.dllphp5ts.dll两个文件复制到C:”WINDOWS”system32″下;

2)将D:”xmlinuxer”webapp”php5″ext”目录下的php_gb2.dllphp_mysql.dll php_mbstring.dll复制到C:”WINDOWS”system32″下;

3)将D:”xmlinuxer”webapp”php5″中的php.ini-destphp.ini-recommended重命名为php.ini复制到C:”WINDOWS”system32″下;

4)改配置文件php.ini,具体包括:

i.extension_dir=”/”改为 extension_dir=”F:/ProgramFiles/PHP5.2/ext”;

ii.去掉下面三个表达式前面的“;”,改后如下:

extension=php_gd2.dll

extension=php_mbstring.dll

extension=php_mysql.dll

iii.;date.timezone = 修改为 date.timezone = PRC

Apache配置httpd.conf文件

加入支持php5mysql的代码:

LoadFile D:/xmlinuxer/webapp/php5/libmysql.dll

LoadModule php5_module D:/xmlinuxer/webapp/php5/php5apache2_2.dll

PHPIniDir “D:/xmlinuxer/webapp/php5″

AddType application/x-httpd-php .php

整合Apache Tomcat

方案一:mod_jk模块实现

适用于较低版本,在Apache2.2.*以后的的版本上无法成功实现ApacheTomcat的整合,即使编译模块通过了的话(网上很多文档都是用这种方法的资料,而且都大同小异,我试过了。。。可以模块可以编译通过,但是其实根本实现不了,因为现在mod_jk模块最高版本只支持到Httpd-2.2.4版本的而已,所以对于Apache版本高一点就的话就根本没有mod_jk与之对应的模块实现)所以对此方案测试并不能成功实现。

方案二:mod_proxy代理模块实现

Apache2.2.*以上版本本身已经支持Tomcat了,所以这里用mod_proxy来整合Tomcat打开httpd.conf文件,把

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

前面的#去掉, 并在文件最后添加

ProxyPass / ajp://127.0.0.1:8009/

ProxyPassReverse / ajp://127.0.0.1:8009/

这样做的话就相当于Apache把所有80端口的请求都转发给了Tomcat8009ProxyPass /  ajp://127.0.0.1:8009/ ProxyPassReverse  /  ajp://127.0.0.1:8009/),都由Tomcat处理请求,这时的Apache只相当于一个转发器的作用,由Tomcat解析。此时要是关闭Tomcat服务,再访问还会出现503 Service Temporarily Unavailable 错误!

Service Temporarily Unavailable

The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.

但是我们想实现的是将请求中静态的页面交给Apache处理,动态请求交给Aomcat处理。因为他们在各自的处理效率上比较高,这才是整合ApacheTomcat的真正目的作用。

这里要实现将html交给Apache处理,而把jsp转发给Tomcat处理。还需要多刚刚修改的httpd.conf进行完善,排除掉Tomcat对静态文件的解析过滤。

即在刚刚的 ProxyPass /  ajp://127.0.0.1:8009 前面加入一行

ProxyPass /web/ !

插入这行配置的意思是表示/web/下的文件的请求不转发到Tomcat进行解析直接由Apache解析。此时只要把不想转发到Tomcat处理的放在Apache安装目录下\htdoc\ 下名为web文件夹里即可。

附录:

Mod-proxy的缺点是,当其中一台tomcat停止运行的时候,apache仍然会转发请求过去,导致502网关错误。但是只要服务器再启动就不存在这个问题。如果前置Apache代理服务器停止运行,所有集群服务将无法对外提供。

Mod-proxy优点是.可以只将Apache置于公网,节省公网IP地址资源。可以通过设置来实现Apache专门负责处理静态网页,让Tomcat专门负责处理JSPservlet等动态请求。

参考资料:IBM Developer Works中关于Apache HTTP Server Tomcat 的三种连接方式介绍的描述

 

之前在ubuntu8.04架构LAMP环境的时候都是用包装好的直接新立得进行一步安装搞定。就只有最初刚接触Linux的时候在RedHat下尝试使 用源码手动编译配置安装,但是当初编译了一个晚上最终还是以失败告终就是,对于里头提示缺少类库等问题很是陌生,虽然网上资料很多,但是操作起来每个人有 每个人不同的问题会出现,个人觉得有时问题还是更重要需要自己去一个个的处理掉,这样印象更深刻些,也是唯一措施可以处理好自己所遇到的问题的。

步入正题:

一、mysql安装配置

root@xmlinuxer-server:/media/WinF/LAMP#groupadd mysql
root@xmlinuxer-server:/media/WinF/LAMP#useradd -g mysql mysql
root@xmlinuxer-server:/media/WinF/LAMP#tar -zxvf mysql-5.0.33.tar.gz
root@xmlinuxer-server:/media/WinF/LAMP#cd mysql-5.0.33
root@xmlinuxer-server:/media/WinF/LAMP/mysql-5.0.33#./configure --prefix=/opt/app/mysql5 --without-debug --without-bench --with-charset=utf8 --with-extra-charsets=all --with-plugins=fthightman --enable-thread-safe-client

如果出现了以下错误:

checking for tgetent in -ltermcap... no

checking for termcap functions library… configure: error: No curses/termcap library found

说明 curses/termcap 库没有安装
apt-cache search curses | grep lib
安装 libncurses5-dev ,然后重新运行配置
apt-get install libncurses5-dev

或者方法二

去下载一个ncurses-5.6.tar.gz,
wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.6.tar.gz
tar zxvf ncurses-5.6.tar.gz
cd ncurses-5.6
./configure –prefix=/usr –with-shared –without-debug
make
make install clean

然后再重新编译Mysql进行安装。

root@xmlinuxer-server:/media/WinF/LAMP/mysql-5.0.33#make
root@xmlinuxer-server:/media/WinF/LAMP/mysql-5.0.33#make install
root@xmlinuxer-server:/media/WinF/LAMP/mysql-5.0.33#cp support-files/my-medium.cnf /etc/my.cnf //复制数据库mysql的配置文件
root@xmlinuxer-server:/media/WinF/LAMP/mysql-5.0.33#cp support-files/mysql.server /etc/init.d/mysql

Ubuntu 系统下貌似没有/etc/rc.d这目录 嗯 其他的Linux系统可能是/etc/rc.d/init.d/mysql

root@xmlinuxer-server:/media/WinF/LAMP/mysql-5.0.33#cd /opt/app/mysql5
root@xmlinuxer-server:/opt/app/mysql5#bin/mysql_install_db --user=mysql
root@xmlinuxer-server:/opt/app/mysql5#chown -R root . //不要少了后面那个“.”咯
root@xmlinuxer-server:/opt/app/mysql5#chown -R mysql var
root@xmlinuxer-server:/opt/app/mysql5#chgrp -R mysql .

root@xmlinuxer-server:/opt/app/mysql5/share/mysql# service mysql start
程序 ’service’ 已包含在以下软件包中:
* debian-helper-scripts
* sysvconfig
试试:apt-get install
bash: service:找不到命令

解决措施:安装下这两个软件包就ok啦 #apt-get install sysvconfig debian-helper-scripts

root@xmlinuxer-server:/opt/app/mysql5#bin/mysqld_safe --user=mysql & 或者 service mysql start 启动数据库
root@xmlinuxer-server#/opt/app/mysql5/share/mysql/mysql.server stop 或者 service mysql stop 停止数据库

二、安装apache完整配置

root@xmlinuxer-server:/media/WinF/LAMP#tar -zxvf httpd-2.2.4.tar.gz //解压包
root@xmlinuxer-server:/media/WinF/LAMP#cd httpd-2.2.4
root@xmlinuxer-server:/media/WinF/LAMP/httpd-2.2.4#./configure --prefix=/opt/app/apache2 --enable-so --with-mysql=/opt/app/mysql5 --enable-cgi --with-config-file-path=/opt/app/apache2/conf --enable-track-vars --enable-mods-shared=all --enable-cache --enable-disk-cache --enable-mem-cache --enable-rewrite --with-mpm=worker --with-z-dir=/opt/app/zlib //配置编译参数

这里涉及到关于zlib的安装,下载zlib-1.2.3.tar.gz包编译安装下zlib于/opt/app/zlib下
具体如下:
root@xmlinuxer-server:/media/WinF/LAMP#tar -zxvf zlib-1.2.3.tar.gz
root@xmlinuxer-server:/media/WinF/LAMP#cd zlib-1.2.3
root@xmlinuxer-server:/media/WinF/LAMP/zlib-1.2.3#./configure --prefix=/opt/app/zlib
root@xmlinuxer-server:/media/WinF/LAMP/zlib-1.2.3#make
root@xmlinuxer-server:/media/WinF/LAMP/zlib-1.2.3#make install

然后继续编译安装apache环境

root@xmlinuxer-server:/media/WinF/LAMP/httpd-2.2.4#make
root@xmlinuxer-server:/media/WinF/LAMP/httpd-2.2.4#make install
root@xmlinuxer-server:/opt/app/apache2# bin/apachectl start
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName

因为在httpd的配置文件里面没有制定主机名,所以才会出现这个提示
用浏览器访问一下本地试试(http://127.0.0.1),屏幕上正常就会显示:It works !

三、安装php前GD库的安装:

1.安装 jpeg6
需要自己建立目录
root@xmlinuxer-server:/media/WinF/LAMP/httpd-2.2.4# mkdir /opt/app/jpeg6
root@xmlinuxer-server:/media/WinF/LAMP/httpd-2.2.4# mkdir /opt/app/jpeg6/bin
root@xmlinuxer-server:/media/WinF/LAMP/httpd-2.2.4# mkdir /opt/app/jpeg6/lib
root@xmlinuxer-server:/media/WinF/LAMP/httpd-2.2.4# mkdir /opt/app/jpeg6/include
root@xmlinuxer-server:/media/WinF/LAMP/httpd-2.2.4# mkdir /opt/app/jpeg6/man
root@xmlinuxer-server:/media/WinF/LAMP/httpd-2.2.4# mkdir /opt/app/jpeg6/man/man1
root@xmlinuxer-server:/media/WinF/LAMP/httpd-2.2.4# cd..
root@xmlinuxer-server:/media/WinF/LAMP# tar -zxvf jpegsrc.v6b.tar.gz
root@xmlinuxer-server:/media/WinF/LAMP# cd jpegsrc.v6b
root@xmlinuxer-server:/media/WinF/LAMP/jpegsrc.v6b#./configure --prefix=/opt/app/jpeg6/ --enable-shared --enable-static
root@xmlinuxer-server:/media/WinF/LAMP/jpegsrc.v6b# make; make install

2.安装 libpng
root@xmlinuxer-server:/media/WinF/LAMP/jpegsrc.v6b# cd ..
root@xmlinuxer-server:/media/WinF/LAMP# tar -jxvf libpng-1.2.8.tar.bz2
root@xmlinuxer-server:/media/WinF/LAMP# cd libpng-1.2.8
root@xmlinuxer-server:/media/WinF/LAMP/libpng-1.2.8# cp scripts/makefile.std /media/WinF/LAMP/libpng-1.2.8/makefile
root@xmlinuxer-server:/media/WinF/LAMP/libpng-1.2.8# make; make install

3.安装 freetype
root@xmlinuxer-server:/media/WinF/LAMP/libpng-1.2.8# cd ..
root@xmlinuxer-server:/media/WinF/LAMP# tar -zxvf freetype-2.3.2.tar.gz
root@xmlinuxer-server:/media/WinF/LAMP# cd freetype-2.3.2
root@xmlinuxer-server:/media/WinF/LAMP/freetype-2.3.2# ./configure --prefix=/opt/app/freetype
root@xmlinuxer-server:/media/WinF/LAMP/freetype-2.3.2# make;make install

4.安装libXML2
root@xmlinuxer-server:/media/WinF/LAMP/freetype-2.3.2# cd ..
root@xmlinuxer-server:/media/WinF/LAMP# tar -jxvf libxml2-2.6.24.tar.bz2
root@xmlinuxer-server:/media/WinF/LAMP# cd libxml2-2.6.24
root@xmlinuxer-server:/media/WinF/LAMP/libxml2-2.6.24# ./configure --prefix=/opt/app/libxml
root@xmlinuxer-server:/media/WinF/LAMP/libxml2-2.6.24# make
root@xmlinuxer-server:/media/WinF/LAMP/libxml2-2.6.24# make install

5.安装 GD2
root@xmlinuxer-server:/media/WinF/LAMP/libxml2-2.6.24# cd ..
root@xmlinuxer-server:/media/WinF/LAMP# tar -zxvf gd-2.0.34.tar.gz
root@xmlinuxer-server:/media/WinF/LAMP# cd gd-2.0.34
root@xmlinuxer-server:/media/WinF/LAMP/gd-2.0.34#./configure --prefix=/opt/app/gd --with-jpeg=/opt/app/jpeg6 --with-png=/usr/local/lib --with-zlib=/opt/app/zlib --with-freetype=/opt/app/freetype
root@xmlinuxer-server:/media/WinF/LAMP/gd-2.0.34# make
root@xmlinuxer-server:/media/WinF/LAMP/gd-2.0.34# make install

#安装PHP完整配置

root@xmlinuxer-server:/media/WinF/LAMP#tar -zxvf php-5.2.0.tar.gz
root@xmlinuxer-server:/media/WinF/LAMP#cd php-5.2.0
root@xmlinuxer-server:/media/WinF/LAMP/php-5.2.0#./configure --prefix=/opt/app/php5 --with-libxml-dir=/opt/app/libxml --with-gd=/opt/app/gd --with-jpeg-dir=/opt/app/jpeg6 --with-zlib-dir=/opt/app/zlib --with-libpng-dir=/usr/local/lib --with-freetype-dir=/opt/app/freetype --enable-mbstring --with-apxs2=/opt/app/apache2/bin/apxs --with-mysql=/opt/app/mysql5 --with-config-file-path=/opt/app/php5/etc

可能会有提示错误,编译安装下flex包:#apt-get install flex 再重新编译下就OK啦

root@xmlinuxer-server:/media/WinF/LAMP/php-5.2.0#cp php.ini-dist /opt/app/php5/etc/php.ini
root@xmlinuxer-server:/media/WinF/LAMP/php-5.2.0#make
root@xmlinuxer-server:/media/WinF/LAMP/php-5.2.0#make install

© 2011 Yousri's Blog Suffusion theme by Sayontan Sinha

无觅相关文章插件,快速提升流量