web-dev-qa-db-ja.com

LinuxカーネルをSYNフラッド攻撃に対して調整する

sysctl.confのいくつかのディレクティブを変更して、SYNフラッド攻撃からサーバーを保護する方法に関する記事(英語ではない)を読みました。その記事には、「SYNフラッドに対する保護を改善するためにいくつかのオプションを使用してカーネルを再コンパイルすることが可能です」のような文があります。私の質問が一般的すぎる場合は申し訳ありませんが、それが参照している可能性のあるカーネルオプションを教えていただけますか?カーネルをダウンロードし、make menuconfigを使用してすべてのネットワークオプションを調べましたが、それらのオプションが見つからないか、見逃していません。グーグルも役に立ちませんでした。

ありがとうございました。

2
Andrew

はい、Syn Flood攻撃の保護機能を使用してカーネルを再コンパイルすることは可能ですが、その理由はわかりません。

コマンドによってカーネルパラメータを変更する機能がないシステムでは、カーネルを再コンパイルする必要があります。ただし、それでも実行したい場合は、カーネルのCコードを変更する必要があります。

たとえば、Digital Unixでは、ヘッダーファイルの2つのパラメータを変更してから、オペレーティングシステムを再構築します。 /usr/sys/include/sys/socket.hで、SOMAXCONN定義を変更して、8が1024になるようにします。

/usr/sys/include/netinet/tcp_timer.hで、TCPTV_KEEP_INIT定義を75*PR_SLOWHZから25*PR_SLOWHZに変更します。

次に、このUnixバージョンに固有のDigitalUnixプロシージャを使用してカーネルを再構築します。

Berkeleyから派生したUnixシステムを使用して、これらの同じ2つのパラメータを変更してカーネルを再構築することもできます。

ただし、それらは異なる場所、つまり/usr/src/sys/netinet/tcp_timer.h/usr/src/sys/sys/socket.hにあります。

これを読んだ後、カーネルを再コンパイルする必要がないと思われる場合は、次のオプションを使用して、synフラッド攻撃を軽減してください。

# echo 1 > /proc/sys/net/ipv4/tcp_syncookies
# echo 2048 > /proc/sys/net/ipv4/tcp_max_syn_backlog
# echo 3 > /proc/sys/net/ipv4/tcp_synack_retries

再起動後も変更を永続化するには、これらのエントリを/etc/sysctl.confファイルに入れます

# TCP SYN Flood Protection
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 3

これらの詳細については、次のURLを参照してください。

これがあなたの質問に答えることを願っています。さらに詳しい説明が必要な場合は、お気軽にコメントしてください。

3
Napster_X

あなたが記事であるかどうかはわかりませんが、synフラッド保護の一般的な方法は/proc/sys/net/ipv4/tcp_syncookiesを設定することです。

2
Joe Fubar