認証プロキシサーバーを構成する方法


8

仕事用のプロキシサーバーでは、Microsoft ADドメインユーザーの資格情報による認証が必要です。Windowsワークステーションにログインすると、「Internet Explorer」ブラウザベースのインターネットアクセス要求は、ドメインログイン資格情報を使用して自動的に認証(および識別)されます。

私はFirefoxがこれらのプロキシサーバーに対しても認証できることを発見し、「特別な何かをする」と長い間想定していました。最近、同僚がLinux MintをVMにインストールしましたが、驚いたことに、彼はインターネットからの更新の取得で忙しかったです。私は彼がどのようにそれを得たのかと尋ねると、彼は肩をすくめて「それはうまくいった」と言いました

これにより、プロキシ設定を再確認するように求められました。私はKubuntuを実行しています(G *アプリケーションとK *アプリケーションが混在していますが、GTKアプリケーションは、K *アプリケーションよりもはるかに優れていると確信している場合にのみ使用します)。

VirtualBox VMで実行されているWindowsゲストのコピーがまだあります。これは主に印刷と内部/企業Webサイトへのアクセス(どちらもMSドメイン資格情報による認証と識別が必要です)、およびドメインパスワードを何日も変更するためです。 。

したがって、プロキシサーバー経由でLinuxアプリケーションの[一部/ほとんど/すべて]を動作させることができれば非常に役立ちます。私の最も緊急のニーズは、AkregatorとMuonが動作できるようにすることです。メリットがあると思われる他のアプリケーションは、自動更新(例:Virtual Box Extentions)またはブラウザにラップするいくつかのアプリケーションです(Get More Themes / Wall Papers / etcが思い浮かび、時々wgetを使用します)。

SSH / SCPクライアントは、認証なしでファイアウォールを介して機能します。

これを構成する正しい方法(ツールや手順)は何ですか。理想的には単一の場所でパスワードを複数の場所で維持する必要があるため、アカウントからロックアウトされるためのレシピです:-/

ああ、それから、Firefoxの「クイックプロキシ」プロキシ無効化/有効化ユーティリティに相当する機能が手に入るとしたら、夢が叶うでしょう。使用しているネットワークによって異なります。実際に考えてみると、ユーティリティは、IPアドレスを調べて、いつプロキシを使用する必要があるかを知るようにトレーニングできる必要があります。しかし、私は余談です。

認証を動的に追加し、必要なときに上流のプロキシサーバーに転送できるローカルプロキシサーバーを実行することが、唯一の実際のソリューションであると想像します。


それはどのタイプのプロキシですか?LinuxベースまたはWindowsベース?
midnightsteel

Proxy ServerはWindowsベースです。
ヨハン

プロキシが設定渡しの状態にあり、ファイアウォールがすべてのホストからのアウトバウンドWebトラフィックを許可しているようです。これは、同僚が認証なしで閲覧できた方法です。使用しているプロキシサーバーはISAまたはTMGですか?
midnightsteel

ファイアウォールはすべてのホストからの送信を許可していません。そうでない場合、プロキシサーバーをバイパスするだけです。「構成渡し」とはどういう意味ですか?はっきりさせておきます。私のLinuxワークステーションから、インターネットにアクセスできる唯一のアプリケーションは、a)Firefox(Firefoxに保存されている独自のプロキシ設定と認証を使用)、およびWindows VMで実行されているアプリケーションです(注-Windows VMはドメインメンバーであり、ユーザーはログイン時にドメインに対して認証されます)
Johan

ISAかTMGかわかりません。どちらかで解決策が異なる場合は、両方の解決策に興味があります。
ヨハン

回答:


2

私のLinuxワークステーションから、インターネットにアクセスできる唯一のアプリケーションは、a)Firefox(Firefoxに保存されている独自のプロキシ設定と認証を使用)、およびWindows VMで実行されているアプリケーションです(注-Windows VMはドメインメンバーであり、ログイン時にユーザーがドメインに対して認証する)

