Advanced IPFW rules

Оригинал лежит http://www.ndd.ru/al/ipfw/prim.html

Подробнее о настройке маршрутизации с использованием ipfw смотрите в разделе Policy-Based Routing (PBR) ниже.

Полное описание

Описание команд IPFW (еще не взято оттуда же)

Примеры правил

  1. С помощью данной конструкции можно запретить соединение по протоколу telnet (порт 23) с хоста evilhost.org на хост baby.ua:
    ipfw add deny tcp from cracker.evil.org to wolf.kiev.ua telnet

  2. Данные правила отвергают все входящие соединения с компьютеров, имеющих IP-адреса 192.168.168.1 по 192.168.168.254 При этом выдается соответствующее ICMP-сообщение:

    ipfw add reject tcp from any to 192.168.168.0/26 out
    ipfw add reject tcp from 192.168.168.0/26 to me in

  3. Данные правила ограничивают число соединений, которое может быть открыто пользователем. Брандмауэр (предполагается, что он запущен на шлюзе) разрешает каждому хосту в сети 10.10.10.0/24 открыть максимум 10 соединений. Кроме того, брандмауэр может может быть настроен на сервер так, чтобы убедиться, что один клиентский компьютер совершает не более четырех одновременных соединений.

    pfw add allow tcp from 10.10.10.0/24 to any via fxp1 setup limit src-addr 10
    ipfw add allow tcp from any to me limit src-addr 4

    ВНИМАНИЕ: Такое правило может быть использовано для атак типа DoS (отказ в обслуживании) путем “SYN-затопления”, которое открывает огромное число динамических правил. Ущерб от таких атак может быть значительно ограничен путем варьирования установок переменно sysctl, которые контролируют действие брандмауэра.

  4. Следующее правило вводит ограничение скорости для хоста 192.168.0.9. Скорость ограничивается 64Кбит/с

    ipfw add pipe 31 ip from any to 192.168.0.9 out via fxp1
    ipfw pipe 31 config 31 bw 64Kbit/s

  5. А это правило может быть полезно для “проштрафившихся” пользователей, например, которые не оплачивают работу долгое время. Работать-то можно, но теряется большая часть пакетов (75%) и задержка оставшихся составляет 100 мс, следовательно, страницы будут открываться очень медленно.

    ipfw add pipe 101 ip from any to 192.168.168.0:255.255.255.246 via ed0
    ipfw pipe config 101 delay 100ms plr 0.75

  6. В следующем примере скорость ограничивается значением 128Кбит/с, но при этом задержка каждого пакета составляет 120 мс:

    ipfw add pipe 1025 tcp from me to any 25 out via fxp0
    ipfw pipe 1025 config bw 128Kbit/s delay 120ms

  7. Эмуляция полнодуплексного канала, более похожая на работу по протоколу V.90. Здесь трафик имеет асимметричных характер: относительно пользователя 192.168.0.87 трафик имеет асимметричный характер - скорость входящего трафика 57600 бит/с, а скорость исходящего трафика - 33600 бит/с.

    ipfw add pipe 23 ip from any to 192.168.0.87 out
    ipfw add pipe 24 ip from 192.168.0.87 to any in
    ipfw pipe 23 config 57600bit/s
    ipfw pipe 24 config 33600bit/s

  8. А это эмуляция полудуплексного канала:

    ipfw add pipe 6 ip from any to 192.168.0.100 out via ed0
    ipfw add pipe 6 ip from 192.168.0.100 to any in via ed0

  9. Одной из положительных особенностей новой версии dummynet является способность имитировать множество путей между отправителем и получателем. Это делается с использованием вероятностей величины prob. При условии, что пакет является правильным (т. е. он циркулирует от хоста А к хосту В), первое правило будет выполняться с вероятностью 1/3; в оставшихся 2/3 случаях будет происходить переход ко 2-му правилу, которое будет выполняться с вероятностью 1/2 (0.5) (так что 1/2*2/3=1/3); в оставшихся 1/3 случаев будет происходить переход к третьему правилу, которое имеет вероятность 1. Мы можем конфигурировать эти 3 канала по желанию, чтобы эмулировать, например, такие явления, как повторный запрос пакета и т. д.

    ipfw add prob 0.33 pipe 1 ip from A to B
    ipfw add prob 0.5 pipe 2 ip from A to B
    ipfw add           pipe 3 ip from A to B
    ipfw pipe 1 config ...
    ipfw pipe 2 comfig ...
    ipfw pipe 3 config ...

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

    ipfw add queue 16 tcp  from any to 192.168.0.110 out via ed0
    ipfw add queue 17 tcp from 192.168.0.110 to any in via ed0
    ipfw queue 16 config weight 10 pipe 160
    ipfw queue 17 config weight 7  pipe 160
    ipfw pipe 160 config bw 128Kbit/s

  11. Для приоретизации трафика можно применять следующую конструкцию:

    ipfw add queue 10 tcp from any 20,21 to any 1024-65535 in via fxp0
    ipfw add queue 20 tcp from any 1024-65535 to any 20,21 out via fxp0
    ipfw add queue 10 tcp from any 1024-65535 to any 1024-65535 in via fxp0
    ipfw add queue 10 tcp from any 1024-65535 to any 1024-65535 out via fxp0
    ipfw queue 10 config weight 1 pipe 10
    ipfw queue 20 config weight 1 pipe 20

    1. ssh

      ipfw add queue 50 tcp from any 22 to any 1024-65535 in via fxp0
      ipfw add queue 60 tcp from any 1024-65535 to any 22 out via fxp0
      ipfw queue 50 config pipe 10 weight 100
      ipfw queue 60 config pipe 20 weight 100

    2. pipes

      ipfw add pipe 10 tcp from any to any in via fxp0
      ipfw pipe 10 config
      ipfw add pipe 20 tcp from any to any out via fxp0
      ipfw pipe 20 config

    3. all traffic (весь остальной трафик):

      ipfw add check-state
      ipfw deny tcp from any to any established
      ipfw allow tcp from 192.168.0.0/24 to any setup keep-state

      Это пример динамического правила.

  12. При помощи конструкции probe можно использовать разделение трафика по двум различным каналам. Например:

    ipfw add prob 0.34 forward 212.1.1.254 ip from 212.1.2.0/24 to any

    Здесь часть пакетов (примерно 34%), поступающих из сети 212.1.2.0:255.255.255.0, будет перенаправлено на “альтернативный” шлюз - хост 212.1.1.254.

Про роутинг

В оригинале все лежит на одной странице, но я разбил на две части и про PBR выделил отдельно:Policy-Based Routing (PBR) в ОС FreeBS

Подробное описание IPFW

Здесь только ссылка. Оригинал - на Лисяре. Ркомндую :) Подробное руководство по ipfw nat

security_lab/ipfw-adv.txt · Last modified: 2022/12/24 22:54 by rybario
About this template
CC Attribution-Share Alike 4.0 International
Powered by PHP Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Valid HTML5