Чат
Помощь
Техподдержка
SinemaPlaneta
  Главная  ∫ Онлайн ТВ  ∫ Видео Онлайн  ∫ Добавить Онлайн  ∫ Форум  ∫ Регистрация  ∫ Восстановить Пароль
Привет, Гость
[15] из [15]
Введите Логин:
Введите Пароль:
Регистрация
Восстановить Пароль

Выберите: Вернутся к началу Поиск

Категория: Web Программирование
Просмотров: 569, Комментариев: 1, Важная: Нет, Заблокирована: Нет
svalerik Не в сети V.I.P
Рейтинг: Infinity, Раздал: 633.40 GB, Скачал: 0.00 kB,
Тянем последний patch-o-matic-ng в /usr/src, распаковываем, заходим в директорию и стартуем ./runme set.
При этом подразумевается что исходники текущего ядра находятся в /usr/src/linux, а iptables - в /usr/src/iptables.
После заходим в /usr/src/linux и делаем make oldconfig, где указываем поддержку фич ipset модулями.

Собираем и устанавливаем ядро:
# make-kpkg --bzImage kernel_image
# dpkg -i /usr/src/linux-image-x.x.x-blablabla.deb


Устанавливаем ipset из репозитория:
apt-get install ipset


Добавляем загрузку модуля ipset в /etc/modules и либо загружаем модуль modprobe ipset, либо перезагружаемся в новое ядро.
Создаем хеш ip-адресов для использования в правилах iptables. Стоит учесть, что максимальное количество ip в списке - 65536 штук:
# ipset -N blacklist iphash


Создаем перловый скрипт /root/antiddos/num-filter.pl для отбора ip-адресов, с которых идет большое количество одинаковых запросов:
#!/usrperl
while ($line = ) {
if ($line =~ /^s+(d+) (d+).(d+).(d+).(d+)/) {
print $2, ".", $3, ".", $4, ".", $5, "n" if ($1 > $ARGV[0]);
}
}


Создаем скрипт /root/antiddos/blacklist.sh для cron:
#!bash
# variables, change them to get script work
BADREQUEST="GET / 1";
LOGPATH="/home/clients/login_ftp0/domains/domain.com/logs/access_log";
MINREQUESTS="50";
SCRIPTHOME="/root/antiddos";
# don't change anything bellow
grep "$BADREQUEST}" $LOGPATH | awk -F ' ' '{ print $ 1 }' | sort | uniq -c | ${SCRIPTHOME}/num-filter.pl $MINREQUESTS >> ${SCRIPTHOME}/in_blacklist.add.pre
sort -u < {SCRIPTHOME}/in_blacklist.add.pre > ${SCRIPTHOME}/in_blacklist.add
cat ${SCRIPTHOME}/in_blacklist.add > ${SCRIPTHOME}/in_blacklist
for i in `cat ${SCRIPTHOME}/in_blacklist`;
do
/usr/sbin/ipset -q -A blacklist $i;
done


Добавляем правила для iptables:
/sbin/iptables -F
/sbin/iptables -X DDOS_HTTP_FILTER
/sbin/iptables -N DDOS_HTTP_FILTER
/sbin/iptables -A DDOS_HTTP_FILTER -d $IP -p tcp --syn --dport 80 -m set --set blacklist src -j
/sbin/iptables -A DDOS_HTTP_FILTER -d $IP -p tcp --syn --dport 80 -m hashlimit --hashlimit 10/min --hashlimit-burst 30 --hashlimit-mode srcip --hashlimit-name DDOS --hashlimit-htable-size 32768 --hashlimit-htable-max 32768 --hashlimit-htable-gcinterval 1000 --hashlimit-htable-expire 100000 -j ACCEPT
/sbin/iptables -A DDOS_HTTP_FILTER -d $IP -p tcp --dport 80 --syn -j
/sbin/iptables -A DDOS_HTTP_FILTER -d $IP -p tcp --syn --dport 80 -m connlimit --connlimit-above 10 -j
/sbin/iptables -A DDOS_HTTP_FILTER -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport http -j DDOS_HTTP_FILTER


Добавляем запуск скрипта /root/antiddos/blacklist.sh в крон с интервалом в 10 минут.

1 Апрель 2015 в 23:30:52
Количество страниц: 1 | На страницу (строк): 20 | Всего данных: 1

Кто просматривает форум
Кто просматривает форум
Быстрый переход: