超級(jí)NB的防DDOS(小量級(jí))攻擊的腳本

# tree /usr/local/ddos//usr/local/ddos/├── ddos.conf

├── ddos.sh

├── ignore.ip.list

└── LICENSE0directories,4files

# ll /usr/local/sbin/ddos

lrwxrwxrwx 1root root23Sep1315:36/usr/local/sbin/ddos -> /usr/local/ddos/ddos.sh

# cat /etc/cron.d/ddos.cron

SHELL=/bin/sh*/1* * * * root /usr/local/ddos/ddos.sh >/dev/null2>&1

查看關(guān)鍵的幾個(gè)腳本:

# cat 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"CRON="/etc/cron.d/ddos.cron"APF="/etc/apf/apf"IPT="/sbin/iptables"##### frequency inminutesfor running the script

##### Caution: Every time thissettingischanged, run the script with --cron

#####? ? ? ? ? option so that the new frequency takes effect

FREQ=1##### How many connections define a bad IP? Indicate that below.

NO_OF_CONNECTIONS=150##### APF_BAN=1(Make sure your APF versionisatleast0.96)

##### APF_BAN=0(Uses iptablesfor banning ips instead of APF)

#APF_BAN=1APF_BAN=0##### KILL=0(Bad IPs are'nt banned, good for interactive execution of script)##### KILL=1 (Recommended setting)

KILL=1##### An email issent to the following address when an IPis banned.

##### Blank would suppress sending of mails

EMAIL_TO="xxx@xxx.com"##### Number of seconds the banned ip should remain in blacklist.

BAN_PERIOD=600

# cat ddos.sh

#!/bin/sh

##############################################################################

# DDoS-Deflate version0.6Author: Zaf ? ? ? ? ? ? ? ? ? ? ? ? #

##############################################################################

# This program isdistributed under the"Artistic License" Agreement? ? ? ? #

#? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #

# The LICENSE file islocatedinthe same directoryasthis program. Please? #

#? read the LICENSE file before you make copies or distribute this program? #

##############################################################################

load_conf()

{

? ? CONF="/usr/local/ddos/ddos.conf"if[ -f"$CONF"] && [ !"$CONF"=="" ]; then

? ? ? ? source $CONF

? ? else? ? ? ? head

? ? ? ? echo "\$CONF not found."? ? ? ? exit 1? ? fi

}

head()

{

? ? echo "DDoS-Deflate version 0.6"? ? echo "Copyright (C) 2005, Zaf <zaf@vsnl.com>"? ? echo

}

showhelp()

{

? ? head

? ? echo 'Usage: ddos.sh [OPTIONS] [N]'? ? echo 'N : number of tcp/udp? ? connections (default 150)'? ? echo 'OPTIONS:'? ? echo '-h | --help: Show? ? this help screen'? ? echo '-c | --cron: Create cron job to run this script regularly (default 1 mins)'? ? echo '-k | --kill: Block the offending ip making more than N connections'}

unbanip()

{

? ? UNBAN_SCRIPT=`mktemp /tmp/unban.XXXXXXXX`

? ? TMP_FILE=`mktemp /tmp/unban.XXXXXXXX`

? ? UNBAN_IP_LIST=`mktemp /tmp/unban.XXXXXXXX`

? ? echo '#!/bin/sh'> $UNBAN_SCRIPT

? ? echo "sleep $BAN_PERIOD">> $UNBAN_SCRIPT

? ? if[ $APF_BAN -eq1 ]; then

? ? ? ? whileread line;do? ? ? ? ? ? echo "$APF -u $line">> $UNBAN_SCRIPT

? ? ? ? ? ? echo $line >> $UNBAN_IP_LIST

? ? ? ? done < $BANNED_IP_LIST

? ? elsewhileread line;do? ? ? ? ? ? echo "$IPT -D INPUT -s $line -j DROP">> $UNBAN_SCRIPT

? ? ? ? ? ? echo $line >> $UNBAN_IP_LIST

? ? ? ? done < $BANNED_IP_LIST

? ? fi

? ? echo "grep -v --file=$UNBAN_IP_LIST $IGNORE_IP_LIST > $TMP_FILE">> $UNBAN_SCRIPT

? ? echo "mv $TMP_FILE $IGNORE_IP_LIST">> $UNBAN_SCRIPT

? ? echo "rm -f $UNBAN_SCRIPT">> $UNBAN_SCRIPT

? ? echo "rm -f $UNBAN_IP_LIST">> $UNBAN_SCRIPT

? ? echo "rm -f $TMP_FILE">> $UNBAN_SCRIPT

? ? . $UNBAN_SCRIPT &}

add_to_cron()

{

? ? rm -f $CRON

? ? sleep 1? ? service crond restart

? ? sleep 1? ? echo "SHELL=/bin/sh"> $CRON

? ? if[ $FREQ -le2 ]; then

? ? ? ? echo "0-59/$FREQ * * * * root /usr/local/ddos/ddos.sh >/dev/null 2>&1">> $CRON

? ? else? ? ? ? let "START_MINUTE = $RANDOM % ($FREQ - 1)"? ? ? ? let "START_MINUTE = $START_MINUTE + 1"? ? ? ? let "END_MINUTE = 60 - $FREQ + $START_MINUTE"? ? ? ? echo "$START_MINUTE-$END_MINUTE/$FREQ * * * * root /usr/local/ddos/ddos.sh >/dev/null 2>&1">> $CRON

? ? fi

? ? service crond restart

}

