Опубликован: 21.09.2006 | Уровень: для всех | Доступ: платный | ВУЗ: Московский государственный университет имени М.В.Ломоносова
Лекция 3:

Пример пакетных фильтров в ОС FreeBSD 6.0

Команды IPFW

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

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

Для того чтобы получить список всех правил, следует выполнить

# ipfw list

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

# ipfw –t list

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

# ipfw –a list

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

# ipfw –d list

Показать истекшие динамические правила:

# ipfw –d –e list

Обнулить счетчики:

# ipfw zero

Обнулить счетчики только для правила с номером NUM:

# ipfw zero NUM

Набор правил IPFW

С помощью правил можно разрешить или запретить прохождение пакета, основываясь на значениях, содержащихся в его заголовках. Понятие сессии означает двунаправленный обмен пакетами между хостами. С точки зрения сессии можно считать, что набор правил пакетного фильтра обрабатывает пакет дважды: один раз — когда тот поступает на внешний интерфейс, и второй — когда покидает хост через данный интерфейс. Каждый tcp/ip сервис (например, telnet, www, mail и т.п.) определяется своим протоколом и номером порта. Это является базовым критерием при создании правил, которые разрешают или запрещают сервис.

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

Замечание. Поиск продолжается после count, skipto и tee правил.

Инструкции, указанные здесь, являются основой при использовании правил, которые содержат опции поддержки состояния keep state, limit, in или out. Это является основой для создания включающего (inclusive) типа набора правил пакетного фильтра.

Включающий пакетный фильтр разрешает только те сервисы, которые соответствуют правилам.

Синтаксис правил

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

CMD RULE_NUMBER ACTION LOGGING SELECTION STATEFUL
CMD

Каждое новое правило должно начинаться с префикса add для добавления правила во внутреннюю таблицу.

RULE_NUMBER

Каждое правило имеет номер, с помощью которого можно перейти на данное правило.

ACTION

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

allow | accept | pass | permit

Все эти значения являются аналогичными и означают, что пакеты, которые соответствуют правилу, разрешаются. При этом поиск прекращается.

check-state

Выполняется проверка пакета в таблице динамических правил. Если соответствие найдено, выполняется действие, связанное с правилом, которое создается данным динамическим правилом, в противном случае осуществляется переход к следующему правилу. Правило check-state не имеет критерия выбора. Если правило check-state присутствует в наборе правил, таблица динамических правил проверяется на соответствие правилу поддержки состояния или правилу ограничения.

deny | drop

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

Создание логов
log [ logamount ]

Когда пакет соответствует правилу с ключевым словом log, сообщение будет записано посредством syslogd с названием SECURITY. Создание лога происходит только тогда, когда номер пакета, для которого создается лог, не превышает значения параметра logamount. Если logamount не указан, ограничение берется из переменной sysctl net.inet.ip.fw.verbose_limit. В обоих случаях значение "нуль" не считается ограничением создания логов. После того как ограничение достигнуто, создание логов может быть возобновлено чисткой счетчика логов или счетчика пакетов для данного правила, с помощью команды reset log для ipfw.

Замечание. Создание лога выполняется после того, как весь остальной пакет, соответствующий условию, будет успешно проверен, и перед выполнением заключительного действия ( accept, deny ) для пакета.

Нияз Сабиров
Нияз Сабиров

Здравствуйте. А уточните, пожалуйста, по какой причине стоимость изменилась? Была стоимость в 1 рубль, стала в 9900 рублей.

Елена Сапегова
Елена Сапегова

для получения диплома нужно ли кроме теоретической части еще и практическую делать? написание самого диплома требуется?

Игорь Касаткин
Игорь Касаткин
Россия, Москва
Зарина Каримова
Зарина Каримова
Казахстан, Алматы, Гимназия им. Ахмета Байтурсынова №139, 2008