×Ô½¨CDN·ÀÓùDDoS£¨1£©£ºÖª¼ºÖª±Ë£¬½¨Éè³Ö¾Ã·ÀÏß
ǰÑÔ
±¾ÒéÌâÊÇÎÒÃÇÔÚOWASPº¼ÖÝÇø2013ÄêËêÄ©Äê³õ°²È«É³ÁúÖнøÐзÖÏíµÄÄÚÈÝ£¬ÔÚ´ËÎÒÃǶÔÕâ¸öÒéÌâµÄÕûÌåÄÚÈݽøÐÐÁËÖØÐ¹éÄÉÊáÀí£¬ÐγÉÁËÎÄ×Ö°æ¡£
ÔÚ±¾ÎÄÖУ¬DDoSµÄ°¸ÀýÓëÓ¦¶Ô¾Ñé¾ùÀ´×ÔÓÚijÊг¡Õ¼ÓÐÂʺܸߵĿͷþϵͳËùÓöµ½µÄʵ¼Ê³¡¾°£¬·Ö±ð´Ó³É±¾¡¢Ð§Âʺ;ßÌå¼Ü¹¹Éè¼Æ£¨Ñ¡ÐÍ¡¢ÅäÖá¢ÓÅ»¯µÈ£©½Ç¶ÈÀ´·ÖÎöͨ¹ý×Ô½¨CDNÀ´Ó¦¶Ô²»Í¬ÀàÐ͵ÄDDoS¹¥»÷¡£
±³¾°½éÉÜ
¿Í·þϵͳµÄÖ÷ÒªÒµÎñÊÇÌṩ»ùÓÚÍøÒ³µÄʵʱ¶¯Ì¬µÄÎÄ×ÖÁÄÌ죬Ö÷ÒªÓ¦ÓÃÔÚ¸÷ÀàÍøÂçÉÌÆ·ÏúÊÛ¡¢ÍøÕ¾ÔÚÏ߿ͷþµÈÁìÓò£¬×ÜÓû§Êý58Íò£¬Í¬Ê±ÔÚÏß»îÔ¾µÄÓû§Ô¼12Íò/Ìì¡£
ÕâЩӦÓÃÁìÓòͨ³£ÐÐÒµÖ®¼äµÄ¾ºÕù±È½Ï¼¤ÁÒ£¬ÆäÖаüÀ¨ÔÚÏßÏÂÎÞ·¨ÃûÕýÑÔ˳µÄ»ÒÉ«+±©Àû²úÒµ£¬µ¼Ö¾ºÕù¶ÔÊÖÖ®¼ä¾³£·¢¶¯DDoS¶ñÒâ¹¥»÷¡£µ«ÓªÏúÍøÕ¾ÍùÍùÊǵ¥Ãæ¼ÓËÙ£¬¼ÓÉÏÍÆ¹ãʱЧÐÔºÜÇ¿£¬ºÜÄѱ»³¹µ×´ò»÷£¬ÓÚÊÇһЩ×Ô×÷´ÏÃ÷µÄºÚ¿Íͨ¹ý¹¥»÷ÍøÕ¾µÄÔÚÏ߿ͷþϵͳ£¬µ¼ÖÂÍøÕ¾ÎÞ·¨¸ú·Ã¿Í¹µÍ¨£¬²»Äܽ»Ò×£¬´Ó¶ø´ïµ½¶ñÒâ¹¥»÷µÄÄ¿µÄ¡£Òò´Ë¿Í·þϵͳÕâ¸öÔ±¾ÓÐÖúÓÚÍøÕ¾ÓªÏúµÄ¹¤¾ß·´¶ø³ÉÁ˱»¹¥»÷µÄÖ÷Òª¶ÔÏó£¬ËäÈ»É˵ÃίÇü£¬µ«Ò²²»µÃ²»Ãæ¶ÔÌôÕ½¡£
ÎÒÃÇÔâÓöµÄDDoS¹¥»÷ÀàÐͰüÀ¨£ºÑÓ»ºÐÔµÄCC¹¥»÷ºÍÖÂÃüµÄ´óÁ÷Á¿¹¥»÷¡£ÏÂÃæ½«¶ÔÁ½ÖÖ¹¥»÷·½Ê½µÄ¹¥»÷ÌØµã¡¢·ÀÓù˼·ºÍÎÒÃÇÓùýµÄһЩ·ÀÓù·½°¸½øÐмòµ¥µÄ½éÉÜ¡£
ÑÓ»ºÐÔµÄCC¹¥»÷
¹¥»÷ÌØµã
¹¥»÷Õß½èÖúÍøÂçÉÏÌṩµÄ´óÁ¿´úÀí·þÎñÆ÷IP£¬ÀûÓù¥»÷Èí¼þ£¬Éú³ÉÖ¸ÏòÊܺ¦Ö÷»úµÄºÏ·¨ÇëÇó¡£
ÕâÀ๥»÷¶Ô¹¥»÷ÕßÀ´Ëµ³É±¾µÍ£¬¶øÇÒÍøÉÏÏֳɵÄÈí¼þ¶à£¬¹¥»÷µÄ·ç¸ñÏà¶Ô±È½Ï¡±ÎÂÈá½÷É÷¡±£¬ÆäÄ¿µÄÊÇͨ¹ýÖð½¥Ôö¶àµÄÀ¬»øÇëÇó£¬ÏûºÄ·þÎñÆ÷µÄÕý³£Ó¦ÓÿªÏúÈçCPU,ÄÚ´æ,Íø¿¨Ñ¹Á¦£¬ÉõÖÁÊÇÍøÂçÓµ¶Â£¬È»ºóÇëÇóÎÞÏìÓ¦£¬ÎÞ³ö¿ÚÁ÷Á¿£¬µ¼ÖÂÍøÕ¾±äÂý£¬´ïµ½ÍøÕ¾ÎÞ·¨·ÃÎʵÄÄ¿µÄ¡£
·ÀÓù˼·
¶ÔÓÚÕâÀ๥»÷£¬ÓÐÁ½¸ö©¶´Ìصã¿ÉÒÔ±»ÎÒÃÇÀûÓ㬴Ӷø×èÖ¹ÕâÀà¶ñÒâµÄCC¹¥»÷£¬¹Ø¼üÊÇÏìÓ¦Ò»¶¨Òª¿ì¡£
µÚÒ»¸öÌØÕ÷£¬ÓÉÓÚÊÇÈËΪÉú³ÉÁË´óÁ¿µÄ·Ç·¨ÇëÇó£¬Òý·¢ÍøÂçµÄincomingÁ÷Á¿»áÒì³£Ôö´ó£¨Õý³£Çé¿öÏ£¬incomingÁ÷Á¿Ð¡£¬outgoingÁ÷Á¿´ó£©£»µÚ¶þ¸öÌØÕ÷£¬¹¥»÷Á¦¶ÈÓÐÒ»¸ö½¥Ôö¹ý³Ì£¬ÎÒÃÇÒª³ä·ÖÀûÓÃÕâ¸ö±¦¹óµÄʱ¼ä£¬ÈûúÆ÷µÚһʱ¼äÖÇÄܵÄ×ö³ö·´Ó¦£¬µ÷ÓÃÈÕÖ¾·ÖÎö½Å±¾×ö¾ö²ß£¬¼ÓÒÔ·ÀÓù»òÕßÒýÁ÷¡£
¾ßÌåµÄ·½·¨ÓжàÖÖ£¬ÕâÀïÖ»ÁоÙÎÒÃÇËùʹÓõÄÁ½ÖÖ£º
1.ʹÓÃ¼à¿ØÈí¼þµÄÁ÷Á¿¼à¿ØÍ¼À´´¥·¢ÈÕÖ¾·ÖÎö½Å±¾£¬ÈçͼËùʾ£¨zabbixΪÀý£©£º

