Posts Tagged ‘ VPN

Соединяем два сервера FreeBSD по IPSec

Забегая немного вперед скажу что задачей было соединить 2 сервера с FreeBSD для безопасной передачи данных через Интернет.
Для полноты картины задам внешние и внутренние IP адреса для обоих серверов
srv1 — 177.111.22.33
srv2 — 100.200.100.200
Я начал с обновления обоих серверов с помощью команд

freebsd-update fetch install
portsnap fetch update
portupgrade -arR

но это необязательная процедура. После обновления нам нужно включить поддержку IPSec в ядре так как по умолчанию она выключена. Читать полностью

Доступ в интернет через SSH тунель

Client — Нету инета, зато есть связь по ssh с Server
Server — Есть инет и работает sshd
Схематически наше хитрое соединение с интернетом будет выглядеть так:
Client -> Encrypted SSH Tunnel -> Server -> Internet
Сначала о настройке Server
На сервере ssh (через который собираемся ходить в инет) конфиг sshd_config у меня выглядит таким образом:

root@server:~# grep -v '\(^#\|^$\)' /etc/ssh/sshd_config
Port 22
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
UsePrivilegeSeparation yes
KeyRegenerationInterval 3600
ServerKeyBits 768
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
MaxAuthTries 2
RSAAuthentication yes
PubkeyAuthentication yes
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
X11Forwarding no
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
Banner /root/.signature
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes
root@server:~#

Если у вас без правки конфига заработает — замечательно. Если нет — смотрите что нетак с настройками sshd, правьте и перезапускайте sshd. Читать полностью

Установка VTUN в OpenBSD 4.6

Сегодня нарисовалась задача создать VTUN тунель с одного из удаленных шлюзов в офис. На удаленном шлюзе стоит OpenBSD 4.6. Раз плюнуть, было моей первой мыслью …. но не тут то было!

Засада номер раз! Моему удивлению небыло предела, когда оказалось что ни в портах, ни в пакаджах нету VTUN! Да уж, дает о себе знать розбалованость линуксом, где в репозитариях всякого барахла десятками тысяч лежит 🙂 Ну мы же не из робкого десятка поэтому меня это не остановило! Полез с офсайта качать сырци и компилить … но вот незадача. На ./configure вываливалась ошибка что нету библиотек lzo. Собрал из OpenBSD-шных портов archives/lzo версии 1.08 — таже фигня! Не видит хедеров хоть ты тресни! Пришлось снести с помощью make deinstall установленную из портов версию и играться со скачаной последней версией исходников lzo-2.05 с офсайта и сборкой руцями с помощью make. На удивление они собрались с первого пинка без каких либо проблем.

После этого еще раз пробуем запустить make vtun-a командой:

root@gw:~/vtun-3.0.2# ./configure --with-lzo-headers=/usr/local/include/lzo/ --with-lzo-lib=/usr/local/lib/

И в таком варианте configure отработал без ошибок!

Но вторая засада ожидала меня на следующем же шагу!

На команду make install кричит:

root@gw:~/vtun-3.0.2# make install
gcc -g -O2  -I/usr/include/openssl -I/usr/include/ssl -I/usr/include/ssl -I/usr/include/ssl  -c main.c
main.c: In function `main':
main.c:63: error: `VTUN_CONFIG_FILE' undeclared (first use in this function)
main.c:63: error: (Each undeclared identifier is reported only once
main.c:63: error: for each function it appears in.)
main.c: In function `write_pid':
main.c:217: error: `VTUN_PID_FILE' undeclared (first use in this function)
*** Error code 1

Stop in /root/vtun-3.0.2 (line 92 of /usr/share/mk/sys.mk).
root@gw:~/vtun-3.0.2#

Читать полностью

Настройка PPTP соединения в Debian GNU Linux

Если не все, то многие знают что такое VPN. А также понимают насколько это хорошо и удобно. Ну вот сие благо пришло и в мой дом 🙂 Попросил на работе чтобы дали мне возможность из дому попадать в рабочую сеть. И вуаля … имею листик с такими вот настройками:

  • Тип соединения — PPTP
  • PPTP сервер — mymegawork.kiev.ua
  • Имя пользователя — worker13
  • Пароль — some_password

Итак, что мы из этого видим? Собственно, видим все что нам нужно — тип соединения, куда подключаемся и как авторизируемся.
Читать полностью

Соединяем сети между Debian и OpenBSD средствами OpenVPN

