Пет хилядна OpenVPN връзка. Как работи? Минимална Iptables конфигурация за OpenVPN клиентски достъп до локалната мрежа

Как работи?

След завършване на настройката Отворете VPN сървърще може да приема и пренасочва външни защитени с SSL мрежови връзки към виртуалния мрежов адаптер (tun/tap), създаден при стартирането на VPN услугата, без да засяга правилата за обработка на трафика на други интерфейси (външен интернет адаптер и т.н.) Благодаря с тази технология можете да си осигурите достъп до отдалечен сървър и група устройства, разположени в неговата локална мрежа, дори ако основният интернет адаптер на този сървър не приема входящи връзки от обществени мрежи и/или не ги маршрутизира до необходимите машини, разположени в неговата LAN мрежа.

Ако е необходимо, можете също да конфигурирате маршрутизиране на интернет трафик на OpenVPN клиенти през VPN сървъра (необходимите стъпки за това са описани в това ръководство). При такова пренасочване хостът, обработващ VPN връзките, също ще изпълнява функцията на прокси сървър (Proxy) - уеднаквява правилата за мрежовата активност на потребителя и тунелира клиентския интернет трафик от негово име.

Системни изисквания

Преди да започнете да инсталирате OpenVPN, уверете се, че необходимите основни настройки по-долу са правилно конфигурирани на вашия сървър. (ако използвате виртуален сървър, тези три стъпки вече са завършени и могат да бъдат пропуснати):

  1. Сървърът има поне един статичен външен IP адрес (алтернативно можете да използвате DynamicDNS услуги, които автоматично актуализират информация за текущия IP адрес на устройството, например DynDNS)
  2. Разрешено изтегляне на софтуерни пакети от официални хранилища. За да проверите това, отворете файла на сървъра /etc/apt/sources.listи се уверете, че мрежовите адреси са като "deb http://..."присъства и не е коментиран (отсъства # в началото на реда с URL адреса на хранилището). Ето например как изглежда американското огледало на хранилищата на Ubuntu Precise, добавени към sources.list: # Вижте http://help.ubuntu.com/community/UpgradeNotes за това как да надстроите до
    # по-нови версии на дистрибуцията.
    deb http://us.archive.ubuntu.com/ubuntu/ прецизен основен ограничен
    deb-src http://us.archive.ubuntu.com/ubuntu/ прецизен основен ограничен
  3. Мрежовите параметри са правилни: име на хост, IP адрес(и) на вашия сървър и неговите DNS параметри(последният параметър ще бъде необходим за маршрутизиране на клиентски интернет трафик). Намерете в списъка мрежови настройкивъзможно във файл /etc/hosts.

За да осигурите приемливо ниво на сигурност на машината, ние също ви препоръчваме първо да прочетете нашата уводна статия за конфигуриране на инструменти за сигурност на Linux.

Инсталиране на OpenVPN на сървъра

За да инсталирате пакета openvpnкъм сървъра, трябва да изпълните следните команди последователно:

  1. Актуализирайте хранилищата на пакети:
    apt-get актуализация
  2. Изтеглете наличните актуализации за инсталирани програми:
    apt-get надграждане
  3. Инсталирайте пакет openvpn:
    apt-get инсталирате openvpn
  4. OpenVPN включва набор от инструменти за криптиране лесно-RSA. За нормална работа на демона, easy-rsa скриптовете трябва да бъдат поставени в директорията /etc/openvpn:
    cd /etc/openvpn/ && make-cadir easy-rsa

Подготовка на публични ключове (PKI - Public Key Infrastructure)

На на този етаптрябва да генерирате и подпишете двойки потребителски и сървърни ключове. За проверка на създадените двойки ще използваме сертифициращ орган (CA - Certificate Authority), разположен на самия VPN сървър. И така, нека създадем CA:

  1. Отидете в папката /etc/openvpn/easy-rsa: cd /etc/openvpn/easy-rsa
  2. Създайте символна връзка openssl-1.0.0.cnf -> openssl.cnf: ln -s openssl-1.0.0.cnf openssl.cnf
  3. Инициализиране на скрипта променливи:източник ./варс
  4. В отговор ще получите следното известие: ЗАБЕЛЕЖКА: Ако стартирате ./clean-all, ще направя rm -rf на /etc/openvpn/easy-rsa/keys
  5. Стартирайте скрипт чисто-всичко: ./чисти-всичко
  6. Изпълнение на скрипт изграждане-окза създаване на сертифициращ орган. В отговор на подканите, които се появяват, въведете необходимата информация (с латински букви). Ако не предоставите персонализирани стойности за нито едно от задължителните полета, стойността по подразбиране [предоставена в квадратни скоби]: ./build-ca
  7. Сега можете да продължите към генериране на двойка публичен сертификат/личен ключ за VPN сървъра.

Генериране на сървърен ключ/сертификат

  1. Генерирайте ключ: ./build-key-server server Попълнете информацията, подобна на изграждане-ок. Полетата „Име на компанията“ и „Парола за предизвикателство“ могат да бъдат оставени празни.
  2. След успешно генериране на ключ ще се появи заявка той да бъде подписан от сертифициращ орган. Въведете даза потвърждение.

Генериране на клиентски ключове

  1. Създайте двойка ключове за потребителя: ./build-key client1 Забележка:генериран ключов файл client1.keyнекриптиран по подразбиране. Това позволява на всеки с достъп до този файл да се свърже с вашата виртуална частна мрежа. За да премахнете тази функция, можете да използвате командата ./build-key-pass client1вместо ./build-key client1. В този случай ключът ще бъде шифрован с избраната от вас парола.
  2. Повторете процедурата за генериране за всяко от бъдещето VPN клиенти, замествайки клиент1до желаното име. Внимание:Имената на ключовете трябва да са уникални.
    Можете да генерирате клиентски ключове по-късно. За да направите това, ще трябва да инициализирате отново скрипта вар(екип източник ./варс), след което стартирайте процедурата за генериране на необходимия ключ.

Задаване на параметри на протокола Diffie-Hellman

Параметрите на протокола Diffie-Hellman определят как се обменят данни между OpenVPN сървъра и клиентите. След като създадете файла .pem, ще посочим параметрите, според които сървърът ще инициира защитени връзки с потребителите.

Файлът .pem трябва да се генерира с помощта на командата: ./build-dh Отговорът ще покаже набор от произволни знаци, показващи, че процесът на генериране е в ход. След приключване на процедурата в указателя etc/openvpn/easy-rsa/keysфайлът ще се появи dh1024.pem.

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

След като генерирате ключовете, трябва да ги прехвърлите в директориите, използвани от сървърните/клиентските приложения на OpenVPN.

На сървъра:

  1. Отидете до директорията, където се съхраняват създадените ключове: cd /etc/openvpn/easy-rsa/keys
  2. Копирайте сертификата и ключа на сертифициращия орган (CA), файла с настройки на DH, ключа и сертификата на VPN сървъра в директорията /etc/openvpn: cp ca.crt ca.key dh1024.pem server.crt server.key /etc/openvpn ВАЖНО: Изброените по-горе файлове са основата за функционалността и сигурността на VPN. Компрометирането им може да има неблагоприятни последици. Съхранявайте ги в защитено хранилище и не прехвърляйте тези файлове през незащитени канали.

На клиентското устройство:

Копирайте файловете ca.crt, client1.crt, client1.keyкъм папката на клиентското устройство, използвана от приложението OpenVPN (например за Linux това е /etc/openvpn)

Конфигурация на OpenVPN сървър и клиент

В този раздел на инструкциите ще създадем два конфигурационни файла. Първият е файлът с настройки за OpenVPN сървъра, вторият е параметрите на VPN връзката за клиентското устройство. Всеки OpenVPN клиент трябва да използва свой собствен конфигурационен файл (изключение е свързването на множество потребители с помощта на една двойка ключове, обща за всички).

Настройки на сървъра:

  1. Като отправна точка в конфигурацията можете да използвате примерния конфигурационен файл на OpenVPN сървър, който съдържа списък с налични параметри за работа на програмата и подробни обяснения на тези параметри. Копирайте този документ в директория /etc/openvpn/за да го редактирате и след това да стартирате VPN сървъра: gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz >/etc/openvpn/server.conf
  2. Файлът, копиран в предишната стъпка server.confе напълно работеща конфигурация. Достатъчно е за нормална работа на сървъра, ако не е необходимо да тунелирате целия клиентски интернет трафик през VPN сървър или други специфични опции.
    Единственото нещо, на което определено трябва да обърнете внимание, са имената и пътищата на сървърния сертификат (.crt) и неговите ключови (.key) файлове, както и CA сертификата (.crt).
    Имена на ключове, разположени в директорията /etc/openvpnтрябва напълно да съвпадат с имената на ключовете в конфиг server.conf. Можете да проверите това с помощта на следните команди:
    • Разберете имената на ключовите файлове (два файла.crt и един.key) в папката /etc/openvpnс помощта на командата: ls /etc/openvpn
    • Проверяваме дали имената на показаните по-горе файлове съответстват на имената на ключовете във файла /etc/openvpn/server.conf(след блок # Основен SSL/TLS сертификат (ca), сертификат (cert) и частен ключ (key)): nano /etc/server.conf Ако имената са различни, направете съответните корекции в конфигурационния файл (не в имената на файловете в папката openvpn) и го запазете (CTRL+X).
    • Рестартирайте OpenVPN, за да приложите промените: /etc/init.d/openvpn рестартирайте

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

  1. Копираме примерния клиентски конфигурационен файл във всяка удобна директория (в нашия случай домашната директория на потребителя (home), от чието име изпълняваме командите: gunzip -c /usr/share/doc/openvpn/examples/sample- config-files/client.conf gz>/home/1cloud
  2. Отидете в папката ключовеи копирайте необходимите ключови файлове (в нашия случай: client1.key, client1.crt, ca.crt) в същата директория (/home/1cloud): cd /etc/openvpn/easy-rsa/keys > cp client1.key client1.crt ca.crt /home/1cloud
  3. Отворете конфигурацията на клиента: nano /home/1cloud/client.conf
  4. Намиране на блок # Името на хоста/IP и порта на сървъраи вместо това example.comпосочете IP адреса на OpenVPN сървъра: # Името на хоста/IP и порта на сървъра.
    # Можешимат множество отдалечени записи
    # за балансиране на натоварването между сървърите.
    дистанционно example.com 1194
  5. В същия файл намираме блока #SSL/TLS параметри. и проверете имената на файловете с потребителски ключове (подобно на начина, по който го направихме в конфигурацията на сървъра): # SSL/TLS parms.
    # Вижте конфигурационния файл на сървъра за повече
    # описание. Най-добре е да се използва
    # отделна двойка файлове .crt/.key
    # за всеки клиент. Единичен ок
    # файл може да се използва за всички клиенти.
    caca.crt
    сертификат клиент1.crt
    ключ client1.key
  6. Запазете конфигурационния файл на клиента ( CTRL+X).
  7. Сега трябва да прехвърлите потребителски файлове client.conf, client1.key, client1.crt, ca.crtкъм клиентското устройство, от което ще се свържете към VPN сървъра. Това може да стане чрез FTP, SCP или просто чрез създаване на файлове с еднакви имена на потребителското устройство (чрез nano в Linux, чрез Notepad в Windows) и пълно копиране на съдържанието на изходните документи от отдалечения сървър в тях.
    внимание!Някои клиентски приложения на OpenVPN (например на Android и iOS) работят с разширението на конфигурационния файл .ovpn, а не .conf. Ако срещнете този проблем, просто преименувайте съответно файла с настройки на клиента.
    Поставяме прехвърлените файлове в папката, с която работи OpenVPN приложението, което използвате (вижте документацията към програмата).
  8. Свържете се със сървъра. След успешно свързване, виртуалната мрежов адаптер. Можете да проверите това на Linux с помощта на командата ifconfig(трябва да се покаже адаптер TUN), на операционна система с графичен интерфейс, можете да проверите правилността на връзката директно в програмата за VPN връзка.

внимание! Тъй като все още не сме конфигурирали тунелиране на целия интернет трафик през VPN сървъра, достъпът до интернет на клиентското устройство ще спре да функционира след свързването му към виртуалната частна мрежа. Инструкциите за маршрутизиране на интернет трафика на потребителите през VPN сървър са представени по-долу.B.

Тунелирайте целия клиентски трафик на виртуална частна мрежа през VPN сървъра

В тази конфигурация ще конфигурираме маршрутизирането на целия VPN потребителски трафик през OpenVPN сървъра, като същевременно поддържаме SSL криптиране от клиент към сървър.

  1. На сървъра отворете конфигурационния файл на OpenVPN server.conf: nano /etc/openvpn/server.conf
  2. Разкоментирайте конфигурационния ред по-долу (премахнете символа ; в началото на реда): натиснете "redirect-gateway def1 bypass-dhcp"
  3. Запазете и затворете файла (CTRL+X)
  4. Отворете файла /etc/sysctl.conf:
    nano /etc/sysctl.conf
  5. Разкоментирайте или добавете следния ред в отворения файл, за да сте сигурни, че препращането на IPv4 трафик е разрешено: net.ipv4.ip_forward=1
  6. Запазете и затворете файла (CTRL+X)
  7. Въведете командата, за да приложите промените към текущата сесия: echo 1 > /proc/sys/net/ipv4/ip_forward
  8. Въведете последователно следните команди(един ред=една команда), за да конфигурирате защитната стена iptablesза пренасочване на трафик през VPN:







  9. Добавете същия списък с правила за iptables към файла /etc/rc.localтака че да се прилагат при всяко стартиране на системата: nano /etc/rc.local
    Съдържание на файла:
    #!/bin/sh -e
    #
    # [...]
    #
    iptables -A НАПРЕД -m състояние - състояниеСВЪРЗАНИ, УСТАНОВЕНИ -j ПРИЕМАТ
    iptables -A НАПРЕД -s 10.8.0.0/24 -j ПРИЕМАНЕ
    iptables -A НАПРЕД -j ОТХВЪРЛЯНЕ
    iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
    iptables -A INPUT -i tun+ -j ACCEPT
    iptables -A НАПРЕД -i tun+ -j ПРИЕМАНЕ
    iptables -A INPUT -i tap+ -j ПРИЕМАНЕ
    iptables -A НАПРЕД -i tap+ -j ПРИЕМАНЕ
    изход 0
    Запазете и затворете документа (CTRL+X)
  10. Горните настройки позволяват целият клиентски трафик, с изключение на DNS заявките, да бъде препращан през VPN сървъра. За да препращате DNS заявки, трябва да инсталирате пакета dnsmasqи правете промени във файла /etc/openvpn/server.conf
  11. Инсталирайте dnsmasq:
    Ако използвате Ubuntu 12.04: apt-get install dnsmasq && dpkg-reconfigure resolvconf Ще се появи съветник за настройка. По първа точка (подгответе /etc/resolv.conf за динамични актуализации)ние отговаряме да, тогава не (Добавяне на оригинален файл към динамичен файл?)
    Ако използвате Debian 7: apt-get инсталирайте dnsmasq resolvconf
  12. Сега трябва да редактирате dnsmasq: nano /etc/dnsmasq.conf Уверете се, че следните параметри не са коментирани или добавени към файла: listen-address=10.8.0.1
    bind-интерфейси
  13. След това трябва да добавите към файла /etc/network/interfacesинформация за използваните DNS сървъри. Може би във вашия случай тази информация вече присъства (както например в случай на сървъри, наети на сайта), но ако не, добавете я, както следва:
    Отворете конфигурационния файл на интерфейса: nano /etc/network/interfaces Добавете реда dns-nameservers, указващ адресите на DNS сървърите, които използвате (например един сървър от вашия интернет доставчик и един публичен сървър на google: 8.8.8.8): # Основният мрежов интерфейс
    авто eth0
    iface eth0 inet dhcp
    DNS-сървъри за имена 77.88.8.8 8.8.8.8
  14. При стандартни настройкиПомощната програма dnsmasq се изпълнява преди стартирането на адаптера за виртуална настройка на OpenVPN. Това причинява грешки и прекратяване на dnsmasq. За да коригирате този проблем, трябва да добавите към файла /etc/rc.localред с команда, която рестартира dnsmasq след инициализиране на OpenVPN. Този ред трябва да бъде поставен във файла след параметрите на iptables, които посочихме по-рано: nano /etc/rc.local
    Съдържание на файла:
    ...
    iptables -A НАПРЕД -i tun+ -j ПРИЕМАНЕ
    iptables -A INPUT -i tap+ -j ПРИЕМАНЕ
    iptables -A НАПРЕД -i tap+ -j ПРИЕМАНЕ
    /etc/init.d/dnsmasq рестартирайте
    изход 0
  15. Последното нещо, което трябва да направите, е да разкоментирате реда, който позволява на клиентите на OpenVPN да използват DNS сървъри, във файл /etc/openvpn/server.conf:
    nano /etc/openvpn/server.conf Съдържание на файла: ....
    натиснете "dhcp-option DNS 10.8.0.1"
  16. Рестартирайте сървъра, за да приложите всички настройки и проверете коректността им: рестартирайте

Тази хижа е извадка от много статии с минимално описание на стъпките и без вода. Предполага се, че сертифициращият орган и OpenVPN сървърът се намират на един и същи хост. Освен това ми омръзна всеки път да търся в гугъл тази тема, защото... По-голямата част от ръководствата са остарели, което означава, че надграждането на услугата отнема много време.

Конфигуриране на OpenVPN за клиентски достъп до ресурси на локалната мрежа

сървър

Конфигурация на сървъра

Инсталирайте OpenVPN и създайте потребител със същото име, под който ще работи демонът:

Apt install openvpn adduser --system --no-create-home --disabled-login --group openvpn

Създайте конфигурация на openvpn сървър със следното съдържание:

Mcedit /etc/openvpn/server.conf порт 1194 proto udp dev tun0 #user openvpn #group openvpn dh /etc/openvpn/keys/dh.pem ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys /vpn-server.crt ключ /etc/openvpn/keys/vpn-server.key tls-auth /etc/openvpn/keys/ta.key 0 #crl-verify /etc/openvpn/keys/crl.pem script-security 2 шифър AES-256-CBC tls-сървър comp-lzo заглушаване 10 persist-key persist-tun max-clients 50 keepalive 10 900 client-config-dir /etc/openvpn/ccd ifconfig-pool-persist /etc/openvpn/ccd /ipp.txt сървър 10.15.0.0 255.255.255.0 ### Тези опции изискват известно обяснение. # Push (прехвърляне към клиента) вашия DNS сървър push "dhcp-option DNS 192.168.0.1" # Push името на домейна push "dhcp-option DOMAIN mydomain.com" # Push маршрута на локалната подмрежа. За да могат клиентите да имат достъп до него, натиснете "route 192.168.0.0 255.255.254.0" ### status /var/log/openvpn/openvpn-status.log 1 status-version 3 log-append /var/log/openvpn / openvpn-server.log глагол 5

Създайте директории за регистрационни файлове и съхраняване на клиентски IP адреси:

Mkdir /var/log/openvpn/ mkdir /etc/openvpn/ccd

Авторизационен център и ключове

Отидете във вашата домашна директория, изтеглете и разопаковайте easyrsa 3 версия:

Cd wget https://github.com/OpenVPN/easy-rsa/archive/master.zip разархивирайте master.zip

Отидете в директорията easyrsa3 и декларирайте променливи за нея:

Cd ~/easy-rsa-master/easyrsa3 cp ~/easy-rsa-master/easyrsa3/vars.example ~/easy-rsa-master/easyrsa3/vars

Инициализиране на PKI (инфраструктура с публичен ключ):

./easyrsa init-pki

Създайте основен сертификат. Задължително за влизане сложна паролаи общо име на сървъра, например моя vpn сървър:

./easyrsa build-ca

Създайте ключове на Diffie-Hellman:

./easyrsa gen-dh

Създайте заявка за сертификат за OVPN сървъра. Моля, обърнете внимание, че сертификатът няма да има парола (параметър nopass), в противен случай OpenVPN ще иска тази парола всеки път, когато стартирате:

./easyrsa gen-req vpn-сървър nopass

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

./easyrsa sign-req сървър vpn-сървър

Копирайте получените ключове в работната директория на openvpn:

Mkdir -p /etc/openvpn/keys cp ~/easy-rsa-master/easyrsa3/pki/ca.crt /etc/openvpn/keys cp ~/easy-rsa-master/easyrsa3/pki/issued/vpn-server. crt /etc/openvpn/keys cp ~/easy-rsa-master/easyrsa3/pki/private/vpn-server.key /etc/openvpn/keys cp ~/easy-rsa-master/easyrsa3/pki/dh.pem / и т.н./openvpn/ключове

Създайте „HMAC защитна стена“ за защита срещу DoS атаки и наводняване на UDP порт:

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

Стартирайте openvpn:

/etc/init.d/openvpn стартиране

Клиент

Ключове

Създаване на заявка за защитен с парола ключ за клиент (необходим за въвеждане при всяко свързване) с името Потребител:

Cd ~/easy-rsa-master/easyrsa3 ./easyrsa gen-req Потребител

./easyrsa gen-req Потребителски nopass

Създаване на потребителски ключ (по подразбиране от vars за период от 10 години):

./easyrsa sign-req клиент Потребител

Или с ограничение на валидност на сертификата от 90 дни (след изтичане можете да го преиздадете само):

./easyrsa sign-req клиент Потребителски дни 90

Прехвърлете тези файлове на клиента:

~/easy-rsa-master/easyrsa3/pki/issued/User.crt ~/easy-rsa-master/easyrsa3/pki/private/User.key ~/easy-rsa-master/easyrsa3/pki/ca.crt / etc/openvpn/keys/ta.key

Конфиг

client dev tun proto udp remote xxx.xxx.xxx.xxx 1194 шифър AES-256-CBC tls-клиент ca "ca.crt" tls-auth "ta.key" 1 cert "User.crt" ключ "User.key" отдалечен сертификат-tls сървър comp-lzo tun-mtu 1500 mssfix 1450 глагол 3 nobind resolv-retry infinite

За удобство и петте клиентски файла могат да бъдат

Анулиране на сертификати

Генериране на анулиран ключов файл:

Cd ~/easy-rsa-master/easyrsa3 ./easyrsa gen-crl

Ln -s ~/easy-rsa-master/easyrsa3/pki/crl.pem /etc/openvpn/keys

Добавете реда към /etc/openvpn/server.conf

Crl-проверете /etc/openvpn/keys/crl.pem

Отмяна на потребителски сертификат:

./easyrsa отмени потребител

Всеки път, когато отмените сертификат, трябва да актуализирате crl.pem, за да направите промени в него:

./easyrsa gen-crl

Забележка: ключов файл със същото име не може да бъде създаден, докато старият не бъде отменен. Ако се опитате да създадете сертификат със съществуващо име, ще получите грешка:

Неуспешно актуализиране на базата данни Easy-RSA грешка: неуспешно подписване (изход от openssl по-горе Може да се наложиповече подробности)

Минимална Iptables конфигурация за OpenVPN клиентски достъп до локалната мрежа

# Разрешаване на препращане в ядрото echo "1" > /proc/sys/net/ipv4/ip_forward # Разрешаване на входящи връзки към OVPN порта iptables -A INPUT -p UDP --dport 1194 -j ACCEPT # Разрешаване на препращане между OVPN подмрежата и локалния # Освен това, поставете ги в началото на веригата, ако има много правила iptables -A FORWARD -s 10.15.0.0/24 -d 192.168.0.0/24 -j ACCEPT iptables -A FORWARD -d 10.15.0.0 /24 -s 192.168.0.0/ 24 -j ПРИЕМАНЕ

Настройка на OpenVPN за достъп до интернет

Попаднах на една тема, посмях се и реших да добавя към бележката. Ако OpenVPN е необходим за достъп до интернет, трябва да направите OpenVPN шлюз по подразбиране и да коригирате правилата на iptables.
Всъщност конфигурацията на сървъра:

Порт 1194 proto udp dev tun0 dh /etc/openvpn/keys/dh.pem ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/vpn-server.crt ключ /etc/openvpn/keys/vpn -server.key tls-auth /etc/openvpn/keys/ta.key 0 crl-verify /etc/openvpn/keys/crl.pem script-security 2 cipher AES-256-CBC tls-server comp-lzo mute 10 persist -key persist-tun max-clients 50 keepalive 10 900 client-config-dir /etc/openvpn/ccd ifconfig-pool-persist /etc/openvpn/ccd/ipp.txt сървър 10.15.0.0 255.255.255.0 push "redirect-gateway def1" състояние /var/log/openvpn/openvpn-status.log 1 status-version 3 log-append /var/log/openvpn/openvpn-server.log глагол 5

Конфигурацията за клиента няма да се различава от горната.

Минимална Iptables конфигурация за OpenVPN клиенти за достъп до интернет

правила на iptables:

# Разрешаване на препращане в ядрото echo "1" > /proc/sys/net/ipv4/ip_forward # Разрешаване на входящи връзки към OVPN порт iptables -A INPUT -p UDP --dport 1194 -j ACCEPT # Разрешаване на транзитни пакети за OpenVPN iptables subnet -A FORWARD -s 10.15.0.0/24 -j ACCEPT iptables -A FORWARD -d 10.15.0.0/24 -j ACCEPT # x.x.x.x - външен IP на сървъра, ако е статичен iptables -t nat -A POSTROUTING - s 10.15.0.0/ 24 -j SNAT --to-source x.x.x.x # Ако външният IP на сървъра е динамичен, използвайте това вместо предишното правило # iptables -t nat -A POSTROUTING -s 10.15.0.0/24 - j МАСКАРАД

Някои бележки

За да изключите възможността за mitm атака, чиято грешка изглежда така в регистрационните файлове на клиента:

ПРЕДУПРЕЖДЕНИЕ: Не е активиран метод за проверка на сертификат на сървър. Вижте http://openvpn.net/howto.html#mitm за повече информация.

Сервира отдалечен параметър-cert-tls сървър, който вече присъства в конфигурацията на клиента.

Списък на валидни и прекратени сертификати

Списъкът с валидни и отменени сертификати може да се види във файла ~/easy-rsa-master/easyrsa3/pki/index.txt. Началото на описателния ред за всеки сертификат започва с буквите V или R, което означава Валиден и Отменен, например:

V 241019110411Z 01 неизвестен /CN=vpn-сървър R 241019110842Z 141202085241Z 02 неизвестен /CN=Потребител1 R 241020105823Z 141201103442Z 03 неизвестен /CN=тест R 150301095139Z 14 1202085814Z 04 неизвестен /CN=Потребител2 V 141203091049Z 05 неизвестен /CN=Потребител3

Както виждате първият и петият сертификат са валидни, 2-4 са анулирани.

Ако клиентът е на Windows

Слагам OpenVPN GUIкато изтеглите от тук. Копирайте клиентските ключове в C:\Program Files\OpenVPN\config\ . Копирайте конфигурацията на клиента и я поставете във файла client.ovpn и я поставете там. В тази директория трябва да има общо пет файла - User.crt, User.key, ca.crt, ta.key, client.ovpn.
Не забравяйте да стартирате OpenVPN GUI като администратор, в противен случай маршрутите няма да бъдат повдигнати в системата и се свържете кликнете два пътичрез икона в тавата (областта близо до часовника, обикновено в долния десен ъгъл).

19 юни 2018 г. 11:32 ч 2171 гледания | без коментари

1: Инсталирайте OpenVPN

Актуализирайте индекса на пакета:

Пакетът OpenVPN е наличен в хранилищата по подразбиране, така че можете да използвате apt за инсталиране. Ще ви е необходим и пакетът easy-rsa, който ще ви помогне да създадете вътрешен сертификатен орган (CA) за VPN.

apt-get инсталирате openvpn easy-rsa

2: Настройка на OpenVPN

Примерна конфигурация VPN файлтрябва да го извлечете от /etc/openvpn и да го добавите към вашата инсталация. За да направите това, използвайте командата:

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

След това отворете server.conf в текстов редактор:

nano /etc/openvpn/server.conf

Има няколко промени, които трябва да направите във файла.

  • Защитете сървъра с по-високо ниво на криптиране
  • Пренасочване на уеб трафик към местоназначението
  • Предотвратете изтичането на DNS заявки извън VPN връзката
  • Задайте права за достъп.

Първо удвоете дължината на RSA ключа. За да направите това, намерете реда:

# Параметри на Diffie Hellman.
# Генериране твой собственс:
# openssl dhparam -out dh1024.pem 1024
# Заменете 2048 с 1024, ако използвате
#2048 битови ключове.
dh dh1024.pem

И променете стойността му на dh2048.pem:

dh dh2048.pem

Намерете раздела за шлюз за пренасочване и премахнете точката и запетая в началото на реда за шлюз за пренасочване, за да го разкоментирате. Това ще позволи на клиента да пренасочи своя трафик през OpenVPN сървъра.

# Ако е разрешено, тази директива ще конфигурира
# всички клиенти за пренасочване по подразбиране
# мрежов шлюз през VPN, причинявайки
# целия IP трафик като сърфиране в мрежата и
# и DNS търсения за преминаване през VPN
# (The OpenVPN сървърмашината може да се нуждае от NAT
# или свържете интерфейса TUN/TAP към интернет
# за да работи правилно).
;push "redirect-gateway def1 bypass-dhcp"

В резултат линията трябва да изглежда така:

натиснете "redirect-gateway def1 bypass-dhcp"

Трябва също така да позволите на сървъра да използва OpenDNS за разделяне на DNS, ако е възможно. Това ще помогне за предотвратяване на изтичане на DNS заявки извън VPN връзката.

# Някои специфични за Windows мрежови настройки
# може да бъде насочен към клиенти, като DNS
# или WINS сървърни адреси. ПРОТЕСТ:
# http://openvpn.net/faq.html#dhcpcaveats
# Адресите по-долу се отнасят за обществеността
# DNS сървъри, предоставени от opendns.com.
;push "dhcp-option DNS 208.67.222.222"
;push "dhcp-option DNS 208.67.220.220"

Разкоментирайте редовете, натиснете „dhcp-option DNS 208.67.222.222“ и натиснете „dhcp-option DNS 208.67.220.220“.

натиснете "dhcp-опция DNS 208.67.222.222"
натиснете "dhcp-опция DNS 208.67.220.220"

Сега дефинирайте разрешенията в server.conf:

# Можете да премахнете коментара за това
# системи, различни от Windows.
;потребител никой
;група nogroup

Разкоментирайте двата реда:

потребител никой
група nogroup

По подразбиране OpenVPN работи като root потребители по този начин има пълен root достъп до системата. OpenVPN трябва да бъде ограничен в правата и за това трябва да използвате nobody и nogroup. Това е непривилегирован потребител без възможност за влизане по подразбиране, често запазен за стартиране на ненадеждни приложения.

Запазете и затворете файла.

3: Маршрутизиране на пакети

Това е sysctl параметър, който казва на ядрото на сървъра да препраща трафик от клиентски устройства към Интернет. В противен случай трафикът към сървъра ще спре. Можете да активирате препращането на пакети с помощта на тази команда:

ехо 1 > /proc/sys/net/ipv4/ip_forward

Направете тази стойност постоянна, така че да се възстановява след рестартиране:

nano /etc/sysctl.conf

Намерете реда net.ipv4.ip_forward.


#net.ipv4.ip_forward=1

Разкоментирайте го:

# Разкоментирайте следващия ред, за да активирате препращането на пакети за IPv4
net.ipv4.ip_forward=1

Запазете и затворете файла.

4: Конфигуриране на защитната стена ufw

ufw е iptables интерфейс. Настройката на ufw е доста проста. Трябва да добавите няколко правила и да направите няколко промени в конфигурацията и след това да го активирате.

Инсталирайте ufw:

apt-get инсталирате ufw

Активирайте поддръжката на SSH:

В ръководството OpenVPN работи през UDP, отворете този трафик на порт 1194.

ufw позволява 1194/udp

Трябва също така да конфигурирате правилата за маршрутизиране на UFW. Ще направим това в основния конфигурационен файл на UFW.

nano /etc/default/ufw

Намерете DEFAULT_FORWARD_POLICY="DROP". Заменете стойността в кавички с ACCEPT.

DEFAULT_FORWARD_POLICY="ПРИЕМАМ"

Запазете и затворете файла.

След това добавете допълнителни ufw правила за транслация на мрежови адреси и IP маскиране на свързани клиенти.

nano /etc/ufw/before.rules

Началото на файла before.rules трябва да се редактира, както е показано по-долу. Трябва да добавите секцията, маркирана в червено:

#правила.преди
#
# Правила, които трябва да се изпълняват преди добавените правила в командния ред на ufw. Персонализиран
# правила трябва да се добавят към една от тези вериги:
# ufw-преди-въвеждане
# ufw-преди-изход
# ufw-преди-напред
#
# СТАРТ ПРАВИЛА НА OPENVPN

# NAT правила за таблица

*нат

:ПОСТРАУТИРАНЕ ПРИЕМА


# Разрешаване на трафик от OpenVPN клиент към eth0


-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE


АНГАЖИРАНЕ

# КРАЙ НА ПРАВИЛАТА НА OPENVPN
# Не изтривайте тези задължителни редове, в противен случай ще има грешки
* филтър

Запазете и затворете файла.

Сега можете да активирате защитната стена:

ufw активиране
Командата може да наруши съществуващите ssh връзки. Продължаване с операцията (y|n)?

Изберете y:

Защитната стена е активна и активирана при стартиране на системата

Сега проверете правилата и състоянието на защитната стена:

състояние ufw
Статус: активен
Към действие от
-- ------ ----
22 ПОЗВОЛЕТЕ навсякъде
1194/udp ПОЗВОЛЯВА навсякъде
22 (v6) РАЗРЕШАВАНЕ навсякъде (v6)
1194/udp (v6) ПОЗВОЛЯВА навсякъде (v6)

5: Създаване на сертифициращ орган

OpenVPN използва сертификати за криптиране на трафика.

В този раздел ще създадем CA на два етапа: първият е настройка на променливи, вторият е генериране на CA.

OpenVPN поддържа двупосочна автентификация, базирана на сертификат, което означава, че клиентът трябва да удостовери сертификата на сървъра и сървърът трябва да удостовери сертификата на клиента, за да установи взаимно доверие.

Копирайте скриптовете Easy-RSA:

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

Създайте директория за ключовете:

mkdir /etc/openvpn/easy-rsa/keys

Easy-RSA предоставя променлив файл, който може да се редактира за създаване на сертификати с предварително зададени стойности по подразбиране. Тази информация се копира в сертификати и ключове и ще помогне за идентифицирането на ключовете по-късно.

nano /etc/openvpn/easy-rsa/vars

Стойностите, маркирани в червено, трябва да бъдат заменени с вашите собствени данни:

износ KEY_COUNTRY="САЩ "
експортиране KEY_PROVINCE="TX "
експорт KEY_CITY="Далас"
експортиране KEY_ORG="Името на фирмата ми"
експортиране на KEY_EMAIL=" [имейл защитен] "
експортиране KEY_OU="MYOrganizationalUnit"

В същия vars файл редактирайте реда по-долу. За по-лесно препоръчваме да използвате сървър като име. Ако искате да използвате различно име, ще трябва да актуализирате конфигурационните файлове на OpenVPN, препращащи към server.key и server.crt. Намирам:

#X509 Поле за тема
експортиране на KEY_NAME="EasyRSA "

И променете стойността му:

#X509 Поле за тема
експортиране на KEY_NAME="сървър"

Запазете и затворете файла.

Сега трябва да генерираме ключ на Diffie-Hellman; това може да отнеме няколко минути. Флагът -out указва къде да се запишат новите параметри.

openssl dhparam -out /etc/openvpn/dh2048.pem 2048

Отидете в директорията:

cd /etc/openvpn/easy-rsa

Инициализирайте PKI (инфраструктура публичен ключ). Обърнете внимание на точката (.) и интервала преди ./varscommand. Това определя текущата работна директория.

Командата ще върне следния резултат. Тъй като все още няма нищо в директорията с ключове, това е нормален изход.

ЗАБЕЛЕЖКА: Ако стартирате ./clean-all, ще направя rm -rf на /etc/openvpn/easy-rsa/keys

Сега трябва да изчистите работната си директория от евентуални стари ключове или примерни файлове, за да направите място за новите ключове.

Тази последна команда създава сертифициращ орган (CA) чрез извикване на интерактивната команда OpenSSL. Изходът ще ви помоли да потвърдите променливите, които преди сте дефинирали във файла Easy-RSA (име на държава, организация и т.н.).

За да приемете стойностите по подразбиране, просто натиснете Enter.

CA е готов.

6: Генериране на сървърни ключове и сертификати

Оставайки в директорията /etc/openvpn/easy-rsa, сега въведете командата за създаване на сървърния ключ. Стойността на сървъра е променливата KEY_NAME за експортиране, която задавате във файла Vars Easy-RSA.

./build-key-server сървър

Командата ще генерира почти същия резултат като стартирането на ./build-ca и можете да натиснете Enter отново, за да приемете настройките по подразбиране. Този път обаче има още два реда:



Парола за предизвикателство:
Незадължително име на фирма:

Оставете двата реда празни, като просто натиснете Enter.

В края ще има още два реда, в които трябва да отговорите y:

Подпишете сертификата?

Последният ред ще изведе:


Актуализирана база данни

7: Преместване на сървърни ключове и сертификати

OpenVPN ще търси CA, сертификат и сървърен ключ в /etc/openvpn. Копирайте ги на правилното място.

cp /etc/openvpn/easy-rsa/keys/(server.crt,server.key,ca.crt) /etc/openvpn

Можете да проверите дали операцията е била успешна:

Трябва да видите сертификата на сървъра и ключовите файлове.

OpenVPN сървърът вече е готов за стартиране. Стартирайте го и проверете състоянието:

стартиране на услугата openvpn
статус на услугата openvpn

Последната команда ще отговори:

* openvpn.service - OpenVPN услуга
Заредено: заредено (/lib/systemd/system/openvpn.service; активирано)
Активен: активен (излязъл) от четвъртък 2015-06-25 02:20:18 EDT; преди 9s
Процес: 2505 ExecStart=/bin/true (код=излязъл, статус=0/УСПЕХ)
Основен PID: 2505 (код=излизане, статус=0/УСПЕХ)

OpenVPN сървърът работи!

Ако командата съобщи, че VPN не работи, проверете /var/log/syslog:

Грешка в опциите: --key се проваля с "server.key": Няма такъв файл или директория

Тази грешка казва, че server.key не е копиран правилно в /etc/openvpn. Копирайте го отново и опитайте да стартирате сървъра.

8: Генериране на клиентски сертификати и ключове

Преди това сте инсталирали и конфигурирали OpenVPN сървъра, създали сте сертификатен орган и сървърен сертификат и ключ. В този момент трябва да използвате сървърния CA, за да създадете сертификати и ключове за всяко клиентско устройство, което ще се свърже с VPN.

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

Забележка: По подразбиране OpenVPN не поддържа едновременно клиентски връзкикъм сървъра, създаден с помощта на един сертификат и ключ (вижте duplicate-cn в /etc/openvpn/server.conf).

За да създадете индивидуални идентификационни данни за всяко устройство, което планирате да свържете към VPN, трябва да повторите този раздел за всяко от тях (но трябва да промените името на клиента, като client2 или iphone2). Ако имате индивидуални идентификационни данни, устройствата могат впоследствие да бъдат деактивирани поотделно. В този урок името на клиента, използвано в примерите, е client1.

Съберете ключа за клиента client1 в директорията /etc/openvpn/easy-rsa.

./build-key client1

Ще бъдете подканени отново да промените или потвърдите променливите и тези два реда, които трябва да са празни. Натиснете Enter, за да приемете стойностите по подразбиране.

Моля, въведете следните "допълнителни" атрибути
да бъдат изпратени с вашата заявка за сертификат
Парола за предизвикателство:
Незадължително име на фирма:

Както преди, следващите два реда в края на процеса на изграждане изискват отговор y:

Подпишете сертификата?
1 от 1 сертификат изисква сертифициране, ангажиране?

Ако сглобяването на ключа е успешно, резултатът отново ще изглежда така:

Изпишете базата данни с 1 нов запис
Актуализирана база данни

Примерен клиентски конфигурационен файл трябва да се копира в директорията с ключове Easy-RSA и да се използва като шаблон, който ще бъде изтеглен на клиентските устройства за редактиране. По време на процеса на копиране трябва да промените името на файла от client.conf на client.ovpn, защото клиентите трябва да използват разширението .ovpn.

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

Повторете този раздел за всички ваши клиенти, като промените името на клиента.

Забележка:Дублираното име client.ovpn не е необходимо да се свързва с клиентското устройство. Клиентското приложение OpenVPN ще използва името на файла като идентификатор за самата VPN връзка. Копирайте client.ovpn с името, което ще използва VPN във вашата операционна система. Например: work.ovpn ще бъде дефиниран като работна мрежа, school.ovpn – като училище и т.н.

Също така трябва да промените всеки клиентски файл и да посочите IP адреса на OpenVPN сървъра, така че клиентът да знае към какво да се свърже. Отворете client.ovpn с помощта на nano или друг текстов редактор.

nano /etc/openvpn/easy-rsa/keys/client.ovpn

Заменете my-server-1 с VPN IP адреса в отдалечената линия.

# Името на хоста/IP и порта на сървъра.
# Можете да имате множество отдалечени записи
# за балансиране на натоварването между сървърите.
отдалечен my-server-1 1194

След това намерете този раздел и разкоментирайте user nobody и group nogroup, както направихте в server.conf. Това не се отнася за Windows OS.

# Привилегии за понижаване след инициализация (само за Windows)
потребител никой
група няма група

Прехвърляне на ключове и сертификати към клиентски устройства

Спомнете си, че клиентските сертификати и ключове се съхраняват на OpenVPN сървъра в директорията /etc/openvpn/easy-rsa/keys.

Сега трябва да прехвърлите клиентския сертификат, ключ и профилни файлове в папка на това клиентско устройство.

Например, в този случай файловете трябва да се намират в etc/openvpn/easy-rsa/keys/client1.crt и /etc/openvpn/easy-rsa/keys/client1.key

Файловете ca.crt и client.ovpn са еднакви за всички клиенти. Изтеглете тези два файла; Имайте предвид, че файлът ca.crt е в друга директория.

  • /etc/openvpn/easy-rsa/keys/client.ovpn
  • /etc/openvpn/ca.crt

Избраното от вас приложение за прехвърляне зависи от вас и операционната система на вашето устройство, но се препоръчва да изберете приложения, които поддържат SFTP (протокол за прехвърляне). SSH файлове) или SCP (защитено копие). Това ще прехвърли клиентски файлове през криптирана връзка.

По-долу е даден пример за SCP команда. Той поставя файла client1.key в директорията Downloads на локалния компютър.

scp root@your-server-ip:/etc/openvpn/easy-rsa/keys/client1.key Изтегляния/

Можете също да използвате следните приложения и ръководства:

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

  • клиент1.crt
  • client1.key
  • client.ovpn
  • ca.crt

9: Създайте единичен OpenVPN профил за клиенти

Има няколко начина за управление на клиентски файлове, но най-простият е да използвате единичен профил. Профилът се създава чрез редактиране на шаблонния файл client.ovpn и добавяне на CA на сървъра, клиентски сертификат и клиентски ключ. След това само профилът client.ovpn трябва да бъде импортиран в OpenVPN приложението на клиента.

В раздела по-долу трябва да коментирате три реда, за да включите сертификата и ключа директно във файла client.ovpn. Трябва да изглежда така:

# SSL/TLS параметри.
# . . .
;ca ca.crt
;серт клиент.crt
;ключ клиент.ключ

Запазете и затворете файла client.ovpn.

Можете да добавяте сертификати с помощта на код. Първо добавете CA:

ехо " " >> /etc/openvpn/easy-rsa/keys/client.ovpn
cat /etc/openvpn/ca.crt >> /etc/openvpn/easy-rsa/keys/client.ovpn
ехо "
" >> /etc/openvpn/easy-rsa/keys/client.ovpn

След това добавете сертификата:

ехо " " >> /etc/openvpn/easy-rsa/keys/client.ovpn
cat /etc/openvpn/easy-rsa/keys/client1.crt >> /etc/openvpn/easy-rsa/keys/client.ovpn
ехо "
" >> /etc/openvpn/easy-rsa/keys/client.ovpn

В края добавете ключа:

ехо " " >> /etc/openvpn/easy-rsa/keys/client.ovpn
cat /etc/openvpn/easy-rsa/keys/client1.key >> /etc/openvpn/easy-rsa/keys/client.ovpn
ехо "
" >> /etc/openvpn/easy-rsa/keys/client.ovpn

Вече имате един профил, който може да бъде копиран на клиентското устройство.

10: Създаване на клиентски профил

Има по-добри приложения за свързване към OpenVPN сървър на различни платформи. Ще намерите инструкции за инсталиране на клиенти на различни платформи в раздел 5 на ръководството.

Заключение

Сега имате напълно работещ виртуал частна мрежана OpenVPN сървъра. Можете да сърфирате в мрежата и да изтегляте съдържание, без да се притеснявате, че хакери проследяват дейностите ви.

След като инсталирате успешна връзкас клиента можете да гарантирате, че трафикът се насочва през VPN,

OpenVPN е софтуерен пакет, което ви позволява да защитите интернет трафика на потребителя от подслушване, осигурявайки криптиран трансфер на данни от устройството на клиента към сървъра с инсталиран OpenVPN. Чудесно за използване на обществени wifi точки за достъп, където информацията може да бъде прихваната от трети страни. Или в случай, че вашият IP е блокиран на определен сайт и трябва безопасно да заобиколите това ограничение.

В допълнение към инсталирането и конфигурирането на OpenVPN на сървъра, трябва да можете да конфигурирате клиента за достъп от компютър, където Windows ще се използва като операционна система.

Използвайки стандартен мениджърпакети, инсталирайте openvpn.

# aptitude инсталирайте openvpn

OpenVPN изисква генериране на сертификати за сървъра и клиентите. Това е логично, тъй като връзката от клиента към сървъра трябва да бъде криптирана.

Отидете в папката openvpn:

# cd /etc/openvpn

Ние ще генерираме ключове с помощта на easy-rsa.

Създайте папка с конфигурационни файлове и връзки към скриптове за генериране на сертификати:

# make-cadir rsa # cd rsa

Отворете конфигурационния файл вари променете параметрите:

Експорт KEY_COUNTRY="US" експорт KEY_PROVINCE="CA" експорт KEY_CITY="Сан Франциско" експорт KEY_ORG="Форт-Фънстън" експорт KEY_EMAIL=" [имейл защитен]"

KEY_COUNTRY— посочете кода на държавата (RU, UA и т.н.);
KEY_PROVINCEтози артикулне е от значение, ако не живеете в Съединените щати. :) Може да се замени с XX;
KEY_CITY— вашия град, в който живеете;
KEY_EMAIL- Вашата електронна поща.

И също така разкоментирайте реда KEY_CN за експортиране, посочете името на сървъра като стойност:

Експортиране на KEY_CN="example.com"

Всички променливи се попълват с латински букви.

Запазете файла и го стартирайте:

# . вар

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

# ./чисто-всичко

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

# ./build-ca

Ако по време на генериране основен сертификатще получите грешка error:0E065068:configuration file routines:STR_COPY:variable has no value:conf_def.c:618:line 198, добавете към файла варлиния:

Експортиране на KEY_ALTNAMES="нещо"

И след това изпълнете отново предишните команди: . vars, ./clean-all, ./build-ca.

Следващата стъпка е да създадете ключ и сървърен сертификат.

# ./build-key-server сървър

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

# ./build-key client

Моля, имайте предвид, че трябва да генерирате свой собствен сертификат и ключ за всеки клиент. Просто трябва да посочите различни имена (вместо клиент) и да промените пътищата до тях в конфигурационните файлове. В същото време можете да защитите клиентските ключове с парола; build-key-passвместо build-key.

# ./build-dh

И ключът за tls удостоверяване:

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

Сега трябва да копирате сървърните сертификати и ключове в папката с настройки на OpenVPN:

# cp ключове/ca.crt ключове/server.crt ключове/server.key ключове/dh2048.pem /etc/openvpn/

И също така задайте права върху тях, които позволяват четене и промяна само на техния собственик.

# chmod 0600 /etc/openvpn/ca.crt /etc/openvpn/server.crt /etc/openvpn/server.key /etc/openvpn/dh2048.pem /etc/openvpn/ta.key

Не забравяйте да го копирате на вашия компютър, например на вашия работен плот, от папката ключовеключове, необходими за свързване на клиента: client.crt, client.key, ca.crt, ta.key.

С това приключва процесът по изготвяне на сертификати.

Настройка на сървъра

Директорията /usr/share/doc/openvpn/ съдържа примерен файл за настройка на Openvpn сървър. Копирайте го в директорията /etc/openvpn/ и го разархивирайте:

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

Сега нека разгледаме необходимото openvpn работинастроики.

Портът, на който Openvpn ще приема връзки. По подразбиране е 1194. Препоръчвам да го промените за скриване. Можете дори да прикриете OpenVPN като уеб сървър, като посочите порт 80.

Порт 20100

Ние регистрираме пътищата до файловете на сертификата и сървърния ключ.

Ca ca.crt cert server.crt ключ server.key

Път до ключа на Diffie-Hellman.

Dh dh2048.pem

Пътищата могат да бъдат посочени или спрямо директорията /etc/openvpn (ако файловете се намират в нея) или абсолютни.

Намерете и разкоментирайте реда:

Натиснете "redirect-gateway def1 bypass-dhcp"

Това е необходимо за достъп до интернет през OpenVPN сървъра. Ако не го откоментирате, само компютрите в мрежата ще бъдат достъпни.

Трябва също така да посочите DNS сървъри за свързване на клиенти.

Натиснете "dhcp-опция DNS 213.183.57.55" натиснете "dhcp-опция DNS 87.98.175.85"

В зависимост от местоположението на сървъра можете да изберете други DNS сървъри, например в проекта OpenNIC.

Tls-auth ta.key 0

внимание!В настройките на клиента последната цифра на този параметър трябва да бъде заменена с 1 - tls-auth ta.key 1.

По-долу в конфигурационния файл има списък с налични шифри. Разкоментирайте шифъра AES-128-CBC.

Шифър AES-128-CBC#AES

При необходимост може да се замени с AES-256-CBC. Шифърът в конфигурационния файл на клиента трябва да е идентичен с шифъра на сървъра.

Добавете и параметъра за удостоверяване. По подразбиране за удостоверяване се използват sha1 ключове с дължина 160 бита, но алгоритъмът sha1 се разпознава като уязвим. Задаването на следния параметър ще използва 512-битови SHA512 ключове.

Удостоверяване SHA512

А също и параметъра tls-version-min, който определя използваната tls версия. В този случай последната версия е 1.2. внимание! Network Manager не поддържа (по време на писане) тази опция. Ето защо, ако планирате да се свържете с VPN сървърчрез Network Manager, тогава този параметър НЕ е посочен в настройките на сървъра.

Tls-версия-минимум 1.2

OpenVPN не трябва да се стартира като root. Така че разкоментирайте редовете:

Потребител никой група nogroup

Би било добра идея да активирате регистрационни файлове за OpenVPN. Особено по време на първите етапи на използване след настройка за намиране на грешки и т.н.

Регистрирайте се /var/log/openvpn.log

Оставете всички останали параметри на конфигурационния файл /etc/openvpn/server.conf със стойности по подразбиране. Това завършва настройката на OpenVPN сървъра.

Активирайте openvpn с командата:

# systemctl активира openvpn

И рестартирайте:

# service openvpn рестартиране

Също така би било добра идея да проверите дневника за грешки.

Пренасочване на трафика чрез OpenVPN

За да имате достъп до интернет през OpenVPN сървъра, трябва да направите нещо за това.

1. Конфигурирайте sysctl

В конзолата изпълнете командата:

# sysctl net.ipv4.ip_forward

Ако изходът на командата е равен на net.ipv4.ip_forward = 1, тогава нищо не трябва да се променя. Ако стойността на променливата е 0, тогава към файла /etc/sysctl.confтрябва да добавите реда:

Net.ipv4.ip_forward = 1

И презаредете правилата с командата:

# sysctl -p

2. Конфигурирайте iptables

Изпълнете следните команди в конзолата една по една:

# iptables -A FORWARD -i eth0 -o tun0 -m състояние --state ESTABLISHED,RELATED -j ACCEPT # iptables -A FORWARD -s 10.8.0.0/24 -o eth0 -j ACCEPT # iptables -t nat -A POSTROUTING - s 10.8.0.0/24 -o eth0 -j МАСКАРАД

Така ще позволим на трафика да преминава през OpenVPN сървъра за подмрежата 10.8.0.0 в рамките на вече установени връзки.

Ако клиентът openvpn трябва да присвои конкретен външен IP адрес на сървъра, тогава вместо последната команда от списъка с предишни за iptables, трябва да изпълните това:

A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source 127.0.0.1

Къде след параметъра --към източникатрябва да посочите външния IP на сървъра.

OpenVPN клиент за Windows

Нека започнем да настройваме клиента Openvpn в Windows. Тук всичко е просто: инсталирайте от официалния уебсайт, създайте конфигурационен файл и стартирайте.

Струва си да се отбележи, че трябва да стартирате OpenVPN на Windows с администраторски права, ако контролът на потребителските акаунти е активен.

Ако не сте променили инсталационния път, примерните конфигурационни файлове на вашия компютър се намират в директорията C:\Program Files\OpenVPN\sample-config. Копирайте файла от тук client.ovpnи го поставете в директория C:\Program Files\OpenVPN\config.

Помните ли сертификатите, създадени за клиента? Те също трябва да бъдат изтеглени от сървъра и копирани в тази директория.

Отворете конфигурационния файл client.ovpn и намерете параметъра отдалечен my-server-1 1194. Вместо my-server, посочете ip или Име на домейнвашия сървър. След това портът, който променихме по-рано. В резултат на това линията може да изглежда така:

Ca ca.crt cert client.crt ключ client.key

Трябва също да премахнете коментара от параметъра, който указва пътя до ключа tls.

Tls-auth ta.key 1

Вече беше казано по-рано, че последната цифра на сървъра трябва да бъде 0, на клиента - 1.

И последните параметри са шифрите, които сте инсталирали на сървъра.

Cipher AES-128-CBC auth SHA512 tls-version-min 1.2

Това е всичко, което е необходимо за конфигуриране на клиента. Опитайте да стартирате OpenVPN клиента и да се свържете с вашия сървър. Необходимата информация за връзката ще се покаже в прозореца на openvpn gui.

OpenVPN с NetworkManager

Инсталиране на графичен интерфейс за Network Manager.

# aptitude инсталира network-manager-openvpn-gnome

И рестартираме.

# услуга мрежов мениджър рестартиране

Копираме сертификатите, генерирани за клиента, в произволна папка на компютъра. Например в /home/user/.openvpn/.

Щракнете с десния бутон върху иконата на мрежовия мениджър, изберете „редактиране на връзки“, добавете нова връзка от типа „OpenVPN“.

Посочваме:

  • Име на връзката
  • Шлюз (домейн или сървър IP)
  • Вид: сертификати

Потребителският сертификат е сертификатът, който генерирахме в началото за клиента (client.crt).
CA сертификат - файл ca.crt.
Частният ключ е клиентският ключ (client.key).

Кликнете върху бутона „Разширени“. В прозореца, който се отваря, в раздела „Общи“ ще трябва да промените няколко елемента.

  • Използвайте различен порт на шлюза (ако сте посочили нестандартен при настройването на сървъра)
  • Използвайте lzo компресия

Превключете към раздела „Сигурност“. Изберете шифъра, както в параметрите на сървъра. Стойността на параметъра „Hmac Authentication“ трябва да бъде зададена на алгоритъма, както в стойността за удостоверяване на сървъра. В статията избрахме SHA512.

Отворете раздела " TLS удостоверяване" и поставете отметки в квадратчетата:

  • Потвърдете партньор...
  • Използвайте незадължително TLS удостоверяване

За последния параметър посочете пътя до файла ta.key, изберете 1 като посока на ключа от падащия списък, подобно на конфигурационния файл за Windows.

Запазваме връзката и се опитваме да се свържем. :)

За всеки случай, нека да разгледаме какво пише NM при свързване към системния журнал:

# опашка -f /var/log/syslog

Във връзка с