實現基於basic驗證的目錄訪問

一:實驗背景;

1、爲了實現安全的登陸機制,使用基於basic的認證登陸;

2、認證方式有兩種:基於basic明文的認證(以後配合https可以實現加密認證);digest消息摘要認證,此認證兼容性差,目前基本上都不使用了;

3、虛擬賬號:僅用於訪問某特定服務時的認證標識;

4、虛擬賬號可以存放在文本文件中,也可以放在比較安全非SQL數據庫中,,,,,,,;

5、生成虛擬用戶工具:htpasswd;來自httpd-tools包,(使用前可以先檢查一下包是否安裝);

格式:htpasswd [options]  /PATH/HTTPD_PASSWD_FILE username 

選項:

-c:自動創建文件,僅應該在文件不存在時使用     ------》若創建多個賬號,第一次創建時加上-c,以後就不需要加了

-mmd5格式加密                                                             -----》默認的加密方式

-s: sha格式加密

-D:刪除指定用戶



二:實驗步驟;

一:基於用戶的basic認證;

1、建一個secrettest測試文件;

[root@Centos6 /app]# mkdir secrettest
[root@Centos6 /app]# echo "hello,weclome to my secret base" > secrettest/index.html

2、、定義配置文件;

[root@Centos6 /app]# vim /etc/httpd/conf.d/test.conf                            #在子配置文件中定義
<directory /app/secrettest>                        
authname "Secret DIR"                                                            #彈框提示符(用火狐瀏覽器可以看到)
authtype basic                                                                   #驗證類型 basic
authuserfile /etc/httpd/conf.d/.httpusers                                        #指明虛擬用戶的存放路徑,一般爲了安全,可以放在一個隱藏文件中
require user http1 http3                                                         #在/etc/httpd/conf.d/.httpusers定義的用戶中允許通過驗證的用戶;允許所有用戶Require valid-user
</directory>
3、使用特定命令生成虛擬用戶;

[root@Centos6 /app]# htpasswd -c /etc/httpd/conf.d/.httpusers http1                 #創建第一個用戶,文件還沒有生成,所以需要加上-c指定生成文件
New password:                                                                       #回車後要在此處輸入密碼;
Re-type new password:                                                               #重複輸入上面的密碼;
Adding password for user http1    
[root@Centos6 /app]# htpasswd -s /etc/httpd/conf.d/.httpusers http2                 #創建第二個用戶,不需要-c選項;-s是用sha加密方式
New password: 
Re-type new password: 
Adding password for user http2
[root@Centos6 /app]# htpasswd -m /etc/httpd/conf.d/.httpusers http3                 #創建第三個用戶,-m使用md5加密方式,其實默認的就是md5加密
New password: 
Re-type new password: 
Adding password for user http3
[root@Centos6 /app]# cat /etc/httpd/conf.d/.httpusers                               #查看一下虛擬用戶是否創建成功
http1:8GqhwrSVFG4eM
http2:{SHA}AAXfhrY/nwrcGaafjs69saZnPt4=
http3:$apr1$YzZRNDmP$HXYxM.HfSpVX0ENS9Z/S/0
[root@Centos6 /app]# 
[root@Centos6 /app]# service httpd restart                             #重啓服務

二:基於組的basic認證;

在基於用戶的basic的基礎上添加;
1、修改上面定義好的配置文件;
[root@Centos6 /app]# vim /etc/httpd/conf.d/test.conf 
<directory /var/www/html/secrettest>
authname "Secret DIR"
authtype basic
authuserfile /etc/httpd/conf.d/.httpusers
authgroupfile /etc/httpd/conf.d/.httgroups                 #在之前的基礎上,加上了關於組存放的文件路徑(此文件需要自己手工創建)
require group  httpgroup1                                 #這裏改成允許訪問的組
</directory>
2、定義組存放的文件;
[root@Centos6 /app]# vim /etc/httpd/conf.d/.httpgroups
httpgroup1:http1 http2
httpgroup2:http1 http3
[root@Centos6 /app]# service httpd restart                     #重啓服務

三:實驗測試;

一:基於用戶的測試;

打開瀏覽器,輸入服務器(我用的是Centos 6的192.168.242.202)的ip;我電腦上只有火狐和谷歌,所以如下圖所示,第一個是火狐瀏覽器結果,看到“Secret DIR”的提示;第二張圖是谷歌瀏覽器的提示框;


因爲我們總共創建了三個用戶,允許http1和http3訪問,所以,你可以輸入http2和其密碼試試,還是在原界面;輸入http1或者http3及其密碼後,會出現如下圖所示,出現/var/www/html/secrettest/index.html的內容;




二:基於組的測試;

步驟同基於用戶的測試;只不過區別是定義在組httpgroup1中的http1和http2用戶可以密碼登錄訪問;

四:實驗總結;

1、要有修改配置文件的操作,建議在其子配置文件中定義,儘量不要動主配置文件;

2、切記,只要是修改了配置文件,就一定要重啓httpd服務使其生效;

發佈了39 篇原創文章 · 獲贊 5 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章