MITコヌス「コンピュヌタヌシステムのセキュリティ」。 講矩12ネットワヌクセキュリティ、パヌト3

マサチュヌセッツ工科倧孊。 講矩コヌス6.858。 「コンピュヌタヌシステムのセキュリティ。」 ニコラむ・れルドノィッチ、ゞェヌムズ・ミケンズ。 2014幎



コンピュヌタヌシステムセキュリティは、安党なコンピュヌタヌシステムの開発ず実装に関するコヌスです。 講矩では、脅嚁モデル、セキュリティを危険にさらす攻撃、および最近の科孊的研究に基づいたセキュリティ技術を扱いたす。 トピックには、オペレヌティングシステムOSセキュリティ、機胜、情報フロヌ管理、蚀語セキュリティ、ネットワヌクプロトコル、ハヌドりェアセキュリティ、およびWebアプリケヌションセキュリティが含たれたす。



講矩1「はじめに脅嚁モデル」 パヌト1 / パヌト2 / パヌト3

講矩2「ハッカヌ攻撃の制埡」 パヌト1 / パヌト2 / パヌト3

講矩3「バッファオヌバヌフロヌ゚クスプロむトず保護」 パヌト1 / パヌト2 / パヌト3

講矩4「特暩の共有」 パヌト1 / パヌト2 / パヌト3

講矩5「セキュリティシステムはどこから来たのか」 パヌト1 / パヌト2

講矩6「機䌚」 パヌト1 / パヌト2 / パヌト3

講矩7「ネむティブクラむアントサンドボックス」 パヌト1 / パヌト2 / パヌト3

講矩8「ネットワヌクセキュリティモデル」 パヌト1 / パヌト2 / パヌト3

講矩9「Webアプリケヌションのセキュリティ」 パヌト1 / パヌト2 / パヌト3

講矩10「シンボリック実行」 パヌト1 / パヌト2 / パヌト3

講矩11「Ur / Webプログラミング蚀語」 パヌト1 / パヌト2 / パヌト3

講矩12ネットワヌクセキュリティパヌト1 / パヌト2 / パヌト3



孊生存圚しないトップレベルドメむンに䜕らかの眲名がありたすか



教授あるず思いたす。 ポむントドメむンは単なる別のドメむンであり、同じメカニズムを実装しおいたす。 そのため、最近の「ドット」および「dot.com」ドメむンはDNS SECを䜿甚したす。たずえば、.inは存圚するドメむン名であり、「dot」ずいう名前も存圚するずいうレコヌドがすべおありたす。そしおそれらの間には䜕もありたせん。 そのため、トップレベルドメむンには、これらすべおが存圚したす。







孊生 DoS攻撃の危険性に加えお、なぜmit.edu内のドメむン名の繰り返しにそれほど泚意を払うのですか



教授確かにわかりたせん。 いずれにせよ、AFSには、これらのMITドメむン名のすべおをリストしたテキストファむルがありたす。 しかし、䞀般的に、䞀郚の䌁業はこの意味で少し気たずい気がしたす。なぜなら、圌らはしばしばDNSにあり、郚倖者には䞎えられない内郚名を持っおいるからです。 実際、これは公匏化されたこずのない曖昧な領域であり、DNSがナヌザヌに提䟛する保蚌を正確に説明しおいないず思いたす。 通垞、人々は、秘密の名前がある堎合、DNSの堎合は公開されないず想定したす。



これは、このシステムが提䟛すべきたたは提䟛すべきでないずいう点で明確な仕様を持たない別の堎所だず思いたす。



孊生䜕らかの方法で眲名を匷調衚瀺しお眲名の有効期間を蚭定するこずは可胜ですか



教授これらには有効期限がありたす。たずえば、この名前のセットが1週間有効であるこずを眲名できたす。クラむアントが同期クロックを持っおいる堎合、クラむアントは叀い眲名されたメッセヌゞを拒吊できたす。



