squid中文權(quán)威指南_第1頁
squid中文權(quán)威指南_第2頁
squid中文權(quán)威指南_第3頁
squid中文權(quán)威指南_第4頁
squid中文權(quán)威指南_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、Squid 中文指譯者序:本人在工作中著數(shù)臺 Squid 服務器, 次參閱 Duane We人)的這本書,原書 是S uid: The D finitive Guide,由 OReillys(他也是 Squid 的創(chuàng)始。我在業(yè)余時間把它翻譯成中文,希望對中文 Squid 用戶有所幫助。對普通的上網(wǎng)用戶,Squid 可充當代理服務器;而對 Sina,NetEase 這樣的大型站點,Squid 又充當 WEB。這兩個角色它都扮演得異常優(yōu)秀。窗外繁星點點,開源的世界亦如這星空般美麗,而 Squid 是 中耀眼的一顆星。對本譯版有任何問題,請跟我的:yonghua_pengyahcom目 錄第 12

2、章驗證輔助器2配置Squid2HTTP基本驗證3NCSA4LDAP5MSNT512.2.4 Multi-NTLM6PAM6SASL7SMB7YP7getpwnam8winbind8基本驗證API8HTTP摘要驗證9password10摘要驗證API1112.4NTLM驗證12SMB13winbind13NTLM驗證API13外部ACL14ip_user15ldap_group15unix_group16wbinfo_group16winbind_group16編寫自己的外部ACL輔助器1712.51第 12 章驗證輔助器先前我在 2談起過驗證。然而,我僅僅解釋了如何編寫用于驗證的控制規(guī)則。這里

3、,我將告訴你如何選擇和配置部分驗證輔助器?;叵胍幌?,Squid 支持三種方式用于從用戶端驗證信用項:基本,摘要(Digest),和NTLM。這些方式指定 squid 如何從客戶端接受用戶名和。從安全觀點看,基本驗證非常脆弱。摘要和 NTML 驗證顯然更強壯。對每種方式,squid 提供一些驗證模塊,或輔助進程,用于實際處理認證的過程。我提到的所有驗證輔助器都包含在 squid用./configure 選項來指定它們的目錄名。例如:的源代碼發(fā)布里。你可以在編譯時使% ls helpers/basic_authLDAP MSNTMakefile Makefile.amMakefile.inNCSA

4、 PAMSASL SMBYPgetpwnam multi-winbind-NTLM% ./configure -enabasic-auth-helpers=LDAP,NCSA .輔助器程序正常安裝在$prefix/libexec 目錄。如同重定向器一樣,squid 使用一個驗證輔助器進程池。某個驗證請求會被送往第一個空閑輔助器。當所有驗證器進程都忙時,squid 將未處理請求放進隊列。假如隊列變得太大, squid 會以致命錯誤消息退出。大部分情況下,squid 緩存驗證結(jié)果。這樣就減少了輔助器進程的負載,并改進了響應時間。12.1 配置 Squidauth_param 指令控制了配置 squ

5、id 的驗證輔助器的每個方面。不同的方式(基本,摘要,NTLM)有一些共性,也有一些唯一的參數(shù)。緊跟在 auth_param 后的第一個參數(shù)必須是 basic, digest, 或 ntlm 之一。我將在隨后章節(jié)里,詳細講解每種驗證機制的配置細節(jié)。除了 auth_param 外,squid 還有 2 個指令影響到驗證??梢允褂?max_user_ip ACL來用戶與其他人共戶名和。假如 squid 檢測到相同的用戶名來自太多不同 IP地址,該 ACL 被匹配,就可以這樣的請求。例如:acl FOO max_user_ip 2acl BAR proxy_auth REQUIRED2http_ac

6、http_acs deny FOOs allow BAR在該情形中,假如用戶從 3 個或的不同 IP 地址提交請求,squid 就該請求。authenticate_ip_ttl 指令控制 squid 記住每個用戶的源 IP 地址多長時間。對于經(jīng)常改變 IP 地址的用戶,更小的 TTL 可能好點。在一個用戶的 IP 地址很長時間不變的環(huán)境里,可以使用較大的 TTL。12.2 HTTP 基本驗證基本驗證最簡單,然而最不安全。它本質(zhì)上以明文來傳送用戶,盡管被編碼成可打印字符。例如,假如用戶敲入其用戶名 Fannie 和這 2 者結(jié)合到一個單一串里,以冒號來分割用戶名和FuRpAnTsClUb,用戶:

7、首先將Fannie:FuRpAnTsClUb然后它用 base64 方法(定義在 RFC 2045)來編碼這個串。它在 HTTP 頭部里看起來如此:Authorization: BasiFubmllOkZ1UnBBblRzQ2xVYgo=若有人碰巧捕獲到用戶的 HTTP 請求,他能輕易獲取到用戶名和:% echo RmFubmllOkZ1UnBBblRzQ2xVYgo= | /usr/local/lib/1.5/base64.py -dFannie:FuRpAnTsClUb遵循 HTTP/1.1 RFC 的要求,squid 不會轉(zhuǎn)發(fā)驗證信用項到其他服務器。換句話說,假如信用項是用于squid

8、的,Authorization 頭部會從外出請求里移除。你會注意到,某些基本驗證器可被配置來檢查系統(tǒng)文件。因為基本信用項不被加密,所以在 cache該完全理解讓用戶里包含登陸是個壞想法。假如選擇使用 getpwnam 驗證器,你應以明文在網(wǎng)絡中傳送的意義。HTTP 基本驗證支持下列 auth_param 參數(shù):auth_param basic programauth_param basic children numberdauth_param basic reatringauth_param basic credentialsttl time-specificationprogram 參數(shù)指定

9、驗證輔助程序令及其參數(shù)。大多數(shù)情況下,這里是到某個驗證輔助程序的路徑名。它們默認安裝在/usr/local/squid/libexec 下。3children 參數(shù)告訴 squid 使用多少輔助器進程。默認值是 5,假如你不了解需要多少進程來處理請求,這個值就是個好起點。假如指定得太少,squid 會在 cache.log 里告警。realm 參數(shù)是在提示輸入用戶名和時,用戶顯示給用戶看的驗證域字符串??梢允褂靡恍┖唵蔚木渥?,例如“squid 的緩存”。credentialsttl 參數(shù)指定 squid 內(nèi)在的緩存驗證結(jié)果的時間數(shù)量。較大的值減少了外部驗證器進程的負載,但加長了刷新期,直到 s

10、quid 檢測到驗證數(shù)據(jù)庫的改變。注意,這僅影響到積極結(jié)果(例如成功的驗證),消極的結(jié)果不會被 squid 緩存。默認的 TTL 值是 2 小時。如下是個完整的示例:auth_param basic program /usr/local/squid/libexec/pam_auth auth_param basic children 10auth_param basic realm My Awesome Squid Cacheauth_param basic credentialsttl 1 houracl KnownUsers proxy_auth REQUIREDhttp_acs allo

11、w KnownUsers下面我將squid 自帶的基本驗證輔助器程序。12.2.1 NCSA./configure enabasic-auth-helperSANCSA 驗證輔助器相對流行,這歸咎于它的簡單性和歷史原因。它將用戶名和在一個單獨的文本文件里,類似于 Unix 的/etc/passwd 文件。這個NCSA HTTP 服務器項目的一部分發(fā)展而來的。文件格式最初是作為在 squid.conf 里,只須指定文件的路徑作為程序的單一命令行參數(shù)。auth_param basic program /usr/local/squid/libexec/ncsa_auth/usr/local/squi

12、d/etc/passwd可以使 用 Apache 自帶的 htpasswd 程 序 來創(chuàng)建 和 更新 文件。 也 可以在 這里。在該頁面里,你也可以chpasswd CGI,它允許用戶改變自己的(假如必要)。412.2.2 LDAP./configure enabasic-auth-helpers=LDAPLDAP輔助器是到輕量級目錄協(xié)議(LDAP)服務器的接口。在編譯squid_ldap_auth輔助器之前, OpenLDAP 庫和頭文件必須安裝到系統(tǒng)中??梢栽谶@里找到OpenLDAP :squid_ldap_auth 程序至少需要 2 個參數(shù):基本開放名(DN)和 LDAP 服務器主機名。

13、例如:auth_param basic program /usr/local/squid/libexec/squid_ldap_auth-b ou=people,dc=exle,dc=comldxLDAP 輔助器有 Unix 的 man 頁,描述了其所有選項和參數(shù)。然而,在運行 make install時,通常并未安裝 squid 的這個 man 頁。進入源代碼樹,手工運行 nroff,你可以讀到這個 man 頁。例如:% cd helpers/basic_auth/LDAP% nroff -man squid_ldap_auth.8 | less12.2.3 MSNT./configure

14、enabasic-auth-helpers=MSNTMSNT 驗證器是通過服務消息塊(SMB)協(xié)議到NT 域數(shù)據(jù)庫的接口。它使用一個小配置文件,叫做 msntauth.conf,它必須放在$prefix/etc 或-sysconfidr 目錄。在該配置文件里,最多可以指定 5 個 NT 域控制器。例如:servservdc1_host bdc1_host my_nt_dc2_host bdc2_host another_nt_默認情況下,MSNT 驗證器允許服務器驗證任何用戶。然而,它也能允許或指定用戶名。假如創(chuàng)建一個 allowusers 文件,僅僅在該文件里列出的用戶可允許squid。假如

15、你的 NT 服務器上有很多用戶,但僅僅允許少數(shù)用戶使用 cache,那就可以用到這個功能。另外,可以創(chuàng)建一個 denyusers 文件。任何列舉在該文件里的用戶會被發(fā)生在檢查 allowusers 文件之前。,這點甚至可選擇的,還可以把用戶名放在 proxy_au見 2 章的描述。CL 里,從而允許或指定用戶名,請附加的文檔,請見 helpers/basic_auth/MSNT 目錄下的 README.html 文件。512.2.4 Multi-NTLM./configure enabasic-auth-helpers=multi-NTLMmulti-NTLM 驗證器類似于 MSNT,兩者都會

16、查詢 Windows NT 域數(shù)據(jù)庫。不同于 MSNT 最多查詢 5 個域控制器,multi-NT,象這樣:-NTLM 驗證器要求用戶在其用戶名前ntusernamemulti-NTLM 輔助器程序是個相對較短的 perl。它依賴于 CPAN 的Authen:SMB 包。假如你沒有在 perl里硬編碼域控制器的主機名,它會利用 Samba 包里的 nmblookup 程序來自動查找它們。perl命名為 smb_auth.pl,它在 squid.conf 里看起來如下:auth_param basic program /usr/local/squid/libexec/smb_auth.plmul

17、ti-NTLM 的文檔很少,但假如你熟悉 perl,通過閱讀源代碼就可以了解。12.2.5 PAM./configure enabasic-auth-helpers=PAM感覺上,插件式驗證模塊(PAM)是在驗證方式(例如, kerberos, smart cards)和要求驗證服務的應用(例如 ssh,ftp,imap)之間的膠合劑。系統(tǒng)的/etc/pam.conf 文件描述了對每種應用使用何種驗證方式。為了使用 squid 的 PAM 驗證輔助器,你必須將squid作為一個服務增加到/etc/pam.conf文件,并且指定使用哪個 PAM 模塊。例如,為了使用 FreeBSD 的 Unix

18、這個放在 pam.conf 里:文件,必須將squidauthrequiredpam_unix.sotry_pass為了檢查 Unix數(shù)據(jù)庫,pam_auth 進程必須以 root 運行。這是個安全風險,你必須手工設置可執(zhí)行 setuid root。假如pam_auth 不以 root 運行,并且它被配置為檢查 Unix數(shù)據(jù)庫,那么每個驗證請求都會失敗。PAM 驗證器的文檔以 man 頁形式提供,可在 helpers/basic_auth/PAM 目錄下找到。612.2.6 SASL./configure enabasic-auth-helpers=SASL簡單驗證和安全層(SASL)是個 I

19、ETF 提議標準,文檔在 RFC 2222 里。它是個為面向連接的協(xié)議(例如 FTP,SMTP,HTTP)提供安全參數(shù)協(xié)商的協(xié)議。然而,SASL 驗證器類似于PAM 驗證器。它使用第庫接口,查詢許多不同的驗證數(shù)據(jù)庫。特別的,squid的SASL驗證器要求Cyrus SASL庫,它由Carnegie Mellon大學開發(fā)。可在這里找到:可以配置 SASL 驗證器來檢查傳統(tǒng)文件,PAM 系統(tǒng),或任何其他被 CMU 的庫支持的數(shù)據(jù)庫。信息,請見 helpers/basic_auth/SASL 目錄的 README 文件。12.2.7 SMB./configure enabasic-auth-help

20、ers=SMBSMB 是另一個對Windows 數(shù)據(jù)庫的驗證器。該驗證器自身是一個 C 程序。該程序在每次與Windows 域控制器會話時,執(zhí)行一個 s。這個 s包含來自 Samba包令。這樣,在使用 SMB 驗證器之前,你必須安裝 Samba。SMB 驗證器程序,smb_auth 取 Windows作為參數(shù)。例如:auth_param basic program /usr/local/squid/libexec/smb_auth -W MYNT通過重復-W 選項,可以列舉多個域。完全的文檔,請見: auth.html12.2.8 YP./configure enabasic-auth-hel

21、pers=YPYP 驗證器檢查系統(tǒng)的Yello在驗證器命令行里提供 NISges(例如 NIS)目錄。為了在 squid 里使用它,必須數(shù)據(jù)庫的名字,通常是 passwd.byname:和auth_param basic program /usr/local/squid/libexec/yp_auth my.nis.passwd.bynameyp_auth 程序相對簡單,但沒有任何文檔。712.2.9 getpwnam./configure enabasic-auth-helpers=getpwnam該驗證器是個簡單的到 getpwnam()函數(shù)的接口,該函數(shù)在 Unix 系統(tǒng)的C。對給定的用

22、戶名,getpwnam()函數(shù)查詢系統(tǒng)的文件。假如使用 YP/NIS,getpwnam()也檢查那些數(shù)據(jù)庫。在某些操作系統(tǒng)上,它也利用 PAM 系統(tǒng)。假如你的 cache 用戶在 squid 運行的系文件里對 cache 用戶建立 nologin統(tǒng)上也有登陸帳號,就可使用該驗證器。另外,可在帳號。12.2.10 winbind./configure enabasic-auth-helpers=winbindWinbind 是 Samba 套件的功能之一。它允許 Unix 系統(tǒng)利用 Windows NT 的用戶帳號信息。winbind 驗證器是 Samba winbindd 服務進程的客戶端。在

23、使用該驗證器之前,必須安裝Samba 和運行 winbindd 服務。winbind 基本驗證器的名字是 wb_basic_auth。它在 squid.conf 里看起來如下:auth_param basic program /usr/local/squid/libexec/wb_basic_auth12.2.11 基本驗證 API在 squid 和基本驗證器之間的接口非常簡單。squid 發(fā)送用戶名和到驗證器進程,它們以空格分開并以新行結(jié)束。驗證器在其 stdin 里驗證器將 OK 或 ERR 寫入 stdout。用戶名和。在檢查信用,任何“不安全的 URL”字符會參照 RFC 1738 規(guī)

24、則進行編碼。這樣,名字 jack+jill變成了jack%2bjill 。squid 接受包含空格的用戶名和。例如sword 變成了a%20password。在用戶名和后,驗證器程序能處理空格和其他的特殊字符??稍诿钚猩陷p易測試基本驗證器。簡單的在終端窗口里運行驗證器程序,并輸入用戶名和?;蛘?,可以這樣做:% echo buellencil | ./ncsa_auth /tmp/passwdOK如下是個用 perl 寫成的簡單的驗證器模板:#!/usr/bin/perl -wl8use URI:Esc;$|=1;# dont buffer stdoutwhile () ($u,$p) = s

25、plit;$u = uri_unesc$p = uri_unesc($u);($p);if (&valid($u,$p) pOK; else pERR;sub valid my $user = shift; my $pass = shift;.12.3 HTTP 摘要驗證摘要驗證被設計為比基本驗證更安全。它廣泛利用了加密 hash 函數(shù)和其他技巧。本質(zhì)上,與發(fā)送明文不同,用戶發(fā)送、用戶名和其他信息的消息摘要( 見 RFC 2617和 OReillys HTTP: The Definitive Guide 的信息)。HTTP 摘要驗證支持下列 auth_param 參數(shù):auth_param d

26、igest programauth_param digest children numberdauth_param digest reatringauth_param digest nonce_garbage_erval time-specification auth_param digest nonce_max_duration time-specification auth_param digest nonce_max_count numberauth_param digest nonce_strictness on|offprogram, children, 和 realm 參數(shù)與基本驗

27、證的一樣。與摘要驗證相關(guān)的唯一不同參數(shù)是nonce。nonce 是個特殊的數(shù)據(jù)串,它偶爾改變。在驗證過程中,服務器(這里就是 squid)提供一個 nonce 值到客戶端??蛻舳嗽诋a(chǎn)生摘要時要用到這個 nonce 值。沒有 nonce 數(shù)據(jù),攻擊者能簡單的和重現(xiàn)(replay)摘要值來獲取對 squid 的。9nonce_garbage_erval 參數(shù)告訴 squid 每隔多久清空 nonce 緩存。默認值是每 5 分鐘。對于有許多摘要驗證客戶端的非常忙的 cache,更頻繁的回收 nonce 碎片可能有益。nonce_max_duration 參數(shù)指定每個 nonce 值保持多長時間的有效

28、期。當客戶端試圖使用某個已過期的 nonce 值時,squid 產(chǎn)生 401(未驗證)響應,并隨之發(fā)送一個新的 nonce 值,以便客戶端能重新認證。默認值是 30 分鐘。注意任何被截獲的 Authorization 頭部能被用于replay,直到 nonce 值過期。然而將 nonce_max_duration 值設得過低,導致 squid 過頻繁的產(chǎn)生 401 響應。對每個 401 響應,客戶端和服務器要重新協(xié)商它們的驗證信用項,這本質(zhì)上浪費了用戶的時間。nonce_max_count 參數(shù)對 nonce 值可使用多少次設置一個上限。在指定數(shù)量的請求后,squid 返回 401(未驗證)響

29、應和一個新的 nonce 值。默認是 50 個請求。nonce 計數(shù)是另一個設計成replay的功能。squid 在 401 響應里發(fā)送 qop=auth。這導致用戶在它們的響應里包含nonce 計數(shù),并在產(chǎn)生摘要自身時使用這個 nonce 計數(shù)。nonce 計數(shù)值必須逐次增加。下降的 nonce 計數(shù)意味著 replay。然而,計數(shù)可能跳躍的增加,跨過某些數(shù)值,例如:5,6,8,9。nonce_strictness 參數(shù)決定在這種情形下 squid 如何做。若設置為 on,假如某個 nonce 計數(shù)不等于前次 nonce 計數(shù)加 1,squid 會返回 401 響應。若設置為 off,squ

30、id 允許不連續(xù)的 nonce 計數(shù)值。如下是個完整示例:auth_param digest program /usr/local/squid/libexec/digest_pwauth_param digest children 8auth_param digest realm Acs to Squidauth_param digest nonce_garbage_erval 10 minutes auth_param digest nonce_max_duration 45 minutes auth_param digest nonce_max_count 100auth_param di

31、gest nonce_strictness onacl KnownUsers proxy_auth REQUIREDhttp_acs allow KnownUsers下面我將squid 自帶的摘要驗證輔助器程序。12.3.1 password./configure enable-auth=digest enable-digest-auth-helpers=password這是 squid 摘要驗證的簡單可參考執(zhí)行的方法。它展示了如何編寫基于摘要驗證的輔助器。這個代碼簡單的從明文文件里用戶名和。該文件的格式類似如下:username:password10文件的路徑是 digest_pw_auth

32、 程序的單一參數(shù),例如:auth_param digest program /usr/local/squid/libexec/digest_pw_auth/usr/local/squid/etc/digest_passwdauth_param digest reaome Nifty Realmsquid 不提供任何工具來這種格式的文件。假如你選擇使用摘要驗證,就必須管理自己的文件,可使用文本編輯器或 perl來做到。12.3.2 摘要驗證 API假如要編寫自己的摘要驗證輔助器,你必須理解在 squid 和輔助器進程間的通信。數(shù)據(jù)交換類似于基本驗證,但稍微復雜點。第一個不同是 squid 將用戶

33、名和域值,而不是用戶名和被起來,并以冒號分隔。例如:,寫往輔助器進程。這些串bobby:Tom Landry Middle School第二個不同是假如用戶名有效,輔助器進程返回一個 MD5 摘要串,而不是返回 OK。與基本驗證一樣,假如用戶不存在,或者來自 squid 的輸入不可,輔助器進程返回 ERR。輔助器隨著用戶名,域值和返回一個 MD5 摘要。這 3 個串連在一起,并以冒號分割:username:realm:password記住不會在 HTTP 請求里發(fā)送。輔助器從數(shù)據(jù)的明文文件)獲取用戶的。例如,假設 Bobby 的(類似于 password 輔助器使用是 CRs。輔助器從 squ

34、id 接受用戶名和域值,從它的數(shù)據(jù)獲取,并計算這個串的 MD5 校驗和:bobby:Tom Landry Middle School:CRsSquid 的源代碼包含一個庫函數(shù)叫做 DigestCalcHA1( ), 它用來執(zhí)行這個計算在終端窗口里來測試這些,并觀察輔助器返回什么:可以% echo bobby:CRs /tmp/pw% echo bogus_input | digest_pw_auth /tmp/pwERR% echo nouser:some realm | digest_pw_auth /tmp/pwERR11% echo bobby:Tom Landry Middle Sch

35、ool | digest_pw_auth /tmp/pwc7ca3efda238c65b2d48684a51baa90eSquid這個 MD5 校驗和,并將其用于摘要驗證算法的其他部分。注意這個校驗和僅在用戶改變其時才會改變。在 squid 的當前摘要執(zhí)行里,只要用戶保持活躍狀態(tài),這些校驗和就保存在內(nèi)存里。假如用戶不活躍的時間達到 authenticate_ttl 秒,MD5 校驗和可能從 squid 的內(nèi)存里移除。若該用戶下次請求,squid 會要求外部輔助器進程重新計算校驗和。12.4NTLM 驗證NTLM是的私有連接驗證協(xié)議。許多組織,包括squid的開發(fā)者,通過少用信息以及檢查網(wǎng)絡傳輸

36、,已經(jīng)反向工程了該協(xié)議??梢栽谶@里找到一些技術(shù)細節(jié):NTLM 使用三次握手來驗證接。首先,客戶端發(fā)送請求,它帶一對標識符。接著,服務器發(fā)送回一個發(fā)送其請求,包含了對這個消息(譯者注:即用于加密的隨機)。第三步,客戶端再次的響應。這時,連接驗證成功,在同一連接里的任何進一步的請求,不再需要/響應信息。假如關(guān)閉了連接,客戶端和服務器必須重復整個三次握手過程。持續(xù)連接有助于減少 NTLM 驗證的負載。NTLM 使用加密的 hash 函數(shù)和 nonce 值,類似于摘要驗證,盡管弱一些。認為 NTLM 要脆NTLM 驗證支持下列 auth_param 參數(shù):auth_param ntlm program

37、auth_param ntlm children numberdauth_param ntlm max_challenge_reuses numberauth_param ntlm max_challenge_lifetime time-specificationprogram 和 children 參數(shù)與基本驗證和摘要驗證的相同。剩余的參數(shù)決定 squid 每隔多久重用某個令牌。max_challenge_reuses 參數(shù)指定某個令牌可被重用多少次。默認值是 0,所以這個令牌永不會被重用。增加該值可以減少 squid 和 NTLM 輔助器進程的計算負載,但帶來了弱化協(xié)議安全的風險。類似的,

38、 max_challenge_lifetime 參數(shù)對令牌重用設置了一個時間限制, 即使 max_challenge_reuses 次數(shù)還沒有用完。默認值是 60 秒。如下是個完整示例:auth_param ntlm program /usr/local/squid/libexec/ntlm_auth foobar12auth_param ntlm children 12auth_param ntlm max_challenge_reuses 5 auth_param ntlm max_challenge_lifetime 2 minutesacl KnownUsers proxy_auth

39、REQUIREDhttp_acs allow KnownUsersSquid 自帶了下列 NTLM 驗證輔助器程序:12.4.1 SMB./configure enable-auth=ntlm enable-ntlm-auth-helpers=SMBNTLM 的服務消息塊(SMB)驗證器與基本驗證的相似。用戶簡單的提供他們的 windowsNT,用戶名和即可。該驗證器能在多個域控制器間負載均衡。域和控制器名字出現(xiàn)在命令行中:auth_param ntlm program /usr/local/squid/libexec/ntlm_authcontroller controller .12.4.

40、2 winbind./configure enable-auth=ntlm enable-ntlm-auth-helpers=winbind該驗證器類似于基本驗證的 winbind。兩者都要求安裝和運行了 Samba winbindd 服務。NTLM 的 winbind 驗證器名字是 wb_nltm_auth。它在 squid.conf 里的配置看起來如下:auth_param basic program /usr/local/squid/libexec/wb_ntlm_auth12.4.3 NTLM 驗證 API在 squid 和 NTLM 驗證器之間的通信相對于基本和摘要驗證而言,要復雜得

41、多。理由之一是每個輔助器進程實際創(chuàng)建了它自己的必須記住哪個連接屬于哪個輔助器。令牌。這樣,輔助器變得與狀態(tài)相關(guān),squidSquid 和輔助器進程使用一些 2 字符的代碼來指示它們正在發(fā)送什么。這些代碼如下:YR在 squid 需要新的令牌時,它發(fā)送這個給輔助器。這總是在兩個進程間的第一個通信。它也可能在 squid 需要新 令牌的任何時候發(fā)生, 歸咎于 auth_parammax_challenge_lifetime 和 max_challenge_uses 參數(shù)的設置。輔助器響應一個 TT 消息。13TT令牌輔助器發(fā)回這個消息給 squid,包含了一個牌用 base64 編碼,在 RFC

42、2045 里有定義。令牌。它是對 YR 請求的響應。令KK 信用項當 squid 想要驗證某個用戶的信用項時,它發(fā)送這個到輔助器。輔助器響應如下幾個代碼:AF, NA, BH, 或 LD。AF 用戶名當用戶的驗證信用項有效時,輔助器發(fā)回這個消息給 squid。輔助器在本消息里發(fā)送用戶名,是因為 squid 不去嘗試NTLM 驗證頭部。NA 理由當用戶的信用項無效時,輔助器發(fā)回這個消息給 squid。它也包含了一個“理由”字符串,squid 能將其顯示到錯誤頁面。BH 理由當驗證過程失敗時,輔助器發(fā)回這個消息給 squid。這點可能發(fā)生在,例如,輔助器進程無法與 windows NT 域控制器通

43、信的時候。squid用戶請求。LD 用戶名這個輔助器到 squid 的響應類似于 BH,除了 squid 允許用戶請求之外。類似于 AF,它返回用戶名。為了使用該功能,必須在編譯 squid 時使用 enable-ntlm-fail-open 選項。既然該協(xié)議相對復雜,你最好從包含在 squid 源代碼發(fā)布里的 2 個基本驗證器起步。no_check 輔助器用 perl 寫的,fakeauth 用C 寫的。可以在 helpers/ntlm_auth 目錄找到它們。12.5 外部 ACL在版本 2.5,Squid 包含了一個新功能,叫做外部ACL。這些 ACL 元素在外部輔助器進被執(zhí)行。你指示

44、squid 將某些信息寫往輔助器,然后輔助器以 OK 或 ERR 來響應 squid。請參考 6.1.3 章關(guān)于 external_acl_type 語法的描述。這里,我僅僅輔助器程序,它們隨著 squid 的源代碼發(fā)布。一些特殊的外部 ACL1412.5.1 ip_user./configure enable-external-acl-helpers=ip_user該輔助器用戶名和客戶端 IP 地址作為輸入。它根據(jù)配置文件來檢查這 2 個值,以決定其是否有效。為了使用這個 ACL 輔助器,要在 squid.conf 里增加如下行:external_acl_type ip_user_helpe

45、r %SRC %LOGIN/usr/local/squid/libexec/ip_user -f /usr/local/squid/etc/ip_user.confacl AclName external ip_user_helper對每個請求,%SRC 替換成客戶端的 IP 地址,%LOGIN 替換成用戶名。ip_user.conf 配置文件有如下格式:ip_addr/maskuser|group|ALL|NONE例如:/24/24/16ALLbob lusers NONE該配置文件導致 ip_user 對任何來自 的請求返回 OK,對來自 /24 網(wǎng)絡的 Bob 的請求返回 OK,對來自

46、/24 網(wǎng)絡的,位于 luser 組里的任何用戶名返回 OK。對來自 /16 網(wǎng)絡的任何請求返回 ERR。它也對任何不在這個列表里出現(xiàn)的地址和用戶名對返回 ERR。12.5.2 ldap_group./configure enable-external-acl-helpers=ldap_group該輔助器決定是否某個用戶屬于一個特殊的 LDAP 組。在 acl 行里指定 LDAP 組名。它可能在你的配置文件里看起來如下:external_acl_type ldap_group_helper %LOGIN /usr/local/squid/libexec/squid_ldap_group-b o

47、u=people,dc=exle,dc=comldxacl AclName external ldap_group_helper GroupRDN .注意為了編譯squid_ldap_group 輔助器程序,你必須在系統(tǒng)中安裝OpenLDAP 庫)。(1512.5.3 unix_group./configure enable-external-acl-helpers=unix_group該輔助器在 Unix 組數(shù)據(jù)庫(例如/etc/group 文件)里查找用戶名。在輔助器定要檢查的組:令行指external_acl_type unix_group_helper %LOGIN/usr/local/squid/libexec/check_group -g group1 -g group2 .acl AclName externaix_group_helper另外,可在 acl 行指定組。這樣就允許對不同的組使用相同的輔助器:external_acl_type unix_group_helper %LOGIN /usr/local/squid/libexec/check_groupacl AclName1 externaacl AclName2 externaix_gr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論