当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪Linux Apache Web 服务器         商业界很快看到了其价值,许多公司建立了主页,利用Web在网上发布消息,并反它作为各种服务的界面,如客户服务、特定产品和服务的详细说明、宣传广千以及是渐增长的产品销售和.........
    ▪Linux Apache Web 服务器(续三)       。 在这种情况下,在WWW上保证可以使用的唯一认证机制是由HTTP本身提供 的。在标准的Apache服务器实现了这样的认证,它能控制哪些主机可能访问特定的站点或特点的站点的一部分。 这种认.........
    ▪http www安全必备知识       要投巨资维护Web站点的安全。另一个最近的例子是,国内最大的综合性网站新浪在某天上午被黑客成功攻击,其门户页面被换成了黄色页面。给新浪造成了不小的副作用。这两个例子说明了.........

[1]Linux Apache Web 服务器
    来源: 互联网  发布时间: 2013-12-24
 
商业界很快看到了其价值,许多公司建立了主页,利用Web在网上发布消息,并反它作为各种服务的界面,如客户服务、特定产品和服务的详细说明、宣传广千以及是渐增长的产品销售和服务。商业用途促进了环球信息网络的迅速发展。 
如果你想通过主页向世界介绍自己或自己的公司,就必须将主页放在一个WEB服务器上,当然你可以使用一些免费的主页空间来发布。但是如果你有条件,你可以注册一个域名,申请一个IP地址,然后让你的ISP将这个IP地址解析到你的LINUX主机上。然后,在LINUX主机上架设一个WEB服务器。你就可以将主页存放在这个自己的WEB服务器上,通过它把自己的主页向外发布。 
WWW是基于客户机/服务器方式的信息发现技术和超文本技术的综合。WWW服务器通过HTML超文本标记语言把信息组织成为图文并茂的超文本;WWW浏览器则为用户提供基于HTTP超文本传输协议的用户界面。用户使用WWW浏览器通过Internet访问远端WWW服务器上的HTML超文本,如下图所示: 
http协议 
WWW浏览器 <-----> WWW服务器 

在WWW的客户机/服务器工作环境中,WWW浏览器起着控制作用,WWW浏览器的任务是使用一个URL(Internet地址)来获取一个WWW服务器上的WEB文档,解释这个HTML,并将文档内容以用户环境所许可的效果最大限度地显示出来。整个流程如下: 

WWW浏览器根据用户输入的URL连到相应的远端WWW服务器上; 

取得指定的WEB文档; 

断开与远端WWW服务器的连接。 
也就是说,平时我们在浏览某个网站的时候是每取一个网页建立一次连接, 
读完后马上断开;当需要另一个网页时重新周而复始。 
二、WWW服务器软件的比较和选择 
目前,在世界各地有许多公司和学术团体,根据不同的计算机系统,开发出不同的WWW服务器,如Apache、CERN httpd、Microsoft Internet Information System、NCSA httpd、Plexus httpd、WebSite等。在UNIX/LINUX系统中常用的有:CERN、NCSA、Apache三种 

CERN httpd 
这是最早期的WWW服务器软件,用C语言编写,现在功能有限,用户在 
缩减中。有兴趣的话可以在:中找到它。 

NCSA httpd 
这是在WWW服务器发展初期,美国国家超级计算机应用中心(NCSA) 
在1995年创建的当时一流的WWW服务器。它也是用C语言编写的,程序小、速度快。但是现在NCSA WWW服务器的主要开发人员已经离开了NCSA,这个服务器项目已经停顿了。相信大家不会选择一个没有发展的WWW服务器软件吧! 
当然,由于它的特殊历史地位,相信使用它的人现在还不少。如果你需要可以在获取它。 

