Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Linux и FreeBSD » Общий по FreeBSD » pf(+nat) и jail - как разграничить доступ jail-ов в инет

Ответить
Настройки темы
pf(+nat) и jail - как разграничить доступ jail-ов в инет

Аватара для brag

Пользователь


Сообщения: 78
Благодарности: 8

Профиль | Отправить PM | Цитировать


Вобщем есть 2 интерфейса, скажем em0 и tun0
em0 смотрит в сетку, tun0 смотрит в инет
em0 имеет 2 ip, скажем 10.10.0.41 и 10.10.0.42
на 42 сидит jail с чем-то.
как разграничивать доступ этого jail-a куда-то,если подсеть 10.10.0.0/24 используется еще несколькими другими серверами/десктопами?
вот так не пашет:
nat on tun0 from 10.10.0.0/24 to any -> tun0
pass out quick proto tcp from 10.10.0.42 to any port 53 flags S/SA modulate state
block quick log-all all

в итоге блочатся все пакеты, тк правило pass out.. не действует.
пакеты валят не от 10.10.0.42, а от ip,который присвоен tun0
если убрать правило nat, тогда пакеты валят корректно от 10.10.0.42.
от других машин в подсети 10.10.0.0/24 пакеты тоже валят корректно, хоть с натом, хоть без.
как это обойти?
на ipfw+natd все работает отлично:
ipfw add divert natd from any to any via tun0
ipfw add pass tcp from 10.10.0.42 to any 53
ipfw add pass tcp from any 53 to 10.10.0.42 established
ipfw add deny log from any to any
Тут пакет четко идет через правила
Или все же слесть с pf?
ipfw не плохой firewall, но natd юзерский мне совсем не нравится...

Отправлено: 15:42, 16-06-2007

 

Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


А если так
nat on tun0 from 10.10.0.0/24 to any -> tun0
block in all
pass in quick on em0 proto tcp from 10.10.0.42 to any port 53 keep state

Отправлено: 17:15, 18-06-2007 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для brag

Пользователь


Сообщения: 78
Благодарности: 8

Профиль | Отправить PM | Цитировать


Спасибо, но не помогло.
nat локально даные валит от того интерфейса и ip, с которого должен фактически пойти запрос.те в даном случаи от ip-шника,который принадлежит tun0,а не 10.10.0.42
те пакеты идти в даном примере не будут вобще никуда и не от куда
надо как-то изменить первые правила, чтобы запросы шли от 10.10.0.42

Отправлено: 18:22, 18-06-2007 | #3


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Поправьте если не прав. Т.е вам нужно чтоб пакеты идущие от 10.10.0.42 должны идти мимо нат?

Отправлено: 19:14, 18-06-2007 | #4


Аватара для brag

Пользователь


Сообщения: 78
Благодарности: 8

Профиль | Отправить PM | Цитировать


нет. мне надо,чтобы пакеты, идущие от 10.10.0.42 могли быть отфильтрованы правилами.
Вот так,как тут:
ipfw add divert natd from any to any via tun0
ipfw add pass tcp from 10.10.0.42 to any 53
ipfw add pass tcp from any 53 to 10.10.0.42 established
ipfw add deny log from any to any

в итоге, пакет идужщий от 10.10.0.42 будет проверен на предмет назначения и порта и послан NAT-у.
пакет,идущий(от ната?) с порта 53 на 10.10.0.42 с флажком established будет пропущен.
Можт в последовательностях я ошибаюсь,но работает. те, вешаем jail на 10.10.0.42(алиас это), и фильтруем его,как хотим.если нат вырубить,то jail не сможет пойти в инет,даже если firewall вобще отключен,в то время,как хостовая тачка сможет

Отправлено: 14:14, 20-06-2007 | #5


Аватара для misher

Пользователь


Сообщения: 103
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


Если я не ошибаюсь (больше полугода не трогал фаервол), все правила прогоняются несколько раз на каждом интерфейсе (до ната и после), в результате, на последней проверке (выход из tun0 после нат), 42 айпишник уже затерт и под правило pass не попадает, т.е Вам нужно перед block
добавить правило:
pass any quick on tun0

Если заработает, начинайте ограничивать это правило.

-------
Где линукс пингвины висят
там черти БСД продолжают работать


Отправлено: 15:24, 25-06-2007 | #6


Аватара для brag

Пользователь


Сообщения: 78
Благодарности: 8

Профиль | Отправить PM | Цитировать


Так пропустить пакет от jail-а без проблем. надо сделать так,чтобы jail мог итдти только на определенные хосты/порты

Отправлено: 16:25, 25-06-2007 | #7


Аватара для misher

Пользователь


Сообщения: 103
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


По раннее предложенному варианту jail мог ходить на любой порт интерфейса tun0, но в остальных случаях он мог ходить только на 53 порт.

Вот такой вариант более ограничивающий:
nat on tun0 from 10.10.0.0/24 to any -> tun0
pass out quick proto tcp from 10.10.0.42 to any port 53 flags S/SA modulate state
pass out quick on tun0 from (tun0) to any keep state#Походу можно заменить на ниже преведенную строку
pass out on tun0 proto tcp from 10.10.10.42 to any port 53 keep state#кажется заменяет предыдущую строку
block quick log-all all



Поищите в интернете вот эту книжку:
Dev Guide - Building Firewalls with OpenBSD and PF
Вот полезный отрывок из нее:
Packets sent from NATed hosts appear as outbound packets on
the firewall interface used in nat rules. Their source address and source
port are changed to those of the firewall’s interface. Therefore, they are
matched by block out or pass out rules on that interface, e.g.:
# NAT hosts in the private network ($prv_ad) on the
# interface connecting the firewall to the Internet
# ($ext_if) using the firewall’s external address
# ($ext_ad)
nat on $ext_if from $prv_ad to any -> $ext_ad
pass out on $ext_if proto tcp from $prv_ad to any

-------
Где линукс пингвины висят
там черти БСД продолжают работать


Отправлено: 18:23, 26-06-2007 | #8


Аватара для brag

Пользователь


Сообщения: 78
Благодарности: 8

Профиль | Отправить PM | Цитировать



Спасибо,но в даном примере любой jail сможет ходить в инет куда угодно, правило pass out quick proto tcp from 10.10.0.42 to any port 53 flags S/SA modulate state будет проигнорировано в даном случаи и пакет от любого с jail-ов пройдет через правило pass out quick on tun0 from (tun0) to any keep state
Правило pass out on tun0 proto tcp from 10.10.10.42 to any port 53 keep state тоже будет проигнорировано и в даном примере первое(pass) и это правило можно смело закоментировать
Это происходит потому,что nat сначала меняет адрес отправителя с 10.10.0.42 на тот,что на tun0 и потом уже пакет(с новым адресом) передается правилам фильтрации. Такого не происходит,если отправляет удаленный чувак.тогда все ок.
Если же закоментировать nat,тогда фаер начнет рубить пакеты от jail-ов и тогда будет смысл в правилах
pass out quick proto tcp from 10.10.0.42 to any port 53 flags S/SA modulate state
pass out on tun0 proto tcp from 10.10.10.42 to any port 53 keep state
Но инета jail-ы все равно не получат по понятным причинам,таким же,как и машины в локалке.
Книжку поищу,мож что-то там вычитаю

Цитата:
nat on $ext_if from $prv_ad to any -> $ext_ad
pass out on $ext_if proto tcp from $prv_ad to any
ХЗ,может в OpenBSD это работает,в Free
pass out on $ext_if proto tcp from $prv_ad to any
до лампочки,тк пакет захочет идти не от $prv_ad, а от $ext_if

Отправлено: 02:40, 28-06-2007 | #9



Компьютерный форум OSzone.net » Linux и FreeBSD » Общий по FreeBSD » pf(+nat) и jail - как разграничить доступ jail-ов в инет

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
FreeBSD - syslog в jail WhitePangolin Общий по FreeBSD 2 01-12-2009 15:47
FreeBSD - Как в jail подсчитывается место на диске? Igor_I Общий по FreeBSD 0 05-11-2008 23:04
FreeBSD - Jail и natd Orfan Общий по FreeBSD 2 27-08-2008 14:23
ssh из chroot-песочницы (не-jail) mar Общий по FreeBSD 8 04-12-2004 14:11
jail mar Общий по FreeBSD 14 08-04-2004 08:43




 
Переход