The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"ipfw, setup и keep-state"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Информационная безопасность (BSD ipfw, ipf, ip-filter)
Изначальное сообщение [ Отслеживать ]

"ipfw, setup и keep-state"  +/
Сообщение от vijem0 (ok) on 24-Сен-13, 14:32 
Добрый день.

Есть ли какой-нибудь смысл использовать keep-state вместе с setup? Если да, то приведите наглядные примеры.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по ответам | RSS]

1. "ipfw, setup и keep-state"  +/
Сообщение от михалыч (ok) on 24-Сен-13, 15:06 
> Добрый день.
> Есть ли какой-нибудь смысл использовать keep-state вместе с setup? Если да, то
> приведите наглядные примеры.

В файле /etc/rc.firewall секции CLIENT есть пример

# Allow TCP through if setup succeeded
${fwcmd} add pass tcp from any to any established

# Allow IP fragments to pass through
${fwcmd} add pass all from any to any frag

# Allow setup of incoming email
${fwcmd} add pass tcp from any to me 25 setup

# Allow setup of outgoing TCP connections only
${fwcmd} add pass tcp from me to any setup

# Disallow setup of all other TCP connections
${fwcmd} add deny tcp from any to any setup

# Allow DNS queries out in the world
${fwcmd} add pass udp from me to any 53 keep-state

# Allow NTP queries out in the world
${fwcmd} add pass udp from me to any 123 keep-state

# Everything else is denied by default, unless the
# IPFIREWALL_DEFAULT_TO_ACCEPT option is set in your kernel
# config file.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "ipfw, setup и keep-state"  +/
Сообщение от vijem0 (ok) on 24-Сен-13, 15:20 
>> Добрый день.
>> Есть ли какой-нибудь смысл использовать keep-state вместе с setup? Если да, то
>> приведите наглядные примеры.
> В файле /etc/rc.firewall секции CLIENT есть пример

Я про setup keep-state в одном правиле.

В каких случаях нужно использовать просто keep-state, а в каких имеет смысл setup keep-state?

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "ipfw, setup и keep-state"  +/
Сообщение от михалыч (ok) on 24-Сен-13, 16:40 
>>> Добрый день.
>>> Есть ли какой-нибудь смысл использовать keep-state вместе с setup? Если да, то
>>> приведите наглядные примеры.
>> В файле /etc/rc.firewall секции CLIENT есть пример
> Я про setup keep-state в одном правиле.
> В каких случаях нужно использовать просто keep-state, а в каких имеет смысл
> setup keep-state?

Считается, что одним setup полноценный файервол с динамическими правилами фильтрации создать нельзя.
setup это флаг, который эквивалентен tcpflags SYN,!ACK
keep-state используется для создания динамических правил

Полезем в man ipfw, находим следующее:

Для защиты сайта от атак переполнения(SYN-флуд) поддельными пакетами TCP безопаснее использовать динамические правила:

ipfw add check-state
ipfw add deny tcp from any to any established
ipfw add allow tcp from my-net to any setup keep-state

Это разрешит файерволу устанавливать динамические правила только для тех подключений, которые начинаются с обычного пакета SYN, исходящий изнутри нашей сети. Динамические правила проверяются первым правилом проверкой состояния(check-state) или сохраняющим состояние(keep-state) правилом. Проверка состояния обычно должна помещаться в начале набора правил для минимизации работы по просмотру набора правил.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "ipfw, setup и keep-state"  +/
Сообщение от vijem0 (ok) on 24-Сен-13, 17:46 
> ipfw add check-state
> ipfw add deny tcp from any to any established
> ipfw add allow tcp from my-net to any setup keep-state

Поправил (убрал setup):

ipfw add check-state
ipfw add deny tcp from any to any established
ipfw add allow tcp from my-net to any keep-state


Результат тот-же самый. Так нафига setup прописывать то?  

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "ipfw, setup и keep-state"  +/
Сообщение от михалыч (ok) on 24-Сен-13, 18:17 
>> ipfw add check-state
>> ipfw add deny tcp from any to any established
>> ipfw add allow tcp from my-net to any setup keep-state
> Поправил (убрал setup):
> ipfw add check-state
> ipfw add deny tcp from any to any established
> ipfw add allow tcp from my-net to any keep-state
> Результат тот-же самый. Так нафига setup прописывать то?

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