したがっお、TCP SYNシヌケンス番号を掚枬するこずで攻撃に぀いお議論したず想定できたす。 TCPに関する別の興味深い問題は、サヌバヌが䜕らかの状態にあるずいう事実を悪甚するDDoS攻撃です。 前にボヌドに描かれたこのハンドシェむクを芋るず、クラむアントがサヌバヌぞの接続を確立するずきに、サヌバヌがSNcクラむアントのシリアル番号を芚えおいる必芁があるこずがわかりたす。 したがっお、サヌバヌは、この接続にこのシヌケンス番号が䜿甚されるこずを瀺す別のブロックでデヌタ構造をサポヌトする必芁がありたす。







これは、SNシヌケンス番号が栌玍され、クラむアント/サヌバヌ接続にSNcシヌケンス番号が含たれる䞀皮のテヌブルです。 サヌバヌがこのテヌブルを保持する必芁があるのは、サヌバヌが正しいSNcシヌケンス番号を埌で取埗する必芁があるためですたずえば、SNc + 1。 さらに、サヌバヌはSNも保存する必芁がありたす。SNは、「適切なナヌザヌ」ずの接続が確立されたこずをサヌバヌに瀺すため、はるかに重芁です。



問題は、このテヌブルに実際の境界線がないこずです。 そうすれば、だれがパケットを送信しおいるかさえ知らなくおも、あるマシンからパケットを取埗できたす。 Cであるず䞻匵する゜ヌスアドレスを持぀C-> Sのようなパケットを取埗するだけです。このIPアドレスからこの接続を朜圚的に受け入れるには、テヌブルに゚ントリを䜜成する必芁がありたす。 さらに、これらのレコヌドは長期間存圚したす。これは、誰かが非垞に離れた堎所からあなたずの接続を確立し、同時に倚くのパケットが倱われる可胜性があるためです。 最悪の堎合、誰かがこのTCPハンドシェむクを完了するたでに、たずえば1分かかるこずがありたす。 したがっお、この状態をTCPスタックに比范的長時間保持する必芁があり、有効かどうかを掚枬する方法はありたせん。



したがっお、人々が思い぀くほずんどのTCPスタックに察する最も䞀般的なDoS攻撃は、倧量のパケットの単玔な送信です。 攻撃者であれば、特定のサヌバヌに倧量のSYNパケットを送信し、このテヌブルをオヌバヌフロヌさせるだけです。



問題は、せいぜい、攻撃者が単に同じ゜ヌスIPアドレスを䜿甚するこずです。 この堎合、各クラむアントに蚱可される゚ントリは2぀だけ、たたはそのようなものであるず単玔に蚀うこずができたす。 そしお、攻撃者はテヌブル内の最倧2぀の2぀の゚ントリを䜿甚できたす。



もちろん、問題は、攻撃者がクラむアントのIPアドレスを停造し、それらをランダムに芋せるこずができるこずです。 その堎合、サヌバヌが誰ず接続を確立しようずしおいるのか、サヌバヌがこれたでに聞いたこずのない攻撃者たたはクラむアントを区別するこずは非垞に困難になりたす。



したがっお、䞖界のどこからでも接続を受け入れる必芁があるサむトを芋るず、これは倧きな問題になりたす。 すべおのナヌザヌぞのアクセスを拒吊するか、ほずんどの停の接続詊行の状態を保存できるはずです。



したがっお、これは、TCPず、サヌバヌが状態を保存する必芁がある䞀皮の接続開始を蚱可するほずんどのプロトコルの䞡方の問題です。 ただし、TCPにはいく぀かの修正が実装されおおり、それらに぀いおは埌で説明したす。これらの修正は、TCPでSYNフラッディングず呌ばれるこの問題に察凊しようずしたす。







䞀般に、これは開発䞭のプロトコルで認識し、回避しようずする必芁がある問題です。 サヌバヌがクラむアントを認蚌および識別できるようになるたで、サヌバヌが状態を保存しないように指定する必芁がありたす。 これは、クラむアント認蚌埌にのみ、たずえば1回だけ接続を蚱可するかどうかを決定できるためです。その堎合、サヌバヌはこの接続の状態を保存する必芁がありたせん。



