УДК 004.056
Е. В. Сидельникова, А. В. Тишков, И. В. Котенко
ВЕРИФИКАЦИЯ ПОЛИТИК ФИЛЬТРАЦИИ С ПОМОЩЬЮ ИСЧИСЛЕНИЯ СОБЫТИЙ И АБДУКТИВНОГО ВЫВОДА
Рассматривается подход к верификации политик фильтрации с помощью абдуктивного вывода. Предлагается классификация аномалий в правилах таблицы доступа межсетевого экрана и способы их разрешения. Анализируются различные сценарии моделирования работы межсетевого экрана с помощью исчисления событий. Предлагаются способы применения абдуктивного поиска для нахождения аномалий в политике фильтрации и их разрешения на основе разбиения условий правил политики на непересекающиеся части.
Ключевые слова: межсетевой экран, фильтрация трафика, абдуктивный вывод, аномалия фильтраций сетевого трафика.
Введение. В задаче построения системы безопасности компьютерной сети существенную роль играет политика фильтрации трафика. За пропуск и блокировку пакетов отвечают межсетевые экраны (МЭ). Обработка потоков трафика через МЭ осуществляется на основе правил политики фильтрации, представляемых как строки таблицы доступа межсетевого экрана. Наличие избыточных условий в правилах, а также невыполнимых правил неоправданно замедляет работу МЭ, а следовательно, и всей сети. Выявление и разрешение подобных аномалий особенно актуально для больших компьютерных сетей.
Задача верификации правил в таблице доступа МЭ рассматривалась многими авторами. В работе [1] определены типы отношений между правилами фильтрации и на их основе представлена классификация аномалий, возникающих на МЭ. В работе [2] описана система „Firewall Policy Advisor", которая осуществляет поиск аномалий фильтрации и затем редактирует таблицу доступа МЭ. Эта система определяет аномалии внутри одного и между различными МЭ, но без построения сетевой модели и применения ее к политике безопасности. Для обнаружения и разрешения аномалий на МЭ используется аргументационная логика и абдук-тивный вывод [3, 4]. Применение исчисления событий к политикам авторизации и политикам обязательного выполнения рассматривается в работе [5].
В настоящей статье предлагается новый подход к верификации политик фильтрации МЭ. Особенность предлагаемого подхода по сравнению с другими, основанными на исчислении событий и абдуктивном выводе (рассматриваемыми, в частности, в работах [3, 5]), заключается в следующем. Моделирование действий МЭ осуществляется с помощью исчисления событий (ИС) [6]. После построения предметно-зависимых аксиом и формул ИС, выражающих политики фильтрации и действия МЭ, процедура абдуктивного вывода по заданному номеру правила таблицы доступа МЭ получает сценарий (последовательность событий), который приводит к „срабатыванию" этого правила. Анализ полученного сценария позволяет найти „затененные" правила (или части правил) и удалить их из таблицы доступа МЭ. В общем случае предлагаемый метод может быть применен для нахождения и разрешения различных аномалий фильтрации, а также для улучшения конфигурации МЭ.
Аномалии в правилах фильтрации и стратегии их разрешения. Правила фильтрации разрешают или запрещают пересылку пакетов с определенным адресом и портом источника и получателя трафика для заданного протокола. Упорядоченные правила составляют таблицу доступа МЭ. Каждое правило в таблице представляет собой тройку < O, C, A >, где O — номер правила в таблице доступа; C — условие, при котором пересылка пакета
разрешается или запрещается; А — действие МЭ для данного правила, т.е. разрешение или запрещение пересылки пакета в случае, если для пакета выполнено условие С.
Аномалия в таблице доступа возникает, если условия хотя бы двух правил пересекаются. Пусть имеются два правила < Сь А1 > и < О2, С2, А2 >, где О < О2 . В зависимости от типа пересечения С и С2, а также расположения правил в таблице можно выделить следующие типы аномалий: затенение, если С2 ^ С ; обобщение, если С ^ С2 ; корреляция, если С1 п С2 ^ 0, С1 \ С2 ^ 0 и С2 \ С1 ^ 0 .
Для данных типов аномалий известны различные стратегии разрешения:
— преимущество разрешения — устанавливает приоритет разрешающему правилу и применима к аномалии, в которой А1 ^ А2;
— преимущество запрещения — устанавливает приоритет запрещающему правилу и применима к аномалии, в которой А1 ^ А2;
— преимущество более специфичного — устанавливает приоритет правилу с меньшей областью действия условия, применима только к аномалиям затенения;
— преимущество менее специфичного — устанавливает приоритет правилу с большей областью действия условия, применима только к аномалиям обобщения;
— удаление невыполнимого — удаляет правило, которое никогда не выполняется, применима только для аномалии затенения;
— разбиение — разбивает условия правил на непересекающиеся части, добавляя новые правила в таблицу доступа МЭ или удаляя прежние.
Действие первых четырех стратегий заключается в изменении их порядка в таблице доступа МЭ, что в общем случае приводит к изменению поведения МЭ. Рассмотрим последние две стратегии разрешения, не меняющие поведения МЭ.
Аксиоматика исчисления событий. Исчисление событий [6] формализует общий принцип инерции: свойство окружающего мира, называемое в терминологии ИС флюентой, изменяется только под воздействием событий и остается неизменными в промежутках между ними. Флюента реализуется в некоторый момент времени, если она была инициирована событием в более ранний момент времени и не была приостановлена каким-либо другим событием между этими двумя моментами. Аналогично флюента не реализуется в некоторый момент времени, если она была ранее приостановлена и не была инициирована после. ИС является языком первого порядка, в котором флюенты, события и моменты времени выступают в качестве сортов.
Общий принцип инерции выражается при помощи следующих предикатов: предикат holds_at(F,Т) верный, если флюента Г реализуется в момент времени Т; предикат happens(А,Т) верный, если в момент времени Т произошло событие А; предикат тШаПу(Г) верный, если флюента Г реализуется в начальный момент времени; предикат terminates(A, Г, Т) верный, если событие А приостановило флюенту Г в момент времени Т; предикат initiates(A, Г, Т) верный, если событие А инициировало флюенту Г в момент времени Т; предикат еНрреё(7[, Г, Т2) верный, если между моментами времени Т и Т флюента Г была приостановлена некоторым событием; предикат ёесНрреё(Т[, Т2) верный, если между моментами времени Т и Т флюента Г была инициирована некоторым событием; вспомогательный предикат holds(T, Г, Т2 ) верный, если флюента Г выполняется между моментами времени Т1 и Т2 при условии, что в это время не происходило событий, влияющих на ее реализацию; предикат precondition(A, Т) верный, если в момент времени Т выполнены условия для того, чтобы произошло событие А.
При помощи данных предикатов и отрицания флюенты neg(F) можно записать набор из предметно-независимых аксиом ИС. В настоящей статье аксиомы записывались с помощью языка скриптов, предоставляемого средствами абдуктивного вывода CIFF [7].
Моделирование поведения МЭ. Моделирование действий МЭ задается предметно-зависимой аксиоматикой ИС. Рассмотрим поведение МЭ (с правилами < 0, С0, A >,
< 1, Q, A >, ..., < N, CN, An > ), на который приходит запрос для пакета P со свойствами, определяющими протокол, адрес и порт источника и получателя. Пусть в таблице доступа МЭ свойства пакета P удовлетворяют условию CK, причем для любого i < K свойства пакета P
не удовлетворяют Q, т.е. для данного пакета выполняется K-я строка таблицы доступа МЭ.
Схема моделирования поведения МЭ в терминологии ИС показана на рисунке. Событие request(P) происходит, когда на МЭ поступает запрос на обработку пакета Р. Это событие инициирует флюенту checking(P), которая выполняется, пока МЭ обрабатывает данный запрос, и флюенту checking_rule(0), которая выполняется, пока проверяется правило с номером 0 в таблице межсетевого экрана.
checking(P) checking rule(0) checking rule(1) ... checking rule(K) access(AK,K)
I
I request(P)
I I
T T *
Схема моделирования поведения межсетевого экрана
Если пакет не соответствует условию 0-го правила, то событие check(1) инициирует флюенту checking_rule(1) и терминирует флюенту checking_rule(0) , и так далее, пока не начнет реализовываться флюента checking_rule(K), т.е. МЭ не перейдет к проверке K-й строки. Тогда событие access_event(AK, K) инициирует флюенту access(AK, K) и терминирует флюенту checking(P), т.е. МЭ заканчивает работу и выдает результат Ak , где Ak принимает значения allow или deny (разрешить или запретить передачу пакета соответственно).
Поиск и разрешение аномалий с помощью абдуктивного вывода. После формализации правил работы МЭ на основе средств абдуктивного вывода CIFF[7] можно выяснить, какие правила будут выполняться, когда на МЭ придет запрос на пересылку пакета. Рассмотрим пример таблицы доступа МЭ.
Номер правила Протокол Адрес источника Порт источника Адрес получателя Порт получателя Действие
0 tcp 140.192.37.20 80 * * * * Любой Разрешить
1 tcp 140.192.37.* 80 * * * * Любой Запретить
2 tcp 140.192.37.30 80 161.120.33.40 Любой Разрешить
В таблице правило под номером 2 не сработает никогда, так как оно „затенено" правилом 1. Для выявления данной аномалии напишем следующий запрос:
?- run_ciff(|policies], [holds_at(access(Action, 2), Г)], Answer),
где policies — это файл, содержащий аксиоматику, приведенную выше; holds_at(access(Action, 2) — предикат, задающий выполнение флюенты access(Action, 2)
check(K)
access event
(Ak,K)
в момент времени Т, т.е. регламентирующий тот факт, что второе правило МЭ будет выполнено в некоторый момент времени; Answer — ответ, содержащий абдуцирумые предикаты и соотношения между ними.
В рассматриваемом случае абдуцируемым предикатом является предикат happens/2. В файле policies такой предикат указывается в виде abducible(happens(_,_)). Целью абдуктив-ного алгоритма является нахождение сценария или последовательности событий в виде набора пар {(ei, ti))i<j<n , где ei — событие, произошедшее в момент времени ti, и ti < tj для любых i < j.
Очевидно, что для рассматриваемого запроса невозможно найти ни одного сценария, так как любой пакет, удовлетворяющий условию правила 2 таблицы доступа МЭ, будет запрещен правилом 1.
Предложим два способа разбиения правил на непересекающиеся множества для аномалий обобщения и корреляции.
Первый способ разбиения правил напрямую использует предложенную в работе аксиоматику для моделирования поведения МЭ.
Рассмотрим следующие запросы к МЭ, заданному в таблице.
?- run_ciff([policies], [holds_at(access(Action, 0), T)], Answer), (1)
?- run_ciff([policies], [holds_at(access(Action, 1), T)], Answer). (2)
Результат, выдаваемый алгоритмом CIFF на запрос (1), будет, во-первых, содержать подстановку для переменной Answer, состоящую из конъюнкции предикатов
happens (request (condition (top, s_ip (140, 192, 37, 20), 80, d_ip(_B,_C,_D,_E),_F)),_G),
happens (access_event (allow, 0), _ A) и неравенств _ G < _ A, _ G < T и _ A < T. Также в подстановку для переменной Answer входит список [_ A = 1, _ G = 0], состоящий из возможных значений моментов времени. Во-вторых, в ответ для данного запроса входит подстановка для остальных переменных: Action = allow, T = 2...200. Данный ответ означает следующее: для того чтобы было выполнено правило 0 в таблице доступа МЭ, должен прийти tcp-пакет с адресом источника 140.192.37.20, портом источника 80, произвольным портом получателя и произвольным адресом получателя.
Ответ на запрос (2) содержит абдуцируемые предикаты
happens(request(condition(tcp,s_ip(140,192,37,_C ),80,d_ip(_ D,_ E,_ F,_ G),_ H)),_ I), happens(check(1),_B), happens(access_event(deny,1), _A), причем _ A < _ B < _ C < T, а также ограничение _ C ^ 20 . В этом ограничении заключается отличие правила 1 от запросов, которые „пройдут" по правилу 2.
Также следует заметить, что между правилами 1 и 2 таблицы существует аномалия обобщения, которую можно разрешить, добавив данное ограничение к правилу 1:
rule(N, C, Action): - Action = deny, N # = 1, C = condition(tcp, s_ip(140,192,37,r1), 80, d_ip(X2,Y2,Z2,W2), P2),
где # обозначает сравнение значений. Такое изменение соответствует применению стратегии разбиения к данной аномалии. Делая запросы последовательно ко всем правилам и сравнивая результаты с исходными правилами, можно составить новый набор правил с непересекающимися условиями.
Второй подход для поиска аномалий основывается на следующем рассуждении. Если взять произвольное правило, а затем исключить его из таблицы доступа, в которой нет пере-
секающихся правил, то для множества пакетов, для которых оно выполняется (найденное при помощи абдуктивной процедуры), не найдется правила в новой таблице доступа. Если же такое правило найдется, то между ним и первым правилом будет существовать аномалия. Таким образом, можно последовательно находить пары правил с аномалиями, и их разрешение оставить на усмотрение пользователя.
Заключение. В настоящей статье представлен подход к верификации политик фильтрации межсетевого экрана. Использование предложенной аксиоматики исчисления событий при моделировании МЭ позволяет решать задачу анализа его работы и настройки. В предлагаемом подходе выделены прямая и обратная задачи анализа работы МЭ: прямая задача — по свойствам трафика, передаваемого на МЭ, вычислить действие типа allow/deny; обратная задача — по номеру сработавшего правила определить свойства трафика. Решение обратной задачи с использованием абдуктивного вывода, представленное на базе библиотеки CIFF для продукта SICStus Prolog, было программно реализовано. Решение прямой задачи предполагается реализовать на SICStus Prolog с помощью применения дедуктивного вывода. Задача конфигурирования МЭ заключается в определении на основе свойств трафика и желаемого отклика МЭ такого набора правил, который, например, содержит минимальное их количество или имеет минимальное количество пересечений условий. Задача конфигурирования по заданным ограничениям на прохождение трафика также может быть решена с использованием абдуктивного вывода и предложенной аксиоматики исчисления событий. В настоящее время эта задача находится на стадии реализации программного прототипа.
Работа выполнена при финансовой поддержке Российского фонда фундаментальных исследований (проект № 07-01-00547), программы фундаментальных исследований ОИТВС РАН (контракт № 3.2/03), Фонда содействия отечественной науке, а также при частичной финансовой поддержке по проекту Евросоюза RE-TRUST (контракт № 021186-2).
список литературы
1. Al-Shaer E., HamedH., Boutaba R., Hasan M. Conflict classification and analysis of distributed firewall policies // J. on Selected Areas in Communications. 2005. Vol. 23, N. 10. P. 2069—2084.
2. Al-Shaer E., HamedH. Firewall policy advisor for anomaly discovery and rule editing // IEEE/IFIP Integrated Management. 2003. 14 p.
3. Bandar a A. K., Kakas A. S., Lupu E. C., Russo A. Using argumentation logic for firewall policy specification and analysis // 17th IFIP/IEEE Intern. Workshop on Distributed Systems. 2006. P. 185—196.
4. GORGIAS. Argumentation and Abduction [Электронный ресурс]: <http://www2.cs.ucy.ac.cy/ ~nkd/gorgias/>.
5. Bandara A. K., Lupu E. C., Russo A. Using event calculus to formalise policy specification and analysis // IEEE Workshop on Policies for Distributed Systems and Networks. 2003. P. 26—42.
6. Kowalski R. A., SergotM. J. A logic-based calculus of events // New Generation Computing. 1986. N. 4. P. 67—95.
7. Endriss U., Mancarella P., Sadri F. et al. The CIFF proof procedure: definition and soundness results // Technical Rep. Department of Computing, Imperial College London. 2004. Vol. 2. 17 p.
Сведения об авторах
Екатерина Викторовна Сидельникова — СПИИРАН, научно-исследовательская группа компьютерной
безопасности; E-mail: [email protected] Артем Валерьевич Тишков — СПИИРАН, исследовательская группа информационных тех-
нологий в образовании; E-mail: [email protected] Игорь Витальевич Котенко — СПИИРАН, научно-исследовательская группа компьютерной
безопасности; E-mail: [email protected]
Поступила в редакцию 06.05.08 г.