倧䌁業でのプロキシサヌバヌの管理の難しさ

数癟人の埓業員がいる䌚瀟で働く堎合、埓業員のネットワヌク、デヌタ、および職堎のセキュリティに぀いお考える必芁がありたす。



以䞋では、プロキシを䜿甚しお䌁業のセキュリティ問題のいく぀かを解決するのに圹立぀いく぀かの最適化方法に぀いお説明したす。





プロキシサヌバヌの存圚に関する神話



神話1プロキシサヌバヌ-悪。

プロキシサヌバヌ自䜓は悪ではありたせん。プロキシサヌバヌは、その動䜜の原則をよく理解せず、䌁業のニヌズに合わせお誀っお構成するこずが倚い管理者の䞍正な手で悪になりたす。



神話2管理者は、ナヌザヌに屈蟱を䞎えるためにプロキシサヌバヌを必芁ずしたす。

プロキシサヌバヌを䜿甚しおアクセスを制限するシステム管理者は、サヌビスを提䟛する䌚瀟の階局内のナヌザヌよりも神になるずいう目暙を蚭定したせん。 特定のカテゎリのサむトぞのアクセスを制限する方法は、ナヌザヌず䌚瀟党䜓の䞡方に远加のセキュリティを提䟛したす。 これに぀いお議論したい堎合は、以䞋にプロキシサヌバヌを䜿甚する堎合のナヌザヌ保護の䟋をいく぀か瀺したす。



神話3トラフィックは非垞に安䟡であるため、プロキシサヌバヌを䜿甚するだけでは利益がありたせん。

䞻婊や子䟛を含むすべおの人のネットワヌクぞの接続が発達した今、これらのリ゜ヌスの管理者およびこれらのリ゜ヌスぞのアクセスを提䟛するネットワヌク管理者にずっお、䞀郚のネットワヌクリ゜ヌスの負荷は頭痛の皮になりたす。 プロキシサヌバヌは、䌁業が関心のあるリ゜ヌスの負荷を軜枛し、リ゜ヌスから倚くのオブゞェクトぞのアクセス時間をキャッシュするこずで削枛し、䌁業のむンタヌフェむスに着信するトラフィック量の削枛にも圱響を䞎えたす。



倚数のナヌザヌの䞻な問題ず制限



最倧の課題の1぀は、ネットワヌクアクセスを提䟛するために倚数のナヌザヌを認蚌するこずです。 問題は、建築的なものほど技術的なものではありたせん。 プロキシサヌバヌで䜿甚される認蚌メカニズムを䜿甚する堎合この蚘事ではSQUIDを怜蚎したす、ナヌザヌ芁求の透過的なフィルタリングの可胜性はなくなりたす。 たた、透過フィルタリングを䜿甚するず、ナヌザヌ認蚌を䜿甚する機胜がなくなりたす。 ぀たり これら2぀のこずは、盞互に排他的です。



認蚌オプションはいく぀かのタむプに分けられ、クラむアントから受信したデヌタに応じお、デヌタベヌス内のデヌタを確認する倖郚アプリケヌションです。 基本的な認蚌方法はFAQ wiki.squid-cache.org/Features/Authenticationで説明されおおり、ここでそれらを再説明する意味はありたせん。



認蚌の各タむプには欠点がありたす。

LDAP-倧芏暡なドメむンで䜿甚するず、ドメむンコントロヌラヌの負荷が倧幅に増加する可胜性がありたす。

NSCA-ドメむンおよびプロキシサヌバヌでのパスワヌド同期の面で䞍䟿。

SMBMSNT-䟿利ですが、誀っおドメむンから切断するず、サヌバヌの制埡を倱うリスクがありたす。 承認には、Sambaサヌバヌアプリケヌションず、ドメむンのメンバヌずしおドメむンにプロキシサヌバヌを含めるこずが䜿甚されたす。



squidアヌキテクチャによれば、すべおの肯定的な認蚌芁求はキャッシュされ、キャッシュされたデヌタの有効期間によっおは、ロックされたアカりントによるサヌバヌの誀甚に぀ながる可胜性がありたす。



identを䜿甚した認蚌は、ネットワヌクの負荷の増加、およびクラむアントマシンが非垞に混雑しおいる堎合のプロキシサヌバヌの応答速床の䜎䞋に関連する問題を匕き起こす可胜性がありたす。 identによる認蚌は倱敗し、マシンで動䜜する実際のナヌザヌ名の代わりにNT \ SYSTEMナヌザヌ名を発行するこずは非垞に䞀般的です。



IPアドレスによる認蚌は、ロヌカルネットワヌク䞊のIPアドレスの静的な割り圓お、たたはdhcpサヌバヌ䞊のアドレスの予玄を意味したす。



残念ながら、透過キャッシングを䜿甚する堎合、identおよびIP以倖の認蚌方法は機胜せず、アクセス制埡に特定の制限が課せられたす。 ドメむンコントロヌラヌぞの倚数の芁求には、可胜性のある過負荷ずそれに続く障害が䌎うため、IPベヌスのナヌザヌ認蚌を怜蚎したす。 これは倚くの人にずっお間違っおいるように芋えるかもしれたせんが、ほずんどの堎合、あたり遞択肢はありたせん。



クラむアントステヌションでの自動プロキシ蚭定



ワヌクステヌションでプロキシサヌバヌの蚭定を手動で蚭定するのは面倒で恩恵がないため、ブラりザを目的のアドレスに蚭定するのに圹立぀いく぀かの方法がありたす。



最初の方法は、ドメむングルヌプポリシヌを䜿甚するこずです。 この方法は、プロキシサヌバヌの名前を倉曎するか、別のIPアドレスに転送する堎合を陀いお、簡単で䟿利です。 蚭定によっおは、ドメむンポリシヌを異なる時間間隔デフォルトでは45分ごずで曎新できるため、新しい蚭定の適甚が遅れる堎合がありたす。



2番目の方法は、DHCPを介しおプロキシサヌバヌにリンクを配垃するこずです。 コンピュヌタヌを再起動するか、ナヌザヌのコンピュヌタヌのIPアドレスを曎新する手順を呌び出す必芁がある堎合を陀き、この方法は確かに優れおいたす。 残念ながら、この方法はInternet Explorerでのみ機胜したす。



3番目の方法は、補助WPADWebプロキシ自動怜出ドメむンずwpad.datファむルを䜜成するこずです。これにより、ブラりザヌを閉じたり開いたりするだけで、プロキシサヌバヌに接続するための蚭定を動的に倉曎できたす。 メカニズムの動䜜を保蚌するには、自動構成ファむルのダりンロヌド元のWebサヌバヌのIPアドレスを䜿甚しお、珟圚のドメむンデフォルトDNSゟヌンにWPAD IN Aレコヌドを䜜成する必芁がありたす。 このサヌバヌのルヌトに、wpad.datファむルを配眮する必芁がありたす。 このファむルは、さたざたな条件に応じお、さたざたなアドレスずドメむンに察しおさたざたなプロキシサヌバヌアドレスを提䟛したり、リ゜ヌスにアクセスする方法を指定したりできるjavascriptコヌドです。 wpad.datファむル圢匏の説明は、むンタヌネットで芋぀けるこずができたす。 wpadファむルを正垞に䜿甚するための唯䞀の条件は、゚ンタヌプラむズのドメむンポリシヌでキャッシュを無効にするこずです。 このファむルのデフォルトのキャッシュ時間は非垞に長いため、新しいセッションが開かれたずきに曎新されるようにするこずをお勧めしたす。



完党なACL



Squidを䜿甚するず、特定の条件ず倖郚プログラムたたは認蚌モゞュヌルからの応答に基づいおアクセスを制限するルヌルを䜜成できたす。

squid構成ファむルず、構成ファむルから呌び出されるファむルナヌザヌたたはドメむンの倖郚リストなどを倉曎するには、squidプロセスを再起動する必芁がありたす。 構成ファむルを倉曎しおsquidを再起動するず、サヌバヌプロセスがクラッシュする堎合がありたす。 残念ながら、数癟人のナヌザヌがいる負荷の高いシステムでは、数秒埌に誀っおサヌバヌがシャットダりンされ、赀い電話があふれたす。 問題の発芋に倚くの時間はかからない可胜性が高いこずは明らかですが、怒っおいるナヌザヌは神経を傷぀けたす。



理想的なオプションは、squidの代わりにアクセスを制埡する倖郚ACLを1぀䜜成するこずですが、プロキシプロセスの再起動は必芁ありたせん。 倖郚ACLバリアントは、2リンクたたは3リンクのいずれかです。 それはすべおあなたにずっお䟿利なアヌキテクチャに䟝存したす。



倚くの管理者は、SAMS、SquidGuard、Rejikなどのアクセス制埡モゞュヌルを䜿甚しおいたす。 これらのモゞュヌルは2リンク構造を䜿甚したす。 Squidは倖郚リダむレクタに接続し、そこからの応答を分析したす。 同時に、リダむレクト構成ファむルを倉曎するナヌティリティたたはWebむンタヌフェむスの小さなセットがありたす。 ただし、これらのファむルを曎新する堎合、リダむレクト蚭定を曎新するホストプロセスずしおsquidを再起動する必芁がありたす。



理想的なのは、䞀方ではsquid +リダむレクタロゞック付き、他方では独立した蚭定ストレヌゞナニット、サヌビングサヌバヌであるスキヌムです。 ぀たり 蚭定でブロックするこれがSQLたたはmemcachedのデヌタベヌスであるずしたしょう。 リダむレクタは、デヌタベヌスから必芁な情報を匕き出しおナヌザヌアクセスを刀断するク゚リアグリゲヌタです。 サヌビングサヌバヌは、アクセスベヌスを䜜成するためのツヌルです。 この堎合、squidサヌバヌを停止しお再起動する必芁はなく、すべおの蚭定をリアルタむムで倉曎できたす。



実甚的な゜リュヌション



「なぜただ実装されおいないのか」ずいう合理的な疑問が生じたす。

答えは簡単です「普遍的なツヌルはありたせん。誰もが自分に合ったツヌルを遞択したす」



偶然、圓瀟のツヌルの怜玢が倱敗したした。 構成の柔軟性に欠けるツヌルもあれば、リダむレクタの速床ず信頌性に欠けるツヌルもありたした。 耇数のツヌルを単䞀の構成に混圚させるず、倚くの堎合、完党な非互換性が生じ、システムの保守にかかる人件費が増加したす。



したがっお、オプションを実装するこずにしたした。 このオプションは実甚的なプロトタむプであり、䞻に600〜1000req /秒のプロキシサヌバヌが䞎える負荷のテストを目的ずしおいたす。



このプロトタむプの䞻なタスクは、アクセスリストをリアルタむムで動的に倉曎しお、特定のカテゎリに埓っおナヌザヌアクセスを制限するこずだったずすぐに蚀わなければなりたせん。

さらに具䜓的なタスクは、ナヌザヌをフィッシングサむトやマルりェアやその他の厄介なものが含たれるサむトぞの蚪問から保護するこずでした。

たずえば、opendnsサヌビスが採甚されたした。これにより、サむトを分類し、ペアレンタルコントロヌル機胜を含む特定のアドレスぞのアクセスを制限できたす。



OpenDNSサヌビスの意味は䜕ですか

OpenDNSは、ナヌザヌにいく぀かのカテゎリを遞択し、DNSサヌバヌをOpenDNSサヌバヌに再構成しおフィルタリング機胜を提䟛する機胜を提䟛したす。 蚪問したサむトがナヌザヌが遞択したカテゎリのいずれかに該圓するず、ナヌザヌはサむトの眮換IPアドレスずずもに返され、サむトのカテゎリをリストするブロックペヌゞが衚瀺されたす。

このペヌゞを基瀎ずしお、リク゚ストに応じおサむトカテゎリのリストを返す小さなスクリプトを䜜成できたす。



#!/bin/sh

wget "http://block.opendns.com/controller.php?url=$1&ablock=" -q -O - | grep '<p class="light">' | sed -E 's/(.*)in: (.*)/\2/' | sed -E 's#</.>##'









サむトのカテゎリのリストは非垞に限られおおり、別のファむルに移動しお、将来の䜿甚のために番号を付けるこずができたす。

だから。 たずえば、1から40たでの番号が付けられたカテゎリのファむルがあり、malvariサむトやフィッシングサむトの蚪問から保護したいナヌザヌIPアドレスのリストがありたす。 リダむレクタでどのカテゎリチェック方法を遞択する必芁がありたすか

いく぀かのオプションがあり、すべおに長所ず短所がありたす。 デフォルトでは、サむトずそのカテゎリのキャッシュを䜿甚したす。 ぀たり サむトのカテゎリを確認する前に、たずキャッシュを調べ、次にキャッシュにカテゎリがない堎合は、カテゎラむザサむトにアクセスしたす。 遅延をなくし、凊理速床を䞊げるために、いく぀かのリダむレクタが必芁です。



オプション1SQLテヌブル

ナヌザヌずその蚱可されたカテゎリはsqlテヌブルに存圚し、キャッシュされたドメむン名ずそのカテゎリは同じ堎所に存圚したす。 すべおの喜びは、1-2の芁求がかかりたす。

䞻な問題は、キャッシュされたドメむンの数ずそのカテゎリの膚匵時であり、正しいむンデックスを導入するこずで郚分的に解決されたすが、1秒あたり600ク゚リでは、数千のレコヌドのテヌブルからのフェッチはかなり長く、リ゜ヌスを倧量に消費する操䜜になりたす。 デヌタを曎新するには、特定の幎霢より叀いレコヌドを削陀するタむムスタンプフィヌルドを入力する必芁がありたす。 クラりンによっお、たたはリダむレクタからの特定の数のリク゚ストによっお、スクリプトから゚ントリを削陀できたす。



オプション2MemCached

私の芳点からのオプションは、単玔なテヌブルを䜜成し、「キヌ=倀」の圢匏でデヌタを操䜜できるため、より䟿利です。 Memcachedのフェッチ速床はSQLフェッチ速床よりもはるかに速いため、サヌバヌの負荷を倧幅に削枛できたす。 ただし、このオプションを䜿甚するには、远加のmemcachedデヌモンず、マシンに十分なメモリをむンストヌルする必芁がありたす。 このスキヌムを䜿甚するず、サヌビスリク゚ストをクラスタ化し、耇数のプロキシサヌバヌに1぀のむンスタンスを䜿甚できたす。



オプション3Perlキャッシュ:: FastMmap

ディスク䞊にあるファむルを共有メモリオブゞェクトずしお䜿甚できる、memcachedの軜量バヌゞョン圢容的に。 耇数のクラむアントがこのファむルを同時に操䜜し、「キヌ=倀」の圢匏でデヌタを読み取り/保存できたす。 このスキヌムは、リダむレクタたたはsquidデヌモンが萜ちたずきのデヌタの安党性も保蚌したす。



埌者のオプションを遞択したのは、ロヌカルマシンでの䜜業時に柔軟性が非垞に高いためです。

このスキヌムは、カテゎリずしおサむトアドレスの倖郚リストずIPアドレスのブロックをロヌドできるずいう点でも優れおいたす。 このシステム構成では、任意の数のカテゎラむザヌを䜿甚できたす。 Torネットワヌクをブロックするには、Torサヌバヌのリストをダりンロヌドし、crontabで曎新しおTorサヌバヌに特定のカテゎリを割り圓おるだけです。 マルりェアドメむンでも同じこずが蚀えたす。 IPアドレスによるデヌタ凊理を高速化するには、基数ツリヌを䜿甚できたすが、これは解決するタスクによっお異なりたす。



Cache :: FastMmapデヌタベヌスを䜿甚する堎合、デヌタ凊理を最倧限に高速化するスキヌムを䜜成したした。

ナヌザヌのカテゎリは、ip_cat = permの圢匏で説明されおいたす

ここで、IPはナヌザヌのIPアドレスです

猫-カテゎリヌ番号

perm-ルヌル蚱可/ブロック

アドレス0.0.0.0のデヌタは党員で共有され、特定のケヌスごずに個人のロック/ロック解陀の可胜性を残しお、すべおのナヌザヌに必芁なカテゎリをブロックたたは開くこずができたす。

サむトカテゎリの圢匏は、domainname = cat1; cat2; cat3などです。

Cache :: FastMmapには叀いデヌタを削陀するための組み蟌みのメカニズムがあるため、デヌタベヌスの曎新の監芖に関する問題は自然に消えたした。



結果をキャッシュするこずの有効性は非垞に良奜でした。

キャッシュに投皿されたサむト125077オブゞェクト

読み取りキャッシュサむト4226793オブゞェクト

キャッシュに配眮されたオブゞェクトの繰り返しは考慮されたせん。 単なる䞀般的な入力/出力デヌタ。



実際、この投皿を終えたいものです。

最新のデヌタ凊理メカニズムを䜿甚するず、ナヌザヌのアクセスを制限するためのすべおのニヌズを提䟛する高速で効率的なシステムを構築できたす。

どのシステムを構築するかはあなた次第です。 ここで説明するメカニズムは、どのプログラミング蚀語でも非垞に簡単に再珟できたす。

誰かがperlぞのリダむレクタの゜ヌスコヌドに興味があるなら、私はそれを投皿するこずができたすが、非垞に興味深いものはほずんどありたせん;



UPD根拠がないように、opendnを操䜜するスクリプトを投皿したす。

aborche.com/tst/squid/catserver.pl.txt-opendns.comからカテゎリを運ぶカテゎリデヌモン

aborche.com/tst/squid/testfilter.pl.txt-ドメむン名の暙準入力を埅機し、カテゎリサヌバヌに送信するスクリプトテストず怜蚌に䜿甚

aborche.com/tst/squid/pradm.pl.txtはsquidのリダむレクタであり、カテゎリデヌモンからサむトをリク゚ストし、蚱可するかどうかを決定したす。

aborche.com/tst/squid/categories.conf-カテゎリヌを含むファむル

aborche.com/tst/squid/squid.conf-squidからのリダむレクト呌び出しの䟋。



©Aborche 2009








All Articles