The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Конфигурирование ipfilter в FreeBSD (ipfilter freebsd firewall)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: ipfilter, freebsd, firewall,  (найти похожие документы)
From: Михаил Сгибнев <mixa(@).dreamcatcher.ru> Date: 2006-09-12 11:04:30 Subject: Конфигурирование ipfilter в FreeBSD

Начальная настройка



Для использования ipf в FreeBSD серьезной модификации требуют только два файла - rc.conf и rc.network:

Изменения, вносимые в rc.conf:



Изменения, вносимые в rc.network:

В файле rc.network я добавил следующий код в подпрограмме network_pass_1 () перед конфигурацией интерфейсов:



В подпрограмме network_pass_2 () я добавил этот код:



Я также добавил код для ipnat в network_pass_3 () после оригинального natd-кода:



Чтобы получить основные правила фильтрации, я выполнил:

# mkfilters > /etc/ipf.rc

В результате мы получаем следующие правила:

#
block in log quick from any with ipopts
block in log quick proto tcp from any to any with short
pass out on ed1 all head 150
block out from 127.0.0.0/8 to any group 150
block out from any to 127.0.0.0/8 group 150
block out from any to 192.168.1.110/32 group 150
pass in on ed1 all head 100
block in from 127.0.0.0/8 to any group 100
block in from 192.168.1.110/32 to any group 100
block in from 192.168.0.1/0xffffff00 to any group 100
pass out on fxp0 all head 250
block out from 127.0.0.0/8 to any group 250
block out from any to 127.0.0.0/8 group 250
block out from any to 192.168.0.1/32 group 250
pass in on fxp0 all head 200
block in from 127.0.0.0/8 to any group 200
block in from 192.168.0.1 to any group 200
block in from 192.168.1.110/0xffffff00 to any group 200


Создаем правила фильтрации



Исходные данные:

На моей машине я использую интерфейс fxp0 для внутренней сети. Внутренняя сеть - сеть класса C в диапазоне 192.168.0.x с сетевой маской 255.255.255.0. Внешняя сеть - Интернет - подключен через ISDN - роутер с вызовом по требованию. Так же на него возложены функции nat. Мой сервер FreeBSD подключен к этому ISDN - роутеру через интерфейс ed1 с ip-адресом 192.168.1.110. ISDN - роутер имеет внутренний ip-адрес 192.168.1.111, который будет оттранслирован в адрес, динамически назначаемый провайдером в течение сеанса связи. Я использую ipnat, входящий в состав ipfilter, для переадресации пакетов, предназначенный для Интернета к внешнему интерфейсу. В этой конфигурации трансляция сетевого адреса происходит дважды; сначала на сервере и затем в ISDN - роутере.

Как конфигурировать ipnat?

Сперва надо определиться, какую политику безопасности мы выберем:



Разрешающая позиция легко осуществима. Если Вы не даете никаких правил ipfilter, все у вас так и будет. Правила, сгенерированные сценарием mkfilters основаны на немного расширенной разрешающей позиции. Разрешающая позиция крайне небезопасна.

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

Вот несколько полезных советов по генерации правил:



Правила фильтрации для разрешающей политики:

Основные правила были добавлены при вызове mkfilters. Также можно добавить несколько правил, предотвращающих спуфинг.

Итак, окончательный набор правил выглядит так:

# сгенерировано mkfilters
block in log quick from any with ipopts
block in log quick proto tcp from any to any with short
block in log quick all with opt lsrr
block in log quick all with opt ssrr
#-------------------------------------------------------
# разрешаем loopback
pass in quick on lo0 all
pass out quick on lo0 all
#-------------------------------------------------------
pass out on ed1 all head 150
block out from 127.0.0.0/8 to any group 150
block out from any to 127.0.0.0/8 group 150
block out from any to 192.168.1.110/32 group 150
#-------------------------------------------------------
pass in on ed1 all head 100
block in from 127.0.0.0/8 to any group 100
block in from 192.168.1.110/32 to any group 100
block in from 192.168.0.1/24 to any group 100
#-------------------------------------------------------
pass out on fxp0 all head 250
block out from 127.0.0.0/8 to any group 250
block out from any to 127.0.0.0/8 group 250
block out from any to 192.168.0.1/32 group 250
#-------------------------------------------------------
pass in on fxp0 all head 200
block in from 127.0.0.0/8 to any group 200
block in from 192.168.0.1/32 to any group 200
block in from 192.168.1.110/24 to any group 200


Правила фильтрации для запрещающей политики:

Разрешаемые сервисы:

Сначала мы полностью доверяем внутренним пользователям, ограничивать их будем "на лету".

Составим список сервисов, которые сразу разрешаем:



Пишем правила:

#--------------------------------------------------------------------------
# ed1 - external interface
# fxp0 - internal interface
#--------------------------------------------------------------------------
# First, nasty pakets which we don't want near us at all
# pakets which are too short to be real except echo replies on lo0
pass in log quick on lo0 proto icmp from 127.0.0.1/8 to 127.0.0.1/8 with short
block in log quick all with short
block in log quick all with opt lsrr
block in log quick all with opt ssrr
#--------------------------------------------------------------------------
# loopback packets left unmolested
pass in log quick on lo0 all
pass out log quick on lo0 all
#--------------------------------------------------------------------------
# Group setup:
# 100 incoming ed1
# 150 outgoing ed1
# 200 incoming fxp0
# 250 outgoing fxp0
#--------------------------------------------------------------------------
block in log body on ed1 all head 100
block out log body on ed1 all head 150
#--------------------------------------------------------------------------
block in log on fxp0 all head 200
block out log on fxp0 all head 250
#--------------------------------------------------------------------------
# incoming ed1 traffic - group 100
# 1) prevent localhost spoofing
block in log quick from 127.0.0.1/32 to 192.168.0.0/24 group 100
block in log quick from 127.0.0.1/32 to 192.168.1.0/24 group 100
block in log quick from any to 127.0.0.1/8 group 100
#--------------------------------------------------------------------------
# 2) deny pakets which should not be seen on th internet (paranoid)
block in log quick from 10.0.0.0/8 to any group 100
block in log quick from any to 10.0.0.0/8 group 100
block in log quick from 172.16.0.0/16 to any group 100
block in log quick from any to 172.16.0.0/16 group 100
block in log quick from 192.168.0.0/16 to any group 100
block in log from any to 192.168.0.0/16 group 100
# 3) implement policy
# allow incoming ftp-data
pass in log quick proto tcp/udp from any to 192.168.1.1/24 keep state group 100
# if nothing applies, block and return icmp-replies (unreachable and rst)
block return-icmp(net-unr) in proto udp from any to any group 100
block return-rst in log proto tcp from any to any group 100
#--------------------------------------------------------------------------
# outgoing ed1 traffic - group 150
# Setup outgoing DNS
pass out log quick proto tcp/udp from any to 212.40.0.10 port = 53 keep state group 150
pass out log quick proto tcp/udp from any to 212.40.5.50 port = 53 keep state group 150
# allow outgoing http-service
pass out log quick proto tcp from any to any port = 80 flags S/SA keep state keep frags group 150
# allow outgoing smtp traffic
pass out log quick proto tcp from 192.168.1.1/24 to any port = 25 flags S/SA keep state group 150
# allow outgoing pop3 traffic
pass out log quick proto tcp from 192.168.1.1/24 to any port = 110 flags S/SA keep state group 150
# allow outgoing ftp traffic
pass out log quick proto tcp/udp from 192.168.1.1/24 to any port = ftp keep state group 150
pass out log quick proto icmp from any to any keep state keep frags group 150
#--------------------------------------------------------------------------
# incoming traffic on fxp0 - group 200
#--------------------------------------------------------------------------
# 1) prevent localhost spoofing
block in log quick from 127.0.0.0/8 to any group 200
block in log quick from 192.168.0.1/32 to any group 200
block in log quick from 192.168.1.110/24 to any group 200
pass in log quick from any to any group 200
#--------------------------------------------------------------------------
# outgoing traffic on fxp0 - group 250
#--------------------------------------------------------------------------
block out log quick from 127.0.0.0/8 to any group 250
block out quick from any to 127.0.0.0/8 group 250
block out log quick from any to 192.168.0.1/32 group 250
pass out log quick from any to nay group 250
#--------------------------------------------------------------------------


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

Оригинал статьи:http://www.free-x.ch/pub/ipf-conf-en.html Перевод: Irish


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру