この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 12603|答える: 2

[Linux] 私のLinuxがSYN攻撃からどのように防御しているかをご覧ください

[リンクをコピー]
掲載地 2015/12/12 0:04:58 | | | |

今朝会社に到着したとき、公式ウェブサイトにログインし、アクセス状況を確認するためにサーバーにログインしたとき、かなり遅く感じました。

[root@web ~]# netstat -anp |awk '{print $6}'|sort|uniq -c |sort -rn

     172の設立

     59件接続

    589 SYN_RECV

     15ストリーム

SYNは実際には非常に高いので、それらのIPから送信されたSYNを追跡し続けてください:

[root@tweb ~]# netstat -an | グレップ・シン | awk '{print $5}' | awk -F: '{print $1}' | ソート | Uniq -c | ソート -nr | もっとその

570 X.X.X.X   

(IPは書かれていません。山東早荘聯通のIPです)が、このIPで多くのSYNリクエスト接続が送信されており、ウェブサーバーの同時進行度もあまり高くないため、通常のユーザーリクエストは対応できず、ページも開けません。 ハードウェアファイアウォールはグループのIT部門が管理しているため権限がなく、ローカルサーバーでSYN攻撃を部分的に軽減するための対策しか取れません。

まずはSYNの攻撃原理について話しましょう。

TCP/IPプロトコルでは、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)をサーバーに送信します。 3回のハンドシェアの後、クライアントとサーバーがデータの送信を開始します。


ユーザーがサーバーとの接続要求を2回目の握手のためだけに行い、応答しない場合、サーバーはユーザーの確認を待ち続けます。 そこで、SYN接続から直接以下の変更を加えます。

LinuxのデフォルトのSYN設定を確認してください:

[root@web ~]# sysctl -a | グレップ・_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

tcp_max_syn_backlogはSYNキューの長さであり、SYNキューの長さを伸ばすことで、接続待ちのネットワーク接続を増やすことができます。 tcp_syncookiesはSYNクッキー機能をオンにするスイッチで、部分的なSYN攻撃を防ぐことができます。 tcp_synack_retriesとtcp_syn_retriesはSYNの再試行接続数を定義し、デフォルトのパラメータを減らしてSYN接続数をできるだけ制御します。

以下は私が修正したパラメータで、サーバーの実際の状況に応じて変更可能です。

[root@web ~]# もっと /etc/rc.d/rc.local

#!/ビン/シャ

# このscrip{filter}tは他のすべてのinit scrip{filter}tsの*後に*実行されます。

# 自分の初期化のものを入れていいよ、もし入れてないなら

# フルのSys Vスタイルのinitやりをやりたい。

タッチ /var/lock/subsys/local

ulimit -HSn 65535

/usr/local/apache2/bin/apachectl start

#####

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攻撃をある程度遅くします。

シンフラッド攻撃

#iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT

--制限 1/s 同期同時実行回数を1秒あたり1回に制限します

アンチポートスキャン

# iptables -A FORWARD -p tcp --tcp-tcp-flags SYN, ACK, FIN, RST RST -M LIMIT --LIMIT 1/s -j ACCEPT

死のピン

# iptables -A FORWARD -p icmp --icmp タイプのエコーリクエスト -m limit --limit 1/s -j ACCEPT

#>iptables-save >/etc/sysconfig/iptables

表示するには、#iptables -L

ACCEPT TCP -- どこでもどこでも TCPフラグ:FIN, SYN, RST, ACK/SYN 制限: avg 1/sec バースト 5

ACCEPT TCP -- どこでもどこでも TCPフラグ:FIN, SYN, RST, ACK/RST 制限: 平均1秒 バースト5

ACCEPT icmp -- どこでもICMPエコーリクエスト制限:平均1秒、バースト5

もう一度Syn接続を確認してください:

[root@web ~]# ネットスタット -an | グレップ・シン | awk '{print $5}' | awk -F: '{print $1}' | ソート | Uniq -c | ソート -nr | もっとその

     20 10.92.10.220

      1 125.43.36.199

明らかにSYN接続数は減っています。






先の:「申し訳ありませんが、正規のアプリをインストールしていません。インストーラーはDiscuzを継続できません」という回避策です
次に:SC CreateはWindowsシステムサービスを作成します
掲載地 2015/12/13 10:53:04 |
なんて力強い表情だろう
掲載地 2015/12/14 15:55:43 |
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com