7. Межсетевой экран

В ПАК “Фортикс” межсетевой экран (далее по тексту МЭ, firewall) обеспечивает фильтрацию трафика, модификацию пакетов и трансляцию адресов (NAT). Все настройки МЭ осуществляются на следующем уровне конфигурации:

[edit firewall]

7.1. Зонный межсетевой экран

7.1.1. Зоны

Основная единица защиты в зонном firewall — зона, формирование которой осуществляется по следующему принципу: интерфейсы со схожими назначениями объединяются в зоны, и, в зависимости от уровня доверия между ними, выстраиваются соответствующие правила доступа для них. При этом один интерфейс может принадлежать только одной зоне или не принадлежать никакой. Самый простой пример — две зоны, одна из которых для “внешних” интерфейсов, трафику с которых нельзя доверять, вторая — для “внутренних”. Кроме того, возможно добавление зоны DMZ для серверов, компрометация которых не должна привести к проникновению во “внутреннюю” зону.

Настройка зон осуществляется на следующем уровне конфигурации:

[edit firewall zone <zone-name>]

где <zone-name> – строка длиной от 1 до 128 символов.

На данном уровне конфигурации доступны следующие настройки:

  • drop-policy to-zone|from-zone|both – указать блокируемые соединения, где to-zone – входящие соединения от других зон или интерфейсов, не принадлежащих ни одной зоне, from-zone – исходящие соединения, both – входящие и исходящие соединения;

  • interface <interface-name> – указать интерфейс, водящий в зону, где <interface-name> – имя существующего интерфейса.

Настройка drop-policy применяется для базовой настройки доступа в зонах и обладает наименьшими привилегиями. Данная настройка не оказывает никакого влияния на трафик, проходящий внутри зоны.

Пример конфигурации зон:

firewall {
  zone lan {
    interface en2
    interface en3
    drop-policy to-zone
  }
  zone wan {
    interface en0
    drop-policy from-zone
  }
  zone dmz {
    interface en1
    drop-policy from-zone
  }
}

В данном примере заданы три зоны (lan, wan, dmz), между которыми распределены интерфейсы en0,en1,en2,en3, определены базовые ограничения настройкой drop-policy. Таблица 7.1 отображает, какие соединения разрешены в зонах, а какие запрещены (в строках указаны интерфейсы, на которые приходит первый пакет соединения, в столбцах — через которые он отсылается согласно таблице маршрутизации).

Таблица 7.1 Пример настройки зон

Интерфейс

en0

en1

en2

en3

local

en0

+ (self)

- (from wan)

- (from wan, to lan)

- (from wan, to lan)

- (from wan)

en1

- (from dmz)

+ (self)

- (from dmz, to lan)

- (from dmz, to lan)

- (from dmz)

en2

+

+

+ (self)

+ (self)

+

en3

+

+

+ (self)

+ (self)

+

local

+

+

- (to lan)

- (to lan)

+ (self)

Символом “+” отмечен трафик, который пропускается настройками drop-policy (в скобках указано self, если трафик проходит внутри одной зоны и не может быть ограничен настройками drop-policy). Символом “-” отмечен трафик, который блокируется (в скобках указано, каким именно правилом: например, запись from wan означает, что трафик заблокирован настройкой drop-policy from-zone зоны wan, to landrop-policy to-zone зоны lan).

Для управления трафиком, источником или получателем которого является ПАК “Фортикс”, применяется специальная псевдозона local (в таблице обозначена как интерфейс local). К трафику данной зоны неприменимы настройки drop-policy, для его фильтрации применяются политики (см. подпункт 7.1.3 Политики).

7.1.2. Фильтры

Для более точного отбора трафика в зонном firewall используются фильтры, которые объединяются в политики (см. подпункт 7.1.3 Политики). Фильтр зонного firewall состоит из списка правил (rule), по которым осуществляется отбор трафика. Каждое правило из списка состоит из критериев отбора и действия action, которое применяется в случае выполнения критериев. При формировании списка правил важен порядок их указания в конфигурации: чем раньше указано правило в конфигурации (чем выше правило в списке), тем оно приоритетнее. Первый пакет соединения проходит по очереди через все правила до тех пор, пока не попадёт в первое, соответствующее ему и имеющее действие action, отличное от отключающего применение правила (disabled). Фильтры применяются отдельно к IPv4- и IPv6-трафику.

Настройка фильтров осуществляется на следующем уровне конфигурации:

[edit firewall ipv4|ipv6 filter <filter-name>]

где

  • ipv4|ipv6 – уровень конфигурации IPv4/IPv6;

  • <filter-name> – строка длиной от 1 до 128 символов.

На данном уровне конфигурации доступны следующие настройки:

  • description <description> – указать описание фильтра, где <description> – строка;

  • rule <rule-name> – указать правило, соответствующее данному фильтру, где <rule-name> – имя правила (см. ниже).

Настройка правил фильтра осуществляется на следующем уровне конфигурации:

[edit firewall ipv4|ipv6 filter <filter-name> rule <rule-name>]

где

  • ipv4|ipv6 – уровень конфигурации IPv4/IPv6;

  • <filter-name> – строка длиной от 1 до 128 символов;

  • <rule-name> – строка длиной от 1 до 128 символов.

На данном уровне конфигурации доступны следующие настройки:

  • description <description> – указать описание правила, где <description> – строка;

  • from address <address>|file-list <file-list-name>|network <network-name> – (критерий отбора) указать адрес(а) источника, по которому(ым) осуществляется отбор трафика, где <address> – IPv4-адрес в формате A.B.C.D[/mask] или IPv6-адрес в формате A:B:..:H[/mask] в зависимости от уровня конфигурации, <network-name> – имя существующего списка сетей, <file-list-name> – имя существующего файла списка сетей (см. подпункт 7.1.2.1 Списки сетей и сервисы);

  • to address <address>|file-list <file-list-name>|network <network-name> – (критерий отбора) указать адрес(а) назначения, по которому(ым) осуществляется отбор трафика, где <address> – IPv4-адрес в формате A.B.C.D[/mask] или IPv6-адрес в формате A:B:..:H[/mask] в зависимости от уровня конфигурации, <network-name> – имя существующего списка сетей, <file-list-name> – имя файла существующего списка сетей (см. подпункт 7.1.2.1 Списки сетей и сервисы);

  • from-port <port> – (критерий отбора) указать исходящий порт, по которому осуществляется отбор трафика, где <port> – строка в формате tcp|udp n[-m] (n, m – числа от 1 до 65535) или имя существующего списка портов (см. подпункт 7.1.2.1 Списки сетей и сервисы);

  • to-port <port> – (критерий отбора) указать входящий порт, по которому осуществляется отбор трафика, где <port> – строка в формате tcp|udp n[-m] (n, m – числа от 1 до 65535) или имя существующего списка портов (см. подпункт 7.1.2.1 Списки сетей и сервисы);

  • from-interface <interface-name> – (критерий отбора) указать интерфейс источника, по которому осуществляется отбор трафика, где <interface-name> – имя существующего интерфейса;

  • to-interface <interface-name> – (критерий отбора) указать интерфейс назначения, по которому осуществляется отбор трафика, где <interface-name> – имя существующего интерфейса;

  • dscp [value <value-dscp>] [mask <mask-dscp>] – (критерий отбора) указать значения поля dscp, по которым осуществляется отбор трафика, где <value-dscp> – hex-значение 0x00..0x3f или одно из представленных в командной строке стандартных значений, <mask-dscp> – hex-значение 0x00..0x3f или одно из представленных в командной строке стандартных значений;

  • protonum <protocol-number> – (критерий отбора) указать номер протокола, по которому осуществляется отбор трафика, где <protocol-number> – число от 0 до 255;

  • tcp|udp|icmp (для IPv4-трафика) – (критерий отбора) указать протокол, по которому осуществляется отбор трафика, и перейти на уровень конфигурации протокола (не может быть задано вместе с настройкой protonum);

  • tcp|udp|icmpv6 (для IPv6-трафика) – (критерий отбора) указать протокол, по которому осуществляется отбор трафика, и перейти на уровень конфигурации протокола (не может быть задано вместе с настройкой protonum);

  • timestart <timestart-value> – (критерий отбора) указать начальное время выполнения правила, где <timestart-value> – строка в формате HH:MM[:SS];

  • timestop <timestop-value> – (критерий отбора) указать конечное время выполнения правила, где <timestop-value> – строка в формате HH:MM[:SS];

  • datestart <datestart-value> – (критерий отбора) указать начальную дату (и время) выполнения правила, где <datestart-value> – строка в формате YYYY-MM-DD[THH:MM[:SS]], по умолчанию – 00:00:00;

  • datestop <datestop-value> – (критерий отбора) указать конечную дату (и время) выполнения правила, где <datestop-value> – строка в формате YYYY-MM-DD[THH:MM[:SS]], по умолчанию – 00:00:00);

  • connlimit <limit> – (критерий отбора) указать максимальное число активных соединений, попадающих под критерии отбора, для которых выполняется правило, где <limit> – число от 0 до 4294967295;

  • log – перейти на уровень конфигурации журналирования пакетов (см. подраздел 7.8 Журналирование пакетов);

  • counter <counter-name> – указать счётчик срабатывания правила, где <counter-name> – имя счётчика (см. пункт 7.7 Счётчики);

  • action <action> – указать действие, применяемое при выполнении критериев отбора, где <action> – строка (см. ниже).

