Назад | Перейти на главную страницу

dmesg SYN флуд на 80 sysctl -p

Я получаю синхронный поток на 80-м порту моего сервера и не могу его остановить. сначала у меня были заполнены таблицы, затем я отключил iptables, чтобы узнать, что это синфлуд

netstat -n | grep :80 |wc -l
#returns 1300 - 2000 
netstat -n | grep :80 | grep SYN |wc -l
#returns around 250

IP-адреса приходят отовсюду, поэтому я полагаю, что это подделка. когда я ввожу разные правила iptable, он либо ничего не делает, либо просто разрывает все соединения, даже обычные

это мой sysctl -p

net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296

Что я могу сделать? Я нахожусь в 1 и 1, и я не думаю, что они вставят для меня TCP-перехват, который, как я слышал, является лучшим решением. какое на самом деле лучшее решение?

Вам просто нужно включить файлы cookie, и я видел, что вы это уже сделали:

sysctl -w net.ipv4.tcp_syncookies=1

Затем вы можете настроить стек TCP / IP своей ОС, чтобы быстрее освобождать системные ресурсы на неиспользуемых / закрытых сокетах.

Мои настройки:

# tunning tcp stack
sysctl -w net.ipv4.tcp_fin_timeout=30
sysctl -w net.ipv4.tcp_keepalive_time=1800
sysctl -w net.ipv4.tcp_window_scaling=0
sysctl -w net.ipv4.tcp_sack=0
sysctl -w net.ipv4.tcp_timestamps=0

sysctl -w net.ipv4.ip_conntrack_max=524288
sysctl -w net.ipv4.tcp_syncookies=1

sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1

# buffering
sysctl -w net.core.wmem_default=229376
sysctl -w net.core.wmem_max=229376

Вы также можете настроить свой Apache, особенно выключите KeepAlive и установите меньшее значение Timeout:

Timeout 5
KeepAlive Off

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

Проверьте, есть ли у пакетов отличительная особенность, например, все ли они одного размера.

Обычно с помощью сценариев SYN-флуда они отправляют «чистый» пакет с заголовком и без полезной нагрузки. В итоге получается 40-байтовый пакет (если я правильно помню).

Если это так, вы можете просто удалить все это с помощью iptables, поскольку никакие «нормальные» пакеты не выглядят так.

Да, и будьте готовы к потоку бесполезных советов от людей, которые действительно не понимают, как на самом деле работают SYN-flood.