Что происходит, если сервер никогда не получает пакет RST?

Согласованный, это был apache2, который был неудачным процессом, но это был преступник для меня прежде. Обычно, особенно с жемчугом, php, или mod_python будет продолжать выделять поршень для некоторого веб-приложения. Поскольку различные клиенты поражают различные апачские процессы, они будут продолжать увеличиваться в использовании памяти.

Если Ваш трафик просто достаточно интенсивен для поддержания апачских процессов, можно закончить с 256 апачскими выполнениями процессов. Но, это не должен быть в какой-либо степени этот предел, у меня был oom-уничтожитель, дают мне плохой день с 30 апачскими процессами, использующими 250-300MB, или таранят каждого.

Увеличение подкачки купит Вас немного времени, чтобы войти в поле и видеть то, что продолжается, но Вас нужно предупредить так, чтобы Вы видели, какой процесс съедает поршень, проверьте, если это является действительно апачским.

Используйте свободный в задании крона или кактусах и snmp с порогами. Со свободным необходимо будет наблюдать буферы и свободный поршень, составить их и предупредить на некотором нижнем пороге.

Другая вещь, если это является апачским, могла бы состоять в том, чтобы привести Ваш MaxClients, это может иметь высокое количество по умолчанию. Или, приведите MaxRequestsPerChild к числу достаточно низко для уничтожения процессов время от времени. Это - только лейкопластырь, но он мог помочь позволить Вам хромать вперед достаточно долго для понимания проблемы.

Просто мой удар в воздухе Scott M.

3
задан 3 September 2012 в 05:31
2 ответа

Как вы знаете, поток пакетов «попытка открыть порт» должен работать следующим образом:

  1. SYN ->
  2. <- SYN / ACK
  3. ACK ->

Версия с «закрытым портом» проста:

  1. SYN ->
  2. <- RST

И если дальний конец не возвращает пакеты RST, что является чрезвычайно распространенной конфигурацией межсетевого экрана:

  1. SYN ->
  2. [время идет]
  3. SYN ->
  4. [время идет]
  5. SYN ->
  6. [время идет]

И под чрезвычайно распространенным я подразумеваю чрезвычайно распространенное . Все TCP-стеки должны обрабатывать этот случай, поскольку он настолько распространен.

Вариант, который кто-то предложил:

  1. [Поддельный источник] SYN ->
  2. <- SYN / ACK
  3. [время проходит]
  4. <- SYN / ACK
  5. [время идет]
  6. <- SYN / ACK

«Атака», которую он ловко обнаружил, - это атака SYN Flood , известная с начала 1990-х годов. Благодаря брандмауэрам, блокирующим пакеты RST, эти серверы не будут знать, что нужно закрыть соединение, поэтому они действительно будут повторно передавать пакет SYN / ACK на основе обычного времени повторной попытки TCP. Тем не менее, все современные TCP-стеки включают некоторую настраиваемую защиту от SYN-флуда, встроенную в них.

Это все еще в некоторой степени эффективный метод атаки, хотя основной вред, который он наносит, заключается в перегрузке устройства защиты периметра слишком большим количеством пакетов. следить за. SYN / ACK без SYN следует очень дешево отбросить, но если их будет достаточно, это может привести к перегрузке брандмауэра.

8
ответ дан 3 December 2019 в 05:05

Syn Cookies эффективно останавливают эту атаку. Сервер отвечает SYN / ACK и забывает об этом. Если ACK получен, он повторно инициализирует поток на основе порядкового номера TCP. В Linux это можно включить, добавив:

net.ipv4.tcp_syncookies = 1

в /etc/sysctl.conf

, но, когда его забивают более 10 тыс. Машин, я думаю, сервер все равно будет отключен.

0
ответ дан 3 December 2019 в 05:05

Теги

Похожие вопросы