web-dev-qa-db-ja.com

Squidを使用したHTTPリクエストヘッダーの追加

ユーザーが自分のドメインのGoogleアプリにのみログインすることを許可したい。 このGoogleヘルプページ で説明されているように、HTTPヘッダーX-GoogApps-Allowed-Domainsを追加して解決策を見つけました。

私はSquidを使用していますが、これを行うようにSquidを構成する方法がわかりません。 Squidを使用してこのリクエストヘッダーを追加するにはどうすればよいですか?

5
boblin

コマンド「request_header_add」をサポートする新しいSquid 3.3でできますか?私はそれをするためにCentOSを使いました。

私のSquid.confは:

acl CONNECT method CONNECT
visible_hostname MySERVER.local
acl local src 192.168.0.0/24
http_access allow local
ssl_bump client-first all
always_direct allow all
http_port 3128 ssl_bump generate-Host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/usr/local/squid/etc/cert.pem
request_header_add X-GoogApps-Allowed-Domains "mycompany.com" all
cache_dir ufs /usr/local/squid/var/cache 8192 32 256

SSL証明書の場合、openSSLで生成する必要がありますか?

openssl req -new -newkey rsa:1024 -days 36500 -nodes -x509 -keyout /usr/local/squid/etc/cert.pem -out /usr/local/squid/etc/cert.pem 

ユーザーがブラウザーでエラーを表示できない場合は、これを各コンピューターで信頼されたルートとしてインストールするか、Active Directoryに追加します(Googleがこれに役立つ場合があります)。

openssl x509 -in /usr/local/squid/etc/cert.pem -outform DER -out /usr/local/squid/etc/cert.der

Squid FAQ に従って:

Squid.conf ACL

Squid ACLによるヘッダーの変更は、ヘッダーの削除または一致するヘッダーの定数文字列への置換に限定されています。

つまり、Squid ACLを使用するだけでは、任意のリクエストヘッダーを追加することはできません。 Squid ACLは、既存のヘッダーの削除または既存のヘッダーの置き換えに制限しますが、新しいヘッダーの追加は許可しません。新しいヘッダーを追加する唯一の方法は、ICAPサーバーをSquidと併用することです。詳細については、Squid FAQの ICAPセクション を参照してください。

3
Richard Keller

イカを使用すると、次のことができます。

  1. 動的SSL証明書の生成を設定 。ルート証明書をWebクライアントのブラウザーにインストールします。
  2. プロキシされたSSL/TLSトラフィックをインターセプトするようにSSLバンプを設定
  3. ACLs から 目的のヘッダーを挿入 を使用します。
1
Michael Hampton

そのため、WebプロキシとICAPサーバーを組み合わせてこれを行うことができます。 ICAPのSquid ProxyとGreasySpoonに最も精通しています。 Squid v3.2.1とGreasySpoon 1.0.8を使用しています。

  • イカ: http://www.squid-cache.org/
  • GreasySpoon:機能しなくなった! :(アイデアは他のICAPサーバーでも同じですが、実装は異なります。これは以前はsourceforgeでホストされていたため、おそらく Wayback Machine がそれを持っています。

イカの設定

とにかく、標準のキャッシュとして機能するようにSquidを構成します。次に設定例を示します。適切なSquid設定の詳細については、そこにある広範なドキュメントをチェックしてください。この質問で気になるセクションは# ICAP Configurations下部にあります。

cache_effective_user squid
cache_effective_group squid

acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12  # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7       # RFC 4193 local private network range
acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines

acl SSL_ports port 443
acl Safe_ports port 80      # http
acl Safe_ports port 81      # http - public
acl Safe_ports port 21      # ftp
acl Safe_ports port 443     # https
acl Safe_ports port 70      # Gopher
acl Safe_ports port 210     # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280     # http-mgmt
acl Safe_ports port 488     # gss-http
acl Safe_ports port 591     # filemaker
acl Safe_ports port 777     # multiling http
acl CONNECT method CONNECT

http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

http_access deny blocksites
http_access allow localnet
http_access allow localhost

http_access deny all

http_port 3128 transparent

# Leave coredumps in the first cache dir
core dump_dir /var/cache/squid

# ICAP Configurations
icap_enable on
icap_preview_enable on
icap_service service_req reqmod_precache bypass=0 icap://127.0.0.1:1344/reqmod
adaptation_access service_req allow all
icap_service service_resp respmod_precache bypass=0 icap://127.0.0.1:1344/respmod
adaptation_access service_resp allow all

私が使用したICAPサーバーは、squidプロキシと同じホスト上にあったため、127.0.0.1を使用したことに注意してください。プロキシとICAPが異なるホスト上にある場合は、ループバックを他のサーバーのIPまたはサーバー名に交換してください。

ICAP構成

これは簡単な部分です。

繰り返しになりますが、私は今では使用されなくなった「Greasy Spoon」ICAPサーバーを使用しています。私はそれが非常に簡単であることがわかり、最小限の頭痛で私が望んだことをしました。また、他のオプションも利用できますが、Javaプラグイン機能を使用します。

GreasySpoonの場合、HTTPリクエストをターゲットとする小さなJava JavaScriptではありませんが、多くのICAPサーバーで可能です)を作成し、必要なヘッダーを追加しました(先頭のコメントに注意してください) GSサーバーにメタデータを提供します。おそらく他の人には必要ありません):

//------------------------------------------------------------------- 
// ==ServerScript==
// @name            Add_Header
// @status on
// @description     
// @include        .*
// @exclude        
// @order           0
// ==/ServerScript==
// --------------------------------------------------------------------

public void main(HttpMessage httpMessage){
    // Add the "my-header" header with a value of "test.server.com"
    httpMessage.addHeader("my-header", "test.server.com");
}

これにより、my-headerヘッダー要素がすべてのリクエストに追加されます。

0
Lorin S.

Squidを使用してカスタムヘッダーを追加することは非常に困難です。私は試しましたが失敗しましたが、次の方法を使用して消費者アカウントをブロックする別の解決策を見つけました:

  1. burpスーツをダウンロード (カスタムヘッダーを追加できるスタンドアロンプ​​ロキシ)。
  2. 私が書いたこの記事を読みます: http://computech.in/2013/09/block-access-to-consumer-gmail-accounts-but-allow-google-apps/

小さな組織では、Burpプロキシの方が優れていると思います。これが現在使用されているものです。

0
jacob justin

どうやらICAPで行うことができます

サーバー: http://icap-server.sourceforge.net/irml.html

クライアントはsquid3にあります: http://ftp.meisei-u.ac.jp/mirror/squid/squid-3.0-RELEASENOTES.html#ss4.1

上からの設定:(squid.conf)

icap_enable on
icap_service service_req reqmod_precache 1 icap://127.0.0.1:1344/request
icap_service service_resp respmod_precache 0 icap://127.0.0.1:1344/response
icap_class class_req service_req
icap_class class_resp service_resp
icap_access class_req allow all
icap_access class_resp allow all

次に、宛先ドメインに基づいてヘッダーを変更するかどうかを決定するようにサーバーを構成します。

????+

利益?これを行うルールの書き方を理解できません。たぶん、もっと運がいいでしょう。

0
Grizly