Научная статья на тему 'Формальная модель анализа ошибок конфигурирования межсетевых экранов'

Формальная модель анализа ошибок конфигурирования межсетевых экранов Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
334
75
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
СТАТИЧЕСКИЙ АНАЛИЗ / МЕЖСЕТЕВОЙ ЭКРАН / ФОРМАЛЬНАЯ МОДЕЛЬ / ДИНАМИЧЕСКИЕ ПРАВИЛА / PYTHON

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Мьо Т. Т.

етевой экран или брандмауэр широко известное средство защиты сетей. Для того, чтобы обеспечить требуемую защиту, брандмауэр должен быть соответствующим образом настроен, или как говорят, конфигурирован. К сожалению, конфигурирование может быть сопряжено с ошибками, которые делают даже опытные администраторы, что приводит к снижению уровня защиты сети и проникновению в сеть нежелательных пакетов. Сеть может подвергаться различным угрозам и атакам. Один из механизмов, которые применяются для обеспечения безопасности сети межсетевой экран. Межсетевой экран это элемент сети, который контролирует прохождение пакетов через границы защищаемой сети, основываясь на политике безопасности. Политика безопасности представляет собой список правил. Пакетные фильтры работают в режиме без инспекции состояния: они исследуют пакеты как независимые объекты. Правила имеют вид: (условие, действие). Межсетевой экран анализирует входящий трафик, основываясь на IP-адресе отправителя и получателя, номере порта отправителя и получателя и используемом протоколе. Когда пакет удовлетворяет условиям правила, то выполняется указанное в правиле действие. Оно может быть: allow, deny.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Формальная модель анализа ошибок конфигурирования межсетевых экранов»

Наука к Образование

МГТУ им. Н.Э. Баумана

Сетевое научное издание

ISSN 1994-0408

Наука и Образование. МГТУ им. Н.Э. Баумана. Электрон. журн. 2015. № 06. С. 305- 328.

DOI: 10.7463/0615.0778576

Представлена в редакцию: Исправлена:

© МГТУ им. Н.Э. Баумана

УДК 004.413

Формальная модель анализа ошибок

конфигурирования межсетевых экранов

1 *

Мьо Т. Т.1,

28.05.2015 13.06.2015

myothanhtimiSgmaü.com

МГТУ им. Н.Э. Баумана, Москва, Россия

Сетевой экран или брандмауэр - широко известное средство защиты сетей. Для того, чтобы обеспечить требуемую защиту, брандмауэр должен быть соответствующим образом настроен, или как говорят, конфигурирован. К сожалению, конфигурирование может быть сопряжено с ошибками, которые делают даже опытные администраторы, что приводит к снижению уровня защиты сети и проникновению в сеть нежелательных пакетов. Сеть может подвергаться различным угрозам и атакам. Один из механизмов, которые применяются для обеспечения безопасности сети - межсетевой экран. Межсетевой экран - это элемент сети, который контролирует прохождение пакетов через границы защищаемой сети, основываясь на политике безопасности. Политика безопасности представляет собой список правил. Пакетные фильтры работают в режиме без инспекции состояния: они исследуют пакеты как независимые объекты. Правила имеют вид: (условие, действие). Межсетевой экран анализирует входящий трафик, основываясь на IP-адресе отправителя и получателя, номере порта отправителя и получателя и используемом протоколе. Когда пакет удовлетворяет условиям правила, то выполняется указанное в правиле действие. Оно может быть: allow, deny.

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

1. Введение

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

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

Межсетевой экран [1] - это элемент сети, который контролирует прохождение пакетов через границы защищаемой сети, основываясь на политике безопасности. Политика безопасности представляет собой список правил.

Пакетные фильтры работают в режиме без инспекции состояния: они исследуют пакеты как независимые объекты. Правила имеют вид: (условие, действие). Межсетевой экран анализирует входящий трафик, основываясь на IP-адресе отправителя и получателя, номере порта отправителя и получателя и используемом протоколе. Когда пакет удовлетворяет условиям правила, то выполняется указанное в правиле действие. Оно может быть: allow, deny.

2. Постановка задачи

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

2.1 Задачи работы

Задачами данной работы являются:

• Проведение обзора формальных моделей межсетевого экрана

• Построение формальной модели правил межсетевого экрана с инспекцией состояний

• Разработать алгоритм анализа конфигурации межсетевого экрана, а именно, разработать алгоритм обнаружения коллизий в конфигурации межсетевого экрана и вывода результатов в графическом виде

• Реализовать разработанные алгоритмы в виде программы

3. Обзор формальных моделей межсетевого экрана в работах

современных

В данном разделе приводится обзор формальных моделей межсетевых экранов, применяющихся для решения задач, близких к поставленной.

В статье [2] политика межсетевых экранов представляется в виде дерева (Policy Tree). Каждый узел дерева отвечает за конкретное поле в правиле, а каждая ветвь - это возможное значение данного поля. Формат правила межсетевого экрана представляет собой IP-адрес источника, IP-адрес назначения, порт источника, порт назначения. Ключевая идея при построении дерева политики - это внести правило в правильный путь. Когда поле правила вставляется в какой-либо узел, сначала проверяются уже существующие ветви, если поле правила совпало с какой-либо веткой, правило вносится в эту ветвь, иначе создается новая ветвь.

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

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

В работе [4] рассматривается геометрическая интерпретация. А. Статья предлагает представить каждое правило как набор интервалов [/¿,гг], где интервал - это поле в заголовке пакета. Рассматриваются только численные поля, например: 1Р-адрес источника, 1Р-адрес назначения, порты. Тогда можно дать геометрическую интерпретацию: пакет будет являться точкой в d-мерном пространстве (размерность пространства равняется числу рассматриваемых полей). Теперь каждое правило представляется в виде d-мерного куба. Всего у нас N кубов, где N - количество правил. В зависимости от поля «действие» кубы раскрашиваются в разные цвета. Например, все разрешающие правила будут иметь белый цвет, запрещающие - черный. Набор правил, в данной интерпретации, представляет собой набор кубов, которые могут пересекаться.

В статье представляется алгоритм визуализации политики безопасности, программа, которая отображает результат действия правил межсетевых экранов на все возможные пакеты. Для отображения результата в легко обозримой форме вводится понятие области эквивалентности. Большой куб разбивается на непересекающиеся области эквивалентности, внутри каждой из областей, результат работы межсетевого экрана на любой пакет, принадлежащий этой области, одинаковый. Таким образом, проблема расчёта действия межсетевого экрана для большого числа пакетов сводится к расчету действия на один пакет в каждой области эквивалентности. 6-мерное пространство (ГР-адрес источника, 1Р-адрес получателя, порт источника, порт назначения, протокол, ТСР-флаги) сводится к 4-х мерному пространству (1Р-адрес источника, ГР-адрес получателя, (порт источника, протокол), порт назначения). Следует отметить, что в данной работе не проводится выявления аномалий, которые могут возникать между правилами.

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

4. Исследование и построение решения задачи

4.1 Формальная модель

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

удовлетворяет ни одному из правил, то срабатывает правило по умолчанию (обычно, правило по умолчанию - отклонить все пакеты).

Обозначим через IPAddrSet - множество IP адресов, P o r tSe t- множество портов, ProtocolSet - множество протоколов.

Правило представляется в форме (Р, action), где Р - это условия (или будем также называть - предикатом), под которые должен подойти пакет, action - это действие (пропустить, отбросить, пропустить и занести в таблицу состояний), которое выполняется, когда пакет подошел под правило. Условие Р задается пятеркой

(Sr cA d drSe t , D s tA ddrSe t, Sr cP or tSe t, D s tP or tSe t, Pr otoco ls) ,

где

Sr cA d drSe t,D s tA d drSe t с / p a d drSe t; Sr cP o r tSe t,D s tP o r tSe t с p o r tSe t; P r otoco ls с Pr o tocolSe t. Поле Protocols отвечает за протокол, SrcAddrSet- множество адресов источников,

- множество адресов назначения, - множество портов источника,

- множество портов назначения. Пакет характеризуется пятеркой:

(SrcAddr, DstAddr, SrcPort, DstPort, Protocol), где SrcAddr E IPAddrSet, DstAddr E IPAddrSet, SrcPort E PortSet, DstPort E PortSet, Protocol E ProtocolSet.

Пакет

x = (SrcAddr, DstAddr, SrcPort, DstPort, Protocol) подходит под правило г = (Р, Action) ,х Е г,если SrcAddr Е SrcAddr Set, DstAddr G DstAddr Set, SrcPort G Sr cP or tSet, DstPort G DstPortSet, Protocol E Protocols

Обозначим, список правил, как: , где

- количество правил.

Будем считать, что динамическое правило идентифицируется с помощью ключевого слова - keep-state. Таким образом, правило r = (P,A cti o n) называется динамическим, если A cti on = a 11 o w + к e e p _sta te, остальные правила будем называть статическими. Динамическая запись

Z = < Sr cA d drz,D s tA d drz,Sr cP o r tz,D s tP o r tz,Pr otocolz > , соответствует пакету

x = (Sr cA d dr,D s tA d drr,Sr cP or t,D s tP or t,Pr otocol) ,

когда

( SrcAddrz = SrcAddr .DstAddrz = DstAddr, SrcPort z = SrcPort, DstPortz = DstPort, Protocolz = Protocol )

или

(SrcAddrz = DstAddr .DstAddrz = SrcAddr,SrcPort z = DstPort, DstPortz = SrcPort, Protocolz = Protocol

4.2 Противоречивости и неэффективность в правилах

Правила могут быть противоречивыми и неэффективными. В статье [7] определяются следующие типы коллизий: перекрытие, обобщение и корреляция, избыточность.

Будем рассматривать правило, как множество пакетов, которые подпадают под него. Тогда можно ввести следующие отношения между правилами:

Правила (rt=<Pi , actiощ>) и (rj=<Pj, actiоnj>) называются равными, если каждое

поле в правиле гг равно соответствующему полю в правиле 7у: (Р; = Pj ) ^^ (Sr cA d dr S e 11 = Sr cA d drSe tj ) Л ( D s t A d drSe 11 = D s t A d drSe tj) Л ( Sr cP о r 11 = SrcPortj) Л ( DstPortSetj = DstPortSetj)A (Protocolst = Protocolsj )

Правило является подмножеством правила , если все поля правила являются подмножествами соответствующих полей правила r (.

(Pj с P;)<=> (SrcAddrSett с SrcAddrSetj) Л (DstAddrSet^ с DstAddrSet/) Л (SrcPortj SrcPortj) Л ( DstPortSeti £ DstPortSetj) A (Protocols^ Protocolsj )

Правила пересекаются, (Pj П p 0) ^(Sr cA d drSe tt П Sr cA d drSe tj Ф 0 ) Л (D s t A d drSe tt П D s t A ddrSe tj Ф

0) Л (SrcPorti П SrcPortj Ф 0) Л (DstPortSeti n DstPortSetj Ф 0)Л (Protocolst П

Protocolsj Ф 0)

Правила (ri=<Pi, actiоп>) и (r;=<Py, a ctiony>) не пересекаются, (РуП Pt = 0.) Sr cA d drSe tt П Sr c A d drSe tj = 0.) V (D s t A d drSe tt П D s t A d drSe tj = 0.) V (SrcPorti n SrcPortj = 0.) V (DstPortSetj n DstPortSetj = 0.) V (Protocolst П Protocolsj = 0.)

4.2.1 Перекрытие

Правило перекрывается предшествующим правилом, если это правило является подмножеством предшествующего правила и два этих правила имеют разные действия. Определение

Правило (ri=<Pi, action^) t R перекрывает правило (Гу=<Ру, action.j>) t R

(i < j) Л (Pj с p.) Д (actiorii Ф actiorij), где i и _/' - порядковые номера правил в списке правил R.

Перекрываемое правило r у никогда не выполнится, т.к. все пакеты, которые подходят под правило Гр были уже обработаны фаерволом в соответствии с предшествующим правилом Tj.

4.2.2 Обобщение

Правило обобщает предшествующее правило, если оно является надмножеством предшествующего правила и два правила имеют разные действия:

Определение

Правило (Г(=<Р(, action¿>) Е R обобщает правило (■r<=<Pp action>) Е R (i > j) Л (Ру с р. ) Д ( а с ti о п i а с ti о пу).

4.2.3 Корреляция

Два правила т и j коррелируют, если их пересечение не пусто, но они не связаны отношением подмножества или надмножества, действия разные. Пакеты, попадающие в пересечение, попадают под действие предшествующего правила.

Определение

Правило (ri=<Pb action¿>) £ Rh правило (r-=<Pp action^) Ь R коррелируют (Pj П Pt Ф 0) Л (Pj £ Рг)Л(Р; £ Pj) A(actiont Ф actiorij).

4.2.4 Избыточность

Правило избыточно, если удаление этого правила никак не повлияет на работу фаервола.Правило (гг=<Рг, action>) t R является избыточным по отношению к правилу (rj=<Pj, actioni>) fc R когда хотя бы одно из условий выполняется:

• (Pj с рд Где (t > ])Л(асЫощ = actionj)

• (Pj с р.у где (i < ])А{асиопь = action}) Y ^ X

4.3 Определение отношений между правилами

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

4.3.1 Статический анализ

С помощью диаграммы (за основу которой была взята диаграмма из статьи [9]) продемонстрируем алгоритм статического анализа списка правил:

Каждое поле правила Рг сравнивается с соответствующим полем правила Ру, начиная с протокола, затем Ш-адрес источника, порт источника, Ш-адрес назначения, порт назначения, интерфейс, опции. Отношение между двумя правилами определяется в зависимости от результатов сравнения каждого поля с каждым: если каждое поле правила является равным или надмножеством соответствующего поля правила ,а также действия одинаковые, тогда избыточно по отношению к , если действия разные, то перекрывает Ру. Если некоторые поля правила Ру являются подмножествами полей правила , а некоторые надмножествами, и действия разные, тогда правила и коррелируют. Правила также будут коррелировать, если пересечение соответствующих полей не пусто и действия разные (пересечение полей проверяется только для портов и адресов). Если каждое поле Ру правила эквивалентно или является надмножеством соответствующего поля правила, действия одинаковые, тогда отношение между

правилами - избыточность, если действия разные, то это обобщение. Иначе, считается, что правила между собой не противоречат.

4.3.2 Анализ динамических правил

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

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

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

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Пусть X' -это динамическое правило,

X' = (Рх<, АсИопх<), где Рх/ = (Рг оЬосо1х, ,Бг сА ййгх/ ,Бз:А ййгх/ ,Бг сР ог Ьх, ,Бб:Р о г txf), А С:/ опх, = а11ом/ + ке ерtаtе,

Рассмотрим предикат X = (Рг о :осо1бх ,Бг сА й йгх , Б б :А й йгх ,Бг сР о г ^ ,Б б :Р ог :х),

где

Б б : Р о г : х ,,Б б : Р о г : х=Бг сР о г : х ,, этот предикат описывает весь возможный обратный трафик, который может проходить по динамическим записям в таблице состояний, порожденным правилом X; каждый пакет обратного трафика

ц = (SrcЛddrq,DstЛddrq,SrcPortq,DstPortq,ProtocoZ(г) будет удовлетворять условию:

БгсАййГц Е БгсАййгх,0з1АййгС1 Е 051Аййгх,5гсРог1С1 £ БгсРог1х, Оз1Рог1С1 Е

Б 5:Р о г :х, Рг о: ос о I Е Рг о:осо1бх.

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

Рассмотрим возможные случаи:

Actiotiy = allow Actiony Ф allow

XcPy Избыточность 1. Allow from 192.168.1.0/30 to 168.240.2.0/30 keep-state 2. Allow from 168.240.2.0/24 to 192.168.1.0/24 Любой пакет, пропускаемый динамической записью, будет пропускаться и 2 правилом, а значит динамические записи избыточны. Пусть, пришел пакет с 192.168.1.1 на 168.240.2.1, правило 1 его пропустит, в таблицу занесется запись. Однако ответный трафик прошел бы и по 2 правилу. Значит, запись в таблицу состояний избыточна, если удалить ее, то работа фаервола не изменится: 1. Allow from 192.168.1.0/30 to 168.240.2.0/30 2. Allow from 168.240.2.0/24 to 192.168.1.0/24 Обобщение Allow from 192.168.1.0/30 to any keep-state Deny from any to 192.168.1.0/24 Аналогично

PY П X * 0 Возможна избыточность 1. Allow from 192.168.1.0/24 to 168.240.2.0/24 keep-state 2. Allow from 168.240.2.0/30 to 192.168.1.0/30 Некоторые записи будут избыточны, некоторые нет. Пусть, пришел пакет с 192.168.1.10 на 168.240.2.10, создастся динамическая запись, она избыточна не будет, т.к. 2-ое правило не покрывает данную пару адресов. Однако для пары адресов 192.168.1.1,168.240.2.1, динамическая запись будет избыточна. Возможно обобщение Allow from 192.168.1.0/24 to any keep-state Deny from any to 192.168.1.0/30 Аналогично

Приведем псевдокод разработанного алгоритма: Для каждого динамического правила X': Для каждого правила Y, номер которого отличен от номера X': Пусть X = Reverse(Px) Если X — PY:

Если А с t i о nY == allow:

Обнаружена избыточность

Иначе:

Обнаружено обобщение Иначе если P Y П X Ф 0 :

Если == allow:

Обнаружена возможная избыточность

Иначе:

Обнаружено возможное обобщение Функция Reverse(Px)- меняет местами адрес источника с адресом назначения, порт источника с портом назначения.

5. Синтаксис IPFW

В качестве практического приложения рассмотрим фаервол IPFW. IPFIREWALL (IPFW) - это фаервол, поддерживаемый FreeBSD [2]. Данный фаервол является пакетным фильтром с инспекцией состояний. Решение пропустить или отбросить пакет основывается на следующей, связанной с ним информации:

• Направление (входящий или исходящий)

• IP-адрес источника/получателя

• Протокол (IP, TCP, UDP, ICMP и т.д.)

• Порты источника и получателя

• Типы ICMP-пакетов

• Флаги TCP

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

Диапазон номеров правил от 1 до 65535. Ipfw всегда содержит правило по умолчанию (default rule, номер 65535), в зависимости от конфигурации, оно или разрешает все, или запрещает все, это правило не может быть изменено.

Каждому правилу соответствует несколько счетчиков - подсчет пакетов, проходящие по этому правилу, и регистрация времени последнего применения этого правила.

Основные действия, которые применяются к пакету:

• Allow - пропустить пакет

• Deny - сбросить пакет

• Check-state

Check-state используется, чтобы идентифицировать место в списке правил, когда пакет должен быть проверен по динамической таблице, обычно check-state правило идет первым.

Если правило имеет опцию keep-state, то когда пакет подойдет под это правило, фаервол создаст динамическую запись, поведение которого по умолчанию - проверка двунаправленного трафика.

Опишем формально синтаксис IPFW:

Правило ::= <Номер правила> <действие> <протокол> from [not ]<адрес исходный>[<рог1>][ [not ]<порт>] to ^^<адрес получателя>[<рой>][ [not ]<порт>][ <интерфейс>][ <опции>][ keep-state]

<Номер правила>:: целое число от 1 до 65535 <действие>:: <allow ]\deny\check-state> <протокол>:: <tcp|udp|icmp|число от 0 до 133|all> <множество адресов>:: <адрес>{,<адрес>}|any|me <адрес>:: <числовой адрес>[/<маска>]

<числовой адрес> :: ххх.ххх.ххх.ххх (т.е. 4 трехзначных десятичных целых числа, <= 255, разделенных точками)

<адрес исходный> :: <множество адресов> <адрес получателя> :: <множество адресов> <маска> :: (число от 0 до 32) <порт>:: <p>[-<p>] {,<p>[-<p>] } <p>:: целое число от 0 до 65535 <интерфейс>:: (in^ut) via <interface_name>

<опции>:: tcpflags <tcp_flag>{,<tcp_flag>} | established | setup | icmptypes <ic mptyp e>{,<icmptype>}

<tcp_flag>:: [!]fin| syn | rst | psh | ack | urg | seq) <icmptype>:: 0..18

5.1 Описание практической части

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

Одной из проблем является большое число измерений. Как отмечалось выше, в правиле указываются следующие параметры: IP-адрес источника, IP-адрес назначения, порт источника, порт назначения, протокол.

Таким образом, число измерений равняется пяти:

• IP-адрес источника

• IP-адрес назначения

• Порт источника

• Порт назначения

• Протокол

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

Поскольку протокол кодируется цветом, у нас осталось 4 измерения: IP-адрес источника, IP-адрес назначения, порт источника, порт назначения.

Будем отображать в следующем виде: сначала выведем результаты применения правил на пакеты для осей IP-адрес источника и IP-адрес назначения (назовем, график_1). В таком виде, каждое правило представляет собой прямоугольник какого-либо определенного цвета. В отдельном окне, по нажатию на любую область на графике_1, будем выводить график_2, в координатах (порт источника, порт назначения).

Противоречия между правилами будут заметны на рисунке: прямоугольники будут частично налагаться.

Алгоритм работы программы:

• Считать конфигурационный файл

• Разобрать строки в файле, если есть ошибки при написании правил, вывести их

• Отобразить результат действия фаервола на пакеты в соответствии с данным набором правилом

• Провести статический анализ правил и найти статические противоречия

• Провести динамический анализ правил и найти противоречия

• Отобразить найденные коллизии в графическом виде

• Вывести отчет о найденных противоречиях

Сначала, покажем, как действует программа, когда у нас имеется единственное правило:

Пусть правило имеет вид:

• 1 allow tcp from 192.0.0.0/6 to 128.0.0.0/5

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

Рисунок 1

Мы видим, что область IP-адресов, задаваемая в правиле, представляет собой прямоугольник от 192.0.0.0 до 195.255.255.255 по оси IP-адресов источника, от 128.0.0.0 до 135.255.255.255 по оси IP-адресов назначения. Прямоугольник закрашен в зеленый цвет, где зеленый цвет обозначает, что фаервол пропустит только TCP пакеты. Рассмотрим работу программы для двух правил:

• 2 allow all from 64.0.0.0/3 to any

• 3 deny all from any to 64.0.0.0/3

Рисунок 2

Мы видим, что теперь выводится два прямоугольника, которые соответствуют двум правилам.

Заметим, что прямоугольники пересекаются, это означает, что эти правила противоречивы. В дополнительном окне, выводится информация о найденном противоречии. Щелкнув по строке с найденным противоречием, администратор может получить информацию о том, какие именно области адресов, указанных в правилах, вызывают коллизию:

Рисунок 3

После этого, администратор может устранить противоречие, изменив список правил:

• 2 allow all from 64.0.0.0/3 to any

• 3 deny all from not 64.0.0.0/3 to 64.0.0.0/3

Рисунок 4

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

Выше были рассмотрены только статические правила.

Теперь рассмотрим пример того, как программа визуализирует динамическое правило, т.е. правило, содержащее ключевое слово keep-state.

• 4 allow all from 64.0.0.0/3 to not 64.0.0.0/3 keep-state

a^5

J3*

<s> О

-- " v" v v" v^ л'уу« v v ywyv -.•■v-a^v vvvvv " v" v v" v^ ■ ■■■ ■■■ ■■■ v y'v' oiwsf4» ......v

oV

фу

I пропускаются все пакеты

V пропускаются только TCP пакеты

V пропускаются только UDP пакеты

■ отбрасываются все пакеты

■ отбрасываются TCP пакеты I отбрасываются! UDP пакеты Г~ динамическое правило

Г~ динамическое правилотолькодляТСР пакетов U динамическое правилотолькодля UDP пакетов всё остальное

х= у=

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Рисунок 5

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

• 4 allow all from 64.0.0.0/3 to not 64.0.0.0/3 keep-state

• 5 allow all from not 64.0.0.0/3 to 80.0.0.0/5

Рисунок 6

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

• 25 deny all from 64.0.0.0/4 to 64.0.0.0/4

• 26 allow all from 64.0.0.0/3 to not 64.0.0.0/3 keep-state

• 27 allow all from 64.0.0.0/3 to 64.0.0.0/3

• 35 allow all from 240.0.0.0/4 to 192.0.0.0/4 keep-state

• 36 deny all from 64.0.0.0/3 to 240.0.0.0/4

• 213 deny tcp from 0.0.0.0/4 to 0.0.0.0/4

• 214 deny all from any to 80.0.0.0/5

• 220 deny all from any to any

• 222 allow tcp from 128.0.0.0/3 to 128.0.0.0/3

Рисунок 7

При достаточно большом количестве перекрывающихся правил, бывает трудно увидеть отношения между ними.

Для решения этой проблемы были реализованы дополнительные функции.

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

J? 0

J* ^ ^ -P J? J> . а & « о,? ФЖ о? л*» - ^ À- „о - У3 /erse

-

.4

...................

1

V Оу о0 ■р Q О JP WF & J? J? .-S? V 4 J> 4 a J? ^ ^ -i? IPDst

И пропускаются все пакеты

V пропускаются только TCP пакеты

■ пропускаются только UDP пакеты

И отбрасываются все пакеты

И отбрасываются TCP пакеты

■ отбрасываются UDP пакеты

Р динамическое правило

Г~ динамическое правило только для TCP пакетов

Г~ динамическое правило только для UDP пакетов

Г" все остальное

правило#27 обобщает #25 |п ра ви л о #36 п ерекры ва ется #26

правило#214 коррелирует с#27 |

ft О О * й ш а

правил о #25 избыточно по отношению к #220

правило#220 обобщает #26

правило#220 обобщает #27

правило#220 обобщает #35

правило #36 избыточно по отношению к #220

правило #213 избыточно по отношению к #220

правило #214 избыточно по отношению к #220

правило #222 перекрывается #220

возможно обобщение между #214 и обратным тра<|:

обобщение между #220 и обратным трафиком #26

обобщение между #220 и обратным трафиком #35

Рисунок 8

Также имеется возможность приближать интересующие нас области:

& ьф- if* J> a <р in V 0_

У

4> 4>-^ 4>У ФУ IPDst

I I п pony ска ются все пакеты V пропускаются только TCP пакеты Н пропускаются только UDP пакеты ■ отбрасываются все пакеты I отбрасываются TCP пакеты В отбрасываются UDP пакеты Г~ динамическое правило

I- динамическое правил о только для TCP пакетов Г" динамическое правило только для UDP пакетов Р все остальное

In pa вил о #27 обобщает #25 правило#36 перекрывается #26

правило #214 коорелиоует с #27

ftlOlOl*

правил о #25 избыточно по отношению к #220 правил о #220 обобщает #26 правил о #220 обобщает #27 правил о #220 обобщает #35 правил о #36 избыточно по отношению к #220 правил о #213 избыточно по отношению к #220 правил о #214 избыточно по отношению к #220 правил о #222 перекрывается #220 возможно обобщение меэду #214 и обратным трас} обобщение меэкду#220 и обратным трафиком #26 обобщение между #220 и обратным трафиком #35

Рисунок 9

При необходимости посмотреть на результат действия отдельного правила, достаточно выбрать его из списка правил, при этом данное правило будет выделено более ярким цветом:

Рисунок 10

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

1 allow tcp from 192.0.0.0/4 to 128.0.0.0/5

2 allow tcp from 169.0.0.0/3 port 5000-6000 to not 192.0.0.0/6 port 4000-6000 keep-state

4 allow udp from 172.0.0.0/3 port 1000-4000 to 64.0.0.0/3 port 4500-5000

5 allow udp from not 64.0.0.0/3 port 6000-9000 to 80.0.0.0/5 port 2000-5000 12 allow tcp from 240.0.0.0/3 to 128.0.0.0/3 22 allow tcp from 128.0.0.0/3 to 128.0.0.0/3

26 allow all from 64.0.0.0/3 port 2000-3000 to not 64.0.0.0/3 port 3000-5000 keep-state

29 allow tcp from 64.0.0.0/3 port 2400-24575 to 64.0.0.0/3 port 16384-24575

30 deny tcp from any port 1000-10000 to any port 1000-6000

Рисунок 11

График, в координатах (порт источника, порт назначения) можно выводить с учетом протоколов, которые указаны в правилах: • правила, которые используют udp:

Рисунок 12

правила, которые используют tcp:

Рисунок 13

Алгоритм был реализован в виде программы на языке Python. В работе использованы следующие библиотеки:

• Matplotlib - визуализация данных

• thinker - графический интерфейс Количественные характеристики:

• объем кода - около 1000 строк Требования к среде выполнения:

• OC - Windows, Linux

• Интерпретатор- python 2.7

6. Заключение

В рамках данной работы были решены следующие задачи:

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

• разработан алгоритм для обнаружения конфликтов между правилами, как статических, так и динамических.

Список литературы

1. Cheswick W., Bellovin S., Rubin A. Firewalls and Internet Security: Repelling the Wily Hacker. 2nd ed. Addison Wesley Professional, 2003. 464 p.

2. FreeBSD Handbook. Available at: http://www.freebsd.org/doc/handbook/ , accessed 01.05.2015.

3. Котенко И.В., Саенко И.Б., Полубелова О.В., Чечулин A.A. Технологии управления информацией и событиями безопасности для защиты компьютерных сетей // Проблемы информационной безопасности. Компьютерные системы. 2012. № 2. С. 5768.

4. ГОСТ Р 50922-2006. Защита информации. Основные термины и определения. М.: Стандартинформ, 2008. 8 с.

5. Полубелова О.В., Котенко И.В. Верификация правил фильтрации с временными характеристиками методом "проверки на модели" // Труды СПИИРАН. 2012. Вып. 3 (22). С.113-138.

6. Al-Shaer E., Hamed H., Boutaba R., Hasan M. Conflict classification and analysis of distributed firewall policies // IEEE Journal on Selected Areas in Communications. 2005. Vol. 23, no. 10. P. 2069-2084. DOI: 10.1109/JSAC.2005.854119

7. Al-Shaer E., Marrero W., El-Atawy A., Elbadawi K. Network Configuration in A Box: Towards End-to-End Verification of Network Reachability and Security // 17th IEEE International Conference on Network Protocols (ICNP). IEEE Publ., 2009. P. 123-132. DOI: 10.1109/ICNP.2009.5339690

8. Bartal Y., Mayer A.J., Nissim K., Wool A. Firmato: A novel firewall managment toolkit // ACM Transactions on Computer Systems. 2004. Vol. 22, no. 4. C. 381-420. DOI: 10.1145/1035582.1035583

9. Gouda M.G., Liu A.X. A model of stateful firewalls and its properties // Proceedings of the IEEE International Conference on Dependable Systems and Networks (DSN'05), Japan, June 2005. IEEE Publ., 2005. P. 128-137. DOI: 10.1109/DSN.2005.9

10. IETF Policy Framework (policy) Working Group // The Internet Engineering Task Force (IETF®): website. Available at: http://www.ietf.org/html.charters/policy-charter.html, accessed 01.05.2015.

11. Liu A.X., Gouda M.G, Ma H.H., HH. Ngu A. Firewall Queries // Principles of Distributed Systems. OPODIS 2004 / ed. by T. Higashino. Springer Berlin Heidelberg, 2005. P. 197212. (Ser. Lecture Notes in Computer Science; vol. 3544.). DOI: 10.1007/11516798 15

Science and Education of the Bauman MSTU, 2015, no. 06, pp. 305- 328.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

DOI: 10.7463/0615.0778576

Received: Revised:

28.05.2015 13.06.2015

Science^Education

of the Bauman MSTU

ISSN 1994-0408 <c> Bauman Moscow State Technical Unversity

A Formal Model to Analyse the Firewall

Configuration Errors

i *

T.T. Myo1

my othanhtmi iSgmaiI.com

1Bauman Moscow State Technical University, Moscow, Russia

Keywords: firewall, formal model, analysis, protocol, packet filter, configuration, politics of firewall, shadowing, correlation, redundancy, statical analysis, dynamical analysis, syntax IPFW, protocol, algorithm, python, TCP, UDP, ICMP

The firewall is widely known as a brandmauer (security-edge gateway). To provide the demanded security, the firewall has to be appropriately adjusted, i.e. be configured. Unfortunately, when configuring, even the skilled administrators may make mistakes, which result in decreasing level of a network security and network infiltration undesirable packages.

The network can be exposed to various threats and attacks. One of the mechanisms used to ensure network security is the firewall.

The firewall is a network component, which, using a security policy, controls packages passing through the borders of a secured network. The security policy represents the set of rules.

Package filters work in the mode without inspection of a state: they investigate packages as the independent objects. Rules take the following form: (condition, action). The firewall analyses the entering traffic, based on the IP address of the sender and recipient, the port number of the sender and recipient, and the used protocol. When the package meets rule conditions, the action specified in the rule is carried out. It can be: allow, deny.

The aim of this article is to develop tools to analyse a firewall configuration with inspection of states. The input data are the file with the set of rules. It is required to submit the analysis of a security policy in an informative graphic form as well as to reveal discrepancy available in rules. The article presents a security policy visualization algorithm and a program, which shows how the firewall rules act on all possible packages. To represent a result in an intelligible form a concept of the equivalence region is introduced.

Our task is the program to display results of rules action on the packages in a convenient graphic form as well as to reveal contradictions between the rules. One of problems is the large number of measurements. As it was noted above, the following parameters are specified in the rule: Source IP address, appointment IP address, port of a source, port of destination, protocol.

References

1. Cheswick W., Bellovin S., Rubin A. Firewalls and Internet Security: Repelling the Wily Hacker. 2nd ed. Addison Wesley Professional, 2003. 464 p.

2. FreeBSD Handbook. Available at: http://www.freebsd.org/doc/handbook/ , accessed 01.05.2015.

3. Kotenko I.V., Saenko I.B., Polubelova O.V., Chechulin A.A. Technologies of security information and event management for computer network protection. Problemy informatsionnoi bezopasnosti. Komp'yuternye sistemy = Information Security Problems. Computer Systems, 2012, no. 2, pp. 57-68. (in Russian).

4. GOST R 50922-2006. Zashchita informatsii. Osnovnye terminy i opredeleniya [State Standard of RF 50922-2006. Protection of information. Basic terms and definitions]. Moscow, Standartinform Publ., 2008. 8 p. (in Russian).

5. Polubelova O.V., Kotenko I.V. Verification of security policy filtering rules with temporal parameters by Model Checking. Trudy SPIIRAN = SPIIRAS Proceedings, 2012, iss. 3 (22), pp.113-138. (in Russian).

6. Al-Shaer E., Hamed H., Boutaba R., Hasan M. Conflict classification and analysis of distributed firewall policies. IEEE Journal on Selected Areas in Communications, 2005, vol. 23, no. 10, pp. 2069-2084. DOI: 10.1109/JSAC.2005.854119

7. Al-Shaer E., Marrero W., El-Atawy A., Elbadawi K. Network Configuration in A Box: Towards End-to-End Verification of Network Reachability and Security. 17th IEEE International Conference on Network Protocols (ICNP). IEEE Publ., 2009, pp. 123-132. DOI: 10.1109/ICNP.2009.5339690

8. Bartal Y., Mayer A.J., Nissim K., Wool A. Firmato: A novel firewall managment toolkit. ACM Transactions on Computer Systems, 2004, vol. 22, no. 4. C. 381-420. DOI: 10.1145/1035582.1035583

9. Gouda M.G., Liu A.X. A model of stateful firewalls and its properties. Proceedings of the IEEE International Conference on Dependable Systems and Networks (DSN'05), Japan, June 2005. IEEE Publ., 2005, pp. 128-137. DOI: 10.1109/DSN.2005.9

10. IETF Policy Framework (policy) Working Group. The Internet Engineering Task Force (IETF®): website. Available at: http://www.ietf.org/html.charters/policy-charter.html, accessed 01.05.2015.

11. Liu A.X., Gouda M.G, Ma H.H., HH. Ngu A. Firewall Queries. In: Higashino T., ed. Principles of Distributed Systems. OPODIS 2004. Springer Berlin Heidelberg, 2005, pp. 197212. (Ser. Lecture Notes in Computer Science; vol. 3544.). DOI: 10.1007/11516798 15

i Надоели баннеры? Вы всегда можете отключить рекламу.