linux下防DDOS攻撃ソフト及び使用方法の詳細


インターネットは現実社会のように暗闘に満ちており、サイトがDDOSによって駅長に最も頭を悩ませることもある.ハードウェアがない場合、ソフトウェアの代替を探すのが最も直接的な方法です.例えば、iptablesを使いますが、iptablesは自動的に遮蔽することはできません.手動で遮蔽するしかありません.
一、DDOS攻撃とは?
DDoSは、分散型サービス拒否攻撃である.通常のサービス拒否攻撃と同様の方法を使用しますが、攻撃を開始するソースは複数あります.通常、攻撃者はダウンロードしたツールを使用して保護されていないホストに浸透し、ホストに適切なアクセス権を取得すると、攻撃者はホストにソフトウェアのサービスまたはプロセスをインストールします.これらのエージェントは、ホスト側から命令を受け、指定されたターゲットに対してサービス拒否攻撃を開始するまで、スリープ状態を維持します.
二、自分がDDOS攻撃を受けたことをどのように確認しますか?
システム上で実行:
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

実行すると、サーバ上のすべてのIPの接続数が表示されます.以下は私自身がVPSでテストした結果です:1 192.168.21.246       1 192.168.21.36       1 192.168.21.71       1 192.204.26.65       1 192.204.26.73       1 205.209.180.55       1 Address       1 servers)       3 192.168.21.28       3 192.168.21.53       4 192.168.21.15       6 192.168.21.51各IPの数、十数個または数十個の接続数はまだ正常で、上のように何百人もの接続数が正常ではないに違いない.
三、DDOS攻撃を防ぐ方法:
いくつかのよく使われるDDOS攻撃を防ぐ方法は、以下のように列挙されています.
 1.ハードウェアファイアウォールを追加し、DDOS攻撃をベアラして防ぐためのハードウェアデバイスを追加する最も基本的な方法ですが、コストは比較的高いです.
     2.SYN設定を変更してSYN攻撃を防ぐ:
SYN攻撃はTCP/IPプロトコルの3回の握手の原理を利用して、大量の接続を確立するネットワークパケットを送信しますが、実際に接続を確立しないで、最終的に攻撃されるサーバーのネットワークキューがいっぱいになって、正常なユーザーにアクセスできません.
Linuxカーネルには、コマンドを使用してSYN関連の設定がいくつかあります.
sysctl -a | grep syn

見た:fs.quota.syncs = 150 net.netfilter.nf_conntrack_tcp_timeout_syn_sent = 120 net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 60 net.ipv4.tcp_syn_retries = 5 net.ipv4.tcp_synack_retries = 5 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 1024 net.ipv6.conf.all.max_desync_factor = 600 net.ipv6.conf.default.max_desync_factor = 600 net.ipv6.conf.lo.max_desync_factor = 600 net.ipv6.conf.em1.max_desync_factor = 600 net.ipv6.conf.em2.max_desync_factor = 600 net.ipv6.conf.em3.max_desync_factor = 600 net.ipv6.conf.em4.max_desync_factor = 600 net.ipv6.conf.vmnet1.max_desync_factor = 600 net.ipv6.conf.vmnet8.max_desync_factor = 600
  tcp_max_syn_backlogはSYNキューの長さ、tcp_syncookiesはスイッチで、SYNクッキー機能をオンにするかどうか、この機能はSYN攻撃の一部を防止することができます.tcp_synack_retriesとtcp_syn_retriesはSYNの再試行回数を定義します.
SYNキューの長さを大きくすると、接続待ちのネットワーク接続数を多く収容でき、SYN Cookie機能をオンにするとSYN攻撃の一部を阻止でき、再試行回数を低減することも効果的です.
上記の設定を調整する方法は、SYNキューの長さを2048に増やすことです.
sysctl -w net.ipv4.tcp_max_syn_backlog=2048

SYN COOKE機能を開く:
sysctl -w net.ipv4.tcp_syncookies=1

再試行回数を減らす:
sysctl -w net.ipv4.tcp_synack_retries=3
sysctl -w net.ipv4.tcp_syn_retries=3

システム再起動時に上記構成を保持するために、上記コマンドを/etc/rcに加えることができる.d/rc.localファイルにあります.
3.iptablesをインストールして特定のipをマスクします.
A.iptablesとシステムカーネルバージョンに対応するカーネルモジュールkernel-smp-modules-connlimitのインストール
B.対応するiptablesルールの構成
例は次のとおりです.
(1)単一IPの最大同時接続数を制御する
iptables -I INPUT -p tcp –dport 80 -m connlimit –connlimit-above 50 -j REJECT

#単一IPを許可する最大接続数は30
(2)単一IPが一定時間(例えば60秒)内に新たに確立できる接続数を制御する
iptables -A INPUT -p tcp –dport 80 -m recent –name BAD_HTTP_ACCESS –update –seconds 60 \ –hitcount 30 -j REJECT
iptables -A INPUT -p tcp –dport 80 -m recent –name BAD_HTTP_ACCESS –set -j ACCEPT

#1個のIPは60秒以内に最大30個の接続しか許可されない
(3)iptablesでIPを遮断する
iptables -I RH-Lokkit-0-50-INPUT 1 -p tcp -m tcp -s 213.8.166.227 --dport 80 --syn -j REJECT

指定されたポートのパラメータは--dport 80です.多くなった--synパラメータ、sync攻撃を自動的に検出することができます
(4)iptablesでping禁止:
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 6/min --limit-burst 2 -j ACCEPT-A INPUT -p icmp -m icmp --icmp-type 8 -j REJECT --reject-with icmp-port-unreachable

(5)あるip接続を許可する
iptables -I RH-Firewall-1-INPUT 1 -p tcp -m tcp -s 192.168.0.51 --syn -j ACCEPT

C.検証
(1)ツール:flood_connect.c(攻撃をシミュレートするためのもの)(2)効果の表示:使用する
watch'netstat-an|grep:21|grep<アナログ攻撃クライアントのIP>|wc-l'は、アナログ攻撃クライアントが確立した接続数をリアルタイムで表示し、watch'iptables-L-n-v|grep<アナログ攻撃クライアントのIP>'を使用して、アナログ攻撃クライアントがDROPされたパケット数を表示します.
D.注意
iptablesがCC攻撃を防ぐ能力を高めるために、ipt_を調整したほうがいいです.recentのパラメータは次のとおりです.
 #cat/etc/modprobe.conf
   options ipt_recent ip_list_tot=1000 ip_pkt_list_tot=60
   #  1000 IP  ,      60    
   #modprobe ipt_recent

E.スクリプトを作成して自動的に攻撃ipと結婚して自動的に遮蔽することができる:
*/2 * * * * /usr/local/nginx/var/log/drop.sh
#!/bin/sh
cd /usr/local/nginx/var/log
tail access.log -n 1000 |grep vote.php | |sort |uniq -c |sort -nr |awk '{if ($2!=null && $1>50)}' > drop_ip.txt
for i in `cat drop_ip.txt`
do
/sbin/iptables -I INPUT -s $i -j DROP;
done

このshellは数分ごとに1回実行して、自動的にあれらの正常でないIPを遮蔽することができて、みんながすべて理解することを信じることができて、以下は接続数の遮蔽コードに対して
#!/bin/sh
/bin/netstat -ant |grep 80 |awk '{print $5}' |awk -F : '{print $1}' |sort |uniq -c |sort -rn |grep -v -E '192.168|127.0' |awk '{if ($2!=null && $1>50)}' > drop_ip.txt
for i in `cat drop_ip.txt`
do
/sbin/iptables -I INPUT -s $i -j DROP;
done

そういえばgrep-v-E'192.168|127.0'はイントラネットのIPを排除して、自分を遮蔽しないようにして、もちろん自分のIPを加えることができます.
4.DDoS deflateをインストールしてDDOS攻撃を自動的に防ぐ:
DDoS deflateは、DDoS攻撃を防御し軽減するための無料のスクリプトです.これはnetstatモニタリングトラッキングによって大量のネットワーク接続を作成するIPアドレスであり、あるノードが予め設定された制限を超えることを検出すると、APFまたはIPTABLESによってこれらのIPを禁止または遮断する.
DDoS deflate公式サイト:
(1)DDoS deflateのインストール
wget chmod 0700 install.sh //    
./install.sh //  

