![]() |
|
|
|
|
|
Несколько дополнительных слов во введении Трафик, проходящий через маршуртизатор не должен быть бесконтрольным. Абсолютно естественно, когда хочется:
ОС FreeBSD предлагает хороший инструментарий для решения названых задач. Центральным элементом этого инструментария является подсистема ядра ipfw, предназначеная для пакетной фильтрации и решения других родственных задач; и одноименная утилита ipfw, которая нужна для настройки этой подсистемы. Здесь рассматривается, как пользоваться утилитой ipfw для настройки фильтрации/учета/регулировки трафика; конфигурировать демон natd для выполнения трансляции адресов, а также указывается, с какими опциями должно быть собрано ядро системы для того чтобы все это работало. В завершение рассказывается, как ipfw и natd автоматически настраивать при загрузке системы. Внутренняя дружественная сеть и потенциально опасный Интернет должны быть разделены. Внутренние компьютеры должны быть ограничены от пагубного внешнего воздействия, но при этом, с одной стороны, они должны обеспечивать другие компьютеры внутренней сети необходимыми сервисами; с другой стороны, должны иметь полноценный доступ к компьютерам Интернета. Эта задача обычно решается при помощи брандмауэра. Брандмауэр представляет собой программно-аппаратный комплекс, выполняющий разграничение сетей и ограничивающий доступ из одной сети в другую. Термин брандмауэр (firewall) берет свое начало в строительной отрасли, где он означает сооружение, препятствующее распространению огня при пожаре из одной части здания в другую. Аналогичным образом, в компьютерных сетях брандмауэр ограничивает распространение вредного сетевого воздействия. Брандмауэры обычно устанавливаются в том месте, где внутренняя сеть соединяется с Интернетом. Весь трафик, входящий из Интернета или исходящий из внутренней сети проходит через брандмауэр. При этом брандмауэр может проанализировать трафик и выяснить, является ли он допустимым с точки зрения политики безопасности. Брандмауэры обычно строятся на базе двух элементов, которые оба занимаются фильтрацией и контролем трафика, но делают это по-разному:
Обычно обе технологии построения брандмауэров комбинируют. Утилита ipfw используется в FreeBSD для управления пакетным фильтром ipfw [1] и регулировщиком трафика dummynet, встроенными в ядро. Каждый пакет, обрабатываемый ядром, проходит через цепочку правил (ruleset). Цепочка представляет собой набор правил, на соответствие каждому из которых последовательно проверяются пакеты. Если соотвествие найдено, выполняется заданное действие, иначе проверяется следующее правило. И так до тех пор, пока не будет найдено соответствие или не проверятся все правила цепочки. В последнем случае срабатывает правило-по-умолчанию, которое определяет, как нужно поступить с теми пакетами, о которых никто не побеспокоился. Каждое правило в цепочке имеет номер от 1 до 65535. Номера не обязательно должны идти подряд, важно то, что правила с меньшим номером проверяются раньше правил с большим номером. Правило-по-умолчанию всегда имеет номер 65535. Например, в этом случае цепочка фильтрации содержит два правила. # ipfw list 00100 deny ip from 10.0.0.2 to any 65535 allow ip from any to any Первое правило отклоняет (deny) все пакеты, которые приходят от хоста с адресом 10.0.0.2. Второе правило, которое является правилом-по-умолчанию, разрешает проходить всем остальным. Цепочку правил можно модифицировать с помощью ipfw. Для этого утилите нужно указать, какое действие она должна выполнить с цепочкой: # ipfw действие [ число ] [ правило ] Здесь действие определяет действие, которое нужно выполнить; правило -- правило, которое будет добавлено в цепочку (при условии, что его нужно добавлять). Необязательное поле число указывает с каким именно правилом в цепочке выпоняется действие. Например, команда # ipfw add deny ip from 10.0.0.3 to any добавит правило deny ip from 10.0.0.3 to any в цепочку фильтрации. Номер правила будет выбран автоматически: он будет равен максимальному номеру правила (не считая правила-по-умолчанию) плюс шаг. Команда # ipfw add 100 deny ip from 10.0.0.3 to any будет работать точно также, но если правило с номером 100 уже существует, оно будет перезаписано. Общая структура правила такова: [ число ] [ set число ] [ prob вероятность ] действие [ log ] тело Обычно, большинство полей в правиле не указывают, и оно имеет более простую структуру: [ число ] действие тело
Каждое правило содержит условие (тело), при котором оно будет срабатывать, и действие (действие), которое говорит о том, как именно правило будет себя вести. Например, правило allow from any to any содержит действие allow, которое применяется ко всем пакетам (при условии, что пакет дошел до правила). Выбор пакетов определяется телом правила: from any to any. Таблица 2. Элементы правила ipfw
Простейшими действиями ipfw являются allow и deny. Действие allow разрешает прохождение пакета, и он больше не проверяется на соответствие ни одному условию, а deny, наоборот, приводит к тому, что пакет отбрасывается. При этом отправитель не получает никакой информации о судьбе пакета -- пакет считается просто потерявшимся. Если нужно чтобы отправитель знал о том, что пакет был уничтожен, следует использовать действие unreach host. Другие действия ipfw, такие как divert, fwd, pipe, queue, используются для организации трансляции адресов и регулирования полосы пропускания. Таблица 3. Действия в правилах ipfw
|
|