Согласно теории тройного рукопожатия - один из наиболее важных флагов - флаг SYN, так как он выставляется у пакета открывающего TCP соединение. Из-за его важности у ipfw есть специальное правило, которое отслеживает именно этот флаг - setup. Правило setup эквивалентно правилу tcpflags syn,!ack, таким образом, оно ловит первый, но не второй пакет тройного рукопожатия.

Другой пример, в нём конкретно разрешён флаг setup во входящем пакете:
ipfw add check-state
ipfw add allow tcp from any to any 22 in setup keep-state

Здесь разница с / без setup более очевидна.

Ещё совместно с флагом setup удобно использовать limit ограничивая количество подключений к хосту или порту.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "ipfw, setup и keep-state"  +/
Сообщение от vijem0 (ok) on 24-Сен-13, 18:31 
> Ещё раз:
> Это разрешит файерволу устанавливать динамические правила только для тех подключений,
> которые начинаются с обычного пакета SYN, исходящий изнутри нашей сети.

Нет, это я скажу "Еще раз":

ipfw add check-state (просматриваем дин. правила)
ipfw add deny tcp from any to any established (дропаем все с ACK флагом)
ipfw add allow tcp from my-net to any keep-state (остаются пакеты без ACK, то есть SYN)

setup там был для красоты. и без него, динамические правила создаются только по SYN.


> ipfw add check-state
> ipfw add allow tcp from any to any 22 in setup keep-state
> Здесь разница с / без setup более очевидна.

Очевида? Для меня нет. Что с ним, что без него, все могут ходить ко всем на 22 порт. Если  динамического правила нету, и мне шлют пакет на 22 порт с установленным флагом ACK, то он дропается. Но нафига мне это? Пусть проходит, дропнется на уровне модуля TCP, т.к. рукопожатия еще не было.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "ipfw, setup и keep-state"  +/
Сообщение от vijem0 (ok) on 24-Сен-13, 18:38 
    edit
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "ipfw, setup и keep-state"  +/
Сообщение от михалыч (ok) on 24-Сен-13, 19:31 
Однако.
Проверяем пакет на соответствие динамическому набору правил. Если совпадение найдено, выполняется действие, связанное с правилом, которое генерирует это динамическое правило, иначе переход к следующему правилу.
> ipfw add check-state

Не совсем так. Дропаем не только с флагом ACK , но и RST также.
> ipfw add deny tcp from any to any established (дропаем все с ACK флагом)

Совсем не так. Остаются пакеты со всеми остальными флагами, кроме ACK и RST Это syn, fin, psh, urg и другие
> ipfw add allow tcp from my-net to any keep-state (остаются пакеты без ACK, то есть SYN)

Не для красоты, для безопасности.
> setup там был для красоты. и без него, динамические правила создаются только по SYN.
>> ipfw add check-state
>> ipfw add allow tcp from any to any 22 in setup keep-state
>> Здесь разница с / без setup более очевидна.
> Очевида? Для меня нет. Что с ним, что без него, все могут
> ходить ко всем на 22 порт. Если  динамического правила нету,
> и мне шлют пакет на 22 порт с установленным флагом ACK,
> то он дропается. Но нафига мне это? Пусть проходит, дропнется на
> уровне модуля TCP, т.к. рукопожатия еще не было.

вместо ssh может быть и apache и dns и т.д.
Пакеты "могут ходить" (читай будут), только если первый обязательно с флагом setup
Печально, что вы этого не видите (понимаете).

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

9. "ipfw, setup и keep-state"  +/
Сообщение от vijem0 (ok) on 24-Сен-13, 19:55 
> Не для красоты, для безопасности.

Пойдем от обратного. Что страшного в том, что firewall пропускает tcp пакеты с другими флагами?

Если хэндшейка не было, то модуль tcp отбросит такие пакеты. А если был, то в чем опасность?

> вместо ssh может быть и apache и dns и т.д.
> Пакеты "могут ходить" (читай будут), только если первый обязательно с флагом setup

