Найти тему
Dark Web

Поднимаем свой VPN туннель

Все настройки были проделаны на машине с осью:
Distributor ID: Centos
Description: Centos 7.0
Release: 7.0

Подключение к серверу:

Подключаемся к нашей машине по протоколу SSH, указываем в строке Host Name (or IP address) адрес нашего сервера и нажимаем Open, для подключения я использую PuTTY и SecureCRT.

Учитывайте для покупки VPS нужна почта, помните урок Росса и пользуйтесь анонимной почтой.

Установка OpenVPN:

Подключаем репозитарий epel к Centos 7.0

yum -y install epel-release

Устанавливаем OpenVPN

yum -y install openvpn

Создаем сертификаты:

Для работы сервера openvpn необходимо создать соответствующие сертификаты. Для этого воспользуемся программой Easy-RSA, которая генерирует сертификаты с помощью утилиты openssl.

Создаем директорию ключей

mkdir /etc/openvpn/keys

Устанавливаем архиватор zip

yum -y install unzip zip

Устанавливаем wget

yum -y install wget

Скачиваем и устанавливаем утилиту Easy-RSA

cd /etc/openvpn/keys
wget https://github.com/OpenVPN/easy-rsa/archive/master.zip

Распаковываем

unzip master.zipcd /etc/openvpn/keys/easy-rsa-master/easyrsa3

Создаем структуру публичных ключей PKI ключей

mv vars.example vars./easyrsa init-pki

Создаем удостоверяющий центр СА

./easyrsa build-ca

Note: using Easy-RSA configuration from: ./vars
Generating a 2048 bit RSA private key
.+++
.........................................................................+++
writing new private key to '/etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/private/ca.key.GKwCGouHpy'
Enter PEM pass phrase: Тут необходимо придумать пароль для подписания сертификата
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:vpn
CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/ca.crt

Не забудьте указанный вами пароль. Его нужно будет вводить каждый раз при создании нового сертификата openvpn.

Мы получили 2 ключа:
/etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/private/ca.key
/etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/ca.crt

Первый ключ секретный, его нужно оставить на сервере и никому не отдавать.
Второй — открытый, его мы будем вместе с пользовательскими сертификатами передавать клиентам.

Создаем запрос сертификата для сервера без пароля с помощью опции nopass, иначе придется вводить пароль с консоли при каждом запуске сервака

./easyrsa gen-req server nopass

Note: using Easy-RSA configuration from: ./vars
Generating a 2048 bit RSA private key
........................+++
..............................................................................................+++
writing new private key to '/etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/private/server.key.vCUQuueIih'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [server]:
Keypair and certificate request completed. Your files are:
req: /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/reqs/server.req
key: /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/private/server.key

Подписываем запрос на получение сертификата у нашего СА

Note: using Easy-RSA configuration from: ./vars
You are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.

Request subject, to be signed as a server certificate for 3650 days:

subject=
commonName = server
Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
Using configuration from /etc/openvpn/keys/easy-rsa-master/easyrsa3/openssl-1.0.cnf
Enter pass phrase for /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :PRINTABLE:'server'
Certificate is to be certified until Sep 10 00:31:21 2025 GMT (3650 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/issued/server.crt

В процессе работы скрипта вводим пароль от CA, который указывали раньше и отвечаем на вопрос yes. Мы получили подписанный удостоверяющим центром сертификат для сервера — /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/issued/server.crt

Генерируем ключ Диффи-Хелмана

./easyrsa gen-dh

По завершению работы скрипта получаем файл dh сертификата — /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/dh.pem.

Копируем в папку /etc/openvpn все необходимые для работы openvpn сервера ключи

cp pki/ca.crt /etc/openvpn/ca.crt
cp pki/dh.pem /etc/openvpn/dh.pem
cp pki/issued/server.crt /etc/openvpn/server.crt
cp pki/private/server.key /etc/openvpn/server.key

Создаем ключ для клиента openvpn

./easyrsa gen-req client nopass ./easyrsa sign-req client client

Процедура аналогична созданию сертификата для сервера. Так же вводим пароль, отвечаем yes. В результате получаем подписанный сертификат клиента:

/etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/issued/client.crt
/etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/private/client.key

Настраиваем OpenVPN:

Скачиваем и устанавливаем редактор nano

yum install nano

Создаем фаил конфигурации openvpn

yum install nano

port 16785 # используем нестандартные порты для работы
proto udp # протокол может быт и tcp, если есть необходимость в этом
dev tun

ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh.pem

server 10.0.0.0 255.255.255.0 # подсеть для туннеля, может быть любой
route 192.168.20.0 255.255.255.0 # указываем подсеть, к которой будем обращаться через vpn
push "route 192.168.20.0 255.255.255.0" # передаем маршрут клиентам

ifconfig-pool-persist ipp.txt # файл с записями соответствий clinet - ip
client-to-client # позволяет клиентам openvpn подключаться друг к другу
client-config-dir /etc/openvpn/ccd # директория с индивидуальными настройками клиентов

keepalive 10 120
comp-lzo
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
verb 0

Создаем необходимые директории

mkdir /etc/openvpn/ccd && mkdir /var/log/openvpn

Создаем файл конфигурации клиента в папке, указанной в параметре client-config-dir

nano /etc/openvpn/ccd/client

iroute 192.168.20.0 255.255.255.0

Запускаем сервер

systemctl start openvpn@server

Отключаем SELinux

nano /etc/sysconfig/selinux
меняем значение
SELINUX=disabled

Чтобы изменения вступили в силу перезагружаемся

reboot

После перезагрузки снова запускаем сервер

systemctl start openvpn@server

Проверяем запустился или нет

netstat -tulnp | grep 16785

udp 0 0 0.0.0.0:16785 0.0.0.0:* 7605/openvpn

Сервер запустился на указанном порту.
Добавляем сервер openvpn в автозагрузку

systemctl enable openvpn@server

Настраиваем firewalld:

Произведём установку rpm-пакета, содержащего службу firewalld и выполним запуск соответствующей службы:

yum install firewalld
systemctl unmask firewalld
systemctl enable firewalld
systemctl start firewalld

Открываем нужный UPD порт

firewall-cmd --zone=public -add-port=16785/udp --permanent

Перехагружаем правила

firewall-cmd --reload

Настраиваем OpenVPN client для Windows:

Заходим на официальную страницу openvpn client и скачиваем клиента под windows.

Переходим в папку C:\Program Files\OpenVPN\config. И копируем в нее файлы ca.crt, client.crt, client.key из каталога /tmp/keys на сервере

Настраиваем конфигурационный файл .ovpn (По умолчанию расположен C:\Program Files\OpenVPN\config)

dev tun
proto udp
remote здесь указываем ip адрес нашего сервера openvpn
port 16785
client
resolv-retry infinite
ca ca.crt
cert user1.crt
key user1.key
persist-key
persist-tun
comp-lzo

Безопасного серфа.