概要 †
SYN Flood攻撃への対策をとります。
SYN Flood攻撃は、TCP接続開始要求であるSYNパケットを利用した、攻撃手法です。
SYNパケットを大量に送り付け、SYN/ACKパケットを無視することで、対象サーバに無駄なリソースを消費させ、レスポンスの低下や、最悪の場合はダウンを誘発します。
発信元IPアドレスは偽装されているので、攻撃者は大量のSYN/ACKパケットを無視する必要もありません。
方法1 - 一定時間内に大量の要求が来た場合に破棄する †
- 1秒あたり10回以上もしくは、持ち点20点以上になると、ログを書いて破棄するルールです。
1
2
3
4
5
6
7
8
| -
!
-
!
| iptables -N drop_synflood
iptables -A drop_synflood -m limit --limit 10/s --limit-burst 20 -j RETURN
iptables -A drop_synflood -j LOG --log-prefix "SYNFLOOD: " -m limit --limit 1/s --limit-burst 10
iptables -A drop_synflood -j DROP
iptables -A INPUT -p tcp --syn -j drop_synflood
|
方法2 - SYN cookiesを有効にする †
SYN cookiesを有効にすると、SYN Flood状態となった場合に、リソースを割り当てずにSYN/ACKパケットを返すようになります。リソースはACKが帰ってきた時点で確保します。
SYN/ACKパケットを送る際、IPアドレスなどの情報を一方向ハッシュ関数でハッシュ化した値などから生成したTCPシーケンス番号を埋め込むので、IP偽装した攻撃者は正規のACKを送れません。
- 「/etc/sysctl.conf」を開きます。
1
2
3
4
5
| -
|
|
|
!
| net.ipv4.tcp_syncookies=1
|
- 反映させます。
1
2
3
4
5
| -
!
-
!
| sysctl -p
shutdown -r now
|
検証時の環境 †
参考 †