Предусмотрены следующие действия для настройки action:

  • disabled — отключить применение правила (применяется для временного отключения правила, например, если необходимо временно предоставить доступ к некоторому ресурсу);

  • accept — разрешить соединение и прекратить его дальнейшую проверку зонным firewall;

  • drop — запретить соединение без отправки ICMP-уведомления;

  • reject — запретить соединение с отправкой источнику ICMP-уведомления (ICMPv6-уведомления для IPv6) port-unreachable;

  • return — прекратить обработку пакета в данном фильтре (в таком случае соединение обрабатывается настройкой default-action политики (см. подпункт 7.1.3 Политики) или настройкой drop-policy).

7.1.2.1. Списки сетей и сервисы

Для указания нескольких адресов источника или назначения возможно использование списков сетей.

Настройка списков сетей осуществляется на следующем уровне конфигурации:

[edit firewall ipv4|ipv6 network <network-name>]

где

  • ipv4|ipv6 – уровень конфигурации IPv4/IPv6;

  • <network-name> – строка длиной от 1 до 128 символов.

На данном уровне конфигурации доступны следующие настройки:

  • description <description> – указать описание списка сетей, где <description> – строка;

  • address <address> – указать адрес, входящий в данный список сетей, где <address> – IPv4-адрес в формате A.B.C.D[/mask] или IPv6-адрес в формате A:B:..:H[/mask] в зависимости от уровня конфигурации;

  • network <network-name> – указать существующий список сетей, содержимое которого включается в данный список, где <network-name> – имя существующего списка сетей.

Пример конфигурации списка сетей:

firewall {
  ipv4 {
    network blocklist-common {
      address 1.1.1.0/24
      address 3.3.0.0/16
      address 7.8.1.2
    }
    network blocklist-lan {
      network blocklist-common
      address 4.4.4.4
    }
  }
}

Возможно хранение списка сетей в файле. Настройка файла списка сетей осуществляется на следующем уровне конфигурации:

[edit firewall ipv4|ipv6 file-list <file-list-name>]

где

  • ipv4|ipv6 – уровень конфигурации IPv4/IPv6;

  • <file-list-name> – строка длиной от 1 до 128 символов.

На данном уровне конфигурации доступны следующие настройки:

  • description <description> – указать описание файла списка сетей, где <description> – строка;

  • path <file-path> – указать путь к файлу списка сетей, где <file-path> – полное имя файла.

Каждая запись файла списка сетей начинается с новой строки и может являться:

  • IP-адресом (например, 192.168.1.1);

  • сетью (например, 192.168.0.0/24);

  • диапазоном (например, 192.168.0.100-192.168.0.200).

Пример конфигурации файла списка сетей:

firewall {
  ipv4 {
    file-list geoip-RU path /share/list-RU.nft
  }
}

При выполнении команды commit после настройки файла списка сетей его содержимое считывается и преобразовывается в список сетей geoip-RU.

Для обновления списка сетей, полученного из файла списка сетей, без перезагрузки подсистемы firewall применяется команда:

> firewall update file-list ipv4|ipv6 <file-list-name>

где

  • ipv4|ipv6 – уровень конфигурации IPv4/IPv6;

  • <file-list-name> – псевдоним файла списка сетей в конфигурации.

Пример применения команды для обновления списка сетей, полученного из файла /share/list-RU.nft:

> firewall update file-list ipv4 geoip-RU

Для указания нескольких входящих и исходящих портов возможно использование списков портов (сервисов).

Настройка сервисов осуществляется на следующем уровне конфигурации:

[edit firewall service <service-name>]

где <service-name> – строка длиной от 1 до 128 символов.

На данном уровне конфигурации доступны следующие настройки:

  • description <description> – указать описание сервиса, где <description> – строка;

  • tcp <port-number> – указать TCP-порт(ы), входящий(ие) в данный сервис, где <port-number> – строка в формате n[-m] (n, m – числа от 1 до 65535);

  • udp <port-number> – указать UDP-порт(ы), входящий(ие) в данный сервис, где <port-number> – строка в формате n[-m] (n, m – числа от 1 до 65535);

  • service <service-name> – указать существующий сервис, содержимое которого включается в данный сервис, где <service-name> – имя существующего сервиса.

Пример конфигурации сервиса:

firewall {
  service http {
    tcp 80
    tcp 443
  }
}

7.1.2.2. Пример

Пример конфигурации фильтров:

firewall {
  ipv4 {
    filter allow-http {
      rule 1 {
        to-port service http
        to address 192.168.130.4
        action accept
      }
    }
    filter blocklist-common {
      rule 1 {
        to network blocklist-common
        action drop
      }
    }
    filter blocklist-lan {
      rule 1 {
        to network blocklist-lan
        action drop
      }
    }
    filter allow-admin {
      rule 1 {
        from address 192.168.2.87
        action accept
      }
    }
  }
}

7.1.3. Политики

Политики зонного firewall определяют настройки доступа для соединений одного направления между двумя зонами. Каждая политика содержит фильтры (см. пункт 7.1.2 Фильтры) и (опционально) действие по умолчанию default-action, которое выполняется в случае неприменимости фильтров. Возможно определение политики для соединения из зоны в саму себя, применяемой для трафика между интерфейсами одной зоны.

Настройка политик осуществляется на следующем уровне конфигурации:

[edit firewall ipv4|ipv6 policy <from-zone-name> to <to-zone-name>]

где

  • ipv4|ipv6 – уровень конфигурации IPv4/IPv6;

  • <from-zone-name> – имя существующей зоны, из которой осуществляется соединение;

  • <to-zone-name> – имя существующей зоны, в которую осуществляется соединение.

На данном уровне конфигурации доступны следующие настройки:

  • filter <filter-name> – указать имя фильтра, относящегося к данной политике, где <filter-name> – имя существующего фильтра, возможно указание нескольких настроек данного уровня конфигурации;

  • default-action <action> – указать действие по умолчанию для политики, если ни один фильтр политики неприменим, где <action> – строка (см. ниже).

Предусмотрены следующие действия по умолчанию <action> для настройки default-action <action>:

  • accept – разрешить соединение и прекратить его дальнейшую проверку зонным firewall;

  • disabled – отключить применение политики;

  • drop – запретить соединение без отправки ICMP-уведомления;

  • reject – запретить соединение с отправкой источнику ICMP-уведомления (ICMPv6-уведомления для IPv6) port-unreachable.

Пример конфигурации политик:

firewall {
  ipv4 {
    policy dmz to wan {
      default-action accept
      filter blocklist-common
    }
    policy wan to dmz filter allow-http
    policy lan to dmz filter allow-http
    policy lan to wan {
      filter blocklist-lan
    }
    policy local to wan {
      filter blocklist-common
    }
    policy lan to local {
      default-action drop
      filter allow-admin
    }
  }
}

7.1.4. Алгоритм отбора трафика

  1. Если к соединению применимы правила фильтров, выполняется действие action первого из применимых правила фильтра. Дальнейший отбор трафика не осуществляется.

  2. Если к соединению не применим ни один фильтр, но применимы политики, применяется default-action первой из применимых политики. Дальнейший отбор трафика не осуществляется.

  3. Если к соединению не применимы ни фильтры, ни политики, применяются настройки drop-policy.

7.1.5. Пример настройки зонного межсетевого экрана

Объединённая из примеров выше конфигурация зонного firewall:

firewall {
  service http {
    tcp 80
    tcp 443
  }
  zone lan {
    interface en2
    interface en3
    drop-policy to-zone
  }
  zone wan {
    interface en0
    drop-policy from-zone
  }
  zone dmz {
    interface en1
    drop-policy from-zone
  }
  ipv4 {
    network blocklist-common {
      address 1.1.1.0/24
      address 3.3.0.0/16
      address 7.8.1.2
    }
    network blocklist-lan {
      network blocklist-common
      address 4.4.4.4
    }
    policy dmz to wan {
      default-action accept
      filter blocklist-common
    }
    policy wan to dmz filter allow-http
    policy lan to dmz filter allow-http
    policy lan to wan {
      filter blocklist-lan
    }
    policy local to wan {
      filter blocklist-common
    }
    policy lan to local {
      default-action drop
      filter allow-admin
    }
    filter allow-http {
      rule 1 {
        to-port service http
        to address 192.168.130.4
        action accept
      }
    }
    filter blocklist-common {
      rule 1 {
        counter cnt-blocklist
        to network blocklist-common
        action drop
      }
    }
    filter blocklist-lan {
      rule 1 {
        counter cnt-blocklist
        to network blocklist-lan
        action drop
      }
    }
    filter allow-admin {
      rule 1 {
        counter cnt-allow-admin
        from address 192.168.2.87
        action accept
      }
    }
  }
}

В данном примере:

  • созданы четыре фильтра, каждый из которых состоит из одного правила:

    • фильтры blocklist-common и blocklist-lan блокируют соединения к сетям из списков сетей;

    • фильтр allow-http разрешает соединения к web-серверу;

    • фильтр allow-admit разрешает соединения от источника с адресом 192.168.2.87;

  • разрешён трафик из зоны dmz в зону wan;

  • разрешён доступ к web-серверу, расположенному в зоне dmz, из остальных зон;

  • добавлены два списка блокировки трафика в зоне wan:

    • для зоны lan;

    • для зон lan, dmz и псевдозоны local;

  • разрешён доступ к самому маршрутизатору только для администратора из зоны lan.

Настройки drop-policy данного примера подробно описаны в Таблице 3.

7.2. Трансляция адресов (NAT)

Механизм NAT применяется для преобразования адресов и портов проходящих пакетов. Предусмотрены замены двух типов:

  • SNAT (замена адреса источника);

  • DNAT (замена адреса назначения).

При этом замена осуществляется только в первом пакете соединения. После прохождения первого пакета для соединения создаётся специальная ассоциация, которая, в зависимости от направления, заменяет адрес назначения или источника. Например, если у первого пакета заменён адрес назначения при помощи механизма DNAT, у ответного пакета заменяется адрес источника.

Настройка NAT осуществляется на следующем уровне конфигурации:

[edit firewall ipv4|ipv6 nat]

где ipv4|ipv6 – уровень конфигурации IPv4/IPv6.

7.2.1. SNAT (замена адреса источника)

Механизм SNAT представляет собой набор правил, который применяется к трафику из выходного интерфейса или выходной зоны.

Настройка механизма SNAT осуществляется на следующем уровне конфигурации:

[edit firewall ipv4|ipv6 nat source]

где ipv4|ipv6 – уровень конфигурации IPv4/IPv6.

На данном уровне конфигурации доступны следующие настройки:

  • ruleset <ruleset-name> – указать набор правил, применяемый к механизму SNAT, где <ruleset-name> – имя набора правил (см. ниже).

Настройка наборов правил осуществляется на следующем уровне конфигурации:

[edit firewall ipv4|ipv6 nat source ruleset <ruleset-name>]

где

  • ipv4|ipv6 – уровень конфигурации IPv4/IPv6;

  • <ruleset-name> – строка длиной от 1 до 128 символов.

На данном уровне конфигурации доступны следующие настройки:

  • to-interface <to-interface-name> – указать выходной интерфейс, к которому применяется набор правил, где <to-interface-name> – имя существующего интерфейса;

  • to-zone <to-zone-name> – указать выходную зону, к которой применяется набор правил, где <to-zone-name> – имя существующей зоны;

  • rule <rule-name> – указать правило, входящее в набор правил, где <rule-name> – имя правила (см. ниже).

Настройка правил осуществляется на следующем уровне конфигурации:

[edit firewall ipv4|ipv6 nat source ruleset <ruleset-name> rule <rule-name>]

где

  • ipv4|ipv6 – уровень конфигурации IPv4/IPv6;

  • <ruleset-name> – строка длиной от 1 до 128 символов;

  • <rule-name> – строка длиной от 1 до 128 символов.

На данном уровне конфигурации доступны следующие настройки:

  • log – перейти на уровень конфигурации журналирования пакетов (см. подраздел 7.8 Журналирование пакетов);

  • from address <address>|file-list <file-list-name>|network <network-name> – (критерий отбора) указать адрес(а) источника, по которому(ым) осуществляется отбор трафика, где <address> – IPv4-адрес в формате A.B.C.D[/mask] или IPv6-адрес в формате A:B:..:H[/mask] в зависимости от уровня конфигурации, <network-name> – имя существующего списка сетей, <file-list-name> – имя существующего файла списка сетей (см. подпункт 7.1.2.1 Списки сетей и сервисы);

  • to address <address>|file-list <file-list-name>|network <network-name> – (критерий отбора) указать адрес(а) назначения, по которому(ым) осуществляется отбор трафика, где <address> – IPv4-адрес в формате A.B.C.D[/mask] или IPv6-адрес в формате A:B:..:H[/mask] в зависимости от уровня конфигурации, <network-name> – имя существующего списка сетей, <file-list-name> – имя существующего файла списка сетей (см. подпункт 7.1.2.1 Списки сетей и сервисы);

  • from-port <port> – (критерий отбора) указать исходящий порт, по которому осуществляется отбор трафика, где <port> – строка в формате tcp|udp n[-m] (n, m – число от 1 до 65535) или имя существующего списка портов (см. подпункт 7.1.2.1 Списки сетей и сервисы);

  • to-port <port> – (критерий отбора) указать входящий порт, по которому осуществляется отбор трафика, где <port> – строка в формате tcp|udp n[-m] (n, m – число от 1 до 65535) или имя существующего списка портов (см. подпункт 7.1.2.1 Списки сетей и сервисы);

  • from-interface <interface-name> – (критерий отбора) указать интерфейс источника, по которому осуществляется отбор трафика, где <interface-name> – имя существующего интерфейса;

  • to-interface <interface-name> – (критерий отбора) указать интерфейс назначения, по которому осуществляется отбор трафика, где <interface-name> – имя существующего интерфейса;

  • snat-ip <address> – изменить адрес источника на известный заранее, где <address> – IPv4-адрес в формате A.B.C.D[/mask] или IPv6-адрес в формате A:B:..:H[/mask] в зависимости от уровня конфигурации;

  • snat-netmap <address> – отобразить в указанную подсеть, причём младшая часть адреса остается неизменной (например, настройка snat-natmap 10.3.0.0/16 приведёт к замене адреса 192.168.85.132 на 10.3.85.132), где <address> – IPv4-адрес в формате A.B.C.D[/mask] или IPv6-адрес в формате A:B:..:H[/mask] в зависимости от уровня конфигурации;

  • snat-masquerade – изменить адрес источника на адрес выходного интерфейса;

  • snat-port <port-number> – (в комбинации с snat-ip, snat-masquerade или snat-netmap) изменить порт источника, где <port-number> – число от 1 до 65535;

  • return — прекратить обработку пакета в данном фильтре (в данном случае соединение обрабатывается настройкой default-action политики (см. подпункт 7.1.3 Политики) или настройкой drop-policy).

Пример конфигурации механизма SNAT для дополнения примера подраздела 7.1 Зонный межсетевой экран:

firewall {
  ipv4 {
    nat {
      source {
        ruleset out {
          to-zone wan
          rule 1 {
            snat-masquerade
          }
        }
      }
    }
  }
}

В данном примере для доступа в зону wan отображаются адреса источника пакетов на адрес выходного интерфейса.

7.2.2. DNAT (замена адреса назначения)

Механизм DNAT аналогичен SNAT, но заменяет адрес назначения, а не источника.

Настройка механизма DNAT осуществляется на следующем уровне конфигурации:

[edit firewall ipv4|ipv6 nat destination]

где ipv4|ipv6 – уровень конфигурации IPv4/IPv6.

На данном уровне конфигурации доступны следующие настройки:

  • ruleset <ruleset-name> – указать набор правил, применяемый к механизму DNAT, где <ruleset-name> – имя набора правил (см. ниже).

Настройка набора правил осуществляется на следующем уровне конфигурации:

[edit firewall ipv4|ipv6 nat destination ruleset <ruleset-name>]

где

  • ipv4|ipv6 – уровень конфигурации IPv4/IPv6;

  • <ruleset-name> – строка длиной от 1 до 128 символов.

На данном уровне конфигурации доступны следующие настройки:

  • from-interface <from-interface-name> – указать входной интерфейс, к которому относится набор правил, где <from-interface-name> – имя существующего интерфейса;

  • from-zone <from-zone-name> – указать входную зону, к которой относится набор правил, где <from-zone-name> – имя существующей зоны;

  • rule <rule-name> – указать правило, входящее в набор, где <rule-name> – имя правила (см. ниже).

Настройка правил осуществляется на следующем уровне конфигурации:

[edit firewall ipv4|ipv6 nat source ruleset <ruleset-name> rule <rule-name>]

где

  • ipv4|ipv6 – уровень конфигурации IPv4/IPv6;

  • <ruleset-name> – имя набора правил (строка длиной от 1 до 128 символов);

  • <rule-name> – имя правила (строка длиной от 1 до 128 символов).

На данном уровне конфигурации доступны следующие настройки:

  • log – перейти на уровень конфигурации журналирования пакетов;

  • from address <address>|file-list <file-list-name>|network <network-name> – (критерий отбора) указать адрес(а) источника, по которому(ым) осуществляется отбор трафика, где <address> – IPv4-адрес в формате A.B.C.D[/mask] или IPv6-адрес в формате A:B:..:H[/mask] в зависимости от уровня конфигурации, <network-name> – имя существующего списка сетей, <file-list-name> – имя существующего файла списка сетей (см. подпункт 7.1.2.1 Списки сетей и сервисы);

  • to address <address>|file-list <file-list-name>|network <network-name> – (критерий отбора) указать адрес(а) назначения, по которому(ым) осуществляется отбор трафика, где <address> – IPv4-адрес в формате A.B.C.D[/mask] или IPv6-адрес в формате A:B:..:H[/mask] в зависимости от уровня конфигурации, <network-name> – имя существующего списка сетей, <file-list-name> – имя существующего файла списка сетей (см. подпункт 7.1.2.1 Списки сетей и сервисы);

  • from-port <port> – (критерий отбора) указать исходящий порт, по которому осуществляется отбор трафика, где <port> – строка в формате tcp|udp n[-m] (n, m – число от 1 до 65535) или имя существующего списка портов (см. подпункт 7.1.2.1 Списки сетей и сервисы);

  • to-port <port> – (критерий отбора) указать входящий порт, по которому осуществляется отбор трафика, где <port> – строка в формате tcp|udp n[-m] (n, m – число от 1 до 65535) или имя существующего списка портов (см. подпункт 7.1.2.1 Списки сетей и сервисы);

  • from-interface <interface-name> – (критерий отбора) указать интерфейс источника, по которому осуществляется отбор трафика, где <interface-name> – имя существующего интерфейса;

  • to-interface <interface-name> – (критерий отбора) указать интерфейс назначения, по которому осуществляется отбор трафика, где <interface-name> – имя существующего интерфейса;

  • dnat-ip <address> – изменить адрес назначения на известный заранее, где <address> – IPv4-адрес в формате A.B.C.D[/mask] или IPv6-адрес в формате A:B:..:H[/mask] в зависимости от уровня конфигурации;

  • dnat-netmap <address> – отобразить в указанную подсеть, причём младшая часть адреса остаётся неизменной (например, настройка dnat-natmap 10.3.0.0/16 приведёт к замене адреса 192.168.85.132 на 10.3.85.132), где <address> – IPv4-адрес в формате A.B.C.D[/mask] или IPv6-адрес в формате A:B:..:H[/mask] в зависимости от уровня конфигурации;

  • dnat-masquerade – изменить адрес назначения на адрес входного интерфейса (перенаправить трафик в зону local);

  • dnat-port <port-number> – (в комбинации с dnat-ip, dnat-masquerade или dnat-netmap) изменить порт назначения, где <port-number> – число от 1 до 65535;

  • return — прекратить обработку пакета в данном фильтре (в данном случае соединение обрабатывается настройкой default-action политики (см. подпункт 7.1.3 Политики) или настройкой drop-policy).

Пример конфигурации DNAT:

firewall {
  ipv4 {
    nat {
      destination {
        ruleset in {
          from-zone wan
          rule 1 {
            to-port service http
            dnat-ip 192.168.130.4
          }
        }
      }
    }
  }
}

В примере подраздела 7.1 Зонный межсетевой экран адрес HTTP-сервера — 192.168.130.4, при этом по данному адресу сервер не доступен из зоны wan. После применения данной конфигурации все соединения на порты 80 и 443 (см. service http в подпункте 7.1.2.1 Списки сетей и сервисы) перенаправляются на HTTP-сервер.

7.3. Основной межсетевой экран (Netfilter)

Основной межсетевой экран netfilter позволяет работать попакетно и модифицировать пакеты. Подсистема netfilter работает независимо от зонного firewall, то есть, если пакет принят в одном из firewall, он может быть отброшен в другом.

Настройка основного МЭ осуществляется на следующем уровне конфигурации:

[edit firewall ipv4|ipv6 netfilter]

где ipv4|ipv6 – уровень конфигурации IPv4/IPv6.

На данном уровне конфигурации доступны следующие настройки:

  • application <application-name> – задать имя списка приложений, где <application-name> – строка длиной от 1 до 128 символов (см. пункт 7.3.2 DPI);

  • filter <filter-name> – перейти на уровень конфигурации фильтра основного МЭ, где <filter-name> – строка длиной от 1 до 128 символов (см. ниже);

  • forward – (цепочка применения фильтра) применить фильтр к пакетам, передаваемым от одного интерфейса к другому;

  • local-in – (цепочка применения фильтра) применить фильтр к пакетам, передаваемым на ПАК “Фортикс”;

  • local-out – (цепочка применения фильтра) применить фильтр к пакетам, передаваемым с ПАК “Фортикс”;

  • prerouting – (цепочка применения фильтра) применить фильтр к входящим пакетам до их маршрутизации;

  • postrouting – (цепочка применения фильтра) применить фильтр к выходящим пакетам.

Для каждой цепочки указывается точка перехвата (хук) согласно следующему списку:

  • fragged — точка перехвата до дефрагментации пакета;

  • raw — точка перехвата до работы conntrack;

  • mangle — основная точка перехвата, в которой предполагается большая часть работы с пакетами;

  • after-zone — точка перехвата после работы зонного firewall;

  • after-nat — точка перехвата после работы NAT.

При этом точка перехвата fragged доступна только в цепочке prerouting, raw — только в цепочках prerouting и local-out. Критерий отбора state недоступен на данных точках перехвата, так как на этапе применения точек перехвата модуль conntrack ещё не соотнёс пакеты с какими-либо соединениями.

Для применения фильтра к точке перехвата используется команда:

[edit firewall ipv4|ipv6 netfilter]
# set <chain-name> <hook-name> filter <filter-name>

где

  • ipv4|ipv6 – уровень конфигурации IPv4/IPv6;

  • <chain-name> – цепочка применения фильтра (см. выше);

  • <hook-name> – точка перехвата (см. выше);

  • <filter-name> – имя существующего фильтра.

Данная настройка является обязательной для использования фильтра основного firewall. Фильтр проходит через все точки перехвата, к которым данный фильтр применен.

Пример конфигурации применённого к точке перехвата фильтра:

firewall {
  ipv4 {
    netfilter {
      prerouting mangle filter in-filter
    }
  }
}

7.3.1. Фильтры

Настройка фильтров основного МЭ осуществляется на следующем уровне конфигурации:

[edit firewall ipv4|ipv6 netfilter filter <filter-name>]

где

  • ipv4|ipv6 – уровень конфигурации IPv4/IPv6;

  • <filter-name> – строка длиной от 1 до 128 символов.

На данном уровне конфигурации доступны следующие настройки:

  • description <description> – указать описание фильтра, где <description> – строка;

  • limit <limit-name> – перейти на уровень конфигурации ограничений на число срабатываний правила, где <limit-name> – имя существующего ограничения (см. подпункт 7.3.1.2 Ограничения на количество срабатываний);

  • rule <rule-name> – указать правило, принадлежащее данному фильтру, где <rule-name> – имя правила (см. ниже).

7.3.1.1. Правила фильтра основного межсетевого экрана

Настройка правил фильтров основного межсетевого экрана netfilter осуществляется на следующем уровне конфигурации:

[edit firewall ipv4|ipv6 netfilter filter <filter-name> rule <rule-name>]

где

  • ipv4|ipv6 – уровень конфигурации IPv4/IPv6;

  • <filter-name> – строка длиной от 1 до 128 символов;

  • <rule-name> – строка длиной от 1 до 128 символов.

Критерии отбора зонного межсетевого экрана также применимы для основного МЭ. Предусмотрены следующие дополнительные критерии отбора для основного МЭ (по сравнению с зонным МЭ):

  • content <layer> offset <offset> – перейти на уровень конфигурации критерия отбора по содержимому (см. подпункт 7.3.1.3 Фильтрация по содержимому);

  • dont-fragment true|false (только для ipv4) – указать значение флага don’t fragment, по которому осуществляется отбор, где true – флаг установлен, false – флаг не установлен;

  • more-fragment true|false (только для ipv4) – указать значение флага more fragment, по которому осуществляется отбор, где true – флаг установлен, false – флаг не установлен;

  • length [min <length-value>] [max <length-value>] – указать ограничения на длину пакетов, по которым осуществляется отбор, где <length-value> – число от 20 до 65535;

  • limit <limit-name> – указать ограничение на количество срабатываний правила, где <limit-name> – имя существующего ограничения;

  • ndpi (только ipv4) – перейти на уровень конфигурации глубокого исследования пакетов (см. пункт 7.3.2 DPI);

  • state <state-value> – указать состояние conntrack, по которому осуществляется отбор (см. ниже);

  • ttl [min <ttl-value>] [max <ttl-value>] (только ipv4) – указать значение поля TTL, по которому осуществляется отбор, где <ttl-value> – число от 0 до 255;

  • hop-limit [min <hl>] [max <hl>] (только ipv6) – указать значение поля Hop Limit, по которому осуществляется отбор, где <hl> – число от 0 до 255;

  • encrypted true|false – указать, для каких пакетов (зашифрованных/незашифрованных) осуществляется отбор, где true – зашифрованные, false – незашифрованные.

Настройки правил фильтров основного МЭ аналогичны настройкам правил фильтров зонного МЭ. Для правил фильтров основного МЭ возможно указание следующих состояний conntrack:

  • new – состояние соединения при отправке начального пакета;

  • established – состояние установленного соединения (после прохождения хотя бы по одному пакету в обе стороны);

  • related – состояние для expected-соединений (ожидаемые ответные соединения), которое принимается до established (подробнее см. подраздел 7.4 Модули conntrack (helper));

  • invalid – состояние соединения для пакетов, не соответствующих требованиям протокола.

Для указания состояния, по которому осуществляется отбор, применяется команда:

[edit firewall ipv4|ipv6 netfilter filter <filter-name> rule <rule-name>]
# set state <state-value>

где

  • ipv4|ipv6 – уровень конфигурации IPv4/IPv6;

  • <filter-name> – имя существующего фильтра;

  • <rule-name> – имя существующего правила;

  • <state-value> – состояние conntrack.

Пример конфигурации с указанием состояния соединения:

firewall {
  ipv4 {
    netfilter {
      filter in-filter {
        rule 1 {
          state invalid
          drop
        }
        rule 2 {
          state established
          state related
          accept
        }
      }
    }
  }
}

Применение данной конфигурации позволяет:

  • запретить пакеты, которые не относятся к существующим соединениям, при этом не начинают нового (например новый tcp-пакет без флага SYN);

  • разрешить пакеты, относящиеся к уже установленным соединениям (как в зонном firewall).

Для основного МЭ, в отличие от зонного МЭ, отсутствует настройка action, так как действия указываются непосредственно в правиле, при этом возможно указание только одного действия в одном правиле. Кроме действий зонного МЭ для основного МЭ доступны следующие:

  • goto <filter-name> – прекратить обработку пакета в текущем фильтре и перейти к указанному, где <filter-name> – имя существующего фильтра;

  • call <filter-name> – обработать пакет в другом фильтре (если в другом фильтре для пакета не будет применимо действие, завершающее обработку пакета (т.е. accept, drop или reject), он продолжит прохождение текущего фильтра), где <filter-name> – имя существующего фильтра;

  • set-dscp <dscp-value> – указать DSCP пакета, где <dscp-value> – значение DSCP в формате 0x<hex-value>;

  • set-ttl <ttl-value> – указать TTL пакета, где <ttl-value> – число от 0 до 255;

  • adjust-mss <mss-value> – настроить MSS TCP-пакета, где <mss-value> – число от 0 до 65535.

Пример конфигурации для вызова фильтра из другого:

firewall {
  ipv4 {
    netfilter {
      filter in-filter {
        rule 3 {
          to address 192.168.130.4
          to-port service http
          call http-filter
        }
      }
    }
  }
}

Применение конфигурации из данного примера позволяет вызвать фильтр http-filter из фильтра in-filter.

7.3.1.2. Ограничения на количество срабатываний

Настройка ограничений на количество срабатываний правила осуществляется на следующем уровне конфигурации:

[edit firewall ipv4|ipv6 netfilter filter <filter-name> limit <limit-name>]

где

  • ipv4|ipv6 – уровень конфигурации IPv4/IPv6;

  • <filter-name> – строка длиной от 1 до 128 символов;

  • <limit-name> – строка длиной от 1 до 128 символов.

На данном уровне конфигурации доступны следующие настройки:

  • bytes – перейти к уровню конфигурации ограничения на количество байт за единицу времени;

  • packets – перейти к уровню конфигурации ограничения на количество пакетов за единицу времени;

  • per day|hour|minute|second|week – указать единицу времени для ограничения, где day – за день, hour – за час, minute – за минуту, second – за секунду, week – за неделю.

Для настройки bytes предусмотрены следующие параметры:

  • count <count-value> – указать максимальное количество байт, для которых возможно срабатывание правила, за единицу времени, где <count-value> – строка в формате <number>(kbytes,mbytes,gbytes,kbit,mbit,gbit);

  • burst <burst-value> – указать запас для увеличения максимального количества байт, для которых возможно срабатывание правила, за единицу времени при пиковых нагрузках, где <burst-value> – строка в формате <number>(kbytes,mbytes,gbytes,kbit,mbit,gbit).

