[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Software » System settings » OpenVPN на Ubuntu Server 14.04
OpenVPN на Ubuntu Server 14.04
EsmertecДата: Среда, 05.04.2017, 15:29 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 47
Награды: 2
Репутация: 32767
Статус:
Главное условия построения защищенной сети - наличие белого IP адреса (он же статический). Уточнить или купить его можно у вашего текущего провайдера, обычно стоит не много, и облагается ежемесячной абонентской платой.

Для развертывании сервера будет достаточно 40Гб пространства на жестком диске, 4 процессорных ядра (если вы используете виртуальную машину) 4Гб ОЗУ, 1 сетевой адаптер.

После установки Ubuntu Server сразу зайдем в настройки сетевого адаптера и пропишем статический IP адрес внутренней сети нашего сервера. Все сетевые настройки находятся в файле /etc/network/interfaces, поэтому откроем любым текстовым редактором и пропишем интерфейсы желаемый IP адрес:
Код
sudo nano /etc/network/interfaces

Я использую редактор nano, для своего сервера я буду использовать IP адрес 192.168.1.115, конфиг интерфейсов будет выглядеть следующим образом:
Код
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 192.168.1.115 - внутренний IP адрес OpenVPN сервера
        netmask 255.255.255.0 - используемая маска
        gateway 192.168.1.1 - шлюз сети
        dns-nameservers 8.8.8.8 - тут будут DNS сервера Вашего провайдера

перезагружаем сервер
Код
sudo reboot

после чего убеждаемся, что интернет на нашем сервере до сих пор есть и продолжаем развертку. Зайдем под Root пользователем для удобства.
Код
sudo -i

После чего установим пакет OpenVPN
Код
apt-get install openvpn

Защита соединения в OpenVPN в данном случае строится на использовании сертификатов и ключей для сервера и для клиентов. Для их генерации в пакете OpenVPN имеются специальные скрипты, расположенные в /usr/share/doc/openvpn/examples/easy-rsa/2.0 Перед началом работы скопируем их, чтобы не изменять оригиналы.Для 14.04 LTS, с лета 2013 года easy-rsa не входит в OpenVPN и команда указанная выше не сработает(не найдет easy-rsa), тогда делаем следующее:
Код
apt-get install easy-rsa

Код
mkdir /etc/openvpn/easy-rsa
cp -r /usr/share/easy-rsa /etc/openvpn/easy-rsa/2.0

Переходим в созданную директорию, где и займёмся генерацией ключей и сертификатов
Код
cd /etc/openvpn/easy-rsa/2.0

Редактируем файл переменных
Код
nano vars

Файл vars отвечает за автоматическое заполнение полей при создании сертификатов, т.е. если Вам нужно будет с генерировать 100+ сертификатов, при этом Вы не хотите тратить время на заполнение всех полей, которые будут типичными для всех сертификатов, то они будут автоматически подобраны из этого файла.
Код
# Почти в самом низу файла, заполняем информацию о сертификатах по умолчанию (ваши значения).
export KEY_COUNTRY="RU" - Ваше местоположение
export KEY_PROVINCE="Amur Region" - Ваш регион, по идее то же самое, что и предыдущее поле
export KEY_CITY="Blagoveschensk" - Ваш город
export KEY_ORG="Organization" - Ваша организация сокращенно
export KEY_EMAIL="vash@email.tut" - Ваш электронный адрес почты
export KEY_OU="MyOrganizationalUnit" - Ваша организация
# PKCS11 я не использовал, поэтому оставил без изменений. Кто шарит нафига эта штука, напишите ниже в теме.
export PKCS11_MODULE_PATH=changeme
export PKCS11_PIN=1234

#Добавить строчку
export KEY_ALTNAMES="MyOpenVPN"

После чего сохраняем файл и выходим из редактора.копируем конфиг openssl
Код
cp openssl-1.0.0.cnf openssl.cnf

Загружаем переменные
Код
source ./vars

Очищаем от старых сертификатов и ключей папку keys и создаем серийный и индексные файлы для новых ключей
Код
./clean-all

Создаем сертификат. По умолчанию поля будут заполняться данными, введенными ранее в vars, поэтому можно ничего не менять.
Код
./build-ca

Создаем ключ сервера
Код
./build-key-server server

В конце соглашаемся с запросом на подпись и добавление сертификата в базу.
Создаем ключ Диффи-Хеллмана
Код
./build-dh

Cоздаем ключ для tls-аутификации
Код
openvpn --genkey --secret keys/ta.key

Перемещаем сертификаты
Код
cp -r /etc/openvpn/easy-rsa/2.0/keys/ /etc/openvpn/

Создание файла конфигурации сервера
Копируем архив конфигураций сервера в папку с нашим Openvpn, после чего переходим в директорию с нашей впн, распаковываем конфиг для дальнейшего редактирования:
Код
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
cd /etc/openvpn
gunzip -d /etc/openvpn/server.conf.gz


Код
nano /etc/openvpn/server.conf

Код
# Порт по которому будет работать ваша сеть, этот порт должен быть открыт на вашем шлюзе
port 443
# Протокол может быть UDP или TCP, я выбрал 1-й вариант.
proto udp
# Если вы выберите протокол TCP, здесь должно быть устройство tap. Однако, это вариант я не проверял, поэтому ищите $
dev tun

# Указываем где искать ключи
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key  # This file should be kept secret
dh /etc/openvpn/keys/dh2048.pem

# Задаем IP и маску виртуальной сети. Произвольно, но если не уверены лучше делайте как показано здесь
server 10.0.1.0 255.255.255.0

topology subnet

# Указыем, где хранятся файлы с настройками IP-адресов клиентов (создадим ниже)
client-config-dir /etc/openvpn/ccd

# Запоминать динамически выданные адреса для VPN-клиентов и при последующих подключениях назначать те же значения.
ifconfig-pool-persist ipp.txt

# Указываем сети, в которые нужно идти через туннель (сеть-клиента) это возможные адреса удаленных клиентов.
route 192.168.0.0 255.255.255.0
route 192.168.1.0 255.255.255.0
route 102.168.100.0 255.255.255.0

# Включаем TLS
tls-server
tls-auth /etc/openvpn/keys/ta.key 0
tls-timeout 120
auth SHA1 # по-умолчанию. Можно ещё MD5.
cipher BF-CBC

# Если нужно, чтобы клиенты видели друг друга раскомментируйте
client-to-client

keepalive 10 120

# Сжатие трафика
comp-lzo

# Максимум клиентов
max-clients 250

user nobody
group nogroup

# Не перечитывать ключи, не закрывать и переоткрывать TUN\TAP устройство, после получения SIGUSR1 или ping-restart
persist-key
persist-tun

status openvpn-status.log
log /var/log/openvpn.log
# Детальность логирования
verb 9
# Защита от повторов (максимум 20 одинаковых сообщений подряд)
mute 20

# Файл отозванных сертификатов. Разремить, когда такие сертификаты появятся.
crl-verify /etc/openvpn/easy-rsa/2.0/keys/crl.pem

Создадим директорию для клиентских конфигов
Код
mkdir /etc/openvpn/ccd

Можно запускать наш сервер OpenVPN
Код
service openvpn restart

Смотрим список интерфейсов
Код
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.0.1.1  P-t-P:10.0.1.1  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)

