Я получаю синхронный поток на 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.