ソリューションオプション:Windows VMでWebプロキシを実行します。そのインスタンスをプロキシとして使用するようにシステムをセットアップします。

Windows VMはすでに認証されており、トラフィックが許可されているため、そのVMインスタンスにSOCKSプロキシを設定すると、認証のニーズが一元化されます。それがあなたとあなたの箱のためだけであるなら、これは問題ないはずで、おそらくかなり簡単です。

このアイデアの便乗は、Windows VMでSSHDデーモンを実行して、VMを介して他のボックスからSSH SOCKSトンネルなどを実行できるようにすることです。

ssh -D 1080 windows-user@windows-vm

問題がある可能性のあるアプリや、アプリを再構成したくない場合は、トラフィックをルーティングするためのiptablesルールを設定するsshtunnelを利用できます。LinuxおよびMacシステムで動作します。

Windows VM自体へのプロキシのインストールを回避する必要がある場合は、Windows ADに対して自身を認証するように構成されたSquidプロキシボックスをセットアップできます。それを行うためのガイドはここにあります:

ソリューションオプション: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を調査していますが、それはたまたま標準のUbuntuリポジトリにもあります。
ヨハン

1
cntlmソリューションは有望であるようです。これまでのところ、それはwgetとchromiumが機能することを可能にします。Wgetは、.wgetrcファイルにcntlm address:portを含めることで機能します。Chromiumは、「コンピューターのシステムプロキシ設定」と呼ばれるものを使用するように構成されており、KDEシステム設定->プロキシ->手動構成でプロキシを構成しています。Chromiumはこれを動的に使用します。つまり、KDEで設定を変更すると、Chromiumを再起動せずにChromiumが影響を受けます。TBC
Johan

これまでのところ、これはKonqueror、Muon、またはAkregatorではまだ機能していません。プロキシ設定を直接公開するものはありません。Muonはバックグラウンドでapt-getを使用していると思います。これはwgetと同様の方法で構成できます。KDEの「手動で指定されたプロキシ」とKDEの「システムプロキシ」の設定オプションの違いがわかりません。これが、すべてのアプリケーションで機能するための鍵となる場合があります。また、ログアウトしてからログインした後でも、KDE設定がシェルスクリプトに入力されていないことに気付きました。
ヨハン

MS-Windows経由のプロキシソリューションは私には受け入れられません。他の人は違って感じるかもしれませんが、送信ネットワークパケットに認証を追加するためだけに余分なOSインスタンス全体を実行することは、リソースを大量に消費しすぎて、MS Windowsへの依存を取り除きません。
ヨハン

1
上記の提案に従ってcntlmを使用して問題を解決しました。強くお勧めします。KDEグローバル設定を使用していないほとんどのKDEアプリケーションで私が抱えていた問題は、KDEプロキシ設定でプロキシサーバーを指定するときに使用された形式が正しくなかったことが原因でした。ちなみに、Chromiumはこれに敏感ではないようです(http://プロキシの設定
Johan

8

cntlm いくつかの構成とともにソリューションを提供します。

従うべき基本的な手順は次のとおりです。

  1. cntlmをインストールします。
  2. /etc/cntlm.confにある構成ファイルを編集します。含まれているコメントにより、十分に簡単になります。
  3. プロキシサーバー(または2つ)を追加します。
  4. ユーザー名とNTドメイン名を適切な場所に指定し、パスワードエントリを削除します。
  5. たとえば、cntlmサービスを開始します

    $ sudo /etc/init.d/cntlm start
    
  6. cntlmは、プロキシをテストし、パスワードからハッシュを生成する方法を提供します-たとえば(rootとしての)コマンドによって

    $ cntlm -I -M http://www.test.com
    
  7. cntlmはドメインパスワードの入力を求めます。次に、構成されたプロキシサーバーに対してさまざまな認証メカニズムをテストします。動作するメソッドが見つかると、構成ファイルに入力する必要のある2行が出力されます。

  8. cntlmサーバーを停止し、上記のステップ6で取得した行を /etc/cntlm.confます。
  9. cntlmを再起動します

これcntlmで実行され、使用する準備ができました。多くの場所を使用して、それを使用するさまざまなプログラムを構成できます。 cntlm次に、NTドメイン認証トークンを送信パケットに透過的に追加し、構成済みのプロキシサーバーに転送します。

Qt / KDEの使用

Qt / KDEネイティブアプリケーションの場合、KDEの[システム設定] -> [ ネットワーク設定] -> [ プロキシ設定]で[手動で構成されたプロキシサーバーを使用する]を指定します。プロキシはhttp://localhost、ポート3128と同様に指定されます(デフォルトのcntlm変更ない限り)。これらのアプリケーションは新しい設定で動的に更新され、設定を更新するための再起動やログアウト/ログインは必要ありません。

DropboxとGoogleクライアント

多くのアプリケーションはシェル環境変数を使用できます。ここで注目すべきは、DropboxとGoogle Earthクライアントです。これらのアプリケーションでは、次のようなシェル環境変数を使用します。

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のクライアント)、curlおよびwget必要に応じてさらに、独自の構成ファイルを介して設定することができます。呼び出しのたびに独自の構成ファイルを読み取るため、これは便利です。これらのプログラムは通常、有効期間が短い(ダウンロードの完了後に1回の呼び出しが存在する)ため、非常に便利です。

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

一方、シェルプロファイルやその他の環境設定ファイルを編集するには、通常、再起動、ログアウトとログインなどが必要です。それは調査の価値があります/etc/environment~/.pam_environment~/.kde/env/proxy.shこれらはシステム上のすべてのユーザとサービスに影響を与えるために、特に、シェルの環境変数を経由して設定されたプロキシ設定を設定するための標準的な場所であるとしてなど。

それぞれの.desktopファイルを使用してアプリケーションごとに環境設定を変更できることも理解していますが、まだ(成功して)試していません。

VirtualBox

VirtualBoxは、GUIを使用するか、次のコマンドを使用して、プロキシを使用するように(たとえば、ソフトウェアの更新を確認してダウンロードするように)構成できます。

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

完全を期すために、これを無効にするには、以下を使用します。

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

Firefox

Firefoxの場合、QuickProxyアドオンを使用します。ローカルマシンでプロキシサーバーを使用するように手動で設定されている場合、Firefox自体。したがって、QuickProxyは設定を有効または無効にするだけです。

APT

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はルートプロファイルを使用します。または、すべてのhttp * _proxy設定が適用されるようにsudoを構成できます。

それらすべてを支配するスクリプト

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または他のオンラインホームに移動される予定です。


その後、これはGitHubに移動し、より多くのモジュールを獲得しましたが、ゆっくりですが確実に使用可能な形式に近づいています。大胆で冒険的なタイプはこれが便利かもしれません:github.com/Tahaan/proxymanager
Johan

新しいことを学びます。ありがとうございます。コマンドラインでcntlmにパスワードを渡すにはどうすればよいですか。パスワードの入力を求めるプロンプトを表示したくないのですか。
トゥシー

0

ntlmによるプロキシ認証については、以下のリンクで詳しく説明しています。

しかし、ntlmの問題は、cntlm構成ファイルを1日に何度も更新する必要があることです。さまざまなユーザーが共通のマシンを共有cntlmし、システムにログインするたびに設定ファイルのADパスワードを更新する必要がある状況を考えてみます。おそらくcntlm、ユーザーがログインするたびに構成ファイルを自動的に更新するために利用できる方法があるでしょう。


NTLMプロキシパスワード(ドメインパスワード)が変更されたときにのみ、cntlm構成ファイルを更新します。
ヨハン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.