Как настроить свой уютненький VPN сервер на Ubuntu 13.04 Server

Привет, эта статья будет также относится к циклу статей по безопасности и направлена на защиту ваших личных данных. Ранее я уже писал, как организовать SSH тунель, а после была статья как настроить анонимный и не кеширующий прокси сервер squid.

Сегодня будем мутить VPN сервер что вообще идеальный вариант для безопасной передачи данных, организации зашифрованного тунеля и для сокрытия своей личности и своего реального IP-адреса. Сразу скажу, у меня таких серверов несколько и все они работают 24/7 и когда мне надо, я открываю файл-контейнер зашифрованный с помощью TrueCrypt, достаю от туда сертификаты и соединяюсь с нужным мне сервером.

К примеру часто мне приходится работать из сетей которые защищены всякими там джуниперами и чекпоинтами, так вот я точно знаю что админы в этих сетях мониторят и логируют весь трафик, плюс у них закрыты сайты типа Тор, Фейсбук, порево и прочие няшки. VPN решает этот вопрос в два клика

Готовим сервер

Сразу меняем пароль руту и ставим все последние обновления:

passwd root
aptitude update && aptitude upgrade
passwd root
aptitude update && aptitude upgrade

Устанавливаем пакет:

aptitude install openvpn
aptitude install openvpn

Переходим в папку со скриптами:

cd /usr/share/doc/openvpn/examples/easy-rsa/2.0/
cd /usr/share/doc/openvpn/examples/easy-rsa/2.0/

Правим переменные:

vim ./vars
...
export KEY_SIZE=1024
export CA_EXPIRE=3650
export KEY_EXPIRE=3650
export KEY_COUNTRY="IL"
export KEY_PROVINCE="IL"
export KEY_CITY="Tel-Aviv"
export KEY_ORG="www.linuxspace.org"
export KEY_EMAIL="[email protected]"
...
vim ./vars
...
export KEY_SIZE=1024
export CA_EXPIRE=3650
export KEY_EXPIRE=3650
export KEY_COUNTRY="IL"
export KEY_PROVINCE="IL"
export KEY_CITY="Tel-Aviv"
export KEY_ORG="www.linuxspace.org"
export KEY_EMAIL="[email protected]"
...

Инициализируем переменные и чистим папку keys:

. ./vars
. ./clean-all
. ./vars
. ./clean-all

Генерируем сертификаты:

# корневой сертификат
./build-ca  
 
# сертификат сервера       
./build-key-server server
 
# ключ Диффи Хельман    
./build-dh          
 
openvpn --genkey --secret ./keys/ta.key
# корневой сертификат
./build-ca	

# сертификат сервера		
./build-key-server server

# ключ Диффи Хельман	
./build-dh			

openvpn --genkey --secret ./keys/ta.key

Перенесем полученные сертификаты в рабочую папку:

cp ./keys/ca.crt /etc/openvpn
cp ./keys/server.crt /etc/openvpn
cp ./keys/server.key /etc/openvpn
cp ./keys/dh1024.pem /etc/openvpn
cp ./keys/ta.key /etc/openvpn
cp ./keys/ca.crt /etc/openvpn
cp ./keys/server.crt /etc/openvpn
cp ./keys/server.key /etc/openvpn
cp ./keys/dh1024.pem /etc/openvpn
cp ./keys/ta.key /etc/openvpn

Создадим сертификаты пользователей:

./build-key-pkcs12 vpn.windows
./build-key-pkcs12 vpn.windows

После этого в папке /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/ появятся ваши сертификаты vpn.windows.* и другие.

Копируем пример конфига:

zcat /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf
zcat /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf

Правим конфиг:

vim /etc/openvpn/server.conf
vim /etc/openvpn/server.conf

Bсе настройки по-умолчанию нас устроят, меняем только те что ниже:

local <your_local_ip_address>
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
client-to-client
tls-auth ta.key 0
port 1194</your_local_ip_address>
local <your_local_ip_address>
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
client-to-client
tls-auth ta.key 0
port 1194</your_local_ip_address>

где 8.8.8.8 DNS Гугла, хотя можно использовать и свой, если есть.

Теперь замутим настройки iptables:

vim /etc/rc.local
vim /etc/rc.local

Добавляем строки до exit 0

iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Включаем форвардинг пакетов:

vim /etc/sysctl.conf
..
net.ipv4.ip_forward=1
..
vim /etc/sysctl.conf
..
net.ipv4.ip_forward=1
..

Делаем рестарт:

reboot
reboot

Cерверная часть готова.
Сертификаты можно найти тут:

/usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/
/usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/
ls -l
total 84
-rw-r--r-- 1 root root 1391 Aug 20 12:46 ca.crt
-rw------- 1 root root  916 Aug 20 12:46 ca.key
-rw-r--r-- 1 root root  245 Aug 20 12:46 dh1024.pem
-rw-r--r-- 1 root root 4134 Aug 20 12:46 server.crt
-rw------- 1 root root  920 Aug 20 12:46 server.key
-rw------- 1 root root  636 Aug 20 12:47 ta.key
-rw-r--r-- 1 root root 4026 Aug 20 12:48 vpn.windows.crt
-rw-r--r-- 1 root root  737 Aug 20 12:48 vpn.windows.csr
-rw------- 1 root root  916 Aug 20 12:48 vpn.windows.key
-rw------- 1 root root 3109 Aug 20 12:48 vpn.windows.p12
ls -l
total 84
-rw-r--r-- 1 root root 1391 Aug 20 12:46 ca.crt
-rw------- 1 root root  916 Aug 20 12:46 ca.key
-rw-r--r-- 1 root root  245 Aug 20 12:46 dh1024.pem
-rw-r--r-- 1 root root 4134 Aug 20 12:46 server.crt
-rw------- 1 root root  920 Aug 20 12:46 server.key
-rw------- 1 root root  636 Aug 20 12:47 ta.key
-rw-r--r-- 1 root root 4026 Aug 20 12:48 vpn.windows.crt
-rw-r--r-- 1 root root  737 Aug 20 12:48 vpn.windows.csr
-rw------- 1 root root  916 Aug 20 12:48 vpn.windows.key
-rw------- 1 root root 3109 Aug 20 12:48 vpn.windows.p12

Настройка клиента под Windows

Скачать клиент можно тут:
– для 64Бит
– для 32бит

Установите клиент в систему:
Untitled

В папке C:\Program Files\OpenVPN\config создадим файлик config.vpn и пропишем туда следующее:

remote <remote_ip_address> 1194
client
dev tun
ping 10
comp-lzo
proto udp
tls-client
tls-auth ta.key 1
remote-cert-tls server
pkcs12 vpn.windows.p12
verb 3
pull</remote_ip_address>
remote <remote_ip_address> 1194
client
dev tun
ping 10
comp-lzo
proto udp
tls-client
tls-auth ta.key 1
remote-cert-tls server
pkcs12 vpn.windows.p12
verb 3
pull</remote_ip_address>

Туда же положите нужные ключики:
– vpn.windows.p12
– ta.key

Untitled_6

Некоторые вместо p12 пользуются связку ключей сa.crt, vpn.windows.key и vpn.windows.crt, тогда конфиг будет выглядеть так:

remote <remote_ip_address> 1194
client
dev tun
ping 10
comp-lzo
proto udp
tls-client
tls-auth ta.key 1
remote-cert-tls server
ca ca.crt
cert vpn.windows.crt
key vpn.windows.key
verb 3
pull</remote_ip_address>
remote <remote_ip_address> 1194
client
dev tun
ping 10
comp-lzo
proto udp
tls-client
tls-auth ta.key 1
remote-cert-tls server
ca ca.crt
cert vpn.windows.crt
key vpn.windows.key
verb 3
pull</remote_ip_address>

А вместо ключа vpn.windows.p12 в папку C:\Program Files\OpenVPN\config ложим ключи сa.crt, vpn.windows.key и vpn.windows.crt

Запустите клиент от имени администратора:
Untitled_2

И нажимайте коннект:
Untitled_7

Проверить свой IP можно для примера тут:
Untitled_10