Для настройки packets предусмотрены следующие параметры:

  • count <count-value> – указать максимальное количество пакетов, для которых возможно срабатывание правила, за единицу времени, где <count-value> – число от 0 до 4294967295;

  • burst <burst-value> – указать запас для увеличения максимального количества пакетов, для которых возможно срабатывание правила, за единицу времени при пиковых нагрузках, где <burst-value> – число от 0 до 4294967295.

Пример конфигурации ограничения на количество срабатываний правила:

firewall {
  ipv4 {
    netfilter {
      filter http-filter {
        limit lim-http {
          packets count 5
          per second
        }
        rule 1 {
          limit lim-http
          accept
        }
        rule 2 {
          drop
        }
      }
    }
  }
}

Применение данной конфигурации позволяет разрешить только 5 соединений в секунду к http-серверу.

7.3.1.3. Фильтрация по содержимому

Настройка фильтрации по содержимому пакета осуществляется на следующем уровне конфигурации:

[edit firewall ipv4|ipv6 netfilter filter <filter-name> rule <rule-name> content <layer> offset <offset>]

где

  • ipv4|ipv6 – уровень конфигурации IPv4/IPv6;

  • <filter-name> – строка длиной от 1 до 128 символов;

  • <rule-name> – строка длиной от 1 до 128 символов;

  • <layer> – уровень заголовка, от которого считается отступ (link-layer, network-header, transport-header);

  • <offset> – число байт от 0 до 65535.

Так как в шестнадцатеричном представлении заголовка одному байту соответствует два символа, отступ в символах равен удвоенному значению <offset>.

Возможные значения уровня заголовка layer:

  • link-layer – отступ считается от начала заголовка канального уровня (например, Ethernet);

  • network-header – отступ считается от начала заголовка сетевого уровня (например, IPv4 или IPv6);

  • transport-header – отступ считается от начала заголовка транспортного уровня (например, TCP или UDP).

На данном уровне конфигурации доступны следующие настройки:

  • length <length-value> – указать длину проверяемого фрагмента в байтах, где <length-value> – число байт от 1 до 16;

  • value <value-string> – указать значение, с которым сравнивается фрагмент, где <value-string> – строка в формате 0xHEX;

  • mask <mask-value> – указать маску, применяемую к фрагменту перед сравнением, где <mask-value> – строка в формате 0xHEX, по умолчанию – 0xFFFF...

В значениях настроек mask <mask-value> и value <value-string> подстрока HEX – подряд идущие значения байтов, указанные в шестнадцатеричной системе счисления, где одному байту соответствует два символа (например, возможно значение настройки 0x0102, где 01 – значение первого байта, 02 – значение второго байта). Длина подстроки HEX соответствует значению настройки length <length-value>, то есть равна удвоенному значению настройки length <length-value>.

Перед сравнением в проверяемом фрагменте обнуляются биты, не установленные в значении настройки mask, а затем полученное значение сравнивается со значением настройки value. Если значения не совпадают, правило не применяется.

Пример конфигурации фильрации по содержимому:

firewall {
  ipv4 {
    netfilter {
      filter nofrag {
        rule 1 {
          content network-header offset 6 {
            length 1
            value 0x00
            mask 0x40
          }
          drop
        }
      }
    }
  }
}

В данном примере проверяется второй бит седьмого байта IP-заголовка, то есть флаг Don’t Fragment. Если он не установлен, пакет отбрасывается.

7.3.2. DPI

DPI – подсистема Deep Packet Inspection (глубокое исследование пакета), позволяющая через исследование содержимого пакета соотнести его с одним из L7-протоколов. Для работы данной подсистемы необходимо задать список «приложений» DPI. При этом каждое приложение DPI представляет из себя список ассоциированных с ним L7-протоколов.

Настройка списка приложений осуществляется на следующем уровне конфигурации:

[edit firewall ipv4 netfilter application <application-name>]

где <application-name> – строка длиной от 1 до 128 символов.

На данном уровне конфигурации доступны следующие настройки:

  • protocol <protocol-name> – указать протокол, где <protocol-name> – название протокола DPI (список поддерживаемых протоколов см. в Приложении А).

Пример конфигурации списка приложений:

firewall {
  ipv4 {
    netfilter {
      application DNS {
        protocol dns
      }
      application Ftp {
        protocol ftp
      }
      application Social {
       protocol instagram
       protocol twitter
       protocol whatsapp
       protocol youtube
      }
      application Torrent {
        protocol bittorrent
      }
      application Vk {
        protocol vk
      }
      application YandexMusic {
        protocol yandexmusic
      }
    }
  }
}

Настройка применения списка приложений осуществляется на следующем уровне конфигурации:

[edit firewall ipv4 netfilter filter <filter-name> rule <rule-name> ndpi]

где

  • <filter-name> – строка длиной от 1 до 128 символов;

  • <rule-name> – строка длиной от 1 до 128 символов.

На данном уровне конфигурации доступны следующие настройки:

  • proto <application-name> – применить список приложений, где <application-name> – имя существующего списка приложений;

  • in-progress <application-name> – применить список не полностью обнаруженных приложений, где <application-name> – имя существующего списка приложений.

Пример конфигурации механизма DPI в фильтре netfilter:

firewall {
  ipv4 {
    netfilter {
      filter web-filter {
        rule 1 {
          ndpi proto A
          drop
        }
        rule 2 {
          ndpi in-progress A
          log {
            prefix "Forbidden app?"
            snaplen 1500
          }
        }
      }
    }
  }
}

7.4. Модули conntrack (helper)

Некоторых протоколы (например, FTP) используют несколько соединений в рамках одной сессии. Для корректной работы firewall на таких протоколах (например, чтобы соединение, устанавливаемое ответной стороной, не заблокировалось зонным firewall и правильно обработалось NAT) используются специальные модули conntrack (так называемые – helper).

Настройки helper осуществляются на следующем уровне конфигурации:

[edit firewall ipv4|ipv6 helper <helper-name>]

где

  • ipv4|ipv6 – уровень конфигурации IPv4/IPv6;

  • <helper-name> – строка длиной от 1 до 128 символов.

На данном уровне конфигурации доступны следующие настройки:

  • description <description> – указать описание helper, где <description> – строка;

  • log – перейти на уровень конфигурации журналирования пакетов;

  • protocol tcp|udp – указать протокол;

  • to address <address>|file-list <file-list-name>|network <network-name> – (критерий отбора) указать адрес(а) назначения, по которому(ым) осуществляется отбор трафика, где <address> – IPv4-адрес в формате A.B.C.D[/mask] или IPv6-адрес в формате A:B:..:H[/mask] в зависимости от уровня конфигурации, <network-name> – имя существующего списка сетей, <file-list-name> – имя существующего файла списка сетей (см. подпункт 7.1.2.1 Списки сетей и сервисы);

  • to-port <port-number> – (критерий отбора) указать входящий порт, по которому осуществляется отбор трафика, где <port-number> – строка в формате n[-m] (n, m – числа от 1 до 65535);

  • type – указать тип helper (H.245, Q.931, RAS, amanda, ftp, irc, netbios-ns, pptp, sane, sip, snmp, tftp).

Пример конфигурации helper:

firewall {
  ipv4 {
    helper hlp-ftp {
      protocol tcp
      to-port 21
      type ftp
      to address 192.168.130.4
    }
  }
}

7.5. Bridge firewall

Для фильтрации трафика, проходящего через bridge-интерфейсы, используется bridge firewall. Трафик, проходящий в рамках одного интерфейса типа bridge, не попадает в другие firewall’ы, поэтому bridge firewall – единственный способ фильтрации такого трафика.

Настройка bridge firewall осуществляется на следующем уровне конфигурации:

[edit firewall bridge]

На данном уровне конфигурации доступны следующие настройки:

  • filter <filter-name> – перейти на уровень конфигурации фильтра bridge firewall, где <filter-name> – имя фильтра (см. ниже);

  • forward – (цепочка применения фильтра) применить фильтр к кадрам, передаваемым от одного интерфейса к другому;

  • local-in – (цепочка применения фильтра) применить фильтр к кадрам, передаваемым на ПАК “Фортикс”;

  • local-out – (цепочка применения фильтра) применить фильтр к кадрам, передаваемым с ПАК “Фортикс”;

  • prerouting – (цепочка применения фильтра) применить фильтр к входящим кадрам до их маршрутизации;

  • postrouting – (цепочка применения фильтра) применить фильтр к выходящим кадрам.

Настройка фильтров bridge firewall осуществляется на следующем уровне конфигурации:

[edit firewall bridge filter <filter-name>]

где <filter-name> – строка длиной от 1 до 128 символов.

На данном уровне конфигурации доступны следующие настройки:

  • description <description> – указать описание фильтра, где <description> – строка;

  • limit <limit-name> – перейти на уровень конфигурации ограничений на число срабатываний правила, где <limit-name> – имя существующего ограничения (см. подпункт 7.3.1.2 Ограничения на количество срабатываний);

  • rule <rule-name> – указать правило, соответствующее данному фильтру, где <rule-name> – имя правила (см. ниже).

Настройка правил фильтров bridge firewall осуществляется на следующем уровне конфигурации:

[edit firewall bridge filter <filter-name> rule <rule-name>]

где

  • <filter-name> – строка длиной от 1 до 128 символов;

  • <rule-name> – строка длиной от 1 до 128 символов.

На данном уровне конфигурации доступны следующие настройки:

  • description <description> – указать описание правила, где <description> – строка;

  • from-interface <interface-name> – (критерий отбора) указать интерфейс источника, по которому осуществляется отбор трафика, где <interface-name> – имя существующего интерфейса;

  • to-interface <interface-name> – (критерий отбора) указать интерфейс назначения, по которому осуществляется отбор трафика, где <interface-name> – имя существующего интерфейса;

  • timestart <timestart-value> – (критерий отбора) указать начальное время выполнения правила, где <timestart-value> – строка в формате HH:MM[:SS];

  • timestop <timestop-value> – (критерий отбора) указать конечное время выполнения правила, где <timestop-value> – строка в формате HH:MM[:SS];

  • datestart <datestart-value> – (критерий отбора) указать начальную дату (и время) выполнения правила, где <datestart-value> – строка в формате YYYY-MM-DD[THH:MM[:SS]], по умолчанию – 00:00:00;

  • datestop <datestop-value> – (критерий отбора) указать конечную дату (и время) выполнения правила, где <datestop-value> – строка в формате YYYY-MM-DD[THH:MM[:SS]], по умолчанию – 00:00:00;

  • content <layer> offset <offset> – перейти на уровень конфигурации критерия отбора по содержимому (см. подпункт 7.3.1.3 Фильтрация по содержимому);

  • encrypted true|false – указать, для каких пакетов (зашифрованных/незашифрованных) осуществляется отбор, где true – зашифрованные, false – незашифрованные;

  • log – перейти на уровень конфигурации журналирования кадров;

  • counter <counter-name> – указать счётчик срабатывания правила, где <counter-name> – имя счётчика (см. пункт 7.7 Счётчики);

  • trace – применить трассировку кадров.

  • from-mac <mac> – (критерий отбора) указать адрес источника, по которому осуществляется отбор трафика, где <mac> – MAC-адрес в формате xx:xx:xx:xx:xx:xx;

  • to-mac <mac> – (критерий отбора) указать адрес назначения, по которому осуществляется отбор трафика, где <mac> – MAC-адрес в формате xx:xx:xx:xx:xx:xx;

  • vlan – (критерий отбора) использовать виртуальную локальную сеть (VLAN) и перейти на уровень её конфигурации:

    • id <id> – (критерий отбора) указать идентификатор виртуальной локальной сети (VLAN Identifier), где <id> – число от 0 до 4095;

    • pcp [value <value-pcp>] [mask <mask-pcp>] – (критерий отбора) указать приоритет трафика в VLAN (Priority Code Point), где <value-pcp> – hex-значение в формате 0x00..0x3f, <mask-pcp> – hex-значение в формате 0x00..0x3f;

    • dei – (критерий отбора) указать индикатор допустимости удаления (Drop Eligible Indicator);

  • ipv4|ipv6|arp – (критерий отбора) указать протокол и перейти на уровень его конфигурации (см. ниже).

На уровне конфигурации протоколов IPv4 и IPv6 доступны следующие критерии отбора:

  • from address <address>|file-list <file-list-name>|network <network-name> – (критерий отбора) указать адрес(а) источника, по которому(ым) осуществляется отбор трафика, где <address> – IPv4-адрес в формате A.B.C.D[/mask] или IPv6-адрес в формате A:B:..:H[/mask] в зависимости от уровня конфигурации, <network-name> – имя существующего списка сетей, <file-list-name> – имя существующего файла списка сетей (см. подпункт 7.1.2.1 Списки сетей и сервисы);

  • to address <address>|file-list <file-list-name>|network <network-name> – (критерий отбора) указать адрес(а) назначения, по которому(ым) осуществляется отбор трафика, где <address> – IPv4-адрес в формате A.B.C.D[/mask] или IPv6-адрес в формате A:B:..:H[/mask] в зависимости от уровня конфигурации, <network-name> – имя существующего списка сетей, <file-list-name> – имя существующего файла списка сетей (см. подпункт 7.1.2.1 Списки сетей и сервисы);

  • from-port <port> – (критерий отбора) указать исходящий порт, по которому осуществляется отбор трафика, где <port> – строка в формате tcp|udp n[-m] (n, m – число от 1 до 65535) или имя существующего списка портов (см. подпункт 7.1.2.1 Списки сетей и сервисы);

  • to-port <port> – (критерий отбора) указать входящий порт, по которому осуществляется отбор трафика, где <port> – строка в формате tcp|udp n[-m] (n, m – число от 1 до 65535) или имя существующего списка портов (см. подпункт 7.1.2.1 Списки сетей и сервисы);

  • protonum <protocol-number> – (критерий отбора) указать номер протокола, где <protocol-number> – число от 0 до 255;

  • tcp|udp|icmp (для ipv4) – (критерий отбора) указать протокол и перейти на уровень конфигурации протокола (не может быть задано вместе с protonum);

  • tcp|udp|icmpv6 (для ipv6) – (критерий отбора) указать протокол и перейти на уровень конфигурации протокола (не может быть задано вместе с protonum).

На уровне конфигурации протокола ARP доступны следующие критерии отбора:

  • arp-operation inreply|inrequest|nak|reply|request|rreply|rrequest – указать код операции ARP;

  • from-mac <mac> – указать mac-адрес источника в ARP-пакете, где <mac> – MAC-адрес в формате xx:xx:xx:xx:xx:xx;

  • to-mac <mac> – указать mac-адрес назначения в ARP-пакете, где <mac> – MAC-адрес в формате xx:xx:xx:xx:xx:xx;

  • from <address> – указать IPv4-адрес источника в ARP-пакете, где <address> – IPv4-адрес в формате A.B.C.D[/mask];

  • to <address> – указать IPv4-адрес назначения в ARP-пакете, где <address> – IPv4-адрес в формате A.B.C.D[/mask].

Действия в bridge firewall указываются непосредственно в правиле, как и в основном МЭ. Доступны следующие действия:

  • accept — разрешить соединение и прекратить дальнейшую его проверку зонным firewall;

  • drop — запретить соединение без отправки ICMP-уведомления;

  • reject — запретить соединение с отправкой источнику ICMP-уведомление (ICMPv6-уведомление для IPv6) port-unreachable;

  • return — прекратить обработку кадра в данном фильтре (в данном случае соединение обрабатывается default-action политики (см. подпункт 7.1.3 Политики) или drop-policy).

  • goto <filter-name> – прекратить обработку кадра в текущем фильтре и перейти к указанному, где <filter-name> – имя существующего фильтра;

  • call <filter-name> – обработать кадр в другом фильтре (если в другом фильтре для кадра не будет применимо действие, завершающее обработку кадра (т.е. accept, drop или reject), он продолжит прохождение текущего фильтра), где <filter-name> – имя существующего фильтра;

  • set-src-mac <mac-value> – изменить адрес источника кадра, где <mac-value> – MAC-адрес в формате xx:xx:xx:xx:xx:xx;

  • set-dst-mac <mac-value> – изменить адрес назначения кадра, где <mac-value> – MAC-адрес в формате xx:xx:xx:xx:xx:xx.

