Proxy

如何配置身份驗證代理伺服器

  • May 6, 2015

我的工作代理伺服器需要使用 Microsoft AD 域使用者憑據進行身份驗證。每個人都知道它是如何工作的:如果您在 Windows 工作站上登錄,您的基於“Internet Explorer”瀏覽器的網際網路訪問請求將使用您的域登錄憑據自動進行身份驗證(和辨識)。

我發現 Firefox 也可以針對這些代理伺服器進行身份驗證,並且長期以來一直認為它們“做了一些特別的事情”。最近,一位同事在虛擬機中安裝了 Linux Mint,令我驚訝的是,他正忙於從網際網路上獲取更新。當我問他是怎麼做到的時,他聳了聳肩說“它只是奏效了”

這促使我重新查看代理設置。我執行 Kubuntu(混合了 G* 和 K* 應用程序,但我只在確信 GTK 應用程序比任何 K* 都好時才使用它們)

我仍然有一個在 VirtualBox VM 中執行的 Windows 來賓副本,主要用於列印和訪問內部/公司網站(兩者都需要通過 MS 域憑據進行身份驗證和辨識)以及每隔這麼多天更改我的域密碼.

所以如果我能得到這將是非常有幫助的

$$ some/most/all $$我的 Linux 應用程序通過代理伺服器工作。我最迫切的需求是讓 Akregator 和 Muon 能夠工作。其他可能受益的應用程序是一些自動更新(例如虛擬框擴展)或將自己包裹在瀏覽器周圍的應用程序(想到獲取更多主題/牆紙/等,偶爾使用 wget) SSH/SCP 客戶端無需身份驗證即可通過防火牆工作。

配置它的正確方法(工具和/或程序)是什麼,最好在一個位置,因為必須在多個位置維護我的密碼是被鎖定在我的帳戶之外的秘訣:-/

哦,如果我可以擁有相當於 Firefox“快速代理”代理禁用/啟用實用程序的功能,那將是夢想成真,例如,一鍵啟用或禁用代理,而無需退出並重新登錄,取決於我在哪個網路上。實際上考慮一下,應該可以訓練一個實用程序來查看您的 IP 地址並知道何時需要使用代理!但我離題了。

我想執行一個本地代理伺服器,它可以在需要時動態添加身份驗證並轉發到上游代理伺服器,這可能是唯一真正的解決方案。

在我的 Linux 工作站上,唯一可以訪問 Internet 的應用程序是 a) Firefox(使用儲存在 Firefox 中的自己的代理配置和身份驗證),以及在 Windows VM 中執行的應用程序(注意 - Windows VM 是域成員,並且使用者在登錄時對域進行身份驗證)

解決方案選項:在您的 Windows VM 上執行 Web 代理。設置您的系統以使用該實例作為您的代理。

由於您的 Windows VM 已經過身份驗證並且允許流量通過它,因此在該 VM 實例上設置 SOCKS 代理將集中您的身份驗證需求。如果它只適合您和您的盒子,這應該沒問題,並且可能相當簡單。

捎帶這個想法是讓一個 SSHD 守護程序在 Windows VM 上執行,這樣您就可以通過 VM 從其他機器執行 SSH SOCKS 隧道之類的操作:

ssh -D 1080 windows-user@windows-vm

對於那些可能有問題或不想重新配置應用程序的應用程序,您可以使用sshtunnel,它將設置 iptables 規則來路由流量。適用於 Linux 和 Mac 系統。

如果您需要避免在 Windows VM 本身上安裝代理,您可以設置一個 Squid 代理盒,該代理盒配置為針對 Windows AD 進行身份驗證。執行此操作的指南位於此處:

解決方案選項:通過 AD/NTLM 驗證的 Squid 代理

http://techmiso.com/1934/howto-install-squid-web-proxy-server-with-active-directory-authentication/死連結

另一個 NTLM 代理解決方案,雖然我認為這個實際上是在 Windows 機器上執行的:

解決方案選項:NTLM 代理 http://cntlm.sourceforge.net/

cntlm提供了一個解決方案,以及一些配置。

要遵循的基本步驟是:

  1. 安裝cntlm。
  2. 在 /etc/cntlm.conf 編輯它的配置文件,包含的註釋使它變得很容易。
  3. 添加代理伺服器(或兩個)。
  4. 在適當的地方指定您的使用者名和 NT 域名,並刪除密碼條目。
  5. 啟動 cntlm 服務,例如通過
$ sudo /etc/init.d/cntlm start
  1. cntlm 提供了一種測試代理並從您的密碼生成雜湊的方法 - 例如通過命令(以 root 身份)
$ cntlm -I -M http://www.test.com
  1. cntlm 將提示您輸入域密碼。然後它將針對配置的代理伺服器測試不同的身份驗證機制。當找到一個工作方法時,它會列印兩行需要進入其配置文件的行。
  2. 停止 cntlm 伺服器並將上面步驟 6 中獲得的行添加到/etc/cntlm.conf.
  3. 重啟cntlm

現在cntlm正在執行並準備好使用。許多地方可以用來配置各種程序來使用它。 cntlm然後將透明地將 NT 域身份驗證令牌添加到傳出數據包並將它們轉發到配置的代理伺服器。

使用 Qt/KDE

對於 Qt / KDE 本機應用程序,在KDE 系統設置->網路設置->代理設置中指定“使用手動配置的代理伺服器” 。代理被指定為http://localhost埠 3128(cntlm除非您更改它,否則預設值)。這些應用程序使用新設置動態更新,無需重新啟動或註銷/登錄即可更新設置。

Dropbox 和Google客戶端

許多應用程序可以使用 shell 環境變數。這裡值得注意的是 Dropbox 和 Google Earth 客戶端。對於這些應用程序,請使用以下 shell 環境變數:

no_proxy=localhost,127.0.0.0/8,*.local
NO_PROXY=localhost,127.0.0.0/8,*.local
all_proxy=socks://localhost:3128/
ALL_PROXY=socks://localhost:3128
http_proxy=http://localhost:3128
HTTP_PROXY=http://localhost:3128
ftp_proxy=http://localhost:3128
FTP_PROXY=http://localhost:3128
https_proxy=http://localhost:3128
HTTPS_PROXY=http://localhost:3128

s3cmd、curl 和 wget

注意:有些應用程序只使用小寫名稱,有些只使用大寫名稱,有些應用程序會先嘗試一個,然後再嘗試另一個。

s3cmd(Amazon S3 客戶端),如果需要curlwget還可以通過他們自己的配置文件進行配置。這很方便,因為他們在每次呼叫時都會讀取自己的配置文件。由於這些程序通常是短暫的(在完成下載後存在單個呼叫),因此非常有用。

s3cmdin的格式為~/.s3cfg

proxy_host = localhost
proxy_port = 3128

wget in 的格式為~/.wgetrc

https_proxy = http://localhost:3128
http_proxy = http://localhost:3128
ftp_proxy = http://localhost:3128

curlin的格式為~/.curlrc

proxy = localhost:3128

另一方面,編輯 shell 配置文件或其他環境配置文件通常需要重新啟動、註銷並重新登錄或類似操作。值得研究/etc/environment,等~/.pam_environment~/.kde/env/proxy.sh因為這些是設置通過 shell 環境變數配置的代理設置的標準位置,特別是影響系統上的所有使用者和服務。

我也知道可以使用各自的.desktop文件在每個應用程序的基礎上更改環境設置,但尚未嘗試(成功)。

虛擬盒子

VirtualBox 可以使用其 GUI 或使用以下命令配置為使用代理(例如檢查和下載軟體更新):

$ VBoxManage setextradata global GUI/ProxySettings \
   "proxyEnabled,localhost,3128,authDisabled,,"

為了完整起見,禁用它使用:

$ VBoxManage setextradata global GUI/ProxySettings \    
   "proxyDisabled,,,authDisabled,,"

火狐

對於 Firefox,我使用 QuickProxy 外掛。Firefox 本身如果手動配置為使用本地機器上的代理伺服器,那麼 QuickProxy 只是啟用/禁用該設置。

易於

APT(由 synaptic、muon 和朋友在後台使用)使用 中的配置文件/etc/apt/apt.conf.d/,例如,00proxy 啟用 APT 代理是使用以下行完成的:

Acquire::http::Proxy "http://localhost:3128";
#Acquire::ftp::proxy "ftp://localhost:3128/";
#Acquire::https::proxy "https://localhost:3128/";

注意: add-apt-repository 使用根配置文件,或者您可以配置 sudo 以允許所有 http*_proxy 設置失敗。

一個腳本來統治他們

FWIW 我現在正在編寫一個模組化腳本來啟用/禁用眾多程序的代理。到目前為止,我已經編寫了以下模組:

$ ls -lF proxymanager/modules/
total 60
-rwxr-xr-x 1 root root  919 Oct  8 17:27 apt*
-rwxr-xr-x 1 root root 1037 Oct  8 13:10 bashrc*
-rwxr-xr-x 1 root root  391 Oct  8 12:18 cntlm*
-rwxr-xr-x 1 root root  684 Oct  8 12:58 curl*
-rwxr-xr-x 1 root root  609 Oct  8 13:02 dropbox*
-rwxr-xr-x 1 root root  672 Oct  8 12:18 gnome*
-rwxr-xr-x 1 root root  691 Oct  8 12:18 kde*
-rwxr-xr-x 1 root root  689 Oct  8 13:03 root_bashrc*
-rwxr-xr-x 1 root root  691 Oct  8 13:03 root_curl*
-rwxr-xr-x 1 root root  827 Oct  8 13:03 s3cmd*
-rwxr-xr-x 1 root root  454 Oct  8 13:03 survive_reboot*
-rwxr-xr-x 1 root root  860 Oct  8 13:06 suse-sysproxy*
-rwxr-xr-x 1 root root  653 Oct  8 12:46 sysenvironment*
-rwxr-xr-x 1 root root  465 Oct  8 13:04 virtualbox*
-rwxr-xr-x 1 root root  573 Oct  8 13:04 wgetrc*

以及一個控制應用程序。這些有望很快被轉移到 github 或其他線上首頁中。

引用自:https://unix.stackexchange.com/questions/70854