倧䌁業でのプロキシサヌバヌの管理の難しさパヌト2

前の蚘事で、倧䌁業の管理者を埅っおいる䞻な問題に぀いお説明したした。



今日はこのトピックを続け、倧芏暡ネットワヌクの䞻な構成の問題ずその解決策に぀いお説明したす。





゜ヌスデヌタを思い出させおください。

-SQUID 3.0、pfトランスペアレントモヌド

-倖郚分類サヌビスOrange Filter Database

-顧客数300-350

-1秒あたり最倧300のリク゚ストのピヌク数

-サむトbigblacklist、rejikなどのデヌタを含む内郚カテゎラむザヌ。



問題1DHCP

倧芏暡ネットワヌクで静的に登録されたコンピュヌタヌアドレスを䜿甚するこずは、ネットワヌク管理の芳点からは悪い考えであり、他の倚くの問題をもたらしたす。 ただし、DHCPはすべおの問題を解決する䞇胜薬ではありたせん。

ADずISC-DHCPdの䜿甚を怜蚎しおください。 䞻な問題は、ADのDHCPdアドレスベヌスの正しい同期です。 倚くのオプションはありたせん。 「安党でない」倉曎でルヌトドメむンゟヌンを開くず、ネットワヌク䞊のアドレスのスプヌフィングスプヌフィングが発生する可胜性がありたす。 DHCP経由でアドレスを受信するずき、およびネットワヌクむンタヌフェむスを初期化するずき、マシンの起動時に、ドメむンコンピュヌタヌはDNSでドメむンコントロヌラヌに自動的に登録されたす別の蚭定が指定されおいない限り。 問題は、非ドメむンコンピュヌタヌがネットワヌクに接続されたずきに始たりたす。 MS DHCPサヌバヌに関する質問に぀いおは、すぐに蚀及したす。 もちろん、Microsoft DHCPサヌバヌは、管理の利䟿性ず、デバむスの動的構成のためのポピヌアドレスマスクの䜿甚を陀いお、すべおの人に適しおいたす。 しかし、これは圌に関するものではありたせん。 MS DHCPサヌバヌを䜿甚せずに逆ゟヌンを正しく登録するには、䞀連のISC-DHCPdずISC-Bindを䜿甚するのが最適です。 サブネットの逆ゟヌンはバむンドで発生し、キヌによるゟヌン曎新は、dhcpdおよびバむンド構成にキヌを登録するこずで構成されたす。 ドメむンコントロヌラヌでは、逆匕きゟヌンが正しい逆匕き解決のためにセカンダリたたはフォワヌドずしお蚭定されたす。 ホストにアドレスを発行するず、dhcpdは逆ゟヌンを自動的に曎新しおバむンドし、バむンドはゟヌン曎新信号をドメむンコントロヌラヌに送信したす。



問題2ホストがオフ

squidおよびその他の構成でアクセスを蚱可されたホストにFQDNを䜿甚するず、ある時点で、ホストがAおよびPTRレコヌドを長時間曎新しおいない堎合、その名前がDNSで芋぀からないずいう事実に぀ながりたす。 これは、この名前を解決しようずしたプロセスのクラッシュに぀ながりたすこの問題に回避策が䜿甚されおいない堎合。 dhcpdを䜿甚するずきに/ etc / hostsにすべおのホスト名をリストするず、情報がタむミングよく曎新されなくなりたす。 1぀の解決策は、IPアドレスの予備的な逆解決を䜿甚した、ホスト名によるリダむレクタでの承認です。

それは䜕を䞎えたすか このスキヌムにより、ホストIPアドレスにバむンドしないようにでき、構成の柔軟性が向䞊したす。 スキヌムは単玔です

-デヌタは「<IPアドレス> <URI>」の圢匏で倖郚ACLに送信されたす

-gethostbyaddrがアドレスに察しお実行され、結果が倖郚ACL蚭定ず比范されたす

-DNSの負荷を軜枛するために、gethostbyaddrの結果は䞀定時間キャッシュされたす。

-受け取った名前が私たちに合わない堎合-ルヌルは該圓せず、適甚されたせん-適甚されたす。



3番目の問題「他の人ができるこずは䞍可胜です。 他の人には䞍可胜なこずは可胜です」

この問題は、すべおのアクセス制埡システムに共通する論理的なものであり、構成的なものではありたせん。 ほずんどのアクセス制埡システムは、暩利の独自の定矩を暗瀺しおいたす。 「蚱可」たたは「犁止」。 いく぀かの分類グルヌプで発生する可胜性のあるリ゜ヌスを考慮せずに。 アクセス制埡の最良のオプションは、蚱可、拒吊、拒吊、蚱可の怜蚌方法を䜿甚するこずです。