значит VPN-сервер завелся. Если нет, то смотрим лог
Код
tail -f /var/log/openvpn.log


Создание ключей и сертификатов
Переходим в созданную директорию, где и замёмся генерацией ключей и сертификатов
Код
cd /etc/openvpn/easy-rsa/2.0

Загружаем переменные
Код
source vars

Создаем ключ клиента
Код
./build-key client

Если хотим защитить ключ паролем, то генерируем его другой командой
Код
./build-key-pass client

В этом случае при запуске соединения нужно будет каждый раз вводить пароль на ключ.
Присвоение статических адресов клиентам
Если Вы хотите присвоить каждому клиенту свой IP адрес, либо у вас много рользователей и нужно использовать 240+ IP адресов в одной защищенной сети, нужно создать папку ccd в директории с openvpn сервером
Код
mkdir /etc/openvpn/ccd

После чего создать там файл с именем клиента для которого вы собираетесь использовать статический IP адрес, допустим это будет client1.
Код
cd /etc/openvpn/ccd

Код
touch /etc/openvpn/ccd/client1

После чего открываем файл
Код
nano /etc/openvpn/ccd/client1

и редактируем его
Код
ifconfig-push 10.0.1.186 255.255.255.0 - Желаемый статический IP адрес и маска сети клиента
push «route 10.0.1.0 255.255.255.0» - Сеть сервера
push «route 192.168.0.0 255.255.255.0» - Локальная сеть в которой находится клиент
push «route 192.168.1.0 255.255.255.0» - Локальная сеть в которой находится клиент

если локальная сеть клиента меняется не так часто, то можно оставлять одну строчку, но мне лениво менять файлы клиентов, поэтому я прописал обе сети на будущее ))))

Создание файла конфигурации клиента
Конфигурация клиента мало чем отличается от сервера, оно и понятно, но есть не большие изменения:
Код
remote 192.168.1.115 443 - IP адрес сервера, если клиент находится не в той же сети, что и сервер тут должен быть указан белый IP адрес, это то саме условие о котором говорилось ранее.
client
dev tun
proto udp
resolv-retry infinite # this is necessary for DynDNS
nobind
cipher BF-CBC
user nobody
group nogroup
persist-key
persist-tun
dh C:\\OpenVPN\\ssl\\dh2048.pem
ca C:\\OpenVPN\\ssl\\ca.crt
cert C:\\OpenVPN\\ssl\\client1.crt
key C:\\OpenVPN\\ssl\\client1.key
tls-client
tls-auth C:\\OpenVPN\\ssl\\ta.key 1
auth SHA1 # по-умолчанию. Можно MD5
comp-lzo
verb 4
mute 20
#redirect-gateway
#show-net-up

На этом настройки закончены, если нужно подключиться с windows то Вам нужно будет скачать клиент Openvpn с офф. сайта, конфиг клиента выше написан под windows, т.к. это ос наиболее популярна, но конфиг легко адаптируется и под другие ОС.
 
EsmertecДата: Среда, 05.04.2017, 16:44 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 47
Награды: 2
Репутация: 32767
Статус:
Имеется Ubuntu server 14.04.5 на последнем ядре используется в качестве openvpn сервера, стоит это все дело на Hyper-v сервере соответственно, недавно понял, что openvpn сервер немного умирает когда к нему коннектица 250+ пользователей, на момент установки ubuntu я не рассчитывал, что придется подключать такое кол-во пользователей. Проблема заключается в том, что если в параметрах виртуальной машины добавлять ядра на ubuntu, она отлично загружается, но в итоге не видит интернет (т.е. не пингуется ни один хостинг), если вернуть все обратно, то все отлично работает.


В: как добавить в ubuntu server ядер, чтоб оно еще и работало нормально? =)
О: Решение оказалось, как ни странно, под носом, использовалось ядро GNU/Linux 3.13.0-76-generic i686, которое не хотело работать после "апгрейда" железа, командой:
Код
sudo apt-get install --install-recommends linux-generic-lts-xenial

Ставим последнее стабильное ядро для 14.04.5 (оно же GNU/Linux 4.4.0-38-generic i686), и спокойно меняем параметры виртуального железа в Hyper-v, после чего все завелось и работает отлично!
Прикрепления: 5291098.png(71.5 Kb)
 
EsmertecДата: Среда, 26.04.2017, 10:11 | Сообщение # 3
Генералиссимус
Группа: Администраторы
Сообщений: 47
Награды: 2
Репутация: 32767
Статус:
Команды для отзыва сертификата:
Код
cd /etc/openvpn/easy-rsa/2.0
source ./vars
./revoke-full client


После ввода команд увидите сообщение:

последняя строчка говорит о том, что сертификат не прошел проверку, и больше не сможет подключаться к серверу
Прикрепления: 4842268.png(75.5 Kb)
 
Форум » Software » System settings » OpenVPN на Ubuntu Server 14.04
  • Страница 1 из 1
  • 1
Поиск: