На этот вопрос уже есть ответ:
Один из моих серверов получает DOS'ed - в состоянии CLOSE_WAIT
есть большое количество соединений, которые мешают законным пользователям подключаться к системе.
Итак, есть ли способ закрыть CLOSE_WAIT
соединение, не убивая базовый серверный процесс? Уничтожение процесса приведет к простою, которого я хочу избежать.
Есть ли другой способ?
Насколько мне известно, закрыть CLOSE_WAT невозможно. соединение, не убивая процесс.
Возможно, вы могли бы использовать iptables и его недавний модуль, чтобы остановить несколько попыток подключения за короткий промежуток времени к тому же порту TCP-сервера и с того же IP-адреса.
Вот пример (измените eth0 для вашего сетевого интерфейса или просто удалить его):
iptables -N LOGDOS
iptables -A LOGDOS -m limit --limit 5/minute --limit-burst 5 -j ULOG --ulog-nlgroup 1 --ulog-prefix "LOGDOS" --ulog-cprange 0 --ulog-qthreshold 1
iptables -A LOGDOS -j DROP
iptables -A INPUT -i eth0 -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 27015 -m state --state NEW -m recent --set --name cssdos
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 27015 -m state --state NEW -m recent --update --name cssdos --seconds 60 --hitcount 4 -j LOGDOS
iptables -A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 27015 -j ACCEPT
Краткое пояснение: