域名授權企業免費代理服務器

域名授權企業免費代理服務器

pfSense+具有 https 過濾功能的 Squid + 透過 Active Directory 群組進行篩選的單一登入技術 (SSO)

簡要背景

企業需要實作一個代理伺服器,能夠從 AD 中按群組過濾對網站(包括 https)的訪問,以便使用者無需輸入任何額外的密碼,並且可以從 Web 介面進行管理。 不錯的應用程序,不是嗎?

正確的答案是購買 Kerio Control 或 UserGate 等解決方案,但一如既往,沒有錢,但有需要。

這就是老舊的 Squid 來拯救我們的地方,但同樣,我可以在哪裡獲得 Web 介面? SAMS2? 道德已經過時了。 這就是 pfSense 發揮作用的地方。

描述

本文將介紹如何設定 Squid 代理伺服器。
Kerberos 將用於對使用者進行授權。
SquidGuard 將用於按網域組進行過濾。

Lightsquid、sqstat和內部pfSense監控系統將用於監控。
與單一登入(SSO)技術實施相關的常見問題也將得到解決,即應用程式試圖在其係統帳戶的指南針帳戶下存取網際網路。

準備安裝 Squid

pfSense 將用作基礎, 安裝說明。

在其中,我們使用網域帳戶組織對防火牆本身的身份驗證。 指令。

這非常重要!

在開始安裝 Squid 之前,您需要在 pfsense 中設定 DNS 伺服器,在我們的 DNS 伺服器上為其建立 A 記錄和 PTR 記錄,並設定 NTP,以便時間與網域控制站上的時間沒有差異。

在您的網路中,提供 pfSense WAN 介面存取 Internet 的能力,以及本地網路上的使用者連接到 LAN 介面的能力,包括透過連接埠 7445 和 3128(在我的例子中為 8080)。

一切準備好了嗎? 網域是否透過 LDAP 連線以在 pfSense 上進行授權,時間是否同步? 偉大的。 是時候開始主進程了。

安裝和預先配置

我們將從「系統/套件管理器」部分的 pfSense 套件管理器安裝 Squid、SquidGuard 和 LightSquid。

安裝成功後,進入“Services/Squid Proxy server/”,首先在 Local Cache 選項卡中,配置緩存,我將所有內容設為 0,因為我不認為快取網站有什麼意義;瀏覽器可以很好地處理這個問題。 設定完成後,按下螢幕底部的「儲存」按鈕,這將使我們有機會進行基本的代理設定。

主要設定如下:

域名授權企業免費代理服務器

預設連接埠是 3128,但我更喜歡使用 8080。

代理介面標籤中選定的參數決定我們的代理伺服器將偵聽哪些介面。 由於此防火牆的建置方式是透過 WAN 介面查看 Internet,因此即使 LAN 和 WAN 可能位於同一本地子網路上,我還是建議使用 LAN 作為代理程式。

sqstat 需要環回才能運作。

下面你會發現透明代理設置,以及SSL過濾器,但是我們不需要它們,我們的代理不會是透明的,對於https過濾我們不會處理證書替換(畢竟我們有文檔管理) 、銀行客戶等),我們只看握手。

在此階段,我們需要前往網域控制器,在其中建立帳戶進行身份驗證(您也可以使用您在 pfSense 本身上配置的身份驗證帳戶)。 這裡一個非常重要的因素是,如果您打算使用 AES128 或 AES256 加密,請選取帳戶設定中的對應方塊。

如果您的網域是一個非常複雜的森林,具有大量目錄,或者您的網域是.local,那麼有可能,但不確定,您將必須為此帳戶使用簡單的密碼,該錯誤是已知的,但具有複雜的密碼密碼可能根本不起作用,您需要根據具體情況進行檢查。

域名授權企業免費代理服務器

之後,我們為 Kerberos 建立一個金鑰文件,在網域控制器上,使用管理員權限開啟命令提示字元並輸入:

# ktpass -princ HTTP/[email protected] -mapuser pfsense -pass 3EYldza1sR -crypto {DES-CBC-CRC|DES-CBC-MD5|RC4-HMAC-NT|AES256-SHA1|AES128-SHA1|All} -ptype KRB5_NT_PRINCIPAL -out C:keytabsPROXY.keytab

在我們指示FQDN pfSense 的地方,請務必尊重大小寫,在mapuser 參數中,我們輸入網域帳戶及其密碼,在crypto 中,我們選擇加密方法,我使用rc4 進行工作,在-out 欄位中,我們選擇其中我們將發送現成的密鑰檔案。
成功建立金鑰檔案後,我們將其發送到我們的 pfSense,我使用 Far 來完成此操作,但您也可以使用命令、putty 或透過「DiagnosticsCommand Line」部分中的 pfSense Web 介面來執行此操作。

現在我們可以編輯create /etc/krb5.conf

域名授權企業免費代理服務器

其中 /etc/krb5.keytab 是我們建立的金鑰檔案。

