Установка и настройка OpenVPN сервера на Ubuntu.
Life-Hack - Linux/Хакинг/Хакер/ИБ/OsintУстановка и настройка VPN сервера на операционной системе Ubuntu server является весьма полезным и важным процессом для обеспечения безопасности и защиты данных. VPN (Virtual Private Network) позволяет создать защищенное соединение между клиентскими устройствами и сервером, что позволяет передавать информацию в зашифрованном виде и обеспечивает анонимность в интернете.
OpenVPN — популярная реализация технологии VPN с открытым исходным кодом. С его помощью вы можете создать собственный VPN-сервер с высоким уровнем безопасности гибкими настройками. OpenVPN поддерживает Windows, MacOS, Linux, Android, iOS и ChromeOS, поэтому вы сможете использовать его на разных устройствах.
Обновите списки пакетов с помощью команды:
sudo apt update
Установите пакеты, необходимые для установки и настройки OpenVPN:
sudo apt install openvpn easy-rsa net-tools
После установки пакетов необходимо развернуть на сервере центр сертификации и сгенерировать корневой сертификат. Скопируйте необходимые файлы в папку /etc/openvpn/, а затем перейдите в нее:
sudo cp -R /usr/share/easy-rsa /etc/openvpn/ cd /etc/openvpn/easy-rsa
Создайте удостоверяющий центр и корневой сертификат:
export EASYRSA=$(pwd) sudo ./easyrsa init-pki sudo ./easyrsa build-ca
После ввода последней команды вам будет предложено ввести кодовую фразу. Указанный вами пароль в дальнейшем будет использоваться для подписи сертификатов и ключей.
У вас появятся 2 файла:
- /etc/openvpn/easy-rsa/pki/ca.crt — сертификат CA
- /etc/openvpn/easy-rsa/pki/private/ca.key — приватный ключ CA.
Создайте директорию, в которой будут храниться ключи и сертификаты:
mkdir /etc/openvpn/certs/
Переместите в созданную папку сертификат CA:
cp /etc/openvpn/easy-rsa/pki/ca.crt /etc/openvpn/certs/ca.crt
Создайте закрытый ключ для сервера и файл запроса сертификата с помощью команды:
./easyrsa gen-req server nopass
Подпишите созданный сертификат ключом сертификационного центра:
./easyrsa sign-req server server
Затем введите «yes» и нажмите Enter. После введите кодовую фразу, которую вы задали при настройке удостоверяющего центра.
Скопируйте сгенерированный сертификат и ключ в директорию /etc/openvpn/certs/:
cp /etc/openvpn/easy-rsa/pki/issued/server.crt /etc/openvpn/certs/ cp /etc/openvpn/easy-rsa/pki/private/server.key /etc/openvpn/certs/
Сгенерируйте файл параметров Diffie–Hellman:
openssl dhparam -out /etc/openvpn/certs/dh2048.pem 2048
Создайте ключ HMAC с помощью команды:
openvpn --genkey --secret /etc/openvpn/certs/ta.key
Теперь в директории /etc/openvpn/certs/ должно быть 5 файлов. Проверить это можно с помощью команды:
ls -l /etc/openvpn/certs/
Создание ключей клиентов OpenVPN. Сгенерируйте закрытый ключ и запрос сертификата клиента:
./easyrsa gen-req client1 nopass
Затем подпишите запрос с помощью команды:
./easyrsa sign-req client client1
Введите «yes» и нажмите Enter. Затем введите кодовую фразу, которую вы задали при настройке удостоверяющего центра.
Создание конфигурационного файла OpenVPN. Теперь приступим к созданию конфигурационного файла. Введите команду:
nano /etc/openvpn/server.conf
Скопируйте и вставьте в файл конфигурацию:
# Порт для OpenVPN port 1194 # Протокол, который использует OpenVPN ;proto tcp proto udp # Интерфейс ;dev tap dev tun # Ключи # Сертификат CA ca /etc/openvpn/certs/ca.crt # Сертификат сервера cert /etc/openvpn/certs/server.crt # Приватный ключ сервера key /etc/openvpn/certs/server.key #не распространяется и хранится в секрете # параметры Diffie Hellman dh /etc/openvpn/certs/dh2048.pem # Создание виртуальной сети и ее параметры # IP и маска подсети server 10.8.0.0 255.255.255.0 # После перезапуска сервера клиенту будет выдан прежний IP ifconfig-pool-persist /etc/openvpn/ipp.txt # Установка шлюза по умолчанию push "redirect–gateway def1 bypass–dhcp" # Разрешить использовать нескольким клиентами одну и ту же пару ключей # не рекомендуется использовать, закомментирована ;duplicate–cn # Пинговать удаленный узел с интервалом в 10 секунд # Если узел не отвечает в течение 120 секунд, то будет выполнена попытка повторного подключения к клиенту keepalive 10 120 # Защита от DoS–атак портов UDP с помощью HMAC remote-cert-tls client tls-auth /etc/openvpn/certs/ta.key 0 # файл хранится в секрете # Криптографические шифры cipher AES-256-CBC #для клиентов нужно указывать такой же # Сжатие и отправка настроек клиенту ;compress lz4–v2 ;push "compress lz4–v2" # Максимальное число одновременных подключений ;max–clients 100 # Понижение привилегий демона OpenVPN # после запуска # Не использовать для Windows ;user nobody ;group nobody # При падении туннеля не выключать интерфейсы, не перечитывать ключи persist-key persist-tun # Лог текущих соединений # Каждую минуту обрезается и перезаписываться status openvpn–status.log # Логи syslog # Используется только один. Раскомментировать необходимый # перезаписывать файл журнала при каждом запуске OpenVPN ;log openvpn.log # дополнять журнал ;log–append openvpn.log # Уровень вербальности # 0 тихий, кроме фатальных ошибок # 4 подходит для обычного использования # 5 и 6 помогают в отладке при решении проблем с подключением # 9 крайне вербальный verb 4 # Предупреждение клиента о перезапуске сервера explicit-exit-notify 1
Сохраните изменения и закройте файл.
Проверьте, не возникают ли ошибки при запуске конфигурационного файла, с помощью команды:
openvpn /etc/openvpn/server.conf
Если все работает, то вы увидите сообщение «Initialization Sequence Completed».
Теперь запустите службу OpenVPN и добавьте ее в автозагрузку:
systemctl start openvpn@server.service systemctl enable openvpn@server.service
Проверьте, работает ли служба, с помощью команды:
systemctl status openvpn@server.service
Теперь необходимо настроить маршрутизацию трафика для доступа к глобальной сети. Для этого:Создайте директорию /root/bin/:
mkdir /root/bin/
Введите команду:
nano /root/bin/vpn_route.sh
Добавьте в файл конфигурацию:
#!/bin/sh # Сетевой интерфейс для выхода в интернет DEV='eth0' # Значение подсети PRIVATE=10.8.0.0/24 if [ -z "$DEV" ]; then DEV="$(ip route | grep default | head -n 1 | awk '{print $5}')" fi # Маршрутизация транзитных IP-пакетов sysctl net.ipv4.ip_forward=1 # Проверка блокировки перенаправленного трафика iptables iptables -I FORWARD -j ACCEPT # Преобразование адресов (NAT) iptables -t nat -I POSTROUTING -s $PRIVATE -o $DEV -j MASQUERADE
Задайте права для файла:
chmod 755 /root/bin/vpn_route.sh
Выполните тестовый запуск скрипта:
bash /root/bin/vpn_route.sh
Если ошибок нет, добавьте скрипт в автозагрузку. Для этого создайте файл:
nano /etc/systemd/system/openvpn-server-routing.service
Добавьте в него следующие данные:
[Unit] Description=Включение маршрутизации OpenVPN трафика. [Service] ExecStart=/root/bin/vpn_route.sh [Install] WantedBy=multi-user.target
Добавьте созданную службу в автозагрузку:
systemctl enable openvpn-server-routing
Настройка клиента OpenVPN. Теперь необходимо создать файл конфигурации .ovpn для подключения клиента к VPN. Для этого откройте любой текстовый редактор и добавьте в него конфигурацию:
# Роль client # IP сервера OpenVPN remote 123.123.123.123 # Порт сервера OpenVPN, как в конфигурации сервера port 1194 # Интерфейс dev tun # Протокол OpenVPN, как на сервере ;proto tcp proto udp # Имя хоста, IP и порт сервера ;remote my–server–1 1194 ;remote my–server–2 1194 # Случайный выбор хостов. Если не указано, берется по порядку ;remote–random # Преобразование имени хоста # (в случае непостоянного подключения к интернету) resolv-retry infinite # Привязка к локальному порту nobind # Шлюз по умолчанию redirect-gateway def1 bypass-dhcp # При падении туннеля не выключать интерфейсы, не перечитывать ключи persist-key persist-tun # Настройка HTTP прокси при подключении OpenVPN серверу ;http–proxy–retry # retry on connection failures ;http–proxy [proxy server] [proxy port #] # Отключение предупреждений о дублировании пакетов ;mute–replay–warnings # Дополнительная защита remote-cert-tls server # Ключ HMAC key-direction 1 # Шифрование cipher AES-256-CBC # Сжатие. Если на сервере отключено, не включается #comp–lzo # Вербальность журнала verb 3 # Сертификаты <ca> *Вставьте содержимое файла /etc/openvpn/certs/ca.crt* </ca> <cert> *Вставьте содержимое файла /etc/openvpn/easy-rsa/pki/issued/client1.crt* </cert> <key> *Вставьте содержимое файла /etc/openvpn/easy-rsa/pki/private/client1.key* </key> <tls-auth> *Вставьте содержимое файла /etc/openvpn/certs/ta.key* </tls-auth>
После внесения всех изменений сохраните конфигурационный файл с расширением .ovpn.
Чтобы подключиться к нашему VPN, необходимо скачать клиент OpenVPN для вашего устройства и импортировать в него созданный конфигурационный файл .ovpn.
Мы производили установку на сервер с ОС Ubuntu 20.04 — для других версий процесс установки и настройки может отличаться.