Apache HTTP Server 之所以受到眾多企業(yè)的青睞,得益于其代碼開源、跨平臺、功能模塊haul、可靈活定制等諸多優(yōu)點,其不僅性能穩(wěn)定,在安全性方面的表現(xiàn)也十分出色。
為了更好的控制對網站資源的訪問,可以為特定的網站目錄添加訪問授權。授權的方式有兩種:客戶機地址限制,用戶授權限制。
以下所有操作必須基于httpd服務的環(huán)境下,搭建httpd服務可以參考博文CentOS 7 利用Apache搭建Web網站服務
我們來詳細了解如何實現(xiàn)web服務器對用戶的限制
客戶機地址限制
通過Require配置項,可以根據(jù)主機的主機名或IP地址來決定是否允許客戶端訪問。在httpd服務器的主配置文件的<Location>、<Directory>、<Files>、<Limit>配置段中均可使用Require配置項來控制客戶端的訪問。
限制策略的常用格式:
比如:
[root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/httpd.conf //修改httpd服務的主配置文件 ………… //省略部分內容 <Directory "/usr/local/httpd/htdocs"> ………… //省略部分內容 Require all granted //允許所有客戶機訪問 </Directory>
[root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/httpd.conf //修改httpd服務的主配置文件 ………… //省略部分內容 <Directory "/usr/local/httpd/htdocs"> ………… //省略部分內容 Require ip 192.168.1.1 //僅允許192.168.1.1客戶機訪問 </Directory>
[root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/httpd.conf //修改httpd服務的主配置文件 ………… //省略部分內容 <Directory "/usr/local/httpd/htdocs"> ………… //省略部分內容 <RequireAll> Require all granted Require not ip 192.168.1.10 192.168.2.0/24 //拒絕192.168.1.10和192.168.2.0網段客戶機訪問 </RequireAll> </Directory>
定義限制策略時,多個不帶not的Require配置語句之間是或的關系,即任意一條Require配置語句滿足條件均可以訪問;若出現(xiàn)了不帶not的Require配置語句,又出現(xiàn)了帶not的Require配置語句,則語句之間是并且的關系。即滿足所有Require配置語句才可以訪問。
在使用not禁止訪問時要將其置于<RequireAll></Require>容器中,并在容器中指定相應的策略。
當未被授權的客戶機訪問網站目錄時,將會被拒絕訪問,在不同版本的瀏覽器中,拒絕的消息可能會略有差異。比如Windows 7自帶的瀏覽器,如圖:
用戶授權限制
基于用戶的訪問控制包含認證和授權兩個過程,是Apache允許指定用戶使用用戶名和密碼訪問特定資源的一種方式。認證是指識別用戶身份的過程,授權是指允許特定用戶訪問特定目錄區(qū)域的過程。
基于APache搭建httpd服務支持使用摘要認證和基本認證兩種方式。使用摘要認證需要在編譯安裝httpd之前添加“–enable-auth-digest”選項,但并不是所有的瀏覽器都支持摘要認證,而基本認證是httpd服務的基本功能,不需要預先配置特別的選項。
創(chuàng)建步驟:
1.創(chuàng)建用戶認證數(shù)據(jù)文件
[root@localhost httpd-2.4.25]# cd /usr/local/httpd/ [root@localhost httpd]# bin/htpasswd -c /usr/local/httpd/conf/123.txt xiaozhang New password: Re-type new password: Adding password for user xiaozhang [root@localhost httpd]# cat /usr/local/httpd/conf/123.txt //查看用戶認證數(shù)據(jù)文件 xiaozhang:$apr1$OoqDbhzG$goxDWnRDhCa7mvcZE1ylw.
使用htpasswd工具時,必須指定用戶數(shù)據(jù)文件的位置,添加“-c”選項表示新建立此文件。
[root@localhost httpd]# bin/htpasswd /usr/local/httpd/conf/123.txt xiaoli New password: Re-type new password: Adding password for user xiaoli [root@localhost httpd]# cat /usr/local/httpd/conf/123.txt //查看用戶認證數(shù)據(jù)文件 xiaozhang:$apr1$OoqDbhzG$goxDWnRDhCa7mvcZE1ylw. xiaoli:$apr1$8yXF3xYm$MpUHjRqht4yN1AAnRbyem.
若省略“-c”選項,則表示指定的用戶數(shù)據(jù)文件已經存在,用于添加新的用戶或修改現(xiàn)有用戶的密碼。
2.添加用戶授權配置
[root@localhost httpd]# vim /usr/local/httpd/conf/httpd.conf //修改httpd服務的主配置文件 ………… //省略部分內容 <Directory "/usr/local/httpd/htdocs"> ………… //省略部分內容 AuthName "DocumentRoot" AuthType Basic AuthUserFile /usr/local/httpd/conf/123.txt Require valid-user </Directory> [root@localhost httpd]# systemctl restart httpd //重新啟動httpd服務
上述配置內容中,相關配置項的含義:
需要注意的是,用戶訪問授權與主機訪問控制同時設置時,設置的主機訪問控制優(yōu)先生效。
3.驗證用戶訪問授權
現(xiàn)實環(huán)境中,客戶機地址限制應用并不廣泛;用戶授權限制應用較為廣泛!