CentOSの抗SYN攻撃

今日は朝から、会社が同社のウェブサイトを訪問するときようである幾分遅い、サーバー ビューの web サイトへのアクセスにログイン。

[root@web 〜] # netstat-anp |awk ‘ {印刷 $6}’|sort|uniq – c ソート – rn

172 設立

接続されている 59

589 SYN_RECV

15 ストリーム

SYN が非常に高いを追求し続けるそれらは IP SYN によって発行されます。

[root@tweb 〜] # netstat-an | grep SYN | awk ‘ {印刷 $5}’ | awk-f: ‘ {印刷 $1}’ | 並べ替え | uniq の-c | -nr を並べ替える | 詳細

570 x.x.x.x

(IP 書いていない、棗庄市、山東省聯通の ip)、ip アドレス発行多く接続しましたは同時実行 Web サーバーは通常のユーザーは、対応するページを要求の数が多いのでこの SYN 要求を開くことができません。 ハードウェア ファイアウォールがグループの IT 部門によって管理されて、私はアクセス許可を持っていない、SYN 攻撃は、低速のためローカル サーバーでのみ何かも 。

まずその SYN 攻撃の原則は言います。

TCP/IP プロトコルでは、信頼性の高いサービス、接続を確立する 3 ウェイ ハンドシェイクの TCP 接続プロトコル。

最初にハンドシェイク: SYN パケットがクライアントによって送信接続を確立する (SYN = j) サーバーに SYN_SEND 状態を入力して、; を確認するサーバーを待つ

2 番目の握手: SYN パケットを受信するサーバー、クライアントの SYN を確認する必要があります (ack = j + 1)、また SYN パケットの送信中 (SYN = k)、SYN ACK パッケージ、SYN_RECV 状態にサーバー

3 番目のハンドシェイク: クライアントでサーバーの SYN ACK パッケージ、パッケージをサーバーに ACK が送信されますを確認 (ACK = k + 1)、このパッケージを送信すると、クライアントとサーバー ESTABLISHED 状態に完成品に入る 3 ウェイ ハンドシェイク。 3 ウェイ ハンドシェイクは、クライアントとサーバーは、データを送信を開始します。

\

サーバー側で塗りつぶし接続キューが通常を原因となる場合はあまりにも多く、これらの接続を確認するまで、サーバは待機ユーザーは、サーバーへの対応ではなく、2 番目の握手にのみサーバーからの要求との接続を開始する場合ユーザーは、接続を確立できません。 我々 は直接 SYN 次のように接続するように変更します。

デフォルトでは Linux の SYN の構成を表示します。

[root@web 〜] # sysctl-、| grep _syn

net.ipv4.tcp_max_syn_backlog = 1024年

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_synack_retries = 5

net.ipv4.tcp_syn_retries = 5

ソケットの SYN キューの長さ、SYN キューの長さの増加接続を待っているより多くのネットワーク接続に対応できます。 Tcp_syncookies はスイッチ、SYN クッキー機能をオンに、この機能は、いくつかの SYN 攻撃を防ぐことができます。 Tcp_synack_retries と行う SYN 接続再試行の回数を定義します、SYN にできるだけの接続の数を制御する既定のパラメーターを減少させます。

ここでは、独自のサーバーの実際の状況に応じて私の改訂されたパラメーターを変更できます。

[root@web 〜] # より/etc/rc.d/rc.local

#!/bin/sh

# このスクリプトを実行する * 後 * 他のすべての init スクリプト。

# あなたはご存知ない場合ここであなた自身の初期化のものを置くことが

# は、完全の Sys V スタイルの init ものをやりたいと。

タッチ/var/lock/subsys/local

ulimit – ハイブリッドスパイクニューロン 65535

/usr/local/apache2/bin/apachectl 開始

#####

sysctl-w net.ipv4.tcp_max_syn_backlog=2048

sysctl-w net.ipv4.tcp_syncookies=1

sysctl-w net.ipv4.tcp_synack_retries=3

sysctl-w net.ipv4.tcp_syn_retries=3

実行することができますすぐに構成を有効にするサーバーを再起動するために、

#sysctl -w net.ipv4.tcp_max_syn_backlog=2048

#sysctl -w net.ipv4.tcp_syncookies=1

#sysctl -w net.ipv4.tcp_synack_retries=3

#sysctl -w net.ipv4.tcp_syn_retries=3

何人かの人々 のようにある程度の SYN 攻撃に対する保護、SYN 攻撃を軽減するアクセス制御リストを使用します。

Syn フラッド攻撃

#iptables-入力-p tcp syn-メートルの制限 – 制限 1/s-j を受諾

-制限 1/s は、SYN 1 回/秒の数を制限します。

ポート スキャンを防止します。

# iptables-前方-p tcp – tcp フラグ SYN ACK、フィン、RST RST メートルの制限 – 制限 1/s-j を受諾

Ping の死

# iptables-進む p icmp – icmp タイプ エコー要求メートルの制限 – 制限 1/s-j を受諾

#> iptables 保存 >/等/sysconfig/iptables

それは、# を表示するには

どこでもどこの tcp – tcp フラグ: フィン、SYN、RST、SYN/ACK 制限を受け入れる: avg 1/秒のバースト 5

Tcp フラグ: フィン、SYN ACK/RST 制限 RST tcp – どこでも任意の場所を受け入れる: avg 1/秒のバースト 5

Icmp – どこでもどこでもに icmp エコー要求制限を受け入れる: avg 1/秒のバースト 5

閲覧 SYN 接続をもう一度:

[root@web 〜] # netstat-an | grep SYN | awk ‘ {印刷 $5}’ | awk-f: ‘ {印刷 $1}’ | 並べ替え | uniq の-c | -nr を並べ替える | 詳細

20 10.92.10.220

1 125.43.36.199

SYN 接続数が明らかにダウンです。

Leave a Reply

Your email address will not be published. Required fields are marked *