« [P2P]DHTのPastry&Tapestryの日本語資料 | トップページ | [P2P勉強会]100人越え! »

2005.01.16

[P2P]集中アクセス攻撃への対策

P2PWeb&Wikiとして有名なRingochだが、集中アクセス的な攻撃にさらされていることがあるようだ。
P2Pシステムを構築する上でセキュリティは重要な要素であり、このような攻撃の対策から身を守るのは非常に重要なことだろう。

このような攻撃から身を守るのに一番有効的な対策の一つは攻撃するノードのIPアドレスあるいはノードIDなどからのアクセスを一時的にネットワークから遮断する事だ。これはDDoS攻撃の対処にも通じる重要なことだ。
しかし、このような場合、(システムが攻撃に対して自律的でない場合)管理者あるいはスーパーユーザ的な人が攻撃パターンを解析して、システム全体に攻撃ノードを周知しないといけない。なんとかならないものだろうか?

まず自分で簡単に検討してみた。皆様もアイデアがあれば教えて頂きたい。ただしDHTでのシステムを前提としている。

1)連続投稿の防止
これは一番簡単そうな対策の一つだ。つまり、同じレスについては同じNode_IDであるから、ある時間内のあるノードからの連続投稿についてはレスを管理しているノードが監視できるわけだ。そのため連続投稿については防止することができる。ただし、ノードの負荷は減るが、ネットワーク負荷が減るわけではない。

あまりにも連続投稿が多い場合には、あるNode_ID=Check_Nodeにそのノードが報告することも考えられる。
全てのノードは定期的にこのCheck_Nodeを見て、ノードは一定時間アクセスの拒否あるいは中継の拒否をすることができる。ただし、この仕組みをクラッキングされるとある特定ノードをずっとネットワークから排除することが可能となるので、上手い仕組みが必要だろう。(たとえば、同じ時間にある閾値以上のノード数から攻撃の報告を受けた場合、ブラックリストに載るとか。)

なお、Node_ID=Check_Nodeは負荷が重くなるので、このようなCheck_Nodeを複数設けて同期させて、各ノードからのアクセスからの負荷分散をさせる(アクセスノードのIPorNode_IDのハッシュ値により負荷分散させる)必要があるだろう。

2)中継ノードにおける攻撃ノード中継の停止
これはDHTならではといえる攻撃対処法と考えられる。DHTはルーティングテーブルを自分で持つ。ということは、あるノードにアクセスする際には、ルーティングテーブル内のノードと必ず中継する必要がある。これを利用すると、各ノードが中継ノードとなる場合、その中継トラフィックを監視して異常なアクセスノードについて中継を遮断する事が考えられる。これによってシステム全体でのネットワーク負荷は大幅に削減するが、ノードは中継トラフィックを監視(一種のIDPになる)するので、負荷が大きくなる。

もうちょっと応用すると、1)のような攻撃を受けたノードが、中継元ノードに順繰りに「あなたが中継したノードXは攻撃をしていますよ。」とメッセージを送って、中継ノードがアクセスを遮断する事が考えられる。そして、一番アクセスノードに近い中継ノードAはそのルーティングテーブルノードにアクセス禁止ノードXの情報を周知すると面白そうだ。なぜならDHTの仕組みにも寄るが、ノードXのルーティングテーブルノードはノードAのものに近いからだ。もちろん最終的には1)のブラックリストに載せる事も必要だろう。

==
攻撃を特定するには、参加ノードのNode_IDの偽造を防止させることが必要だ。
一つはスーパーユーザによる証明書にNode_IDを書いてあり、それによってNode_IDの正当性を保障するやり方が考えられる。ただし、それだけではどうしてもDDoS的な攻撃(証明書によって各ノードを認証するまでのトラフィックを大量に送受信する)は対処できないので、2)のようなIDP的なやり方も取り得ることが必要だと思える。

今回のような攻撃については、現在色々と考えられている次世代ネットワークでのDDoS攻撃からの防御方法が大いに参考になると思う。最新動向等チェックして頂ければ幸いである。


|

« [P2P]DHTのPastry&Tapestryの日本語資料 | トップページ | [P2P勉強会]100人越え! »

パソコン・インターネット」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: [P2P]集中アクセス攻撃への対策:

« [P2P]DHTのPastry&Tapestryの日本語資料 | トップページ | [P2P勉強会]100人越え! »