iptables DDOSとCC攻撃予防構成


IDCルームでは通常、ハードウェアファイアウォールを使用してDDOSやCC攻撃を防火しますが、少量の攻撃ではIPtablesが保護効果を発揮します.
一、Linuxの下でファイアウォールを開く/閉じるコマンド
1)永久的に有効で、再起動後は元に戻らない
オン:chkconfig iptables on
シャットダウン:chkconfig iptables off 2)は即時に有効になり、再起動後に再開:service iptables startシャットダウン:service iptables stopはLinux下の他のサービスに対して以上のコマンドで開閉操作を実行できることを説明する必要があります.ファイアウォールがオープンした場合、以下の設定を行い、関連ポートをオープンし、/etc/sysconfig/iptablesファイルを修正し、以下の内容を追加します:-A RH-Firewall-1-INPUT-m state--state NEW-m tcp-p tcp--dport 80-j ACCEPT-A RH-Firewall-1-INPUT-m state--state NEW-m tcp-p tcp--dport 22-j ACCEPT
二、DDOS攻撃防止シナリオ
#SYN攻撃防止軽量レベル予防iptables-N syn-flood(ファイアウォールのデフォルト設定に「:syn-flood-[0:0]」がある場合は、重複するため、このアイテムは使用できません)iptables -A INPUT -p tcp --syn -j syn-flood   
iptables -I syn-flood -p tcp -m limit --limit 3/s --limit-burst 6 -j RETURN   
iptables -A syn-flood -j REJECT   
#DOSが多すぎる接続を防止し、外部ネットワークカードのIPごとに最大15個の初期接続を許可することができ、を超える廃棄
iptables -A INPUT -i eth0 -p tcp --syn-m connlimit --connlimit-above 15 -j DROP   
iptables -A INPUT -p tcp-m state --state ESTABLISHED,RELATED -j ACCEPT  
  
#IptablesでDDOSを防ぐ(パラメータは上と同じ)iptables -A INPUT  -p tcp --syn -m limit --limit 12/s --limit-burst 24 -j ACCEPT  
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT  
##########################################################   
または、ファイアウォールiptablesファイルに直接次の情報を追加します.#セクションはコメント情報です.
-N syn-flood(ファイアウォールのデフォルト設定に「:syn-flood-[0:0]」がある場合は、重複しているため、このアイテムは使用できません)
-A INPUT -p tcp --syn -j syn-flood
-I syn-flood -p tcp -m limit --limit 3/s --limit-burst 6 -j RETURN
-A syn-flood -j REJECT
#DDOS one ip of 15 link
-A INPUT -i eth0 -p tcp --syn -m connlimit --connlimit-above 15 -j DROP
-A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT  -p tcp --syn -m limit --limit 12/s --limit-burst 24 -j ACCEPT
-A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
あるいはiptablesを修正して-A FORWARD-j RH-Firewall-1-INPUTに以下の内容を加える
#SYN DDOS -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j syn-flood -A INPUT -i eth0 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 15 --connlimit-mask 32 -j DROP -A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 12/sec --limit-burst 24 -j ACCEPT -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 1/sec -j ACCEPT
COMMITの末尾の2行には、次の情報が入ります.
#DOS SYN -A syn-flood -p tcp -m limit --limit 3/sec --limit-burst 6 -j RETURN
-A syn-flood -j REJECT --reject-with icmp-port-unreachable
#end
設定後、次のコマンドを実行します.
service iptables save
service iptables start
すぐ

ホワイトリストの設定:


デフォルトのホワイトリストにはミスが多い場合がありますが、このような状況を避けるために、ホワイトリストのipを手動で設定し、修正を強制的に許可しないことができます.
vi/usr/local/ddos/ignore.ip.list
ホワイトリストIPの手動設定
chattr +i/usr/local/ddos/ignore.ip.list
変更不可の強制
 
chattr -i/usr/local/ddos/ignore.ip.list
修正不可の解除

手動用iptablesでIPをシールドする:


単一IPのコマンドはiptables-I INPUT-s 124.115.0.199-j DROP
1つのIPを復元する:
iptables -D INPUT -s 124.115.0.199 -j DROP  
IPセグメントを閉じるコマンドは、iptables-I INPUT-s 124.115.0.0/16-j DROP iptables-I INPUT-s 124.115.3.0/16-j DROP iptables-I INPUT-s 124.115.4.0/16-j DROP
セグメント全体を閉じるコマンドはiptables-I INPUT-s 124.115.0.0/8-j DROPです
いくつかのセグメントを閉じるコマンドは、iptables-I INPUT-s 61.37.80.0/24-j DROP iptables-I INPUT-s 61.37.81.0/24-j DROPです.
CC攻撃を防ぐapacheサイトが深刻なcc攻撃を受けると、iptablesでWebサーバがCC攻撃を受けることを防止し、IPを自動的に遮断する機能を実現することができます.
1.システム要求
(1)LINUXカーネルバージョン:2.6.9-42 Elsmpまたは2.6.9-55 Elsmp(他のカーネルバージョンではカーネルを再コンパイルする必要があり、面倒ですが実現できます).
(2)iptablesバージョン:1.3.7
2.インストール
iptables 1をインストールします.3.7システムカーネルバージョンに対応するカーネルモジュールkernel-smp-modules-connlimit
3.対応するiptablesルールの構成
例は次のとおりです.
(1)単一IPの最大同時接続数を制御する
iptables -I INPUT -p tcp --dport 80 -m connlimit  --connlimit-above 50 -j REJECT

#単一IPを許可する最大接続数は30
#デフォルトのiptablesモジュールにはconnlimitは含まれていません.ロードを個別にコンパイルする必要があります.このアドレスを参照してください.http://sookk8.blog.51cto.com/455855/280372
(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
# IP 60 30 

4.(1)自分で攻撃をシミュレートしたり、攻撃に遭遇したときに効果を確認したりできることを確認します.(2)効果の表示:使用する
watch 'netstat -an | grep:21 | grep  < IP>| wc -l'

シミュレーション攻撃クライアントが確立した接続数をリアルタイムで表示し、
watch 'iptables -L -n -v | grep < IP>'

シミュレーション攻撃クライアントがDROPされたパケット数を表示します.
5.注意
iptablesがCC攻撃を防ぐ能力を高めるために、ipt_を調整したほうがいいです.recentのパラメータは次のとおりです.
#cat/etc/modprobe.conf options ipt_recent ip_list_tot=1000 ip_pkt_list_tot=60