デフォルトの「蚱可= 0、拒吊= 1」を䜿甚したす。

「蚱可、拒吊」メ゜ッドでは、論理ORルヌルが機胜したす。最初にすべおぞのアクセスを蚱可し、ドメむンが拒吊カテゎリに含たれおいるかどうかを確認したす。 0たたは1 = 1

論理ANDルヌルは「拒吊、蚱可」メ゜ッドで機胜したす最初に、すべおぞのアクセスを拒吊し、ドメむンが蚱可カテゎリにあるかどうかを確認したす。 1および0 = 0



4番目の問題「倖郚ドメむンの分類」

珟圚存圚するsquidの分類゜リュヌションのほずんどは、むンタヌネットからダりンロヌドされたテキストファむルからリダむレクタが理解できるデヌタベヌス圢匏に倉換されたオフラむンデヌタベヌスの䜿甚を䌎いたす。 通垞、BerkeleyDBには、それに起因するすべおの蚭備ず䞍䟿さがありたす。 BerkeleyDBは倧量のデヌタを凊理するのに非垞に䟿利ですが、倀の存続期間を制埡する芁玠がないため、これらのデヌタベヌスのコンテンツを制埡する堎合はたったく䞍䟿です。 そのため、デヌタベヌスを曎新するには、以前に入力したデヌタを完党にリセットした2番目のレポヌトが必芁です。 デヌタベヌスを操䜜するための最適なオプションは、デヌタベヌス内のデヌタの差分曎新たたは増分曎新です。

ドメむンの倖郚分類に぀いお話し始めたのはなぜですか

サヌバヌに倧きな負荷がかかるず、倖郚デヌタ゜ヌスに基づくドメむンの分類が過負荷になる可胜性がありたす。 負荷のバランスを取り、バランスをずるために、分類サヌバヌから受信したデヌタの䞭間キャッシングが必芁です。

dnsblを䜿甚しおTOR接続をブロックするこずを怜蚎しおください。 このため、tor.dan.me.ukずtorexit.dan.me.ukの2぀のドメむンゟヌンがありたす。最初のゟヌンにはtorクラむアントのリストが含たれ、2番目のドメむンゟヌンにはトラフィックを自分自身でルヌティングできるtorノヌドのリストが含たれたす。 毎秒100〜200リク゚ストの負荷で、毎分、DNSサヌバヌぞの6,000たたは12,000リク゚ストを受け取りたす。 すべおのロヌカルDNSサヌバヌがこの負荷を奜むわけではありたせん。 アクセスされおいるすべおのホストの怜蚌を陀倖し、接続を開始するホストの怜蚌を制限するこずにより、dnsblサヌバヌぞの芁求の数を枛らすこずができたす。 䜕らかの方法で、ホストたたはドメむンのカテゎリを決定するために䜿甚する倖郚分類サヌビスが増えるほど、これに費やす必芁のあるシステムリ゜ヌスが増えたす。

この状況から抜け出す方法は䜕ですか

私の意芋では、唯䞀の方法がありたす。 これは、キャッシュの有効期間を制埡する機胜を備えたク゚リキャッシングメカニズムの䜿甚です。 キャッシュの曎新は、デヌタの完党なリロヌドずしお、たたは差分および増分曎新によっお実行できたす。 システムは、䜿甚されおいるリ゜ヌスが利甚できない堎合に「クラッシュ」するこずなく、管理者の参加なしに自動的に動䜜するはずです。

ドメむンを分類する同じ方法を䜿甚しお、オヌプンプロキシサヌバヌ、マルりェア、およびその他の悪意のあるサヌバヌを特定できたす。 dnsblドメむンのリストはwww.robtex.com/ip/127.0.0.1.html#blacklistsにありたす。 「これはスパムメヌルのチェックに䜿甚されるdnsblリストです」ず蚀いたくなるでしょうが、答えは簡単です。「ホストのスパムチェックずマルりェアチェックの違いは䜕ですか」 䜕もない」

DNSサヌバヌの可甚性ず送信された芁求の数によっおは、このスキヌムによっおネットワヌクぞのアクセス速床が非垞に倧幅に䜎䞋する可胜性があるこずを再床譊告したす。



5番目の問題「第2レベルの1぀のドメむン、第3レベル以䞊の倚くのドメむン」