Ну доспустим апатч, и что дальше? Что если tcp пакеты будут ходить к моему серверу если первого с флагом setup не было? Что произойдет? Апокалипсис случится? Угроза безопасности?

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "ipfw, setup и keep-state"  +/
Сообщение от михалыч (ok) on 25-Сен-13, 07:12 
> Пойдем от обратного. Что страшного в том, что firewall пропускает tcp пакеты с другими флагами?

Да что же это такое-то?!
Вы как читаете? По диагонали?


> Ну доспустим апатч, и что дальше? Что если tcp пакеты будут ходить
> к моему серверу если первого с флагом setup не было? Что
> произойдет? Апокалипсис случится? Угроза безопасности?

Ну, конечно, вашему хоум-серверу или воркстейшен атаки дос/ддос не страшны.

Ещё раз и по слогам:
Для защиты сайта от атак переполнения(SYN-флуд) поддельными пакетами TCP


Существует такой тип сетевых атак как SYN-флуд. Он заключается в том, что злоумышленник
организует большой поток TCP пакетов с выставленным в них флагом SYN. Такой флуд
переполняет таблицы сокетов на атакуемой машине, что не даёт возможности открыть
соединения для легальных пользователей. Т.е. совершается DOS-атака.


В брандмауэре такая атака приводит к росту количества динамических правил.
Текущее количество динамических правил можно узнать из переменной
net.inet.ip.fw.dyn_count, а размер таблицы с динамическими правилами ограничен переменной
net.inet.ip.fw.dyn_max, которая по умолчанию равна 4096.


Если количество разрешённых соединений достигнет предела,
то новые динамические правила перестанут образовываться и новые соединения не будут разрешены в брандмауэре.


Вывод: флаг setup ввели не для красоты, но безопасности ради.
Вы думаете, что умные люди реализовали setup в ipfw от "делать нечего", развлекались?
В любом случае, я не собираюсь вас переубеждать.
Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "ipfw, setup и keep-state"  +/
Сообщение от vijem0 (ok) on 26-Сен-13, 13:50 
> Ещё раз и по слогам:
> Для защиты сайта от атак переполнения(SYN-флуд) поддельными пакетами TCP

setup не спасает от SYN-флуда, он вообще никаким раком на него не влияет. думайте что пишите.

limit {src-addr | src-port | dst-addr | dst-port} спасает в таких случаях

setup limit и просто limit - разницы нету


> Вывод: флаг setup ввели не для красоты, но безопасности ради.

Ну так просвятите... SYN-флуд и setup - это бред, вы уж извините.

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "ipfw, setup и keep-state"  +/
Сообщение от михалыч (ok) on 26-Сен-13, 21:03 
> setup не спасает от SYN-флуда, он вообще никаким раком на него не влияет.

Сам setup нет.  Вкупе с limit да.
Смотрим мой пост 5 выше.
Цитата из него:

Ещё совместно с флагом setup удобно использовать limit ограничивая количество подключений к хосту или порту.

> думайте что пишите.

Я думаю, в отличии от вас.

> limit {src-addr | src-port | dst-addr | dst-port} спасает в таких случаях

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

> Ну так просвятите...

"просвятить"? Святым хотите стать? Это не здесь.
Это вам в семинарию надо.

Если же вы хотите просветиться, то как же вас просвещать, если вы очевидное отрицаете?
Я понимаю, почему вы отрицаете. Это психологическая защита. Нежелание признавать свою неправоту.
Хуже упорства может быть только тупое и глупое упорство.

> SYN-флуд и setup - это бред, вы уж извините.

По вашему получается, что SYN-флуд это бред?!
Так флагом setup и можно выделить эти SYN-пакеты, понимаете?
И соответственно, принять меры защиты от чрезмерного затопления этими пакетами.
Или вы действительно считаете, что разработчики в man ipfw пишут бред?
Однако..

Смотрим ваш старт:

Есть ли какой-нибудь смысл использовать keep-state вместе с setup? Если да, то приведите наглядные примеры.

Ответ:
Да, смысл есть. Наглядные примеры приведены в man ipfw

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

Вы сами должны. Понимаете? Сами! И никто за вас, никто вам свои мозги не вложит.

Открываем man ipfw:


