読者です 読者をやめる 読者になる 読者になる

感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

DoS攻撃とTCP SYN Flood

セキュリティ
<スポンサーリンク>

DoS

DoSとは、Denial of Serviceの略で、「サービス妨害」ともいう。
サーバに負荷を集中させるなどして、サーバを使用不能に陥れる攻撃である。

これは重要な情報を盗むような攻撃ではないが、サービスを使用不能にして、使えなくする立派な営業妨害である。

とはいえ、普通にアクセスしている場合となかなか区別がつきづらいのが特徴で、そのへんの取り扱いは苦労するものだ。
嵐のチケット販売サイトやAKB48の投票サイトなどは、アクセスが集中してサービスのダウンとか発生するかもしれない。
こういうときはDoSなのかただのアクセスの集中なのか完全に区別しづらいことが悩ましいものである。

TCP SYN Flood

TCP SYN FloodはTCPのスリーウェイハンドシェイクを利用した攻撃である。
スリーウェイハンドシェイクとは、以下の図のように、TCP接続を確立するには3ステップ踏むことから名付けられた。
もうちょっとそれっぽく言うと、「コネクション確立要求パケットとそれに対する確認応答パケットのやり取りを3回行うこと」から命名された手法である。

f:id:sho322:20140128010626j:plain
SYN:コネクション確率要求パケット
ACK:確認応答パケット

簡単にイメージすると、こんな感じ。

1.女の子(くらいあんと)「元気にしてる?(SYN)」
2.俺(さーば)「元気だよ?(ACK)君は元気?(SYN)」
3.女の子(くらいあんと)「私も元気だよ(ACK)」

で、TCP SYN Floodというのは、「3」の「私も元気だよ」という最後の「ACK」に応答しないままにして、サーバ側で使ったCPUやメモリの領域をそのまま消費させ続けるもの。
要は、女の子からメールが来て浮足立って携帯電話の前で正座したものの、「私も元気だよ」って返事がこなくて他の仕事が手につかなくなるようなイメージ。

対策

TCP SYN Floodの対策は、一定時間を過ぎた不成立コネクションを強制的に終了させることだ。
それによって、確保されていたCPUやメモリを開放することができる。
もう一つは、SYN cookiesという対策で、返答するACKパケットの中に必要な情報を埋め込み、クライアントから正常なACKが返ってきたときにはじめてサーバに情報を記憶するようにするもの。
そうすることで、記憶のためにCPUやメモリを使わずに済むってこと。