URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 5106
[ Назад ]

Исходное сообщение
"DDoS"

Отправлено peering , 15-Янв-13 21:49 
1)Подскажите какие критерии можно добавить для большей фэективности.
2) Находил много примеров с использование tcpdump и создание чёрного списка,,, но застрял на этапе транспорта в конфиг iptables,, как лучше реализовать  

iptables -F
iptables -X
iptables -t nat -F
iptables  -F INPUT
#iptables -F OUTPUT
iptables -F FORWARD
# Установка политик по умолчанию
iptables -P INPUT  DROP
iptables -P FORWARD  DROP
iptables -P OUTPUT ACCEPT
# Разрешаем локальный интерфейс
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s **********  -j DROP
iptables -A INPUT -s ******  -j DROP
iptables -A INPUT -s *****  -j DROP
iptables -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 10 --connlimit-mask 24 -j DROP
iptables -I INPUT -p tcp --syn --dport 80 -m hashlimit --hashlimit-above 1/second --hashlimit-burst 20 --$
# Простая защита от DoS-атаки
iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
# Защита от спуфинга
iptables -I INPUT -m conntrack --ctstate NEW,INVALID -p tcp --tcp-flags SYN,ACK SYN,ACK -j REJECT --rejec$
# Защита от попытки открыть входящее соединение TCP не через SYN
iptables -I INPUT -m conntrack --ctstate NEW -p tcp ! --syn -j DROP
# Закрываемся от кривого icmp
iptables -I INPUT -p icmp -f -j DROP
# REL, ESTB allow
iptables -A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT
# Защита сервера SSH от брутфорса
iptables -A INPUT -p tcp --syn --dport 22 -m recent --name root --set
iptables -A INPUT -p tcp --syn --dport 22 -m recent --name root --update --seconds 30 --hitcount 3 -j DROP
#iptables -A INPUT -m conntrack --ctstate NEW -p tcp --sport 1024:65535 --dport 20:21 -j ACCEPT
# Разрешаем рабочие порты
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 110 -j ACCEPT
# Разрешение главных типов протокола ICMP
iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT
#iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
#iptables -A INPUT -p icmp --icmp-type 8 -j LOG --log-level debug --log-prefix "PING IP_TABLES:"
iptables -A INPUT -p icmp --icmp-type 11 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 12 -j ACCEPT


Содержание

Сообщения в этом обсуждении
"DDoS"
Отправлено pavlinux , 15-Янв-13 22:47 
> # Разрешение главных типов протокола ICMP

Если ответишь зачем тебе ICMP, расскажу дальше.  


"DDoS"
Отправлено peering , 16-Янв-13 11:32 
>> # Разрешение главных типов протокола ICMP
> Если ответишь зачем тебе ICMP, расскажу дальше.

для обмена служебной информации между web и удалённым хостом,

3,11,12 являются обязательными типами icmp сообщений: 3 ошибки , 11 TTL, 12, ошибки в Ip заголовке.
Но меня не пытаються досить с помощью icmp, проблема такова

2013-01-15 18:42:07 ***** 200 65 0 "POST / HTTP/1.1" "-" "-"  шлют пустые запросы


"DDoS"
Отправлено pavlinux , 16-Янв-13 20:50 
>>> # Разрешение главных типов протокола ICMP
>> Если ответишь зачем тебе ICMP, расскажу дальше.
> для обмена служебной информации между web и удалённым хостом,

Ну в двух словах - он нафиг не нужен. За тебя всё делает провайдер.
А пакеты с TTL меньше 30 ваще прибивать надо, ибо самый маленький
дефолтный только у линуксов - 64, если пакет прошел 30 хопов,
то такой клиент ваще не нужен, только сокет занимать пока пакет
туда-обратно по 5 секунд летать будет.

Битые заголовки - можно специально генерировать, теперь твой
задоссенный сервак, помимо отшиба соединений, должен будет
уведомлять отправителя о том, что мол битый пакет прислал.

ICMP сообщения, о том что поменялся маршрут, сам понимаешь, на сервеке не упёрлись.


"DDoS"
Отправлено ne4to , 16-Янв-13 20:58 
>2013-01-15 18:42:07 ***** 200 65 0 "POST / HTTP/1.1" "-" "-"  шлют пустые запросы

grep + awk + ipset
примеров тьма


"DDoS"
Отправлено pavlinux , 16-Янв-13 21:05 
>>2013-01-15 18:42:07 ***** 200 65 0 "POST / HTTP/1.1" "-" "-"  шлют пустые запросы
> grep + awk + ipset
> примеров тьма

Да это обычные скан-боты, проверяют жив-нежив.
(D)DOS-клиент делает только TCP/IP-рукопожатия,
устанавливает ESTABL. и вываливается в паузу.


"DDoS"
Отправлено peering , 17-Янв-13 15:56 
>>2013-01-15 18:42:07 ***** 200 65 0 "POST / HTTP/1.1" "-" "-"  шлют пустые запросы
> grep + awk + ipset
> примеров тьма

ipset -N ddos iphash
iptables -A INPUT -p tcp -m tcp --dport 80 -m set --set ddos src -j DROP
while true; do tail -10000 /var/www/httpd-logs/site.ru.access.log | sort | cut -f 1 -d " " | uniq -c | awk '($1>50){print $2}' | xargs -tl -I _ ipset -A ddos _;sleep 30; done

Можете подсказать,,,  как лучше разместить данное правило в моём конфиге или нужно вынести отдельно ? Просто сложилось мнение что из за while true  может получиться зацикливание ???


"DDoS"
Отправлено peering , 17-Янв-13 14:03 
>[оверквотинг удален]
> делает провайдер.
> А пакеты с TTL меньше 30 ваще прибивать надо, ибо самый маленький
> дефолтный только у линуксов - 64, если пакет прошел 30 хопов,
> то такой клиент ваще не нужен, только сокет занимать пока пакет
> туда-обратно по 5 секунд летать будет.
> Битые заголовки - можно специально генерировать, теперь твой
> задоссенный сервак, помимо отшиба соединений, должен будет
> уведомлять отправителя о том, что мол битый пакет прислал.
> ICMP сообщения, о том что поменялся маршрут, сам понимаешь, на сервеке не
> упёрлись.

А как http протокол будет работать, ведь работает он через tcp а ему необходимо подтверждения,, хотя я попробовал отключить все типы,,, вроде работает.


"DDoS"
Отправлено pavlinux , 17-Янв-13 18:58 
>>[оверквотинг удален]
> А как http протокол будет работать, ведь работает он через tcp а
> ему необходимо подтверждения,, хотя я попробовал отключить все типы,,, вроде работает.

У IP/TCP/HTTP есть контрольные суммы и размеры в заголовках,
если заголовок битый или контрольная сумма не совпала,
пакеты убиваются и отправляются сообщения о запросе повтора,
иль просто молча убиваются. TCP соединение ваще тяжело прибить.

Говорю ж, ICMP полезен на промежуточных узлах,
на оконечных, типа сервера или клиента он бесполезен.

Максимум, что можно оставить - это ICMP-пакеты от маршрутизатора подсети сервера.