Без всяких вступлений и тп перейду сразу к делу! Соединяю 2 маршрутизатора. Один под управлением OpenBSD 4.6, а второй с Debian Lenny.
Задача:
увидеть внутреннюю сеть за сервером OpenBSD

Настройки сети на OpenBSD:

root@openek:~# ifconfig
lo0: flags=8049 mtu 33200
priority: 0
groups: lo
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
xl0: flags=8843 mtu 1500
lladdr 00:50:04:00:44:8d
description: INET
priority: 0
groups: egress
media: Ethernet autoselect (100baseTX full-duplex)
status: active
inet6 fe80::250:4ff:fe00:448d%xl0 prefixlen 64 scopeid 0x1
inet 10.0.1.111 netmask 0xffffff00 broadcast 10.0.1.255
nfe0: flags=8843 mtu 1500
lladdr 00:13:8f:9a:c4:52
description: LAN
priority: 0
media: Ethernet autoselect (100baseTX full-duplex)
status: active
inet 192.169.100.2 netmask 0xffffff00 broadcast 192.169.100.255
inet6 fe80::213:8fff:fe9a:c452%nfe0 prefixlen 64 scopeid 0x2
enc0: flags=0<> mtu 1536
priority: 0
pflog0: flags=141 mtu 33200
priority: 0
groups: pflog
root@openek:~#

За OpenBSD есть клиенты, тестить будем на некоем 192.169.100.10 — тоесть всеми силами пытаемся попасть в сетку 192.169.100.0/24 и в частности …. проверить работоспособность соединения на некоей внутресетевой машине 192.169.100.10

Убедимся что машинка видна с OpenBSD сервера:

root@openek:~# ping 192.169.100.10
PING 192.169.100.10 (192.169.100.10): 56 data bytes
64 bytes from 192.169.100.10: icmp_seq=0 ttl=128 time=0.282 ms
64 bytes from 192.169.100.10: icmp_seq=1 ttl=128 time=0.287 ms
64 bytes from 192.169.100.10: icmp_seq=2 ttl=128 time=0.261 ms
--- 192.169.100.10 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.261/0.276/0.287/0.022 ms
root@openek:~#

Итак, подготавливаем все необходимое для создания VPN на OpenBSD.

  • конечно же должно быть включено forwarding …. на всяк случай проверяем:
root@openek:/etc/openvpn# sysctl |grep forward
net.inet.ip.forwarding=1
net.inet.ip.mforwarding=0
net.inet6.ip6.forwarding=0
net.inet6.ip6.mforwarding=0
root@openek:/etc/openvpn#

Если не включено (net.inet.ip.forwarding=0) то разкомментировать эту опцию в /etc/sysctl.conf  и присвоить значение 1. После перезагрузки опция применится. Без перезагрузки эта опция включается от рута командой:

root@openek:/etc/openvpn# sysctl net.inet.ip.forwarding=1
net.inet.ip.forwarding: 1 -> 1
root@openek:/etc/openvpn#
  • OpenVPN я собирал из исходников (если необходимо — установите/обновите порты!)
root@openek:~# cd /usr/ports/net/openvpn
root@openek:/usr/ports/net/openvpn# make install clean
  • Создал директорию для конфигов и ключей /etc/openvpn
root@openek:~# mkdir /etc/openvpn
  • Перешел в эту директорию и сгенерил ключ для авторизации:
root@openek:~# cd /etc/openvpn

root@openek:/etc/openvpn# openvpn --genkey --secret /etc/openvpn/auth.key

Ключ должен получиться в таком духе:

root@openek:/etc/openvpn# cat auth.key
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
4e36924d67c8c75df3481776cafc1214
6f9d1ca10858ef708c05d7ef437b7f94
5c0d5d012c1c1467f20355448752e08f
6e64ed241898b6b345e3e75efb64fe76
4224b349bea70c341900ff2b3c259232
5a816deaa7ce3c7dece4edd42edc5585
294e941550b5eb14a6aabf0ba56c9edb
cbea81590f3fdf29b5867eda66b43175
5a8db2d381b027e977e17b76ee215777
fc360af042c515f916634751f9e021e6
7cbc386ac9a71d24cef5127c697a3087
e6702d813c12da1c48d49724b968f7a8
1b910bf4e4f8347df773d2de8d35c988
d0bdec0c80e093a8c8e7f6b5aa41ec4c
d99b2fd1882ec4f83ed8ef1866c74950
84816d6338662618eb72da9506eab493
-----END OpenVPN Static key V1-----
root@openek:/etc/openvpn#
  • рихтуем конфиг до вида:
root@openek:/etc/openvpn# cat openbsd-debian.conf
proto udp
dev tun3
port 5000
comp-lzo
ping 15
verb 3
user _openvpn
group _openvpn
remote 10.0.1.13
ifconfig 10.3.0.2 10.3.0.10
#route 192.168.0.0 255.255.255.0 10.3.0.10
secret /etc/openvpn/auth.key
auth MD5
cipher DES-CBC
tun-mtu 1500
root@openek:/etc/openvpn#

Добавляем в /etc/rc.local такие строчки для автоматического поднятия туннеля OpenVPN:

### <- VPN to Debian -> ###
if [ -x /usr/local/sbin/openvpn ]; then
echo -n ' OpenVPN to Debian'; (sleep 3; /usr/local/sbin/openvpn --config /etc/openvpn/openbsd-debian.conf) &
fi

Ну все …. OpenBSD готов принимать гостей 🙂

Подготавливаем Debian для коннекта к OpenBSD

  • Устанавливаем OpenVPN
black:~# apt-get install openvpn
  • Добавляем пользователя openbsd
black:~# useradd openvpn -s /usr/sbin/nologin
  • Рихтуем конфиг по образу и подобию только что настроенного в OpenBSD
black:/etc/openvpn# cat debian-openbsd.conf
proto udp
dev tun
port 5000
comp-lzo
ping 15
verb 3
user openvpn
group openvpn
remote 10.0.1.111
ifconfig 10.3.0.10 10.3.0.2
route 192.169.100.0 255.255.255.0 10.3.0.2
secret /etc/openvpn/auth.key
auth MD5
cipher DES-CBC
tun-mtu 1500
black:/etc/openvpn#
  • После этого копируем ключ auth.key на Debian любым доступным вам способом. Я закинул с OpenBSD на Debian простым scp. Так как у меня открыто ходка на Debian по ssh под root то закидывал прямо в директорию /etc/openvpn
root@openek:~# scp /etc/openvpn/auth.key root@10.0.1.13:/etc/openvpn
  • Перезапускаем сервис openvpn
black:~# /etc/init.d/openvpn restart

Проверяем что поднялся интерфейс:

black:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:11:2f:63:15:1e
inet addr:10.0.1.13  Bcast:10.0.1.255  Mask:255.255.255.0
inet6 addr: fe80::211:2fff:fe63:151e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:169731145 errors:0 dropped:0 overruns:0 frame:0
TX packets:106196175 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3414915304 (3.1 GiB)  TX bytes:1627861190 (1.5 GiB)
Interrupt:17 Base address:0xc400

lo        Link encap:Local Loopback
inet addr:127.0.0.1  Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING  MTU:16436  Metric:1
RX packets:3684864 errors:0 dropped:0 overruns:0 frame:0
TX packets:3684864 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:925925961 (883.0 MiB)  TX bytes:925925961 (883.0 MiB)

tun0 Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.3.0.10  P-t-P:10.3.0.2  Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
RX packets:2 errors:0 dropped:0 overruns:0 frame:0
TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:168 (168.0 B)  TX bytes:168 (168.0 B)

black:~#

Пингуем сервер OpenBSD по адресу туннеля:

black:~# ping 10.3.0.2
PING 10.3.0.2 (10.3.0.2) 56(84) bytes of data.
64 bytes from 10.3.0.2: icmp_seq=1 ttl=255 time=0.923 ms
64 bytes from 10.3.0.2: icmp_seq=2 ttl=255 time=0.710 ms
64 bytes from 10.3.0.2: icmp_seq=3 ttl=255 time=0.904 ms
^C
--- 10.3.0.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.710/0.845/0.923/0.101 ms
black:~#

И, наконец, пингуем машину из внутрисети за OpenBSD

black:~# ping 192.169.100.10
PING 192.169.100.10 (192.169.100.10) 56(84) bytes of data.
64 bytes from 192.169.100.10: icmp_seq=1 ttl=127 time=1.08 ms
64 bytes from 192.169.100.10: icmp_seq=2 ttl=127 time=0.936 ms
64 bytes from 192.169.100.10: icmp_seq=3 ttl=127 time=0.975 ms
^C
--- 192.169.100.10 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2009ms
rtt min/avg/max/mdev = 0.936/0.997/1.080/0.060 ms
black:~#

При любых проблемах со связью, не забывайте о настройках pf/iptables …. может чегото залочили???

Удачи!