分享
 
 
 

LinuxApacheWeb服务器(续3)

王朝system·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

八、建立Apache站点的基本安全机制

对于WWW服务来说,在WWW服务器和WWW浏览器之间并不始终维持对话过程。办要WWW服务器完成对一个URL请求的服务,连接就断开了。

在这种情况下,在WWW上保证可以使用的唯一认证机制是由HTTP本身提供 的。在标准的Apache服务器实现了这样的认证,它能控制哪些主机可能访问特定的站点或特点的站点的一部分。

这种认证可以分为两种,一种是基于主机的的认证,另一种是基于用户名/口令的认证。由于互联网上的决大多数用户的IP地址是动态获得的,所以基于主机的认证方式并不总适用。所以在大多数情况下,传统的基于用户名/口令的认证方式更为现实。下面我们就对这两种认证的实现做一简要的介绍。

8.1 基于主机的认证方式

在种认证模式顾名思义,访问是用主机名或主机IP地址来控制的。支持这种认证方式的是Apache的mod_access模块,这个模块缺省状态下是被安装了的。该模块用以下几种Apache命令来提供访问控制功能。

allow命令

语法:allow from host1 host2 host3 ...

这个命令定义了允许访问站点或目录的主机清单。主机清单可以用以下几

种形式表示:

ALL:代表所有主机;

主机的全域名,如:www.mot.com;

主机的部分域名,如:.mot.com;

完整的IP地址,如:202.98.2.32;

部分IP地址,如:202.98

网络地址/网络掩码对,如:202.98.0.0/255.255.0.0

网络地址/nn(CIDR定义),如:202.98.0.1/16

deny命令

语法:deny from host1 host2 host3 ...

这个命令定义了禁止访问站点或目录的主机清单,其他与allow命令相似。

order命令

语法:order deny,allow | allow,deny

这个命令定义评价allow和deny命令的先后顺序。

例如:

<Directory /home/httpd/html>

order deny,allow

deny from www.mot.com

allow all

</Directory>

这组命令设置了禁止www.mot.com访问/home/httpd/html目录下的文件。

请大家注意,顺序是先deny后allow,如果是:order allow,deny 那么,先允许所有的主机访问,然后再禁止,这样是无效的,所有主机仍然能够访问。

8.2 基于用户名/口令的认证方式

这种认证方式其实相当简单,当WWW浏览器请求经此认证模式保护的URL

时,将会出现一个对话框,要求用户键入用户名和口令。用户输入后,传给WWW服务器,WWW服务器验证它的正确性,如果正确,返回页面,否则返回401错误。要说明的一点是,这种认证模式是基本的,并不能用于安全性要求极高的场合。

Apache 中有许多模块可以支持这种认证方式,下面我们就介绍一下最基本、最标准的mod_auth模块。正如前面提到的一样,mod_auth模块使用存储在文本文件中的用户名、组名和口令来实现认证。这种方法非常适合处理少量用户,它能工作得很好。如果你需要对大量的用户,如数以千计的用户做认证时,这种方法的性能将急剧下降到不可忍受,所以当这种情况下,就需要考虑使用mod_dbm模块或mod_mysql模块来获得更好的性能。

实例一:需要用户名和口令的访问控制

下面我们就一起来看一下如何建立需要用户名/口令才能进行访问的目录。

基本情况: www.xxx.com

的站点有设置为:

DocumentRoot /home/httpd/html

AccessFileName .htaccess

AllowOverride All

需求:限制/home/httpd/html/backup/目录的访问,只允许用户“super”以口令“fill-06”访问此目录。

实现步骤:

使用htpasswd建立用户文件

htpasswd –c /home/httpd/secr/.htpasswd super

此程序会询问用户“super”的口令,你输入“fill-06”,两次生效。

建立.htaccess文件

用vi在/home/httpd/html/backup/目录下建立一个文件.htaccess,写入

以下几行:

AuthName My Friend Only (注:这个名字是任取的)

AuthType Basic

AuthUserFile /home/httpd/secr/.htpasswd

require user super

设置文件权限,确保Apache用户有读的权限

这样就完成了设置工作,你可以试一试效果了。

实例二:允许一组用户访问一个目录

假设,现在www.xxx.com想让myfriend组中的mf1与mf2两个用户分别能

使用口令“mf001-1”“mf002-2”访问/home/httpd/html/backup/目录。

实现步骤:

使用htpasswd建立用户文件

htpasswd –c /home/httpd/secr/.htpasswd mf1

htpasswd –c /home/httpd/secr/.htpasswd mf2

建立组文件

用vi/home/httpd/secr/目录下建立一个文件.htgroup,写入:

myfriend:mf1 mf2

建立.htaccess文件

用vi在/home/httpd/html/backup/目录下建立一个文件.htaccess,写入

以下几行:

AuthName My Friend Only

AuthType Basic

AuthUserFile /home/httpd/secr/.htpasswd

AuthGroupFile /home/httpd/secr/.htgroup

require group myfriend

配置工作到此结束,试一试吧!

实例三:混合使用基于主机与基于用户名/口令的认证方式

如果你除了只允许让mf1与mf2两个用户访问外,还想禁止除www.mot.com

外的主机访问这个目录的话,就将/home/httpd/html/backup/.htaccess修改成为:

AuthName My Friend Only

AuthType Basic

AuthUserFile /home/httpd/secr/.htpasswd

AuthGroupFile /home/httpd/secr/.htgroup

require group myfriend

order deny,allow

deny from all

allow from www.mot.com

九、解读Apache日志

当你一步步地看到这里的时候,相信你的WWW站点已经建好,并且已经在

Internet上展现出来了。这时你可能就会关心谁造访过你的站点,或者想知道你的Apache服务器现在的运行状态与性能如何。下面我们一起通过解读Apache的日志来实现这个伟大的愿望。

9.1 盯着Apache服务器

Apache允许通过WWW监视服务器的配置信息与运行状态。

1.观看配置信息

如果你的Apache象缺省配置一样加入了mod_info模块的话,你就可以通过访问http://localhost/server-info查看服务器信息。

2.使用状态页

如果你的Apache象缺省配置一样加入了mod_status模块的话,你就可以

通过访问http://localhost/apache-status查看服务器的运行状态信息,其中包括:

¨ 服务器系统的当前时间;

¨ 服务器最近一次重启时间;

¨ 服务器启动后的运行时间;

¨ 到目前为止服务的访问总数;

¨ 到目前为止传输的字节总数;

¨ 服务请求的子进程数;

¨ 空闲子进程数;

¨ 每个进程状态、子进程服务的请求数以及该子进程传输的字节总数;

¨ 每秒平均请求数、每秒传输的字节数、每次请求平均传输字节数;

¨ 目前每个子进程CPU占用及Apache的总的CPU占用率;

¨ 当前主机及处理的请求。

9.2 什么是日志文件

日志文件是Apache工作的记录,Apache包括了mod_log_config模块,它

用来记录日志。在缺省情况下,它用通用日志格式CLF规范来写。

CLF日志文件内对每个请求均有一个单独行,形如:

host ident anthuser date request status bytes

其含义如下:

¨ host��客户端主机的全称域名或IP地址;

¨ ident��存放客户端报告的识别信息;

¨ authuser��如果是基于用户名认证的话,值为用户名;

¨ date��请求的日期与时间;

¨ request��客户端的请求行;

¨ status��返回到客户端的三们数字的HTTP状态码;

¨ bytes��除去HTTP头标外,返回给客户端的字节数。

9.3 分析日志文件

有了日志文件后,我们可以利用UNIX的一些工具和一此专门的日志分析工具对日志文件进行分析。

实例一:列出访问过本网站的主机名或IP:

对于这个需求,我们可以通过一个Unix的一个脚本语句来完成:

cat /var/log/httpd/access_log | awk ‘{print $1}’

用上面的方法虽然可以得到访问过本网站的主机名或IP,但是由于有些是多次访问的,我们希望在上面得到的结果的基础上做一些优化,使得列出的表中,每个主机只出现一次。我们可以使用:

cat /var/log/httpd/access_log | awk ‘{print $1}’ | wc –l

3.当然,我们可以根据需要选择第三方提供日志分析工具甚至自己开发一些日志分析工具来满足我们的需求。常见的第三方日志分析工具有:WebTrends、Wusage、wwwstat、http-analyze、pwebstats、WebStat Explorer、AccessWatch。

9.4 一些提示

日志一方面是我们分析网站的第一手资料,一方面却是吞噬大量磁盘空间的罪魁祸首。所以别忘了定期转储或删除一些老的日志文件。

十、Apache与代理服务器

代理服务器是位于客户和客户要访问的服务器之间的系统。当客户机使用URL请求访问远程资源时,代理服务器接受该请求并取得该资源以满足客户机的请求。在通常情况下,代理服务器是客户机的服务器,同时也是远程服务器的客户。

代理服务器可以在自己的缓冲区中存储被请求的内容,当这些信息再次被请求的时候,代理服务器就无需再从远程服务器上取了,这样代理服务器就减轻了网络的瓶颈问题。

Apache可以配置成为代理服务器。

10.1 前向代理服务器和逆向代理服务器

1.前向代理服务器

前向代理服务器通常位于用户主机和要访问的远程网络之间。它从远程服务器取得所要求的资源,然后返回给用户,同时存在磁盘上,以供下次使用。

在这种情况下,客户端的主机知道它们正在使用代理服务器,因为每个主机都必须配置为使用代理服务器。

例如,必须告诉WWW浏览器使用代理服务器,它才能使用代理服务器。所有的远程请求都通过代理服务器传输。

这类代理服务器也称为缓冲代理服务器。逆向服务器也可以缓冲数据,但它的作用愉好与前向服务器相反。

前向代理服务器的结构图如下所示:

图4 前向代理服务器

2.逆向代理服务器

逆向代理服务器位于互联网资源前面,逆向服务器从原始服务器找到被请求的资源,并反它返回给用户主机。

与前向代理服务器不同的是,逆向代理服务器的用户并不知道它们连接的是代理服务器而不是资源服务器本身。其结构如下图所示:

图5 逆向代理服务器

10.2 配置代理服务器

为了允许Apache作为代理服务器,需要将ProxyRequests设为On,然后根据你希望代理服务器做什么而增加什么附加配置。无论你希望做什么,你所选的代理配置都应该放入一个特殊的<Directory>容器中。

<Directory proxy:*>

</Directory>

实例一:将私有IP网连到互联网

假设私有网上只有一台计算机被分配了互联网上合法的IP地址,这台计算

机运行Apache代理服务器,ProxyRequest设置为On,并且不需要附加其他配置,所有请求均可由这台代理服务器代理服务。

实例二:让Apache允当远程WWW站点的缓冲

第一步:将ProxyRequest设置为On

第二步:创建配置如下:

<Directory proxy:*>

CacheRoot /www/cache

CacheSize 1024

CacheMaxExpire 24

</Directory>

这里的意思是设置Cache目录为/www/cache;大小为1024KB,即1MB;缓冲中的内容在24小时后失效。

实例三:建立镜像站点(其实这也就是所谓的逆向代理服务器)

第一步:将ProxyRequest设置为On

第二步:创建配置如下:

<Directory proxy:*>

ProxyPass / www.mot.com /

CacheRoot /www/cache

CacheDefaultExpire 24

</Directory>

10.3 一些提示

代理服务器,我们将会在后面的章节中详细介绍,这里只是针对Apache的功能介绍的。用Apache作代理服务器的性能并不高,效果并不好。不建议使用。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有