客户机地址访问控制
方法
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能正常访问
[[email protected] ~]# 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)
[[email protected] ~]# elinks -dumpwww.beyondjie.com
www.beyondjie.com
但是本机访问本机的www网站就会提示没权限,但是bbs就可以
[[email protected]_Server ~]# elinks -dumpwww.beyondjie.com
Forbidden
You don‘t have permission to access / on this server.
[[email protected]_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正常
[[email protected] ~]# elinks -dumpwww.beyondjie.com
Forbidden
You don‘t have permission to access / on this server.
[[email protected] ~]# elinks -dumpbbs.beyondjie.com
bbs.beyondjie.com
现在修改本机的hosts文件,使域名对应172网段的IP,并测试访问
[[email protected]_Server ~]# tail -1/etc/hosts
172.16.254.29 www.beyondjie.com bbs.beyondjie.com
[[email protected]_Server ~]# elinks -dumpbbs.beyondjie.com
bbs.beyondjie.com
[[email protected]_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)创建用户认证的数据库文件
[[email protected]_Server ~]# htpasswd -c/usr/local/httpd/conf/.user_db admin New password: Re-type new password: Adding password for user admin [[email protected]_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中配置完成,用户访问的时候,输入密码没错,但是就是访问不成功,服务器上错误日志
[[email protected]_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 密码文件 用户名 用户新密码