Webmin на практике. Базовые знания по работе с IPFW через Webmin

 

Использование фаервола IPFW в Webmin

Что требуется для того, чтобы иметь возможность установить и использовать файервол IPFW в Webmin?

I. Иметь начальные знания о сетях.

II.  Иметь знания об операционной системе FreeBSD

III. Иметь знания о настройке Firewall

1. Устанавливаем FreeBSD. Вариант MINIMAL.

2. Выставляем сетевые правильные сетевые настройки (Настройка сети в FreeBSD)

3. Настраиваем make.conf (Настройка файла make.conf)

3. Открываем SSH (Настройка SSH в FreeBSD)

4. Установка портов

5. Установка MC

По умолчанию в ОС FreeBSD файервол не включен. Поэтому для того, чтобы его включить, требуется произвести некоторые настройки в операционной системе. Есть два варианта, как включи ть файрвол IPFW в ОС. Первый вариант - софтовый (программный), включается с помощью подгрузки модуля ядра. Но я рекомендую всё-таки использовать вариант, когда брэндмауер включается в ядре. Это надёжней и правильней, а также уменьшает нагрузку на систему. Итак, первый вариант мы пропустим, и сразу перейдём ко второму варианту. Перед компиляцией, опишем всё, что нужно сделать с системой :)

6. Установка исходных кодов ядра

7. Включение FIREWALL в ядре системы.

Первоначально вносим следующие строки в файл конфигурации ядра:

options IPFIREWALL

options IPFIREWALL_VERBOSE

options IPFIREWALL_VERBOSE_LIMIT=5

options IPFIREWALL_FORWARD

options IPDIVERT

options DUMMYNET

options IPFIREWALL_DEFAULT_TO_ACCEPT

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

8. Устанавливаем Webmin

9. Начинаем работать с пунктом в Webmin Сеть=>BSD Firewall

10. При первом заходе вам потребуется его включить. Если при открытии этой вкладки появляются правила, которые в системе уже существуют, то жмём кнопку Reset Firewall. Также не забываем поставить галочку активировать firewall при загрузке.

11. После того, как файервол обнулён, в каталоге /usr/local/etc/webmin/ipfw появляются файл конфигурации файрвола и исполнительные файлы для старта и остановки.

12. После проведённых выше манипуляций в файле /etc/rc.conf появляется надпись ipfw_enable="YES", что означает включить файрвол IPFW при загрузке

13. Добавляем строчки в /etc/rc.conf:

firewall_enable="YES"

firewall_type=/usr/local/etc/webmin/ipfw/ipfw.rules

Теперь файрвол полностью включен, и файл правил находится в файле /usr/local/etc/webmin/ipfw/ipfw.rules. Для того, чтобы применять изменения правил firewall, то есть включать или выключать брэндмауер, в каталоге /usr/local/etc/webmin/ipfw есть два исполняющих файла: start.pl и stop.pl. Для удобства можно сделать символическую ссылку на этот каталог из домашнего каталога, чтобы всегда иметь под рукой управление файерволом.

Составление правил файрвола

1. Я не пользуюсь веб-интерфейсом Webmin для составления правил, хотя можно воспользоваться и им. Вот как примерно выглядит список правил видимый в интерфейсе:


Но мы пойдём другим путём, более рациональным и точным, исключающим ошибки. В IPFW есть очень интересная функция - log logamount, которая позволяет видеть, какие пакеты проходят через определённое правило. Здесь стоит заметить, что правила срабатывают по принципу отлова пакетов сверху вниз по цепочке правил. То есть, сначала обрабатывается правило, стоящее выше и если тип пакетов не подходит под правило, то пакет проверяется следующим правилом, стоящим ниже в списке. Итак, в самом начале у нас есть два разрешающих правила, которые создаются по умолчанию, если всё что было сделано выше так, как написано. Начинаем создавать правила.

2. Есть некоторые цепочки правил, которые идут по умолчанию, поэтому сначала мы включим их

-f flush # Обнуление всех правил, которые есть в системе перед загрузкой
#add 00100 check-state # Об этом мы поговорим позже
add 00200 allow ip from any to any via lo0 # Эти правила (200,300,400) проверяют localhost
add 00300 deny ip from any to 127.0.0.0/8
add 00400 deny ip from 127.0.0.0/8 to any

После этих правил, нам надо разрешить доступ администратору к серверу. Для этого делаем следующее: в разрешающем всё правиле прописываем log logamount 10000 в строчку правила и смотрим, какие пакеты проходят.

add 65534 allow log logamount 100000 ip from any to any

Перезапускаем файрвол - /usr/local/etc/webmin/ipfw/start.pl

Далее, для того, чтобы видеть как летают пакеты запускаем просмотр файла /var/log/security

tail -f /var/log/security

