Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: DoS Deflate.  (Прочитано 1666 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн corpixфыв

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
DoS Deflate.
« : 21 Августа 2013, 16:06:27 »
Здравствуйте, тут наткнулся на одну проблему со скриптом DoS Deflate. Суть проблемы состоит в том что при запуске скрипта в командной строке появляется след. надпись:
root@debian:/usr/local/ddos# ./ddos.sh
DDoS-Deflate version 0.6
Copyright (C) 2005, Zaf <zaf@vsnl.com>

▒$CONF not found.▒

Помогите решить проблему.

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
Re: DoS Deflate.
« Ответ #1 : 21 Августа 2013, 16:15:56 »
?
ls -l /usr/local/ddos/ddos.conf
И чем connlimit от iptables не устраивает?

Оффлайн corpixфыв

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Re: DoS Deflate.
« Ответ #2 : 21 Августа 2013, 16:29:13 »
Дело в том что я не разбираюсь в тонкостях настройки connlimit в IPT. Мне посоветовали поставить данный скрипт.
Данный файл присутствует, в этом и загвоздка...
Вот содержимое файла 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 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

##### How many connections define a bad IP? Indicate that below.
NO_OF_CONNECTIONS=10

##### 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=0

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

##### An email is sent to the following address when an IP is banned.
##### Blank would suppress sending of mails
EMAIL_TO="root"

##### Number of seconds the banned ip should remain in blacklist.
BAN_PERIOD=600


А вот сам скрипт:
#!/bin/sh
##############################################################################
# DDoS-Deflate version 0.6 Author: Zaf <zaf@vsnl.com>                        #
##############################################################################
# This program is distributed under the "Artistic License" Agreement         #
#                                                                            #
# The LICENSE file is located in the same directory as this 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" -a "$CONF" != "" ]; then
. $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 -eq 1 ]; then
while read line; do
echo "$APF -u $line" >> $UNBAN_SCRIPT
echo $line >> $UNBAN_IP_LIST
done < $BANNED_IP_LIST
else
while read 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 -le 2 ]; 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_conf
while [ $1 ]; do
case $1 in
'-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_LIST
if [ $KILL -eq 1 ]; then
IP_BAN_NOW=0
while read 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 -ge 1 ]; 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 -eq 1 ]; 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 -eq 1 ]; 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.*


« Последнее редактирование: 21 Августа 2013, 16:39:12 от corpixфыв »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: DoS Deflate.
« Ответ #3 : 21 Августа 2013, 16:37:03 »
Начните с начала - какую проблему вы пытаетесь решить столь нетривиальным способом?
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн corpixфыв

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Re: DoS Deflate.
« Ответ #4 : 21 Августа 2013, 16:48:14 »
Описание скрипта: DoS Deflate.  Это бесплатный скрипт с помощью которого можно избавится от детского флуда и ddos. Скрипт использует команду "netstat" что бы обнаружить ddos и флуд, после обнаружения блокирует ай-пи адреса откуда идет атака, делает это с помощью фаервола iptables или apf (работает только на APF v 0.96 или выше). Проверен мною на Linux Debian Etch 4.0. Скрипт написан на sh.

Оффлайн koshev

  • Старожил
  • *
  • Сообщений: 1709
  • חתול המדען
    • Просмотр профиля
Re: DoS Deflate.
« Ответ #5 : 21 Августа 2013, 18:52:06 »
iptables recent + ipset
Простейший пример из жизни.
Код: (bash) [Выделить]
ipset -N dns_bads iphash
iptables -N DNS
iptables -A INPUT -m set --match-set dns_bads src -j DROP
iptables -A INPUT -d dest_addr/32 -p udp -m udp --dport 53 -j DNS
iptables -A DNS -m recent --set --name dns-spoof --mask 255.255.255.255 --rsource
iptables -A DNS -m recent --update --seconds 15 --hitcount 20 --name dns-spoof --mask 255.255.255.255 --rsource -j SET --add-set dns_bads src
Ваши 150 строк против 6 в моём примере ;) Вариабельно, на Ваше усмотрение.
« Последнее редактирование: 22 Августа 2013, 09:14:30 от KT315 »
OpenWrt 19.07

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
Re: DoS Deflate.
« Ответ #6 : 21 Августа 2013, 22:22:04 »
Данный файл присутствует, в этом и загвоздка...
Разве я спрашивал про присутствие файла?

Оффлайн corpixфыв

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Re: DoS Deflate.
« Ответ #7 : 22 Августа 2013, 10:41:00 »
-rwxrwxrwx 1 root staff 970 Авг 26  2013 /usr/local/ddos/ddos.conf

Оффлайн pe4enbk

  • Новичок
  • *
  • Сообщений: 48
    • Просмотр профиля
Re: DoS Deflate.
« Ответ #8 : 22 Августа 2013, 21:29:10 »
fail2ban ?
Он вроде как и на ддос может реагировать, не?

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
Re: DoS Deflate.
« Ответ #9 : 22 Августа 2013, 22:49:04 »
Гхм... как вариант изменить группу на root.
Ну и давайте попробуем так
CONF="/usr/local/ddos/ddos.conf";if [ -f "$CONF" -a "$CONF" != "" ]; then echo "OK"; else echo "Bad file";fiВсё это одна строка.

Во... что увидел...
Посмотрите внимательней
Цитировать
   CONF=»/usr/local/ddos/ddos.conf»
Если кавычки именно такие - попробуйте сменить на обычные.
« Последнее редактирование: 22 Августа 2013, 22:51:33 от fisher74 »

Оффлайн corpixфыв

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Re: DoS Deflate.
« Ответ #10 : 23 Августа 2013, 10:51:43 »
./ddos.sh: 14: ./ddos.sh: Syntax error: "else" unexpected (expecting "}")
load_conf()
{
CONF="/usr/local/ddos/ddos.conf";if [ -f "$CONF" -a "$CONF" != "" ]; then echo "OK"; else echo "Bad file";fi
. $CONF
else
head
echo «\$CONF not found.»
exit 1
fi
}

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
Re: DoS Deflate.
« Ответ #11 : 23 Августа 2013, 11:18:07 »
эту строку не надо было в скрипт добавлять. Её нужно было выполнить в терминале.
Верните обратно.

 

Страница сгенерирована за 0.021 секунд. Запросов: 22.