歡迎轉載 . 轉載前請先以電子郵件或者書面方式告知. 如果有任何修改請來信通知小弟, 不得作為商業用途(包含轉變為任何形式的講義,書籍片段, 網頁文章, 或者教材, 本人會保留任何形式的訴訟權利), 轉載時並請保持此一宣告. 作者: 日京三子 <a843433{at}yahoo{dot}com>
在很多公司環境裡面, 為了解決對外網路瓶頸的問題, 大多會推薦架設一台Squid Proxy Server 來加快日常服務. 雖然是很方便, 但就一般的設定而言, 會造成無法管制使用者使用的問題, 因為缺乏帳號認證系統. 這時候, 有一種配套措施, 就是利用 RADIUS 服務來達成. 但 FreeRADIUS 教學文章不太多, 所以我就把腦筋動回squid 身上, 也就產生了這次的Squid 使用 LDAP 的筆記.....
#----------------------------------#
要做這樣的事情之前, 記得, 你需要一個能正常執行服務的LDAP SERVER. 如果不會建立, 請參考小弟的那兩篇筆記. 還有防火牆設定, 網路設定... 等, 就請自己參詳研究一番.
當然, LDAP Client 部分一定要處理好, 沒弄起來一切就不用想了.
#----------------------------------#
1. 為了做到認證服務, 我採用了RedHat 派系的FC2 套件, 與PAM模組結構. 於是, 小弟先建立了一個檔案,
squid, 位於
/etc/pam.d 底下:
#%PAM-1.0
auth sufficient /lib/security/$ISA/pam_ldap.so
auth required pam_stack.so service=system-auth
account sufficient /lib/security/$ISA/pam_ldap.so
account required pam_stack.so service=system-auth
(
注意! 如果你的 Squid 是用tar包裝自己用原始碼編譯的, 切記要加上
--enable-auth-modules="PAM"這樣的參數, 詳情請看
http://www.squid-cache.org/ 與相關網站文件 )
再來, 搜尋一下, 確認你的 squid 系統裡面有產生相對應的pam_auth模組:
#find / -name pam_auth
/usr/lib/squid/pam_auth
接著, 動手修改 squid 服務設定文件,
squid.conf, 增加如下的幾個片段:
auth_param basic program /usr/lib/squid/pam_auth
...
...
...
acl PASSWORD proxy_auth REQUIRED
...
...
...
http_access allow PASSWORD
(注意! 上面這些設定, 我習慣上是安插在原設定文件裡面, 說明與設定的裡面. 如果你隨便亂找地方安插導致無法運作時, 請檢查或者恢復原始設定! )
在上面這些步驟之後, 重新啟動 squid 服務, 並修改你的使用者端瀏覽器設定, 指向這台proxy 主機; 或者, 直接修改防火牆, 讓所有通訊都經過這台主機(範例很多, 小弟就不獻醜了).
至此, 使用者上網時, 就會詢問帳號密碼了!
------
如果建立了這樣的服務之後, 想增加不允許使用proxy服務的使用者清單, 只要作這樣的設定:
#%PAM-1.0
auth sufficient /lib/security/$ISA/pam_ldap.so
auth required /lib/security/pam_listfile.so item=user sense=deny file=/somewhere/can_not_use_proxy onerr=succeed
auth required pam_stack.so service=system-auth
account sufficient /lib/security/$ISA/pam_ldap.so
account required pam_stack.so service=system-auth
然後自己建立那份清單 can_not_use_proxy 即可.