Apache 
根据著名的WWW服务器调查公司所作的调查,世界上百分之五十以上的 
WWW服务器都在使用Apache,是世界排名第一的WEB服务器。 
Apache的诞生极富有戏剧性。当NCSA WWW服务器项目停顿后,那些使用NCSA WWW服务器的人们开始交换他们用于该服务器的补丁程序,他们也很快认识到成立管理这些补丁程序的论坛是必要的。就这样,诞生了Apache Group,后来这个团体在NCSA的基础上创建了Apache。 
Apache的主要特征是: 
. 可以运行上所有计算机平台; 
. 支持最新的HTTP 1.1协议; 
. 简单而强有力的基于文件的配置; 
. 支持通用网关接口CGI; 
. 支持; 
. 支持HTTP认证; 
. 集成Perl脚本编程语言; 
. 集成的代理服务器; 
. 具有可定制的服务器日志; 
. 支持服务器端包含命令(SSI) 
. 支持安全Socket层(SSL) 
. 用户会话过程的跟踪能力; 
. 支持FastCGI; 
. 支持Java Servlets。 
我们还有什么理由放弃这个功能强大而且前途光明的WWW服务器软件呢? 
三、安装Apache 
下面我们就开始漫漫征服Apache之旅,通过循序渐进的需求实例,一步步地学习使用Apache,从入门到精通。 
3.1 系统需求 
运行Apache不需要太多的计算资源。它在有6-10MB硬盘空间和8MB RAM的Linux系统上运行得很好。然而,只运行Apache可能不是你想做的事情。更可能的是,你想运行Apache来提供WWW服务、启动CGI进程以及充分利用所有WWW能够提供的令人惊奇的功能。在这种情况下,你需要提供反映负载要求的额外的磁盘空间和内存空间。也就是说,如果仅仅是启动WWW服务并不需要太多的系统资源,但是想要能为大量的客户提供服务就需要更多的系统资源。 
3.2 获取软件 
你可以在中获得Apache的最新版。而几乎所有的Linux发行版中均包含有Apache软件包,你也可以直接使用它。 
需要注意的是,Apache软件包有两种:一种是源代码,下载后需要自己重新编译;另一种是可执行文件,下载后只需解压就可以使用。 
3.3 安装软件 
你可以通过以下三种方法安装Apache服务器。 
1.如果你安装的Linux版本中带用Apache的话,就在选择所要安装的服务器的时候,将httpd这个服务选上,Linux安装程序将自动完成Apache的安装工作,并做好基本的配置。 
2.使用可执行文件软件包,这比较适合那些对编译工作不是太熟悉的初级用户,因为它相对比较简单。 

下载软件包apache_1.2.4.e.tar.gz 

tar xvzf apache_1.2.4.e.tar.gz 
这就完成了安装工作,简单吧! 
如果你使用的是RedHat Linux的话,你也可以下载apache_1.2.4.rpm软件安 
装包,然后使用rpm –ivh apache_1.2.4.rpm命令安装。 
3.如果你想把Apache服务器充分利用起来的话,就一定要自己编译Apache 
定制其功能。 

下载包含Apache源代码的软件包apache_1.2.4.tar.gz; 

然后用tar命令将它解开; 

将当前目录改变为Apache源代码发行版的src目录; 

将配置样本文件(Configuration.tmpl)复制为Configuration文件; 

编辑Configuration文件中的配置选项: 

Makefile配置选项:一些编译选项: 
. “CC=”一行指定用什么编译软件编译,一般为“CC=gcc”; 
. 如果需要将额外的标志(参数)指定给C编译软件,可以使用: 
EXTRA_CFLAGS= 
EXTRA_LFLAGS= 
. 如果系统需要特殊的库和包含文件,可以在这里指定它们: 
EXTRA_LIBS= 
EXTRA_INCLUDES= 
. 如果你要改变代码优化设置的话,你须将下面一句去掉注释,然 
后改成你所需要的值: 
#OPTIM=-O2 

Rule配置选项:用来决定需要什么功能,一般情况下无需改变。 

模块配置:模块是Apache的组成部分,它为Apache内核增加新功能。通过使用模块配置,可以自定义在Apache服务器中需要什么功能,这个部分也是Apache灵活性的表现。模块配置行如下所示: 
AddModule modules/standard/mod_env.o 
如果你需要Apache服务器具备什么功能,就将那个模块用AddModule语句加到配置文件Configuration中去。 
下表列出了Apache的模块功能: 
模块名 功能 缺省 
mod_access 提供基于主机的访问控制命令 y 
mod_actions 能够运行基于MIME类型的CGI脚本或HTTP请求方法 y 
mod_alias 能执行URL重定向服务 y 
mod_asis 使文档能在没有HTTP头标的情况下被发送到客户端 y 
mod_auth 支持使用存储在文本文件中的用户名、口令实现认证 y 
mod_auth_dbm 支持使用DBM文件存储基本HTTP认证 n 
mod_auth_mysql 支持使用MySQL数据库实现基本HTTP认证 n 
mod_auth_anon 允许以匿名方式访问需要认证的区域 y 
mod_auth_external支持使用第三方认证 n 
mod_autoindex 当缺少索引文件时,自动生成动态目录列表 y 
mod_cern_meta 提供对元信息的支持 n 
mod_cgi 支持CGI y 
mod_dir 能够重定向任何对不包括尾部斜杠字符命令的请求 y 
mod_env 使你能够将环境变量传递给CGI或SSI脚本 n 
mod_expires 让你确定Apache在服务器响应请求时如何处理Expires y 
mod_headers 能够操作HTTP应答头标 y 
mod_imap 提供图形映射支持 n 
mod_include 使支持SSI n 
mod_info 对服务器配置提供了全面的描述 y 
mod_log_agent 允许在单独的日志文件中存储用户代理的信息 n 
mod_log_config 支持记录日志 y 
mod_log_referer 提供了将请求中的Referer头标写入日志的功能 n 
mod_mime 用来向客户端提供有关文档的元信息 y 
mod_negotiation 提供了对内容协商的支持 y 
mod_setenvif 使你能够创建定制环境变量 y 
mod_speling 使你能够处理含有拼写错误或大小写错误的URL请求 n 
mod_status 允许管理员通过WEB管理Apache y 
mod_unique_id 为每个请求提供在非常特殊的条件下保证是唯一的标识 n 
表一:Apache模块功能一览表 

在src目录下执行:“. /configure”; 

编译Apache:执行命令“make”; 

根据机器性能的不同,经历一段5-30分钟的编译,就大功告成了。 

将编译好的可执行文件httpd复制到/etc/httpd/bin目录下; 

将Apache发行版的配置文件:access.conf、httpd.conf、mime.types、srm.conf文件复制到/etc/httpd/conf目录下。到此为止,安装完成。 
3.4 一些说明 
在Red Hat Linux 6.0中,Apache将自己的所有配置文件和日志文件放在了“/etc/httpd”目录下,其中“/etc/httpd/conf”下为配置文件,“/etc/httpd/log”下为日志文件。 
同时,它将建立“/home/httpd”目录,并在其下建立三个子目录:“html/”:在这个目录下存放HTML(主页)文件;“cgi-bin/”:在这个目录下可以存放一些CGI程序;“icons/”:在这个目录下是服务器自带的一些图标。 

    
[2]Linux Apache Web 服务器(续三)
    来源: 互联网  发布时间: 2013-12-24


在这种情况下,在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作代理服务器的性能并不高,效果并不好。不建议使用。

    
[3]http www安全必备知识
    来源: 互联网  发布时间: 2013-12-24
要投巨资维护Web站点的安全。另一个最近的例子是,国内最大的综合性网站新浪在某天上午被黑客成功攻击,其门户页面被换成了黄色页面。给新浪造成了不小的副作用。这两个例子说明了Web站点的安全是十分重要的,可以说,随着Internet的飞速发展,Web的安全其重要性逐渐超过其他应用安全。同时,由于Web必须要有开放性,这就是说,必须让任何人都能够有访问的权利,因此,使得防范更加困难。 
    Web的安全分为服务器安全和客户端安全(浏览器),前者主要针对Web的构建者,后者针对普通的用户。本章将就这两方面展开讨论。 

二、什么是HTTP 
    HTTP(Hypertext Transfer Protocol)超文本传输协议允许用户从WWW(World Wide Web)以及其他分布式信息系统请求和接受超文本的内容。它运行在TCP之上并用绑定服务器端口80,然后它还可以使用其他端口和协议来提供一个可靠的数据流。它是一个请求/响应协议。为了获得信息,一个浏览器客户程序(如netscape)向一个Apache服务器建立一个TCP连接并请求一个资源(“GET”)。服务器检查请求并根据服务器配置和包含的内容进行响应。服务器也许发送一个超文本标记语言(HTML)文件、文本、图片、声音、影像或一个java applet,它们可以在浏览器显示出来。服务器也可以运行一个程序来响应浏览器的请求(如通用网关接口或服务器的应用程序接口)。 
    测试HTTP连接的一个简易方法(同时也是一个潜在的安全漏洞)是telnet到一个Web服务器主机的端口80。可以输入“GET/”来浏览站点的基本HTML文档(如index.html),如下所示(去掉了HTML内容): 
