LinuxのカーネルパラメータにはDoS/DDoS対策に有効なものがあります。これを用い、iptablesを使わずにDoS/DDoS対策を行う方法を解説します。最近のディストリビューションならば標準で対策されているため、追加設定は不要です。
以前テンプレート3で、パケットのステートフル性を確認する方法を紹介しました。ステートフル性を確認することで、3ウェイハンドシェイクを満たさないパケットを破棄できます。
しかし、SYN→SYN/ACK→ACKを完了していながらデータを送信してこない「コネクション完了型」のアタックに対して、この手法は役に立ちません。そこで、「SYN cookies(SYNクッキー)」を使用します。SYNクッキーを使用することで、ACKの中に含まれる確認応答番号を計算し、正しいセッションであることを確認できます。セッションの正当性を確認してから処理を行うことにより、無駄な処理でコネクションなどのリソースが費やされるのを防ぐことができます。
LinuxでSYNクッキーが有効になっているか否かは、/proc/sys/net/ipv4/tcp_syncookiesファイルの内容で確認できます。「1」と書き込まれていれば有効になっています。有効になっていない場合は、以下のコマンドで有効にすることができます。
# echo '1' > /proc/sys/net/ipv4/tcp_syncookies または、 # sysctl -w net.ipv4.tcp_syncookies=1
ただし、上記の方法ではマシンを再起動すると設定が消えてしまいます。再起動後もSYNクッキーを有効にするには、/etc/sysctl.confファイルに以下の行を追記します。
net.ipv4.tcp_syncookies=1 ←追加
SYNクッキーを有効にするとACKの中に含まれる確認応答番号を計算するため、パケット処理において多少オーバーヘッドが発生します。パケットの流量によっては、CPUの処理能力がネックになる可能性があることを覚えておきましょう。
Smurf攻撃は、ターゲットにしたホストに対して、送信元アドレスを偽造したICMP pingエコーを大量に送り付ける攻撃方法です。pingエコーを特定のホストではなくブロードキャストアドレスに対して送信した場合、そのネットワーク上のすべてのコンピュータから応答パケットが投げ返されます。Smurf攻撃はこれを悪用するため、Linux側でブロードキャストpingに答えないようにします。
# echo '1' > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts または、 # sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1
マシン再起動後も設定を有効にするには、/etc/sysctl.confファイルに以下の行を追記します。
net.ipv4.icmp_echo_ignore_broadcasts=1 ←追加
テンプレートを利用したiptablesの解説は今回が最後です。最終回ではitablesを快適に使うためのTipsを紹介します。
Copyright © ITmedia, Inc. All Rights Reserved.