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) 及第三方公正单位。