基於Cent OS7搭建apache網站後的訪問控制配置詳解
安裝apache服務的參考博文:https://blog.51cto.com/14154700/2391114
1、客戶機地址限制:
限制策略的常用格式有下面幾種:
- Require all granted:表示允許所有主機訪問(也是默認的);
- Require all denied:表示拒絕所有主機訪問;
- Require local:表示僅允許本地主機訪問;
- Require [not] host <主機名或域名列表>:表示僅允許或拒絕指定主機或域名訪問;
- Require [not] ip <地址或網段列表>:表示僅允許或拒絕指定IP地址或網段訪問;
定義限制策略時,多個不帶not的require配置語句之間是或的關系,就是滿足任意一條require配置語句就可以訪問;
若即有不帶not的require配置語句,又出現了帶not的require配置語句,則語句之間是與的關系,即同時滿足所有require配置語句才可訪問。
來吧,舉個栗子(只要更改了服務的配置文件,必須重啟服務,才可生效):
做一個策略,僅允許ip地址為192.168.1.2的主機能夠訪問/usr/local/httpd/htdocs網頁目錄下的內容,則策略如下(進入網站主配置文件httpd.conf
<Directory "/usr/local/httpd/htdocs">
................ #省略部分內容
Require ip 192.168.1.2 #僅允許192.168.1.2的主機訪問網站服務
</Directory>
OK了,現在只有上面這個1.2的ip地址可以訪問該網站了。
那麽,現在換一個策略,禁止192.168.1.0網段的主機不能訪問網站,但是別的網段的主機都可訪問,策略如下:
<Directory "/usr/local/httpd/htdocs"> ................ #省略部分內容 <RequireAll> Require all granted #允許所有主機訪問 Require not ip 192.168.1.0/24 #但1.0網段不可訪問 </RequireAll> </Directory>
在上面的配置中,需要註意的是只有訪問規則中出現了not語句,那麽必須把規則放在 <RequireAll> </RequireAll>標簽中。
2、用戶授權限制:
基於用戶的訪問控制包含認證和授權兩個過程,httpd服務器支持使用摘要認證(Digest)和基本認證(Basic)兩種方式。使用摘要認證的話需要在編譯http之前添加“--enable-auth-digest”選項,但並不是所有的瀏覽器都支持摘要認證,所以不推薦使用;而基本認證是httpd服務的基本功能,不需要預先配置特別的選項。
這裏就寫一下基本認證方式吧
1、創建用戶認證數據文件:
[[email protected] httpd]# cd /usr/local/httpd/ #切換至網站安裝根目錄
[[email protected] httpd]# bin/htpasswd -c /usr/local/httpd/conf/.aaa webadmin #使用
htpasswd工具創建用戶,該用戶與系統用戶無關,.aaa文件以.開頭,表示為隱藏目錄,該
目錄默認不存在,所以要加-c選項,在以後需要添加用戶時,不能加-c選項,
否則會覆蓋原來的內容
New password: #輸入密碼
Re-type new password: #確認密碼
Adding password for user webadmin #提示添加成功
可以確認用戶是否添加:
[[email protected] httpd]# cat conf/.aaa
webadmin:$apr1$YCIyEmlx$R57m0/9Tc/SbZLsLiAGev/ #用戶webadmin的信息
2、添加用戶授權配置:
[[email protected] httpd]# vim /usr/local/httpd/conf/httpd.conf #編輯網站主配置文件
.............
<Directory "/usr/local/httpd/htdocs">
authname "bbb" #定義受保護的領域名稱
authtype basic #設置認證類型,basic表示基本認證
authuserfile /usr/local/httpd/conf/.aaa #設置用於保存用戶賬號、密碼的認證文件路徑
require valid-user #要求只有認證文件中的合法用戶才可訪問。
其中valid-user表示所有合法用戶,若只授權給單個用戶,可改為指定的用戶名,
如webadmin。
需要註意的是,用戶訪問授權與主機訪問控制同時設置時,設置的主機訪問控制優先生效。所以在進行用戶授權限制時,需要刪除掉其中的require語句。要不然,用戶訪問授權不會生效。
基於Cent OS7搭建apache網站後的訪問控制配置詳解