(2)DDoS deflateの配置
以下、DDoS deflateのデフォルト構成は/usr/local/ddos/ddosである.conf、内容は以下の通りです.
##### Paths of the script and other files
PROGDIR=”/usr/local/ddos”
PROG=”/usr/local/ddos/ddos.sh”
IGNORE_IP_LIST=”/usr/local/ddos/ignore.ip.list” //IP     
CRON=”/etc/cron.d/ddos.cron” //      
APF=”/etc/apf/apf”
IPT=”/sbin/iptables”
##### frequency in minutes for running the script
##### Caution: Every time this setting is changed run the script with –cron
##### option so that the new frequency takes effect
FREQ=1 //      ,  1  
##### How many connections define a bad IP? Indicate that below.
NO_OF_CONNECTIONS=150 //     ,     IP     ,      
##### APF_BAN=1 (Make sure your APF version is atleast 0.96)
##### APF_BAN=0 (Uses iptables for banning ips instead of APF)
APF_BAN=1 //  APF  iptables,    iptables
##### KILL=0 (Bad IPs are’nt banned good for interactive execution of script)
##### KILL=1 (Recommended setting)
KILL=1 //    IP,    
#### An email is sent to the following address when an IP is banned.
##### Blank would suppress sending of mails
EMAIL_TO=”root” // IP             ,    ,         
##### Number of seconds the banned ip should remain in blacklist.
BAN_PERIOD=600 //  IP  ,  600 ,       

ユーザーは、デフォルトのプロファイルに追加されたコメントのヒントに基づいて、職場を修理できますか?ファイルをセットします.
振り回すのが好きなのはWeb圧力テストソフト(『webサーバー性能/圧力テストツールhttp_load、webbench、ab、Siege使用チュートリアル』)で効果をテストしてみると、これは小さなトラフィックの攻撃を防ぐしかないので、ないよりはましでしょう.
5.APACHEにmod_をインストールするevasiveコンポーネント強化抵抗力
  mod_evasiveはApacheがDDos攻撃を受けるのを予防するモジュールであり、同じIPが同じURIに対して大量の要求を出すことを防止することができ、設定可能な選択肢は以下の通りである.
  • は、同じIPが一定秒以内に1つのページまたはファイルを要求する回数を制限する.
  • は、同じIPが1秒で50個の要求しか発行できないことを制限する.
  • は、禁止されているIPブラックアウト時間を設定する.

  • 以下mod_evasiveのインストール方法:
    A.まず元のhttpd.confをバックアップします.
    B.指令モードでmodを解凍及びコンパイルするevasive:
    tar zxvf mod_evasive_1.10.1.tar.gz
    cd mod_evasive/
    apxs -cia mod_evasive20.c

    以上のapxsはApacheのbinディレクトリに格納されます.Apacheバージョンが1.3の場合、命令は次のように変更されます.
     apxs -cia mod_evasive.c mod_をインストールするevasive後、httpdを変更します.confコンテンツ.
    C.httpdを開く.conf、内容:
    DOSHashTableSize 3097    DOSPageCount 5    DOSSiteCount 100    DOSPageInterval 2    DOSSiteInterval 2    DOSBlockingPeriod 10    DOSBlockingPeriod 600
    DOSHashTable Size-これはメモリのサイズです.サーバが忙しい場合は、この値を大きく設定します.
    DOSPageCount-同じIPが1つの期間内に同じページと結婚できる回数は、それ以上は禁止されます.DOSSiteCount-同じIPが1つのサイト内でどれだけのobjectを占有できるかは、禁止されます.DOSPageInterval-DOSPageCount内の期間設定.DOSSiteInterval-DOSSiteCountの時間設定は、秒単位です.DOSblockingPeriod-疑似攻撃が発見されると、利用者は403 Forbiddenを受け取り、これは封鎖の時間を秒単位で設定する.
    D.最後にApacheを再起動すればよい.