2.ÀûÓÃbash½Å±¾À´Í³¼ÆincomingÁ÷Á¿£¬·¢ÏÖÒ쳣ʱ£¬µ÷ÓÃÏàÓ¦ÈÕÖ¾·ÖÎö½Å±¾£¬ÊµÏÖ×è»÷¡£
#!/bin/bash DEV=$1 # ¶¨Òå¼àÌýÍø¿¨ LIMIT=$2 # ¶¨Òå´¥·¢ãÚÖµ WARN=$3 #¶¨Ò屨¾¯ãÚÖµ TIME=$4 # ¶¨ÒåÍø¿¨Êý¾Ý²É¼¯ÆµÂÊ mobile_num="13xxxxxxxxxx" # ¶¨Òå½ÓÊÕ±¨¾¯¶ÌÐÅÊÖ»úºÅÂë LOCK="/tmp/.exchange_proxy.lock"
[ -z $DEV ] && echo "$0 ethx limit_band(kbps)
warn_limit(kbps) seconds" && exit
0
[ -z $LIMIT ] && LIMIT=800000 # 800 kbps
[ -z $WARN ] && WARN=900000 # 900 kbps
[ -z $TIME ] && TIME=10 # 10s
send_fetion() {
#¶¨Òå·ÉÐű¨¾¯¶ÌÐŽӿÚ
}
while : ; do
net_flood=`ifconfig $DEV|sed -n "8"p`
rx_before=`echo $net_flood|awk '{print $2}'|cut
-c7-`
sleep $TIME
net_flood=`ifconfig $DEV|sed -n "8"p`
rx_after=`echo $net_flood|awk '{print $2}'|cut
-c7-`
rx_result=$[(rx_after-rx_before)/$TIME]
over_bw=$[(rx_result-LIMIT)]
if [ $over_bw -gt 0 ];then
BOOL=`echo "$rx_result>$WARN"|bc`
#ÅжÏÊÇ·ñΪ¹¥»÷
if [ $BOOL -eq 1 ];then
# È·ÈÏΪ¹¥»÷£¬Ö´ÐвßÂÔ²¢·¢ËͶÌÐÅ
send_fetion $mobile_num "$STR"
else
# Á÷Á¿³¬±ê£¬·¢ËͶÌÐÅ£¬ÇëÁôÒâ
send_fetion $mobile_num "$STR"
fi
fi
sleep $TIME
done |
¹ýÂ˽ű¾ÊµÏÖÔÀí¾ÍÊÇÔÚ·þÎñÆ÷ÉÏÆô¶¯ÈÕÖ¾·ÖÎö»úÖÆ£¬ÔÚµÚһʱ¼äÕÒ³öÒì³£µÄIP¡¢Agent£¬URL»òÕ߯äËüÌØÕ÷Â룬´ÓÄں˲ãÀûÓÃiptables¶Ô¶ñÒâIP½øÐйýÂË£¬ÔÚÓ¦ÓòãÉÏÀûÓÃnginxµÄhttp¹Ø¼ü´Ê½øÐйýÂË£¬Ö±½Ó·µ»Øbadcode
444½øÐÐÀ¹½Ø¡£
·½°¸È±µã
ÎÞÂÛÊÇ´ÓÄں˼¶±ð»¹ÊÇÓ¦Óü¶±ð£¬¶Ô·þÎñÆ÷±¾ÉíµÄCPUºÍÄÚ´æµÄÒÀÀµ¶È¸ß£¬ÈçiptablesµÄ¹ýÂ˱¾Éí¶Ô·þÎñÆ÷µÄCPUѹÁ¦ºÜ´ó£¬ÔÚ×èÖ¹IP³¬¹ý15K¸ö£¬·þÎñÆ÷»ù±¾²»¿ÉÓÃÁË£»NginxÔÚ×èÖ¹HTTPÇëÇóʱ£¬ÓÉÓÚnginx»á¸øÃ¿¸öhttpÇëÇó·ÖÅäÄÚ´æºÍ´¦ÀíÁ´¹æÔò£¬ÄÚ´æ×ÊÔ´ºÄ¾¡£»Ëæ×ÅÁ÷Á¿µÄ²»¶ÏÔö´óºÍ¹¥»÷ʱ¼äµÄ³ÖÐø£¬Íø¿¨Ñ¹Á¦Ò²´ó£¬×ÊÔ´×îÖÕ±»ºÄ¾¡¡£
ËùÒÔ£¬Õâ¸ö·½°¸Öα겻Öα¾¡£
ÖÂÃüµÄ´óÁ÷Á¿¹¥»÷
¹¥»÷ÌØµã
ÕâÖÖ¹¥»÷ͨ³£ÒÔtcp syn£¬icmpºÍUDP£¨ÓÈÆäÊÇUDP°ü£¬µ¥UDPµÄÊý¾Ý°ü¿ÉÒԺܴ󣩷½Ê½ÎªÖ÷¡£¿Í·þϵͳÔâÓöµ½µÄ×î´óµÄÒ»´ÎΪ16GµÄ¹¥»÷Á÷Á¿£¬Õû¸ö»ú·¿¶¼±»Ó°Ïìµ½¡£¹¥»÷Õßͨ³£¿ØÖÆ´óÁ¿È⼦»òÕßÖ±½Ó¹´½áIDCÀïµÄ·þÎñÆ÷ºÍ´ø¿í×ÊÔ´£¬¶ÔÄ¿±ê½øÐÐÁ÷Á¿´ò»÷¡£´ËʱÁ÷Á¿»á¿ìËÙÕ¼Âú·þÎñÆ÷µÄÍøÂç´ø¿í£¬µ¼ÖÂÎÞ·¨ÏìÓ¦ÈκÎÓû§ÇëÇó¡£
ÕâÀ๥»÷ÐèÒª¹ºÂò´óÁ¿´ø¿í×ÊÔ´£¬¶ÔÓÚ¹¥»÷·½À´Ëµ£¬³É±¾Í¦¸ß£¬µ«ÊÇÏÂÊÖ¡°¿ìºÝ×¼¡±£¬Ä¿µÄÊÇÈÃÍøÕ¾ÔÚ¶Ìʱ¼äÄÚ³¹µ×ÎÞÏìÓ¦¡£
ÓÉÓÚÕâÀ๥»÷»áÒýÆðÁ÷Á¿¶¸Ôö£¬IDCÀïµÄÁ÷Á¿¼à¿ØÉ豸Ҳ»áºÜÃ÷ÏԵIJì¾õµ½Õâ¸öÏÖÏó¡£IDCͨ³£²ÉÈ¡µÄ´ëʩһ°ãÊǶª³µ±£Ë§£¬Ö±½Ó½«Õâ¸ö±»¹¥»÷µÄIPÀºÚÃûµ¥ÉõÖÁÖ±½Ó°ÎÏߣ¬Èù¥»÷¶ÔÏó×Ôɱ¡£Õâ¶Ô±¾Ó¦¸ÃÐèÒª°ïÖúµÄ¿Í»§ÎÞÒÉÊÇÂä¾®ÏÂʯ£¬Ñ©ÉϼÓ˪¡£
·ÀÓù˼·
Ó¦¸¶´ËÀàÁ÷Á¿¹¥»÷µÄ·ÀÓù·½Ê½ÓУº
1.¼ÜÉèÓ²·À»ðǽ
2.×âÓø߷À½Úµã
3.×âÓÃCDN·ÖɢĿ±êÁ÷Á¿
·½°¸È±µã
¼ÜÉèÓ²·À»ðǽ£ºÊÐÃæÉÏ2GÓ²·Àµ¥¼ÛÔÚ10W×óÓÒ£¬¼¯Èº·ÀÓù´ú¼Û¸ü´ó£¬ËäȻӲ¼þ¼¶µÄ·ÀÓùÐÔÄܽϸߣ¬µ«Ãæ¶ÔÁ÷Á¿ºéˮҲÊDZˮ³µÐ½£¬ÇÒ¸±×÷ÓÃÒ²²»ÈÝСêï¡£
×âÓø߷À½Úµã£º¸ß·À½ÚµãÓзÀÓù´ø¿í£¬·ÀÓùÁ÷Á¿£¬¹²Ïí¶ÀÏíÇø·Ö£¬¸÷¸öÌײ͵Ä×éºÏ¼Û¸ñÏà²îºÜ´ó£¬·ÖÁ÷²ßÂÔÒ²²»Í¬£¬³¬¹ý¸ß·À³ÐŵµÄÁ÷Á¿ºó£¬·ÀÓùʧЧ»òÕßÔÙ¼ÓÇ®£¬µ«¶¼ÓÐÐÔÄÜËðºÄºÍ¸±×÷Óá£
×âÓÃCDN·ÖɢĿ±êÁ÷Á¿£ºÊÐÃæÉϵÄCDNÌṩÉ̶¼ÊÇÒÔÁ÷Á¿ÎªÊշѱê×¼£¬Õâ¶ÔÓÚ¾³£ÔâÊÜÁ÷Á¿¹¥»÷µÄÍøÕ¾À´Ëµ£¬·´¶øÒªÎª¹¥»÷Á÷Á¿Âòµ¥£¬Õâ×ÅʵÈÃÈË¿ÞЦ²»µÃ¡£
ÎÞÂÛÊDzɹºµÄÓ²¼þ³É±¾ºÍ¸ß·À×ÊÔ´»¹ÊÇCDN¼ÓËÙ£¬¶¼³É±¾°º¹ó£¬ÏÐʱ×ÊÔ´ÀûÓÃÂʵͣ¬¹¥»÷¸ß·åÊ±Ãæ¶ÔÓÐ×éÖ¯ÓйæÄ£µÄÁ÷Á¿Ê±ÓÖ×½½ó¼ûÖ⣬»¹°éÓи±×÷Ó㨲μûÂÌÃ˺ڶ´·À»ðǽµÄÔÀí£©£¬²¢·Ç³¤¾ÃÖ®¼Æ¡£
´¦ÓÚÈõÊÆµÄ±»´ò»÷·½
×ÛÉÏËùÊö£¬ÎÒÃÇÎÞÂÛ×öÄĸö¾ñÔñ¶¼ºÜÍ´¿à¡£
ÎÒÃǸú·¢Æð¹¥»÷µÄÈËÓйý³¤´ï½üÒ»ÄêµÄ½»Á÷£¬Ä¿Ç°Á˽⵽ÕâÊÇÒ»¸ö·Ç³£ÍêÕûµÄ²úÒµÁ´£¨ÉÏÓÎÈËÔ±ÔçÒÑÉí¾Óº£Í⣬Զ³ÌÒ£¿ØÖ¸»ÓÐж¯£¬¸ù±¾ÎÞ·¨²é´¦£©£¬ËûÃÇÊÖÉÏ¿ØÖÆÁË´óÁ¿µÄ¹¥»÷×ÊÔ´£¬²¢ÇÒ¹¥»÷×ÊÔ´±¾Éí¾ÍÀ´×ÔÓÚIDC¡£¹¥»÷ÕßΪÁË¿ìËÙIJÀû£¬±¾ÉíҲϲ»¶ºÍÍÆ¼öÕâÖÖÖ±½ÓÁ˵±µÄ·½Ê½À´¶ÔÄ¿±ê½øÐдò»÷£¬ÔÚ·¢¶¯¹¥»÷ʱ£¬ËûÃÇÄܹ»µ÷¼¯µ½¶à¸öIDCµÄ´ø¿í×ÊÔ´À´¶ÔÄ¿±ê´ò»÷£¨ÕâÒ»ÏÖÏóÒ²ÕÛÉä³öÁ˵±Ç°¹úÄÚ²»¹æ·¶µÄIDC¹ÜÀí£©¡£
´ÓÕâÒ»½Ç¶ÈÀ´¿´£¬±»´ò»÷·½ÓÀÔ¶¶¼´¦ÓÚÈõÊÆµØÎ»£¬ÒÔÊÆµ¥Á¦±¡µÄ¼Ü¹¹ºÍ¼«ÆäÓÐÏÞµÄ×ÊÔ´£¬¸ù±¾ÎÞ·¨µÖ¿¹Ç¿´óµÄ¼¯Èº×ÊÔ´¹¥»÷¡£
ÎÒÃÇһֱ˼¿¼Ò»¸öÎÊÌ⣺Èç¹ûÎÒÃdzÖÐøÍ¶ÈëÕâЩ×ʽð£¬Î£»ú¹ýÈ¥»òÕßÈô¸ÉÄêºó£¬ÄܸøÎÒÃÇÁôÏÂЩʲô£¿Òò´Ë£¬ÎÒÃÇÌø³öÁ˵¥½Úµã·ÀÓùºÍ×âÓÃCDNµÄ˼·£¬×ÛºÏÉÏÊö·½°¸µÄÓŵ㣬ת¶ø×Ô½¨CDNµÄ·½°¸¡£
³¤¾ÃÖ®¼Æ£º×Ô½¨CDN
×Ô½¨CDNµÄºÃ´¦Óм¸¸ö·½Ã棺
1.ÅÔ·×öÁ÷Á¿ÇåÏ´£¨¶»¶»³¤ÔÚ±ðÈËÁ³ÉÏ×îºÃ£©
2.×ÊÔ´³ä·ÖÀûÓãºÎÞ¹¥»÷µÄʱºò£¬×ö·ÓɼÓËÙ£¬Óй¥»÷µÄʱºò£¬×ö½ÚµãÇл»£¨Ò»Îï¶àÓã©
3.Ëæ×ÅͶÈëµÄ×ʽðÔö¼Ó£¬·ÀÓùDDoS¹¥»÷µÄÄÜÁ¦ÔöÇ¿£¨³¤Ô¶¹æ»®£¬×Ê½ð»Ø±¨Âʸߣ©
ÓйØ×Ô½¨CDN¾ßÌ彨ÉèµÄ˼·ÈçºÎ£¬³É±¾¶àÉÙ£¬ÎÒÃÇ»áÔÚϵÁеÄÏÂһƪÎÄÕÂÖнøÐнéÉÜ¡£
×Ô½¨CDN·ÀÓùDDoS£¨2£©£º¼Ü¹¹Éè¼Æ¡¢³É±¾Ó벿Êðϸ½Ú
ÔÚ±¾ÏµÁеĵÚһƪÎÄÕÂÖУ¬ÎÒÃǽéÉÜÁËÎÒÃǿͷþϵͳÓöµ½DDoS¹¥»÷µÄÇé¿ö£¬ÒÔ¼°ÎÒÃÇΪʲô¾ö¶¨²ÉÓÃ×Ô½¨CDNµÄ·½Ê½À´½â¾öÕâ¸öÎÊÌâµÄÔÒò¡£
ÏÂÃæ£¬ÎÒÃǽ«½éÉÜ×Ô½¨CDNµÄ¾ßÌ彨Éè¹æ»®£¬Ö÷Òª´ÓÒÔϼ¸¸ö·½Ãæ½øÐп¼Á¿£ºÓ²¼þ³É±¾¡¢´ø¿í³É±¾¡¢¼Ü¹¹Éè¼Æ¡¢Êµ¼Ê²¿Êð¡£
Ó²¼þ³É±¾
ÔÚÓ²¼þÉÏ£¬ÎÒÃÇÑ¡Ð͵ÄÐèÇóÊÇÔÚ1UµÄ»ù´¡ÉϾßÓÐÇ¿¾¢µÄÐÔÄÜ£¬Í¬Ê±ÐÔ¼Û±ÈÒª¸ß¡£
ÎÒÃÇÑ¡ÔñÁË£¨Ç¿Ñõ£©Ë«×ÓÐÇ·þÎñÆ÷£¬ÆäÓ²¼þ¹æ¸ñΪ£º1U»úÉí+Ö§³Ö˫·ÖÁÇ¿CPU+×î´óÖ§³Ö48GÄÚ´æ+˫ǧÕ×Íø¿Úx2+H3C
S1208°Ë¿ÚǧÕ×£¬ÌṩÈýÄêÖʱ£·þÎñ£¬×ܼÛÔ¼1.5Íò¡£
´ø¿í³É±¾
µ¥Ïß»ú·¿µÄ»ú·¿ºÍ´ø¿í×ÊÔ´£¬ÓÉÓÚ²»ÐèÒª¾¹ýµÚÈý·½ÀÏß´éºÏ£¬Ö±½Ó´ÓÔËÓª´úÀíÉ̹ºÂò£¬Òò´ËÑ¡ÔñÓàµØ´ó£¬ÐԼ۱ȸߡ£ÒÔ×âÓõçÐÅ¡¢ÁªÍ¨µ¥Ïß×ÊԴΪÀý£¬Ã¿ÌõÏß¶ÀÏí100M´ø¿í£¬Ìṩ8¸öIP£¬ÓÐЩ»ú·¿×Ô´øÓ²·À£¬Äܹ»·ÀÓù5G-10GÁ÷Á¿¡£
ƽ¾ù·ÑÓã¬Ã¿¸ö½Úµã´ø¿í³É±¾»ù±¾ÔÚ1.6~2.5Íò/Äê¡£
¼Ü¹¹Éè¼Æ
CDN¼Ü¹¹ÉÏÒª³ä·ÖÌåÏÖ³ö¿¹¹¥»÷ÄÜÁ¦ºÍÁé»îÓ¦±äµÄÔÔò¡£Òò´Ë£¬ÎÒÃǽ«CDN½Úµã·Ö½â³É·´Ïò´úÀí+»º´æ¼ÓËÙ+¹¥»÷·ÀÓùÕâÈý¸ö²»Í¬²ã´ÎµÄ¹¦Äܽṹ¡£
1.·´Ïò´úÀí¹¦ÄÜ£¨×÷ÓãºÂ·ÓɼÓËÙ£¬Òþ²ØÖ÷½Úµã£¬¸ºÔؾùºâ£©
2.»º´æ¼ÓËÙ¹¦ÄÜ£¨×÷Ó㺾²Ì¬ÍÆËÍ£¬½ÚÊ¡ºó¶ËÖ÷½Úµã´ø¿í£©
3.¹¥»÷·ÀÓù¹¦ÄÜ£¨×÷Ó㺿ìËÙ½âÎö£¬Æ¥Åä¹ýÂ˶ñÒâ¹¥»÷£©
¿ªÔ´ÊÀ½çÀïÄܹ»µ£µ±·´Ïò´úÀí¼°»º´æµÄÈí¼þ²»ÉÙ£¬¶øÇÒ¸÷ÓÐÓÅÁÓ¡£×÷Ϊ¼Ü¹¹Ê¦£¬Òª¿¼ÂÇÈçºÎÑ¡ÐÍ£¬ÎÒÃÇ´ÓÐÔÄÜ¡¢¹¦ÄÜ¡¢ÅäÖÃÉÏÀ´½øÐбȽÏɸѡ¡£