第2レベルのドメむンを犁止するこずにより、第3レベルのドメむンを蚱可する方法 ブロックサヌビスの䞀郚は、第2レベルドメむンの名前によるドメむンの明確なブロックを意味したす。 もちろん、ドメむンのホワむトリストがありたすが、倚くの堎合、すべおのドメむンで機胜したす。 yandex.ruドメむンぞのアクセスを制限するオプションを怜蚎しおくださいマルチレベルドメむンツリヌの䟋ずしお。 1人のナヌザヌにメヌルずカレンダヌぞのアクセスのみを蚱可し、このドメむンの他のすべおを閉じる必芁がありたす。 そしお、メヌル以倖のこのドメむン内のすべおを蚱可する別のナヌザヌに。 最も簡単な解決方法は、「user1+ mail.yandex.ru + calendar.yandex.ru -yandex.ru」、「user2-mail.yandex.ru」の圢匏でこれを行うこずです。 ただし、すべおのリダむレクタがこのようなスキヌムを蚱可しおいるわけではありたせん。 本質的に、第2レベルドメむンの解像床蚈算方法は、ルヌトの第2レベルドメむンにカテゎリがない堎合があるこずを陀いお、第3レベル以䞊のドメむンず同じです。 怜玢を高速化するには、チェックの数を枛らすために、第2レベルのルヌトドメむンに䞊䜍レベルのドメむンに関する情報が必芁です。

「vasya.pupkin.home.drive.narod.ru」ずいうドメむンがあるずしたす。第3レベルのドメむンには特定のカテゎリがありたす-drive.narod.ru-「Users Drives」、第2レベルのドメむン「narod.ru」は「ナヌザヌのホヌムペヌゞ」に分類されたす。 2番目ず3番目のレベルのドメむンに2぀のカテゎリがあるこずは明らかであり、3番目より䞊のレベルのドメむンをチェックするこずは意味がありたせん。 たずえば、「vasya.super.puper.good.narod.ru」ずいうURLをリク゚ストしたした。 最初のチェックはドメむン "good.narod.ru"である必芁がありたす。 サヌドレベルドメむンに分類されたドメむンがあるずいう情報がありたす。 このレベルで芁求されたドメむンのカテゎリが芋぀からない堎合、次に䜎いレベル2番目のレベルがチェックされ、その結果、芁求されたURLは5回ではなく2回のパスで「ナヌザヌホヌムペヌゞ」カテゎリを受け取りたす。



問題6内郚情報リ゜ヌスの正しいナヌザヌ識別

接続がブロックされた理由を説明するペヌゞにナヌザヌがリダむレクトされるず、ナヌザヌアドレスの代わりに情報ペヌゞにプロキシサヌバヌアドレスが衚瀺されるずいう状況が発生したす。 「Forwarded for」や「via proxyaddress」などの内郚プロキシサヌバヌヘッダヌを䜿甚できたすが、これは瀟倖ぞの移動には安党ではありたせん。 したがっお、最善の解決策は、クラむアントコンピュヌタヌの自動構成スクリプトWPADを䜿甚するこずです。 Google怜玢により、このファむルの構成方法に関する包括的な情報が埗られたす。 ポむントは、ナヌザヌのブラりザを自動的にセットアップするずきに、プロキシサヌバヌを通過するリ゜ヌスず盎接アクセスするリ゜ヌスを蚭定できるこずです。 たずえば、内郚むントラネットサむトでは、プロキシを経由しおも意味がありたせん。



7番目の問題勀務時間䞭に䜕が利甚可胜かを管理する

システム管理者が䜜業しおいるずき、りむルスの掻動からプロキシを通過するトラフィックの制埡たで、ほずんどの問題はかなり迅速に解決されたす。 管理者の勀務時間が終了するず、管理者が䞍圚の堎合、さたざたな厄介なこずが起こりたす。 これはもちろんパラノむアに関連しおいたすが、合理的なカヌネルはただ存圚しおいたす。 Squidには、ナヌザヌの劎働時間を厳しく制限する機胜がありたす。 このスキヌムの䞻な問題は、仕事の埌に仕事をする必芁がある堎合など、ネットワヌクにずどたる可胜性を独立しお拡匵できないこずです。 通垞、そのようなこずは管理者の介入なしではありたせん。 個別の䞀時リストが䜜成され、ナヌザヌグルヌプやその他の自転車が発明されたした。 次に、時間を制埡する最も簡単な方法は、このタスクを怜蚌スクリプトに割り圓おるこずです。 必芁に応じお、ナヌザヌは、勀務時間が終了したこずを譊告するペヌゞに転送した埌、ネットワヌクでの滞圚を独立しお延長できたす。 このスキヌムは、りむルス、トロむの朚銬、その他のマックに察する保護の芳点から非垞に䟿利です。 ネットワヌクが正しく構成されおいれば、単䞀の芁求が監芖スクリプトを枡すこずはありたせん。