請務必使用 kinit 檢查 Kerberos 的操作;如果它不起作用,則沒有必要繼續閱讀。

配置 Squid 身份驗證和無身份驗證存取列表

成功配置 Kerberos 後,我們將其附加到我們的 Squid。

為此,請轉到 ServicesSquid 代理伺服器,然後在主設定中轉到最底部,我們將在那裡找到「進階設定」按鈕。

在自訂選項(授權前)欄位中,輸入:

#Хелперы
auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth -s GSS_C_NO_NAME -k /usr/local/etc/squid/squid.keytab -t none
auth_param negotiate children 1000
auth_param negotiate keep_alive on
#Списки доступа
acl auth proxy_auth REQUIRED
acl nonauth dstdomain "/etc/squid/nonauth.txt" 
#Разрешения 
http_access allow nonauth 
http_access deny !auth
http_access allow auth

在哪裡 auth_param 協商程式 /usr/local/libexec/squid/negotiate_kerberos_auth — 選擇我們需要的 Kerberos 驗證助理。

關鍵 -s 有意義 GSS_C_NO_NAME — 決定密鑰檔案中任何帳戶的使用。

關鍵 -k 有意義 /usr/local/etc/squid/squid.keytab — 決定使用這個特定的密鑰表檔案。 就我而言,這是我們生成的相同密鑰表文件,我將其複製到 /usr/local/etc/squid/ 目錄並重命名它,因為魷魚不想與該目錄成為朋友,顯然我沒有足夠的權利。

關鍵 -t 有意義 -t 無 — 停用對網域控制器的循環請求,如果您有超過 50 個用戶,這將大大減少網域控制器的負載。
在測試過程中,您還可以添加 -d 開關 - 即診斷,將顯示更多日誌。
auth_param 協商子進程 1000 — 決定可以啟動多少個同時授權進程
auth_param 協商 keep_alive on — 防止在輪詢授權鏈時連接斷開
acl auth proxy_auth 必需 — 建立並要求包含授權使用者的存取控制列表
acl nonauth dstdomain“/etc/squid/nonauth.txt” — 我們通知魷魚有關非身份驗證訪問列表,其中包含始終允許每個人訪問的目標域。 我們建立文件本身,並以以下格式輸入其中的網域

.whatsapp.com
.whatsapp.net

使用 Whatsapp 作為範例是有原因的 - 它對身份驗證代理非常挑剔,如果在身份驗證之前不允許它就無法工作。
http_access 允許非身份驗證 — 允許所有人存取此列表
http_access 拒絕 !auth — 我們禁止未經授權的使用者造訪其他網站
http_access 允許身份驗證 — 允許授權使用者存取。
就這樣,Squid 本身就配置好了,現在是時候開始按組過濾了。

設定 SquidGuard

前往 ServicesSquidGuard 代理過濾器。

在 LDAP 選項中,我們輸入用於 Kerberos 驗證的帳戶詳細信息,但格式如下:

CN=pfsense,OU=service-accounts,DC=domain,DC=local

如果存在空格或非拉丁字符,則整個條目應括在單引號或雙引號中:

'CN=sg,OU=service-accounts,DC=domain,DC=local'
"CN=sg,OU=service-accounts,DC=domain,DC=local"

接下來,請務必選取這些方塊:

域名授權企業免費代理服務器

切斷不必要的 DOMAINpfsense DOMAIN.LOCAL整個系統對此非常敏感。

現在讓我們進入 Group Acl 並綁定我們的網域存取群組,我使用簡單的名稱,如 group_0、group_1 等,最多 3 個,其中 3 表示僅訪問白名單,0 表示一切皆有可能。

這些組的連結如下:

ldapusersearch ldap://dc.domain.local:3268/DC=DOMAIN,DC=LOCAL?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=group_0%2cOU=squid%2cOU=service-groups%2cDC=DOMAIN%2cDC=LOCAL))

我們保存我們的群組,轉到“時代”,在那裡我創建了一個間隙,這意味著它將始終有效,現在我們轉到“目標類別”並自行創建列表,創建列表後我們返回到我們的群組,並在組內我們使用按鈕選擇誰可以去哪裡以及誰不能去哪裡。

LightSquid 和 sqstat

如果在設定過程中我們在squid設定中選擇了環回,並在我們的網路和pfSense本身的防火牆中開啟了存取7445的能力,那麼當我們進入DiagnosticsSquid代理報告時,我們可以輕鬆地開啟sqstat和Lighsquid ,以獲取後者我們需要在那裡你可以想出一個登入名稱和密碼,你也可以選擇一個設計。

完成

pfSense 是一個非常強大的工具,可以做很多事情- 代理流量和控制用戶對Internet 的訪問只是整個功能的一小部分,但是,在擁有500 台機器的企業中,它解決了問題並讓我們節省了成本關於購買代理。

我希望本文能幫助某人解決與大中型企業非常相關的問題。

來源: www.habr.com

添加評論