全部博文(37)
2010年(37)
分类: 系统运维
2010-03-17 18:35:21
密码保护目录设置
这种认证方式的基本思想是:Apache 启动认证功能后,即启用AllowOverride功能,就可以在需要限制访问的目录下建立一个名为.htaccess 的文件,指定认证的配置命令,则Apache就会在每一个目录中查找.htaccess文件。当用户第一次访问该目录的文件时,浏览器会显示一个对话框,要求输入用户名和密码,进行用户身份的确认。若是合法用户,则显示所访问的页面内容,此后访问该目录的每个页面,浏览器自动送出用户名和密码,不用再输入了,直到关闭浏览器为止。
步骤:
添加用户:
[root@uplooking ~]# useradd cisco
[root@uplooking ~]# passwd cisco
Changing password for user cisco.
New UNIX passwd:
BAD PASSWORD: it is too short
Retype new UNIX passwd:
passwd: all authentication tokens updated successfully.
[root@uplooking ~]#
建立要保护的目录private,在此目录中建立网页文件:
[root@uplooking ~]# su - cisco
[cisco@uplooking ~]$ chmod o+x .
[cisco@uplooking ~]$ ll -d .
drwx-----x 4 cisco cisco 4096 01-22 16:36 .
[cisco@uplooking ~]$ mkdir -p public_html/private
[cisco@uplooking ~]$ ls
public_html
[cisco@uplooking ~]$ cd public_html/
[cisco@uplooking public_html]$ ls
private
建立网页文件:
[cisco@uplooking private]$ pwd
/home/cisco/public_html/private
[cisco@uplooking private]$ vim index.html
[cisco@uplooking private]$ cat index.html
hello everybody!
[cisco@uplooking private]$ ll
总计 4
-rw-rw-r-- 1 cisco cisco 17 01-22 16:41 index.html
新增加密文件,并添加一个访问账号:
[root@uplooking ~]# cd /home/cisco/
[root@uplooking cisco]# htpasswd -c .htpasswd ibm
New password:
Re-type new password:
Adding password for user ibm
增加一个帐号使用-c选项,建立第二帐号不用-c选项,-m选项是修改用户密码
[root@uplooking cisco]# cat .htpasswd
ibm:umQ09aNxjg2K
建立.htaccess文件:
[root@uplooking private]# pwd
/home/cisco/public_html/private
[root@uplooking private]# vim .htaccess
[root@uplooking private]# cat .htaccess
AuthName "cisco"
AuthType Basic
AuthUserFile /home/cisco/.htpasswd
require valid-user
•AuthName “private passwd”//在密码框里显示文字
•AuthType Basic //身份验证时的编码方式
•AuthUserFile /home/test/.htpasswd //密码文件存放的地方,一定是绝对路径。
•require valid-user /允许.htpasswd文件里的用户能访问网页目录
修改APACHE的主配置文件/etc/httpd/conf/http.conf:
993
994 AllowOverride All
995
[root@uplooking ~]# service httpd restart
停止 httpd: [确定]
启动 httpd: [确定]
************得支持个人主页**************
测试:
在URL中输入:
将会出现如下画面:
输入用户名:ibm
密码:*****
就可以正确访问了:
设置apache的虚拟主机:
虚拟主机是指在同一台服务器实现多个Web站点,对于小企业来说不需要有专门的Web服务器来搭建自己的Web站点
虚拟主机分为:
1:基于IP的虚拟主机
2:基于名字的虚拟主机
基于IP的虚拟主机:每个虚拟主机都有自己的IP地址
基于名字的虚拟主机:每个虚拟主机IP地址相同,主机名不同
虚拟主机指令
#ifconfig eth0:0 192.168.1.2 up临时增加IP地址
[root@uplooking ~]# ifconfig eth0:0 202.100.1.88 up
[root@uplooking ~]# ifconfig eth0:0
eth0:0 link encap:Ethernet HWaddr 00:0C:29:9C:B2:EA
inet addr:202.100.1.88 Bcast:202.100.1.255 Mask 255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:67 Base address:0x2000
#cp ifcfg-eth0 ifcfg-eth0:0永久增加IP地址,再对ifcfg-eth0:0进行编辑
#service network restart
基于IP的虚拟主机:
一个虚拟主机的所有配置指令都包含在
编辑httpd.conf文件,增加如下内容
ServerName vhost1.abc.com
DocumentRoot /www/vhost1
ServerName vhost2.abc.com
DocumentRoot /www/vhost2
建立相应的网页文件
#mkdir -p /www/vhost1
#mkdri -p /www/vhost2
在vhost1和vhost2里建立网页文件index.html
注意:vhost1与vhost2必须在DNS里解析
然后进行访问测试:
基于名字的虚拟主机
浏览器和服务器通信时,服务器能够跟踪浏览器请求的是哪个主机名字。因此可以利用这个新特性,使用更轻松的方式设定虚拟主机。这种方式不需要额外的IP地址,但需要新版本的浏览器支持。这种方式已经成为建立虚拟主机的标准方式。要建立非IP基础的虚拟主机,多个域名是不可少的配置,因为每个域名就对应一个要服务的虚拟主机。因此需要更改DNS服务器的配置
当apache在读取httpd.conf过程中遇到NameVirtuaHost指令时,它为指定的IP地址建立一个虚拟主机表
当apache分析httpd.conf时,每当它遇见一个
当它找到一个虚拟主机,其ServerName指令与输入请求的Host头部匹配时,apache就使用该虚拟主机容器中的配置来响应该请求,即使用多个名字指向同一个ip地址
配置基于名字的虚拟主机,修改httpd.conf
NameVirtualHost 192.168.2.1
ServerName
DocumentRoot /www/sohu
ServerName
DocumentRoot /www/yahoo
配置文件的一些说明:
配置文件:/etc/httpd/conf/httpd.conf
ServerType standalone //定义服务器启动方式
ServerRoot "/etc/httpd" //指定守护进程httpd的运行目录
PidFile run/httpd.pid此文件记录httpd守护进程的进程号
Timeout 120//定义客户程序和服务器连接的超时间隔(秒),超时则服务器将断开与客户机的连接
KeepAlive On// KeepAlive 配置指令决定当处理完用户发起的HTTP 请求后是否立即关闭 TCP 连接,如果 KeepAlive 设置为On,那么用户完成一次访问后,不会立即断开连接,如果还有请求,那么会继续在这一次 TCP 连接中完成,而不用重复建立新的 TCP 连接和关闭TCP 连接,可以提高用户访问速度。支持HTTP1.1版本的一次连接多次传输功能,但需要较新浏览器支持,最好打开。
MaxKeepAliveRequests 100//一次连接中可以进行的HTTP请求的最大请求次数,0是不限制
KeepAliveTimeout 15//一次连接中的多次请求传输之间的时间,如果服务器已经完成了一次请求,但一直没有接受到客户程序的下一次请求,在间隔超过了这个参数设置后,服务器就断开连接
MinSpareServers 5 //设置最少的空余子进程数量
MaxSpareServers 20 //设置最多的空闲子进程数量
StartServers 5//设置httpd启动时启动的子进程副本数量
MaxClients 256//服务器支持的最多的并发访问的客户数
MaxRequestsPerChild 4000//每个子进程处理服务请求次数,0支持每个副本进行无限次的服务处理
以上这些设置默认,不需要太多更改
ServerAdmin //web服务器的管理员email地址,HTTP出现错误时返回给浏览器,以便让web使用者和管理员联系
DocumentRoot "/var/www/html"
Options FollowSymLinks:访问根文档目录之外的目录
AllowOverride None:不需要查看目录下的访问控制(.htaccess)
UserDir public_html 默认用户主页存放的目录名称
DirectoryIndex index.html index.html.var 默认支持的网页格式
AccessFileName .htaccess 目录加密所关系的文件名
有关apache的白名单和黑名单:
配置文件中一般对目录设定
Order Deny,Allow
Allow from All
先检查禁止设定,没有禁止的全部允许
Order Allow,Deny
Deny from All
无条件禁止访问
Order Deny,Allow
Deny from ip1 ip2
禁止ip1和ip2访问
或者这样设定:
Order Allow,Deny
Allow from all
Deny from ip1 ip2
第二句allow允许了访问,但由于在order中allow不是最后规则,因此还需要看有没有deny规则,于是到了第三句,符合ip1和ip2的访问就被禁止了
注意,order决定的“最后”规则非常重要
例子:
Order配置项,定义控制顺序
先允许后拒绝,默认拒绝所有:Order allow,deny
先拒绝后允许,默认允许所有:Order deny,allow
Allow、Deny配置项,设置允许或拒绝的地址
Deny from address1 address2 …
Allow from address1 address2
Order allow,deny
Allow from 192.168.0.0/24
Deny from 192.168.0.100
下面是两个错误的例子和改正方式:
Order Deny,Allow
Allow from all
Deny from domain.org
错误:想禁止来自domain.org的访问,但是deny不是最后规则,apache在处理到第二句allow的时候就已经匹配成功,根本就不会去看第三句。
解决方法:Order Allow,Deny,后面两句不动,即可。
Order Allow,Deny
Allow from ip1
Deny from all
错误:想只允许来自ip1的访问,但是,虽然第二句中设定了allow规则,由于order中deny在后,所以会以第三句deny为准,而第三句的范围中又明显包含了ip1(all include ip1),所以所有的访问都被禁止了。
解决方法一:直接去掉第三句。
解决方法二:
Order Deny,Allow
Deny from all
Allow from ip1