91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

DoS Deflate Iptables

發布時間:2020-06-28 20:52:58 來源:網絡 閱讀:978 作者:470499989 欄目:安全技術

DoS Deflate 是一個輕量級阻止拒絕服務***的bash shell腳本。我們可以根據自己需要修改特定參數,來達到目的!
安裝/卸載都很簡單,分別執行下面三步就可以了:

  1. wget http://www.inetbase.com/scripts/ddos/install.sh  
  2. chmod 0700 install.sh  
  3. ./install.sh  
  4.  
  5. wget http://www.inetbase.com/scripts/ddos/uninstall.ddos  
  6. chmod 0700 uninstall.ddos  
  7. ./uninstall.ddos 
  1. [root@localhost src]#less install.sh   
  2. #!/bin/sh  
  3. if [ -d '/usr/local/ddos' ]; then  
  4.         echo; echo; echo "Please un-install the previous version first"  
  5.         exit 0  
  6. else  
  7.         mkdir /usr/local/ddos  
  8. fi  
  9. clear  
  10. echo; echo 'Installing DOS-Deflate 0.6'; echo  
  11. echo; echo -n 'Downloading source files...'  
  12. wget -q -O /usr/local/ddos/ddos.conf http://www.inetbase.com/scripts/ddos/ddos.conf  
  13. echo -n '.'  
  14. wget -q -O /usr/local/ddos/LICENSE http://www.inetbase.com/scripts/ddos/LICENSE  
  15. echo -n '.'  
  16. wget -q -O /usr/local/ddos/ignore.ip.list http://www.inetbase.com/scripts/ddos/ignore.ip.list  
  17. echo -n '.'  
  18. wget -q -O /usr/local/ddos/ddos.sh http://www.inetbase.com/scripts/ddos/ddos.sh  
  19. chmod 0755 /usr/local/ddos/ddos.sh  
  20. cp -s /usr/local/ddos/ddos.sh /usr/local/sbin/ddos  
  21. echo '...done'  
  22.  
  23. echo; echo -n 'Creating cron to run script every minute.....(Default setting)'  
  24. /usr/local/ddos/ddos.sh --cron > /dev/null 2>&1  
  25. echo '.....done'  
  26.  
  27.  
  28. echo; echo 'Installation has completed.'  
  29. echo 'Config file is at /usr/local/ddos/ddos.conf'  
  30. echo 'Please send in your comments and/or suggestions to zaf@vsnl.com'  
  31. echo  
  32. cat /usr/local/ddos/LICENSE | less 

從install.sh可以看出DoS Deflate安裝過程主要是下載四個文件(
ddos.conf    DoS Deflate配置文件
LICENSE    說明文件
ignore.ip.list   白名單文件
ddos.sh          核心安裝腳本
)和執行/usr/local/ddos/ddos.sh --cron 這個腳本。

  1. [root@localhost src]# cat /usr/local/ddos/ddos.sh  
  2. #!/bin/sh  
  3. ##############################################################################  
  4. # DDoS-Deflate version 0.6 Author: Zaf <zaf@vsnl.com>                        #  
  5. ##############################################################################  
  6. # This program is distributed under the "Artistic License" Agreement         #  
  7. #                                                                            #  
  8. # The LICENSE file is located in the same directory as this program. Please  #  
  9. #  read the LICENSE file before you make copies or distribute this program   #  
  10. ##############################################################################  
  11. load_conf()  
  12. {  
  13.         CONF="/usr/local/ddos/ddos.conf" 
  14.         if [ -f "$CONF" ] && [ ! "$CONF" ==     "" ]; then  
  15.                 source $CONF  
  16.         else  
  17.                 head  
  18.                 echo "\$CONF not found."  
  19.                 exit 1  
  20.         fi  
  21. }  
  22. ##加載配置文件/usr/local/ddos/ddos.conf  
  23.  
  24. head()  
  25. {  
  26.         echo "DDoS-Deflate version 0.6"  
  27.         echo "Copyright (C) 2005, Zaf <zaf@vsnl.com>"  
  28.         echo  
  29. }  
  30. ##顯示版本,作者信息  
  31.  
  32. showhelp()  
  33. {  
  34.         head  
  35.         echo 'Usage: ddos.sh [OPTIONS] [N]'  
  36.         echo 'N : number of tcp/udp     connections (default 150)'  
  37.         echo 'OPTIONS:'  
  38.         echo '-h | --help: Show this help screen'  
  39.         echo '-c | --cron: Create cron job to run this script regularly (default 1 mins)'  
  40.         echo '-k | --kill: Block the offending ip making more than N connections'  
  41. }  
  42. ##顯示使用方式  
  43.  
  44. unbanip()  
  45. {  
  46.         UNBAN_SCRIPT=`mktemp /tmp/unban.XXXXXXXX`  
  47.         TMP_FILE=`mktemp /tmp/unban.XXXXXXXX`  
  48.         UNBAN_IP_LIST=`mktemp /tmp/unban.XXXXXXXX`  
  49.         echo '#!/bin/sh' > $UNBAN_SCRIPT  
  50.         echo "sleep $BAN_PERIOD" >> $UNBAN_SCRIPT  
  51.         if [ $APF_BAN -eq 1 ]; then  
  52.                 while read line; do  
  53.                         echo "$APF -u $line" >> $UNBAN_SCRIPT  
  54.                         echo $line >> $UNBAN_IP_LIST  
  55.                 done < $BANNED_IP_LIST  
  56.         else  
  57.                 while read line; do  
  58.                         echo "$IPT -D INPUT -s $line -j DROP" >> $UNBAN_SCRIPT  
  59.                         echo $line >> $UNBAN_IP_LIST  
  60.                 done < $BANNED_IP_LIST  
  61.         fi  
  62.         echo "grep -v --file=$UNBAN_IP_LIST $IGNORE_IP_LIST > $TMP_FILE" >> $UNBAN_SCRIPT  
  63.         echo "mv $TMP_FILE $IGNORE_IP_LIST" >> $UNBAN_SCRIPT  
  64.         echo "rm -f $UNBAN_SCRIPT" >> $UNBAN_SCRIPT  
  65.         echo "rm -f $UNBAN_IP_LIST" >> $UNBAN_SCRIPT  
  66.         echo "rm -f $TMP_FILE" >> $UNBAN_SCRIPT  
  67.         . $UNBAN_SCRIPT &  
  68. }  
  69. ##用于取消已經被禁止訪問的ip  
  70.  
  71. add_to_cron()  
  72. {  
  73.         rm -f $CRON  
  74.         sleep 1  
  75.         service crond restart  
  76.         sleep 1  
  77.         echo "SHELL=/bin/sh" > $CRON  
  78.         if [ $FREQ -le 2 ]; then  
  79.                 echo "0-59/$FREQ * * * * root /usr/local/ddos/ddos.sh >/dev/null 2>&1" >> $CRON  
  80.         else  
  81.                 let "START_MINUTE = $RANDOM % ($FREQ - 1)"  
  82.                 let "START_MINUTE = $START_MINUTE + 1"  
  83.                 let "END_MINUTE = 60 - $FREQ + $START_MINUTE"  
  84.                 echo "$START_MINUTE-$END_MINUTE/$FREQ * * * * root /usr/local/ddos/ddos.sh >/dev/null 2>&1" >> $CRON  
  85.         fi  
  86.         service crond restart  
  87. }  
  88. ##執行主程序,生成crontab,在安裝的時候執行一次  
  89.  
  90.  
  91. load_conf  
  92. while [ $1 ]; do  
  93.         case $1 in  
  94.                 '-h' | '--help' | '?' )  
  95.                         showhelp  
  96.                         exit  
  97.                         ;;  
  98.                 '--cron' | '-c' )  
  99.                         add_to_cron  
  100.                         exit  
  101.                         ;;  
  102.                 '--kill' | '-k' )  
  103.                         KILL=1 
  104.                         ;;  
  105.                  *[0-9]* )  
  106.                         NO_OF_CONNECTIONS=$1  
  107.                         ;;  
  108.                 * )  
  109.                         showhelp  
  110.                         exit  
  111.                         ;;  
  112.         esac  
  113.         shift  
  114. done  
  115.  
  116. TMP_PREFIX='/tmp/ddos' 
  117. TMP_FILE="mktemp $TMP_PREFIX.XXXXXXXX" 
  118. BANNED_IP_MAIL=`$TMP_FILE`  
  119. BANNED_IP_LIST=`$TMP_FILE`  
  120. echo "Banned the following ip addresses on `date`" > $BANNED_IP_MAIL  
  121. echo >> $BANNED_IP_MAIL  
  122. BAD_IP_LIST=`$TMP_FILE`  
  123. netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr > $BAD_IP_LIST  
  124. cat $BAD_IP_LIST  
  125. if [ $KILL -eq 1 ]; then  
  126.         IP_BAN_NOW=0 
  127.         while read line; do  
  128.                 CURR_LINE_CONN=$(echo $line | cut -d" " -f1)  
  129.                 CURR_LINE_IP=$(echo $line | cut -d" " -f2)  
  130.                 if [ $CURR_LINE_CONN -lt $NO_OF_CONNECTIONS ]; then  
  131.                         break  
  132.                 fi  
  133.                 IGNORE_BAN=`grep -c $CURR_LINE_IP $IGNORE_IP_LIST`  
  134.                 if [ $IGNORE_BAN -ge 1 ]; then  
  135.                         continue  
  136.                 fi  
  137.                 IP_BAN_NOW=1 
  138.                 echo "$CURR_LINE_IP with $CURR_LINE_CONN connections" >> $BANNED_IP_MAIL  
  139.                 echo $CURR_LINE_IP >> $BANNED_IP_LIST  
  140.                 echo $CURR_LINE_IP >> $IGNORE_IP_LIST  
  141.                 if [ $APF_BAN -eq 1 ]; then  
  142.                         $APF -d $CURR_LINE_IP  
  143.                 else  
  144.                         $IPT -I INPUT -s $CURR_LINE_IP -j DROP  
  145.                 fi  
  146.         done < $BAD_IP_LIST  
  147.         if [ $IP_BAN_NOW -eq 1 ]; then  
  148.                 dt=`date`  
  149.                 if [ $EMAIL_TO != "" ]; then  
  150.                         cat $BANNED_IP_MAIL | mail -s "IP addresses banned on $dt" $EMAIL_TO  
  151.                 fi  
  152.                 unbanip  
  153.         fi  
  154. fi  
  155. rm -f $TMP_PREFIX.* 

整個腳本判斷的根據通過單個ip連接數,然后根據/usr/local/ddos/ddos.conf里面定義的NO_OF_CONNECTIONS的值判斷有沒有達到drop條件,如果達到再根據里面定義(APF_BAN默認是APF,如需要iptables需要改)使用:iptables或者APF來drop掉這個ip地址,讓它在規定的時間內(由BAN_PERIOD定義)無法訪問該服務器。可以看出整個腳本如果使用iptables過濾的話是很簡單的,完全自己可以寫一個腳本來實現上面功能。

  1. #!/bin/bash  
  2.  
  3. NO_OF_CONNECTIONS=100 
  4. BLACKLIST=/var/tmp/black  
  5. WHITELIST=/var/tmp/white  
  6. #cat ${ACCCESS_LOG} | awk '{print $1}' | sort | uniq -c | sort -r -n | head -n 200 >> my_check  
  7.  
  8. if [ ! -f ${BLACKLIST} ]; then  
  9.     touch ${BLACKLIST}  
  10. fi  
  11.  
  12. if [ ! -f ${WHITELIST} ]; then  
  13.     touch ${WHITELIST}  
  14. fi  
  15.  
  16. while read Num Ipaddr ;do  
  17.     if [ $(grep -c $Ipaddr ${WHITELIST}) -ne 0 ]; then  
  18.         echo 'Allow IP:' $Ipaddr  
  19.         continue  
  20.     fi  
  21.     if [ $(grep -c $Ipaddr ${BLACKLIST}) -eq 0 ] ; then  
  22.         if [ $Num -gt $NO_OF_CONNECTIONS ];then  
  23.             echo 'Deny IP:' $Ipaddr   
  24.             echo $Ipaddr >> ${BLACKLIST}  
  25.             iptables -I INPUT -p tcp --dport 80 -s $Ipaddr -j DROP  
  26.         fi  
  27.     fi  
  28. done <<-'EOF'   
  29. `netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr`  
  30. EOF 