Последние два действия позволяют задать трансляцию MAC-адресов. В отличие от NAT данная трансляция выполняется не для некоторого соединения, а покадрово, в частности при замене адреса источника у ответного кадра не заменяется адрес назначения.

7.6. Схема работы firewall

Схема прохождения пакета через все компоненты firewall представлена на рис. 7.1.

Схема работы firewall

Рис. 7.1 Схема работы firewall

7.7. Счётчики

Для отслеживания количества срабатываний правила фильтра используются счётчики counter.

Предупреждение

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

Для создания счётчика применяется команда:

[edit firewall ipv4|ipv6 filter <filter-name> rule <rule-name>]
# set counter <counter-name>

где

  • ipv4|ipv6 – уровень конфигурации IPv4/IPv6;

  • <filter-name> – строка длиной от й ;

  • <rule-name> – строка длиной от 1 до 128 символов;

  • <counter-name> – строка длиной от 1 до 128 символов.

Пример конфигурации счётчиков:

firewall {
  ipv4 {
    filter blocklist-common {
      rule 1 {
        counter cnt-blocklist
      }
    }
    filter blocklist-lan {
      rule 1 {
        counter cnt-blocklist
      }
    }
    filter allow-admin {
      rule 1 {
        counter cnt-allow-admin
      }
    }
  }
}

Для просмотра значения счётчиков применяется команда:

> show firewall counter ipv4|ipv6 <counter-name>

где

  • ipv4|ipv6 – уровень конфигурации IPv4/IPv6;

  • <counter-name> – имя существующего счётчика.

Пример применения команды для просмотра значения счётчика:

> show firewall counter ipv4 cnt-blocklist

Для просмотра всех загруженных в ядро правил применяется команда:

> show firewall raw

Предупреждение

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

  2. Счётчики с одинаковыми именами, заданные в разных подсистемах (ipv4/ipv6/bridge), различны. Каждый счётчик относится только к одной подсистеме.

  3. После выполнения команды commit счётчики сбрасываются.

7.8. Журналирование пакетов

Запись пакетов в ПАК “Фортикс” осуществляется в журнал МЭ (см. ниже). Для журналирования пакетов в правиле (rule) фильтра firewall возможно применение настройки log.

Настройка журналирования пакетов осуществляется на следующем уровне конфигурации:

[edit firewall ... rule <rule-name> log]

где <rule-name> – строка длиной от 1 до 128 символов.

На данном уровне конфигурации доступны следующие настройки:

  • prefix <prefix-text> – указать описание, по которому идентифицируется журналируемое правило, где <prefix-text> – строка в двойных кавычках, допустимо указание одного слова без кавычек;

  • snaplen <snaplen-value> – указать длину записываемого фрагмента пакета, где <snaplen-value> – число байт от 0 до 65535, по умолчанию записывается весь пакет;

  • journal alert|info – указать уровень события для записи пакета в системный журнал, без указания данной настройки в системный журнал пакеты не записываются.

Пример конфигурации журналирования правила фильтра:

firewall {
  ipv4 {
    netfilter {
      filter in-filter {
        rule 3 {
          to address 192.168.130.4
          to-port service http
          log {
            prefix "http catched"
            snaplen 1500
          }
          call http-filter
        }
      }
    }
  }
}

Для просмотра журнала МЭ применяется команда:

> show firewall journal

Для изменения формата выводимой по данной команде информации используются следующие параметры:

Таблица 7.2 Параметры команды для просмотра журнала

Настройка

Описание

verbose

вывести журнал в режиме подробного отображения

since <date-time>

вывести пакеты, пришедшие после указанного времени

until <date-time>

вывести пакеты, пришедшие до указанного времени

count <record-count>

вывести первые <record-count> записей

tail <record-count>

вывести последние <record-count> записей

ascii|hex|hex-ascii

применить режим вывода содержимого пакета

follow

вывести пакеты в режиме реального времени

resolve

вывести IP-адреса, преобразованные при помощи DNS

alert

вывести только пакеты с флагом alert

write <file-path>

экспортировать пакеты в файл в формате tcpdump

archive <file-path>

вывести содержимое указанного файла журнала МЭ (см. ниже)

forward

вывести пакеты только из цепочки forward

local-in

вывести пакеты только из цепочки local-in

local-out

вывести пакеты только из цепочки local-out

postrouting

вывести пакеты только из цепочки postrouting

prerouting

вывести пакеты только из цепочки prerouting

in <interface-name>

вывести пакеты, пришедшие на указанный интерфейс

out <interface-name>

вывести пакеты, выходящие через указанный интерфейс

ipv4

вывести только IPv4-пакеты

ipv6

вывести только IPv6-пакеты

pcap <pcap-filter>

вывести только пакеты, отобранные по pcap-фильтру

Дата/время <date-time> в параметрах могут быть заданы в одном из следующих форматов:

  • YYYY-mm-dd;

  • HH:MM;

  • HH:MM:SS;

  • YYYY-mm-ddTHH:MM:SS;

  • YYYY-mm-ddTHH:MM:SS.

где

  • YYYY – год (четырёхзначное число);

  • mm – месяц (число от 1 до 12);

  • dd – день (число от 1 до 31);

  • HH – часы (от 0 до 23);

  • MM – минуты (от 0 до 59);

  • SS – секунды (от 0 до 59).

7.8.1. Настройки журналирования

Настройка журналирования МЭ осуществляется на следующем уровне конфигурации:

[edit firewall journal]

На данном уровне конфигурации доступны следующие настройки:

  • file-count <max-file-count> – указать максимальное число файлов журнала МЭ, где <max-file-count> – число от 1 до 65535;

  • file-size <max-file-size> – указать максимальный размер одного файла журнала МЭ, где <max-file-size> – число Мбит от 1 до 4294967295;

  • kernel-size <max-kernel-size> – указать максимальный размер буфера для передачи сообщений из ядра, где <max-kernel-size> – число Кбит от 128 до 4294967295.

Пример конфигурации журналирования:

firewall journal {
  file-size 20
  file-count 5
  kernel-size 2048
}

При превышении максимального размера одного файла журнала создаётся новый файл журнала. При превышении максимального числа файлов журнала удаляются наиболее старые файлы журнала. При переполнении буфера (как правило из-за ограничения скорости записи журнала на носитель) пакеты отбрасываются без записи в журнал.

Полное имя файла журнала МЭ, в который осуществляется текущая запись – /log/kernel.fwlog. При его переполнении создаётся файл /log/kernel.fwlog-YYYY-mm-ddTHH:MM:SS, в который помещаются записи файла /log/kernel.fwlog, файл /log/kernel.fwlog очищается.

7.9. Трассировка пакетов

Трассировка пакетов применяется для отладки прохождения пакетов через firewall в правилах фильтров firewall netfilter или firewall bridge.

Для использования трассировки пакетов применяется команда:

[edit firewall ... rule <rule-name>]
# set trace

где <rule-name> – строка длиной от 1 до 128 символов.

Пример конфигурации трассировки пакетов:

firewall ipv4 netfilter {
  filter trace rule 1 {
    icmp {
      icmp-type echo-reply
      icmp-type echo-request
    }
    trace
  }
  prerouting fragged filter trace
}

В данной конфигурации трассировка применяется ко всем входящим в ПАК “Фортикс” и проходящим через него ping-пробам, причём признак трассировки устанавливается в самом раннем месте из возможных.

Для просмотра трассировки пакетов применяется команда:

> show firewall trace

Примечание

Трассировка пакетов не сохраняется во внешнюю среду, её просмотр доступен только в конфигурации.