■TCP SYNフラッド攻撃(TCP SYN Flooding Attack)
DoS攻撃の一種。
TCPのハンドシェイクが確立しない要求パケットを次々に送信することで、リソースを浪費させて、サービス拒否の状態とする攻撃。単に「SYNフラッド攻撃」と呼ばれることもある。さらに、攻撃元がIPアドレスを詐称(IPスプーフィング)する手法と組み合わせることで、より防御が困難な攻撃となってしまう。
TCPによる接続では、まずクライアントがサーバに対してSYNパケットを送信する。サーバがクライアントに対して、SYN/ACKパケットを返し、そのメッセージに対して、さらにクライアントが承認のためのACKパケットを送信することで、初めて接続が確立する。3回のパケットのやり取りを通じて接続が確立するので、これを「3ウェイ・ハンドシェイク」という。しかしクライアントが最後のACKパケットを返さないと、接続が確立しない状態(「ハーフ・オープン」状態)のまま、サーバが待たされたままになる。このハーフ・オープン状態では、クライアントからのACK応答を待つために、サーバ側はTCP接続のためのリソースを割り当てたままで、タイムアウトまで待つことになる。ところが、ハーフ・オープン状態の数が多くなりすぎるとサーバ側のリソースが無用に消費されてしまい、新しい(正規の)TCP接続が受け付けられなくなったり、ほかの処理が滞ったりするなど、さまざまな問題が発生する。このように、最初のSYNパケットだけを連続で送信し続ける攻撃を、TCP
SYNフラッド攻撃と呼ぶ。
さらに、送信元のIPアドレスを詐称することにより、意味のないIPアドレスへのSYN/ACKパケットの返信が必要になり、ネットワークに対して無用なトラフィック増を招くことになる。例えば、同じIPアドレスからの連続したTCP
SYN要求を抑制するといった対策を行いにくくなる。
3ウェイ・ハンドシェイクは、TCP接続における基本的な通信開始シーケンスであり、SYN要求を受け取ってもハーフ・オープン状態にしないというなどという、完全な防御策はない。しかしTCP
SYNフラッド攻撃に対する影響をいくらか軽減することは可能だ。例えば、ある一定量以上の(同じIPアドレスからの連続する)SYN要求は受け付けないようにしたり、ファイアウォールでTCP接続を代理受信し、正常にオープンできた接続だけをサーバに渡したり、といった方法がある。また、ファイアウォールやOSでIPスプーフィングを検知し、排除するような設定を行うことで、IPスプーフィングと組み合わせたTCP
SYNフラッド攻撃を防ぐことができる。ただし、インターネットから社内のIPアドレスを詐称するようなIPスプーフィングの検知は簡単に排除できるが、グローバル・アドレスを詐称した際の検知は容易ではない。ネットワーク監視ソフトウェアなどを活用し、常にネットワークの状態をモニタリングすることも対策としては重要である。 |