Syncookiesの設定を確認する

提供: Ubuntu入門
移動: 案内検索
スポンサーリンク

インターネットでは、サービス不能攻撃の1つとして SYN FLOOD と呼ばれる攻撃があります。Syncookies とは、セキュリティ対策の1機能です。

読み方

Syncookies
しん くっきーず

概要

インターネットでは、サービス不能攻撃の1つとして SYN FLOOD と呼ばれる攻撃があります。現在では、デフォルトでは、すでに対処済みの状態になっておりますので、設定を自分で変更することは少ないのではないでしょうか?

SYN FLOOD とは

大雑把にいうと、3ウェイハンドシェイク中の中途半端な状態のコネクションを大量に保持させて、サービス不能状態にする、ということになります。

インターネットでは、TCP/IP と呼ばれるプロトコルを利用して通信しています。TCP/IP は、通信の接続時に 3ウェイハンドシェイク と呼ばれる手続を行います。 通信を初期からするときに、

  1. クライアントからサーバへSYN
  2. サーバからクライアントへSYN+ACK
  3. クライアントからサーバへACK

を行います。

SYN FLOOD は、1を行ったあとに、2を無視します。 サーバ側は、クライアントに対して、ACK(応答)を送信し、到達するのを待ちます。ネットワークの障害によって、通信が遅延していることも考えられるため、ACK が届くのを待つのが TCP です。この状態において、サーバはクライアント側の情報を保持していないといけません。

このような状態を大量に維持した場合、サーバリソースが枯渇してしまうという問題につながり、サーバリソースが枯渇した状態が サービス不能 状態ということになります。

SYN FLOOD の対策

SYN FLOOD の 対処には、 Syncookies を利用します。

Syncookies では、SYN flood 状態に陥ったときに サーバの記憶領域を割り当てずに、TCPのシーケンス番号を活用した手法で通信をします。

設定の確認

設定の確認方法は以下の通りです。

$ cat /proc/sys/net/ipv4/tcp_syncookies
1

tcp_syncookies の値の意味は、以下の通りです。

1
有効
0
無効

設定を変更する

# 有効にする
$ echo 1 > /proc/sys/net/ipv4/tcp_syncookies
# 無効にする
$ echo 0 > /proc/sys/net/ipv4/tcp_syncookies

SYN cookies の実装

Syn flood 状態になった場合、クライアントからの Sync パケットは捨てずに、 Syn cookies を利用した通信を行います。 SYN Flood 状態になった場合、記憶領域の割当を行わずに、SYN ACK パケットを返します。このときに、 SYN ACK に含まれるTCPシーケンス番号は、以下の特別な方法で計算されます。

  • 5bit : t mod 32 の値 (t は現在までの経過時間を表すカウンタで、64秒ごとに増加する)。
  • 3bit: MSS などをエンコードする
  • 24bit: クライアントとサーバのIPアドレスとTCPポート番号と t を一方向ハッシュ関数でハッシュ化したもの

関連項目




スポンサーリンク