Логический анализ корректности конфигурирования межсетевых экранов
11
1
2
1
2
[!
( )
(!
( ) (
))]
accept p
drop p p p
1
2
1
2
[!
( )
(!
( ) (
))].
drop p
accept p p p
Пересечение возникает, когда действия двух правил в списке, од-
но из которых предшествует другому правилу, являются противопо-
ложными по смыслу, но пакет предшествующего правила пересека-
ется с последующим. Как и в предыдущем случае, ясно, что если
предшествующее правило разрешает принять пресечение, а последу-
ющее запрещает его прием, то пересечение будет принято. И наобо-
рот, если предшествующее правило запрещает принимать пересече-
ние, а последующее разрешает его прием, то пакет, входящий в по-
следующий, не будет принят. Понятно также, что такая ситуация,
разрешается однозначно, но, как и в предыдущем случае, непонятно,
является ли она ошибкой или допущена сознательно, но указать на
нее необходимо. Используя временную модальную логику и канони-
ческие процессные выражения, правило корректности, истинность
которого гарантирует отсутствие исключения, выглядит следующим
образом:
1
2
1
2
[!
( )
((!
( )) (
))]
accept p
drop p p p
1
2
1 2
[!
( )
((!
( )) (
))].
drop p
accept p
p p
Главными критериями
оптимальности
, как правило, являются:
число необходимых правил (процессных выражений) и время про-
верки при фильтрации пакетов. Понятно, что эти критерии взаимо-
связаны, хотя эта взаимосвязь и не очевидна. В однопроцессных мо-
делях сетевых экранов для каждого состояния
b
вводится не более
одного выражения вида !
action b
и не более двух выражений вида
?( )
j
i
b b p
или
? ( )
j
i
b b not p
, где
i
j
b b
. Если считать, что процесс
имеет
n
состояний, то, исходя из этого, можно заключить, что оценка
числа выражений в однопроцессных моделях в зависимости от числа
его состояний линейна и равна O(3
n
). Если считать, что память, не-
обходимая для хранения одного процессного выражения и время его
вычисления пропорциональны числу символов
l
в процессном выра-
жении, то оценки времени вычислений и требуемой памяти для од-
нопроцессорных экранов одинаковы и равны O(3
ln
). Как правило,
l
<<
n
, и поэтому главным фактором оптимальности является число
состояний
n
. Для оптимизации числа состояний используется извест-
ное [5] отношение
R
на множестве
*
?
A
, определяемое следующим
образом:
*
*
1
2
? ?
a R a
, если
* * *
* * *
1
2
(? ? )
(? ? )
a a
a a
для всех
*
?
a
таких