Доброго времени суток!
У меня небольшая локальная сетка с выходом в инет, аутентификация по 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 (очень интересно)?
А если с фаерволлом?Жду вашей помощи! Любые советы / замечания / критика приветствуются.
>Доброго времени суток!
>У меня небольшая локальная сетка с выходом в инет, аутентификация по 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. Форвардинг (кажется) включается или выключается только глобально, т.е. ДЛЯ ВСЕХ. поэтому без файрвола не обойдешся...
Спасибо 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Может кому пригодится. :)