用Apache反向代理设置对外的WWW和文件服务器

 更新时间:2016年11月25日 15:20  点击:2017
简介:一台机器用专线接入Internet作为防火墙,在内部网段上有一台WWW服务器 
(Redhat 6.1,Apache 1.3.9)希望这台机器能对外提供WWW服务器和基于apache 
的文件服务。供外部世界公共访问WWW服务器,或者外地分公司下载需要的文件。
优点: 内部的WWW服务器和文件服务完全与外部世界隔开,不直接连接到外部,通过 
防火墙上运行的Apache服务提供对内部的代理访问,增强了安全性,同时在 
防火墙上运行的Apache服务运用基于名字的虚拟主机技术,使得防火墙上的 
主页不会被访问到。符合了作为防火墙要求运行服务越少越安全的准则。
实现方法:在内部网段上的Apache服务器(192.168.11.2)存放的是公司主页,供内部 
和外部用户公共访问,并设置/home/ftp/pub目录为文件存放区域,用 
http://download.yourdomain.com/pub/来访问。
在防火墙上设置apache反向代理技术,由防火墙代理对内部网段上的访问。
步骤: 
一. 内部网段上的Apache服务器设置 
apache采用默认配置。主目录为/home/httpd/html,主机域名为 sun.yourdomain.com, 
且别名www.yourdomain.com, 并且设置srm.conf加一行别名定义如下: 
Alias /pub /home/ftp/pub/ 
且更改默认应用程序类型定义如下: 
DefaultType application/octet-stream 
最后在/etc/httpd/conf/access.conf中增加一项定义 
Options Indexes 
AllowOverride AuthConfig 
order allow,deny 
allow from all 
注:Options Indexes允许在找不到index.html文件的情况下允许列出目录/文件列表。
AllowOverride AuthConfig允许做基本的用户名和口令验证。
这样的话,你需要在/home/ftp/pub目录下放入.htaccess,内容如下: 
------- 
[root@shopu pub]# more .htaccess 
AuthName Branch Office Public Software Download Area 
AuthType Basic 
AuthUserFile /etc/.usrpasswd 
require valid-user 
------ 
然后用#htpasswd -c /etc/.usrpasswd user1 
这一个漏洞在 packetstorm 被发表,我把它翻成中文,加上自己的一些注解,希望对在 NT 上执行
PHP 的朋友有一些帮助。
当你下载 PHP 後,在它内含的安装文件中帮助了 PHP 在 NT + Apache Web Server 的安装方式
,其中的安装帮助会要你将底下这几行设置加到 apache 的 httpd.conf 设置文件中,而这个安装文
件将导引你将你的系统门户大开。
这几行命令为:
ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php.exe"
我们进一步的解释这三行设置,这些设置命令要求 Apache 将 /php/ 这个虚拟目录直接映射到 c:/php/
目录下,所以当你使用: 
"http://www.example.com/php/"
链接网页的时候,实际上 Web Server 是直接存取到 c:/php/ 这个目录,这时候你会看到 "Access Denied"
的错误信息,但是当你改用:
"http://www.example.com/php/php.exe"
命令来连接的时候,你会发现服务器回送了 "No input file specified." 这行字,这行字是由 php.exe
所进行的回送,表示你刚刚在这台 server 上执行了 php 执行文件。
如果你的服务器是使用 php 里所教你的安装方法来作设置的,这时候你可能有了以下的危机。
[** 漏洞 1 **]
我们可以利用这个漏洞来读取这台服务器上的任何一个文件,甚至可以跨磁盘读取,只要使用下列方式连接:
"http://www.example.com/php/php.exe?c:winntepairsam"
PHP 会将文件 "c:winntepairsam" 丢给浏览器,并把它显示出来,而这个文件正是 Windows NT 
保存密码的所在,
"http://www.example.com/php/php.exe?d:winntepairsam"
PHP 会把在 D: 磁盘中相同的文件传出。
而有了这个 SAM 文件,黑客可以用以破解出你在这台机器上所设置的密码。
[** 漏洞 2 **]
如果你指定了在 php 目录下的文件,你的 Web 服务器会尝试执行这个文件,并且传会错误信息,所以当你
本文属于被风吹倒的男子原创,拥有版权.来自www.iphp.org的论坛,网络转载请保留本信息.非网络转载请联系本人.个人站长自己写东西不容易,也为能够给我继续写下去的勇气和动力,请在转载时候不要删除本说明.本文是第一篇,我会找时间陆续把以后的东西写出来的。
很多朋友对于php的认识,长期停留在修改别人的程序上,因为可以修改所以懒惰于进步.或者是买来书看的时候,发现php的函数超级无敌多,看到函数库被吓晕了.等等.我自己是属于后者.本文是专门对于针对懒的花时间学习php,但是又想自己做点东西的懒人。
         到后来,我参加了学校的一个辅修班,老师上课讲,期末考试要考,于是乎,被逼着,居然能够自己写简单的代码了.
            因此,本文就是面向可以修改程序程序中的html,但是无法对程序构造进行修改的朋友,有基本的程序基础,就是:能明白if和else.够了,或者有同样基础的人均适合.高手可以走开.我到现在为止,使用常用的函数仍然需要查手册,仍然再写垃圾代码.
             好了,废话少说,我们进入第一阶段吧
            
        能够修改程序的朋友,在同学眼里都是网页高手级别的人物了.我如果开始从什么是变量说起,难免耽误您的时间.我自己又是搞文本收集出身的,所以我们就可以先从详细剖析一个程序的一部分开始.程序很简单,只有几个简单的判断,我会把程序的说明写的无敌详细.
    Quote:
如果您在哪里看不明白,请跟贴告诉我,我在第一时间修改,或者email我,我的邮件地址是rainboy#tom.com,请不要发垃圾邮件给我,我现在已经被垃圾邮件搞的很烦了
下面我们从剖析一个最简单的计数器开始
计数器的功能是:刷新一次页面,数字增加一.
程序如下
    Code:
[Copy to clipboard]    
<?
$datafile="data.txt";
$fp1=fopen($datafile,"r");
$num=fgets($fp1,10);
$num=trim($num);
fclose($fp1);
echo "您是第".$num."位客人";
$fp2=fopen($datafile,"w");
$num=$num+1;
fputs($fp2,"$num");
fclose($fp2);
?>
在经过长达8个月的开发和测试以后,PHP 4.3.0正式发布了。就范围,时间,成就方面而言,这是最全面的PHP发行版,而且,作为综合用途的脚本语言舞台的一个重要的竞争者,它将更进一步的提高了PHP的地位。
命令行界面
这个版本最终完成了独立的命令行界面(CLI),这可以(配合PHP-GTK一起)用于开发内核和桌面应用程序。CLI是内建部分,但是在配置过程中,只有当CGI版本使用--disable-cgi开关时候,才自动安装;或者使用make install-cli 。在Windows系统中,可以在cli目录找到CLI。
与其他服务器API相比较,CLI有许多的不同。请在“PHP手册:命令行中使用PHP”一章中找到更详细的内容。
Streams流
streams流API是一个非常重要的未披露的特征。在PHP内核和扩展中,引进了统一的方法来处理文件、管道、sockets和其他I/O资源。
这意味着对用户来说,任何使用streams流的I/O函数(和几乎所有这些函数)可以访问内置的协议,例如HTTP/HTTPS和FTP/FTPS,也可以通过PHP脚本登记使用自定义协议。请参考“已支持的协议/包列表”以获取更详细的内容。
新安装系统
安装系统在其他重复的地方,使用了一个全局的Makefile代替了缓慢的递归,并且降低了固定的相关性的综合程度。aclocal工具只需要automake。整个安装过程更轻便,消耗更少资源。
改进
PHP 4.3.x有许多的改进和增强的地方:
捆绑发行GD库而且推荐一直使用捆绑的版本的GD库
vpopmail和cybermut扩充移到PECL
删除几个不常用的扩充(aspell, ccvs, cybercash, icap)和SAPIs(fastcgi,fhttpd)
提高了各种字符串处理函数的速度
删除Apache2过滤器,还在实验中(由于许多扩充基于外部的库是不安全的,在prefork中使用PHP和工人模式)
修正各种安全隐患(imap, mysql, mcrypt, file upload, gd等等)
在其他应用程序植入新的SAPI到PHP中(实验性)
大量的测试套件
在dba, gd, pcntl, sybase和xslt扩展重要的改进
新增的debug_backtrace()有助于调试
现在错误信息可以链接到描述错误或者函数问题的网页
Zend引擎修正小错误和做了小的性能的提高
大量的其他修正,更新和新功能等等

Using COM with PHP
     By John Lim.
PHP4 on Windows has been extended to support Microsoft's COM technology. However documentation on the COM functions is very sparse at the moment.
Here are some examples of stuff I have tried. Hope this gives you some ideas. Note that these only work when you are running PHP on a Windows Web server.
Active Data Objects (ADO) with PHP
ADO is Microsoft's database object technology. There are objects for connecting to databases, recordsets for data returned from queries, and field objects representing data elements.
Most databases do not support ADO directly. Instead most databases support 2 lower level Microsoft database technologies: ODBC and OLEDB. More databases support ODBC; but OLEDB has a reputation of being faster than ODBC.
ADO is then an API wrapper around ODBC and OLEDB.
This example opens a new ADO Connection object, opens the traditional NorthWind MS-Access database via ODBC. When we execute the SQL, a RecordSet object is returned. We then display the first 3 fields of the record-set.
<?
    $dbc = new COM("ADODB.Connection");
    $dbc->Provider = "MSDASQL";
    $dbc->Open("nwind");
    $rs = $dbc->Execute("select * from products");
    $i = 0;
    $fld0 = $rs->Fields(0);
    $fld1 = $rs->Fields(1);
    $fld2 = $rs->Fields(2);
    while (!$rs->EOF) {
        $i += 1;
        print "$fld0->value $fld1->value $fld2->value<BR>";
        $rs->MoveNext(); /*updates fld0, fld1, fld2 !*/
    }
[!--infotagslink--]

相关文章