ÎÒÃǶÔÕâÈý²ã¹¦Äܽṹ·Ö±ð½øÐÐÁ˲âÊÔµ÷Óż°Éú²úÏßµÄʵ¼ù¼ìÑ飬´ÓÒÔÏ·½ÃæÆÀ¹À£º
1.HTTP·ÀÓùÐÔÄÜ£ºHAProxyÔÚÓ¦¶Ô´óÁ÷Á¿CC¹¥»÷ʱ£¬×öÕýÔòÆ¥Åä¼°Í·²¿¹ýÂËʱ£¬CPUÏûºÄÖ»Õ¼10%~20%¡£ÆäËüÈí¼þ¾ù¿ñÕ¼CPU×ÊÔ´Ô¼90%ÒÔÉÏ£¬ÈÝÒ׳ɯ¿¾±µ¼ÖÂÕû¸öϵͳÎÞÏìÓ¦¡£
2.·´Ïò´úÀíÐÔÄÜ£ºµ¥´¿×ª·¢Ð§ÂÊÒÔÄڴ滺´æÐ͵ÄVarnishÐÔÄÜ×îÇ¿£¬ATSºÍNginx´ÎÖ®£¬¿¼ÂÇ´óÈÝÁ¿»º´æÒòËØ£¬ATSÒ²ÊǸö²»´íµÄÑ¡Ôñ£¬µ«ÎĵµÈ±·¦£¬ÐèÒª³ÖÐø¹Ø×¢¡£NginxÊÇרÃÅÕë¶ÔC10KµÄ²úÎÐÔÄܲ»´í£¬ÅäºÏÖÚ¶à²å¼þ£¬¸ÄÔìÐÔºÜÇ¿¡£
3.¹ýÂ˹æÔòµÄ¿ÉÅäÖÃÐÔ£ºHAProxy£¬ATS£¬Squid¾ùÖ§³Ö¹æÔòÎļþ¶ÁÈ¡¡¢ACL¶¨ÖƺÍÈȼÓÔØ¡¢ÈÈÆô¶¯¡£NginxÔò²»Ö§³ÖÍⲿÎļþÕýÔòÆ¥Å䣬ÂÔ²îÒ»µã£¬µ«¿ÉËÜÐÔÇ¿¡£
Òò´Ë£¬×ÛºÏÉÏÊö¿¼ÂÇ£¬×îÖÕÎÒÃDzÉÓõļܹ¹ÊÇHAProxy+Varnish/ATS/NginxµÄ×éºÏ£¬¼´·ÀÓùÐÍ·´Ïò´úÀí»º´æ·½°¸£¬¹¦ÄܽÇÉ«ÈçÏ£º
1.Ç°ÃæÓÉHAProxyÈ«Á¦¸ºÔ𶯾²×ÊÔ´·ÖÀ룬ʵÏֻỰճÖÍ£¬½Úµã¸ºÔؾùºâ£¬¹ÊÕÏ×ªÒÆ£¬Óöµ½Î£¼±Ê±³Ðµ£»ùÓÚHttpÐÒéµÄCCÀàÐ͹¥»÷·ÀÓù¡£
2.ºóÃæÎª¿É²å°ÎÌæ»»µÄ·´Ïò´úÀí»º´æÒýÇæ£º¸ù¾ÝÉú²úÏßÉϵÄʵ¼ÊÓ¦Óó¡¾°¼°»º´æ¶ÔÏóµÄÈÝÁ¿À´¾ö¶¨Ê¹ÓÃÄÚ´æÐ͵Ävarnish»òÕßÊÇ´ÅÅÌÐ͵Äats£¬Èç¹ûÐèÒª¶¨Öƹ¦ÄܺÜÇ¿£¨·ÀµÁÁ´£©µÄ·´Ïò´úÀíÈçNginx+plugins¡£
Õâ¸ö×éºÏ×î´óµÄÌØµãÊÇ£º
l.Ö§³ÖÍⲿ¹ýÂ˹æÔòµÄ¶ÁÈ¡£¬ÓÈÆäÊǹؼü×Ö·û´®ÎÞÐèתÒ壬¿ÉÖ±½Ó×·¼Óµ½ÎļþÖС£
2.Ö§³ÖÅäÖÃÎļþÈȼÓÔØÉúЧ£¬¶¼Ö§³Öreload£¬·þÎñƽ»¬ÉúЧ¡£
3.¿É²å°ÎʽµÄ»º´æ×é¼þÁé»îÓ¦¶Ô¸÷ÖÖÒµÎñÐèÇó¡£
4.²¿Êð¼òµ¥£¬½ÚµãʧЧ/ÉúЧÇл»·½±ã¡£
LVSȱϯ£ºÎªÊ²Ã´ÕâÀïûÓÐÌá¼°LVS£¬ÒòΪLVSÊǸöÖØÁ¿¼¶¡¢¸ßЧÎȶ¨µÄËIJãת·¢£¬²»ÄÜ×÷Æß²ãHTTPÐÒéµÄʶ±ð£¬µ«ÍêÈ«¿ÉÒÔ¼ÜÉèÔÚÆß²ã֮ǰ¡£ËùÒÔ£¬LVSµÄʹÓò¢²»»áÓ°ÏìÍøÂç½á¹¹£¬ºóÐøÈÔÈ»¿ÉÒÔÏëÉϾÍÉÏ£¬Ö»ÊÇǰÌáÒª¼æ¹Ëµ½LVSµÄµ¥µã¹ÊÕÏ¡£
ʵ¼Ê²¿Êð
×îÖÕÎÒÃÇÔÚÖ÷½ÚµãÖÜΧһ¹²²¿ÊðÁË8¸öCDN½Úµã£¨½ÚµãÊýÁ¿¸ù¾Ý×ÔÉí¹«Ë¾ÊµÁ¦¼°Êµ¼ÊÉú²ú»·¾³ÒªÇó¶øÁé»îµ÷Õû£¬´ËÊý×Ö½ö×÷²Î¿¼£©£¬ÕâЩ½ÚµãÓÖ°´ÕÕµØÓò»®·Ö³ÉÁËËĸö´óÇø£º±±·½£¨ÒÔɽ¶«£¬ºÓ±±ÎªÖ÷£©¡¢Î÷ÄÏ£¨ÒÔËÄ´¨ÎªÖ÷£©¡¢»ª¶«£¨ÒÔÄþ²¨£¬¼ÎÐËΪÖ÷£©
»ªÄÏ£¨ÒÔ¸£½¨£¬ºþÄÏΪÖ÷ £©¼æ¹ËÈ«¹ú¸÷¸öÊ¡·Ý¡£
×ÜÌå³É±¾Çé¿ö
8¸öµ¥Ïß¼ÓËٽڵ㣬ÿ¸ö½Úµã100Mx8£¬8̨˫×ÓÐÇ·þÎñÆ÷£¬×ܹ²Í¶×ÊÔ¼30W£¨ºóÐø·ÑÓÃÖ»¿¼ÂÇ´ø¿íÖ§³ö£¬Ô¼15W/Ä꣩£¬ÎÒÃÇÓ¦¼±²¦¿îΪ10W£¬Ã¿¸öÔÂCDNÔ¤ËãΪ2W¡£
ÏîÄ¿½ø¶È°²ÅÅ£º
1¡«4¸öÔÂ×¥½ø¶È£ºÌصãÊÇ¿ìËÙ²¿µã¡£ÕâÀïÓиö¾÷ÇÏ£¬Ç°ÆÚ¿ÉÒÔÏȸúIDC°´Ô»òÕß¼¾¶ÈǩԼ£¬È»ºóͨ¹ý¼à¿Ø¿´Á¬ÐøµÄ½ÚµãÖÊÁ¿£¬Èç¹û½ÚµãÖÊÁ¿²»¼Ñ£¬¸ü»»ÌṩÉÌ£¬ÕâÑùËðʧ²»»áÌ«´ó£¬Èç¹û½ÚµãÖÊÁ¿ºÃ£¬¾Í°ëÄ긶»òÕßÄ긶£¬ÕâÑù¾Í¿ÉÒÔ±£Ö¤ÖÊÁ¿ºÍÐÔ¼Û±È×î¸ß£»
5¡«8¸öÔÂΪÍêÉÆÆÚ£º¸ù¾ÝÔ¤Ë㣬ÓнÚ×àµÄ¼Óµã£¬¼Ó´ø¿í£¬±£Ö¤´ø¿íµÄÈßÓà¶È£»
8¸öÔÂÒÔºóΪÎȶ¨ÆÚ£º¸ù¾Ýʵ¼ÊÇé¿ö±£Ö¤½ÚµãµÄ×î´ó¿ÉÓÃÐÔ£¬Í¬Ê±Ò²ÌáÉýÁËÕûÌå·ÀÓùÄÜÁ¦¡£
ÈçºÎ×ö·À»¤²ßÂÔ
¿ªÆôHAProxyµÄhttplog¹¦ÄÜ£¬¼Ç¼ÈÕÖ¾¡£
HAProxyµÄÅäÖòßÂÔ£º
global nbproc 24 pidfile /var/run/haproxy.pid daemon quiet user nobody group nobody chroot /opt/haproxy spread-checks 2
defaults
log 127.0.0.1 local5
mode http
option forwardfor
option httplog
option dontlognull
option nolinger # reduce FIN_WAIT1
option redispatch
retries 3
option http-pretend-keepalive
option http-server-close
option accept-invalid-http-request
timeout client 15s
timeout connect 15s
timeout server 15s
timeout http-keep-alive 15s
timeout http-request 15s
stats enable
stats uri /stats
stats realm 53KF\ Proxy\ Status
stats refresh 60s
stats auth admin:adminxxx
listen Web_FB 0.0.0.0:80
option httpchk GET /alive.php HTTP/1.0
acl invalid_referer hdr_sub(referer) -i -f /opt/haproxy/etc/bad_ref.conf
acl invalid_url url_sub -i -f /opt/haproxy/etc/bad_url.conf
acl invalid_methods method -i -f /opt/haproxy/etc/bad_method.conf
block if invalid_referer || invalid_url || invalid_methods
acl dyn_host hdr(host) -i -f /opt/haproxy/etc/notcache_host.conf
acl static_req path_end -i -f /opt/haproxy/etc/allow_cache_file.conf
use_backend img_srv if static_req !dyn_host
# acl shaohy
acl geek hdr_dom(host) -i 17geek.com
use_backend geek if geek
# backend shaohy
backend geek
mode http
balance source
cookie SESSION_COOKIE insert indirect nocache
option tcpka
server geek_1 127.0.0.1:81 cookie geek_1 maxconn
10000 weight 8
backend img_srv
mode http
option tcpka
server img_srv 127.0.0.1:88 maxconn 30000 weight
8 |
VarnishµÄÅäÖòßÂÔ£º
backend h_17geek_com_1 { .host="127.0.0.1"; .port="81"; .connect_timeout=300s; .first_byte_timeout=300s; .between_bytes_timeout=300s; }
director geek srv {
{ .backend=h_17geek_com_1; .weight=3;}
}
sub vcl_recv {
if (req.http.host~"^(www).?17geek.com$"){
set req.backend=geek_srv;
if (req.request != "GET" &&
req.request != "HEAD") {
return (pipe);
}
if(req.url ~ "\.(php|jsp)($|\?)") {
return (pass);
}
else {
return (lookup);
}
}
} |
¶ÔÓÚCCÀàÐ͵ÄDDoS¹¥»÷£¬Í¨¹ýµÚһƪµ±ÖнéÉÜµÄ¼à¿ØÒì³£Á÷Á¿µÄ·½·¨ÒÀÈ»ÊÊÓ㬶øÇÒÓÅÊÆ¸üÃ÷ÏÔ£¬ÒòΪ£º
1.½Úµã¸÷×Գе£ÏàÓ¦µÄÈÕÖ¾¼Ç¼£¬·ÖÎöÈÕÖ¾µÄϵͳ¿ªÏú£¬·¢ÏÖÒì³£ÇëÇóºóÖ±½ÓÔÚhaproxyǰ¶Ë×öACL¹æÔò
¹ýÂË£¬Òò´Ë£¬¹¥»÷ѹÁ¦²»»á´«µÝ¸øºó¶Ë·þÎñÆ÷£¬±£Ö¤ºó¶Ë°²È«¡£
2.½ÚµãÊܵ½µÄ¹¥»÷Á÷Á¿¹ý´ó£¬»ú·¿¿ÉÒÔÀºÚIP»òÕßÒýÁ÷£¬ºó¶ËÖÇÄÜDNS»á×Ô¶¯°ÑÕâ¸ö½ÚµãÌÞ³ý£¬ºóÐøÇëÇó²»ÒªÍ¨¹ý´Ë½Úµã¡£
ÔÚ±¾ÏµÁеÄÏÂһƪÎÄÕÂÖУ¬ÎÒÃÇ»á½éÉÜÕâ¸öCDN¼Ü¹¹µÄһЩºóÐø¸Ä½ø¹¤×÷£¬°üÀ¨ÖÇÄÜDNS¡¢´ó¹æÄ£ÈÕÖ¾·ÖÎö¡¢ÀûÓÃOpenCDN¸ÄÉÆºǫ́¹ÜÀíµÈ¡£
×Ô½¨CDN·ÀÓùDDoS£¨3£©£º¼Ü¹¹µÄºóÐø¸Ä½ø
ÔÚ±¾ÏµÁеĵÚһƪÎÄÕÂÖУ¬ÎÒÃǽéÉÜÁËÎÒÃǿͷþϵͳÓöµ½DDoS¹¥»÷µÄÇé¿ö£¬ÒÔ¼°ÎÒÃÇΪʲô¾ö¶¨²ÉÓÃ×Ô½¨CDNµÄ·½Ê½À´½â¾öÕâ¸öÎÊÌâµÄÔÒò¡£
Ö®ºó£¬ÎÒÃǽéÉÜÁË×Ô½¨CDNµÄ¾ßÌ彨Éè¹æ»®£¬Ö÷Òª´ÓÒÔϼ¸¸ö·½Ãæ½øÐп¼Á¿£ºÓ²¼þ³É±¾¡¢´ø¿í³É±¾¡¢¼Ü¹¹Éè¼Æ¡¢Êµ¼Ê²¿Êð¡£
±¾ÎÄÊÇ¡¶×Ô½¨CDN·ÀÓùDDoS¡·ÏµÁеĵÚÈýƪ£¬½éÉÜCDN¼Ü¹¹µÄºóÐø¸Ä½ø¡£ºóÐø¸Ä½øÖ÷Òª°üÀ¨Èý¸ö·½Ã棺DNSÖÇÄܽâÎö+ÂÖѯ+´æ»î¼à²â£¬¼¯ÖÐʽÈÕÖ¾·ÖÎö+¹¥»÷·ÀÓù£¬ÒÔ¼°¶à½ÚµãCDNµÄ¿ìËÙ²¿Êð+ͼÐλ¯¹ÜÀí¡£
1¡¢DNSÖÇÄܽâÎö+ÂÖѯ+´æ»î¼à²â
A. ²¿ÊðÖÇÄÜDNS¾Í½üÆ¥ÅäCDN½Úµã
ÎÒÃÇ×Ô½¨CDNµÄÁíÍâÒ»¸öÄ¿µÄÊÇ×ö·ÃÎÊ·¾¶ÓÅ»¯£¬ÒòΪÕâЩ¼ÓËÙ½ÚµãÊÇÎÒÃǾ«ÐÄÌôѡ֮ºó²¿ÊðµÄ£¬ÎÞÂÛÊÇ´ø¿íÖÊÁ¿¡¢»ú·¿»·¾³¡¢°²È«·çÏÕµÈÖ¸±ê¾ùÄÜÂú×ã¿É¿¿¿É¿ØµÄÐèÇó¡£
Òò´Ëµ±²¿ÊðÍê¶à¸öCDN½Úµãºó£¬ÎªÊ¹ÕâЩ½ÚµãÐͬÔË×÷£¬Í¬Ê±ÓÅ»¯Óû§µÄ·ÃÎÊ·¾¶£¬ÎÒÃÇ¿ÉÒÔͨ¹ýÅäÖÃBindµÄViewÊÓͼ°Ñ·Ã¿ÍIPÖ¸¶¨µ½ÏàÓ¦µÄCDN½Úµã£¬Ê¹µÃ·Ã¿ÍÄܹ»¸ù¾Ý×Ô¼ºËùÔÚµÄÇøÓòºÍÏß·ÀàÐÍ£¬¾Í½ü´ÓCDN½ÚµãÉÏ»ñÈ¡Ò³ÃæÄÚÈÝ£¬´Ó¶øÓÅ»¯·Ã¿ÍµÄ·ÓÉ¡£
B. DNS×Ô¶¯ÂÖѯ+¹ÊÕϼà²â
ÎÒÃÇ¿ÉÒÔÀûÓÃDNSÂÖѯÀ´ÎªÍøÕ¾½øÐзÖÁ÷¸ºÔØ¡£Èç¹ûÌõ¼þ³äÔ££¬¿ÉÒÔÔÚ¸÷¸ö´óÇøÄÚ²¿ÊðÈßÓàµÄCDN½Úµã£¬ÕâÑù¼ÈÄÜ»º½âij¸öÇøÓòÄÚµ¥Ò»½ÚµãµÄ¸ºÔØ£¬Í¬Ê±ÄÜΪÕâ¸ö½Úµã×÷»¥±¸£¬µ±Õâ¸öÇøÄÚµÄCDN½ÚµãÒò¹ÊÕÏʧЧ֮ºó£¬µ÷¶È»úÖÆÄÜÔÚ×î¿ìʱ¼äÄÚ½«¹ÊÕϽڵãµÄÁ÷Á¿Ç£ÒýÖÁµ±Ç°¿ÉÓýڵ㣬ʵÏÖ¶¯Ì¬µÄÌÞ³ý¸Ã½Úµã£¬´Ó¶ø²»Ó°Ïì·Ã¿ÍµÄÕý³£ÇëÇó¡£
ʵÏÖDNSÂÖѯֻÐèÒªÔÚBindÖÐΪͬһÓòÃûÌí¼Ó¶à¸öA¼Ç¼¼´¿É¡£Bind ViewÊÓͼ¹¦ÄÜºÍ½Úµã´æ»î¼ì²éµÄÏà¹Ø¼¼ÊõÒѾÏ൱³ÉÊ죬ÏàÓ¦µÄ¼¼ÊõÎĵµÒ²±È½Ï¶àÁË£¬¿ÉÒԲο¼¡¶Ê¹ÓÃBind¹¹½¨¸ß¿ÉÓÃÖÇÄÜDNS·þÎñÆ÷¡·£¬ÕâÀïÎÒÃǾͲ»ÔÙÀÛÊö¡£
C. Bind View IP·Ö¼ð½Å±¾
ÎÒÃÇĿǰ±àдµÄ½Å±¾¿ÉÒÔ°ïæ¿ìËÙ·Ö¼ð³öµçÐÅ¡¢ÁªÍ¨µÄÏß·»¹°üÀ¨»ª¶«¡¢»ªÄÏ¡¢»ª±±ºÍÎ÷²¿ËĸöµØÇøµÄIP·¶Î§£¬ÓÐÐËȤµÄͬѧ¿ÉÒÔÊÔÓÃһϡ£
# Õâ¸ö½Å±¾ÊÇ´ÓApnicÏÂÔØÊôÓÚÖйúµÄIPÁÐ±í£¬È»ºó°ÑÊôÓÚÁªÍ¨£¬µçÐż°ÆäËüµÄIP½øÐйéÀà get_apnic(){ FILE=$PWD/ip_apnic CNC_FILE=$PWD/CNC CTC_FILE=$PWD/CTC TMP=/dev/shm/ip.tmp rm -f $FILE wget http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest -O $FILE
grep 'apnic|CN|ipv4|' $FILE | cut -f 4,5 -d'|'|sed
-e 's/|/ /g' | while read ip cnt
do
echo $ip:$cnt
mask=$(cat << EOF | bc | tail -1
pow=32;
define log2(x) {
if (x<=1) return (pow);
pow--;
return(log2(x/2));
}
log2($cnt)
EOF
)
whois $ip@whois.apnic.net > $TMP.tmp
sed -n '/^inetnum/,/source/p' $TMP.tmp | awk '(/mnt-/
|| /netname/)' > $TMP
NETNAME=`grep ^netname $TMP | sed -e 's/.*: \(.*\)/\1/g'
| sed -e 's/-.*//g'|sed 's: ::g'`
egrep -qi "(CNC|UNICOM|WASU|NBIP|CERNET|CHINAGBN|CHINACOMM|FibrLINK|BGCTVNET|DXTNET|CRTC)"
$TMP
if [ $? = 0 ];then
echo $ip/$mask >> $CNC_FILE
else
egrep -qi "(CHINATELECOM|CHINANET)"
$TMP
if [ $? = 0 ];then
echo $ip/$mask >> $CTC_FILE
else
sed -n '/^route/,/source/p' $TMP.tmp | awk '(/mnt-/
|| /netname/)' > $TMP
egrep -qi "(CNC|UNICOM|WASU|NBIP|CERNET|CHINAGBN|CHINACOMM|FibrLINK|BGCTVNET|DXTNET|CRTC)"
$TMP
if [ $? = 0 ];then
echo $ip/$mask >> $CNC_FILE
else
egrep -qi "(CHINATELECOM|CHINANET)"
$TMP
if [ $? = 0 ];then
echo $ip/$mask >> $CTC_FILE
else
echo "$ip/$mask $NETNAME" >> $PWD/OTHER
fi
fi
fi
fi
done
rm -rf $TMP $TMP.tmp
}
# ´ÓwhoisÐÅÏ¢ÖÐÌáÈ¡addressµÇ¼ÇÈ˵ØÖ·ÐÅÏ¢£¬´Ó¶øÅжÏÔÚÄĸöÊ¡·Ý
gen_zone(){
FILE=$2
[ ! -s $FILE ] && echo "$FILE file
not found." && exit 0
rm -rf $FILE.zone
while read LINE;do
LINE=`echo "$LINE"|awk '{print $1}'`
echo "$LINE @ "
echo -n "$LINE @ " >> $FILE.zone
whois $LINE|egrep "address"|xargs echo
>> $FILE.zone
sleep $TIME
done < $FILE
}
# ·Ö±ðÌôÑ¡³ö»ª¶«£¬»ªÄÏ£¬»ª±±£¬Î÷²¿ËÄ´óÇøµÄIPµØÖ·Áбí
gen_area(){
FILE=$2
[ ! -s $FILE.zone ] && echo "$FILE.zone
file not found." && exit 0
STRING="none"
echo $FILE|egrep -i -q "cnc"
[ $? = 0 ] && STRING="cnc"
echo $FILE|egrep -i -q "ctc"
[ $? = 0 ] && STRING="ctc"
echo $FILE|egrep -i -q "other"
[ $? = 0 ] && STRING="other"
[ $STRING = "none" ] && echo
"Not cnc or ctc file" && exit
0
cp -a $FILE.zone $FILE.tmp
egrep -i "$HD_STR" $FILE.tmp >
$HD_FILE.$STRING
egrep -i -v "$HD_STR" $FILE.tmp >
aaa
mv aaa $FILE.tmp
egrep -i "$HN_STR" $FILE.tmp >
$HN_FILE.$STRING
egrep -i -v "$HN_STR" $FILE.tmp >
aaa
mv aaa $FILE.tmp
egrep -i "$XI_STR" $FILE.tmp >
$XI_FILE.$STRING
egrep -i -v "$XI_STR" $FILE.tmp >
aaa
mv aaa $FILE.tmp
egrep -i "$HB_STR" $FILE.tmp >
$HB_FILE.$STRING
egrep -i -v "$HB_STR" $FILE.tmp >
aaa
mv aaa $FILE.tmp
grep ^[0-9] $FILE.tmp |awk '{print $1}' >>
$HD_FILE.$STRING
sed -r -i 's#@.*##g' *.$STRING
rm -rf $FILE.tmp
} |
2¡¢¼¯ÖÐʽÈÕÖ¾·ÖÎö+¹¥»÷·ÀÓù
CDN×÷ÎªÍøÕ¾µÄǰÖýڵ㣬ʵʱ¼Ç¼×ÅËùÓзÿ͵ķÃÎÊÐÐΪ¡£¿ÉÒÔ˵£¬ÈÕÖ¾µ±ÖÐÔ̲ØÁ˷ḻµÄ°ÂÃØ¡£¾ÝÁ˽⣬´ó²¿·ÖÍøÕ¾²¢Ã»ÓÐ¶ÔÆä·ÃÎÊÈÕÖ¾½øÐкܺõÄÀûÓ㬽ö½öÊÇ¶ÔÆä×öÁ˹鵵±¸·Ý¡£ÈçÄÜÀûÓúÃÕâЩ·ÃÎÊÈÕÖ¾£¬²¢¶ÔÆä½øÐÐÉî¶ÈµÄ·ÖÎöºÍÍÚ¾ò£¬¶ÔÓÚÁ˽âÍøÕ¾µÄÔËÐÐ×´¿ö¡¢¸ÐÖªÒµÎñ²ãÃæµÄһЩÒì³£»î¶¯£¬Äܹ»´øÀ´¼«´óµÄ°ïÖú¡£ÓÈÆäÊǵ±ÃæÁÙDDoS¹¥»÷ʱ£¬Äܹ»Ìṩ³ö×ã¹»µÄÒÀ¾ÝÀ´Çø·Ö¶ñÒâµÄIP¡£
Çø·Ö¶ñÒâ¹¥»÷µÄÖ÷ÒªÒÀ¾ÝÀàÐÍÓУº
1.ij¸öIP·¢Æð´óÁ¿µÄ²¢·¢ÇëÇó
2.´óÁ¿Á¬ÐøµÄIP¶Î·¢ÆðÇëÇó
3.´óÁ¿ÎÞ¹æÔòµÄIP·¢ÆðÇëÇó
ĿǰÎÒÃǶÔHAProxyµÄÈÕÖ¾·ÖÎö½ö×÷ÓÃÓÚµ¥½Úµã£¬ÎÒÃÇÔÚʵ¼ÊÓ¦Óó¡¾°ÖУ¬ÊÇ»ùÓÚµ¥Î»Ê±¼ä¶ÎµÄÈÕÖ¾½Ø¶Ï£¬°ÑÈÕ־дÈëµ½/dev/shmÄÚ´æÖУ¬Ê¹ÓÃÁËͨÓõÄshell£¬awk£¬sedÓïÑÔÀ´×öÐÐΪ·ÖÎö£¬ÕâÑù×öµÄºÃ´¦ÊDZÜÃâÁË´ÅÅÌIO¿ªÏúµÄ¶Ì°å¡£È±µãÊÇ£¬ÈÕÖ¾·ÖÎöÐÐΪ±È½Ï´Ö²Ú£¬·ÖÎöЧÂÊÓдýÓÚÌá¸ß¡£
A. ¶à½ÚµãCDN¼¯ÖÐʽÈÕÖ¾·ÖÎö+¹¥»÷×è¶Ï¼Ü¹¹
ÓÉÓÚ×÷ÓÃÓÚµ¥½ÚµãµÄÈÕÖ¾·ÖÎö¼Ü¹¹´æÔڽϴóµÄ¾ÖÏÞÐÔ£¬Ö÷ÒªÌåÏÖΪ£º
1.ÈÕ־ɢÂäÔÚ¸÷¸ö½Úµã£¬·ÖÎöʱºöÂÔÁËÆäËû½ÚµãµÄÊý¾Ý£¬ÎÞ·¨»ñϤȫ¾ÖµÄÇé¿ö
2.µ±·ÀÓù¹æÔòÆôÓú󣬽ö×÷ÓÃÓÚµ¥½Úµã£¬ÆäËû½ÚµãÒÀ¾ÉÃæÁÙ¸ÃÌØÐԵĹ¥»÷
3.µ¥½ÚµãµÄʵʱ·ÖÎöµ±ÃæÁÙ¹¥»÷ʱ£¬»áÕ¼Óýϴóϵͳ×ÊÔ´
Òò´ËÔÚ¶à½ÚµãCDN¼Ü¹¹Ï£¬ÈçÒª¼°Ê±¸ÐÖªµ½DDoS¹¥»÷²¢¶ÔÆä½øÐÐ×è¶Ï£¬¶øÇÒ»¹Òª¿¼ÂǾ¡¿ÉÄÜÉٵĿªÏúÓýڵãϵͳ×ÊÔ´£¬ÐèÒªÕ¾ÔÚÈ«¾Ö²ãÃæÀ´¼¯ÖзÖÎö¹¥»÷ÐÐΪ£¬²¢ÇÒÕë¶Ô·ÖÎöºóµÄ½á¹ûÕ¹¿ª¶à½ÚµãÐͬ´¦Àí·ÀÓù/×è¶Ï¹æÔò£¬À´Ó¦¶ÔDDoS¹¥»÷¡£
¶ÔÄÑµã½øÐÐÊáÀíºó£¬ÎÒÃÇ·¢ÏÖҪʵÏÖÕâÑùµÄÐèÇóÖ÷Òª½â¾öÈý¸öÎÊÌ⣺
»ã¼¯¶à¸öCDN½ÚµãµÄº£Á¿ÈÕÖ¾´æ´¢
Õë¶Ôº£Á¿ÈÕÖ¾µÄ¼¯ÖÐʽ·çÏÕ·ÖÎö
ÐͬÔË×÷µÄ¹¥»÷×è¶Ï»úÖÆ
¾ßÌå¼Ü¹¹£º
Nginx/HAProxy×÷Ϊ·ÀÓù¹¥»÷ϵͳµÄÖÕ¶Ë
½Úµã²úÉúµÄ·ÃÎÊÈÕ־ͨ¹ýsyslog´«Ë͵½×¨ÓõÄLogServer½øÐл㼯
רÓõÄLogServer×÷ΪÈÕÖ¾µÄ´æ´¢ºÍ·çÏÕ·ÖÎö¡¢×è¶Ï¹æÔòÍÆËÍ
a. HAProxy/Nginx×÷Ϊ·ÀÓù¹¥»÷ϵͳµÄÔØÌå
ÎÒÃÇÔÚÉÏһƪÎÄÕÂÖÐÒѾÌáµ½¹ý£¬ÔÚCDN½Úµã¶Ë£¬ÎÒÃǽ¨ÒéÓÃHAProxy»òNginx×÷Ϊ·ÀÓùÐԵķ´Ïò´úÀí£¬Äܹ»Áé»îµÄÖÆ¶¨·ÀÓù¹¥»÷µÄACL¹ýÂ˹æÔò£¬²¢Äܹ»ÒÔÈȼÓÔØµÄ·½Ê½ÊµÊ±ÉúЧ¡£
b. ÈÕÖ¾´æ´¢½â¾ö˼·
Õâ¸ö»·½ÚÖ÷Òª°üº¬Á½¸ö²¿·Ö£¬Ò»ÊÇÓɽڵ㵽LogServerµÄÈÕÖ¾´«Ê䣬ÁíÒ»¸öÊÇLogServerÕâÒ»¶ËµÄÈÕÖ¾¼¯Öд洢¡£ÓÉCDN½Úµã²úÉúµÄÈÕÖ¾¿ÉÒÔͨ¹ý±¾µØÐ´ÈëPIPE
+ Rsyslog UDP´«ÊäµÄ·½Ê½½«ÈÕÖ¾»ã×ܵ½×¨ÓõÄLogServer£¬LogServerÊÕµ½ÈÕÖ¾Ö®ºó£¬°´ÕÕÓòÃû·ÖÀàµÄ·½Ê½½«ÈÕÖ¾´æ´¢ÔÚÒ»Æð¡£
¶ÔÓÚº£Á¿ÈÕÖ¾µÄ´æ´¢¿ÉÒÔÓÃHadoop×÷ÎªÔØÌ壬ÀûÓÃMap/ReduceËã·¨·Ö½âÈÕÖ¾£¬ÌáÉýɸѡЧÂÊ¡£¶Ô´ËÓÐÐËȤÉîÈëÁ˽âµÄͬѧ¿ÉÒԲο¼¿ªÔ´ÈÕ־ϵͳ±È½Ï¡£
c. ÐͬÔË×÷µÄ¹¥»÷×è¶Ï»úÖÆ
ÕâÀïÔòÊÇ×îΪ¹Ø¼üµÄÒ»¸ö»·½Ú£ºÎÒÃÇÕû¸ö¼Ü¹¹µÄÖØµãÔÚÓÚ¡°¿¹¹¥»÷¡±£¬¶øÎÒÃǾ¹ýÇ°ÃæµÄ·ÖÎö£¬Õë¶Ô¶à½ÚµãCDNµÄ¹¥»÷·ÀÓù£¬×îΪ¸ßЧµÄ×ö·¨ÊÇ£ºÓÉרÓõÄLogServer½øÐм¯ÖÐʽ·ÖÎöÔËË㣬²¢½«ÔËËã½á¹ûÉú³É°²È«·À»¤²ßÂÔ£¬ÊµÊ±¶Ô½Óµ½¸÷¸öCDN½Úµã£¬Ðͬ´¦Àí·ÀÓù/×è¶Ï¹æÔò£¬ÒÔ´ËÀ´Ó¦¶ÔDDoS¹¥»÷¡£
ÄÇôÕâÀォ»á²úÉúÒÔϼ¸¸öÖ÷ÒªÎÊÌ⣺
²ÉÓÃʲôÑùµÄ½Å±¾ºÍ¹æÔòÀ´·ÖÎöÈÕÖ¾
·ÖÎöºóµÄ½á¹ûÈçºÎÐγÉHAProxy/IptablesµÄACL²ßÂÔ
Éú³ÉµÄACL²ßÂÔÈçºÎ×÷Óõ½È«¾ÖµÄCDN½Úµã£¬²¢ÐγÉÁª¶¯
¶Ô´ËÎÒÃǵÄÉè¼ÆË¼Â·ÈçÏ£º
µ±ÈÕÖ¾ÍêÕûµÄ´æ´¢ÔÚLogServerÖ®ºó£¬Ê¹Ó÷ÖÎö½Å±¾¶ÔÆä½øÐÐÌØÕ÷Æ¥Å䣬ÌáÈ¡³ö¶ñÒâ¹¥»÷µÄÀ´Ô´IPµØÖ·£¬½«ÕâЩIPµØÖ·Éú³ÉÏàÓ¦µÄHAProxy/IptablesµÄ×è¶Ï¹æÔò£¬²¢Ï·¢µ½È«¾ÖµÄCDN½Úµã¡£ÕâÀï¿ÉÒÔͨ¹ýÁ½ÖÖ·½Ê½À´½øÐУº
1.ͨ¹ý¿ª·¢×¨ÓõĽӿÚÓëIptables¡¢Nginx/HAProxy½øÐÐÁª¶¯
2.ͨ¹ýͳһÅäÖùÜÀí¹¤¾ßPuppetÍÆËÍÀ´ÊµÏÖ£¬LogServer×÷ΪÏûÏ¢µÄÍÆËͶËÓëÃüÁîÏ·¢Ö÷¿Ø¶Ë£¬¸÷¸öCDN½Úµã×÷Ϊ²ßÂԵĽÓÊÕ¶ËÓëÉúЧÃüÁîÖ´Ðжˣ¬ÔÚ½ÓÊÕÍê·À»¤²ßÂÔºó£¬×Ô¶¯¼ÓÈëACLÁÐ±í£¬Ö´ÐÐÈȼÓÔØµÄÃüÁî
B. ¸Ã¼Ü¹¹µÄÓÅÊÆ
ÕâÌ׼ܹ¹µÃÒÔʵÏÖÖ®ºó£¬ÏµÍ³µÄºáÏòÀ©Õ¹½«±äµÃ·Ç³£ÈÝÒ×£¬Äܸù¾Ý½ÚµãµÄÁ÷Á¿/×ÊÔ´¸ºÔØÇé¿ö£¬¶¯Ì¬µÄÌíÖûòÏÂÏßCDN½Úµã£¬ÎÞÐè¶ÔÔ´Õ¾µã½øÐÐÈκθ͝¡£
Äܹ»´ÓÈݵÄÓ¦¶ÔDDoS¹¥»÷£¬ÔÚ·ÖÉ¢¹¥»÷Á÷Á¿µÄͬʱ£¬Äܹ»×Ô¶¯×è¶Ï¹¥»÷À´Ô´¡£
²¢ÇÒ¶ÔÓÚÐµĹ¥»÷£¬Ö»ÒªÔÚijһվµã·¢ÏÖÒì³££¬¼´¿É¿ìËÙ±àÖÆÐ·À»¤¹æÔò£¬½«ÆÁ±Î´ëʩӦÓõ½ËùÓмÓÈëCDNµÄÕ¾µã£¬ÊµÏÖÈ«¾ÖµÄ°²È«·À»¤¡£
½«¸÷¸öCDN½ÚµãÉϵÄÈÕÖ¾½øÐлã×ÜÊÕ¼¯/·ÖÎö£¬Äܹ»»ñÈ¡µ½ËùÓÐÓû§ÏêϸµÄ·ÃÎÊÐÐΪ£¬Í¬Ê±¶ÔËùÓеķǷ¨·ÃÎÊÐÐΪ½øÐоù¼Ç¼ÔÚ°¸£¬Í¨¹ý±àÖÆÒµÎñ°²È«¹æÔò£¬¿ÉÌṩÊÂǰԤ¾¯¡¢Êºó×·×Ù¡£
3¡¢¶à½ÚµãCDNµÄ¿ìËÙ²¿ÊðÓëͼÐλ¯¹ÜÀí
¹ÜÀíºÍÔËάһÌ×CDNϵͳ¶ÔÓÚÈκÎ×éÖ¯À´½²¶¼ÊǸöºÜ´óµÄÌôÕ½£¬ÓÈÆäÊDz¿ÊðÁ˶àÇøÓò¶àÏß·µÄCDN¡£ÐèÒªËæÊ±ÕÆ¿ØCDN¼ÓËٵĽڵãÁÐ±í¡¢ÐèÒª¶¨ÒåÄÄÐ©ÍøÒ³ÔªËØ¿ÉÒÔ×÷Ϊ»º´æ¡¢ÐèÒª×öʲôÑùµÄACL²ßÂԵȵȣ¬ÕâЩ¶¼ÐèҪרҵµÄϵͳÔËάÈËÔ±À´ÅäÖÃʵÏÖ¡£
ͨ³£½ÏΪ³ÉÊìµÄ×ö·¨ÊÇͨ¹ýÖ÷¿Ø»ú£¬Ô¤ÏÈÅäÖúÃCDN¹æÔò £¬Í¨¹ýRsync°ÑÅäÖÃÎļþÍÆË͵½¸÷¸öCDN½ÚµãÖÐÈ¥¡£ºÜÏÔÈ»£¬ÕâÖÖ·½°¸ËäȻЧÂʸߣ¬µ«ÊǶÔCDN²¿ÊðÕß¾ßÓÐÒ»¶¨µÄÃż÷£¬¼ÓÉÏ·þÎñÆ÷µÄȨÏÞ¿ØÖÆÒªÇó·Ç³£Ñϸñ£¬Ò²²»ÀûÓÚÃæÏòÆäËü¹¤³Ìʦ×öÍÆ¹ã¡£
żȻµÄ»ú»á£¬ÎÒÃÇÓÐÐÒÔÚºÚ¿ÍÂíÀËÉ´óÈü³õʶÁËOpenCDNÕâ¸ö»ñ½±×÷Æ·£¬Í¨¹ý»¥²¹ÕûºÏ£¬¸üÊÇÃÖ²¹ÁËÎÒÃÇÕâÌ×CDNÉϵÄǰ¶Ë¹ÜÀíµÄ²»×ã¡£Òò´Ë£¬¿ÉÒÔ¸úOpenCDNÕâ¸öÏîÄ¿×öºÜºÃµÄÉî¶ÈÕûºÏ£¬½µµÍÔËάºÍ¹ÜÀíÃż÷£¬Ô츣ÓÚ¸ü¶àµÄITÔËάµÄÓû§¡£