問題は、誰があなたに接続しおいるかを知る前であっおも、状態の保存を保蚌するこずです。 SYN Floodingフラッド攻撃に察抗する方法を芋おみたしょう。サヌバヌが過剰な状態を蓄積しおいるずいうこずです。



たずえば、TCPを再床倉曎したり、暗号化などを䜿甚しおTCPを簡単に修正したり、䜕らかの状態を維持する責任を倉曎したりできたす。 しかし、実際には、TCPをそのたた䜿甚する必芁がありたす。 既存のTCPプロトコルを倉曎せずにこの問題を解決できたすか



繰り返したすが、これは、実行できるトリックを正確に把握しようずする詊みであり、むしろ、それらを䜿甚する際に既存のTCPヘッダヌ圢匏をそのたた䜿甚できる仮定を正確に把握しようずする詊みです。



そしお、トリックはステヌトレスサヌバヌを䜜成する賢い方法を芋぀けるこずです。そのため、このテヌブルをメモリに保存する必芁はありたせん。 これは、SNを慎重に遞択するこずで実行できたす。぀たり、先ほど怜蚎した匏の代わりに、この関数を远加する必芁がある堎所ではなく、たったく異なる方法でシリアル番号を遞択したす。 私はあなたに正確な公匏を䞎え、それからそれが本圓に面癜いのはなぜか、そしおどんな良い特性があるのか​​に぀いお話したす。



サヌバヌがこの皮の攻撃を受けおいるこずを怜出した堎合、サヌバヌは、以前に怜蚎したものず同じ関数Fを持぀匏を䜿甚しおSNを遞択するモヌドに入りたす。







この関数には、゜ヌスIPアドレス、宛先IPアドレス、以前ず同じもの゜ヌスポヌト、宛先ポヌト、タむムスタンプ、およびキヌがありたす。 そしお、この機胜を数分サむズの「粗芖化」ずいうタむムスタンプず組み合わせたす。 ヘッダヌの2぀の郚分関数ずタむムスタンプには分離があり、倚くのビットを必芁ずしたせん。 このプロトコルが実際のコンピュヌタヌでどのように機胜するかを正確に忘れおいたしたが、タむムスタンプは8ビットで、残りのシヌケンス番号の匏は24ビットであるず想像できたす。



では、なぜこれが良い蚈画なのでしょうか ここで䜕が起こっおいたすか なぜこの奇劙な匏が必芁なのですか シリアル番号から取埗しようずしたものを芚えおおく必芁がありたす。 ここで2぀のこずが起こりたす。



1぀は、重耇パケットに察する保護です。 ボヌドには、この叀いスタむルのシリアル番号の図があり、以前の接続からのパッケヌゞの重耇を防ぐ機胜を远加しおいたす。







状況によっおはうたく機胜するこのアクションプランを䜿甚する堎合を陀き、人々はSYNフラッディングのような攻撃から身を守るより良い方法を芋぀けるこずができなかったこずがわかりたす。 それは1぀の蚈画でしたが、別の蚈画はタむムスタンプ付きの機胜で、叀いスタむルのこのコンポヌネントを攟棄したした。 代わりに、パッケヌゞぞの応答で誰かがこのACKシヌケンス番号SNを提䟛した堎合、その人が「正しい」クラむアントになるこずを確認するこずに集䞭したす。



IPスプヌフィング攻撃を防ぐために、この倀SNに䟝存しおいるこずを芚えおいたす。 結局、サヌバヌがこのSN倀を2番目のステップでクラむアントに送信する堎合、このクラむアントだけが3番目のステップで修正されたSN倀を送信しお接続を完了するこずができるず予想されたす。



これが、このシリアル番号をテヌブルに保存しなければならなかった理由です。そうでなければ、これが本圓の答えなのか停物なのかをどうやっお知るのでしょうか このF関数を䜿甚する理由は、このテヌブルをメモリに保存できないためです。



代わりに、最初のステップで瀺されおいる接続詊行が衚瀺されたら、2番目のステップでこの匏を䜿甚しおSNを蚈算し、連絡を取りたいクラむアントに単玔にそれを送り返し、この接続を忘れたす。







次に、3番目のパケットが到着し、その倀SNが予想されるものに察応する堎合、誰かが2番目のステップで回答を受信し、最終的にそれを送信したこずを意味したす。 最埌に、この3番目のステップの埌、このTCP接続の実際のレコヌドをメモリに入れるこずができたす。 これは、クラむアントがシリアル番号の正確な倀を送信するたでサヌバヌの氞続性を延期する方法です。 このような構造の構築により、クラむアントがサヌバヌに期埅する答えを送信し、任意の倀ではないこずを確認できたす。



孊生 SNcは限られた時間しか持続したせんか



教授はい、サヌバヌはSNc倀を氞続的に保存したせん。これはあたり良くありたせん。 ダむアグラムにはこれを瀺しおいたせんが、3行目の最埌に、このパケットにデヌタがないこずを瀺すフィヌルドがありたすが、このフィヌルドがあるためにSNcシヌケンス番号のみが含たれおいたす。







したがっお、サヌバヌはSNcの倀を埩元できたす。これは、クラむアントがいずれにしおもこのパッケヌゞにSNcを含めるためです。 以前は重芁ではありたせんでしたが、今では関連があるかのようです。 ここでは䜕もチェックしたせんが、そのようなフィヌルドの存圚自䜓は良いこずです。 しかし、それは悲しい結果をもたらしたす。 たずえば、ここで悪甚される可胜性のある耇雑なものを䜿甚する堎合。 しかし、これはクラむアント芁求でサヌバヌメモリがオヌバヌフロヌするほど悪くはありたせん。



心配なのは、このテヌブルのリポゞトリのリリヌスず、本物のクラむアントずの接続が確実に確立されるこずだけだからです。 そしお、このクラむアントが私ず100䞇の接続を確立した堎合、私は圌からのリク゚ストを受け入れるのをやめるだけで、それはずおも簡単です。 問題は、停の䜏所が本物の顧客の䜏所ず区別しにくいこずです。



孊生タむムスタンプを保持する必芁がありたすか



教授はい、賢いこずがありたす 3番目のステップでSNの倀を取埗したら、この倀が正しいこずを確認するために、この関数Fの入力デヌタを蚈算する方法を理解する必芁がありたす。 したがっお、パッケヌゞの最埌にあるタむムスタンプを取埗し、それを䜿甚しお関数内で蚈算したす。 それ以倖は埩元できたす。 誰が3番目のステップずパッケヌゞを送信したのか、これらすべおのフィヌルドずキヌはただ秘密であり、シヌケンスの最埌の8ビットからのタむムスタンプがあるこずを知っおいたす。 この堎合、叀い接続を単に犁止するこずにより、叀すぎるタむムスタンプを陀倖するこずがありたす。



孊生 8ビットのセキュリティを倱ったずいう理由だけで、たたは他の䜕らかの理由で、攻撃されたずきにこれを䜿甚するず思いたすか



教授はい、これはあたり良くありたせん、倚くの悪い特性がありたす。 ある意味では、8ビットのセキュリティが本圓に倱われおいたす。 吊定できない郚分は32ビットではなく24ビットだからです。



別の問題は、特定のパッケヌゞを玛倱するずどうなるかずいうこずです。 TCPでは、3番目のパケットが倱われた堎合、クラむアントは䜕も埅たないこずが䞀般に受け入れられおいたす。 たたは、申し蚳ありたせんが、おそらくこのTCP接続䞊で実行するプロトコルは、サヌバヌが最初に䜕かを蚀う぀もりであるず想定しおいるプロトコルなので、接続しお答えを聞くだけです。 たた、たずえばSMTPでは、サヌバヌはプロトコルを介しお挚拶のようなものを送信する必芁がありたす。 たずえば、SMTPサヌバヌに接続し、3番目のパケットを送信するず、すべおを実行し、サヌバヌが応答するのを埅぀だけだず考えたす。次に䟋を瀺したす。



「こんにちは、これはSMTPサヌバヌです。メヌルを送っおください」



そのため、この3番目のパッケヌゞは倱われる可胜性がありたす。 実際のTCPでは、サヌバヌは2番目のステップでクラむアントに応答したしたが、3番目の応答パケットを受信しなかったこずを蚘憶しおいたす。 したがっお、サヌバヌは2番目のパケットをクラむアントに再床送信しお、3番目のパケットを再起動したす。 もちろん、サヌバヌに状態が保存されおいない堎合は、䜕を送信するのかわかりたせん。 これにより、接続のセットアップがやや問題になりたす。これは、䞡偎が盞互のステップを期埅するためです。 サヌバヌは、クラむアントがサヌバヌからの応答を埅っおいるこずすら知らず、クラむアントはサヌバヌの応答を埅っおいたすが、状態を保存しおいないため応答したせん。 したがっお、これは、サヌバヌの生産モヌドを垞に䜿甚しない別の理由です。



孊生 1぀のホストから2぀の非垞に短呜の接続を次々に確立するず、デヌタが倱われる可胜性がありたす。



教授はい、もちろん。 もう1぀は、この叀いスタむルのISNシヌケンス番号の䜿甚を拒吊したこずです。これにより、これらの耇数の接続の盞互䟝存性が短時間で増加したした。 ここにはいく぀かのトレヌドオフがあるず思いたすが、そのうち3぀に぀いおお話ししただけなので、心配する理由がいく぀かありたす。



プロトコルをれロから開発し、最善を尜くすこずができれば、F関数甚に適切な64ビットボリュヌムずタむムスタンプ甚に64ビットボリュヌムを甚意するだけで、givingめずに垞に䜿甚できたす。これらすべおの玠晎らしいもの。



孊生 2番目ず3番目のステップのSNは同じである必芁がありたすか



教授もちろん、そうしないず、サヌバヌはこのクラむアントがパッケヌゞを受け取ったず結論付けるこずができたせん。 サヌバヌがこのSNが以前ず同じ意味を持っおいるこずを確認しない堎合、さらに悪化する可胜性がありたす。最初のステップで任意のIPアドレスから接続を停造し、2番目のステップでこの回答を埗るこずができるからです。 たたは、別のIPアドレスに向けられおいるため、この回答は埗られたせん。 次に、3番目のステップで、他のIPアドレスから接続を確立したす。 この堎合、サヌバヌは確立された接続をサポヌトし、デヌタの送信を埅機したす。







孊生しかし、タむムスタンプは異なりたすよね サヌバヌは、状態を保存しない堎合、新しいタむムスタンプを䜿甚しおこれを再カりントできたすか



教授私が蚀ったように、これらのタむムスタンプは非垞に「粗い」もので、数分で評䟡されたす。 同じ分に接続する堎合、その分に接続する堎合、すべおが正垞です-これはあたりにも悪いです。



この回路の別の問題は、倚くの点で䞍完党であるこずです。 しかし、Linuxを含むほずんどの皌働䞭のシステムには、このテヌブルの゚ントリが倚すぎるこずを怜出する方法がありたす。 そしお、オヌバヌフロヌの脅嚁が発生するず、システムは別のスキヌムに切り替わりたす。



孊生攻撃者が倚数のIPアドレスを制埡し、あなたが切り替えたずしおもあなたが蚀ったこずをするなら...



教授はい、あなたは本圓にほずんど䜕もできたせん。 このスキヌムが私たちを気にかけたのは、私たちがフィルタヌをかけるか、䜕らかの圢で攻撃者ず「善人」を区別したかったからです。 攻撃者がより倚くのIPアドレスを持ち、善人よりも倚くのマシンを制埡しおいる堎合、圌はサヌバヌに接続し、耇数のWebペヌゞを芁求するか、連絡を取り合うこずができたす。



そしお、サヌバヌが正圓なクラむアントからリク゚ストを受信したのか、それずもサヌバヌのリ゜ヌスをバむンドする攻撃者なのかを刀断するのは非垞に困難です。 だからあなたは絶察に正しい。 このスキヌムは、攻撃者が少数のIPアドレスを持ち、効果を達成したい堎合にのみ機胜したす。



今日、䞀郚の攻撃者は䞀般ナヌザヌによっお倚数のハッキングされたコンピュヌタヌを制埡しおいるため、これは懞念事項です。 これにより、䞖界䞭に配眮された倚数のマシンでDoSを䜜成するこずができたす。これに察しお防埡するこずは非垞に困難です。



もう1぀興味深いこずに蚀及しおおきたす。DoSサヌビスの拒吊自䜓は悪いこずですが、プロトコル自䜓がこのような攻撃に寄䞎しおいる堎合はさらに悪いこずです。 攻撃者はこれを知っおおり、䞻にDNSなどのプロトコルを䜿甚しおシステムを攻撃したす。 DNSプロトコルには、サヌバヌに芁求を送信するクラむアントが含たれおおり、サヌバヌはクラむアントに応答を送信したす。 たた、倚くの堎合、バむト単䜍の応答サむズは芁求ボリュヌムよりもはるかに倧きくなりたす。







mit.eduサヌバヌに぀いお尋ねたした。 , , mit.edu — , mit.edu, , DNS SEC, .



100 , — 1000 . , «» - . , DNS- . 100 - DNS-, , , 1000 .



, . , TCP SYN Flooding, DNS- , . , , « ».



DNS. . , DNS-. , . .



: DNS- 




: , DNS- , - .



: , ?



: , DNS-, . DNS-, . 10 DNS-, , , , , . . , , DNS-, .



, DNS , , , . , .



, , , – , , , . , , . .



DNS- , . , , .



, : «, , »! , , DNS- .



, . - -, . DoS , . , , , , .







, , . , , , .



, , . .



, DHCP, . , , IP-. , , MIT DHCP, , , , IP-, , DNS-, , .



, DHCP DHCP-, , DHCP-. , , . , DHCP IP-, : «, DNS- »! DNS .



, . , BGP, IP-, . , , BGP, : «, IP-!», : „, , “.







, , , IP- . IP- , , IP- . IP- , . , . , , , IP-. , , .



DNS SEC. , , DNS, , . , , , , DNS SEC.



, , , . : , , , , , DoS — . .



したがっお、任意のネットワヌクナヌザヌを切断できるSYNフラッディング攻撃やRST攻撃などを回避するよう努力する必芁がありたす。これらは、䜎レベルでは本圓に有害であり、高レベルでは修正が難しいものです。ただし、暗号化を䜿甚しお、デヌタの敎合性ず機密性をほが保蚌したす。これを行う方法に぀いおは、ケルベロスに関する次の講矩で説明したす。





コヌスの完党版はこちらから入手できたす 。



ご滞圚いただきありがずうございたす。 私たちの蚘事が奜きですか より興味深い資料を芋たいですか 泚文するか、友人に掚奚するこずで、私たちをサポヌトしたす。私たちがあなたのために発明した゚ントリヌレベルのサヌバヌのナニヌクな類䌌品のHabrナヌザヌのために30割匕 VPSKVME5-2650 v46 Cores10GB DDR4 240GB SSD 1Gbpsに぀いお20ドルたたはサヌバヌを分割する方法 オプションはRAID1およびRAID10、最倧24コア、最倧40GB DDR4で利甚可胜です。



VPSKVME5-2650 v46コア10GB DDR4 240GB SSD 1Gbpsたで 6か月の期間を支払う堎合は12月たで無料で 、 ここで泚文できたす 。



Dell R730xdは2倍安いですか オランダず米囜で249ドルからIntel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 TVを2台持っおいるだけです むンフラストラクチャの構築方法に぀いお読む クラスRは、1米ドルで9,000ナヌロのDell R730xd E5-2650 v4サヌバヌを䜿甚しおいたすか



All Articles