作者 主題: [筆記報告] Proxy 使用LDAP系統作認證服務!  (閱讀 22927 次)

0 會員 與 1 訪客 正在閱讀本文。

日京三子

  • 全區板主
  • 俺是博士!
  • *****
  • 文章數: 8823
    • 檢視個人資料
    • http://www.24online.cjb.net
歡迎轉載 . 轉載前請先以電子郵件或者書面方式告知. 如果有任何修改請來信通知小弟, 不得作為商業用途(包含轉變為任何形式的講義,書籍片段, 網頁文章, 或者教材, 本人會保留任何形式的訴訟權利), 轉載時並請保持此一宣告.

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

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3728
  • 性別: 男
    • 檢視個人資料
    • ㄚ凱隨手紀
[筆記報告] Proxy 使用LDAP系統作認證服務!
« 回覆 #1 於: 2005-08-17 15:25 »
三子大好棒喔!~...又有新東西可以凹來聽了....
希望我們的討論是為了把問題解決,而不是爭論誰對誰錯.
『灌水才是重點,發文只是順便』
『我寧可讓不會釣魚的工程師餓死,也不想讓會餓死的工程師去攪沉公司....』
Blog: http://blog.darkhero.net/
秘密基地: http://www.darkhero.net/comic/
目前服務的網站: http://www.libook.com.tw/

日京三子

  • 全區板主
  • 俺是博士!
  • *****
  • 文章數: 8823
    • 檢視個人資料
    • http://www.24online.cjb.net
[筆記報告] Proxy 使用LDAP系統作認證服務!
« 回覆 #2 於: 2005-08-17 16:21 »
其實那是從網路上到處蒐集來的片片段段整合(印象中是五個片段, 東拼西湊~.~), 經過大無畏整合實驗之後發現的確可用之後才斗膽上來獻醜的...


其實我也是不熟  :cry:
哈克不愛的多合一輸入平台----->新香草口味
過去的時間不斷流逝,抹去的眼淚已成追憶;
乾枯的雙手無力阻止,再會了我遠去的曾經。

mikado_fan

  • 可愛的小學生
  • *
  • 文章數: 1
    • 檢視個人資料
[筆記報告] Proxy 使用LDAP系統作認證服務!
« 回覆 #3 於: 2006-03-17 18:58 »
日京三子大大..參考您的做法實作都很正常..但我現在有一個怪現象發生..
就是我將防火牆和porxy架在同一台..利用iptable將 client 的 80 --> 3128 時..無論打啥帳號,密碼就是不會過..
以下是我的iptable指令
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
不知問題到底出在那...可否指點迷經..謝謝!

Arian5

  • 可愛的小學生
  • *
  • 文章數: 29
    • 檢視個人資料
[筆記報告] Proxy 使用LDAP系統作認證服務!
« 回覆 #4 於: 2007-03-29 11:03 »
引述: "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

showp

  • 懷疑的國中生
  • **
  • 文章數: 84
    • 檢視個人資料
    • http://showp.serveftp.net/~hsiang/
[筆記報告] Proxy 使用LDAP系統作認證服務!
« 回覆 #5 於: 2007-09-22 14:27 »
日京三子大大:我用您的設定,但是瀏覽器設定完後,出現輸入帳號密碼,我輸入了LDAP的帳號密碼,卻出現了以下問題

代碼: [選擇]

ERROR
Cache Access Denied

--------------------------------------------------------------------------------

While trying to retrieve the URL: http://www.google.com.tw/

The following error was encountered:

Cache Access Denied.

Sorry, you are not currently allowed to request:

    http://www.google.com.tw/from this cache until you have authenticated yourself.

You need to use Netscape version 2.0 or greater, or Microsoft Internet Explorer 3.0, or an HTTP/1.1 compliant browser for this to work. Please contact the cache administrator if you have difficulties authenticating yourself or change your default password.




以下是我的squid.conf

代碼: [選擇]

http_port 3128
maximum_object_size 5120 KB
acl QUERY urlpath_regex cgi-bin \? \.php \.asp \.cgi
cache_mem 32 MB
cache_dir ufs /usr/local/squid/cache 2048 16 256
cache_log /usr/local/squid/logs/cache.log
cache_access_log /usr/local/squid/logs/access.log
cache_store_log /usr/local/squid/logs/store.log
acl all src 0.0.0.0/0.0.0.0
auth_param basic program /usr/local/libexec/squid/pam_auth
acl PASSWORD proxy_auth REQUIRED
http_access allow PASSWORD



在log檔有看到我輸入帳號的那筆記錄:

代碼: [選擇]

1190442944.611      1 140.127.149.4 TCP_DENIED/407 1751 GET http://www.google.com.tw/ admin NONE/- text/html
HOWP

apage

  • 活潑的大學生
  • ***
  • 文章數: 334
    • 檢視個人資料
若能支援反向proxy 就更實用了 XD
我的筆記
啊,就我的筆記阿...
-----以下兩個是屍體-----
AegisHK
Aegis
eAthena屍體
eathena