Linux不仅是UNIX操作系统的优秀例子,它还为实现和检查与CIW安全专家考试相关的许多安全概念提供了条件。在这个练习中,可以对Red Hat Linux系统的Apache Web服务器的目录执行访问控制。使用.htaccess访问文件和htpasswd程序为一个日录建立ACL。这个目录称为/acltest.
1.以root身份登录Linux系统。
2.检查是否安装了Web服务器:
host# rpm -qa |
grep apache
hostft apache-1.3.9-4
3.如果任何有关Apache服务器的信息被返回,说明已安装过了。如果没有安装,从下列其中一个网站获取Apache Red Hat Package Manager(RPM):
http: //www.rpmfind.net
http: / /www.apache.org
4.打开一个浏览器,看http是否在运行,或使用下列命令:ps aux |grep httpd。既然已经知道httpd已在运行,改变到根目录下:cd /
5.建立一个名字为acltest的目录,这就是你将进行访问控制的目录.
mkdir acitest
6.使用chmod命令,使得此目录的所有者是名字为apache的用户和名字为apache的组.同样,允许名字为apache的用户对此目录的权限为可读和可执行.
host# chown apache acltest/
host# chgrp apache acltest/
host# chmod 500 acltest/
7.使用cd命令改变到acltest目录下,使用touch命令在acltest目录下建立一个名为index.htm的文件,你需要这个文件,否则,Apache服务器不允许访问这个目录.
touch index.html
8.使用文本编辑器如vi,输入下列代码到index.html文件中:
Creating an ACL
This is a secret page
9.先按Esc键,然后输入ZZ(确保都是大写字母)保存这个文件的变化并退出.这一系列命令由vi保存所做的变化.
10.你已经建立了一个简单的HTML文件,下一步,要编写Apache服务器程序识别这个新目录,这样你就可以在浏览器中看到它.改变到/etc/httpd/conf目录下:
Cd /etc/httpd/conf/
Red Hat Linuxwgkq/conf/目录.其他版本的Linux和其他Apache的安装可能将配置文件存储在不同的录中,如/var/usr/httpd/conf.
11.使用文本编辑器,打开httpd.conf文件:
Vi httpd.conf
12.向下滚动屏幕到文件的Aliases部分,然后正确地输入下列代码:
Alias /acltest
"/acltest"
AllowOverride All
Order allow/deny
Allow from all
输入部分的第一行建立一个别名为/acltest。用户输入这个别名进入浏览器。别名指令的语法非常严格。首先,列出别名的名字(如用户输入浏览器的文本),然后是存在硬盘上的目录名。第二行开始是对硬盘上/acltest目录的一个目录定义。Allow-Override指令允许你指定一个。htaccess文件,文件中允许定制这个目录的行为。下面两行代码中Apacne服务器允许访问所有的用户,除了.htaccess文件中定义的语句。最后要结束目录定义。
若要了解Apacne服务器指令的更多信息,请访问
http: //httpd.apache.org/docs-2.O/mod/directives .html
如果URL路径中多包含了一个斜杠(/),表示服务器要求用这个斜线扩展别名。换句话说,如果你使用Alias/acltest//acltest/。则URL/acltest将不由Apache服务器起别名。你将不得不使用反斜线符号/acltest/.
13.一旦你正确输入完新的别名和目录定义后,退出vi并确认保存所做的变化。
14.你只是建立了一个虚拟目录。现在,Apache服务器需要重读它的配置文件,这样你先前建立的新虚拟目录和别名才会起作用。完全停止并重新启动Apache服务器:
/etc/rc.d/init.d/httpd restart
只简单地使用kill HUP命令或httpd start命令不会很快起作用,因为Apache服务器是多线程处理各种连接。为保证练习进行得快一些,停止所有httpd进程,然后使用/etc/rc.d/rc.local/httpd stop命令从根目录重新启动httpd。也可以使用如下killal1命令:killall apache。如果知道Apache的进程ID(PID),还可以使用kill命令。要保证完全停止Web浏览器上的以前的全部实例,它可能会缓存旧的信息。
(未结束)