Debian openvpn установка: Установка и настройка сервера OpenVPN на Debian

Содержание

Установка и настройка сервера OpenVPN на Debian

Инструкция по установке и настройке OpenVPN-сервера на базе Linux -дистрибутива Debian 8 Jessie.

Для работы OpenVPN необходима поддержка TUN/TAP интерфейса на сервере. Если вы устанавливаете OpenVPN на физической машине, либо используете виртуализацию KVM, в с этим не должно возникнуть проблем.
В случае использования OpenVZ, необходимо активировать поддержку TUN/TAP в настройках контейнера.

Проверяем поддержку в системе tun/tap-интерфейсов:

  1. ls -l /dev/net/tun

  2. crw-rw-rw- 1 root root 10, 200 Nov 19 23:02 /dev/net/tun

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

  1. apt-get update && apt-get upgrade

  2. apt-get install openvpn

Клиенты будут использовать на сервере аутентификацию по ключу. Для этого создадим директорию в которую будут скопированы сгенерированные ключи:

  1. # mkdir /etc/openvpn/easy-rsa/

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

  1. cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/

переходим в созданную директорию:

  1. # cd /etc/openvpn/easy-rsa/

В файле vars можно настроить параметры ключей и сертификатов. Данный пункт не обязательный и при желании его можно пропустить.

Меняем (по желанию) следующие строки:

  1. export KEY_COUNTRY="US"

  2. export KEY_PROVINCE="CA"

  3. export KEY_CITY="SanFrancisco"

  4. export KEY_ORG="Fort-Funston"

  5. export KEY_EMAIL="[email protected]"

Остальное оставляем по умолчанию.

После правки vars инициализируем переменные и очищаем каталог keys/serverот старых сертификатов и ключей:

  1. # source ./vars

  2. NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys

  3. # ./clean-all

Создание сертификатов

Создаем корневой сертификат:

В квадратных скобках будут указаны значения по умолчанию, которые вы записали в файле vars. Если вы не планируете их менять, то просто нажимайте Enter.

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

  1. # ./build-key-server server

  2. # ./build-key client1

  3. # ./build-key client2

Для каждого клиента должны быть сгенерированы отдельные ключи.

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

Cоздаем ключ для tls-аутификации:

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

Все сгенерированные сертификаты и ключи находятся в директории /etc/openvpn/easy-rsa/keys/
Копируем сертификаты и ключи сервера в директорию OpenVPN:

  1. # cd /etc/openvpn/easy-rsa/keys

  2. # cp server.crt server.key ca.crt dh3048.pem ta.key /etc/openvpn/

На клиентскую машину OpenVPN необходимо скопировать следующие ключи и сертификаты:

client1.crt
client1.key
ca.crt
ta.key

Для понимания назначения и расположения соответствующих файлов, я сделал небольшую таблицу:

Имя файла Где необходим Назначение Секретный
ca.crt сервер + все клиенты Корневой CA-сертификат НЕТ
ca.key машина для подписи ключей Корневой CA-ключ ДА
dh{n}.pem только сервер Параметры Diffie Hellman’а НЕТ
server.crt только сервер Сертификат сервера НЕТ
server.key только сервер Ключ сервера ДА
client1.crt только клиент1 Сертификат клиента1 НЕТ
client1.key только клиент1 Ключ клиента1 ДА
client2.crt только клиент2 Сертификат клиента2 НЕТ
client2.key только клиент2 Ключ клиента2 ДА

На этом установка сервера OpenVPN завершена, осталось настроить конфигурацию сервера.

Настройка сервера OpenVPN

Пример конфигурационного файла OpenVPN расположен в директории /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz, копируем и распаковываем его в /etc/openvpn:

# cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/

# gzip -d /etc/openvpn/server.conf.gz

В зависимости от потребностей, изменяем настройки сервера OpenVPN:

  1. vim /etc/openvpn/server.conf

Вот моя конфигурация:

  1. cat /etc/openvpn/server.conf

  1. local 1.2.3.4.5 # внешний IP сервера (Инетовский IP-адрес)

  2. port 1194 # порт на котором будет висеть служба OpenVPN

  3. proto tcp # протокол

  4. dev tun # используем тип тунеля для интернет, tap для eternet

  5. ca ca.crt # наши сертификаты

  6. cert cafap-250.crt

  7. key cafap-250.key

  8. dh dh2024.pem

  9. server 10.10.10.0 255.255.255.0 # Наша виртуальная сеть (адреса, которые будут присваиваться клиентам OpenVPN)

  10. ifconfig-pool-persist ipp.txt # запоминать выданные динамические адреса

  11. keepalive 10 120 # пинг каждые 10 секунд для поддержания канала связи

  12. comp-lzo # сжатие трафика

  13. persist-key

  14. persist-tun

  15. log /var/log/openvpn.log # Путь к лог-файлу

  16. verb 3 # Уровень детализации лога.

  17. mute # В лог будет записываться до 10 сообщений из одной категории.

  18. status openvpn-status.log #лог

  19. client-to-client

  20. ;push "redirect-gateway def1" # Перенаправлять default gateway на vpn-сервер. Если не нужно - закомментировать.

  21. ;push "route 192.168.2.0 255.255.255.0"

  22. client-config-dir ccd # Директория где хранятся настройки клиентов

  23. ;user nobody

  24. ;group nogroup

Если вам нужно чтобы , чтобы после подключения у клиента весь траффик шел через сервер OpenVPN, то раскомментируйте строку 20:

  1. #push "redirect-gateway def1"

Таким образом шлюзом по умолчанию для клиентов у вас станет OpenVPN — сервер.

Для повышения безопасности на linux-системах можно понизить права VPN-сервера, раскомментировав в конфиге сервера следующие строки:

Создаем директорию для клиентских настроек и перезагружаем сервер:

  1. # mkdir /etc/openvpn/ccd

  2. # reboot

После завершения настройки OpenVPN, перезагружаем сервер:

В случае успешного запуска OpenVPN в системе должен появиться новый tun0 интерфейс:

  1. # ifconfig

  2. tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500

  3. inet 10.10.10.1 netmask 255.255.255.255 destination 10.10.10.2

  4. unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 100 (UNSPEC)

  5. RX packets 37465 bytes 7557368 (7.2 MiB)

  6. RX errors 0 dropped 0 overruns 0 frame 0

  7. TX packets 39557 bytes 19278117 (18.3 MiB)

  8. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Наличие данного интерфейса означает, что OpenVPN Запущен и работает. Если по каким-либо причинам он не появился, то смотрим лог-файл на наличие ошибок:

  1. # cat /var/log/openvpn.log

Настройка маршрутизации для клиентов OpenVPN

После подключения клиента к серверу OpenVPN, если он (клиент) находится в локальной сети, нужно дополнительно настроить маршрутизацию для доступа к ресурсам внутри сети. Для этого создаем файл в каталоге

ccd с тем же именем ключа клиента:

  1. # vim /etc/openvpn/ccd/client1

Добавим в файл следующие параметры:

  1. push "route 192.168.2.0 255.255.255.0"

  2. push "dhcp-option DNS 192.168.1.1"

Первая строка добавляет маршрут в локальную сеть клиента. Проще говоря — говорит клиенту OpenVPN «ходить» в сеть 192.168.2.0 через сервер OpenVPN. Если ваша локалка связана еще с какой-либо подсетью, то её также нужно указать.

