Squid 進階設定-使用帳密驗證

由 Derek 發表於 七月 23, 2012 / 尚無評論

前言 :

在使用Squid時,資安也是很重要的。在管理方面除了一些常用的設定,像限制使用IP、限制訪問網頁、限制連線時間和限制下載檔案類型等…還有就是登入時使用帳號密碼的驗證。一來可以防範不屬於設定內的人連線,也可增加安全性控管使用者。

 

設定與說明 :

Squid 帳號密碼驗證的方式有很多種,今天就來介紹幾種

1. Squid 預設本機驗證

2. LDAP Server 驗證

3. Windows AD Server 驗證

在開始設定以下驗證方式前,請先將SELinux關閉避免在操作上的問題

 

1. Squid 預設本機驗證

使用squid提供的ncsa_auth認證模組,此模組會使用apache提供的帳密建立指令 (htpasswd) 所製作的密碼檔作為驗證依據。

 

1.1 檢查是否有ncsa_auth和htpasswd

1.2 如果沒有htpasswd 請自行安裝

 

1.3 修改 squid.conf

1.3.1 開啟帳密認證功能

acl password proxy_auth REQUIRED  用搜尋的將前面註解拿掉

http_access allow password  新增此筆記錄,注意http_access順序,要新增在http_access deny all之前

 

1.3.2 設定認證參數

auth_param basic program /usr/lib64/squid/ncsa_auth /usr/etc/passwd

利用ncsa_auth來驗證帳密「/usr/lib64/squid/ncsa_auth」為ncsa_auth存放位置。如果不知道的話可下rpm -ql squid | grep ncsa 查詢。

「/usr/etc/passwd」為使用htpasswd產生帳密所存放的路徑。若要使用系統內建的帳號密碼時可將此路徑改為「/etc/shadow」,但使用shadow為帳密,對於系統來說是不安全的,因此會不建議這樣設定。若一定要這樣設定的話請記得把SELinux關掉。

 

auth_param basic children 5   

同時接受認證的連線數

auth_param basic realm Squid proxy-caching web server 

使用者在輸入帳密的地方所顯示的說明文字

auth_param basic credentialsttl 2 hours

使用者連線時的連續時間

auth_param basic casesensitive off

使用特殊權限的帳號登入時會直接取消不給登入

 

1.4 建立帳密

在使用htpasswd建立帳密時第一次要記得加參數-c,之後就不用加了。「derek」和「faq」為要新增的帳號。

 

1.5 重啟服務

設定完後記得要重啟服務才會生效喔

 

1.6 開啟瀏覽器測試

設定好Proxy後,瀏覽網頁就會看到下圖需要輸入帳號密碼的地方,在紅框的地方會看到剛剛需改的登入內容。

輸入帳號密碼後就能登入使用了

若是沒彈出要輸入帳號密碼又能使用,表示所在的IP為squid.conf內設定的允許IP範圍。

若彈出需要輸入帳密的話表示所在的IP不為允許的IP。因此需要輸入帳密做認證。

 

 

2. LDAP Server 驗證

如果已經建置好LDAP Server的話,大多數的帳密都由LDAP Server統一管理。因此可將Squid的認證交由LDAP Server。

 

2.1 Squid 的LDAP Server設定範例說明

使用「man squid_ldap_auth」找到EXAMPLES字串,就會有如何把LDAP Server銜接到Squid上的設定說明

使用中間為範例

squid_ldap_auth -b “dc=your,dc=domain” -f “uid=%s” ldapserver

將其修改成

auth_param basic program /usr/lib64/squid/squid_ldap_auth -b “dc=faq-test,dc=tk” -h LDAPserver -f “uid=%s”

/usr/lib64/squid/squid_ldap_auth  設定為squid_ldap_auth所在路徑,若為i386則將lib64改為lib。

 

-b “dc=faq-test,dc=tk”  -b為使用baseDN來做連接,dc=faq-test,dc=tk則是依domain經由DNS轉換為DN來做設定。假設domain為faq-tesk.tk,就設定為dc=faq-test,dc=tk。此dc指「Domain Component」

-h LDAPserver  -h為用來連接LDAPserver的參數。而在LDAPserver的部份請輸入該lLDAP Server的domain或是ip。

-f “uid=%s”  針對「uid」這個attribute的value做驗證

 

2.2 修改squid.conf

2.2.1 開啟帳密認證功能

acl password proxy_auth REQUIRED  用搜尋的將前面註解拿掉

http_access allow password  新增此筆記錄,注意http_access順序,要新增在http_access deny all之前

 

2.2.2 設定連接LDAP

將設定參數加入到「#auth_param basic program /usr/libexec/ncsa_auth /usr/etc/passwd」下方即可。

 

2.3重啟服務

設定完後記得要重啟服務才會生效喔

 

2.4 開瀏覽器登入驗證

設定成功的話就會出現下面要輸入帳密的圖示。

此時也可查看Squid log 會出現相關LDAP的資料。

若是沒彈出要輸入帳號密碼又能使用,表示所在的IP為squid.conf內設定的允許IP範圍。

若彈出需要輸入帳密的話表示所在的IP不為允許的IP。因此需要輸入帳密做認證。

 

 

3. Windows AD Server 驗證

Windows AD Server的驗證方式也是用LDAP 為基礎來設定。

 

3.1 在AD上新增一個帳號給Squid使用,帳號:squid、密碼:123456

 

3.2 Squid 的AD Server設定範例說明

使用「man squid_ldap_auth」然後找到EXAMPLES字串開頭,然後在EXAMPLES說明的最後一段會有AD Server設定的說明

使用範例為

squid_ldap_auth -P -R -b “dc=your,dc=domain” -D “cn=squid,cn=users,dc=your,dc=domain” -w  “secretsquidpassword” -f “(&(userPrincipalName=%s)(objectClass=Person))” activedirectoryserver

將其修改為

auth_param basic program /usr/lib/squid/squid_ldap_auth -P -R -b “dc=faq-test,dc=tk” -D “cn=squid,cn=Users,dc=faq-test,dc=tk” -w “123456″ -f “(&(userPrincipalName=%s)(objectClass=Person))” -h 112.121.52.123

 

-b “dc=faq-test,dc=tk”  -b為使用baseDN來做連接,dc=faq-test,dc=tk則是依domain經由DNS轉換為DN來做設定。假設domain為faq-tesk.tk,就設定為dc=faq-test,dc=tk。此dc指「Domain Component」

-D “cn=squid,cn=Users,dc=faq-test,dc=tk”  使用DN為「cn=squid,cn=Users,dc=faq-test,dc=tk」使用squid此帳號登入

-w “123456″  用DN為「cn=squid,cn=Users,dc=faq-test,dc=tk」使用squid此帳號登入的密碼為123456

-h 112.121.52.123  為AD Server的IP也可輸入domain

-f “(&(userPrincipalName=%s)(objectClass=Person))”  userPrincipalName使用LDAP指令查出來的格式類型MAIL格式(derek@faq-test.tk)

[Note] cn(Common Name) squid 在windows上是「顯示名稱」而非帳號名稱,分類的圖示也要特別注意。有關OU、cn的說明可參考此篇學習LDAP之前,最好你先看看什麼是LDAP

 

3.3 修改squid.conf

3.3.1 開啟帳密認證功能

acl password proxy_auth REQUIRED  用搜尋的將前面註解拿掉

http_access allow password  新增此筆記錄,注意http_access順序,要新增在http_access deny all之前

 

3.3.2 設定連接AD Server

將設定參數加入到「#auth_param basic program /usr/libexec/ncsa_auth /usr/etc/passwd」下方即可。

 

3.4 重啟服務

設定完後記得要重啟服務才會生效喔

 

3.5 開瀏覽器登入驗證

設定成功的話就會出現下面要輸入帳密的圖示。

此時也可查看Squid log 會出現相關AD Server使用的資料。

若是沒彈出要輸入帳號密碼又能使用,表示所在的IP為squid.conf內設定的允許IP範圍。

若彈出需要輸入帳密的話表示所在的IP不為允許的IP。因此需要輸入帳密做認證。

 

  

關於作者

一個半路殺出來的傻小子,憑著一股傻勁努力的學習、嘗試、分享。希望能用自己微薄之力,替IT界和資訊界盡一點心力。單憑一己之力始終還是有限,歡迎和我有相同理念的夥伴一同加入一同努力。

評論

此文章尚無評論。

發表評論

*