技術討論區 > LDAP 討論區

[筆記報告] Proxy 使用LDAP系統作認證服務!

(1/2) > >>

日京三子:
歡迎轉載 . 轉載前請先以電子郵件或者書面方式告知. 如果有任何修改請來信通知小弟, 不得作為商業用途(包含轉變為任何形式的講義,書籍片段, 網頁文章, 或者教材, 本人會保留任何形式的訴訟權利), 轉載時並請保持此一宣告.

作者: 日京三子 <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 即可.

Darkhero:
三子大好棒喔!~...又有新東西可以凹來聽了....

日京三子:
其實那是從網路上到處蒐集來的片片段段整合(印象中是五個片段, 東拼西湊~.~), 經過大無畏整合實驗之後發現的確可用之後才斗膽上來獻醜的...


其實我也是不熟  :cry:

mikado_fan:
日京三子大大..參考您的做法實作都很正常..但我現在有一個怪現象發生..
就是我將防火牆和porxy架在同一台..利用iptable將 client 的 80 --> 3128 時..無論打啥帳號,密碼就是不會過..
以下是我的iptable指令
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
不知問題到底出在那...可否指點迷經..謝謝!

Arian5:

--- 引述: "mikado_fan" ---日京三子大大..參考您的做法實作都很正常..但我現在有一個怪現象發生..
就是我將防火牆和porxy架在同一台..利用iptable將 client 的 80 --> 3128 時..無論打啥帳號,密碼就是不會過..
以下是我的iptable指令
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
不知問題到底出在那...可否指點迷經..謝謝!
--- 引用結尾 ---

你squid有設定成transparent proxy嗎?沒的話去找一下有關TP Proxy的設定看看,或是去鳥哥的網站看看
http://linux.vbird.org/linux_server/0420squid.php#serverahead_transparent

導覽

[0] 文章列表

[#] 下頁

前往完整版本