При атаке SYN flood мой процессор мгновенно достигает 100% благодаря процессу ядра с именем ksoftirqd
, Я перепробовал так много средств защиты, но ни одно не решило проблему.
Это мои конфигурации sysctl, возвращенные sysctl -p
:
net.ipv4.tcp_syncookies = 1
net.ipv4.ip_forward = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
fs.file-max = 10000000
fs.nr_open = 10000000
net.core.somaxconn = 128
net.core.netdev_max_backlog = 2500
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_max_tw_buckets = 262144
net.ipv4.tcp_reordering = 3
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 16384 16777216
net.ipv4.tcp_syn_retries = 3
net.ipv4.tcp_tw_reuse = 1
net.netfilter.nf_conntrack_max = 10485760
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 30
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 15
vm.swappiness = 10
net.ipv4.icmp_echo_ignore_all = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.tcp_synack_retries = 1
Даже после активации файлов cookie Syn, ЦП остается прежним. Очередь прослушивания порта 443 (порт под атакой) показывает 512 SYN_RECV, что является пределом невыполненной работы по умолчанию, установленным NGINX.
Которая также подключена, потому что SOMAXCONN
установлено гораздо меньшее значение, чем 512 (128), так как же оно превышает этот предел?SOMAXCONN
должен быть верхней границей для каждого прослушивания сокета, а не ..
Я так много читаю и запутался, Насколько я понял SOMAXCONN
— это размер невыполненной работы для очередей LISTEN и ACCECPT, так что именно tcp_max_syn_backlog
? И как мне рассчитать размер каждой очереди?
Я также читал, что файлы cookie SYN активируются не сразу, а только после достижения tcp_max_syn_backlog
размер, это правда? А если так, значит, его значение должно быть ниже, чем SOMAXCONN
..
Я пробовал даже активировать tcp_abort_on_overflow
когда был атакован, но ничего не изменилось, если правда, что SYN-файлы активируются при переполнении, применение их вместе с другим результатом какой?
У меня ubuntu 18, 2 ядра с 3 гигабайтами оперативной памяти, который использует только 700 МБ, даже при атаке, моя единственная проблема — загрузка процессора. Я готов добавить ресурсы, если это проблема, но после добавления еще 8 ядер результатом стало 100% использование каждого, так что, похоже, проблема не в этом.