Рейтинг:0

Разрешить только SYN-пакеты на порт 80, соответствующий ipset

флаг in

у меня есть ipset названный список разрешений.

Я хочу разрешить каждое подключение к моей машине на каждом порту, кроме порта 80, чего там хочу разрешить подключения только к ipset: список разрешений.

Я хочу настроить таргетинг только на СИН пакеты с порта 80 для эффективности, так что:

  1. если tcp флаг = СИН
  2. если порт 80
  3. если он соответствует названному ipset список разрешений

Затем разрешите соединение, в противном случае отбросьте пакет (если пакет СИН 80 и не соответствовал список разрешений).

Порядок важен для эффективности, потому что я не хочу фильтровать или замедлять установленное соединение.

Я пытаюсь написать для него правила iptables.

Nikita Kipriyanov avatar
флаг za
У вас реальный случай или вы просто дурачитесь теоретическими домыслами? Если у вас есть реальный случай, покажите нам свои измерения, которые показывают, что обработка iptables медленная (с обычными правилами, без причуд), в то время как без iptables обработка выполняется невероятно быстро. В противном случае ваш вопрос не по теме ServerFault, потому что здесь мы говорим о реальных бизнес-кейсах, а не о теоретических предположениях. В таком случае он будет закрыт.
Рейтинг:0
флаг za

Такое последовательное сопоставление можно реализовать с помощью пользовательских цепочек:

iptables -N c1
iptables -N c2
iptables -A ВХОД -p TCP --syn -j c1
iptables -A c1 -p tcp --dport 80 -j c2
iptables -A c2 -m set --match-set allowList src -j ПРИНЯТЬ
iptables -A c2 -j УДАЛИТЬ

Однако я сомневаюсь, что вы добьетесь Любые заметный прирост эффективности от этого. Кроме того, следующий админ, который будет отвечать за поддержку после вас, точно проклянет вас, как минимум.

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

iTaMaR avatar
флаг in
Я не использую порт 80 для «HTTP», те, кто подключается, остаются подключенными и уже находятся в «установленном» соединении, я не хочу «искать» эти пакеты.
iTaMaR avatar
флаг in
Есть ли способ достичь этого без изменения? будет ли это работать: `iptables -A INPUT -p tcp --syn --dport 80 -m set --match-set alowList src -j ACCEPT` `iptables -A INPUT -p tcp --dport 80 -j DROP`
Ginnungagap avatar
флаг gu
@iTaMaR, проводили ли вы какой-либо бенчмаркинг или сбор метрик, чтобы измерить влияние обычного (т. е. «Я оптимизировал») правила? О каком факторе мы говорим?
Nikita Kipriyanov avatar
флаг za
Такое правило явно лучше, потому что его гораздо легче понять. Работа человека обходится гораздо дороже, чем работа за компьютером. Я не уверен, проверяет ли он все свои модули «по порядку», но я думаю, что он перестает сопоставляться, как только выполняется ложное условие. т.е. он может сначала проверить порт 80, или сначала синхронизировать, или даже установить сначала, но как только что-то вернет «нет совпадения», он не будет проверять другие. Еще раз повторюсь, вы оптимизируете преждевременно и, весьма вероятно, не в том месте (как всегда бывает с преждевременной оптимизацией).
iTaMaR avatar
флаг in
@NikitaKipriyanov, что, если набор содержит миллионы IP-адресов ... вы не можете ожидать, что производительность будет такой же, если обход начнется с совпадения набора и упадет на другие
Nikita Kipriyanov avatar
флаг za
Установленный в брандмауэре Linux может содержать не более 65536 записей.Его производительность не зависит от того, сколько в нем элементов, потому что это либо непрерывный блок адресов, либо хеш, т.е. он всегда имеет алгоритмическую сложность O(1).
iTaMaR avatar
флаг in
@NikitaKipriyanov все дело в эффективности, будь то "Manwork" или что-то еще.. прямо сейчас это вопрос реализации iptables, порядок может привести к значительному улучшению условий, как мы видим в каждом языке программирования, говоря, что это не важно, это слишком высокомерно.. что, если есть миллиарды ip в наборе и `правило` можно было бы отклонить раньше в гораздо более простом условии??
iTaMaR avatar
флаг in
@NikitaKipriyanov `набор` - это `модуль`, а модули открыты и могут изменить свою сложность, порядок всегда может оптимизировать `правило`!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.