題目
1、建立httpd服務,要求:
(1) 提供兩個基於名稱的虛擬主機:
www1.stuX.com,頁面文件目錄爲/web/vhosts/www1;錯誤日誌爲/var/log/httpd/www1/error_log,訪問日誌爲/var/log/httpd/www1/access_log;
www2.stuX.com,頁面文件目錄爲/web/vhosts/www2;錯誤日誌爲/var/log/httpd/www2/error_log,訪問日誌爲/var/log/httpd/www2/access_log;
(2) 通過www1.stuX.com/server-status輸出其狀態信息,且要求只允許提供賬號的用戶訪問;
(3) www1不允許192.168.1.0/24網絡中的主機訪問;
2、爲上面的第2個虛擬主機提供https服務,使得用戶可以通過https安全的訪問此web站點;
(1) 要求使用證書認證,證書中要求使用國家(CN),州(Beijing),城市(Beijing),組織爲(jzbg);
(2) 設置部門爲Ops, 主機名爲www2.stuX.com;
參考
參考:https://www.cnblogs.com/jzbgltb/p/10051124.html
參考:http://uee.me/bh4Gh
參考:https://blog.51cto.com/shumao/1826349?source=dra
參考:https://www.cnblogs.com/jiesying/p/7710888.html
實驗總結
1、基於域名的虛擬主機,配置兩個虛擬機主機,沒有域名的使用hosts解析,監聽在本地IP或所有IP的80端口。
2、通過www1.stuX.com/server-status輸出其狀態信息 即添加一個location,
13、status頁面
LoadModule status_module modules/mod_status.so
httpd-2.2
<Location /server-status>
SetHandler server-status
Order allow,deny
Allow from 172.16
</Location>
httpd-2.4
<Location /server-status>
SetHandler server-status
<RequireAll>
Require ip 172.16
</RequireAll>
</Location>
3、資源限制訪問
11、基於用戶的訪問控制
認證質詢:
WWW-Authenticate:響應碼爲401,拒絕客戶端請求,並說明要求客戶端提供賬號和密碼;
認證:
Authorization:客戶端用戶填入賬號和密碼後再次發送請求報文;認證通過時,則服務器發送響應的資源;
認證方式有兩種:
basic:明文
digest:消息摘要認證
安全域:需要用戶認證後方能訪問的路徑;應該通過名稱對其進行標識,以便於告知用戶認證的原因;
用戶的賬號和密碼存放於何處?
虛擬賬號:僅用於訪問某服務時用到的認證標識
存儲:
文本文件;
SQL數據庫;
ldap目錄存儲;
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 [options] /PATH/TO/HTTPD_PASSWD_FILE username
-c:自動創建此處指定的文件,因此,僅應該在此文件不存在時使用;
-m:md5格式加密
-s: sha格式加密
-D:刪除指定用戶
-b:批模式添加用戶
htpasswd -b [options] /PATH/TO/HTTPD_PASSWD_FILE username password
另外:基於組賬號進行認證;
(1) 定義安全域
<Directory "">
Options None
AllowOverride None
AuthType Basic
AuthName "String“
AuthUserFile "/PATH/TO/HTTPD_USER_PASSWD_FILE"
AuthGroupFile "/PATH/TO/HTTPD_GROUP_FILE"
Require group grpname1 grpname2 ...
</Directory>
(2) 創建用戶賬號和組賬號文件;
組文件:每一行定義一個組
GRP_NAME: username1 username2 ...
4、限制不同網段主機訪問
站點訪問控制常見機制
可基於兩種機制指明對哪些資源進行何種訪問控制
文件系統路徑:
<Directory "">
...
</Directory>
<File "">
...
</File>
<FileMatch "PATTERN">
...
</FileMatch>
URL路徑:
<Location "">
...
</Location>
<LocationMatch "PATTERN">
...
</LocationMatch>
<Directory>中“基於源地址”實現訪問控制:
httpd-2.2:
order和allow、deny
order:定義生效次序;寫在後面的表示默認法則;
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
httpd-2.4:
基於IP控制:
Require ip IP地址或網絡地址
Require not ip IP地址或網絡地址
基於主機名控制:
Require host 主機名或域名
Require not host 主機名或域名
要放置於<RequireAll>配置塊中或<RequireAny>配置塊中;
控制頁面資源允許所有來源的主機可訪問:
httpd-2.2
<Directory "">
...
Order allow,deny
Allow from all
</Directory>
httpd-2.4
<Directory "">
...
Require all granted
</Directory>
控制頁面資源拒絕所有來源的主機可訪問:
httpd-2.2
<Directory "">
...
Order allow,deny
Deny from all
</Directory>
httpd-2.4
<Directory "">
...
Require all denied
</Directory>
Options:Configures what features are available in a particular directory
後跟1個或多個以空白字符分隔的“選項”列表;
Indexes:指明的URL路徑下不存在與定義的主頁面資源相符的資源文件時,返回索引列表給用戶;
FollowSymLinks:允許跟蹤符號鏈接文件所指向的源文件;
None:
All:All options except for MultiViews.
5、status頁面
13、status頁面
LoadModule status_module modules/mod_status.so
httpd-2.2
<Location /server-status>
SetHandler server-status
Order allow,deny
Allow from 172.16
</Location>
httpd-2.4
<Location /server-status>
SetHandler server-status
<RequireAll>
Require ip 172.16
</RequireAll>
</Location>