プロキシサーバーについて
プロキシサーバの利用用途
・セキュリティ向上
-送信元IP隠蔽
-アンチウイルス、URLフィルタ実装
・Intenetアクセスログの集中管理
・Internet通信の高速化
-HDDディスクへのキャッシュによるInternet通信量削減
httpプロキシ通信シーケンス
工程 | IPヘッダ | TCP/UDPヘッダ | HTTPリクエスト DNSクエリ/レスポンス |
---|---|---|---|
フェーズ1:httpリクエスト | |||
①Client⇒プロキシ | SrcIP:Client DstIP:プロキシ |
SrcPort:Clientランダム DstPort:8080 |
GET http://www.yahoo.co.jp/news/index.html HTTP/1.1 Host:www.yahoo.co.jp |
フェーズ2:名前解決 | |||
②プロキシ⇒DNS | SrcIP:プロキシ DstIP:DNS |
SrcPort:プロキシランダム DstPort:53 |
www.yahoo.co.jp A Record |
③DNS⇒プロキシ | SrcIP:DNS DstIP:プロキシ |
SrcPort:53 DstPort:プロキシランダム |
www.yahoo.co.jp A 2.2.2.2 |
フェーズ3:代理httpアクセス | |||
④プロキシ⇒WEBサイト | SrcIP:プロキシ DstIP:WEBサイト |
SrcPort:プロキシランダム DstPort:80 |
GET /news/index.html HTTP/1.1 |
ポイント
・通常のhttpリクエストの場合、リクエスト行が「GET /news/index.html HTTP/1.1」となるがプロキシへリクエストする場合は、「http://www.yahoo.co.jp/news/index.html HTTP/1.1」となる。
・DNSへの名前解決はプロキシが実施する。
・プロキシサーバの対象となる通信はHTTP・HTTPSなので、ICMPやUDPとは通信経路が異なる
https通信の場合
・TLSは「末端の端末以外は通信内容が分かってはいけない」という大前提がある。
・GETメゾッドではなく、CONNECTメゾッドを使う。
CONNECT www.google.com:443 HTTP/1.1
CONNECTを受けたプロキシの動作
1.Clientに「HTTP/1.1 200 Connection Established」をhttpレスポンス返す。
2.https通信の中身は一切触れず、IPヘッダとTCPヘッダを変更してWEBサーバへ転送する。
https通信のプロキシアクセスログ
・CONNECTメゾットに記載のFQDNのみログに残る
・GETメゾットと異なり、ファイルパスまでは暗号化されており残せない。
[http の場合] GET http://www.example.com/news/index.html
[https の場合] CONNECT www.example.com:443
プロキシの種類
・「明示型」と「透過型」がある。
・ブラウザにプロキシ設定をしておく明示型が主流。
・透過型はブラウザに設定が不要
透過型の実現方法
・経路の少し横に配置し、L3SWのPBRでhttp通信だけ捻じ曲げるのが一般的
・プロキシのFW機能(サーバ)でTCP80をTCP8080に変換し受ける。
メリット | デメリット |
---|---|
・ブラウザにプロキシ設定不要 | ・httpsで証明書エラーが出る。 -ルート証明書配布 -サーバ証明書動的作成 ・PBR設計が必要 ※明示型の場合、CONNECTメゾットを使うため、証明書エラーは出ない。 |
参考
Discussion