Документация по ОС FreeBSD Воскресенье, 28.04.2024, 21:17
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » VPN

Как впустить удалённых сотрудников в локальную сеть офиса по зашифрованному каналу с помощью VPN (Часть 2) [2008]

Всё так, символичный линк (symlink, symbolic link) на директорию sys = /usr/src/sys/ (он в системе по умолчанию, а создаютсяони с помощью команды
ln -s имясуществующейдиры имялинка

), так что мы там, откуда выполним следующую команду для создания каталога исходников в соответствии с вышеуказанной конфигурацией ядра:
# config VPNGOD
Kernel build directory is ../compile/VPNGOD
Don't forget to do ``make cleandepend && make depend''

Идём в:
# cd ../compile/VPNGOD
# pwd
/usr/src/sys/amd64/compile/VPNGOD

Внимание, по умолчанию правило IPFW, который мы собираемся включить, выглядит так:
65535 deny ip from any to any

Т.е. все внешние сетевые подключения обрубит после перезагрузки и закроет ваш сервер от любых притязаний, даже хозяев. Если вы за консолью, это конечно никак не повлияет, если же вы работаете удалённо, позаботьтесь об этом заранее (например, создать скрипт с
allow all from any to any

перед 65535ым правилом на первое время).
Теперь, находясь в директории сырцов нового ядра, последуем просьбе указанной выше системой (это один из двух известных мне способов пересборки ядра, я пользуюсь только им):
# make cleandepend && make depend && make -j8 -B && make install && reboot

Этим набором команд, перечисленных через операторы "&&" - последовательное выполнение одного за другим, мы сразу всё стадо зайцев скосили и при отсутствии ошибок при сборке можем расслабиться, и как говориться при установке всем известных ОС - откинуться на спинку кресла (не купили к установке?). Все эти команды задают зависимости, собирают модули, компилируют их аж в 8 потоков (-j8), но по возможности с последовательной синхронизацией (-B), устанавливают всё в /boot/kernel и перезагружают систему автоматом по окончании.
Если что, смотрите гугл или используйте make buildkernel команду (собсно,снова гугл по хэндбукам). Число потоков и параметр "-B" используйте только на мощных машинах, на слабых их вообще лучше опустить (просто make).
Новое ядро после перезагрузки поприветствует вас как-то так:
Copyright (c) 1992-2008 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 7.0-RELEASE #0: Tue May 20 09:53:05 MSD 2008
******@ns1.*******.ru:/usr/src/sys/amd64/compile/VPNGOD

Если этого не произошло, значит вы либо не подключили каких-то важных устройств (чаще всего управление питанием - новый acpi/старый apic, и контроллеры ж/д). Можно загрузиться из старого (предшествующего) ядра:
# boot /boot/kernel.old

подробнее об этом.

Иначе, всё путём, идём дальше.
Мои сетевые карты (и loopback девайс (; настроены так:
# ifconfig
bce0: flags=8843 metric 0 mtu 1500
options=1bb
ether **********
inet 218.22.33.218 netmask 0xfffffff8 broadcast 218.22.33.223
media: Ethernet autoselect (100baseTX )
status: active
bce1: flags=8943 metric 0 mtu 1500
options=1bb
ether **********
inet 192.168.0.2 netmask 0xffffff00 broadcast 192.168.0.255
media: Ethernet autoselect (100baseTX )
status: active
lo0: flags=8049 metric 0 mtu 16384
inet 127.0.0.1 netmask 0xff000000

Где bce0 (218.22.33.218/29) смотрит в провайдера, а тот подглядывает во внешний мир, а bce1 (192.168.0.2/24) - в локальную корпоративную сеть.
Сервер может являться как шлюзом для ЛВС предприятия, так и просто vpn-сервером для удалённых клиентов. У меня он ещё и проксирует http-https-ftp запросы, держит сайт, статистику по snmp (cacti), а так же ftp (proftpd) с веб-мордой (proftpdadmin).
В rc.conf сетевые настройки и firewall выглядят следующим образом:
# cat /etc/rc.conf

(..опустил ненужное..)
# настройки сети
gateway_enable="YES"
defaultrouter="218.22.33.217"
hostname="vpn.bulyzhnik.ru"
ifconfig_bce0="inet 218.22.33.218 netmask 255.255.255.248"
ifconfig_bce1="inet 192.168.0.2 netmask 255.255.255.0"

# ручной маршрут, в том случае,если у вас будет 
# всё-таки другая vpn-подсеть авось да пригодится
# route_lnet="-net 10.1.1/29 218.22.33.218"
# static_routes="lnet"

# включаем фаер, включаем логгирование
firewall_enable="YES"
firewall_script="/etc/rc.fire"
firewall_logging="YES"

А скрипт фаера выглядит так:
# cat /etc/rc.fire

# Firewall rules Written by Marc Silver (marcs@draenor.org)
# http://draenor.org/ipfw # Freely distributable
# add to rc.conf: firewall_script="/etc/rc.fire"

fwcmd="/sbin/ipfw"

# Force a flushing of the current rules before we reload.
$fwcmd -f flush

 eint="bce0"
 eip="218.22.33.218"
 iip="192.168.0.2"
 iint="bce1"

 m0="255.255.0.0"
 m1="255.255.255.0"
 m2="255.255.255.248"

 n1="192.168.0.0"
 n2="218.22.33.216"
 vpn="192.168.0.248"

 # pass all through loopback device
 ${fwcmd} add pass all from any to any via lo0

 # deny other 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

 # anti-hack from outside
 ${fwcmd} add deny ip from me to any in recv bce0

 # deny netbios
 ${fwcmd} add deny ip from any 137-139 to any
 ${fwcmd} add deny ip from any to any 137-139

 # SSH for localhost allow
 ${fwcmd} add allow tcp from me 22 to any
 ${fwcmd} add allow tcp from any to me 22

 # DNS transfers to world
 ${fwcmd} add allow udp from me 53 to any
 ${fwcmd} add allow udp from any to me 53

 # DNS, NTP, SNMPx2, DNSs
 ${fwcmd} add allow udp from me to any 53,123,161
 ${fwcmd} add allow udp from any 53,123,161 to me

 # VPN-connect - это порт для даемона MPD, на него поступают запросы на авторизацию
 ${fwcmd} add allow tcp from me 1723 to any keep-state
 # GRE for MPD5 - в этот протокол инкапсулируются все пакеты установившегося соединения VPN
 ${fwcmd} add allow gre from any to any
 # VPN-LAN - разграничение двух сеток: подсети VPN и общей LAN,
 # чтобы отдельно для каждой определять правила доступа. 
 # здесь разрешаем междусобойчик этих двух сеток
 ${fwcmd} add allow all from ${vpn}/29 to ${n1}/24{1-231,240-254}
 ${fwcmd} add allow all from ${n1}/24{1-231,240-254} to ${vpn}/29

 # PROXY - это для прозрачного прокси-сервера, на моей машине он до кучи сервисов
 ${fwcmd} add fwd ${iip},3348 tcp from ${n1}/24 to any http via ${iint}
 ${fwcmd} add fwd ${iip},3348 tcp from ${n1}/24 to any https via ${iint}
 ${fwcmd} add fwd ${iip},3348 tcp from ${n1}/24 to any ftp ${iint}

 # Allow forced local PROXY - обычная прокся
 ${fwcmd} add allow tcp from ${n1}/24 to ${iip} 3348 via ${iint} keep-state
 ${fwcmd} add allow tcp from not ${n1}/24 to ${eip} 3348 via ${eint} keep-state

 # FTP & HTTP from this server to world - для самого сервера, выход в мир - качать порты, например
 ${fwcmd} add allow tcp from me to any 20,21,80,443 keep-state
 # Passive FTP backports
 ${fwcmd} add allow tcp from me to any 49151-65535 keep-state

 # FTP & HTTP to LAN
 ${fwcmd} add allow tcp from ${oip} 20,21,80,443 to ${n1}/24 via ${iint} keep-state
 ${fwcmd} add allow tcp from ${oip} 49152-65534 to ${n1}/24 via ${iint} keep-state

 # HTTP ----------local site------------ - у меня тут ещё и сайт есть на серваке (: apache)
 ${fwcmd} add allow tcp from ${eip} 80 to any keep-state

 # NATd - вот правило транслирования адресов для двух сетей разделены
 ${fwcmd} nat 123 config ip ${eip}
 ${fwcmd} add nat 123 ip from ${vpn}/29 to not ${n1}/24{1-231,240-254}
 ${fwcmd} add nat 123 ip from ${n1}/24{1-231,240-249} to any
 ${fwcmd} add nat 123 ip from any to ${eip} via ${eint}

 # далее идут правила для всех клиентов, обслуживаемых через NAT: запросы из LAN в мир

 # ICMP (echo-reply,destunreach,echo-req,time exceeded,tracert)
 ${fwcmd} add deny icmp from any to any frag
 ${fwcmd} add allow icmp from any to any icmptypes 0,3,4,8,10,11,30

 # FTP & SSH from LAN
 ${fwcmd} add allow tcp from ${n1}/24{1-231,240-254} to any 20,21,22,80,443 keep-state
 # Passive FTP backports
 ${fwcmd} add allow tcp from ${n1}/24{1-231,240-254} to any 49151-65535

 # MAIL (SMTP,POP3,IMAP,IMAPs, POP3s)
 ${fwcmd} add allow tcp from ${n1}/24{1-231,240-254} to any 25,110,143,993,995 keep-state

 # ICQ
 ${fwcmd} add allow tcp from ${n1}/24{1-231,240-254} to any 5190 keep-state

 # internal VPN-LAN to OUT
 ${fwcmd} add allow ip from any to ${vpn}/29

 # немного шейперов канала - режу скорость
 # shapes for administry
 ${fwcmd} pipe 1005 config bw 50Mbits/s
 ${fwcmd} pipe 1006 config bw 2Mbits/s
 ${fwcmd} pipe 1007 config bw 10Mbits/s

 ${fwcmd} table 54 flush
 ${fwcmd} table 54 add 192.168.0.0/24{1-10,105,246} 1005
 ${fwcmd} table 54 add 192.168.0.0/24{11-104,106-245,246-254} 1006
 ${fwcmd} table 54 add 218.63.40/24 1007
 ${fwcmd} add pipe tablearg ip from any to 'table(54)'
 ${fwcmd} add pipe tablearg ip from 'table(54)' to any

 # shapes for users
 ${fwcmd} add pipe 5 ip from any to ${n1}/24
 ${fwcmd} add pipe 5 ip from ${n1}/24 to any
 ${fwcmd} pipe 1 config bw 2Mbits/s

 # log - всё, что не пропустилось, в лог (/var/log/security по умолчанию)
 ${fwcmd} add deny log logamount 3000 all from any to any

Это не совсем оптимизированный список правил, к тому же, перегруженный - т.к. у меня на машине не один сервис, и она служит шлюзом для локальных клиентов - пропускает, проксируя, http/ftp трафик, а остальное транслирует с помощью ipfw nat - как видно из правил, это все icmp запросы (например, ping и tracert), почту и icq. Опять же, эта конфигурация рабочая и может пригодится для многих новичков, которым всё и сразу. Для каждого двустороннего правила есть краткий заголовок, думаю, все знают англицкий и аббревиатуры протоколов и даемонов (:
 


Источник: http://www.lissyara.su/?id=1680
Категория: VPN | Добавил: oleg (06.06.2008) | Автор: roygbiv
Просмотров: 1396 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024