facebook

16.4 Создание табличных списков

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

Файл списка представляет собой обычный текстовый файл. Каждая строка имеет уникальный ключ и символ-разделитель – двоеточие. После разделителя можно добавить значение. Значения могут повторяться, но ключи должны быть уникальными.

Пример:

key1:value1

key2:value2

key3:value2

Для того, чтобы включить символ двоеточие как часть ключа, например, в MAC-адресах, необходимо экранировать полный ключ, используя кавычки.

Пример:

"a0:a0:a0:a0:a0:a0":

"b1:b1:b1:b1:b1:b1":

С помощью ключа можно определить наличие или отсутствие поля в заданном списке. Добавляя значение, можно использовать его в качестве критерия в правилах. Например, есть имена учетных записей (ключи), связанные с именем отдела (значением). Можно создать правило, которое срабатывает, когда пользователь не из финансового отдела входит в систему на финансовом сервере (таблица 17).

      

Таблица 17 – Параметры для создания табличного списка

Ключ
192.168.:
CIDR
192.168.0.0/16
Возможные совпадения
192.168.0.0 -192.168.255.255
Ключ
172.16.19:
CIDR
172.16.19.0/24
Возможные совпадения
172.16.19.0 - 172.16.19.255
Ключ
10.1.1.1:
CIDR
10.1.1.1/32
Возможные совпадения
10.1.1.1

Пример файла списка IP-адресов:

192.168.: Matches 192.168.0.0 - 192.168.255.255

172.16.19.: Matches 172.16.19.0 - 172.16.19.255

10.1.1.1: Matches 10.1.1.1

Пример использования табличных списков в правилах:

Block of code

<rule id="110700" level="10">

<if_group>json</if_group>

<list field="srcip" lookup="address_match_key">etc/lists/List-one</list>

<description>IP blacklisted in LIST ONE</description>

<group>list1,</group>

</rule>

<rule id="110701" level="10">

<if_group>json</if_group>

<list field="srcip" lookup="address_match_key">etc/lists/List-two</list>

<description>IP blacklisted in LIST TWO</description>

<group>list2,</group>

</rule>

<rule id="110710" level="10">

<if_sid>110700</if_sid>

<list field="srcip" lookup="address_match_key">etc/lists/List-two</list>

<description>IP blacklisted in LIST ONE and LIST TWO</description>

<group>list1,list2,</group>

</rule>

В этих правилах просматривают, есть ли IP-адрес в списке 1 или 2, или в обоих.

Атрибут «lookup» может иметь несколько значений.

Приведенный ниже пример представляет собой поиск ключа в табличные списки на полное соответствие:

Block of code

<list field="user" lookup="match_key">etc/lists/list-user</list>

Параметр «"match_key"» является параметром по умолчанию и может быть опущен:

Block of code

<list field="user">etc/lists/list-user</list>

Если поле представляет собой IP-адрес, то использовать «"address_match_key"»:

Block of code

<list field="srcip" lookup="address_match_key">etc/lists/list-IP</list>

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

Block of code

<list field="user" lookup="not_match_key">etc/lists/list-user</list>

Если поле представляет собой IP-адрес, то использовать «"not_address_match_key"»:

Block of code

<list field="srcip" lookup="not_address_match_key">etc/lists/list-IP</list>

Приведенный ниже пример представляет собой поиск ключа в табличные списки на полное соответствие и при положительном совпадении возвращаемое значение ключа будет обработано с использованием регулярного выражения в атрибуте «check_value»:

Block of code

<list field="user" lookup="match_key_value" check_value= "^block"> etc/lists/list-user</list>

Если поле представляет собой IP-адрес, то использовать «"address_match_key_value"»:

Block of code

<list field="srcip" lookup="address_match_key_value" check_value= "^reject"> etc/lists/list-IP</list>