linux:http-proxy
no way to compare when less than two revisions
差分
このページの2つのバージョン間の差分を表示します。
— | linux:http-proxy [2018/10/08 23:09] (現在) – 作成 Wiki Editor | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== HTTP PROXY構築 ====== | ||
+ | ===== 目的 ===== | ||
+ | プロキシサーバ構築の目的はいろいろあるが、ここでは外部へのWebアクセスの踏み台の役割を果たすサーバの構築を行う。プロキシサーバ無しのアクセスだと、直接接続しているネットワークからアクセス先にダイレクトにアクセスするため、直接接続したネットワークの管理者にはどこにアクセスしているのかや、httpsが無ければどんなデータが流れているのかを知られてしまう。それを回避するためにプロキシサーバを利用する。 | ||
+ | |||
+ | httpsならば問題ないが生のhttpでは、プロキシサーバを経由しても通信内容を読み取られるため、プロキシを経由してどこにアクセスしているかは監視される。そこで、プロキシサーバまでのすべての通信を暗号化し、足元のネットワーク管理者にどこにアクセスしているかを知られないようにする。なぜそのようなことが必要かといえば、とりあえず足元のネットワークが怪しい場合などのセキュリティ対策など。。。 | ||
+ | |||
+ | ===== 構成 ===== | ||
+ | ブラウザはfirefoxを想定する。ブラウザからプロキシサーバまではhttp/ | ||
+ | |||
+ | |||
+ | ==== nghttpx ==== | ||
+ | フロントエンドとなるhttp/ | ||
+ | |||
+ | nghttp2パッケージをインストールする。「utils」USEフラグを有効にしないと、nghttpxコマンドなどはインストールされない。ちなみに、apache2で「http2」USEフラグを有効にすると、nghttp2が依存関係でインストールされる。apacheのhttp2にはnghttp2が利用されているらしい。 | ||
+ | |||
+ | > emerge -av nghttp2 | ||
+ | |||
+ | インストール後は、nghttpxコマンドでhttp/ | ||
+ | |||
+ | > nghttpx -D --user=nobody -s -f' | ||
+ | |||
+ | * -D | ||
+ | * サーバモードで起動する。端末から切り離してバックグラウンドプロセスにする。 | ||
+ | * --user=nobody | ||
+ | * rootユーザではなくnobodyユーザで動かす | ||
+ | * -s | ||
+ | * http2のフォワードプロキシ機能を有効化する | ||
+ | * -f' | ||
+ | * 接続を受け付けるIPアドレスとポートを指定する。「*」も利用できるが、その場合はIPv6やUNIXドメインソケットも含めてすべてで待ち受けようとする。当サイトではIPv6はカーネルレベルで無効化しているので、「*」では起動できない。サーバに指定しているIPv4のIPアドレスを設定する。ポートは何でもよいが、iptablesなどでフィルタリングしていないかなどを確認しておく。 | ||
+ | * -b' | ||
+ | * 実際に外部サイトにアクセスするフォワードプロキシを指定する。ここではローカルホストのapacheで構築するが、squid等でもよい。 | ||
+ | * privkey.pem | ||
+ | * プロキシサーバまでの暗号化のためのssl秘密鍵のパスを指定。 | ||
+ | * fullchain.pem | ||
+ | * 同じく証明書を指定。認証局の証明書も含めたものを指定した。認証局の証明書が含まれていないものは未検証。 | ||
+ | |||
+ | ==== apache ==== | ||
+ | 適当なところに以下の設定を記載する。https側の設定ではなくhttpサーバの設定に書く。 | ||
+ | < | ||
+ | # フォワードプロキシ機能を有効化 | ||
+ | ProxyRequests On | ||
+ | # プロキシ経由のヘッダをつけない(必要に応じて設定) | ||
+ | ProxyVia Block | ||
+ | # プロキシサーバのアクセス制限 | ||
+ | <Proxy " | ||
+ | # フォワードプロキシにアクセスするためにダイジェスト認証をかける | ||
+ | AuthType | ||
+ | AuthName | ||
+ | AuthUserFile | ||
+ | # 認証されたユーザで、かつローカルホストからのみアクセスを許可 | ||
+ | # ORではなくAND条件にするためにRequireAllが必要:apache2.4から | ||
+ | < | ||
+ | Require valid-user | ||
+ | Require ip 127.0.0.1 | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== ブラウザ(firefox) ==== | ||
+ | firefoxの設定画面からでは、http/ | ||
+ | |||
+ | function FindProxyForURL(url, | ||
+ | return "HTTPS PROXY_ADDR: | ||
+ | } | ||
+ | |||
+ | PROXY_ADDRには、nghttpxが起動しているサーバのFQDNを指定する。IPアドレスではなく、証明書に記載されているホスト名にする必要がある。PORTはnghttpxで指定したポート。 | ||
+ | |||
+ | |||
+ | |||
linux/http-proxy.txt · 最終更新: 2018/10/08 23:09 by Wiki Editor