Нам откроется чёрный экран, и будет видно, как проходят пакеты через это последнее правило. Первым дело отыскиваем цепочки - доступ к серверу администратора. После отлова их копируем в файл /usr/loca/etc/ipfw/ipfw.rules и перезапускаем файервол.

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

#!/bin/sh

tail -f /var/log/security | colorize

colorize - это утилита, которая может давать нам красивые логи :) устанавливается из портов - /usr/ports/sysutils/colorize/ . Желательно её установить.

Получаем:

#Admin
add 00410 allow TCP from 1.2.3.4 to 1.2.3.5 dst-port 22,10000 in via lnc0
add 00420 allow TCP from 1.2.3.5 22,10000 to 1.2.3.4 out via lnc0

После того, как мы перезапустим файрвол, обращения с админской машины к серверу в файле /var/log/security пропадут, так как в правилах нет указания отображаться в этом файле с помощью команды log logamount 10000 (или другая цифра, сколько сообщений показать). Всё, дальше начинаем строить файрвол, по рекомендациям и правилам специалистов

3. Чтобы файрвол настраивался легко и всё было видно надо в каждом правиле указать log logamount. Итак, имеем:

add 01000 deny log logamount 100000 ip from any to 10.0.0.0/8 in via tun0
add 01110 deny log logamount 100000 ip from any to 172.16.0.0/12 in via tun0
add 01120 deny log logamount 100000 ip from any to 192.168.0.0/16 in via tun0
add 01130 deny log logamount 100000 ip from any to 0.0.0.0/8 in via tun0
add 01140 deny log logamount 100000 ip from any to 169.254.0.0/16 in via tun0
add 01150 deny log logamount 100000 ip from any to 240.0.0.0/4 in via tun0
add 01160 deny icmp from any to any frag
add 01170 deny log icmp from any to 255.255.255.255 in via tun0
add 01180 deny log icmp from any to 255.255.255.255 out via tun0
add 01190 deny log logamount 100000 ip from 10.0.0.0/8 to any out via tun0
add 01200 deny log logamount 100000 ip from 172.16.0.0/12 to any out via tun0
add 01210 deny log logamount 100000 ip from 192.168.0.0/16 to any out via tun0
add 01220 deny log logamount 100000 ip from 0.0.0.0/8 to any out via tun0
add 01230 deny log logamount 100000 ip from 169.254.0.0/16 to any out via tun0
add 01240 deny log logamount 100000 ip from 224.0.0.0/4 to any out via tun0
add 01250 deny log logamount 100000 ip from 240.0.0.0/4 to any out via tun0
#add 01260 allow tcp from any to any established


В общем, это стандартный набор. Данный сервер подключен к Интернет посредством ADSL по PPPoE, и интерфейсом, который смотрит в Интернет является tun0.

В конце уже можно поставить запрещающее правило: add 65534 deny log logamount 10000 ip from any to any. Теперь файрвол будет показывать какие пакеты блокируются, а не пропускаются и мы выборочно можем разрешить доступ с того или иного ресурса.

Особо хочется рассказать о правилах:

add 00100 check-state

add 01260 allow tcp from any to any established

Эти правила существуют для того, чтобы они работали динамически. То есть, если пакет прошёл хотя бы одно из правил сверху вниз  от check-state до estableshed, то ему будет открыт доступ динамически, без прописывания обратной цепочки. Собственно, здесь думаю всё понятно. Вторым важным моментом является параметр keep-state. Мы можем написать правило, поставить в конце параметр keep-state, и если любой пакет попадёт под это разрешающее правило, то ему откроется всё, что потребует данное соединение. Например, у нас стоит брэндмауер на основе FreeBSD, который регулирует доступ к серверу Samba. И если будет запрос к серверу Samba по 139 порту, то откроются все необходимые цепочки для 139 порта, которое затребует подключающийся хост. Однако, это будет только если в правиле установлен параметр keep-state. Если что-то непонятно, велкам ту форум, где можно будет определить и дописать статью, чтобы было понятно.

На этом думаю всё :) Дана вся информация, чтобы специалист средней руки смог работать с файрволом IPFW через Webmin. После того, как вы опишите правила в файле /usr/local/etc/webmin/ipfw/ipfw.rules они появятся в веб-интерфейсе Webmin. А там уже по аналогии можно будет составлять правила, которые вам нужны. Кроме функций allow, deny, check-state-establesed, keep-state я здесь не рассматривал. Но их на самом деле очень много и в будущем, возможно, будет написан справочный материал по IPFW. Это описание такие функций, как divert, pipe и так далее. Пока что здесь описаны только основы, открытие и закрытие доступа.

Удачной работы с IPFW.




Ссылки:

К содержанию

© Copyright 2004-2017 - CMS Made Simple
Сайт работает на CMS Made Simple version 1.4.1

© Все печеньки Break-people.ru принадлежат авторам проекта.

Яндекс цитирования Рейтинг@Mail.ru Яндекс.Метрика