为了更好的控制对网站资源的访问,可以为特定网站目录添加访问授权,本篇文章将给大家介绍 HTTPD 服务的访问控制,主要针对:基于客户端地址限制、基于用户进行限制、基于域名的虚拟主机限制、基于 IP 地址、端口的虚拟主机限制。
一、基于客户端地址限制
Deny from 和 Allow from 配置项用于设置具体限制内容,使用 Deny from 和 Allow from 配置项时,需设置客户端地址等来进行限制策略,address1 / 2 可以是 IP 地址、网络地址、主机名和域名,通常情况下,网站服务器是对所有用户开放的,网页文档目录也未做任何限制,因此可使用“all”来表示拒绝或允许所有任意地址的访问等;
Deny from address1 address2 ...
Allow from address1 address2 ...
Order 配置项可以设置“allow,deny”或“deny,allow”来决定主机应用“允许”或“拒绝”策略的先后顺序。
- “allow,deny”:先“允许”后“拒绝”默认拒绝所有未明确允许的客户端地址。
- “deny,allow”:先“拒绝”后“允许”默认允许所有未明确拒绝的客户端地址。
<Directory "/usr/local/httpd/htdocs">
...... # 省略部分内容
Order allow,deny
Allow from all
</Directory>
使用“仅允许”的限制策略时,将按处理顺序改为“allow,deny”,并明确设置允许策略,只允许一部分主机进行访问。若只希望 IP 地址为:192.168.3.123 的终端能够访问 AWStats 分析系统,则针对 AWStats 分析系统的目录区域配置以下部分;
<Directory "/usr/local/awstats/wwwroot">
Options None
AllowOverride None
Order allow,deny
Allow from 192.168.3.123 # 允许 192.168.3.123 地址访问
</Directory>
使用“仅拒绝”的限制策略时,将按处理顺序改为“deny,allow”,并明确设置拒绝策略,只拒绝一部分主机进行访问。若只希望 192.168.3.0/24 该网段的终端能够访问 AWStats 分析系统,但允许其他任何终端访问,则针对 AWStats 分析系统的目录区域配置以下部分;
<Directory "/usr/local/awstats/wwwroot">
Options None
AllowOverride None
Order deny,allow
deny from 192.168.3.0/24 # 拒绝 192.168.3.0/24 网站的地址访问
</Directory>
该上述配置好后,可通过浏览器访问将会显示如下报错页面。
二、基于用户进行授权限制
基于用户的访问控制包含认证和授权。
认证:指用户身份的过程;
授权:指允许特定用户访问特定目录区域;
httpd 的基本认证是通过校验用户名、密码组合来判断是否允许用户访问。授权访问的用户账号需要先建立,并保存在固定的数据文件中。
可使用工具:htpasswd,来创建授权用户数据文件,并进行维护其中的用户账号。必须指定用户数据文件的位置,结合参数“-c”选项来表示新建立此文件。
新建数据文件 /usr/local/httpd/conf/.awspwd ,webjacktian 和 webjacktian1 为用户信息。
# cd /usr/local/httpd/
# bin/htpasswd -c /usr/local/httpd/conf/.awspwd webjacktian
New password: # 设置密码
Re-type new password:
Adding password for user webjacktian
# cat /usr/local/httpd/conf/.awspwd
webjacktian:u5Mq.qjrDfsvA
若不使用“-c”选项,指定的用户数据文件已存在,用户添加新的用户或修改现有的用户密码。
# bin/htpasswd /usr/local/httpd/conf/.awspwd webjacktian1
New password:
Re-type new password:
Adding password for user webjacktian1
# cat /usr/local/httpd/conf/.awspwd # 确认用户数据文件
webjacktian:1.wTyxw9/pItY
webjacktian1:zG4sQXO/HveOc
授权用户账号后,需修改 httpd.conf 配置文件,在特定的目录区域中添加授权配置,并启用基本认证设置允许哪些用户可进行访问。
vi /usr/local/httpd/conf/httpd.conf
...... # 省略部分内容
<Directory "/usr/local/awstats/wwwroot">
Options None
AllowOverride None
Order deny,allow
deny from 192.168.3.124
AuthName "http web" # 定义受保护的领域名称,将在浏览器弹出的认证对话框中显示。
AuthType Basic # 设置认证的类型,Basic表示基本认证。
AuthUserFile /usr/local/httpd/conf/.awspwd # 设置用于保存用户账号、密码的认证文件路径。
require valid-user # 只有认证文件中的合法用户才能访问,valid-user表示所有合法用户,若只授权单个用户,可改为指定的用户名。比如:webjacktian / webjacktian1
</Directory>
# /usr/local/httpd/bin/apachectl restart # 重启服务将新配置进行生效。
验证用户授权访问 AW