Вторая строка задает DNS-сервер, который будет использоваться после подключения (Если в вашей локальной сети DNS-сервер отсутствует, то можно указать ns от Google — 8.8.8.8, либо не указывать вообще.

Включаем NAT на OpenVPN сервере

Чтобы использовать OpenVPN для выхода в интернет, на сервере необходимо задать правило для маршрутизации трафика из сети OpenVPN в локальную сеть или сеть интернет-провайдера и обратно.

Чтобы включить поддержку IP forwarding, нужно в файле /etc/sysctl.conf раскомментировать строчку:

Применяем изменения (загружаем переменные ядра):

Не забываем прописать правила iptables. Нам нужно разрешить клиентам из подсети 10.10.10.0/24 доступ в интернет, разрешить принимать пакеты из интернета и пропустить трафик клиентов через NAT.

  1. # iptables -A FORWARD -i tun0 -j ACCEPT

  2. # iptables -A FORWARD -i tun0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT

  3. # iptables -A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT

  4. # iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE

В первой строке мы разрешаем форвардинг пакетов на интерфейсе tun0.
Второй строкой разрешаем форвардинг с tun0 на eth0.
Третей — разрешаем формардинг с eth0 на tun0.

Замените eth0 на имя своего внешнего интерфейса. Следует отметить, что MASQUERADE создает нагрузку на процессор. Поэтому, предпочтительнее использовать SNAT:

iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j SNAT —to-source ВНЕШНИЙ_IP
(в моем случае внешним IP был локальный адрес OpenVPN-сервера)

Разница между SNAT и MASQUERADE:
Маскарадинг постоянно запрашивает IP адрес у интерфейса, тем самым создавая нагрузку на процессор, в то время как SNAT «знает» IP (в нашем случае мы его указываем явно, т.к он статический).

Сохраняем правила и добавляем их в автозагрузку:

  1. # iptables-save > /etc/iptables.conf

  2. # echo "iptables-restore < /etc/iptables.conf" >> /etc/rc.local

Настройка клиента OpenVPN

Если OpenVPN не установлен, то установим его::

  1. # apt-get install openvpn

Копируем на компьютер клиента следующие ключи и сертификаты:

  • client1.crt
  • client1.key
  • ca.crt
  • ta.key

Затем переносим их в директорию OpenVPN — /etc/openvpn/

Копируем и распаковываем пример конфигурационного файла в содержимое директории OpenVPN:

  1. # cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/

и редактируем его:

  1. vim /etc/openvpn/client.conf

Добавим в содержимое файла следующие параметры:

  1. client

  2. dev tun

  3. proto tcp

  4. remote 1.2.3.4 1194 # Адрес и порт сервера OpenVPN (внешний, инетовский)

  5. resolv-retry infinite

  6. nobind

  7. persist-key

  8. persist-tun

  9. ca ca.crt

  10. cert client1.crt

  11. key client1.key

  12. tls-auth ta.key 1

  13. auth SHA512

  14. cipher BF-CBC

  15. comp-lzo adaptive

  16. ;log /var/log/openvpn.log

  17. ;status /var/log/openvpn-status.log

  18. verb 3

  19. mute 20

  20. ;route 192.168.1.0 255.255.0.0 # Можно прописать маршрут в локальную сеть, если это не сделано на сервере.

Для Windows-машин нужно положить файл client.ovpn в папку:

C:\Program Files\OpenVPN\config\

Опции протокола, шифрования и сжатия у клиента и сервера должны быть одинаковые.

На этом настройка OpenVPN в Debian закончена, проверяем его работоспособность:

Перезапустим OpenVPN:

  1. /etc/init.d/openvpn restart

Подключаемся с клиентской машины к OpenVPN-серверу , и пингуем с неё OpenVPN-сервер:

Если пинг проходит, то все хорошо, если же нет, то смотрим логи и проверяем настройки маршрутизации.

P.S. Если у вас на сервере динамический IP, то можете воспользоваться скриптом замены IP в конфиге OpenVPN, и последующей его отправкой на email.

Если возникнут какие-либо вопросы — пишите в комментариях.

Установка openvpn сервера на Debian 9

Напишу пошаговую установку OpenVPN сервера на Debian 9, от вас потребуется немного внимания и столько же терпения. Видео можете посмотреть перейдя по ссылке в конце записи.

Приступим:

apt-get install openvpn openssl iptables easy-rsa bash-completion

Создаем папку:

 mkdir /etc/openvpn/easy-rsa

Переходим в неё:

cd /etc/openvpn/easy-rsa

Выполняем копирование файлов:

cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/

Редактируем файл vars:

nano vars

В данном файле ищем строки и редактируем их под себя а можете оставить как есть:

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="[email protected]"
export KEY_OU="MyOrganizationalUnit"

После редактирования жмем Ctrl+o далее: Enter и Ctrl+x

Далее:

source ./vars

Если после этого наблюдаете что-то типа:

**************************************************************
  No /etc/openvpn/easy-rsa/openssl.cnf file could be found
  Further invocations will fail
**************************************************************

Выполняем:

ln -s openssl-1.0.0.cnf openssl.cnf

Далее снова:

source ./vars

Удаляем всякое разное, ненужное:

./clean-all

Генерируем ключи центра сертификации:

./build-ca

Генерируем ключи сервера. vpn_server можно заменить на свое и в дальнейшем на запрос A challenge password придумываем пароль:

./build-key-server vpn_server

A challenge password []:
An optional company name []:
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y

Создаем ключ для пользователя, user можно заменить на свое:

./build-key user

Еще нам нужны ключи Диффи-Хеллмана:

./build-dh

Ключи TLS:

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

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

cd keys

Создаем папку ccd:

mkdir /etc/openvpn/ccd

Копируем ключи сервера:

cp Server.crt Server.key ca.crt dh3048.pem /etc/openvpn/

Копируем ключи пользователей:

cp user.crt user.key ca.crt /etc/openvpn/ccd

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

cd /etc/openvpn/

Копируем оттуда ключ ta.key в папку /etc/openvpn/ccd:

cp ta.key /etc/openvpn/ccd

Далее создам конфигурационный файл сервера:

nano Server.conf

Для лентяев готовый конфиг:

port 1196
proto udp
dev tun
dh dh3048.pem
ca ca.crt
cert Server.crt
key Server.key
tls-auth ta.key 0
server 10.0.0.0 255.255.255.0
push "redirect-gateway def1"
push "dhcp-option DNS 1.1.1.1"
push "dhcp-option DNS 9.9.9.9"
keepalive 10 120
cipher AES-256-CBC
comp-lzo
persist-key
persist-tun
sndbuf 0
rcvbuf 0
mssfix 0
verb 0
status /var/log/openvpn-status.log
log /var/log/openvpn.log

Помещаем в автозагрузку и стартуем:

systemctl enable openvpn
service openvpn restart

Далее:

nano /etc/sysctl.conf

находим строку #net.ipv4.ip_forward=1 и убираем решетку в начале.

После этого:

echo 1 >> /proc/sys/net/ipv4/conf/all/forwarding

Добавляем правило в iptables:

iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE

Далее:

iptables-save > /etc/iptables.save

После этого редактируем файл:

nano /etc/network/interfaces

В самый конец добавляем строку:

pre-up iptables-restore < /etc/iptables.save

Перезагружаем сервер командой:

reboot

На этом установка сервера OpenVPN закончена.

Пример файла конфигурации для клиента, смотрим по ссылке ниже:
OpenVPN готовый файл конфигурации клиента

Информацию взял с YouTube канала вот тут — автор Иван Глазков

Понравилось? Поделитесь с друзьями!

Установка и настройка OpenVPN-сервера в Debian

Список разделов

VPN (Virtual Private Network) — виртуальная частная сеть. VPN — система, позволяющая организовать некую виртуальную сеть объединяющую несколько удалённых друг от друга сетей в единое целое посредством сторонней сети, которая при этом может не обеспечивать безопасность. К примеру, объединение сетей филиалов в одну посредством интернета. Безопасность и надёжность обеспечивается за счёт средств криптографии.

Для чего может понадобится VPN-сервер? В профессиональном варианте — для безопасного доступа к серверу или к сети с множеством серверов или рабочих компьютеров. Можно организовать доступ пользователей из любой точки мира с помощью интернета и ноутбука к их рабочим машинам в офисе или доступ системных администраторов к серверам находящимся в локальной сети организации с удалённых рабочих мест.

В куда менее профессиональном варианте — для доступа к закрытым сайтам из офиса. Если злой админ закрыл доступ к нужным вам сайтам и при этом чисто случайно у вас дома работает сервер под Debian 6, то вы можете настроить VPN-тоннель со своей рабочей машины до VPN-сервера у вас дома и наслаждаться интернетом без ограничений.

В данном руководстве мы будем настраивать VPN на основе OpenVPN под управлением Linux Debian 6. Кроме того в тексте приведены длинные выдержки из логов, так как когда настраиваешь первый раз не известно как должно выглядеть нормальное содержимое лога. Также будем рассчитывать, что вы уже настроили сеть.

Проверка

ls -l /dev/net/tun
lsmod | grep tun

Вторая команда не дала никакого вывода на моем сервере, но работе VPN это не помешало.

Установка OpenVPN-сервера

Предполагаем, что на сервере все действия производятся из-под рута.

aptitude install openvpn openssl

В итоге на сервере использовались следующие версии ПО: Debian 6.0.7, OpenVPN 2.1.3-2, OpenSSL 0.9.8o

Генерация ключей

Создаём директорию под ключи:

mkdir /etc/openvpn/easy-rsa/

В нее копируем утилиты и конфиги для работы с ключами:

cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/

UPD. Если у вас более новая версия OpenVPN и easy-rsa в поставке нет, то вы можете увидеть следующее сообщение об ошибке:

cp: cannot stat ‘/usr/share/doc/openvpn/examples/easy-rsa/2.0/*’: No such file or directory

Не стоит пугаться. Достаточно установить его из репозитория:

aptitude install easy-rsa

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

cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/

Делается это для того, чтобы после обновления OpenVPN-сервера сделанные нами изменения не перезаписались.

Переходим в эту директорию:

cd /etc/openvpn/easy-rsa/

В файле vars настраиваем параметры ключа:

nano vars

Нас интересует только следующий блок:

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="[email protected]"

Меняем на что-нибудь вроде:

export KEY_COUNTRY="RU"
export KEY_PROVINCE="Leningradskaya"
export KEY_CITY="SaintPetersburg"
export KEY_ORG="Firm"
export KEY_EMAIL="[email protected]"

Инициируем переменные:

# source ./vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys

Очищаем от старых сертификатов и ключей папку keys/server:

# ./clean-all

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

# ./build-ca

Generating a 1024 bit RSA private key
……………………………………………………++++++
………………….++++++
writing new private key to ‘ca.key’
——
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 fe

Настройка OpenVPN в Debian

Рассмотрим процесс установки OpenVPN на примере дистрибутива Debian 8.2. Задача состоит том, чтобы использовать сервер на базе OpenVPN в качестве шлюза для выхода в интернет. В результате мы получаем белый ip, можем обойти ограничения провайдера и дополнительно сжать и зашифровать весть трафик, который идет через сервер.

Я выбрал OpenVPN благодаря его надёжности и безопасности. По сравнению с аналогичными туннельными протоколами, OpenVPN абсолютно не прихотлив к способу доступа к сети интернет. При необходимости, клиент OpenVPN можно настроить даже через HTTP прокси-сервер.

Установка сервера OpenVPN

Для работы OpenVPN необходима поддержка TUN/TAP интерфейса на сервере. Как правило, с этим не должно возникнуть проблем при использовании физической машины или виртуализации KVM.

А вот в случае использования OpenVZ, необходимо активировать поддержку TUN/TAP в настройках контейнера. Чтобы проверить, что система поддерживает TUN-интерфейс, необходимо выполнить команду:

# ls -l /dev/net/tun
crw-rw-rw- 1 root root 10, 200 Nov 19 23:02 /dev/net/tun

Установим OpenVPN на сервере:

# apt-get install openvpn

В качестве способа авторизации клиента на сервере мы будем использовать аутентификацию по ключу. Для этого создаём директорию в которую будут скопированы сгенерированные ключи:

# mkdir /etc/openvpn/easy-rsa/

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

# cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/

Переходим в директорию:

# cd /etc/openvpn/easy-rsa/

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

# nano vars

Меняем следующие строки на свои значения:

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="[email protected]"

После правки vars необходимо инициировать переменные:

# source ./vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys

Очищаем каталог keys/server от старых сертификатов и ключей:

# ./clean-all

Создаем корневой сертификат:

# ./build-ca

В квадратных скобках указаны значения по умолчанию, которые были заданы в файле vars. Если вы хотите оставить значения без изменений, нужно просто нажимать клавишу «Ввод».

Далее генерируем сертификаты сервера и клиента:

# ./build-key-server server
# ./build-key client1
# ./build-key client2

Для каждого клиента нужно сгенерировать отдельные ключи.

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

# ./build-dh

Cоздаем ключ для tls-аутификации:

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

Все сгенерированные сертификаты и ключи находятся в директории:

/etc/openvpn/easy-rsa/keys/

Копируем сертификаты и ключи сервера в директорию OpenVPN:

# cd keys
# cp server.crt server.key ca.crt dh3048.pem ta.key /etc/openvpn/

Для настройки клиента OpenVPN, необходимо скопировать ключи и сертификаты из списка ниже:

client1.crt
client1.key
ca.crt
ta.key

На этом этапе установка OpenVPN закончена. Теперь выполним настройку сервера OpenVPN.

Настройка сервера OpenVPN

Копируем и распаковываем пример конфигурационного файла в содержимое директории OpenVPN:

# cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
# gzip -d /etc/openvpn/server.conf.gz

В зависимости от наших потребностей, изменяем настройки сервера OpenVPN:

nano /etc/openvpn/server.conf

Пример настройки OpenVPN:

local 90.90.90.90                    # Внешний ip сервера, указываем если на машине несколько адресов.
port 1194                            # Порт на котором будет принимать соединения сервер OpenVPN.
proto tcp                            # Для лучшего быстродействия рекомендуется указать udp.
                                     # Если вы используете прокси, необходимо указать tcp.
dev tun                              # Интерфейс туннеля
ca ca.crt                            # Путь к корневому сертификату
cert server.crt                      # Путь к сертификату сервера
key server.key                       # Путь к ключу сервера
dh dh2024.pem                        # Путь к ключу Диффи - Хеллмана
server 10.8.0.0 255.255.255.0        # Пул DHCP виртуальной сети OpenVPN. Работает только с TLS-клиентами в режиме tun.
ifconfig-pool-persist ipp.txt        # Запоминать динамически выданные адреса.
;client-config-dir ccd               # Директория для клиентских конфигов
;push "route 10.0.1.1 255.255.255.0" # Передаем маршрут клиенту (сеть-клиента).
push "redirect-gateway def1"         # Установить шлюзом по умолчанию удаленный сервер.
;push "dhcp-option DNS 8.8.8.8"      # Передаем DNS клиенту.
;client-to-client                    # Если нужно, чтобы клиенты видели друг друга.
keepalive 10 120                     # Каждые 10 секунд посылать ping, перезапустить туннель если сервер не отвечает в течении 120 секунд.
tls-server                           # Включаем TLS
auth SHA512                          # Для аутентификации используются ключи SHA512
tls-auth ta.key 0                    # Путь к ключу TLS
cipher BF-CBC                        # Метод шифрования
comp-lzo adaptive                    # Включить сжатие
user nobody                          # Права, с которыми будет работать OpenVPN.
group nogroup
persist-key                          # Не перечитывать файлы ключей при перезапуске туннеля.
persist-tun                          # Оставить без изменения устройства tun/tap при перезапуске OpenVPN.
status openvpn-status.log            # Лог с информацией о текущих соединениях.
log /var/log/openvpn.log             # Путь к лог-файлу.
verb 3                               # Уровень детализации лога.
mute                                 # В лог будет записываться до 10 сообщений из одной категории.

Создадим директорию для клиентских настроек:

mkdir /etc/openvpn/ccd

После завершения настройки OpenVPN, перезагружаем сервер:

reboot

В случае успешного запуска OpenVPN в системе должен появится новый tun0 интерфейс:

# ifconfig
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.8.0.1  P-t-P:10.8.0.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Это означает, что OpenVPN сервер запущен. В случае проблем с запуском OpenVPN, используем лог-файл:

# nano /var/log/openvpn.log
Настройки маршрутизации для клиентов OpenVPN

После подключения клиента к серверу OpenVPN, шлюз будет изменен на IP виртуальной сети сервера. Если клиент OpenVPN находится в локальной сети, вам необходимо дополнительно настроить маршрутизацию для доступа к ресурсам внутри сети. Для этого создаем файл в каталоге ccd с тем же именем ключа клиента:

# nano /etc/openvpn/ccd/client1

Добавим в файл следующие параметры:

push "route 192.168.1.0 255.255.255.0"
push "dhcp-option DNS 192.168.1.1"

Первая строка добавляет маршрут в локальную сеть клиента. Вторая строка задает DNS-сервер, который будет использоваться после подключения.

Включаем NAT на OpenVPN сервере

Чтобы использовать OpenVPN для выхода в интернет, на сервере необходимо задать правило для маршрутизации трафика из сети OpenVPN в локальную сеть или сеть интернет-провайдера.

Включаем поддержку IP forwarding, открываем в файл:

# nano /etc/sysctl.conf

В котором необходимо раскомментировать строку:

#net.ipv4.ip_forward=1

Загрузим переменные ядра:

# sysctl -p

Прописываем правила iptables. Нужно разрешить клиентам из подсети 10.8.0.0/24 доступ в интернет, разрешить принимать пакеты из интернета и пропустить трафик клиентов через NAT.


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

Замените eth0 на имя своего внешнего интерфейса. Следует отметить, правило MASQUERADE создает нагрузку на процессор. Поэтому, предпочтительнее использовать SNAT:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source ВНЕШНИЙ_IP

Сохраним и добавим правила в автозагрузку:

# iptables-save > /etc/iptables.conf
# echo "iptables-restore < /etc/iptables.conf" >> /etc/rc.local
Настройка клиента OpenVPN

Если OpenVPN не установлен, для установки клиента в Debian или Ubuntu необходимо выполнить команду:

# apt-get install openvpn

Копируем на компьютер клиента ключи и сертификаты из списка ниже:

client1.crt
client1.key
ca.crt
ta.key

Переносим ключи и сертификаты в директорию OpenVPN:

/etc/openvpn/

Копируем и распаковываем пример конфигурационного файла в содержимое директории OpenVPN:

# cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/

Открываем файл в текстовом редакторе:

nano /etc/openvpn/client.conf

Добавим в содержимое файла следующие параметры:

client
dev tun
proto tcp
remote 90.90.90.90 1194                        # Адрес и порт сервера OpenVPN
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
tls-auth ta.key 1
auth SHA512
cipher BF-CBC
comp-lzo adaptive
;log /var/log/openvpn.log
;status /var/log/openvpn-status.log
verb 3
mute 20
;route 192.168.1.0 255.255.0.0                 # Можно прописать маршрут в локальную сеть, если это не сделано на сервере.

Для Windows необходимо положить файл client.ovpn в папку:

C:\Program Files\OpenVPN\config\

Опции протокола, шифрования и сжатия у клиента и сервера должны быть одинаковые. При необходимости вы можете настроить OpenVPN через прокси. На этом настройка OpenVPN в Debian закончена, теперь пора проверить его работоспособность. Перезапустим OpenVPN:

service openvpn restart

Пингуем 10.8.0.1, если пинг проходит, значит все хорошо.

PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data. 64 bytes from 10.8.0.1: icmp_req=1 ttl=64 time=30 ms

🖧 Как установить и подключить клиент OpenVPN на Debian – Information Security Squad

Клиент используется для подключения к удаленному серверу openvpn.

Это руководство поможет вам установить пакеты OpenVPN для клиента в системе Debian.

Также подключиться к удаленному серверу openvpn через командную строку.

Прежде чем мы начнем

Мы предполагаем, что у вас уже есть:

  • Работающая система Debian с привилегированным доступом sudo.
  • Сервер OpenVPN запущен в удаленной системе.
  • Получена конфигурация клиента OpenVPN от администратора удаленного хоста.

Шаг 1 – Установка клиента OpenVPN

Пакеты OpenVPN доступны в репозиториях Debian по умолчанию.

Откройте терминал в своей системе Debian и обновите кеш apt.

После этого установите пакет OpenVPN.

Откройте терминал и выполните команды для установки клиента openvpn в Debian:

sudo apt update  sudo apt install openvpn -y 

Шаг 2 – Подключитесь к серверу OpenVPN

Скопируйте файл конфигурации клиента openvpn на свой компьютер Debian.

Вы можете использовать параметр командной строки –config для предоставления файла конфигурации.

Команда прочитает все необходимые данные для создания vpn из этого файла.

Давайте выполним следующую команду для подключения к серверу openvpn:

openvpn --config client.ovpn

Вы должны увидеть следующий результат:

Thu Sep 10 12:04:18 2020 TCP/UDP: Preserving recently used remote address: [AF_INET]69.87.218.145:1194
Thu Sep 10 12:04:18 2020 Socket Buffers: R=[212992->212992] S=[212992->212992]
Thu Sep 10 12:04:18 2020 UDP link local: (not bound)
Thu Sep 10 12:04:18 2020 UDP link remote: [AF_INET]69.87.218.145:1194
Thu Sep 10 12:04:18 2020 TLS: Initial packet from [AF_INET]69.87.218.145:1194, sid=6d27e1cb 524bd8cd
Thu Sep 10 12:04:18 2020 VERIFY OK: depth=1, CN=Easy-RSA CA
Thu Sep 10 12:04:18 2020 VERIFY OK: depth=0, CN=tecadmin-server
Thu Sep 10 12:04:18 2020 Control Channel: TLSv1.3, cipher TLSv1.3 TLS_AES_256_GCM_SHA384, 2048 bit RSA
Thu Sep 10 12:04:18 2020 [tecadmin-server] Peer Connection Initiated with [AF_INET]69.87.218.145:1194
Thu Sep 10 12:04:19 2020 SENT CONTROL [tecadmin-server]: 'PUSH_REQUEST' (status=1)
Thu Sep 10 12:04:19 2020 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1,dhcp-option DNS 208.67.222.222,dhcp-option DNS 208.67.220.220,route 10.8.0.1,topology net30,ping 20,ping-restart 60,ifconfig 10.8.0.6 10.8.0.5,peer-id 0,cipher AES-256-GCM'
Thu Sep 10 12:04:19 2020 OPTIONS IMPORT: timers and/or timeouts modified
Thu Sep 10 12:04:19 2020 OPTIONS IMPORT: --ifconfig/up options modified
Thu Sep 10 12:04:19 2020 OPTIONS IMPORT: route options modified

Шаг 3 – Проверьте соединение

После успешного установления соединения новый IP-адрес будет назначен на интерфейсе tun0 сервером OpenVPN.

Вы можете проверить его с помощью следующей команды:

ip a show tun0 

Вывод:

4: tun0:  mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
    link/none 
    inet 10.8.0.6 peer 10.8.0.5/32 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::7226:57b1:f101:313b/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever

Вы также можете проверить журнал сервера OpenVPN, чтобы проверить статус подключения:

tail -f /var/log/openvpn.log 

Вы должны увидеть следующий результат:

Thu Sep 10 12:04:18 2020 45.58.34.83:37445 Control Channel: TLSv1.3, cipher TLSv1.3 TLS_AES_256_GCM_SHA384, 2048 bit RSA
Thu Sep 10 12:04:18 2020 45.58.34.83:37445 [client] Peer Connection Initiated with [AF_INET]45.58.34.83:37445
Thu Sep 10 12:04:18 2020 client/45.58.34.83:37445 MULTI_sva: pool returned IPv4=10.8.0.6, IPv6=(Not enabled)
Thu Sep 10 12:04:18 2020 client/45.58.34.83:37445 MULTI: Learn: 10.8.0.6 -> client/45.58.34.83:37445
Thu Sep 10 12:04:18 2020 client/45.58.34.83:37445 MULTI: primary virtual IP for client/45.58.34.83:37445: 10.8.0.6
Thu Sep 10 12:04:19 2020 client/45.58.34.83:37445 PUSH: Received control message: 'PUSH_REQUEST'
Thu Sep 10 12:04:19 2020 client/45.58.34.83:37445 SENT CONTROL [client]: 'PUSH_REPLY,redirect-gateway def1,dhcp-option DNS 208.67.222.222,dhcp-option DNS 208.67.220.220,route 10.8.0.1,topology net30,ping 20,ping-restart 60,ifconfig 10.8.0.6 10.8.0.5,peer-id 0,cipher AES-256-GCM' (status=1)
Thu Sep 10 12:04:19 2020 client/45.58.34.83:37445 Data Channel: using negotiated cipher 'AES-256-GCM'
Thu Sep 10 12:04:19 2020 client/45.58.34.83:37445 Outgoing Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
Thu Sep 10 12:04:19 2020 client/45.58.34.83:37445 Incoming Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key

Заключение

Ваша система Debian теперь подключена к удаленному серверу через виртуальную частную сеть VPN.

 

🛡️ Как установить OpenVPN на Ubuntu 20.04 – Information Security Squad

OpenVPN – это быстрая и популярная программа с открытым исходным кодом для создания VPN (виртуальной частной сети).

Она использует как протоколы передачи TCP и UDP  и VPN-туннели защищены протоколом OpenVPN с аутентификацией SSL / TLS, сертификатами, учетными данными и, опционально, блокировкой MAC-адреса, а также многофакторной аутентификацией.

Она может использоваться на самых разных устройствах и системах.

Как и большинство протоколов VPN, она имеет архитектуру клиент-сервер.

Сервер OpenVPN работает в системе Linux, а клиенты могут быть установлены в других системах Linux, Windows, macOS, а также в мобильных операционных системах, таких как Android, Windows Mobile и iOS.

Сервер  OpenVPN принимает входящие VPN-подключения, и клиенты OpenVPN Connect или любые клиенты с открытым исходным кодом, совместимые с OpenVPN, могут инициировать подключение к серверу.

В этой статье вы узнаете, как настроить сервер доступа OpenVPN на Ubuntu 20.04 и подключить VPN-клиентов из других систем Linux.

Шаг 1: Настройка сервера OpenVPN на Ubuntu

1. Установка и настройка сервера OpenVPN вручную – не простая задача.

По этой причине мы будем использовать скрипт, который позволит вам за несколько секунд настроить собственный защищенный сервер OpenVPN.

Перед загрузкой и запуском скрипта имейте в виду, что скрипт автоматически обнаружит частный IP-адрес вашего сервера.

Но вам нужно принять к сведению публичный IP-адрес вашего сервера, особенно если он работает за NAT.

Чтобы узнать общедоступный IP-адрес вашего сервера, выполните следующую команду wget или команду dig.

$ wget -qO - icanhazip.com
или
$ dig +short myip.opendns.com @resolver1.opendns.com

2. Теперь скачайте скрипт установщика с помощью инструмента командной строки curl, а затем сделайте его исполняемым с помощью команды chmod следующим образом.

$ curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
$ chmod +x openvpn-install.sh

3. Затем запустите скрипт установщика, как показано на далее:

$ sudo bash openvpn-install.sh

При первом запуске скрипт задаст вам несколько вопросов, внимательно прочитайте их и предоставьте ответы в соответствии с вашими предпочтениями, чтобы корректно настроить сервер OpenVPN.

4. После завершения установки VPN файл конфигурации клиента будет записан в текущем рабочем каталоге.

Это файл, который вы будете использовать для настройки клиента OpenVPN, как описано в следующем разделе.

5. Затем убедитесь, что служба OpenVPN запущена и работает, проверив ее состояние с помощью следующей команды systemctl.

$ sudo systemctl status openvpn

6. Также убедитесь, что демон OpenVPN прослушивает порт, который вы указали скрипту, с помощью команды ss, как показано далее:

$ sudo ss -tupln | grep openvpn

7. Если вы проверите свои сетевые интерфейсы, то увидите, что для VPN-туннеля был создан новый интерфейс, вы можете подтвердить это с помощью команды IP.

$ ip add

Интерфейс будет иметь имя tun0

Шаг 2. Настройка клиентов OpenVPN

8. Теперь пришло время настроить клиент OpenVPN и подключить его к VPN-серверу.

Сначала установите пакет OpenVPN на клиентском компьютере следующим образом.

$ sudo yum install openvpn	#CentOS 8/7/6
$ sudo apt install openvpn	#Ubuntu/Debian
$ sudo dnf install openvpn	#Fedora 22+/CentOS 8

9. В десктопе вам также необходимо установить пакет network-manager-openvpn, чтобы настроить параметры VPN из графического интерфейса.

$ sudo yum install network-manager-openvpn	#CentOS 8/7/6
$ sudo apt install network-manager-openvpn	#Ubuntu/Debian
$ sudo dnf install network-manager-openvpn	#Fedora 22+/CentOS 8

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

$ sudo systemctl start openvpn 
$ sudo systemctl enble openvpn 
$ sudo systemctl status openvpn

11. Теперь вам нужно импортировать настройки клиента OpenVPN с сервера OpenVPN.

Откройте окно терминала и используйте команду SCP, чтобы забрать файл, как показано далее:

$ cd ~
$ scp [email protected]:/home/itsecforu/itsecforu.ovpn .

12. Откройте Системные настройки, затем перейдите в networks.

В разделе VPN нажмите кнопку +, чтобы добавить необходимые параметры.

13. Во всплывающем окне выберите «Import from file», как показано на следующем снимке экрана.

Затем просмотрите ваш файловый менеджер и выберите файл конфигурации клиента .ovpn, который вы скачали с сервера.

14. В других системах Linux нажмите значок сети на системной панели и перейдите в раздел «Network Connections».

Затем нажмите кнопку «плюс», чтобы добавить новое соединение.

В раскрывающемся списке выберите «Import a saved VPN configuration…», как показано на следующем снимке экрана.

15. После импорта файла необходимо добавить настройки VPN.

Затем нажмите add.

16. Настройки вашего VPN-клиента должны быть успешно добавлены.

17. Вы можете подключиться к серверу OpenVPN, включив VPN, включив переключатель.

18. Если вы проверите соединения сетевого интерфейса с помощью команды IP add, то теперь должен существовать интерфейс VPN-туннеля, как показано на следующем снимке экрана.

$ ip add

Должен появится интерфейс tun0.

клиент и сервер VPN / Wiki / Debian-facile

Un nouveau tuto actualize celui-ci en 2016 là:

Презентация

Эта техника позволяет создать шизофреническую связь с этой машиной и обслужить ее в Интернете (например, как четырехлетний врач во Франции или в чужой стране). У вас есть доступ к интернет-сервису, который может быть выбран в качестве части адреса IP-адреса сервера VPN, и не может быть предоставлен как частный компьютер.

OpenVPN не является протоколом VPN IPSec. Этот VPN SSL основан на создании туннельного IP-адреса (UDP или TCP по выбору), аутентификации и шифрования в соответствии с библиотекой OpenSSL.

Дополнительные преимущества туннелей VPN SSL:

Установка Serveur

На начальном этапе установщик OpenVPN как часть официальных департаментов:

 apt-get update && apt-get install openvpn 

На копии Ensuite les fichiers de configurations:

 mkdir / и т. Д. / Openvpn / ключи 
 cp -r / usr / share / easy-rsa / / и т. Д. / Openvpn 
 chown -R $ ПОЛЬЗОВАТЕЛЬ / etc / openvpn / easy-rsa / 

Конфигурация

Сценарии устанавливаются в репертуаре / etc / openvpn / easy-rsa / , чтобы сконфигурировать OpenVPN для использования утилиты аутентификации и сертификатов.

На начальном этапе номинал 2) le fichier / etc / openvpn / easy-rsa / vars :

 экспорт KEY_COUNTRY = "FR"
экспорт KEY_PROVINCE = "FR"
экспорт KEY_CITY = "FR"
экспорт KEY_ORG = "instance.com"
экспорт KEY_EMAIL = "[email protected]" 

Ensuite on lance la séquence suivante qui va générer les clés (.key) et les Certificats (.crt) :

 компакт-диск / etc / openvpn / easy-rsa /
исходные вары
./clean-all
./build-dh
./pkitool --initca
./ pkitool - сервер-сервер
openvpn --genkey --секретные ключи / ta.key 

На копии всех сертификатов и сертификатов для использования в репертуаре / etc / openvpn / :

 ключей cp / ключей ca.crt / ключей ta.key / ключей server.crt / ключей server.key / dh3048.pem / etc / openvpn / 

Создан в репертуаре / etc / openvpn / jail в процессе обработки OpenVPN, находящейся в открытом состоянии (после ограничителя ошибок в OpenVPN):

 мкдир / и т. Д. / Openvpn / тюрьма 

После повторной настройки ( / etc / openvpn / clientconf ), которая содержит конфигурацию клиентов:

 mkdir / и т.д. / openvpn / clientconf 

Enfin для конфигурации / etc / openvpn / server.conf :

файл /etc/openvpn/server.conf
 # Serveur TCP / 443
режим сервера
proto tcp
порт 443
Dev Tun

# Clés et Certificats
ca ca.crt
сертификат server.crt
ключ server.key
dh dh3048.pem
tls-auth ta.key 0
шифр AES-256-CBC

# Réseau
сервер 10.8.0.0 255.255.255.0
нажмите "redirect-gateway def1 bypass-dhcp"
нажмите "dhcp-option DNS 8.8.8.8"
нажмите "dhcp-option DNS 8.8.4.4"
Keepalive 10 120

# Sécurite
пользователь никто
группа nogroup
chroot / и т.д. / openvpn / тюрьма
постоянный ключ
настойчивый туннель
comp-lzo

# Журнал
глагол 3
немой 20
статус openvpn-status.журнал
журнал-приложение /var/log/openvpn.log 

Это устройство, обеспечивающее сервер VPN SSL, основано на протоколе TCP и использует порт HTTPS (443), чтобы обеспечить максимальный доступ к безопасным ресурсам на межсетевых экранах. Клиенты получают новый IP-адрес в диапазоне 10.8.0.0/24

KALI — Как установить OpenVPN для Linux — Визуальное руководство

Как установить OpenVPN на Kali.

Шаг 1. Загрузите OpenVPN

.

Откройте корневой терминал и установите эти 7 пакетов:

apt-get install network-manager-openvpn
apt-get install network-manager-openvpn-gnome
apt-get install network-manager-pptp
apt-get install network-manager-pptp-gnome
apt-get install network -manager-strongswan
apt-get install network-manager-vpnc
apt-get install network-manager-vpnc-gnome

******

Шаг 2 — Загрузите сертификаты OpenVPN

Для использования IVPN в качестве провайдера нам необходимо:

— Имя пользователя (всегда начинается с iVPN)

— Пароль

— 2 сертификата и 1 ключ

— Вызвано несколько маршрутов.ovpn файлы

С IVPN эти файлы .ovpn находятся под

Вкладка загрузки

Файлы конфигурации (Windows, OSX и Linux)

Сохранить файл

Zip-файл сохраняется в / tmp

*******

Шаг 3а — Создайте каталог VPN, чтобы все было упорядочено

(Поверьте мне… вы будете так рады)

*****

мкдир iVPN

cp / tmp / iVPN * ~ / iVPN

убедитесь, что скопировано все, прежде чем разархивировать.

*****

Шаг 3b — Распакуйте заархивированные файлы VPN

распаковать iVPN-conf-1.5.zip

Обратите внимание на имена распакованных файлов…

*****

Есть 3 важных файла OpenVPN, которые вам нужно будет найти.

ca.crt = сертификат центра сертификации

client1.crt = сертификат клиента (т.е. ваш сертификат)

client1.key = клиентский ключ (т.е. ваш ключ)

******

.ovpn — это файлы конфигурации, которые содержат файлы маршрутов, IP-адреса шлюзов и т. Д.

Они определяют маршруты, такие как прямой в Нидерланды или Multihop, США в Великобританию.

По мере разархивирования файлов вы увидите множество одно- или многопролетных маршрутов.

*******

Шаг 4. Импортируйте маршруты VPN в Network Manager

.

Щелкните значок сети (рядом с корневым каталогом — в правом верхнем углу)

Прокрутить вниз

VPN-подключения — (в конце страницы)

Настроить VPN

Кнопка IMPORT

OpenVPN — ArchWiki

В этой статье описывается базовая установка и настройка OpenVPN, подходящая для частного и малого бизнеса.Для получения более подробной информации см. Справочную страницу OpenVPN 2.4 и документацию OpenVPN. OpenVPN — это надежный и очень гибкий демон VPN. Он поддерживает безопасность SSL / TLS, мост Ethernet, туннельный транспорт TCP или UDP через прокси или NAT. Кроме того, он поддерживает динамические IP-адреса и DHCP, масштабируется до сотен или тысяч пользователей и переносится на большинство основных платформ ОС.

OpenVPN тесно связан с библиотекой OpenSSL и получает от нее большую часть своих криптографических возможностей.Он поддерживает обычное шифрование с использованием предварительно общего секретного ключа (режим статического ключа) или безопасности открытого ключа (режим SSL / TLS) с использованием сертификатов клиента и сервера. Кроме того, он поддерживает незашифрованные туннели TCP / UDP.

OpenVPN разработан для работы с виртуальным сетевым интерфейсом TUN / TAP, который существует на большинстве платформ. В целом, он нацелен на то, чтобы предложить многие ключевые функции IPSec, но с относительно небольшим размером. OpenVPN был написан Джеймсом Йонаном и опубликован под Стандартной общественной лицензией GNU (GPL).

Установка

Установите пакет openvpn, который обеспечивает как серверный, так и клиентский режим.

Доступные интерфейсы:

  • NetworkManager OpenVPN — плагин NetworkManager VPN для OpenVPN.
https://wiki.gnome.org/Projects/NetworkManager/VPN || networkmanager-openvpn
  • QOpenVPN — Простой графический интерфейс OpenVPN, написанный на PyQt для дистрибутивов на основе systemd.
https: // github.com / xmikos / qopenvpn || qopenvpn

Конфигурация ядра

OpenVPN требует поддержки TUN / TAP, которая уже настроена в ядре по умолчанию. Пользователи кастомного ядра должны убедиться, что модуль tun включен:

 Файл конфигурации ядра 
 Драйверы устройств
  -> Поддержка сетевых устройств
    [M] Поддержка универсальных драйверов устройств TUN / TAP.
 

Прочтите модули ядра для получения дополнительной информации.

Подключение к VPN, предоставленной третьей стороной

Для подключения к VPN-сервису, предоставляемому третьей стороной, большую часть следующего, скорее всего, можно игнорировать, особенно в отношении настройки сервера.Начните с # Профиль конфигурации клиента, а после этого перейдите к # Запуск OpenVPN. Следует использовать сертификаты провайдера и инструкции, см. Раздел Категория: поставщики VPN для примеров, которые могут быть адаптированы для других провайдеров. Клиент OpenVPN в контейнерах Linux также имеет общие применимые инструкции, в то время как он идет дальше, изолируя процесс клиента OpenVPN в контейнер.

Примечание. Большинство бесплатных VPN-провайдеров (часто только) предлагают PPTP, который значительно проще в установке и настройке, но небезопасен.

Создание инфраструктуры открытых ключей (PKI) с нуля

При настройке сервера OpenVPN пользователям необходимо создать инфраструктуру открытых ключей (PKI), которая подробно описана в статье Easy-RSA. После того, как необходимые сертификаты, закрытые ключи и связанные файлы созданы с помощью шагов, описанных в отдельной статье, на этом этапе у вас должно быть 5 файлов в / etc / openvpn / server :

 ca.crt
dh.pem
servername.crt
servername.key
ta.key
 

Альтернативно, начиная с OpenVPN 2.4, можно использовать Easy-RSA для генерации сертификатов и ключей с использованием эллиптических кривых. Подробности см. В документации OpenVPN.

Базовая конфигурация IP-маршрутизации уровня 3

Примечание: Если явно не указано иное, в остальной части этой статьи предполагается базовая конфигурация IP-маршрутизации уровня 3.

OpenVPN — это чрезвычайно универсальное программное обеспечение, и возможно множество конфигураций, фактически машины могут быть как серверами, так и клиентами.

С выходом v2.4, конфигурации сервера хранятся в / etc / openvpn / server , а конфигурации клиентов хранятся в / etc / openvpn / client , и каждый режим имеет свой собственный соответствующий модуль systemd, а именно: openvpn-client @ .service и openvpn-server @ .service .

Пример конфигурации

Пакет OpenVPN поставляется с набором примеров файлов конфигурации для различных целей. Примеры файлов конфигурации сервера и клиента являются идеальной отправной точкой для базовой настройки OpenVPN со следующими функциями:

  • Использует инфраструктуру открытых ключей (PKI) для аутентификации.
  • Создает VPN с использованием виртуального сетевого интерфейса TUN (IP-маршрутизация OSI Layer-3).
  • Прослушивает клиентские соединения через порт UDP 1194 (официальный номер порта IANA OpenVPN [1]).
  • Раздает виртуальные адреса подключающимся клиентам из подсети 10.8.0.0/24.

Для более сложных конфигураций см. Справочную страницу openvpn (8) и документацию OpenVPN.

Файл конфигурации сервера

Примечание: Обратите внимание, что если сервер находится за брандмауэром или маршрутизатором, транслирующим NAT, порт OpenVPN должен быть перенаправлен на сервер.

Скопируйте пример файла конфигурации сервера /usr/share/openvpn/examples/server.conf в /etc/openvpn/server/server.conf .

Отредактируйте файл, внеся как минимум следующие изменения:

 /etc/openvpn/server/server.conf 
 ca ca.crt
cert servername.crt
ключ servername.key
dh dh.pem
.
tls-crypt ta.key # Заменяет  tls-auth ta.key 0 
.
пользователь никто
группа никто
 

Если используется TLS с эллиптическими кривыми, укажите dh none и ecdh-curve secp521r1 .Файл параметров DH не используется при использовании эллиптических кривых. Начиная с OpenVPN 2.4.8, в конфигурации сервера необходимо указывать тип эллиптических кривых. В противном случае сервер не сможет распознать тип кривой и, возможно, будет использовать несовместимый тип кривой, что приведет к ошибкам аутентификации.

Усиление защиты сервера

Если безопасность является приоритетом, рекомендуется дополнительная настройка, в том числе: ограничение сервера для использования надежного метода шифрования / аутентификации и (необязательно) ограничение набора включенных шифров TLS новыми шифрами.Начиная с OpenVPN 2.4, сервер и клиент будут автоматически согласовывать AES-256-GCM в режиме TLS.

Добавьте следующее в /etc/openvpn/server/server.conf :

 /etc/openvpn/server/server.conf 
.
шифр AES-256-GCM
авторизация SHA512
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384: TLS-DHE-RSA-WITH-AES-128-GCM-SHA256: TLS-DHE-RSA-WITH-AES-256-CBC-SHA : TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA: TLS-DHE-RSA-WITH-AES-128-CBC-SHA: TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA
.
Примечание:
  • Профиль клиента .ovpn должен содержать совпадающий шифр и строку аутентификации для правильной работы (по крайней мере, с клиентом iOS и Android).
  • Неправильное использование tls-cipher может вызвать трудности с отладкой соединений и может оказаться ненужным. См. Вики сообщества OpenVPN для получения дополнительной информации.
Включение сжатия

Включение сжатия не рекомендуется восходящим потоком; это открывает серверу так называемый вектор атаки VORACLE.См. Эту статью.

Отклонение от стандартного порта и / или протокола

Обычно рекомендуется использовать OpenVPN поверх UDP, потому что TCP через TCP — плохая идея [2].

Некоторые сети могут запрещать подключения OpenVPN через порт и / или протокол по умолчанию. Одна из стратегий обойти это — имитировать HTTPS-трафик, который, скорее всего, не имеет препятствий.

Для этого настройте /etc/openvpn/server/server.conf как таковой:

 / и т. Д. / Openvpn / сервер / сервер.conf 
.
порт 443
proto tcp
.
 

Примечание: Профиль клиента .ovpn должен содержать соответствующий порт и строку протокола для правильной работы!

Запуск нескольких экземпляров OpenVPN на разных портах физического компьютера

На одном компьютере может быть несколько одновременных экземпляров OpenVPN. Каждый сервер должен быть определен в / etc / openvpn / server / как отдельный файл .conf. Как минимум, параллельные серверы должны работать на разных портах.Простая настройка направляет трафик, подключающийся к отдельному пулу IP-адресов. Более сложные настройки выходят за рамки этого руководства.

Рассмотрим этот пример, в котором запущено 2 параллельных сервера, один порт 443 / udp, а другой порт 80 / tcp.

Сначала измените /etc/openvpn/server/server.conf , созданный так:

 /etc/openvpn/server/server.conf 
.
порт 443
прото udp
сервер 10.8.0.0 255.255.255.0
.
 

Теперь скопируйте его и измените копию для работы на 80 / tcp:

 / и т. Д. / Openvpn / server / server2.conf 
.
порт 80
proto tcp
сервер 10.8.1.0 255.255.255.0
.
 

Обязательно установите соответствующие записи в брандмауэре, см. Соответствующие разделы в # Конфигурация брандмауэра.

Профиль конфигурации клиента

Скопируйте пример файла конфигурации клиента /usr/share/openvpn/examples/client.conf в / etc / openvpn / client / .

Измените следующее:

  • Удаленная директива , отражающая полное доменное имя сервера, имя хоста (известное клиенту) или его IP-адрес.
  • Раскомментируйте директивы user и group , чтобы удалить привилегии.
  • Параметры ca , cert и key для отражения пути и имен

OpenVPN в Debian 8 (Джесси) — я не думаю, что знаю, что делаю

Обновление: Я написал сообщение о том, как усилить защиту OpenVPN на CentOS. Он включает в себя устранение DoS-атак, снижение привилегий демонов, улучшенные проверки сертификатов, принудительное использование TLS 1.2, более надежные шифры и многое другое. Методы, используемые для его усиления, можно легко применить к этому посту. Смотрите здесь: https://2kswiki.wordpress.com/2015/06/17/hardened-openvpn-on-centos-7/

В этом руководстве рассматривается настройка сервера OpenVPN с поддержкой TLS в Debian 8 (Jessie).
В этом руководстве не рассматривается: открытие портов в брандмауэре.

Обновите систему:

apt-get update
apt-get upgrade -y
 

Установите OpenVPN и easy-rsa:

apt-get -y установить openvpn easy-rsa
 

Скопируйте каталог easy-rsa для создания ключей:

cp -R / usr / share / easy-rsa / etc / openvpn /
 

Измените следующие переменные в файле / etc / openvpn / easy-rsa / vars:

экспорт KEY_COUNTRY = "США"
экспорт KEY_PROVINCE = "CA"
экспорт KEY_CITY = "Сан-Франциско"
экспорт KEY_ORG = "Форт-Фанстон"
экспорт KEY_EMAIL = "mail @ domain"
экспорт KEY_EMAIL = почта @ домен
 

Увеличьте размер ключа до значения выше 3072 (4096, если вы параноик, см .: https: // www.enisa.europa.eu/activities/identity-and-trust/library/deliverables/algorithms-key-sizes-and-parameters-report):

sed -i 's / KEY_SIZE = 2048 / KEY_SIZE = 3072 / g' / etc / openvpn / easy-rsa / vars
 

Создайте ключи и сертификаты на стороне сервера:

cd / etc / openvpn / easy-rsa /
исходные вары
./clean-all
./build-ca
./build-key-server сервер
 

Построение параметров Диффи-Хеллмана (это займет много времени, в некоторых случаях более часа):

.dh (. +) / dh dh4072.pem / g '/etc/openvpn/server.conf # новый параметр dh
echo 'crl-verify easy-rsa / keys / crl.pem' >> /etc/openvpn/server.conf # список отзыва сертификатов
echo 'push "redirect-gateway def1 bypass-dhcp"' >> /etc/openvpn/server.conf #redirect шлюз по умолчанию
echo 'push "dhcp-option DNS 8.8.8.8"' >> /etc/openvpn/server.conf #use google DNS
echo 'push "explicit-exit-notify 3"' >> /etc/openvpn/server.conf # отправить уведомление о выходе вместо тайм-аута
 

OpenVPN не запустится, если файл CRL не существует или недействителен, поэтому мы создаем фиктивный сертификат клиента и отзываем его:

cd / etc / openvpn / easy-rsa /
исходные вары
./ build-key фиктивный клиент
./revoke-full dummy-client
 

Включить пересылку IPv4:

echo 'net.ipv4.ip_forward = 1'> /etc/sysctl.d/net.ipv4.ip_forward.conf
sysctl -p /etc/sysctl.d/net.ipv4.ip_forward.conf
 

Установите следующие правила iptables:

iptables -A INPUT -p udp -m state --state NEW -m udp --dport 1194 -j ACCEPT # разрешить трафик на сервер openvpn
iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT # разрешить пересылку из подсети vpn
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 # маскировать пакеты, покидающие eth0 из подсети vpn
 

Примечание. Эти правила брандмауэра не сохранятся после перезагрузки, если они не настроены следующим образом: https://www.debian-administration.org/article/445/Getting_IPTables_to_survive_a_reboot

Включить и запустить службу OpenVPN:

systemctl включить openvpn @ server
systemctl запустить openvpn @ server
 

Примечание : @server означает, что systemd запустит openvpn с файлом конфигурации «server.conf ».
Для нескольких серверов / клиентов используйте systemctl enable openvpn @ server2, systemctl enable openvpn @ client1 и т. Д.

Создать сертификат клиента:

cd / etc / openvpn / easy-rsa /
исходные вары
./build-key client1
 

Создайте файл конфигурации клиента, который работает с клиентом Windows OpenVPN GUI со встроенным CA, сертификатом и ключом:

эхо 'клиент
Dev Tun
прото udp
удаленный vpn-01.domain.com 1194
resolv-retry бесконечно
nobind
постоянный ключ
настойчивый туннель
удаленный сервер сертификатов TLS
comp-lzo
глагол 3 '> / etc / openvpn / client1.овпн
echo '' >> /etc/openvpn/client1.ovpn
кот /etc/openvpn/ca.crt >> /etc/openvpn/client1.ovpn
echo '' >> /etc/openvpn/client1.ovpn
echo '' >> /etc/openvpn/client1.ovpn
кот /etc/openvpn/easy-rsa/keys/client1.crt >> /etc/openvpn/client1.ovpn
echo '' >> /etc/openvpn/client1.ovpn
echo '<ключ>' >> /etc/openvpn/client1.ovpn
кот /etc/openvpn/easy-rsa/keys/client1.
        
	

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *