imported>Vix |
imported>Supportadmin |
Строка 1: |
Строка 1: |
| OpenVPN — это технология, позволяющая обезопасить использование интернета, создавая зашифрованный канал типа «сервер-клиент», и обеспечивающая защищённую передачу информации от сервера OpenVPN до клиента. Отлично подходит в случае использования публичных wifi точек доступа, где информация может быть перехвачена третьими лицами. Или в случае, когда ваш ip заблокирован на определённом сайте и нужно безопасно обойти это ограничение.
| |
|
| |
|
| Помимо установки и настройки ОпенВПН на сервере, необходимо уметь настроить клиент для доступа с компьютера, где в качестве операционной системы будет использоваться Windows.
| |
| Установка необходимых компонентов
| |
|
| |
| Используя стандартный менеджер пакетов, установим openvpn.
| |
|
| |
| aptitude install openvpn
| |
|
| |
| Создание сертификатов
| |
|
| |
| ОпенВПН в обязательном порядке требует генерации сертификатов для сервера и клиентов. Это и логично, ведь соединение от клиента до сервера должно быть зашифровано.
| |
|
| |
| Перейдите в папку openvpn:
| |
|
| |
| cd /etc/openvpn
| |
|
| |
| Генерировать ключи мы будем с помощью easy-rsa.
| |
|
| |
| Создаём папку с конфигурационными файлами и ссылками на скрипты генерации сертификатов:
| |
|
| |
| make-cadir rsa
| |
| cd rsa
| |
|
| |
| Откройте конфигурационный файл vars и измените параметры:
| |
|
| |
| export KEY_COUNTRY="US"
| |
| export KEY_PROVINCE="CA"
| |
| export KEY_CITY="SanFrancisco"
| |
| export KEY_ORG="Fort-Funston"
| |
| export KEY_EMAIL="me@myhost.mydomain"
| |
|
| |
| KEY_COUNTRY — укажите код страны (RU, UA и т.д.);
| |
| KEY_PROVINCE — данный пункт не актуален, если вы не проживаете в США. :) Можно заменить на XX;
| |
| KEY_CITY — ваш город, где вы проживаете;
| |
| KEY_EMAIL — адрес вашей электропочты.
| |
|
| |
| Все переменные заполняются латиницей.
| |
|
| |
| Сохраните файл и запустите его выполнение:
| |
|
| |
| . /vars
| |
|
| |
| Затем запустите удаление старых сертификатов:
| |
|
| |
| ./clean-all
| |
|
| |
| Создайте корневой сертификат:
| |
|
| |
| ./pkitool --initca
| |
|
| |
| Затем сертификат и ключ сервера.
| |
|
| |
| ./pkitool --server server
| |
|
| |
| После чего создайте сертификат и ключ для клиента:
| |
|
| |
| ./pkitool client
| |
|
| |
| Обратите внимание: для каждого клиента следует генерировать собственные сертификат и ключ.
| |
|
| |
| Далее нужно создать ключ Диффи-Хеллмана для возможности использования Forward Secrecy:
| |
|
| |
| ./build-dh
| |
|
| |
| И ключ для tls-аутентификации:
| |
|
| |
| openvpn --genkey --secret /etc/openvpn/ta.key
| |
|
| |
| Теперь необходимо скопировать серверные ключи в папку настроек OpenVPN:
| |
|
| |
| cp keys/ca.crt keys/server.crt keys/server.key keys/dh2048.pem /etc/openvpn/
| |
|
| |
| Обязательно скопируйте себе на компьютер, например, на рабочий стол, из папки keys ключи, необходимые для подключения клиента: 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 параметры.
| |
|
| |
| port 20100
| |
|
| |
| Порт, на котором Openvpn будет принимать соединения. По-умолчанию, 1194. Рекомендую изменить его в целях сокрытия. Можно даже замаскировать опенвпн под Web-сервер, указав порт 80.
| |
|
| |
| ca ca.crt
| |
| cert server.crt
| |
| key server.key
| |
|
| |
| Здесь указываем пути к сгенерированным сертификатам-ключам для openvpn.
| |
|
| |
| dh dh2048.pem
| |
|
| |
| Путь к ключу Диффи-Хеллмана.
| |
|
| |
| Все эти ключи ранее мы сгенерировали и скопировали в папку /etc/openvpn/, поэтому менять эти параметры нет смысла. Если, конечно, вы не переместили эти файлы куда-то ещё. :)
| |
|
| |
| Находим и раскомментируем строку:
| |
|
| |
| push "redirect-gateway def1 bypass-dhcp"
| |
|
| |
| Она нужна для возможности выхода в интернет через сервер ОпенВПН. Если её не раскомментировать, то будут доступны лишь компьютеры внутри сети.
| |
|
| |
| Также нужно указать dns-серверы для подключающихся клиентов.
| |
|
| |
| push "dhcp-option DNS 213.183.57.55"
| |
| push "dhcp-option DNS 87.98.175.85"
| |
|
| |
| В зависимости от местоположения сервера, можно подобрать другие dns-серверы, например, на проекте OpenNIC.
| |
|
| |
| Далее находим и раскомментируем параметр tls-auth.
| |
|
| |
| tls-auth ta.key 0
| |
|
| |
| Этот файл должен храниться в строгом секрете. Права доступа следует использовать 0600.
| |
|
| |
| Внимание! В настройках клиента последняя цифра этого параметра должна быть заменена на 1 — tls-auth ta.key 1.
| |
|
| |
| Чуть ниже в конфигурационном файле следует перечисление доступных шифров. Раскомментируйте шифр AES-128-CBC.
| |
|
| |
| cipher AES-128-CBC # AES
| |
|
| |
| При необходимости, его можно заменить на AES-256-CBC. В конфигурационном файле клиента шифр должен быть идентичен серверному шифру.
| |
|
| |
| Также добавьте параметр auth. По-умолчанию, для аутентификации используются ключи sha1 длиной 160 бит, но алгоритм sha1 признан уязвимым. При указании нижеследующего параметра будут использоваться ключи RSA-SHA256 длиной 256 бит.
| |
|
| |
| auth RSA-SHA256
| |
|
| |
| OpenVPN не следует запускать от имени root. Поэтому раскомментируйте строки:
| |
|
| |
| #user nobody
| |
| #group nogroup
| |
|
| |
| Не лишним будет включение логов для OpenVPN. Особенно, на первых порах использования после настройки для поиска ошибок и т.д.
| |
|
| |
| log /var/log/openvpn.log
| |
|
| |
| Все остальные параметры конфигурационного файла /etc/openvpn/server.conf оставьте со значениями по-умолчанию. На этом настройка сервера OpenVPN закончена.
| |
|
| |
| Активируйте openvpn командой:
| |
|
| |
| systemctl enable openvpn
| |
|
| |
| И перезапустите:
| |
|
| |
| service openvpn restart
| |
|
| |
| Также нелишним будет проверить лог на наличие ошибок.
| |
| Перенаправление трафика через 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 --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 MASQUERADE
| |
|
| |
| Таким образом, мы разрешим пропускать трафик через сервер 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
| |
|
| |
| Где после параметра —to-source следует указать внешний ip сервера.
| |
| OpenVPN клиент на Windows
| |
|
| |
| Приступаем к настройке Openvpn клиента на Windows. Здесь всё просто: скачиваем клиент с официального сайта, устанавливаем, создаём конфигурационный файл и запускаем.
| |
|
| |
| Стоит отметить, что запускать опенвпн на Windows следует с правами администратора, если активен контроль учётных записей.
| |
|
| |
| Если вы не меняли путь установки, то примеры конфигурационных файлов на вашем ПК располагаются в каталоге C:\Program Files\OpenVPN\sample-config. Скопируйте отсюда файл client.ovpn и поместите его в каталог C:\Program Files\OpenVPN\config.
| |
|
| |
| Помните о созданных для клиента сертификатах? Их тоже следует скачать с сервера и скопировать в этот каталог.
| |
|
| |
| Откройте конфигурационный файл client.ovpn и найдите параметр remote my-server-1 1194. Вместо my-server укажите ip или доменное имя вашего сервера. Затем порт, который мы изменили ранее. В итоге строка может выглядеть так:
| |
|
| |
| remote 192.168.0.1 20100
| |
|
| |
| Далее нужно указать пути к сертификатам, которые вы сгенерировали на сервере. Раз вы поместили их в каталог с конфигурационным файлом, то пути можно оставить, как есть.
| |
|
| |
| ca ca.crt
| |
| cert client.crt
| |
| key client.key
| |
|
| |
| Также следует раскомментировать параметр, который указывает путь к tls-ключу.
| |
|
| |
| tls-auth ta.key 1
| |
|
| |
| Ранее уже говорилось о том, что последняя цифра на сервере должна быть 0, на клиенте — 1.
| |
|
| |
| И последние параметра — это шифры, которые вы установили на сервере.
| |
|
| |
| cipher AES-128-CBC
| |
| auth RSA-SHA256
| |
|
| |
| Это всё, что требуется для настройки клиента. Попробуйте запустить клиент OpenVPN и подключиться к вашему серверу. Необходимая информация о подключении будет отображена в окошке openvpn gui.
| |
|
| |
| * [https://rusadmin.biz/rukovodstva/openvpn-na-debian/ взято тут]
| |