站點訪問控制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文件,使其能夠進行解析