Будет ли удаление только пакетов SYN улучшать или уменьшать производительность брандмауэра?
Я устанавливаю ipfw, и мне было предложено следующее: Если я создаю правило только для отбрасывания пакетов SYN для TCP, соединение не может быть установлено, и брандмауэру даже не придется просматривать другие пакеты.
Это кажется мне нелогичным. Я думаю, что брандмауэр будет работать лучше, если я заблокирую все соединения на указанном порту (без учета проверки пакетов), и, поскольку ни одно соединение не может быть установлено в любом случае, количество входящих пакетов будет одинаковым.
Есть ли разница?
Редактировать: конкретная проблема, блокировка SSH от somehost:
ipfw add deny tcp from somehost to any port 22 via em0 tcpflags syn
против
ipfw add deny tcp from somehost to any port 22 via em0
3 ответа
Есть цель отбрасывать только синхронизированные пакеты, но это не (в первую очередь) производительность; это простой способ создать правило запрета по умолчанию, которое будет применяться к входящим соединениям, но не возвращать пакеты для исходящего соединения. Правило как это:
deny tcp from any to any in setup
(обратите внимание, что "setup" - это сокращение от "tcpflags syn,!ack") блокирует все входящие TCP-соединения (которые не были разрешены правилом с более высоким приоритетом).
Для этого может существовать аргумент производительности, поскольку альтернатива - использование правил keep-state для разрешения возврата пакетов на исходящих соединениях - включает в себя динамические правила (а также создание, управление и проверку всех пакетов по ним), которые предположительно имеют некоторые влияние на производительность.
Имейте в виду, это не относится к правилу, блокирующему определенный порт с низким номером (например, 22 в вашем примере), поскольку вы можете быть уверены, что для исходящего соединения не будет выделен порт под 1024.
Глобальная блокировка всего трафика на указанный порт представляется более эффективной, чем блокировка определенных видов трафика, как вы сказали, меньше проверки пакетов. Это действительно зависит от ваших намерений. Если вы хотите, чтобы служба была открыта и доступна, но не хотите, чтобы кто-нибудь SYN сканировал этот порт, существуют другие методы обнаружения такого рода активности. Если вы не хотите, чтобы служба была доступна всем вместе, закройте порт.
Я думаю, что это забавно: "Если я создаю правило только для отбрасывания пакетов SYN для TCP, соединение не может быть установлено, и брандмауэр даже не должен будет смотреть на другие пакеты".
Ну... если вы не хотите, чтобы брандмауэр вообще просматривал какие-либо пакеты, откажитесь от всех! Если вы хотите, чтобы (по какой-то причине) был журнал пакетов SYN на указанный порт, вы могли бы сделать это, но я, честно говоря, видел выгоду вообще.
Кто бы ни предложил блокировать пакеты SYN и увеличить его производительность, он должен изучить его в сети +
Это моя непроверенная теория, что сброс всех пакетов в порт происходит быстрее, чем просто syn
пакеты. Вот почему:
- Непредвиденные пакеты могут обычно генерировать сообщение о сбросе TCP или недоступности порта ICMP. Только написание правила для пакетов SYN приведет к запуску других пакетов в ОС.
- Правило все еще должно быть сопоставлено. Оба правила проверяют порт 22, но необходимо еще раз проверить, есть ли SYN или нет во втором правиле.
Чтобы быть эффективным, брандмауэр должен все равно просматривать каждый пакет. Будучи брандмауэром с состоянием, он может некоторое время перегружаться, пытаясь сопоставить не-SYN-пакеты с существующими разрешенными потоками из других наборов правил.
Если вы собираетесь сбросить TCP-соединение с портом, отбросьте все TCP-пакеты к порту.