STATEFUL FIREWALL
     Stateful operation is a way for the firewall to dynamically create rules
     for specific flows when packets that match a given pattern are detected.
     Support for stateful operation comes through the check-state, keep-state
     and limit options of rules.


     Dynamic rules are created when a packet matches a keep-state or limit
     rule, causing the creation of a dynamic rule which will match all and
     only packets with a given protocol between a src-ip/src-port
     dst-ip/dst-port pair of addresses (src and dst are used here only to
     denote the initial match addresses, but they are completely equivalent
     afterwards).  Dynamic rules will be checked at the first check-state,
     keep-state or limit occurrence, and the action performed upon a match
     will be the same as in the parent rule.


     Note that no additional attributes other than protocol and IP addresses
     and ports are checked on dynamic rules.


     The typical use of dynamic rules is to keep a closed firewall configura-
     tion, but let the first TCP SYN packet from the inside network install a
     dynamic rule for the flow so that packets belonging to that session will
     be allowed through the firewall:


           ipfw add check-state
           ipfw add allow tcp from my-subnet to any setup keep-state
           ipfw add deny tcp from any to any


     A similar approach can be used for UDP, where an UDP packet coming from
     the inside will install a dynamic rule to let the response through the
     firewall:


           ipfw add check-state
           ipfw add allow udp from my-subnet to any keep-state
           ipfw add deny udp from any to any


     Dynamic rules expire after some time, which depends on the status of the
     flow and the setting of some sysctl variables.  See Section SYSCTL
     VARIABLES for more details.  For TCP sessions, dynamic rules can be
     instructed to periodically send keepalive packets to refresh the state of
     the rule when it is about to expire.


     See Section EXAMPLES for more examples on how to use dynamic rules.


EXAMPLES


   DYNAMIC RULES
     In order to protect a site from flood attacks involving fake TCP packets,
     it is safer to use dynamic rules:


           ipfw add check-state
           ipfw add deny tcp from any to any established
           ipfw add allow tcp from my-net to any setup keep-state


     This will let the firewall install dynamic rules only for those connec-
     tion which start with a regular SYN packet coming from the inside of our
     network.  Dynamic rules are checked when encountering the first
     check-state or keep-state rule.  A check-state rule should usually be
     placed near the beginning of the ruleset to minimize the amount of work
     scanning the ruleset.  Your mileage may vary.


     To limit the number of connections a user can open you can use the fol-
     lowing type of rules:


           ipfw add allow tcp from my-net/24 to any setup limit src-addr 10
           ipfw add allow tcp from any to me setup limit src-addr 4


     The former (assuming it runs on a gateway) will allow each host on a /24
     network to open at most 10 TCP connections.  The latter can be placed on
     a server to make sure that a single client does not use more than 4
     simultaneous connections.


     BEWARE: stateful rules can be subject to denial-of-service attacks by a
     SYN-flood which opens a huge number of dynamic rules.  The effects of
     such attacks can be partially limited by acting on a set of sysctl(8)
     variables which control the operation of the firewall.

Мой вольный перевод:


БРАНДМАУЭР С УЧЁТОМ СОСТОЯНИЯ СОЕДИНЕНИЯ

     Деятельностью учёта состояния соединени для брандмауэра является динамически создаваемые правила
     для определенных потоков при обнаружении пакетов соответствующих данному образцу.
     Поддержка фильтрации с учётом состояния соединения проходит через опции правил:
     проверки состояния, учёта состояния и ограничения.


     Динамические правила создаются, когда пакет соответствует правилу учёта состояния или ограничения,
     это вызывает создание динамического правила, которое будет соответствовать всем пакетам только с данным
     протоколом между парой адресов: IP-адресом источника/портом источника и IP-адресом назначения/портом назначения
     (источник и назначение здесь используются для того, чтобы обозначить начальные соответствующие адреса,
     далее они полностью совпадают). Динамические правила будут проверяться вначале проверкой состояния,
     учётом состояния или событием ограничения и выполняемое действие на соответствующем правиле будет таким же,
     как и в родительском.


     Обратите внимание, что никакие другие дополнительные атрибуты кроме протокола,
     IP-адреса и порта на динамических правилах не проверяются.


     Типичное использование динамических правил сохраняет конфигурацию "закрытый брандмауэр",
     но пусть первый TCP SYN пакет из внутренней сети установит динамическое правило для потока так,
     что пакеты, принадлежащие этой сессии будут разрешены через брандмауэр:


           ipfw add check-state
           ipfw add allow tcp from my-subnet to any setup keep-state
           ipfw add deny tcp from any to any


     Аналогичный подход может быть использован для UDP, где UDP пакет, исходящий из внутренней сети,
     установит динамическое правило, позволяющее прохождение ответа через брандмауэр:


           ipfw add check-state
           ipfw add allow udp from my-subnet to any keep-state
           ipfw add deny udp from any to any


     Динамические правила устаревают через некоторое время, которое зависит от состояния потока данных и
     настройки некоторых sysctl переменных. Смотрите раздел переменные SYSCTL для более подробной информации.
     Для TCP сессий, динамическим правилам может быть поручено периодически посылать пакеты проверки,
     чтобы обновить состояние правила, когда срок его действия истекает.


     Смотрите в разделе ПРИМЕРЫ дополнительные примеры того, как использовать динамические правила.


ПРИМЕРЫ


   ДИНАМИЧЕСКИЕ ПРАВИЛА


     В целях защиты сайта от атак, использующих поддельные пакеты TCP,
     безопаснее использовать динамические правила:


           ipfw add check-state
           ipfw add deny tcp from any to any established
           ipfw add allow tcp from my-net to any setup keep-state


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


     Чтобы ограничить число соединений, которые пользователь может открыть,
     можно использовать следующие типы правил:


           ipfw add allow tcp from my-net/24 to any setup limit src-addr 10
           ipfw add allow tcp from any to me setup limit src-addr 4


     Первое (в предположении выполнения на шлюзе), позволит каждому
     компьютеру в сети /24 открывать не более 10 TCP подключений.
     Последнее, размещённое на сервере, гарантирует, что ни один из клиентов
     не использует больше, чем 4 одновременных подключения.


     ОСТЕРЕГАЙТЕСЬ: динамические правила могут привести к отказу в обслуживании атаками SYN-flood,
     которые открывает огромное количество динамических правил. Последствия таких атак могут быть
     частично ограничены действующим набором переменных sysctl(8), которые контролируют работу брандмауэра.


Будете продолжать бессмысленно упорствовать дальше?
Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "ipfw, setup и keep-state"  +/
Сообщение от vijem0 (ok) on 30-Сен-13, 14:39 
По поводу "безопасности". Вы не правы.

setup limit не спасает от SYN-флуда. Т.к. эта атака проводится с подменой IP адреса отправителя, limit src adr - не подойдет, остается прописывать - это limit dst adr или limit dst port. А это уже полная бессмыслица.

По поводу остальных причин. Вот еще аргументы:

1. для того чтобы отлавливать пакеты с SYN, не обязательно ставить setup. limit без setup тоже ловит пакеты с SYN.

2. setup limit и просто limit - одно и то же. Зачем прописывать setup, если первый пакет всегда SYN. Если первый пакет не SYN - значит был FLUSH динамических правил или очень неестественно-длинный для приложений timeout.

Вывод: setup никак не влияет на безопасность. Если есть в нем смысл - то не в обеспечении безопасности. В чем же он?

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

14. "ipfw, setup и keep-state"  +/
Сообщение от Дум Дум on 01-Окт-13, 11:02 
> Вывод: setup никак не влияет на безопасность. Если есть в нем смысл
> - то не в обеспечении безопасности. В чем же он?

Бывают ещё 'TCP ACK пингование' (http://nmap.org/man/ru/man-host-discovery.html) и 'TCP NULL, FIN и Xmas сканирования' (http://nmap.org/man/ru/man-port-scanning-techniques.html), например...

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

15. "ipfw, setup и keep-state"  +/
Сообщение от Pahanivo (ok) on 10-Окт-13, 15:05 
чисто поржать )))
http://www.opennet.ru/openforum/vsluhforumID10/5191.html?n=v...
вы тут перед ним распинаетесь, а ему в UDP мерещатся SYN флаги )))
Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру