站点访问控制html
能够基于两种类型的路径指明对那些资源进行访问控制
文件系统路径
<Directory ""> </Direcotry>
<File ""> </File>
<FileMatch ""> </FileMatch>
URL路径:
<Location ""> </Location>
...
访问控制机制
基于来源地址
基于帐号
Directory中“基于来源地址”实现访问控制
(1) Options
全部可用特性:
Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
None, All
Indexes: 索引;
FollowSymlinks:容许跟踪符号连接文件;
(2) 基于来源地址的访问控制机制
Order:检查次序
Order allow,deny 白名单
Order deny,allow 黑名单
Allow from
Deny from
来源地址:
IP
NetAddr:
172.16
172.16.0.0
172.16.0.0/16
172.16.0.0/255.255.0.0
基于用户的访问控制
认证质询:
WWW-Authenticate:响应码为401,拒绝客户端请求,并说明要求客户提供帐号和密码;
认证:
Authorization:客户端用户填入帐号和密码后再次发送请求报文;认证经过,则服务器发送响应的资源;
认证类型:
basic:明文
digest:消息摘要
安全域:须要用户认证后方能访问的路径;
应该经过名称对其进行标识,并用于告知用户认证的缘由;
虚拟帐号:仅用于访问某服务时用到的认证标识;
存储:
文本文件
SQL数据库
ldap
nis
basic认证:
(1) 定义安全域
<Directory "">
Options None
AllowOverride None
AuthType Basic
AuthName "STRING"
AuthUserFile "/PATH/TO/HTTPD_USER_PASSWD_FILE"
Require user username1 username2 ...
</Directory>
容许帐号文件中的全部用户登陆访问:
Require valid-user
(2) 提供帐号和密码存储(文本文件)
使用htpasswd命令进行管理
htpasswd [options] passwordfile username
-c: 自动建立passwordfile,所以,仅应该在添加第一个用户时使用;
-m: md5加密用户密码;
-s: sha1加密用户密码;
-D: 删除指定用户
(3) 实现基于组进行认证
<Directory "">
Options None
AllowOverride None
AuthType Basic
AuthName "STRING"
AuthUserFile "/PATH/TO/HTTPD_USER_PASSWD_FILE"
AuthGroupFile "/PATH/TO/HTTPD_GROUP_FILE"
Require group GROUP1 GROUP2 ...
</Directory>
要提供:用户帐号文件和组文件;
组文件:每一行定义一个组
GRP_NAME:user1 user2 user3 ...web
虚拟主机
有三种实现方案:
基于ip:
为每一个虚拟主机准备至少一个ip地址;
基于port:
为每一个虚拟主机准备至少一个专用port;实践中不多使用;
基于hostname:
为每一个虚拟主机准备至少一个专用hostname;
可混合使用上述三种方式中任意方式;
注意:通常虚拟主机莫与中心主机混用,因此,要使用虚拟主机,先禁用中心主机;
禁用中心主机:注释DocumentRoot
每一个虚拟主机都有专用配置:
<VirtualHost "IP:PORT">
SeverName
DocumentRoot ""
</VirtualHost>
ServerAlias: 虚拟主机的别名;
ErrorLog
CustomLog
<Directory "">
</Directory>数据库
1.基于来源地址的访问控制(源地址能够假装适用性有限)
容许的地址访问
编辑/etc/httpd/conf/httpd.conf配置文件vim
vim /etc/httpd/conf/httpd.conf
找到当前主目录下的 Order allow,deny字段
修改allow from字段(这里的ip是你想容许访问的ip)
以后保存退出
重启httpd服务浏览器
service httpd restart(reload也行)
除了192.168.242.1其余机器均没法访问目标页面
不容许地址访问
编辑/etc/httpd/conf/httpd.conf配置文件安全
vim /etc/httpd/conf/httpd.conf
找到当前主目录下的 Order allow,deny字段
进行以下的修改,重启服务后能够实现禁止目标ip的访问服务器
service httpd restart(reload也行)
2.基于用户的访问控制
通常状况下有如下两种,digest方式有些浏览器不支持,适用性有限,basic明文相对比较危险,不过能够尝试经过https来实现加密有必定适用性。目前大多数的用户控制使用的是表单提交。
(1)basic:明文
(2)digest:消息摘要ide
环境:
在/var/www/html目录下建立一个新的admin目录,在目录下新建一个内容是admin的index.html文件ui
编辑配置文件/etc/httpd/conf/httpd.conf加密
vim /etc/httpd/conf/httpd.conf
<Directory "/var/www/html/admin"> Options None AllowOverride None AuthType Basic AuthName "Administator private" AuthUserFile "/etc/httpd/conf.d/.htpasswd" Require valid-user </Directory>
保存退出后开始建立用户和密钥文件(第一次要-c以后添加用户不须要)
htpasswd -c -m /etc/httpd/conf.d/.htpasswd admin htpasswd -m /etc/httpd/conf.d/.htpasswd user
重启httpd服务
service httpd restart
访问对应目录下的页面会提醒输入帐号和密码
正确输入后显示页面内容
同时这里还能够实现基于用户组的限制访问
总体方法相似用户控制,只是多了一个组文件
编辑/etc/httpd/conf/httpd.conf文件
<Directory "/var/www/html/admin"> Options None AllowOverride None AuthType Basic AuthName "Administator private" AuthUserFile "/etc/httpd/conf.d/.htpasswd" AuthGroupFile "/etc/httpd/conf.d/.htgroup" Require group admin </Directory>
用户添加仍然使用以前的命令
这里就不在添加直接作分组就好
建立分组配置文件
vim /etc/httpd/conf.d/.htgroup
保存退出后,重启httpd服务
service httpd restart
以后访问对应页面,只有在admin组下的用户能够访问,其余用户没法访问
一直在该页面循环
能够正常访问
3.虚拟主机的3种实现:
在httpd2.2下启用虚拟主机的话,最好将主目录禁用
编辑httpd的配置文件
vim /etc/httpd/conf/httpd.conf
找到DocumentRoot "/var/www/html"字段,将其注释掉
基于ip
添加一块网卡
建立好对应目录和页面
mkdir -pv /data/web{1,2} echo web1 > /data/web1/index.html echo web2 > /data/web2/index.html
在配置文件的最后写入一下字段,
<VirtualHost 192.168.242.150:80> ServerName web1.douma.com DocumentRoot "/data/web1" </VirtualHost> <VirtualHost 192.168.242.151:80> ServerName web2.douma.com DocumentRoot "/data/web2" </VirtualHost>
保存后重启服务,以后进行检验
基于port
修改配置文件
  找到listen字段添加8080
<VirtualHost 192.168.242.150:80> ServerName web1.douma.com DocumentRoot "/data/web1" </VirtualHost> <VirtualHost 192.168.242.150:8080> ServerName web2.douma.com DocumentRoot "/data/web2" </VirtualHost>
保存后,重启httpd服务而且进行检验
基于hostname
2.2 要开启NameVirtualHost:80 项
修改配置文件
NameVirtualHost 192.168.242.150:80
<VirtualHost 192.168.242.150:80> ServerName web1.douma.com DocumentRoot "/data/web1" </VirtualHost> <VirtualHost 192.168.242.150:80> ServerName web2.douma.com DocumentRoot "/data/web2" </VirtualHost>
保存后重启httpd服务,这里要修改hosts文件,使其能够进行解析