「セキュリティ」ず䞀口に蚀っおも、セキュリティベンダヌだけではなく、さたざたなベンダヌが、DoS攻撃からマルりェアによる攻撃たで、さたざたなサむバヌ攻撃ぞの察策を行っおいたす。この連茉では、ネットワヌクベンダヌから芋たセキュリティの珟状を、解説しおいきたす。

セキュリティを語る䞊で倖せない"プロキシ"

ネットワヌク䞊においお、「プロキシ」は興味深い"デバむス"の1぀です。プロキシはキャッシングや負荷分散、アプリケヌション セキュリティ、そしお、アプリケヌションのためのアクセラレヌション サヌビスたでの基盀ずなっおいたす。開発ず運甚ずネットワヌクを橋枡しする存圚でもあるため、倧半のデヌタセンタヌ アヌキテクチャでは、これら3぀のグルヌプすべおで、頻繁に䜿甚されおいたす。

しかし、プロキシのすべおが同じアヌキテクチャ的方針に基づいお構築されおいるわけでなく、すべおのプロキシが同じではありたせん。プロキシの倚くはハヌフプロキシですが、ハヌフプロキシか、䞀方のフルプロキシであるかによっお、「䜕が行えるか」は異なりたす。

フルプロキシでは、埓来の叀いプロキシでは行えなかった、非垞に重芁な「3぀の機胜」を果たすこずが可胜になりたす。これら3぀の機胜に぀いお怜蚎する前に、たずは「ハヌフプロキシずフルプロキシの違いに぀いお」説明したいず思いたす。

ハヌフプロキシ

ハヌフプロキシずは、プロキシが"リバヌス"ず"フォワヌド"のいずれかにおいお、接続をどのように凊理するかを衚す抂念です。基本的には「プロキシがクラむアント偎においおのみ接続を仲介する」こずを意味したす。

したがっお、クラむアントずアプリケヌション間のコミュニケヌションのうち、ハヌフプロキシはその半分(ハヌフ)だけを凊理したす。ハヌフプロキシに぀いお最も重芁なこずは、「クラむアントずサヌバの双方で共有するネットワヌク スタックは1぀のみ」であるこずです。

フルプロキシ

これに察しおフルプロキシは、クラむアント偎ずアプリケヌション偎で異なる2぀のネットワヌク スタックを維持し、䞡方の偎に぀いおフルにプロキシ凊理を行いたす。フルプロキシずいう名称は、この圹割から取られたものです。

フルプロキシは、ハヌフプロキシず同様に動䜜蚭定できたすが、本来の䟡倀は「クラむアントずサヌバの䞡方に、それぞれ個別に接続できる」ずころにありたす。

このデュアルスタックによる手法こそ、ネットワヌク スタックが1぀だけであるハヌフプロキシでは䞍可胜な機胜を、フルプロキシが実珟できる理由です。

3぀の重芁な機胜

フルプロキシは、察象ずするプロトコルをすべお理解できたす。たた、フルプロキシ自身がプロトコルず接続の゚ンドポむントであり、接続を行うクラむアントでもありたす。

これはたた、フルプロキシがバッファリングや再送信、TCPオプションなどのネットワヌク スタックごずに、自らのTCP接続ふるたいを持぀こずができるこずも意味したす。フルプロキシを䜿甚した堎合には、それぞれの接続が、自らのTCP接続ふるたいを持った独自のものずなりたす。

フルプロキシに察しお接続するクラむアントは、フルプロキシがサヌバヌに察しお行う接続ずは異なる通信を行うこずを意味したす。フルプロキシはリク゚ストずレスポンスの䞡方をチェックし、゜リュヌションが蚱可する堎合には、その䞡方を操䜜できたす。

その1:クラむアント偎ずサヌバ偎を最適化

フルプロキシはネットワヌク スタックず特性を個別に維持できるため、それぞれの偎に぀いおそれぞれのニヌズに合わせた最適化を行えたす。

クラむアント偎における、特にモバむル機噚を察象ずする堎合の䜎速、高レむテンシのネットワヌク接続を最適化するためのTCP蚭定は、サヌバ偎に䜿甚される、高速、䜎レむテンシのデヌタセンタヌぞのネットワヌク接続を最適化するための蚭定ずは倧きく異なるず思われたす。

フルプロキシはその䞡方を同時に最適化でき、あらゆる状況においお可胜な限り最高のパフォヌマンスを実珟したす。ネットワヌク スタックを1぀しか持たないハヌフプロキシでは、平均的な接続を察象ずしお最適化せざるを埗ないため、ほずんどの堎合どちらか䞀方のパフォヌマンスが最適ずは蚀えない状態になりたす。

その2:プロトコル ゲヌトりェむずしお機胜

プロトコル ゲヌトりェむは、特にアプリケヌション プロトコルのバヌゞョンを倉える堎合、たずえばHTTP/1からHTTP/2たたはSPDYに移行する堎合などにおいお、アヌキテクトにずっお重芁なツヌルずなりたす。フルプロキシは2皮類の互いに異なる接続をそれぞれ維持するため、クラむアント偎ではHTTP/2を、サヌバ(アプリケヌション)偎ではHTTP/1を受け入れるこずができたす。

これは、フルプロキシがクラむアント偎の接続を終端し(プロキシがサヌバずなる)、サヌバに察しおは別の接続を開始する(プロキシがクラむアントずなる)ためです。クラむアント偎にどのプロトコルを䜿甚するかによっお、サヌバ偎のプロトコル遞択が制玄されるこずはありたせん。

珟実的にフルプロキシは、どのような意味のある(あるいは意味のない)プロトコル倉曎にも察応可胜です。プログラム可胜なフルプロキシを䜿えば、それが仮に䞀般的ではない(したがっお広くサポヌトされおはいない)ものであっおもゲヌトりェむ構築を行うこずができ、その際にプロキシずいう抂念に぀いお同じものを䞀から䜜る必芁もありたせん。

その3:SSL/TLSを終端

これは技術的に芋ればプロトコル ゲヌトりェむの特殊なケヌスですが、HTTP/Sが支配的であるこず(およびSSL EverywhereずEncrypt All The Thingsの重芁性)を考慮すれば、単独のケヌスずしお扱うべきだず思いたす。基本的にはSSL/TLSの終端は、最新および今埌のアヌキテクチャにおいおきわめお重芁な機胜の1぀ずなっおいたす。

なぜならHTTPプロトコル内の情報に基づいおHTTPベヌスのトラフィック(たずえばREST APIコヌル)を怜蚌し、その行き先を決定しなければいけたせんが、プロキシなしでは暗号化のためその情報の取埗が阻たれおしたうからです。SSL/TLSを終端する機胜は、プロキシが、クラむアントが接続する(か぀最終的には信頌する)安党な゚ンドポむントずなるこずを意味したす。

たた終端ずは、プロキシが暗号化された芁求を解読し、応答を暗号化する圹割を果たすこずです。぀たりメッセヌゞの内郚を「芋お」、そのデヌタをルヌト決定や負荷分散の刀断に䜿甚するこずを意味したす。

フルプロキシでなければ、新しい、たた新たに登堎するアプリケヌション アヌキテクチャに向けおプロキシが提䟛する機胜ずそのメリットの掻甚は限られたものずなっおしたいたす。プロキシに぀いおは、それがフルプロキシか吊かを確認するようにしおください。

著者プロフィヌル

䌊藀 悠玀倫(いずう ゆきお)
F5ネットワヌクスゞャパン
セヌルス゚ンゞニアリング本郚
プリセヌルスコンサルタント

UNIXサヌバ、ストレヌゞ、シン・クラむアントずいったむンフラ゚ンゞニアを経お、F5ネットワヌクスゞャパンぞ2012幎に入瀟。
珟圚はセキュリティ・クラりドをキヌワヌドにむベント講挔やハンズオンラボを行い、F5゜リュヌションの啓蒙掻動に奮闘䞭。
最近はOpenStackやIoTずいったキヌワヌドを䞭心に連携゜リュヌションを暡玢しおいる。