LINUX.ORG.RU
решено ФорумAdmin

Ddos ложит debian-87 или неправильная настройка сетевого стека?

 , ,


1

3

Здравствуйте господа, небольшая предпосылка имеется игровой сервер на Windows Server 2016, имеются открытые UDP порты. В связи с особенностями сетевого стек windows, было решено использовать linux(debian-87-jessie) в качестве шлюза, посредством pptpd был организован тунель.

Атаки разумеется на udp и причем намеренные когда онлайн на серверах набирается бьют на пару секунд, все сервера падают дело сделано атака прекращается. Сила ddos атаки 144.406 packets/s (36 MBit/s), генерируются пакеты с подменой ip и портов, все пакеты с одинаковым содержимым(это выяснено позже логированием tcpdump). Было принято решение блокировать по содержимому пакета(с помошью iptables), в итоге после начала атаки сервер живет пару секунд ,затем связь SSH обрывается. В течении минуты связь появляется т.к ddos прекращается в статистике 24 милиона пакетов в DROP это если первым правилом стоит блок по длине пакета, при блоке 1 правилом по содержимому доходит до 53М DROPA. Неужели такой ddos никак не отбить посредствами linux?

Правила iptables
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -A FORWARD -i eth0 -p udp -m multiport --dports 1111,2222,3333 -m string --string «Intel» --algo bm -j DROP
iptables -A FORWARD -i eth0 -p udp -m multiport --dports 1111,2222,3333 -m string --string «Amd» --algo bm -j DROP
iptables -t nat -A POSTROUTING -s 10.1.0.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -d 180.65.122.12 -p tcp --dport 3389 -j DNAT --to-destination 10.1.0.2
iptables -t nat -A POSTROUTING -d 10.1.0.2 -p tcp --dport 3389 -j SNAT --to-source 10.1.0.1
iptables -t nat -A PREROUTING -d 180.65.122.12 -p udp -m multiport --dports 1111,2222,3333 -j DNAT --to-destination 10.1.0.2
iptables -t nat -A POSTROUTING -d 10.1.0.2 -p udp -m multiport --dports 1111,2222,3333 -j SNAT --to-source 10.1.0.1

P.S: Дедик i7 3770, 1GB канал



Последнее исправление: novice_user_linux (всего исправлений: 8)

*смачно зявнув*

Небось еще всякие sysctl крутил по мутным мануалам из интернетов? Методом тупой копипасты оттуда в консоль, даже не задумываясь, что они делают?

pptp

Ничего не понимаю. И это сисадмины. Родина им дала l2tp, дала ipoe, носи звездочки. Нет не хочу, хочу говно, которое даже микрософтом объявлено как deprecated, жрать.

svr4
()
Ответ на: комментарий от svr4

PS: если серваки виртуальные - чаще всего говнопровайдеры типа «счастья всем даром по 100 рублей» режут скорость на 10 мегабитах. Хотя особо это и не афишируют, но если саппорту задать прямой вопрос - признают.

Если же пинукс крутится на ovz/loher (контейнеры вместо виртуализации) - то тут еще и прибавляются настройки сети вообще и тех sysctl в частности, сделанные провайдером и прибитые гвоздями.

svr4
()

посредством pptpd был организован тунель.

хм. а этот pptpd такой pps держит? И нафига этот туннель нужен? При таких pps нужно иметь что-то ядерное.

Дедик i7 3770

а там сетевушка вменяемая ?

А в какой таблице дропают? В filter?

после прекращения ddos в dmesg наверняка есть какие-то сообщения...

vel ★★★★★
()
Ответ на: комментарий от svr4

нет дедики(hetzner) на обоих каналы по 1ГБ, я так понял это pptpd грузит систему? в sysctl вносили только такие изменения
sysctl -w net.core.netdev_max_backlog=10000
sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.tcp_max_syn_backlog=262144
sysctl -w net.ipv4.tcp_max_tw_buckets=720000
sysctl -w net.ipv4.tcp_tw_recycle=1
sysctl -w net.ipv4.tcp_timestamps=1
sysctl -w net.ipv4.tcp_tw_reuse=1
sysctl -w net.ipv4.tcp_fin_timeout=10
sysctl -w net.ipv4.tcp_keepalive_time=1800
sysctl -w net.ipv4.tcp_keepalive_probes=5
sysctl -w net.ipv4.tcp_keepalive_intvl=15
sysctl -w net.core.rmem_max=8388608
sysctl -w net.core.wmem_max=8388608
sysctl -w net.ipv4.tcp_rmem='4096 87380 8388608'
sysctl -w net.ipv4.tcp_wmem='4096 65536 8388608'

novice_user_linux
() автор топика
Ответ на: комментарий от vel

а там сетевушка вменяемая ?

RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 09)

А в какой таблице дропают?

Chain FORWARD (policy ACCEPT 4332K packets, 1043M bytes)
pkts bytes target prot opt in out source destination
51M 1772M DROP udp  — eth0 * 0.0.0.0/0 0.0.0.0/0 multiport dports 2545,2645,2745 STRING match «zzz» ALGO name bm FROM 26 TO 40

novice_user_linux
() автор топика
Ответ на: комментарий от vel

хм. а этот pptpd такой pps держит? И нафига этот туннель нужен? При таких pps нужно иметь что-то ядерное.

Сервера игровые работают только на windwos, linux в качестве шлюза посредством тунеля хотели использовать, не держит SSH отваливается видимо linux перестает отвечать

novice_user_linux
() автор топика
Ответ на: комментарий от novice_user_linux

RTL8111/8168/8411 - замечательно, но это же десктопная сетевушка ?

В форвареде ? Это же filter! Это очень поздно! Оно уже в conntrack попало!

Дропать такое нужно в raw!

С такой сетевушкой без включения RPS будет ооочень тяжело.

vel ★★★★★
()
Ответ на: комментарий от vel

Арендуем у hetzner дедики, техподдержка отвечает, что антиддос автоматический у них и если есть вопросы по antiddos почему не ловит, то писать разработчким antiddos. Вот пытаемся своими силами блочить, пока безуспешно, благодарю за дельный совет сейчас через raw дропать будем
Ответ ТП hetzner: >If you have further questions about our DDoS protection then please contact our product advise.

novice_user_linux
() автор топика
Ответ на: комментарий от novice_user_linux

В форвареде ? Это же filter! Это очень поздно! Оно уже в conntrack попало!

Дропать такое нужно в raw!

Попробую пояснить. Есть замечательная картинка http://inai.de/images/nf-packet-flow.png

ты дропаешь в filter/forward, а делать это нужно в raw/prerouting

Попадание такого трафика в conntrack для твоего случая очень повышает нагрузку на процессор.

Такой pps на одном ядре точно не осилить. Нужно убедиться, что прерывания от сетевой карты распределяются между ядрами. Если это не удается, то дальше нет смысла двигаться.

vel ★★★★★
()
Ответ на: комментарий от vel

Прерывание распределено:
CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7
43: 6562028 450551 187525 76308 14973380 2163775 351378 85511 IR-PCI-MSI-edge eth0
Спасибо за помощь сейчас как раз изучаем дроп через raw таблицу

novice_user_linux
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.