alexander пишет:
Привет. Трафик стал сильно хаваться. Это был syn-flooding на мой веб-сервак. При этом dmesg выдал картинко: [30942.485594] possible SYN flooding on port 80. Sending cookies. [30951.969322] TCPv6: Possible SYN flooding on port 80. Sending cookies. [30960.029739] TCPv6: Possible SYN flooding on port 80. Sending cookies. [30966.058466] TCPv6: Possible SYN flooding on port 80. Sending cookies. [31003.499854] possible SYN flooding on port 80. Sending cookies. Я тут добавил директивы limit для сервака, а потом вдруг возникла идея nginx. Почитал как его хвалят. Если он такой хороший, то что его не используют многие для своих нужд, например debian.org? :( Есть ли смысл ставить nginx? Поможет ли он уменьшить syn-flooding и вообще нагрузку на сервер?
Смысл syn-flood атаки:На порт сервиса, который нужно повалить, отсылается syn-пакет. TCP-стек , в уверенности, что это начало нового соединения, выделяет в памяти место, отсылает в ответ ask и ждет какое-то время стабилизации соединения. То есть обработка каждого syn-пакета требует некоторых ресурсов. Навалить много syn-пакетов - ресурсов в системе может не хватить. Навалить syn-пакетов с разных адресов - не поможет ничто.
Поэтому от synflood защиты на уровне приложения нет. Надо крутить параметры ядра (google в помощь, http://www.symantec.com/connect/articles/hardening-tcpip-stack-syn-attacks)
Нагрузку на сервер nginx может уменьшить. Например, некоторый запрос обрабатывается апачем (который требует N ресурсов) за n секунд. Результат отдается клиенту за m секунд. Если m>>n (например, канал у клиента плохой; пусть m=n*3) . Тогда для обработки этого запроса+отдача клиенту требуется N*n*3 ресурсов. Если между толстым апачем и клиентом есть тонкий прокси (nginx), требующий P ресурсов - тогда на 1 запрос потребуется N*n+P*m ресурсов. Выгодно это или нет - надо смотреть.. Если нет запросов, которые дооолго выполняются - nginx может и не помочь (теоретически).