客户机地址访问控制方法 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网站 1
2
3
4
5
6
| <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能正常访问 [iyunv@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)
[iyunv@Client ~]# elinks -dumpwww.beyondjie.com 但是本机访问本机的www网站就会提示没权限,但是bbs就可以 [iyunv@Apache_Server ~]# elinks -dumpwww.beyondjie.com Forbidden
You don't have permission to access / on this server. [iyunv@Apache_Server ~]# elinks -dumpbbs.beyondjie.com bbs.beyondjie.com 2)设置仅拒绝192.168.254.0/24的ip段访问 1
2
3
4
5
6
| <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正常 [iyunv@Client ~]# elinks -dumpwww.beyondjie.com Forbidden
You don't have permission to access / on this server. [iyunv@Client ~]# elinks -dumpbbs.beyondjie.com bbs.beyondjie.com 现在修改本机的hosts文件,使域名对应172网段的IP,并测试访问 [iyunv@Apache_Server ~]# tail -1/etc/hosts [iyunv@Apache_Server ~]# elinks -dumpbbs.beyondjie.com bbs.beyondjie.com [iyunv@Apache_Server ~]# elinks -dumpwww.beyondjie.com 提示:把域名对应的IP修改之后,同时需要把虚拟主机中的映射IP修改了 <VirtualHost192.168.254.100:80>------> <VirtualHost 172.16.254.29:80> 用户访问控制认证方式httpd服务器支持使用摘要认证(Digest)和基本认证(basic)两种方式。使用摘要认证需要在编译之前添加“—enable-auth-digest”选项,但是并不是所以浏览器都支持摘要认证,用得最多的就是基本认证 设置用户访问控制1)创建用户认证的数据库文件 1
2
3
4
5
6
7
| [iyunv@Apache_Server ~]# htpasswd -c/usr/local/httpd/conf/.user_db admin
New password:
Re-type new password:
Adding password for user admin
[iyunv@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需要用户授权 1
2
3
4
5
6
7
8
9
10
| <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中配置完成,用户访问的时候,输入密码没错,但是就是访问不成功,服务器上错误日志
[iyunv@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 密码文件 用户名 用户新密码
|