A. OpenCDNÖ÷Òª½â¾öʲôÎÊÌ⣿
OpenCDNÊÇÒ»Ì׿ìËÙ²¿ÊðCDN¼ÓËٵŤ¾ß£¬Õë¶ÔרÃÅÌṩCDN¼ÓËÙ·þÎñµÄÆóÒµ»ò¶Ô¶à½ÚµãCDN¼ÓËÙÓÐÐèÇóµÄÆóÒµÌṩһÌ×±ã½ÝµÄ¹ÜÀíÆ½Ì¨£¬¿É¶Ôÿһ¸ö½ÚµãµÄ״̬¡¢ÏµÍ³¸ºÔؽøÐÐʵʱ¼à²âÓëͳһ¹ÜÀí¡£OpenCDNÔ¤ÖÆÁ˶àÌ׳£Óûº´æ¹æÔò£¬Ö§³Ö¶àÖÖ¸´ÔÓµÄCDN»º´æ³¡¾°¡£ÕýÈçÆäÃû£¬OpenCDNÊÇÃâ·Ñ¿ªÔ´µÄ¡£
B. OpenCDNµ±Ç°ÊÇÔõô×öµÄ£¿
OpenCDNµÄÖ÷Ìå¼Ü¹¹¿É·ÖΪCDN¹ÜÀíÖÐÐĺÍCDN¼ÓËٽڵ㡣CDN¼ÓËÙ½Úµã¿ÉÒÔÓкܶà¸ö£¬ÔÚÊýÁ¿ÉÏûÓÐÈκÎÏÞÖÆ¡£Óû§¿ÉÒÔͨ¹ýOpenCDN¿ìËٵIJ¿Êð¶à¸öCDN¼ÓËٽڵ㣬²¢Í¨¹ýÒ»¸ö¹ÜÀíÖÐÐĽøÐм¯ÖÐʽµÄ¹ÜÀí¡£
Òò´ËOpenCDNÔÚÕâÀïÖ÷Òª×öÁËÁ½²¿·Ö¹¤×÷£¬Ò»Êǽ«CDN½ÚµãµÄ²¿Êð¹ý³ÌÒ»¼ü»¯£¬¶þÊÇͨ¹ýWebConsole¹¤¾ß½«ÕâЩCDN¼ÓËÙ½ÚµãͳһµÄ¹ÜÀíÆðÀ´¡£

C. OpenCDNδÀ´Òª×ö³öʲôÑù£¿´ïµ½ÔõôÑùµÄЧ¹û£¿
OpenCDN½«ÖÂÁ¦ÓÚΪ¶à½ÚµãCDN¼ÓËÙÓÐÐèÇóµÄÍøÕ¾£¬ÌṩһÌ×±ã½ÝµÄCDN¼ÓËÙ¹ÜÀíÆ½Ì¨£¬Äܹ»°´Ðè×Ô½¨CDN½Úµã£¬Áé»î¿ØÖƳɱ¾£¬Ìá¸ßÍøÕ¾ÏìÓ¦ËÙ¶È£¬ÇáËÉÓ¦¶ÔÍ»·¢Á÷Á¿¡£
ºóÐøÎÒÃǽ«ÔÚ´Ë»ù´¡ÉÏÕûºÏ¼ÓÈëÉÏÊöCDN·ÀÓù´óÁ÷Á¿DDoS¹¥»÷µÄ×éºÏ·½°¸¡£ÎÒÃǶÔÕâÌׯ½Ì¨×öÁË¿ªÔ´£¬Ï£ÍûÓиü¶àÓÐÐèÒªµÄÈËÄܹ»ÒÔ×îµÍµÄ³É±¾»ñÈ¡Ëü£¬Í¬Ê±Ò²Ï£Íûͨ¹ý¸ü¶àµÄ¿ª·¢Õß¼ÓÈë½øÀ´Ò»ÆðÍêÉÆËü¡£ËùνÈËÈËΪÎÒ£¬ÎÒΪÈËÈË¡£
D. OpenCDN½øÐÐ×Ô½¨CDNµÄÓÅÊÆ
Ê×ÏÈÊǽµµÍÁË»ñÈ¡CDNµÄ³É±¾£¬Í¬Ê±×îΪ¹Ø¼üµÄÊÇÌáÉýÁËCDN½ÚµãµÄÐÔÄÜ¡£¶Ô±È×âÓÃÉÌÒµCDN£¬ÎÒÃÇÎÞÐèÔÙΪ¹ºÂòÁ÷Á¿¶ø¼ÆËã³É±¾£¬Ðγɹ̶¨¿ªÏúµÄ×âÓÃģʽ¡£
²»¾ÖÏÞÓÚ½ÚµãµÄ½éÖÊ£¬ÎïÀí·þÎñÆ÷»òÕßVPS¾ù¿ÉÒÔÊÊÓ㬿ÉÀûÓò»Í¬·þÎñÉ̵ÄVPS¹¹½¨ÆðÒ»ÕŸ²¸ÇÈ«¹úÈ«ÍøµÄµÍ³É±¾CDN¼ÓËÙ¼¯Èº¡£
ÉÌÒµCDNµÄ½ÚµãÒª¹²Ïí¸ø¶à¸öÕ¾µãͬʱʹÓ㬶øÕâÒâζ׎ڵãµÄÓÐÏÞ×ÊÔ´£¨²¢·¢Êý£©½«ÔÚͬһʱ¼äÄÚ·ÖÏíʹÓ㬶ÔÓÚ´ø¿í/Á÷Á¿ÒªÇó½Ï¸ßµÄÓû§£¬±È½ÏÊʺÏ×Ô½¨µÄ¼Ü¹¹¡£
OpenCDNÊÊÓÃÓÚÄÄЩÓû§£¿
OpenCDNĿǰÀ´¿´£¬±È½ÏÊÊÓÃÓÚÐÐÒµ¾ºÕù±È½Ï´óµÄÍøÕ¾£ºÓÎÏ·Õ¾¡¢´¹Ö±µçÉÌ¡¢ÉçÇøÂÛ̳¡¢ÔÚÏßÊÓÆµ¡¢ÁÄÌì¡£
ÕâÐ©ÍøÕ¾µÄ¹²ÐÔÌØµã£ºÁ÷Á¿ÖÐÐ͹æÄ££¬¾ºÕù¼¤ÁÒ£¬¾³£±»¹¥»÷£¬ÐÐÒµÀûÈó¸ß£¬Ô¸Ò⻨Ǯ¡£
×ܽá
ÖÁ´Ë£¬¡¶×Ô½¨CDN·ÀÓùDDoS¡·ÏµÁÐ±ã¸æÒ»¶ÎÂä¡£Èç¹ûÓÐÈκÎÒÉÎÊ£¬»¶Ó¸úÎÒÃǽ»Á÷¡¢Ì½ÌÖ¡£
|