URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 1361
[ Назад ]

Исходное сообщение
"Форвардинг между _отдельными_ интерфейсами FreeBSD(+)"

Отправлено BugZ , 19-Май-04 00:41 
Доброго времени суток!
У меня небольшая локальная сетка с выходом в инет, аутентификация по VPN:

gw# ifconfig
xl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
        options=3<rxcsum,txcsum>
        inet 172.16.97.1 netmask 0xfffffffc broadcast 172.16.97.3
        ether 00:01:02:6f:8d:2c
        media: Ethernet autoselect (100baseTX)
        status: active
xl1: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
        options=3<rxcsum,txcsum>
        inet 192.168.0.1 netmask 0xffff0000 broadcast 192.168.255.255
        ether 00:04:79:67:7c:a4
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
xl2: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
        options=3<rxcsum,txcsum>
        ether 00:04:79:67:7c:6e
        media: Ethernet autoselect (none)
        status: no carrier
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255
        ether 00:a0:c9:4b:86:05
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet 127.0.0.1 netmask 0xff000000
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1492
        inet 83.237.28.253 --> 10.2.255.2 netmask 0xffffff00
        Opened by PID 62
tun1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1492
        inet 10.0.1.1 --> 10.0.1.254 netmask 0xffffffff
        Opened by PID 346
tun2: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1492
        inet 10.0.1.1 --> 10.0.1.81 netmask 0xffffffff
        Opened by PID 349

Пользователи находятся в 192.168.*.*, tun0 создаёт adsl, tunX - клиентские vpn-соединения.

Всё было замечательно, пока я не попробовал на клиентской машине поставить gateway: 192.168.0.1 и поиграться с traceroute по ip.

Форвардинг включен.

Выяснилось, что при опущенном впн соединении пользователь имеет доступ по цепочке:

Tracing route to 194.17.16.106 over a maximum of 30 hops

  1     1 ms    <1 ms    <1 ms  192.168.0.1
  2    21 ms    17 ms    17 ms  10.2.255.2
  3    16 ms    16 ms    15 ms  195.34.61.6

При поднятом впн (правильное состояние) маршрут пакета таков:

  1     2 ms     1 ms     4 ms  10.0.1.1
  2    21 ms    17 ms    17 ms  10.2.255.2
  3    16 ms    16 ms    15 ms  195.34.61.6

Насколько я понимаю мне нужно запретить форвардинг между xl1(192.168.0.1) и tun0(10.0.255.2).

А теперь вопросы:

Как правильнее запретить несанкционированный доступ?
Как сделать это без фаерволла (запрет форвардинга между отдельными интерфейсами?) И есть ли он в FreeBSD (очень интересно)?
А если с фаерволлом?

Жду вашей помощи! Любые советы / замечания / критика приветствуются.



Содержание

Сообщения в этом обсуждении
"Форвардинг между _отдельными_ интерфейсами FreeBSD(+)"
Отправлено fantom , 20-Май-04 13:34 
>Доброго времени суток!
>У меня небольшая локальная сетка с выходом в инет, аутентификация по VPN:
>
>
> gw# ifconfig
>xl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
>        options=3<rxcsum,txcsum>
>        inet 172.16.97.1 netmask 0xfffffffc
>broadcast 172.16.97.3
>        ether 00:01:02:6f:8d:2c
>        media: Ethernet autoselect (100baseTX)
>
>        status: active
>xl1: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
>        options=3<rxcsum,txcsum>
>        inet 192.168.0.1 netmask 0xffff0000
>broadcast 192.168.255.255
>        ether 00:04:79:67:7c:a4
>        media: Ethernet autoselect (100baseTX <full-duplex>)
>        status: active
>xl2: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
>        options=3<rxcsum,txcsum>
>        ether 00:04:79:67:7c:6e
>        media: Ethernet autoselect (none)
>
>        status: no carrier
>fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>        inet 10.0.0.1 netmask 0xffffff00
>broadcast 10.0.0.255
>        ether 00:a0:c9:4b:86:05
>        media: Ethernet autoselect (100baseTX <full-duplex>)
>        status: active
>lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
>        inet 127.0.0.1 netmask 0xff000000
>
>tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1492
>        inet 83.237.28.253 --> 10.2.255.2 netmask 0xffffff00
>        Opened by PID 62
>
>tun1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1492
>        inet 10.0.1.1 --> 10.0.1.254 netmask 0xffffffff
>        Opened by PID 346
>
>tun2: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1492
>        inet 10.0.1.1 --> 10.0.1.81 netmask 0xffffffff
>        Opened by PID 349
>
>
>Пользователи находятся в 192.168.*.*, tun0 создаёт adsl, tunX - клиентские vpn-соединения.
>
>Всё было замечательно, пока я не попробовал на клиентской машине поставить gateway:
>192.168.0.1 и поиграться с traceroute по ip.
>
>Форвардинг включен.
>
>Выяснилось, что при опущенном впн соединении пользователь имеет доступ по цепочке:
>
>Tracing route to 194.17.16.106 over a maximum of 30 hops
>
>  1     1 ms    
><1 ms    <1 ms  192.168.0.1
>  2    21 ms    17
>ms    17 ms  10.2.255.2
>  3    16 ms    16
>ms    15 ms  195.34.61.6
>
>При поднятом впн (правильное состояние) маршрут пакета таков:
>
>  1     2 ms    
> 1 ms     4 ms  10.0.1.1
>
>  2    21 ms    17
>ms    17 ms  10.2.255.2
>  3    16 ms    16
>ms    15 ms  195.34.61.6
>
>Насколько я понимаю мне нужно запретить форвардинг между xl1(192.168.0.1) и tun0(10.0.255.2).
>
>А теперь вопросы:
>
>Как правильнее запретить несанкционированный доступ?
>Как сделать это без фаерволла (запрет форвардинга между отдельными интерфейсами?) И есть
>ли он в FreeBSD (очень интересно)?
>А если с фаерволлом?
>
>Жду вашей помощи! Любые советы / замечания / критика приветствуются.

1. Натить только с ВПН-овских интерфейсов.
2. Форвардинг (кажется) включается или выключается только глобально, т.е. ДЛЯ ВСЕХ. поэтому без файрвола не обойдешся...


"Проблема решена."
Отправлено BugZ , 23-Май-04 16:33 
Спасибо fantom за отзывчивость.
НАТ я трогать не стал, он осуществляется силами ppp, и разбираться мне не захотелось.
Насчёт форвардинга - удивительно, я в инете обнаружил, что в линухе форвардинг между отдельными интерфейсами возможнен, так чем же мы (пользователи FreeBSD) хуже? Надеюсь, они сделают такую фичу (если её до сих пор нет).
Решилось всё с помощью фаерволла (ipfw)
Три правила (кроме решения этой проблемы фаерволл более никакой полезной нагрузки не несёт):
# ipfw add 00500 allow all from 192.168.0.0/16 to 192.168.0.1 via xl1
# ipfw add 00501 allow all from 192.168.0.1 to 192.168.0.0/16 via xl1
# ipfw add 01000 deny ip from 192.168.0.0/16 to any via xl1
1 - разрешить весь входящий трафик от пользователя к роутеру через интерфейс xl1 (на котором "висят" пользователи).
2 - разрешить весь исходящий трафик от роутера к пользователю через интерфейс xl1 (на котором "висят" пользователи).
3 - запретить весь остальной (нежелательный) входящий трафик через интерфейс xl1

Может кому пригодится. :)