The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Раздаю интернет через MPD+FreeRADIUS , прикрываюсь IPFW+NATD"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Информационная безопасность (Public)
Изначальное сообщение [ Отслеживать ]

"Раздаю интернет через MPD+FreeRADIUS , прикрываюсь IPFW+NATD"  
Сообщение от KpeHDeJIb email(ok) on 17-Мрт-08, 00:04 
Вобщем что имею:
0. Шлюз - машина с FreeBSD 6.3
1. Есть внутренний интерфейс rl0 и внешний rl1 (белый IP)
2. На внутреннем интерфейсе сидит сетка из 15-20 машин
3. Для доступа к внешней сети клиенты создают VPN-туннель до шлюза, VPN-сервер MPD
4. Авторизация и учет трафика клиентов на совести FreeRADIUS

Что необходимо еще сделать:
0. Настроить IPFW так, чтобы клиенты могли получать инет только после создания VPN-туннеля
1. Необходимо открыть только "нужные" порты для доступа из внутренней сети во внешний мир
2. Необходимо закрыть все порты для внешнего мира (кроме 22)

Пункт 1 сделан чтобы ничего лишнего наружу не лезло, а только необходимый клиентам траффик.

Что я делаю:
0. На внутреннем интерфейсе по DHCP раздаю сетку 192.168.1.0/24
1. При создании VPN-туннеля клиенту дается IP из сетки 192.168.2.0/24 (ип привязан к логину)
2. Использую NATD, чтобы он натил сетку 192.168.2.0/24 (vpn-сеть) во внешний мир через rl1
3. Также NATD натит все что приходит с rl1 ко мне
4. IPFW:
4.0. делает диверт в NATD (по пунктам 2 и 3)
4.1. разрешает обратную петлю
4.2. разрешает, чтобы проходили уже установленные соединения
4.3. разрешает все на внутреннем интерфейсе rl0
4.4. разрешает устанавливать соединения по "нужным" портам от меня и ко мне

И вот собственно я никак не могу понять как настроить IPFW чтобы он делал то, что мне нужно, сейчас я делаю так:


%cat /etc/firewall.script
#!/bin/sh

fwcmd="/sbin/ipfw -q"

# внутренний интерфейс
int_if=rl0
# внешний интерфейс
ext_if=rl1

# внутренняя сеть
int_net=192.168.1.0/24
# vpn-сеть
vpn_net=192.168.2.0/24

# интересующие меня порты
allowed_ports=20,21,22,23,25,53,67,68,80,110,123,143,161,443,5190,5191,5192,5193

${fwcmd} -f flush

# всегда разрешать SSH коннект
${fwcmd} add 30000 pass tcp from any to me 22 keep-state

# отправляем 80 порт на Squid (прозрачно)
${fwcmd} add fwd 127.0.0.1,3128 tcp from ${vpn_net} to any 80 out via ${ext_if}

# разрешаем натить только с впн-подсетки
${fwcmd} add divert natd all from ${vpn_net} to any out via ${ext_if}
${fwcmd} add divert natd all from any to me in via ${ext_if}

# разрешаем траффик на обратной петле и закрываем 127/8
${fwcmd} add pass all from any to any via lo0
${fwcmd} add deny all from any to 127.0.0.0/8
${fwcmd} add deny all from 127.0.0.0/8 to any

# разрешаем проход уже установленным соединениям и "битым" пакетам
${fwcmd} add allow tcp from any to any established
${fwcmd} add allow all from any to any frag

# чтобы клиенты не ходили в инет без поднятия VPN-туннеля
# (еще надо бы запретить клиентов которые ручками установят адрес из 192.168.2.0/24)
${fwcmd} add deny all from ${int_net} to any via ${ext_if}
${fwcmd} add deny all from any to ${int_net} via ${ext_if}

# разрешаем любой траффик на внутреннем интерфейсе
${fwcmd} add allow all from any to any via ${int_if}

# самое интересное, открываем интересующие нас порты
${fwcmd} add allow all from me to any ${allowed_ports}
${fwcmd} add allow all from ${vpn_net} to any ${allowed_ports}
# а вот
${fwcmd} add allow all from any ${allowed_ports} to me
${fwcmd} add allow all from any ${allowed_ports} to ${vpn_net}

Собсно вопрос, я хочу открывать порты только "по требованию", т.е. чтобы когда я стучусь скажем на порт 80 какого-нибудь сервака, то устанавливается коннект и сервак может мне отвечать и IPFW пропускает это дело без добавления обратного правила (разрешать всем стучаться ко мне с 80 порта).

Я не пойму как это сделать вот почему, когда клиент поднимает VPN-туннель, получает  IP, пытается стукнуть на 80 порт куда нибудь вовне, то ответ приходит обратно на шлюз, а не к клиенту, я правильно рассуждаю? Получается если шлюз не принимает коннект с 80 порта на себя, то до клиента такой траффик не доходит, или как? Или NAT все таки кидает траффик обратно на клиента?

Вобщем помогите понять саму технологию обмена при таком подключении, либо дайте советы по улучшению текущей конфигурации. Заранее признателен и благодарен (в случае получения полезной информации готов кинуть WMR на пиво/сок :)

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Раздаю интернет через MPD+FreeRADIUS , прикрываюсь IPFW+NATD"  
Сообщение от mixa (??) on 17-Мрт-08, 11:27 
Многа букаф в фаере - ни асилил.
Что-то намудрили. Может для начала сделать проще? А там уж..
Можно так: стругаем файлик /etc/fw.conf

# Дивертим через внешний сетевой интерфейс rl1
add 50 divert 8668 ip from any to any via rl1
# Добавляем петлю
add 60 allow ip from any to any via lo0
add 61 deny ip from any to 127.0.0.0/8
add 62 deny ip from 127.0.0.0/8 to any
# Тут можно добавить по вкусу всяких там
add 67 deny icmp from any to any frag
# Разрешаем белый IP
add 100 allow ip from ваш.белый.реал.ип/32 to any
add 110 allow ip from any to ваш.белый.реал.ип/32
# Открываем доступ для впнщиков и фовардим на сквид
add 200 fwd 127.0.0.1,3128 ip from 192.168.2.0/24 to not me dst-port 80 in
add 210 allow ip from any to 192.168.2.0/24
add 220 allow ip from 192.168.2.0/24 to any
# Открываем доступ для локальной сети к серверу
add 300 allow ip from ваш.серый.ип.наRL0/32 to 192.168.1.0/24
add 310 allow ip from 192.168.1.0/24 to ваш.серый.ип.наRL0/32
# Рубим все остальное
add 65000 deny ip from any to any

ну и не забываем прописать в /etc/rc.conf строки

natd_interface="rl1"
firewall_enable="YES"
firewall_type="/etc/fw.conf"

А по поводу защиты портов рекомендую

# cd /usr/ports/
# make search name="portsentry"
Port:   portsentry-1.2
Path:   /usr/ports/security/portsentry
Info:   Port scan detection and active defense
Maint:  ports@FreeBSD.org
B-deps:
R-deps:
WWW:

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Раздаю интернет через MPD+FreeRADIUS , прикрываюсь IPFW+NATD"  
Сообщение от KpeHDeJIb email(ok) on 17-Мрт-08, 14:14 
Спасибо за внимание к моей небольшой проблеме :)

Можно вопрос, зачем вы делаете:

add 67 deny icmp from any to any frag

К примеру в правилах по умолчанию самой бсди есть пункт:
add allow all from any to any frag

К чему может привести отбрасыание фрагментированных пакетов? Я читал что в IPv6 фрагментация вообще не делается. Нужная ли она?

Заранее спасибо.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Раздаю интернет через MPD+FreeRADIUS , прикрываюсь IPFW+NATD"  
Сообщение от mixa (??) on 17-Мрт-08, 15:05 
>К чему может привести отбрасыание фрагментированных пакетов?

Я бы спросил по другому:
К чему может привести НЕотбрасыание фрагментированных пакетов? )))

При фрагментации IP-пакета только первый фрагмент содержит информацию о заголовке протокола верхнего уровня, например TCP. Соответственно, если пришло несколько не первых фрагментов, машина-адресат хранит их некоторое время в памяти, что может быть использовано нарушителем в атаках отказа от обслуживания.

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

Поскольку перекрывающиеся фрагменты — аномальное явление, многие ОС некорректно реагируют на него и пытаются собирать такие фрагменты в пакеты, что может привести к сбоям в операционной системе. Таким образом, фрагментированные пакеты могут применяться в атаках отказа от обслуживания.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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