Apache的站点安全---身份验证和来源控制

Apache服务器搭建与安全管理

首先介绍下Apache的主要特征都是有哪些呐?

1、可以运行上所有计算机平台; 2、支持最新的HTTP1.1协议; 3、简单而强有力的基于文件的配置; 4、支持通用网关接口CGI; 5、支持虚拟主机; 6、支持HTTP认证; 7、集成Perl脚本的编程语言; 8、集成的、具有可定制的服务器日志; 9、支持安全Socket层(即ssl)【我在下一篇将要介绍】 10、用户会话过程的跟踪能力; 11、支持FastCGI、Java Servlets。

那么从这么多突出的特点来看,我们还有神魔理由放弃这个强大而且前途光明的WWW服务器软件呐?

下面我们先来安装Apache

下面我们就开始漫漫征服Apache之旅,我会通过循序渐进的需求实例,一步步的学习使用Apache,我想我们会从入门到精通,当然这是需要有一个缓慢积淀的过程的。

Apache运行环境要求不高,它在有6-10MB硬盘空间和8MB RAM的linux操作系统上完美运行。

那么显示获取软件,你可以在http://www.apache.org 中获取Apache的最新版本,如果我们要满足自己的安装时要更高的需求,那么我们可以下载源码安装包,当然下载.rpm包,安装更方便。我们这里就是用rpm做案例。

[root@Blue ~]# mount /dev/cdrom /mnt/cdrom#挂载光驱#

[root@Blue Server]# rpm -ivh httpd-2.2.3-31.el5.i386.rpm #安装httpd 服务#

warning: httpd-2.2.3-31.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186

Preparing... ########################################### [100%]

1:httpd ########################################### [100%]

[root@Blue Server]# service httpd star                              t#启动服务#

查看网页所存放的目录:

[root@Blue conf]# cd /var/www/html

[root@Blue html]# ll                                                         #查看没有网页内容#

total 0

[root@Blue html]# echo hello >index.html#我们自己建一个简单的hello输出html文件#

[root@Blue html]# ll

total 8

-rw-r--r-- 1 root root 6 Aug 22 19:39 index.html

现在在同一局域网内的客户机访问:

访问成功。

接下来的实验我的主机ip都是:192.168.1.125了。(由于地址有冲突,我换了个ip)

现在我们来分析一下/etc/httpd 目录下文件。

[root@Blue ~]# cd /etc/httpd

[root@Blue httpd]# ll

total 28

drwxr-xr-x 2 root root 4096 Aug 22 19:38 conf                                  #主配置文件目录#

drwxr-xr-x 2 root root 4096 Aug 22 19:29 conf.d #额外补充的配置文件,例如:ssl验证、php#

lrwxrwxrwx 1 root root 19 Aug 22 19:29 logs -> ../../var/log/httpd      #日志#

lrwxrwxrwx 1 root root 27 Aug 22 19:29 modules -> ../../usr/lib/httpd/modules#http调用库#

lrwxrwxrwx 1 root root 13 Aug 22 19:29 run -> ../../var/run    #http的运行参数#

我们来看一下httpd服务的安装目录所有的目录:

[root@Blue ~]# rpm -ql httpd |less                                        #查看安装httpd服务目录#

下面还有比较重要的man手册目录,可以帮助我们解释一些指令用法:

还有很多的安装目录的.....我们先看这些,用到时再分析。

[root@Blue ~]# vim /etc/httpd/conf/httpd.conf

14 # The configuration directives are grouped into three basic sections:

15 # 1. Directives that control the operation of the Apache server process as a

16 # whole (the 'global environment').

17 # 2. Directives that define the parameters of the 'main' or 'default' server,

18 # which responds to requests that aren't handled by a virtual host.

19 # These directives also provide default values for the settings

20 # of all virtual hosts.

21 # 3. Settings for virtual hosts, which allow Web requests to be sent to

22 # different IP addresses or hostnames and have them handled by the

23 # same Apache server process.

这里我们可以看到httpd的配置文件分为3部分:

1、全局变量配置。

2、主要的、默认的参数配置。

3、虚拟主机选项

57 ServerRoot "/etc/httpd"#说明在该目录下形成一个根#

63 PidFile run/httpd.pid#进程目录#

这个进程究竟是神魔意思类,我们来用命令来看一下:

[root@Blue run]# vim httpd.pid#这时这个配置文件只有一个进程号,可以与重启后对比一下,不一样了#

[root@Blue run]# service httpd restart

[root@Blue run]# cat httpd.pid

3824

[root@Blue run]# ps aux |grep httpd

root 3824 0.0 0.2 10572 3008 ? Ss 12:15 0:00 /usr/sbin/httpd

apache 3828 0.0 0.2 10572 2108 ? S 12:16 0:00 /usr/sbin/httpd

apache 3829 0.0 0.2 10572 2108 ? S 12:16 0:00 /usr/sbin/httpd

apache 3830 0.0 0.2 10572 2108 ? S 12:16 0:00 /usr/sbin/httpd

apache 3831 0.0 0.2 10572 2108 ? S 12:16 0:00 /usr/sbin/httpd

apache 3832 0.0 0.2 10572 2108 ? S 12:16 0:00 /usr/sbin/httpd

apache 3833 0.0 0.2 10572 2108 ? S 12:16 0:00 /usr/sbin/httpd

apache 3834 0.0 0.2 10572 2108 ? S 12:16 0:00 /usr/sbin/httpd

apache 3835 0.0 0.2 10572 2108 ? S 12:16 0:00 /usr/sbin/httpd

root 3838 0.0 0.0 1844 476 pts/3 R+ 12:16 0:00 grep httpd