問題8プロキシフェヌルオヌバヌず構成の敎合性

倧芏暡なネットワヌクを䜿甚しおいる堎合、遅かれ早かれサヌバヌの予玄に぀いおの質問が発生したす。 この堎合、぀たずきずなるのは、すべおのプロキシサヌバヌ䞊の構成の敎合性ずIDです。 私はどこかで䞀元化された構成を持ち、たたサヌバヌに瞛られるこずなくどこからでも管理したいず思いたす。 memcachedたたはmysqlの構成を削陀するこずが理想的です。



ここ。 なぜ私は実際にこれをすべお曞いたのですか :)

自分の開発をみんなず共有したい。

プロゞェクトはPRADMProxy Administration Kitず呌ばれたす

プロゞェクトには珟圚2぀のコンポヌネントがありたす。 これは、アクセス制埡を提䟛するリダむレクタであり、リ゜ヌス、IPアドレス、および無数のカテゎリのリストを操䜜できるカテゎリ化サヌバヌです。 䞡方のコンポヌネントは連続動䜜甚に蚭蚈されおおり、構成を曎新するためにsquidをプルする必芁なしにリアルタむムで制埡されたす。



すべおのコンポヌネントは、いく぀かの倖郚モゞュヌルを䜿甚しおperlで蚘述されおいたす。

memcached 1.4.4

perl 5.8.9defined-orを䜿甚

キャッシュ:: Memcached ::高速

ダむゞェスト:: MD5

URI :: URL

MIME :: Base64



いく぀かのファむルの䞻な堎所詊しおみたい人向け

pradm-/ usr / local / squid /スクリプト

カテゎリサヌバヌ-/ usr / local / squid / catdbserver /

pradmログ-/usr/local/squid/logs/redir.log

pradm.conf config-/usr/local/etc/squid/pradm.conf



pradmコンポヌネントの構成

pradm.conf.example-蚭定䟋

pradm.pl-リダむレクトスクリプト

md5.pm-サヌビス機胜を備えた補助モゞュヌル

squid.conf-倖郚aclずしおリダむレクタを呌び出すためのsquid.confファむルの䟋

reloadconfig.pl-memcachedに構成をロヌドするスクリプト

showperm.pl-指定されたホストのデヌタを衚瀺するスクリプト

Webディレクトリ

error.cgi-ブロックされたリ゜ヌスに関する情報を提䟛し、ネットワヌクぞのアクセスの拡匵を制埡するスクリプトそれは、squid.confで瀺されるリンクがWebサヌバヌの/ cgi-bin /になければなりたせん

stop.gifおよびwpad.dat-squid.confに瀺されおいるリンクがWebサヌバヌのDocumentRootにある必芁がありたす



Catdbserverコンポヌネントの構成

README-カテゎリヌロヌダヌの䜿甚方法に関する簡単な情報。

categoryloader.pl-カテゎリサヌバヌのデヌタベヌスファむルを圢成するスクリプト。

catserver.pl-カテゎリサヌバヌ自䜓

testfilter.pl-カテゎリサヌバヌの状態をテストするスクリプト。

updatelists.sh-倖郚リ゜ヌスからマルりェアドメむンのリストをダりンロヌドし、それらをカテゎリサヌバヌにアップロヌドするスクリプト。



ほずんどのスクリプトでは、リダむレクタず情報スクリプトを陀いお、キヌの小さな内郚ヘルプがありたす。



プロゞェクトの゜ヌス

aborche.com/pradm/source/pradm.tar.gz

aborche.com/pradm/source/catdbserver.tar.gz



これたでのずころ、SQL甚のカテゎリサヌバヌが開発されおいたすサヌバヌの準備ができおおり、デヌタベヌスぞのドメむンの远加速床が最適化されおいたす。 memcachedカテゎリサヌバヌの開発でもmemcachedサヌバヌデヌタベヌスのデヌタのむンデックス付けに問題がありたす

aborche.com/pradmプロゞェクトの機胜の抂芁

ご質問がありたしたら、お尋ねください。喜んでお答えしたす。



Aborche 2010








All Articles