load_confwhile[ $1];docase$1in'-h'|'--help'|'?' )

? ? ? ? ? ? showhelp

? ? ? ? ? ? exit

? ? ? ? ? ? ;;

? ? ? ? '--cron'|'-c' )

? ? ? ? ? ? add_to_cron

? ? ? ? ? ? exit

? ? ? ? ? ? ;;

? ? ? ? '--kill'|'-k' )

? ? ? ? ? ? KILL=1? ? ? ? ? ? ;;

? ? ? ? *[0-9]* )

? ? ? ? ? ? NO_OF_CONNECTIONS=$1? ? ? ? ? ? ;;

? ? ? ? * )

? ? ? ? ? ? showhelp

? ? ? ? ? ? exit

? ? ? ? ? ? ;;

? ? esac

? ? shift

done

TMP_PREFIX='/tmp/ddos'TMP_FILE="mktemp $TMP_PREFIX.XXXXXXXX"BANNED_IP_MAIL=`$TMP_FILE`

BANNED_IP_LIST=`$TMP_FILE`

echo "Banned the following ip addresses on `date`"> $BANNED_IP_MAIL

echo >>? ? $BANNED_IP_MAIL

BAD_IP_LIST=`$TMP_FILE`

netstat -ntu | awk'{print $5}'| cut -d: -f1 | sort | uniq -c | sort -nr > $BAD_IP_LIST

cat $BAD_IP_LISTif[ $KILL -eq1 ]; then

? ? IP_BAN_NOW=0whileread line;do? ? ? ? CURR_LINE_CONN=$(echo $line | cut -d""-f1)

? ? ? ? CURR_LINE_IP=$(echo $line | cut -d""-f2)

? ? ? ? if[ $CURR_LINE_CONN -lt $NO_OF_CONNECTIONS ]; then

? ? ? ? ? ? break? ? ? ? fi

? ? ? ? IGNORE_BAN=`grep -c $CURR_LINE_IP $IGNORE_IP_LIST`

? ? ? ? if[ $IGNORE_BAN -ge1 ]; then

? ? ? ? ? ? continue? ? ? ? fi

? ? ? ? IP_BAN_NOW=1? ? ? ? echo "$CURR_LINE_IP with $CURR_LINE_CONN connections">> $BANNED_IP_MAIL

? ? ? ? echo $CURR_LINE_IP >> $BANNED_IP_LIST

? ? ? ? echo $CURR_LINE_IP >> $IGNORE_IP_LIST

? ? ? ? if[ $APF_BAN -eq1 ]; then

? ? ? ? ? ? $APF -d $CURR_LINE_IP

? ? ? ? else? ? ? ? ? ? $IPT -I INPUT -s $CURR_LINE_IP -j DROP

? ? ? ? fi

? ? done < $BAD_IP_LIST

? ? if[ $IP_BAN_NOW -eq1 ]; then

? ? ? ? dt=`date`

? ? ? ? if[ $EMAIL_TO !="" ]; then

? ? ? ? ? ? cat $BANNED_IP_MAIL | mail -s"IP addresses banned on $dt" $EMAIL_TO

? ? ? ? fi

? ? ? ? unbanip

? ? fi

fi

rm -f $TMP_PREFIX.*

# cat ignore.ip.list 127.0.0.110.100.0.5#不防御的ip

?注意權(quán)限:

# ll /etc/cron.d/ddos.cron -rw-r--r--1root root71Sep1417:13/etc/cron.d/ddos.cron

注意軟連接:

# ll /usr/local/sbin/ddos

lrwxrwxrwx 1root root23Sep1315:36/usr/local/sbin/ddos -> /usr/local/ddos/ddos.sh


轉(zhuǎn)載于:https://www.cnblogs.com/bass6/p/7522089.htm

? ? 有服務(wù)器需求請(qǐng)加QQ1911624872咨詢

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末伊约,一起剝皮案震驚了整個(gè)濱河市超埋,隨后出現(xiàn)的幾起案子来庭,更是在濱河造成了極大的恐慌絮蒿,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異溯祸,居然都是意外死亡椿胯,警方通過(guò)查閱死者的電腦和手機(jī)廉油,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵姓赤,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我品腹,道長(zhǎng),這世上最難降的妖魔是什么奕剃? 我笑而不...
    開(kāi)封第一講書人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任茄袖,我火速辦了婚禮操软,結(jié)果婚禮上聂薪,老公的妹妹穿的比我還像新娘翔悠。我一直安慰自己涝登,他們只是感情好顷编,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著耙箍,像睡著了一般撰糠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上究西,一...
    開(kāi)封第一講書人閱讀 51,155評(píng)論 1 299
  • 那天窗慎,我揣著相機(jī)與錄音,去河邊找鬼卤材。 笑死遮斥,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的扇丛。 我是一名探鬼主播术吗,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼帆精!你這毒婦竟也來(lái)了较屿?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤卓练,失蹤者是張志新(化名)和其女友劉穎隘蝎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體襟企,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嘱么,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了顽悼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片曼振。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡几迄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出冰评,到底是詐尸還是另有隱情映胁,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布甲雅,位于F島的核電站解孙,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏抛人。R本人自食惡果不足惜妆距,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望函匕。 院中可真熱鬧,春花似錦蚪黑、人聲如沸盅惜。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)抒寂。三九已至,卻和暖如春掠剑,著一層夾襖步出監(jiān)牢的瞬間屈芜,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工朴译, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留井佑,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓眠寿,卻偏偏與公主長(zhǎng)得像躬翁,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子盯拱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容