#可以看出父进程id 号 ,下面是一些可操作的 子进程id,当我们把http服务stop后这些文件就找不到了#

68 Timeout 120#这是说明连接超时120s自动断开#

74 KeepAlive Off#这是http1.1版本的优点,一次连接多次请求,就是在三次握手时#

81 MaxKeepAliveRequests 100#限制连接,当超过时,重新三次握手后再来访问#

87KeepAliveTimeout 15#两次访问之间不能超过15s,否则重新打开#

93 # prefork MPM#93行以后为多进程处理机制,这也是Apache在市场上 占有较大份额的原因#

Apache 的MPM 机制就是是采用的prefork.c

100 <IfModule prefork.c>

101 StartServers 8#空闲子进程数目#

102 MinSpareServers 5

103 MaxSpareServers 20

104 ServerLimit 256#限制同时在线人数,这里我们应该明白最大的并发数

105 MaxClients 256和最大的请求数是两个概念,一次连接可多次请求#

106 MaxRequestsPerChild 4000#每个子进程最多接受多少次请求数#

281DocumentRoot "/var/www/html"#网页存放目录#

291<Directory />#实现网站安全性设置语法#

292 Options FollowSymLinks#我们可以在这中间加一些options 选项来限制访问或

293 AllowOverride None允许访问#

294 </Directory>

现在我们想实现网站的安全访问:怎么来做类?

首先案例一:用windows server 2003 服务器上的IIS服务能不能实现呐?

首先,安装IIS服务:打开控制面板==》添加和删除组件==》勾选应用程序服务==》勾选iis ==>安装

选中之后,下一步,再勾选IIS选项,安装。

如何实现网站的安全性?

安装完成之后打开“IIS管理器”。

可以在“目录安全性”选项下来做编辑。

首先我们在c盘下新建一个webroot文件夹存放网页,在这文件夹里新建一个网页index.html

再来把我们新建的小网站架设起来,在IIS管理器 右击“默认网站”,属性,网站,主目录是c:\webroot ,网站主页名:index.html 现在应用,确认,网站就建设好了。

现在访问本地能访问到,这样做是没有安全性可言的。

为了保证安全我找到目录安全性,并进入编辑,不使用匿名访问,并使用windows集成身份验证:

点击确认,应用。

这时候再来访问一下本地网站,就会看到有了身份验证对话框:

只有在对话框里输入正确的用户名和密码,经过身份验证才能访问,这就实现了windows下网站相对安全的访问,当然,其他的ip绑定,用户绑定都可以在目录安全性下深入的设置的,就是所谓的来源控制。

接下来linux下怎么来实现呐?

上面再介绍httpd.conf文件时我们也谈到了,

那么我们来给这语法中添加一些options 选项:

首先修改配置文件:(只有一行修改)

[root@Blue html]# vim /etc/httpd/conf/httpd.conf

327 AllowOverride all                                             #使用允许所有代理访问#

然后建立站点网页index.html

[root@Blue ~]# cd /var/www/html

[root@Blue html]# ll

total 8

-rw-r--r-- 1 root root 6 Aug 22 19:39 index.html

[root@Blue html]# vim .htaccess                                #建立说明文件#

AuthName :在要你输入账号与密码的对话窗口中,出现的『提示字符』 AuthType :认证的类型,我们这里仅列出Apache 预设的类型,亦即是『basic』 AuthUserFile :这个保护目录所使用的账号密码配置文件。 也就是说,这 个档案是随便你设定的,当然啦,所以使用者当然可以自行设定账号与密码。 档案内的账号不限在 /etc/passwd 出现的使用者,另外,这个档案不要放置

在Apache 可以浏览的目录内,所以我将他放置在首页之外。· require:后面接可以使用的账号。 如果要让该密码文件内的用户都能够登入,就改成 『require valid-user』即可。

这时我们的账号文件,就是上图的验证目录还没有建,我们就来建一个。

[root@Blue www]# htpasswd --help#查看该命令的用法#

[root@Blue www]# htpasswd -c .dabinpasswd libin         #创建用户和新目录#

New password:

Re-type new password:

Adding password for user libin

[root@Blue www]# htpasswd .dabinpasswd libin1         #建第二个用户-c参数就不加了#

New password:

Re-type new password:

Adding password for user libin1

[root@Blue www]# cat .dabinpasswd                        #查看该目录内容,有了我们新建的用户#

libin:hrMXIH9s22zpA

libin1:qG.9oMeO71Kg2

[root@Blue www]# service httpd restart#重启服务,访问进行验证#

在客户机上访问会出现对话框:

输入用户名密码,就可以访问到了。

那么怎么来实现来源控制呐?

[root@Blue www]# vim /etc/httpd/conf/httpd.conf

332 Order allow,deny

333 Allow from 192.168.1.102

[root@Blue www]# service httpd restart

重启服务再来访问就不行了!出现一个测试页。

而这个ip的机器可以继续访问:

我们也可以 用自己的linux机器的文本浏览器访问:

首先安装文本浏览器rpm包:

[root@Blue www]# rpm -ivh /mnt/cdrom/Server/lynx-2.8.5-28.1.el5_2.1.i386.rpm

现在来访问我们的网站:

[root@Blue www]# lynx          #文本浏览 #

也可以拒绝某ip地址客户机访问,其他机器都允许。

应该这样修改配置文件:

332 Order allow,deny                                           #这个是有先后验证顺序的#

333 deny from 192.168.1.102

334 allow from all

这样网站的安全就完成了基本的设置,我们还可以接着深入研究的。

下文我会介绍怎样实现比较流行的https 安全认证。这样有数字证书更安全,加密的网页数据 (SSL) 及第三方公正单位。