Я спросил где-то еще и получил такой ответ:
Использование DROP превращает любой тип DDoS-атаки в SYN-флуд, потому что ваш сервер ожидает ответов ACK, которых он никогда не получит. Даже если вы можете точно настроить параметры тайм-аута tcp, некоторые настройки жестко запрограммированы в ядре. REJECT выполняется очень быстро и требует небольшой полосы пропускания. Для получения дополнительной информации Google "drop vs reject".
Я исследовал то, что он сказал, и он кажется правильным, но я просто хочу убедиться.
Использование DROP заставляет его ждать тайм-аута (пакет отбрасывается до того, как достигнет вашего приложения). Вы ничего не отправляете обратно.
Используя REJECT, вы отправляете RST-пакет, говоря, что порт закрыт.
Использование DROP лучше для защиты от DoS, так как вы ничего не отправляете. Использование REJECT «лучше», поскольку кто-то, подключившийся к вам по ошибке, знает, что порт немедленно закрывается, и ему не нужно ждать тайм-аута.
Синхронный поток - это когда кто-то отправляет много синхронных пакетов для запуска большого количества подключений (поддельных или нет), и вы резервируете ресурсы для каждого подключения, пока нет реальных пользователей, которые могли бы их использовать. Поскольку вы используете все свои ресурсы, законные пользователи не могут пользоваться вашим сервисом.