【セキュリティ】possible SYN flooding on port 25. Sending cookies.(2024年最新)

2021年5月19日情報セキュリティfloodin,possibe,syn,synフラッド情報セキュリティ,possibe,syn,synフラッド

ある日のsyslog

ある日あなたが運用しているサーバのログを確認すると、見慣れないログが大量に発生していました。

syslogでの「possible SYN flooding on port 25. Sending cookies.」一覧

なっ、なんじゃこりゃぁああああ!!
俺のサーバにエラー発生か?それともマルウェア?乗っ取られたのかぁあああ

そんなことはありません。落ち着いてログの内容を読んでみましょう。

possible SYN flooding on port 25. Sending cookies.

英語が分からない?そんな時はGoogle先生に聞けばいいのです。

ポート25でSYNフラッドが発生する可能性があります。Cookieを送信しています。

Google先生

先生、日本人に分かる日本語でお願いします

possible SYN flooding on port XX. Sending cookies.

それではメッセージ内容を噛み砕いてみましょう。

possible SYN flooding:SYNフラッドの可能性があります
on port xx:ポート番号xxです(本記事の場合は25、つまりsmpt メール配送)
Sending cookies:クッキーを送っといたよ

日本人向けに日本語訳すると

サーバのTCP25番ポートへ接続要求(SYN)があったのでメモリを確保して応答(SYN+ACK)を返したんだけど最後の応答(ACK)が返ってこないんだよね。しかもこの要求が大量に来ていてこのままだとリソース(メモリ)を消費しつくしてしまう可能性があるよ。だから新たにメモリを割り当てずに割当済のメモリ情報でSYN+ACKを送り返しといたよ。SYNフラッド攻撃されている可能性があるね。

もー


TCPのスリーウェイハンドシェイクとは?

SYNフラッド攻撃を理解するためにはTCPのスリーウェイハンドシェイクを理解する必要があります。ネットワークに関わる人ならTCPやUDPを聞いたことがあるはずです。

TCPでは通信の信頼性を確保するためにクライアントとサーバは最初にコネクションを生成します。このコネクションを生成することをスリーウェイハンドシェイクといいます。

TCPスリーウェイハンドシェイク

①クライアント(接続元)は、サーバへコネクションの確立を要求します。SYNビットを「1」にしてパケットを送信します。
②サーバはクライアントへの確認応答ACKとクライアントへの接続要求 SYNを同時に送ります。SYNビット、ACKビットの両方を「1」にします。このときサーバは③のコネクション生成に備えて資源(メモリ等)を確保します。
③最後にクライアントは確認応答ACK=1を送り、コネクションが生成されます。

SYN flooding攻撃(SYNフラッド攻撃)とは?

そこで攻撃者はスリーウェイハンドシェイクの③SYNをわざと送り返さないようにします。

SYNフラッド攻撃

または、通常、攻撃者は悪意があるため身元が分からないように送信元IPアドレスを偽装しています。その場合サーバは要求元とは全く違う架空のIPアドレスへ応答を返してしまいます。

SYNフラッド攻撃2

いずれにしてもサーバへのスリーウェイハンドシェイクの③ACKが届かないため②で確保した資源を一定時間解放せずに保持したままとなります。

要求が数回ならメモリを食いつぶすことはありませんが、ツールなどで連続して①SYN(接続要求)を送ってきた場合はどうでしょうか?その場合サーバは接続要求ごとにメモリを確保しクライアントからの③ACKを待つことになります。メモリは有限ですからいずれ新しい要求を受け付けることが出来なくなります。その場合、正規のユーザがサーバに接続出来ないという事態に陥ります。

SYNフラッド攻撃が大量

それでは今回の場合はどうでしょうか?

syslogで攻撃時間を確認

ログの時間からキッチリ1分に1回攻撃しているようです。DOS攻撃にしては間隔が空いている気がします。時計で測ったようにキッチリ1分起きですね。

でも安心してください。最近のOSはこの攻撃に備えて同じクライアント(要求元)からの①SYN接続要求が続いた場合は、新たなメモリを確保せずに作成済の情報を使って②SYN+ACKを送り返します。

「SYNフラッド攻撃に対して適切に対処したよ」というお知らせをしてくれていたのですね。
OS様様ですね。

SYNフラッド攻撃を受けたときの対処方法

どうやらSYNフラッド攻撃を受けているのだろうという予想ができました。それでは攻撃のターゲットとなってしまった場合どうすればよいのでしょうか?僕は通常下記の4つを意識しています。

  1. OSの最新化
  2. 不要なポートを閉じる
  3. 攻撃元のIPアドレスを調べてブロックしてみる
  4. 攻撃者が飽きるまで待つ

1.OSの最新化

現状でもSYNフラッド攻撃には対処出来ています。しかしこの攻撃に関連して他のセキュリティホールから別の攻撃を受ける可能性もあります。OSやミドルウェアは極力最新化しOSの高セキュリティを保ちましょう。

2.不要なポートを閉じる

ポートは開ければ開けるほど攻撃されます。インターネットに公開している時点で最小限のポートに限定して開けていると思いますが今一度見直しをしてみてください。意外とデフォルトのまま不要なポートを開けた状態のままにしていることがあります。

3.攻撃元のIPアドレスを調べてブロックしてみる

tcpdumpやWiresharkを使えば攻撃元のIPアドレスが分かります。FireWall設定を変更し攻撃元のIPアドレスをブロックしてみてください。一旦攻撃が収まりしたか?残念ながら相手も想定済みの処理です。偽装していた送信元IPアドレスを変更して攻撃が再開するでしょう。

思い切って攻撃元と思われる国や地域のIPアドレスをCIDRで指定してブロックしてみてください。

もしサーバの公開先を日本国内に限定して良いのでしたら日本以外からのアクセスをブロックすれば攻撃は止まるかもしれません。

4.攻撃者が飽きるまで待つ

攻撃者が持つ攻撃用端末や時間は有限です。あなたのサーバを攻撃しても無駄だと分かればターゲットを他のサーバに切り替えるでしょう。

そうです。相手が飽きるまで待ちましょう。天災のようなものですから。

ただ攻撃をされている間は何が起こるか分かりません。

ログやサーバの状態を定期的に確認し異常がないか監視しておきましょう。

結論

OSを最新化して、SYNフラッドの嵐が収まるのを待ちましょう。

最後に

最後まで記事をお読みいただきありがとうございます。文中の間違い、ご要望等ありましたらコメント欄にお願いします。