6. Пакетный фильтр
В этой главе рассказывается, как создавать правила, которые позволяют
межсетевому экрану пропускать или запрещать соединения. Этот модуль является
главным в системе; работа по его настройке наиболее трудоемка.
6.1 Введение
Что такое пакетный фильтр?
Пакетный фильтр является главным модулем системы, который принимает решения,
разрешить или запретить конкретному пакету пройти через межсетевой экран.
Это означает, что определенный сервис разрешен или запрещен.
Чтобы решать, какие действия следует выполнять для каждого полученного
межсетевым экраном пакета, пакетный фильтр использует набор правил, которые
описываются системным администратором. Для каждого пакета межсетевой экран
просматривает весь набор правил в порядке их создания, проверяя, удовлетворяет
ли пакет какому-либо из них. Если соответствующее правило существует, то
в соответствии с ним будет выполняться заданное действие. Если данный пакет
не удовлетворяет ни одному из правил, то будет выполняться действие по
умолчанию.
Что представляет фильтр с контролем
состояния межсетевого экрана Aker?
Действия традиционного пакетного фильтра основаны исключительно на наборе
правил, описанных администратором. Для каждого пакета, который может проходить
через фильтр, администратор должен создать необходимое правило. В некоторых
случаях это достаточно просто, однако иногда такая процедура невозможна,
или по крайней мере невозможна без соблюдения необходимого уровня безопасности
и гибкости.
Пакетный фильтр межсетевого экрана Aker называется фильтром с контролем
состояния, так как он сохраняет информацию о состоянии по каждому проходящему
через него соединению, и использует всю эту информацию совместно с набором
правил при решении вопроса о том, пропустить или отбросить конкретный пакет.
Кроме того, в отличие от пакетного фильтра, который принимает решения,
основываясь только на данных в заголовке пакета, фильтр с контролем состояния
проверяет данные всех уровней и использует их при принятии решений.
Рассмотрим подробнее, как фильтр с контролем состояния решает различные
проблемы, которые возникают при использовании обычного пакетного фильтра.
Проблема с UDP протоколом:
Для того, чтобы использовать UDP сервис, клиент выбирает номер порта
(который меняется каждый раз при использовании сервиса) и посылает пакет
на порт сервера, соответствующий данному сервису (порт на сервере фиксирован).
Получив запрос, сервер посылает в ответ один или более пакетов на порт
клиента. Для образования соединения необходимо, чтобы межсетевой экран
принимал пакеты запросов и ответов. Проблема заключается в том, что UDP
протокол не является протоколом, ориентированным на соединение, т.е. если
рассматривается отдельный изолированный пакет вне контекста, то невозможно
узнать, является ли он запросом или ответом некоторого сервиса.
В обычных пакетных фильтрах администратор может либо блокировать весь
UDP трафик, либо позволить пройти пакетам ко всем возможным портам, так
как он не знает заранее, какой порт будет выбран клиентом для доступа к
определенному сервису. Оба эти подхода обладают очевидными недостатками.
Межсетевой экран Aker способен динамически адаптироваться к трафику
при решении вышеупомянутых проблем: каждый раз, когда UDP пакет соответствует
какому-либо правилу, во внутреннюю таблицу состояний добавляется элемент.
Это позволяет пропускать к клиенту обратные пакеты от сервера.
Этот элемент является активным в течение короткого промежутка времени,
по истечении которого он удаляется (этот временной интервал устанавливается
через окно параметров настройки, которое рассматривается в главе Настройка
параметров системы). В результате администратору не приходится заботиться
об ответных UDP пакетах; для разрешения доступа к сервисам необходим о
только настроить правила для данного сервиса. Это легко сделать, так как
все сервисы имеют фиксированные порты.
Проблема с FTP протоколом:
FTP является одним из самых популярных протоколов в Интернет, однако,
он же является и одним из наиболее сложных протоколов для межсетевых экранов. Рассмотрим
более подробно его функциональные свойства:
Для получения доступа к FTP сервису клиент открывает TCP соединение
с 21 портом на сервере (порт клиента может быть различным). Такое соединение
называется контрольным каналом. После этого при любой перекачке файла или
просмотре каталога устанавливается новое соединение - образуется канал
передачи данных. Последний можно установить двумя способами:
- соединение может устанавливаться сервером ( 20 порт ) и клиентом (случайно
выбранный порт). О номере порта клиент сообщает серверу через контрольный
канал; такой способ называется активным FTP
- клиент может открыть соединение между случайно выбранными портами ( у клиента
и сервера); номер последнего передается клиенту через контрольный канал.
Такой способ называется пассивным FTP.
В обоих указанных случаях администратор не знает, какие порты будут выбраны
для установления канала передачи данных, и если он хочет использовать FTP
протокол через традиционный пакетный фильтр, он будет вынужден разрешить
доступ ко всем возможным портам, используемым клиентами и серверами. Этот
подход может привести к серьезным проблемам с безопасностью.
Межсетевой экран Aker умеет анализировать трафик по контрольному каналу,
т.е. он может понять, какой тип соединения будет использоваться ( активный
или пассивный) и какие порты будут использованы для установления канала
передачи данных. Благодаря этому свойству, каждый раз, когда пакетный фильтр
определяет, что будет иметь место передача данных, он добавляет элемент
в таблицу состояний. Этот элемент активен только во время передачи и только
при открытом контрольном канале. Таким образом, для настройки доступа по
FTP протоколу необходимо лишь добавить правило, разрешающее доступ к 21
порту. Все остальное будет сделано автоматически.
Проблема с Real Audio протоколом:
Протокол Real Audio является наиболее распространенным протоколом для
аудио и видео передач через Интернет в режиме реального времени.
Для передачи видео или аудио информации клиент устанавливает TCP соединение
с сервером Real Audio. Чтобы улучшить качество аудио и видео передачи,
наряду с этим соединением, сервер может открыть UDP соединение с клиентом,
с произвольным портом, а клиент в свою очередь может открыть другое UDP
соединение с сервером (также с произвольным портом).
Обычные пакетные фильтры не позволяют устанавливать UDP соединения от
сервера к клиенту и наоборот, поскольку порты заранее неизвестны, что приводит
к понижению качества аудио и видео данных.
Фильтр межсетевого экрана Aker контролирует весь трафик между сервером
Real Audio и клиентом, проверяя какие UDP соединения открыты и к каким
портам и добавляя эту информацию в таблицу состояний. Этот элемент активен
только в период открытого контрольного FTP соединения, что обеспечивает
высокий уровень безопасности.
Создание правил фильтрации в
простом пакетном фильтре.
Перед тем как рассказать, как настраивать пакетный фильтр межсетевого экрана
Aker, полезно пояснить, как описывать правила в обычном пакетном фильтре.
Существуют несколько возможных параметров при фильтрации пакетов. Наиболее
простой является адресная фильтрация; она состоит в сравнении адресов в
пакете с адресами, прописанными в правилах. Если адреса совпадают, пакет
пропускается. Это сравнение производится следующим образом:
Рассмотрим следующее правило: все хосты сети 10.1.x.x могут взаимодействовать
с хостами сети 10.2.x.x. Запишем это правило, используя нотацию, приведенную
в главе Регистрация объектов. Мы имеем:
10.1.0.0 & 255.255.0.0 -> 10.2.0.0 & 255.255.0.0
------- Источник ------ -----Назначение -----
Теперь применим правило к пакету, который отправлен от хоста 10.1.1.2 к
хосту 10.3.7.7. Наложим маску к обоим адресам - адресу в правиле и адресу
в пакете. Затем проверим, одинаковы ли адреса источника и назначения. В
результате будем иметь:
Для адреса источника:
10.1.0.0 И 255.255.0.0 = 10.1.0.0 (для правила)
10.1.1.2 И 255.255.0.0 = 10.1.0.0 (для пакета)
После применения маски оба адреса совпадают. Проверим теперь адрес назначения:
10.2.0.0 И 255.255.0.0 = 10.2.0.0 (для правила)
10.3.7.7 И 255.255.0.0 = 10.3.0.0 (для пакета)
Так как адреса назначения пакета и правила после применения маски не совпадают,
то это правило не должно применяться к данному пакету.
Эта операция выполняется по всему списку адресов и масок источника
и назначения до достижения конца списка или до тех пор, пока пакет не будет
удовлетворять одному из правил. Список правил имеет следующий формат:
10.1.1.2 & 255.255.255.255 -> 10.2.0.0 & 255.255.0.0
10.3.3.2 & 255.255.255.255 -> 10.1.2.1 & 255.255.255.255
10.1.1.0 & 255.0.0.0 -> 10.2.3.0 & 255.255.255.0
10.1.0.0 & 255.255.0.0 -> 10.2.0.0 & 255.255.0.0
Кроме адресов источника и назначения, каждый IP пакет заключает в себе
информацию об используемых протоколе и сервисе. Ее можно использовать как
дополнительный параметр фильтрации.
Например, сервисы в протоколе TCP всегда связаны с портом (за дальнейшей
информацией обращайтесь к главе Регистрация объектов).
В результате можно привести в соответствие список портов с адресами.
Воспользуемся для примера двумя хорошо знакомыми сервисами, POP3 и
HTTP. POP3 использует порт 110, а HTTP - порт 80. Следовательно, мы можем
добавить эти порты в описание правила. В результате получим:
10.1.0.0 & 255.255.0.0 -> 10.2.0.0 & 255.255.0.0 TCP 80 110
------- Источник ------ ----- Назначение -------- Протокол-- --Порты--
Это правило разрешает каждому пакету, следующему от сети 10.1.x.x к сети
10.2.x.x и использующему сервисы HTTP и POP3, проходить через межсетевой
экран.
Сначала адреса из правила сравниваются с адресами пакета. Если после
наложения маски оба адреса совпадают, протокол и порт назначения в пакете
будут сравниваться с протоколом и списком портов, описанных в правиле.
Если протокол совпадает, а порт в правиле одинаков с портом пакета, то
такой пакет удовлетворяет правилу. В противном случае поиск будет продолжен
в списке правил.
С учетом этой новой информации набор правил будет иметь следующий формат:
10.1.1.2 & 255.255.255.255 -> 10.2.0.0 & 255.255.0.0 UDP 53
10.3.3.2 & 255.255.255.255 -> 10.1.2.1 & 255.255.255.255 TCP 80
10.1.1.0 & 255.0.0.0 -> 10.2.3.0 & 255.255.255.0 TCP 21 20 113
10.1.0.0 & 255.255.0.0 -> 10.2.0.0 & 255.255.0.0 ICMP 0 8
Кроме этих основных параметров фильтрации можно добавить еще несколько.
Одним из них является сетевой интерфейс источника; используя имя сетевого
интерфейса в качестве параметра фильтрации можно разрешить прохождение
пакетов с определенными адресами только от заданного интерфейса
Цель такой процедуры состоит в блокировании атаки, известной как IP
спуфинг, суть которой состоит в том, что во внутреннюю сеть посылается
пакет с фальшивым адресом источника ( из внутренней сети). При использовании
в качестве параметра имени сетевого интерфейса можно легко блокировать
этот вид атаки. Например, если внутренняя сеть взаимодействует с межсетевым
экраном через интерфейс de0, то необходимо лишь установить в правилах,
что пакеты с адресом источника из внутренней сети следует принимать, только
если они пришли от данного интерфейса; во всех других случаях они
будут отбрасываться.
С учетом нового параметра взятое для примера правило будет иметь следующий
формат:
10.1.0.0 & 255.255.0.0 -> 10.2.0.0 & 255.255.0.0 <ep0> TCP 80 110
------- Источник --------- Назначение ----- -Интерф- -Протокол- --Порты--
Это правило устанавливает, что будут приниматься TCP пакеты от хостов из
сети 10.1.0.0 к хостам из сети 10.2.0.0, приходящие от интерфейса ep0 и
относящиеся к HTTP сервису (порт 80) или POP3 (порт 110).
Создание правил фильтрации для
межсетевого экрана Aker
Создавать правила фильтрации для межсетевого экрана Aker просто. Все описания
IP адресов, масок, протоколов и портов производятся при создании объектов
(смотрите главу Регистрация объектов ). Это
облегчает создание правил, так как при этом не приходится беспокоиться,
какой порт использует определенный сервис или какие IP адреса используются
в сети. Кроме того, все наиболее распространенные в Интернет сервисы описаны
заранее, что позволяет избежать напрасной траты времени на поиск соответствующих
значений.
По существу, для создания правила администратор должен указать объекты
источника и назначения и сервисы; все эти данные будут составлять правило.
Можно также указать сетевой интерфейс для входящих пакетов и описать временной
период ( в часах и днях недели), в течение которого правило будет действовать.
Если пакет послан в промежуток времени, когда данное правило не активно,
это правило не будет учитываться, и поиск будет продолжен далее по списку
правил
Принцип работы фильтра заключается в следующем: межсетевой экран будет
проверять по порядку все описанные администратором правила, до тех пор,
пока не будет найдено соответствующее правило. Затем будет выполнено соответствующее
правилу действие - пропустить, отказать или отбросить( эти действия будут
пояснены в следующем разделе). Если поиск достигает конца списка и пакет
не удовлетворяет ни одному из правил, такой пакет будет отброшен. (Можно
определить действие, выполняемое в этом случае. Этот вопрос будет обсуждаться
в главе Настройка реакции системы.)
!
Интерфейс источника пакета проверяется после проверки адресов источника
и назначения, но до проверки других параметров фильтрации. Если пакет проходит
через интерфейс, отличный от указанного в правиле, он отбрасывается, а
поиск в списке правил прерывается, даже если пакет удовлетворяет
другим критериям фильтрации.
6.2 Редактирование списка правил с использованием графического
интерфейса.
Для получения доступа к окну настройки правил фильтрации вам нужно:
- Выбрать меню Редактирование в главном окне
- Выбрать опцию Правила фильтрации
Окно правил фильтрации
Окно правил показывает все правила фильтрации, описанные в межсетевом
экране Aker. Каждое правило будет показано на отдельной строке, состоящей
из нескольких ячеек. При выделении одного из правил оно будет показано
окрашенным в другой цвет.
- Клавиша OK обновляет список правил и делает его сразу активным.
- Клавиша Cancel отбрасывает все модификации и окно закрывается.
- Клавиша Help показывает окно помощи с подсказками по данному разделу.
- Если установлена опция Show all entities , будут высвечены все параметры
фильтрации. В противном случае будут показаны только два первых.
Указание: если эта опция не установлена, а правило имеет
больше двух объектов в полях источника, назначения или сервисах, то в каждом
из полей, содержащем больше двух объектов, будет показана направленная
вниз стрелка.
- Полоска прокрутки с правой стороны используется для просмотра правил, которые
не помещаются в окне.
- Если выделить правило, для которого описаны комментарии, то они будут показаны
в нижней части окна.
Чтобы выполнить любую операцию на конкретном правиле, достаточно нажать
правой клавишей мыши по этому правилу. Появится следующее меню: (Это меню
будет появляться каждый раз, когда вы нажимаете на правую клавишу мыши,
даже если не выделено никаких правил. При этом будут доступны только опции
Add и Paste).
- Add: Эта опция позволяет включить в список другое правило. Если
выделено какое-либо правило, новое правило вставляется перед выделенным
правилом под его номером. В противном случае новое правило включается в
конец списка.
- Delete:Эта опция удаляет выделенное правило из списка.
- Edit: Эта опция открывает окно редактирования для выделенного
правила.
- Copy: Эта опция копирует выделенное правило в буфер.
- Cut: Эта опция удаляет выделенное правило из списка и копирует его
в буфер.
- Paste: Эта опция копирует правило из буфера в список. Если правило
выделено, то новое правило будет вставлено на перед выделенным правилом
на его позицию. Если правило не выделено, то новое будет скопировано в
конец списка.
Deselect: Эта опция отменяет выделение ранее выделенного правила
и снова показывает меню. Это очень полезно, когда существует большое число
правил и нужно включить или вставить правило в конец списка.
Указание: все эти опции, за исключением опции deselect, можно
выполнять через инструментальное меню, расположенное в верхней части окна.
В этом случае сначала выделите правило, нажав на нем левой клавишей мыши,
а затем выберите нужную опцию.
При добавлении или редактировании правил будет показано окно свойств:
Окно свойств одного правила
Окно свойств используется для настройки всех параметров правила. Оно
состоит из следующих полей:
Source Entities: Это поле определяет объекты, адреса которых
будут сравниваются с адресом источника IP пакетов.
Destination Entities: Это поле определяет объекты, адреса которых
будут сравниваются с адресом назначения IP пакетов.
Services: Это поле описывает сервисы, используемые в правиле.
Interface: Поле определяет разрешенный интерфейс для входящих
пакетов. Значение any отменяет проверку по этому полю. Если интерфейс
выбран, то будут приниматься пакеты, приходящие только от этого интерфейса.
Для выделения интерфейса нужно только нажать на направленной вниз стрелке
сбоку от поля. После этого система покажет список всех сетевых интерфейсов,
опознанных межсетевым экраном.
Log: Это поле определяет, какое действие будет выполняться системой,
когда пакет удовлетворяет данному правилу. Она состоит из нескольких опций,
которые можно выделять независимо. Значения этих опций таковы:
Log: Если эта опция установлена, то все пакеты, удовлетворяющие
данному правилу, будут регистрироваться в системном журнале.
Mail: Если эта опция установлена, то по электронной почте будет
посылаться одно сообщение каждый раз, когда пакет удовлетворяет правилу
(настройка адреса электронной почты рассматривается в главе Настройка
реакции системы).
Trap: Если эта опция установлена, то для каждого пакета, удовлетворяющего
данному правилу, будет посылаться SNMP прерывание (настройка параметров
прерываний будет рассмотрена в главе Настройка
реакции системы).
Program: Если эта опция установлена, то каждый раз, когда пакет
удовлетворяет данному правилу, будет выполняться описанная администратором
программа (настройка имени выполняемой программы будет рассмотрена в главе
Настройка реакции системы).
Alert: Если эта опция установлена, то каждый раз, когда пакет
удовлетворяет данному правилу, межсетевой экран покажет окно предупреждений.
Это окно появится на хосте, на котором открыт удаленный графический интерфейс
и, если возможно, будет звучать предупреждающий сигнал. Если графический
интерфейс пользователя не открыт, то не появится никаких сообщений, а эта
опция не будет учитываться.
! Для протоколов, использующих TCP, определенные в правиле действия будут
выполняться только при установленном соединении. В случае UDP протокола,
действия будут выполняться для всех пакетов, посланных клиентом и удовлетворяющих
данному правилу (но не ответные пакеты).
Action of the rule:Это поле определяет, какое действие будет выполнено
для всех пакетов, удовлетворяющих данному правилу. Оно состоит из следующих
опций:
Accept: Эта опция означает, что пакетам, удовлетворяющим правилу,
разрешается пройти через межсетевой экран.
Reject: Эта опция означает, что пакеты, удовлетворяющие правилу,
не пройдут через межсетевой экран, причем хосту источника будет посылаться
ICMP destination unreachable сообщение (хост назначения недоступен). Эта
опция не работает для некоторых типов ICMP сообщений.
Discard: Эта опция означает, что пакеты, удовлетворяющие данному
правилу, не пройдут через межсетевой экран, при этом не будут посылаться
какие-либо пакеты хосту источника.
Comment: Поле комментариев к правилу. Оно может быть полезным для
хранения информации об использовании правила.
Timetable: Эта кнопка позволяет получить доступ к окну временной
таблицы активного правила . Если нажать эту кнопку, появится следующее
окно:
Эта таблица определяет часы и дни недели, в течение которых применимо
правило. Строки представляют дни недели, а колонки - часы. Если правило
в данный период времени должно действовать, квадратик в таблице следует
заполнить. Для облегчения процесса настройки можно нажать левую клавишу
мыши на квадрате и двигать курсор, сохраняя клавишу нажатой. При этом таблица
будет модифицироваться в соответствии с перемещением мыши.
Добавление и удаление объектов
и сервисов
Каждое из полей объектов источника, назначения и сервисов состоит из двух
списков. Левый список содержит все объекты системы, которые можно добавить
в выделенное поле. Правый список содержит все объекты, которые уже добавлены
в поле.
Чтобы добавить объект в одно из этих полей, нужно сделать следующее:
- Выделить включаемый объект в левом списке.
- Нажать на направленной вправо стрелке сбоку от требуемого списка (только
что включенный объект будет помечен красной меткой V,
указывающей на то, что он добавлен в поле).
Чтобы удалить объект из одного из этих полей, нужно выполнить следующее:
- Выделить удаляемый объектов правом списке.
- Нажать на значок X сбоку от требуемого списка (контрольная метка V
будет удалена от объекта, чтобы показать, что он больше не принадлежит
выделенному полю).
6.3 Использование интерфейса командной строки
Использование интерфейса командной строки для настройки правил фильтрации
немного затруднительно, что связано с большим количеством параметров в
командной строке.
! Используя интерфейс командной строки невозможно настроить временную таблицу
для правила. Все правила, добавленные через этот интерфейс, считаются действующими
без ограничений по времени. Невозможно также определить более одного объекта
в поле источника или назначения.
Путь: /etc/firewall/fwregra
Синтаксис:
fwregra [help | show]
fwregra remove <pos>
fwregra add <pos> <source> <destination>
<accept | reject | discard> <Interface>
[log] [mail] [trap] [program] [alert] [<service> ...]
Program help:
Aker Firewall - Version 3.0
fwregra - настройка таблицы правил для пакетного фильтра
Usage: fwregra [help | show]
fwregra remove <pos>
fwregra add <pos> <source>
<destination>
<accept | reject | discard> <Interface>
[log] [mail] [trap] [program] [alert] [<service> ...]
show = показывает все правила фильтрации
add = добавляет новое правило фильтрации
remove = удаляет существующее правило фильтрации
help = показывает данное сообщение
Для добавления правила
accept |
правило пропускает удовлетворяющие ему пакеты |
reject |
правило не пропускает удовлетворяющие ему пакеты
и посылает ICMP destination unreachable сообщение источнику |
discard |
правило не пропускает пакеты (при этом никакие ICMP пакеты не отсылаются) |
interface |
определяет разрешенный сетевой интерфейс для пакетов (это может быть имя интерфейса, например en0, ep0, или слово ANY, если допустим любой интерфейс ) |
log |
регистрирует все пакеты, удовлетворяющие данному правилу |
mail |
посылает e-mail сообщение для каждого пакета, удовлетворяющего данному правилу |
trap |
генерирует SNMP прерывание (trap) для каждого пакета, удовлетворяющего данному правилу |
program |
запускает программу для каждого пакета, удовлетворяющего правилу
|
alert |
открывает окно предупреждений для каждого пакета, удовлетворяющего правилу |
service |
показывает список сервисов для нового правила |
Для команды удаления правила:
pos = номер правила, удаляемого из таблицы
Пример 1: (Просмотр правил фильтрации)
#/etc/firewall/fwregra show
Rule 01
-------
Source : Internet
Destination: firewall cache
Action : Discard Interface: Any Log: Log Trap Alert
Services : all_tcp all_udp
all_icmp
Rule 02
-------
Source : cache firewall
Destination: Internet
Action : Accept Interface: de0 Log: Log
Services : http ftp
Rule 03
-------
Source : Internet
Destination: Mail server
Action : Accept Interface: de1 Log: Log
Services : smtp
Rule 04
-------
Source : External Companies
Destination: Aker
Action : Accept Interface: de1 Log: Log
Services : smtp
Пример 2: (Удаление правила N 4)
#/etc/firewall/fwregra remove 4
Rule 4 removed
Пример 3: (Добавление нового правила в конец таблицы)
#/etc/firewall/fwregra add end Internet "Mail server" accept de1 log smtp
Rule added at position 4
! Объекты Internet
и Mail server , также как и сервис smtp должны быть зарегистрированы
в системе. Более подробно о регистрации объектов описано в главе Регистрация объектов.
! Если
имена объектов содержат пробелы, то их необходимо заключить в кавычки "
" .
Назад | Содержание | Вперед
|