只是上面的腳本少了解封被禁止的ip過程,我個人認為解封沒有太大意義.無論是DoS Deflate或者是上面我自己寫的腳本,最重要的都是NO_OF_CONNECTIONS值設置。

iptables
iptables 四表五鏈

  1. iptables(nat,filter,mangle,raw)(INPUT,FORWARD,OUTPUT,PREROUTING,POSTROUTING)   
  2.     filter: INPUT, OUTPUT, FORWARD  
  3.     nat: PREROUTING, POSTROUTING, OUTPUT  
  4.     mangle: PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING  
  5. 規則管理類:  
  6.     -A  
  7.     -I   
  8.     -D   
  9.     -R   
  10. 鏈接管理類:  
  11.     -F, flush, 清空鏈  
  12.     -N, new,   新建鏈  
  13.     -X, delete, 刪除自定義的空鏈  
  14.     -E, rename  
  15. 默認策略:  
  16.    -P, policy  
  17. 清空計數器:  
  18.     -Z, zero  
  19. 每條規則(包括默認策略)都有兩個計數器:  
  20.     被此規則匹配到的所有數據包的個數;  
  21.     被此規則匹配到的所有數據包的大小之和;  
  22. 查看類:  
  23.     -L, list  
  24.     -n, numeric  
  25.     -v, verbose  
  26.     -vv  
  27.     -vvv  
  28.     -x, exactly  
  29.        --line-numbers   
  30. 基本匹配:  
  31.     -s SOURCE:IP, NETWORK  
  32.     -d DESTINATION:IP, NETWORK  
  33.     -p {tcp|udp|icmp}  
  34.     -i INTERFACE  
  35.     -o INTERFACE  
  36.    
  37. 擴展匹配:(調用iptables的模塊,以便擴展iptables的匹配功能, -m)  
  38. 隱含擴展  
  39.     -p tcp   
  40.         --sport PORT  
  41.         --dport PORT  
  42.         --tcp-flags ACK,SYN,RST,FIN SYN = --syn  
  43. --tcp-flags ACK,SYN,RST,FIN SYN,ACK,RST,FIN  
  44. --sport 22:23  
  45.     
  46.     -p UDP  
  47.         --sport PORT  
  48.         --dport PORT  
  49.     -p icmp  
  50.        --icmp-type  
  51. 8: echo-request  
  52. 0: echo-reply   
  53.    
  54. 顯式擴展:  
  55.    -m state --state NEW  
  56.   NEW  
  57.   ESTABLISHED  
  58.   INVALID  
  59.   RELATED  
  60.     
  61.     -m multiport   
  62.         --source-ports 22,53,80  
  63.         --destination-ports  
  64.         --ports  
  65.     
  66.     -m iprange  
  67.         --src-range  
  68.         --dst-range  
  69.      
  70.     -m limit  
  71.         --limit  
  72.         --limit-burst  
  73.      
  74.     -m string  
  75.         --algo bm|kmp  
  76.         --string "STRING"  
  77.    
  78. 處理動作  
  79.     -j   
  80.         ACCEPT  
  81.         DROP  
  82.         REJECT  
  83.         SNAT  
  84.         DNAT  
  85.         REDIRECT  
  86.         NASQUERADE 

基本操作舉例:

  1. iptables -F    ##清空所有的鏈中的規則-F 僅僅是清空鏈中規則,并不影響 -P 設置的默認規則 ,故使用這條命令一定要小心。  
  2. iptables -t nat -F PREROUTING        ##把nat表中的PREROUTING鏈中的規則清空      
  3. iptables -t filter -A INPUT -s 172.16.0.0/16 -p udp --dport 53 -j DROP ##A插入一條規則默認放在最后一條      
  4. iptables -t filter -I INPUT -s 172.16.0.0/16 -p udp --dport 53 -j DROP ##I插入一條規則默認放在第一條      
  5. iptables -t filter -I INPUT 3 -s 172.16.0.0/16 -p udp --dport 53 -j DROP ##插入一條規則放在第三條     
  6. iptables -L -n --line-numbers ##查看iptables規則,并在每條規則前顯示行號。     
  7. iptables -D INPUT 5    ## 刪除INPUT 鏈的第五條規則  
  8. iptables -t nat -A PREROUTING -d 1.1.1.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.103:8080##DNAT 

自定義鏈應用:(先定義一個自定義鏈clean_in,然后把自定義鏈關聯到主鏈上)

  1. iptables -N clean_in  
  2. iptables -A clean_in -d 255.255.255.255 -p icmp -j DROP  
  3. iptables -A clean_in -d 172.16.255.255 -p icmp -j DROP  
  4. iptables -A clean_in -p tcp ! --syn -m state --state NEW -j DROP  
  5. iptables -A clean_in -p tcp --tcp-flags ALL ALL -j DROP  
  6. iptables -A clean_in -p tcp --tcp-flags ALL NONE -j DROP  
  7. iptables -A clean_in -d 172.16.100.1 -j RETURN    
  8.  
  9. iptables -A INPUT -d 172.16.100.1 -j clean_in 

iptables高級應用:(使用iptables前需要了解tcp連接/斷開過程和ip報文頭部結構,tcp數據包頭結構。)
##服務器(本地ip192.168.1.103)只允許22,53,80,443端口和本機通迅并拒絕本機向外主動發起請求(防C/S******)

  1. iptables -I INPUT 1 -m state --state ESTABLISHED -j ACCEPT   
  2. iptables -A INPUT -d 192.168.1.103 -p tcp -m multiport --destination-ports 22,53,80,443  -m state --state NEW -j ACCEPT   
  3. iptables -A OUTPUT  -m state --state ESTABLISHED -j ACCEPT   
  4. iptables -P INPUT DROP   
  5. iptables -P OUTPUT DROP 

##連接數限定(設置ssh連接單個ip不能超過2個,利用recent和state模塊限制單IP在300s內只能與本機建立3個新連接。被限制五分鐘后即可恢復訪問。常用于防ddos***)

  1. iptables -I INPUT 1 -m state --state ESTABLISHED -j ACCEPT  
  2. iptables -I INPUT 2 -d 192.168.1.103 -p tcp --dport 22 -m state --state NEW -m connlimit ! --connlimit-above 2 -j ACCEPT   
  3. iptables -A INPUT  -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH  
  4. iptables -A INPUT  -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 2 --name SSH -j DROP  
  5. iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT   
  6. iptables -P INPUT DROP   
  7. iptables -P OUTPUT DROP 

##匹配數據包數限制(--limit 平均速率,--limit-burst峰值速率)

  1. iptables -I INPUT 1 -m state --state ESTABLISHED -j ACCEPT   
  2. iptables -A INPUT -d 202.75.219.205 -p tcp --dport 80 -m state --state NEW -m limit --limit 30/second --limit-burst 50 -j ACCEPT  
  3. iptables -A INPUT  -d 202.75.219.205 -p tcp -m state --state NEW -m multiport --destination-ports 22,53,80,443 -j ACCEPT  
  4. iptables -A OUTPUT   -m state --state ESTABLISHED -j ACCEPT    
  5. iptables -P INPUT DROP   
  6. iptables -P OUTPUT DROP 


 

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

呈贡县| 彰化市| 潢川县| 集安市| 汕尾市| 柘荣县| 岱山县| 东乌| 古浪县| 泽库县| 乳山市| 周至县| 西峡县| 峨边| 灌云县| 长沙县| 姚安县| 宁陕县| 二连浩特市| 麻城市| 廉江市| 工布江达县| 柳河县| 平阳县| 肥城市| 靖江市| 广昌县| 铁岭县| 洱源县| 紫金县| 四子王旗| 巨鹿县| 上思县| 杨浦区| 银川市| 惠来县| 青铜峡市| 桂阳县| 襄城县| 宝山区| 鄂伦春自治旗|