openVPN vs Forefront или как обойти корпоративную защиту

19 Апр
2012

Случилось так, что я работаю в одной крупной компании. Компания эта дорожит своими тайнами. Поэтому между корпоративной сетью и интернетом стоит прокси, а именно Forefront.
Этот Forefront уже давно мешает мне жить, но раньше большой необходимости обходить защиту не было. Теперь же у меня появился VPS (virtual personal server) с Ubuntu, на котором у меня крутится несколько графических приложений. И доступ к ним мне нужен почти постоянно.
Для подключения к X-Server я выбрал xrdp, по нескольким причинам
  • Домашний комп работает под Win7.
  • Рабочий комп — под WinXP
  • Телефон — под Android (Есть много бесплатных RDP-клиентов)

Но при небольшом исследовании оказалось, что все порты кроме 80(HTTP) и 443(HTTPS) закрыты наглухо.

Первым делом решил поменять настройки xrdp.
sudo vim /etc/xrdp/xrdp.ini

Изменил порт на 443 в блоке globals
[globals]
bitmap_cache=yes
bitmap_compression=yes
port=443
crypt_level=low
channel_code=1


Перезапустил xrdp
sudo /etc/init.d/xrdp restart


Попробовал подключится. Результат отрицательный. Решил, что это опять Forefront виноват. Выдернул из компа пачкорд и подключил телефон в режиме модема. Результат тот же. Вернул настройки в прежнее состояние, перезапустил xrdp — подключение прошло успешно. Много думал…
Пришла мысль сделать до сервера VPN-тунель. Немного поиграв с поисковиками решил остановится на openVPN.

sudo apt-get install openvpn


При настройке руководствовался [1].

В результате получился вот такой конфиг

port 443
proto udp
dev tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh1024.pem
server 192.168.1.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 192.168.1.0 255.255.255.0"
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log-append openvpn.log
verb 4
mute 20
client-config-dir /etc/openvpn/ccd


Сгенерировал ключи и сертификаты как описано в [1]. Скопировал клиентский ключ(client.key), сертификат(client.crt) и сертификат центра сертификации (ca.crt) на рабочую машину.

Попробовал запустить openVPN-сервер

sudo /etc/init.d/openvpn start


openVPN-сервер запускаться отказался. Открыл лог, там оказалась ошибка

Note: Cannot open TUN/TAP dev /dev/net/tun: Permission denied (errno=13)


Стал искать на форуме VPS-хостера похожие проблемы. И нашёл. Оказалось, что TUN активируют только по запросу в службу поддержки. Недолго думая, написал в поддержку. TUN активировали быстро.

Опять попробовал запустить openVPN-сервер. На этот раз удачно.

Установил openVPN на рабочую машину и создал конфиг как описано в [2]

remote ***.***.***.*** 443
client
dev tun
proto udp
resolv-retry infinite # this is necessary for DynDNS
nobind
user vpnusr
group vpngr
persist-key
persist-tun
ca c:\\keys\\ca.crt
cert c:\\keys\\client.crt
key c:\\keys\\client.key
comp-lzo
verb 4
mute 20


Сначала попробовал подключится через телефон-модем. Подключение было успешно установлено.
На радостях отключил телефон-модем воткнул корпоративный пачкорд. Соединение не устанавливается, в логах таймаут операции.

Внимательно изучив конфиги пришёл к выводу, что надо изменить протокол на tcp.
Изменил
proto udp

на
proto tcp


Подключение прошло успешно, но после этого вообще вся сеть стала недоступна. Быстро сообразил, что проблема в настройках маршрутизации. Дело в том, что во внутренней сети используется подсеть 192.168.0.0
Перезагрузил рабочий комп. Изменил серверный конфиг. В результате он стал выглядеть так:

port 443
proto tcp
dev tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh1024.pem
server 10.10.1.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 10.10.1.0 255.255.255.0"
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log-append openvpn.log
verb 4
mute 20
client-config-dir /etc/openvpn/ccd


а клиентский конфиг так:

remote ***.***.***.*** 443
client
dev tun
proto tcp
resolv-retry infinite # this is necessary for DynDNS
nobind
user vpnusr
group vpngr
persist-key
persist-tun
ca c:\\keys\\ca.crt
cert c:\\keys\\client.crt
key c:\\keys\\client.key
comp-lzo
verb 4
mute 20


После этого наконец соединение было успешно установлено и я смог подключится к своей VPS-ке стандартным виндовым RDP-клиентом.

Ссылки:

1 http://www.odmin4eg.ru/2010/ubuntu-openvpn-server-nastrojka-soedinenie-filialov-set/
2 http://www.odmin4eg.ru/2010/openvpn-win-klient-openvpn-windows-client/
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх