apache的访问控制设置


 

客户机地址访问控制

方法

1)主要通过配置项Order,Deny from ,Allow from来限制客户机的主机名或ip。其中Order用于设置限制顺序,Denyfrom ,Allow from用户设置具体内容

2)设置Order 项时可用allow,deny 或deny,allow决定主机应用允许拒绝的先后顺序

  allow,deny  先允许后拒绝,默认拒绝所有未明确允许的客户机

  deny,allow 先拒绝后允许,默认允许所有未明确拒绝的客户机

3)使用allow from或者deny from时候,后面可以是ip地址,网络地址,主机名,域名,使用“all”时表示任意地址

举例

1)设置仅允许某个ip访问www网站

<Directory"/usr/local/httpd-2.4.4/htdocs/www">
       Options Indexes FollowSymLinks
       AllowOverride None
       Orderallow,deny
       Allow from192.168.254.10
</Directory>


客户机192.168.254.10能正常访问

[root@Client ~]# ifconfig eth0

eth0     Link encap:Ethernet  HWaddr00:0C:29:9A:E1:E1 

         inet addr:192.168.254.10  Bcast:192.168.254.255  Mask:255.255.255.0

         inet6 addr: fe80::20c:29ff:fe9a:e1e1/64 Scope:Link

         UP BROADCAST RUNNING MULTICAST MTU:1500  Metric:1

         RX packets:361 errors:0 dropped:0 overruns:0 frame:0

         TX packets:259 errors:0 dropped:0 overruns:0 carrier:0

         collisions:0 txqueuelen:1000

         RX bytes:35962 (35.1 KiB)  TXbytes:35706 (34.8 KiB)

 

[root@Client ~]# elinks -dumpwww.beyondjie.com

                               www.beyondjie.com

但是本机访问本机的www网站就会提示没权限,但是bbs就可以

[root@Apache_Server ~]# elinks -dumpwww.beyondjie.com

                                   Forbidden

 

  You don‘t have permission to access / on this server.

[root@Apache_Server ~]# elinks -dumpbbs.beyondjie.com

                              bbs.beyondjie.com

2)设置仅拒绝192.168.254.0/24的ip段访问

<Directory"/usr/local/httpd-2.4.4/htdocs/www">
       Options Indexes FollowSymLinks
       AllowOverride None
       Order deny,allow
       deny from 192.168.254.0/24
</Directory>


客户机192.168.254.10访问www出错,bbs正常

[root@Client ~]# elinks -dumpwww.beyondjie.com

                                   Forbidden

 

  You don‘t have permission to access / on this server.

[root@Client ~]# elinks -dumpbbs.beyondjie.com

                               bbs.beyondjie.com

现在修改本机的hosts文件,使域名对应172网段的IP,并测试访问

[root@Apache_Server ~]# tail -1/etc/hosts

172.16.254.29  www.beyondjie.com bbs.beyondjie.com

[root@Apache_Server ~]# elinks -dumpbbs.beyondjie.com                   

                              bbs.beyondjie.com

[root@Apache_Server ~]# elinks -dumpwww.beyondjie.com

                              www.beyondjie.com

提示:把域名对应的IP修改之后,同时需要把虚拟主机中的映射IP修改了

<VirtualHost192.168.254.100:80>------> <VirtualHost 172.16.254.29:80>

用户访问控制

认证方式

httpd服务器支持使用摘要认证(Digest)和基本认证(basic)两种方式。使用摘要认证需要在编译之前添加“—enable-auth-digest”选项,但是并不是所以浏览器都支持摘要认证,用得最多的就是基本认证

设置用户访问控制

1)创建用户认证的数据库文件

[root@Apache_Server ~]# htpasswd -c/usr/local/httpd/conf/.user_db admin
New password: 
Re-type new password: 
Adding password for user admin
[root@Apache_Server ~]# ls -a/usr/local/httpd/conf/
.  extra       httpd.conf.b    magic      original
.. httpd.conf  httpd.conf.bak  mime.types .user_db


提示:

-c表示创建数据库文件,当这个文件存在时就不用使用该参数

admin为用户

htpasswd其他参数

 -c 创建一个加密文件

 

  -n 不更新加密文件,只将apache htpasswd命令加密后的用户名密码显示在屏幕上

 

  -m 默认apache htpassswd命令采用MD5算法对密码进行加密

 

  -d apache htpassswd命令采用CRYPT算法对密码进行加密

 

  -p apache htpassswd命令不对密码进行进行加密,即明文密码

 

  -s apache htpassswd命令采用SHA算法对密码进行加密

 

  -b 在apache htpassswd命令行中一并输入用户名和密码而不是根据提示输入密码

 

  -D 删除指定的用户

 

  在Windows, NetWare and TPF 系统中‘-m’选项是默认的,在使用apache htpasswd命令时可以忽略。在其他系统中,’-p’选项可能不能工作。

2)添加用户授权配置,使访问bbs需要用户授权

<Directory"/usr/local/httpd-2.4.4/htdocs/bbs">
       Options Indexes FollowSymLinks
       AllowOverride Authconfig
       Order allow,deny
       allow from all
       AuthName "Please Login"
       AuthType basic
       AuthUserFile "/usr/local/httpd/conf/.user_db"
       require valid-user
</Directory>


提示:

AuthName 定义受保护的领域名称,在浏览器访问的时候会显示

AuthType 设置认证类型

AuthUserFile 设置用于用户认证帐号密码的数据库文件所在位置

require 要求只有认证文件中的合法用户才能访问,其中valid-user表示所有合法用户,若只授权给单个用户,则改为指定的用户名

3)在客户机上访问结果

 

在这里提示httpd-2.4.4的一个bug.在httpd-2.2版本中没遇到过

当创建完用户密码文件之后,也在httpd.conf中配置完成,用户访问的时候,输入密码没错,但是就是访问不成功,服务器上错误日志

[root@Apache_Serverconf]# tail -f /usr/local/httpd-2.4.4/logs/bbs.beyondjie.com-error_log

[ThuDec 18 11:56:38.101959 2014] [auth_basic:error] [pid 4346:tid 139784973178624][client 192.168.254.19:63319] AH01617: user man: authentication failure for"/": Password Mismatch

[ThuDec 18 11:57:43.220895 2014] [auth_basic:error] [pid 4350:tid 139784804599552][client 192.168.254.19:63320] AH01617: user fuzj: authentication failure for"/": Password Mismatch

大致意思是用户的密码不正确,但是创建密码文件的时候百分之百的确定没错,就是授权不成功。这里需要使用下面该命令重新生成一下用户名和密码即可

htpasswd-b 密码文件 用户名 用户新密码

 


本文出自 “Study-Everyday” 博客,请务必保留此出处http://studys.blog.51cto.com/9736817/1591436

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。