$ telnet 80 
Trying… 
Connected to . 
Escape character is ‘^]' 
(在此敲入GET /) GET / 
下面刷的出来一个html的文件,例如: 
<html> 
<head> 
<title>老虎之家</title> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
</head> 

<frameset rows="128,327*" frameborder="YES" border="0" framespacing="0" cols="* 
<frame name="topFrame" scrolling="NO" noresize src="/blog_article/index-3.html" > 
<frame name="mainFrame" src="/blog_article/index-2.html"> 
</frameset> 
<noframes><body bgcolor="#FFFFFF"> 

</body></noframes> 
</html> 
Connection closed by foreign host. 

三、安全风险的分类 
    Web安全风险一般可以分为三类: 
l 对Web服务器及其相连LAN的威胁
对Web客户机的威胁
对服务器和客户机之间的通信信道的威胁 
1.服务器的风险 
    通常的网络安全总是设置各种各样的限制,使得不明身份的人无法获得非授权的服务但是Web服务器恰恰相反,它希望接受尽可能多的客户,对客户几乎没有任何限制和要求,好了,这样,相对于其他网络服务器,Web是最容易受到攻击的。最常见的威胁是HTTP服务器软件中的bug、错误的配置、不安全的CGI程序或者缺乏强大的机密功能等等。服务器通常受到的侵害有:修改和替换服务器提供的内容;获得对服务器访问控制保护的保密文档的访问权;在服务器上执行任意命令并破坏服务器的系统安全;检查日志文件来危害用户的隐私;进行服务拒绝攻击,使服务器或者网络连接失败。 
2.客户端风险 
    浏览网页是一个并不十分安全的活动。Bug、不合适的“活跃内容”和脚本以及服务器管理可以带给浏览者如下危害:应用程序和系统崩溃;包括病毒和特洛一木马在内的恶意代码;丢失保密的信息;隐私被侵犯等等。 
    主要的Web浏览器都支持下载嵌在HTML主页中的脚本并在浏览器中执行他们的功能。通常,这些程序用来与用户交互并在浏览器和服务器之间传输信息。例如,在Netscape的javascript和微软的Vbscript中都存在过bug。甚至在没有bug时,对一个有恶意的Web管理员来说,把能够突破保密措施或引起严重损失的脚本放在HTML主页中也是挺容易的。一种常见的攻击方式是创建一个javascript来欺骗性的产生一个错误信息或一个提示来要求用户提供网络登录ID和口令。其他的客户风险来自于隐私的侵犯。许多Web站点为客户写了一个验证cookie,cookie可以跟踪用户并暴露他们去了什么站点。按照指定cookie处理的RFC的要求,客户软件应提供一种方式来指明cookie应该或不应该被保存的域。 
3.传输安全 
    在Web客户机和Web服务器之间传输的信息可能在连接的任一端或中间任何地方被窃听或截取,包括客户机的LAN、服务器的LAN、客户机的ISP、服务器的ISP、两个ISP之间的任何中介网络。 
    幸运的是,目前IPSec(IP协议安全体系结构)的提出,使得网络通信可以通过在IP层进行认证和加密。但是目前还没有普及。 

四、保护Web服务器的安全 
1.选择安全的服务器软件 
    在Linux上有很多的httpd服务器软件。例如: 
* America Online Inc. AOLserver2.x 
* Allegro Software RomPager 2.x 
* Apache Group Apache1.x 
* Hawkeye Project Hawkeye 1.x.x 
* Sun Microsystems Java Server 1.x 
* Idonex AB Roxen 1.x 
* Spyglass Spyglass MicroServer 2.x 
* Rapid Logic Inc. WebControl 2.x 
* IMatix Xitami 2.x 
* Zeus Technology Zeus Web Application Server 3 
* VqSoft vqServer 1.x 
    如果大家有兴趣,可以到有关的站点去访问,了解其性能和特点。在这些软件中,Apache无疑是最为成功的。在Internet上有超过一半的网站使用Apache。在Apache的最新版本中有以下安全特征: 
* 可以通过域名、IP地址、用户和分组来禁止访问 
* 可以配置用户分组(而不是单独一个用户列表) 
* 可以不重启服务器来修改用户访问控制列表 
* CGI可执行程序能在拥有者的UID下执行 
* 基于目录文档的权限是分层的 
* 一个文档的一部分可以根据安全规则被隐藏 
* 支持SSL2.0和3.0 
* 有一个可用的口令机制 
* 可以基于URL制定安全规则 
2.服务器配置的一般规则 
    通常,Web服务器应该把一些好的系统安全路径、配置和工具结合起来加强安全。例如: 
尽量让一个主机投入Web服务器之中,不允许无理由的交互式登录。删除Web管理员帐号之外的其他用户
从/etc/inetd.conf中禁止不需要的服务。如果站点需要ftp功能,那么让另外一台主机作为ftp服务器。其他服务应该被禁止或者限制,包括telnet、finger、netstat/systat、echo等等。
删除不需要的shell和解释器。如果不运行Perl CGI脚本,就删除Perl
不支持自动列目录、符号链跟随和服务器端包含这样的选项
密切检测Web日志
应用安全的Web服务器软件,如支持Secure Sockets Layer(SSL)的软件
考虑在一个chroot环境中运行服务器
使用防火墙来控制对服务器的访问 
    仔细规划谁能访问一个安全服务器上的内容目录是很重要的。多数Web服务器支持各种访问控制方式。通常可以把访问权限在指定的IP地址或DNS主机名中,或指定必须提供口令来采访特定目录的用户。如果一个Web服务器中有保密的公司信息,就需要采取措施保证资料在自己的手中。在一个服务器上使用CGI要格外小心。一个CGI程序可能在系统中做出任何事情,从向外部人员提供访问权限到删除重要文件。 

五、保护Web客户端的安全 
    客户端软件通常是微软的IE,或是被微软挤压的netscape(还好在x-window下使用率比较高),还有简单的lynx等等。 
1.好的客户端安全经验 
    要认真考虑程序提供的安全设置,如果禁止了java和javascript,就会使浏览器更安全。应定期清理cache和cookie文件,避免去声誉不佳的站点以及使用“save”选项合为不可信的文件使用“open”选项。 
2.Mozilla 
    1998年,netscape公司决定发行navigator的源代码,并创建一个单独的机构来监控它的发行与维护:Mozilla.org。我们如果有时间的话,分析它的源代码相信对我们提高客户端安全有很大好处。详见 
3.Lynx 
    没有图片,没有声音的文本浏览器,我喜欢用它(在Linux下),但是注意,在缺省情况下不支持SSL。 
4.用户隐私 
    有些站点要求用户在得到访问权之前必须登记。多数站点维护服务器日志,这有可能泄漏敏感信息,包括IP地址、ISP、前一个访问的站点等等。其他站点把cookie推到管道中以便在以后关联用户访问的站点。 
用户可以遵循下面的规则: 
不要求用户登记
只收集用户的电子邮件地址而不是完整的联系信息
不要与第三方共享电子邮件地址
不要使Web上的日志文件可以被访问
当日志文件不再需要时删除他们 
    目前,World Wide Web Consortium已经开始指定称为Platform for Privacy Preferences的声明,允许用户根据自己的意愿来控制身份信息的公布。不过,对我们国家不使用。 

六、保护传输安全 
    从用户的观点来看,Web浏览可能危害隐私。它允许TCP/IP在两台机器之间提供一个匿名的数据流,但它不提供保密性、完整性和认证服务。有几个方案能为TCP/IP添加一个安全层,包括Secure Shell(SSH)和Microsoft的PCT。目前Secure Sockets Layer(SSL)占优势。 
1.SSL 
    SSL是netscape用来在应用协议(如http、telnet、nntp或者ftp)和更低的TCP/IP层之间提供数据安全的协议。他提供三种基本的安全特征: 
保密性 保密是通过对进程加密来实现的。根据连接双方的秘密协商,对称加密的密钥对每个连接都是唯一的
服务器认证 客户端要检查一个有效服务器的X.508v3证明,不论是一个RSA公开密钥证明,一个数字签名标准(DSS)证明,还是一个Diffie-Hellman证明。证明一般是由可信的证明代理发出的。
信息完整信 信息完整性(不被改动或者丢失)是由MAC(Message Authentication Code)保护的,它是一个根据信息和秘密数据进行计算的单项哈希函数。 
    另外,SSL提供一个可选的客户端认证。SSL的其他功能以及特殊的服务器认证被广泛应用于电子商务。虽然不同的Web浏览器以不同的方式指明一个安全的SSL连接,但是以“https://”开始的URL指明在客户端和服务器之间已经建立了一个安全的连接。 
详见 
2.TLS 
    TLS(Transport Layer Security)是由Transport Layer Security Working Group起草的,产生了一个RFC文档。 
    TLS用来建立一个安全的“会话”——它是一个客户机和一个服务器之间的关联,用来避免进行昂贵的协商来为每个新的安全参数建立一个额外的连接。该协议分为上层的TLS Handshake协议和下层的TLS Record协议。TLS Handshake协议为一个安全的会话建立加密参数。当使用TLS的客户端和服务器建立通信时,他们对协议版本达成一致,选择加密算法,还可以互相进行认证,并使用公开密钥加密技术来产生共享的秘密。 
详见 

3.建立一个TLS/SSL服务器 
    多数商用Web服务器产品的使用SSL。SSLeay使用了几个加密算法,某些可能要求商业许可证。SSLeay实现了5个不同的算法:DES、RSA、RC4、IDEA和Blowfish。RSA的专利属于美国。使用它是需要许可证的。 
   SSLeay和OpenSSL都可以集成到Apache Web服务器中。程序员Ben Laurie开发了一个Apache-SSL包,为Apache提供一组补丁程序、一些额外的源代码、一些帮助文件和配置文件实例。补丁程序需要用在Apache源代码中,其结果与SSLeay或OpenSSL编译并链接。 
    可以从下面的站点下载: 
    如果双方都知道另一方使用TLS/SSL,那么可以使任何运行在任一端口上的基于TCP地协议得到透明的安全。但是由于实际原因,为每个使用TLS/SSL保护安全的协议保留了几个端口号,这样允许包过滤防火墙让这些安全传输通过。例如: 
名称    端口号   描述 
Nsiiops 261/tcp  Iiop名字服务 
https   443/tcp  http协议 
Ddm-ssl 448/tcp  DDM-SSL 
Smtps   465/tcp  Smtp协议 
Nntps   563/tcp  nntp协议 
Sshell  614/tcp  SSLshell 
Ldaps   636/tcp  Ldap协议 
ftp-data 989/tcp  ftp协议和数据 
Ftps    990/tcp   ftp控制 
Telnets 992/tcp   telnet协议 
Imaps   993/tcp   Imap4协议 
Ircs    994/tcp   Irc协议 
Pop3s   995/tcp   Pop3协议 

七、其他 
    大多数Web服务器被设计成是由超级用户启动的。服务器必须作为root运行,使他能监视端口80。一旦服务器开始运行,它要改变它的UID中规定在配置文件中的用户名。不要像root那样运行你的服务器,虽然你的服务器必须用root启动,http.conf文件中一定不要包括user root行。如果这样,你的Web服务器执行的每个脚本都将作为超级用户运行,产生许多潜在地问题。 
    要当心把http和匿名ftp混合。许多站点用相同的目录来存储通过匿名ftp和通过网站访问的文档。例如,你可能有一个名为/netDocs的目录,他既是你的ftp用户的主目录又是你的Web服务器的根目录。这就允许把文件归到两类URLS,例如或者。在ftp上的http的主要优点是速度快、效率高。但是混合出现了各种安全问题: 
允许匿名ftp访问http目录,给用户提供了在任何Web服务器上限制对文件的访问的办法。因此,如果在你的Web服务器上有机密文件长久使用这个办法,可能失去文件的机密性。
如果一个攻击者能下载你的CGI脚本,他可以搜索出攻击的路径。
你必须完全的确保ftp用户无法上载一个能在你的服务器上运行的脚本
显示给你的/etc/passwd文件也可能被用WWW服务的人见到,从而导致它的内容受破坏。 
    另外,还有一些注意事项: 
删除不必要的用户(前面提到过)
不要安放NFS或输出任何目录
删除所有的编译程序 
删除所有的不是用作引导或者Web服务器的实用程序
提供尽可能少的网络服务(再次重申)
不要运行邮件服务器 
    如果想知道更多关于HTTP/WWW的安全知识,请访问 

    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3