iptablesを使用してSYN***、CC***、ACK***に対応


1、はじめに
筆者は、一般的なネット***に対応する方法をまとめたいと思います.特に、ネット上のドキュメントを参照して、SYN、CC、ACKなどの***に対応できる案を整理します.
2、理論基礎
2.1、TCP/IPの三次握手理論
TCP/IPプロトコルは3回の握手を使用して接続を確立し、プロセスは以下の通りである.
1)初めて握手し、クライアントはデータパケットsynをサーバーに送信し、SYN_に入る.SEND状態、返信待ち
2)2回目の握手、サーバからsyn/ackを送信し、クライアントにSYN_RECV状態、返信待ち
3)3回目の握手、クライアントはパケットACKをクライアントに送信し、送信が完了した後、クライアントとサーバーはESTABLISHED状態に入り、リンク確立が完了した
2.2、TCP/IP三次握手サーバープロセス分析
1)3回の握手プロトコルでサーバが1つの待ち行列を維持する
2)synパケットを受信するとキューにエントリが作成され,一定のリソースが割り当てられる.
3)対応する各エントリは、synリクエストが受信され、syn/ackに返信されたことを示す
4)サーバ上の対応する接続は既にSYN_に入っているRECV状態、クライアント応答待ち
5)クライアントの応答パケットを受信すると,その接続はESTABLISHED状態に入り,キュー内の対応するエントリが削除される.
2.3、TCP/IP三回握手関連パラメータ
2.3.1、backlog
1)パラメータの役割:
待ち行列の最大数を設定します.
2)対応カーネルパラメータ:
net.ipv4.tcp_max_syn_backlog = 1024

2.3.2、syn-ack
1)パラメータの役割:
再送回数サーバはsyn/ackパケットを送信し,クライアントの対応を受信しなければsyn/ackを再送し,一定時間を超えると2回目の再送を行い,設定回数を超えるとそのエントリをキューから削除する.再送ごとの間隔は確定していない.
2)対応カーネルパラメータ:
net.ipv4.tcp_synack_retries = 5

2.3.3、syn
1)パラメータの役割:
再送回数、コンセプトはsyn/ack再送回数と似ています
2)対応カーネルパラメータ:
net.ipv4.tcp_syn_retries = 5
2.3.4、待機時間
待機キューのエントリの生存時間、すなわち、synパケットがサーバから受信されてから、パケットが無効であることを確認するまでの最長時間を指し、この時間は、すべての再送信パケット要求の最長待機時間である.
3、***タイプと防御
3.1、DDOS***
3.1.1、DDOS***の概念
DDOS***はトラフィック***とも呼ばれます.
向こうの競争関係のある店が正常に営業できないようにしようとする悪党たちは、どんな手段を取るのだろうか.(例を挙げるだけで、真似しないでください)悪党たちは普通の取引先に扮してずっと相手の店に混んでいて、頼りにして行かないで、本当の買い物客は入ることができません;あるいはいつも営業員と一緒にいないことを話して、従業員が正常に取引先にサービスできないようにします.店の経営者に虚偽の情報を提供することもでき、店の上下が忙しくなった後、すべて空であることに気づき、最終的に本当の大顧客を走り、損失が甚大だった.また、悪党たちはこれらの悪いことを単独では完成しにくいことがあり、多くの人を呼ぶ必要があります.まあ、サイバーセキュリティの分野ではDoSとDDoS***はこれらの考え方に従っています.
3.1.2、一般的なDDOS解決方法
1)設定方法1
vim編集/proc/sys/net/ipv 4/tcp_max_syn_backlog
8000

デフォルト500、推奨は8000以上
2)設定方法2
vim編集/proc/sys/net/ipv 4/tcp_fin_timeout
15

デフォルト値60、推奨値15
3)syncooies
sysctl -w net.ipv4.icmp_echo_ignore_all=1 
echo 1 > /proc/sys/net/ipv4/tcp_syncookies 
sysctl -w net.ipv4.tcp_max_syn_backlog="2048" 
sysctl -w net.ipv4.tcp_synack_retries="3" 
iptables -A INPUT -i eth0 -p tcp --syn -j syn-flood 
# Limit 12 connections per second (burst to 24) 
iptables -A syn-flood -m limit --limit 12/s --limit-burst 24 -j RETURN

4)limit
iptbales -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

3.2、SYN***
3.2.1、SYN***の概念
syn***はDDOS***の一種であり、TCP/IPの欠陥を利用してネットワーク***を行い、小さなリソースを使用して著しい効果を得ることができる.
3.2.2、***の原理
1)サーバはクライアントのsynパケットを受け取り,その後SYN_RECV状態
2)サーバの待ち行列にエントリを追加
3)サーバはクライアントの確認パケットを受け取っておらず,タイムアウト後までこのエントリはリンクキューから削除されなかった.
以上の行為は***者に利用される:
クライアントは、サーバからのsyn/ackに応答することなくsynパケットを絶えず送信し、キューを待つエントリが急速に増加し、最後にサーバのキューが最大数に達し、その後、新しい接続を受け入れることができず、リンクがタイムアウトするまでキューから対応するエントリを削除します.
IPアドレス欺瞞技術に合わせて、この方法は非常に良好な効果を得ることができ、基本的に***期間中、サーバーは正常なユーザーにサービスを提供できない.
この***办法はTCP/IPプロトコルの欠陥を利用して、***の目标はサーバーだけではなくて、いかなるネットの设备、ネットのサーバーを开けたのでさえすれば、すべてこのような***を受けることができて、プロセッサーの资源が大量に占用されることを招いて、メモリは使い终わって、大量のキューは処理を待って、ネットの设备の***に対して往々にして全体のネットの麻痹を招きます.
3.2.3、関連指令
1)syn関連パラメータのクエリー
sysctl -a | grep syn

3.2.4、対応方法
1)変更待ち
sysctl -w net.ipv4.tcp_max_syn_backlog=2048

2)syncookiesの有効化
sysctl -w net.ipv4.tcp_syncookies=1

注:syncookiesを有効にするとsyn***の影響は大幅に減少しますが、新しいセキュリティ欠陥(ACK***)が導入されます.
syncookie基本原理1)接続の初期シーケンス番号をランダムに選択するのではなく、注意深く処理する.2)serverがSYNメッセージを受信すると、キー情報が注意深く符号化され、stateとしてSYNキューに格納される.3)このような符号化された情報は、1つの鍵でhashを暗号化し、SYN−ACKメッセージのシーケンス番号を形成してclientに送信する.合法的に握手した3番目のメッセージ、すなわちclientからserverに返されるACKメッセージには、acknowledgment numberフィールドにシーケンス番号(プラス1)が含まれている.このようにopen双方向接続に必要なすべての情報はserverに返され、serverは3回の握手が完了する前にstateを維持する必要はありません.Syn-cookiesはSYNの基本的な問題を解決したが,サーバが受信したACKメッセージを計算し,3回の握手に必要なシステムリソースを向上させる必要があるという新しい問題をもたらした.新しい***方式、すなわちACK***は、大量のACKデータレポートを送信し、サーバが計算に追われ、最終的にサーバが対応を停止する.Linuxの実際のアプリケーションでは、待機数がいっぱいになったときにsyncookiesが有効になる方法があります(syncookiesはネット文から抜粋).
3)再試行回数の修正
sysctl -w net.ipv4.tcp_syn_retries = 0

再送回数は0に設定されており、クライアントからの応答が受信されない場合は、直ちに接続を破棄し、デフォルトは5回に設定されています.
4)制限シングルIP同時実行数
iptablesを使用して、単一のアドレスの同時接続数を制限します.
iptables -t filter -A INPUT -p tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 10 --connlimit-mask 32 -j REJECT

5)Cクラスサブネット同時利用数を制限する
iptablesを使用して、単一のcクラスサブネットの同時リンク数を制限します.
iptables -t filter -A INPUT -p tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 10 --connlimit-mask 24 -j REJECT

6)単位時間当たりの接続数を制限する
次のように設定します.
iptables -t filter -A INPUT -p tcp --dport 80 -m --state --state NEW -m recent --set --name access --resource
iptables -t filter -A INPUT -p tcp --dport 80 -m --state --state NEW -m recent --update --seconds 60 --hitcount 30 --name access -j DROP

または、次の2つのポリシーを使用します.
iptables -t filter -A INPUT -p tcp --dport 80 -m --state --syn -m recent --set
iptables -t filter -A INPUT -p tcp --dport 80 -m --state --syn -m recent --update --seconds 60 --hitcount 30 -j DROP

7)modprobeを修正する.conf
より良い効果を得るためには/etc/modprobeを修正する必要がある.conf
options ipt_recent ip_list_tot=1000 ip_pkt_list_tot=60

役割:10000個のアドレスを記録し、各アドレス60個のパケット、ip_list_totは最大8100で、この値を超えるとiptablesエラーになります
8)単一アドレスの最大接続数を制限する
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP

3.3、ACK***
3.3.1、ACK***の概念
ACK***はsyn-cookiesに対して発行され、大量のACKデータレポートを送信することで、ターゲットサーバを計算に追わせ、サービス拒否の目的を達成する.
3.3.2、ACK***への対応
1)同時接続数制限
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP

制限同時接続数50以下
2)同時ACKの制限
iptables -t filter -A INPUT -p tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK ACK -m connlimit --connlimit-above 10 --connlimit-mask 32 -j REJECT

制限同時ACK 50以下
3)単位時間リンク数制限
iptables -t filter -A INPUT -p tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK ACK -m recent --set --name drop
iptables -t filter -A INPUT -p tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK ACK -m recent --update --seconds 60 --hitcount 30 -j DROP

1分で30回以上の接続をすべて破棄
3.4、CC***
3.4.1、CC***の概念
一般的なCC***の特徴は、すべての接続が正常な完全な接続であることであり、このような接続の一般的なファイアウォールは予防しにくい.しかし、ネットワーク***である以上、ネットワーク***の共通の特徴、すなわち、各***ソースはできるだけ多くの接続を開始するので、単一のアドレスの同時リンク数を制限する方法を使用して、CC***に対する抵抗を実現することができます.
具体的な命令は同じである
3.5、webcc
予防はさらに難しいようですが、すべてのアクセスが同じ1つまたは複数のサイトから中継されているため、これらのアクセスリクエストのhttp_refferには、これらの中継局のアドレスがあります.Webサーバにhttpを設定すればrefferフィルタリングはwebcc***の影響を大幅に低減し,具体的な設定はここでは省略する.
添付:RHEL 5にconnlimitモジュールを追加する方法
-------------------------------------------------------
原文出典:
http://blog.chinaunix.net/uid/108431/year-200912-list-1.html
http://security.ctocio.com.cn/tips/228/7769728.shtml