OpenVPN через stunnel

OpenVPN через stunnel


Для того, чтобы улучшить безопасность подключений производимых посредством OpenVPN, можно использовать утилиту stunnel, которая обеспечивает организацию дополнительного шифрования с помощью протокола ssl. Ранее уже было написано о возможном применении данной утилиты. Однако, ее функционал позволяет найти ей место и в других ситуациях. При добавлении к OpenVPN дополнительной защиты в виде stunnel приходится также использовать данное ПО и на клиентской части, что создает определённые неудобства и должно учитываться заранее.

Что делаем на сервере

Будем считать, что у нас уже есть работающий OpenVPN сервис на OS Ubuntu Linux, к которому мы хотим добавить дополнительную защиту в виде stunnel. О том, как установить данную утилиту в систему и запустить ее рассказано ранее. Не будем повторять ранее изложенный материал. Нам по сути надо поменять только конфигурационный файл stunnel.conf. Нужное содержимое этого файла приведено ниже.

chroot = /var/lib/stunnel4

pid = /stunnel.pid

output = /stunnel.log

setuid = stunnel4

setgid = stunnel4

socket = l:TCP_NODELAY=1

 

[openvpn]

accept = xx.xx.xx.xx:45678

connect = 127.0.0.1:1194

cert=/usr/local/etc/stunnel/cert.pem

key=/usr/local/etc/stunnel/key.pem

Так в данном примере сервис stunnel будет принимать входящие подключения на TCP:45678 порту на внешнем сетевом интерфейсе и перенаправлять их на TCP:1194 порт интерфейса localhost. Именно на данном порту теперь должен слушать сервис OpenVPN. После сохранения файла проведем перезагрузку сервису stunnel с помощью следующей команды в шелле.

# sudo /etc/init.d/stunnel4 restart

Кроме этого необходимо обновить конфигурацию самого сервиса OpenVPN. Так, нужно подредактировать файл /etc/openvpn/server.conf таким образом, чтобы сервис работал на TCP 1194 порту интерфейса localhost. Эти дерективы как часть указанного файла будут выглядить следующим образом.

local 127.0.0.1

port 1194

proto tcp

После того, как нужные директивы будут внесены, проведем перезагрузку сервиса OpenVPN.

# sudo systemctl restart openvpn@server

И в завершении перенастройки сервера производится добавление правил iptables, которые разрешат трафик между приложениями на интерфейсе localhost.

# sudo iptables -A INPUT -i lo -j ACCEPT

# sudo iptables -A OUTPUT -o lo -j ACCEPT

Что делаем на клиенте

Повторять общую настройку клиентской части stunnel не будем, это также описано в статье, упомянутой ранее. Настройки файла stunnel.conf клиентской части stunnel приводим ниже.

output = /var/log/stunnel4/stunnel.log

client = yes

 

[openvpn]

cert = stunnel.pem

accept = 127.0.0.1:1194

connect = xx.xx.xx.xx:45678

В вышеприведенном файле мы указываем принимать соединения от клиента OpenVPN на интерфейсе localhost по порту TCP:1194 и перенаправлять их на внешний IP адрес сервера по порту TCP:45678. После внесения и сохранения нужных изменений проводим запуск stunnel на клиенте.

В клиентской части OpenVPN необходимо изменить конфигурационный файл .ovpn таким образом, чтобы подключение шло на localhost TCP:1194 порт. Это место настроек файла представлено ниже.

proto tcp

remote 127.0.0.1 1194

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

Резюме

Скрещивание двух Open Source технологий позволяет сделать удаленный доступ еще более безопасным и надежным. В каких-то аспектах данное решение выигрывает в конкуренции с платными продуктами от таких гигантов IT рынка как Cisco Systems и CheckPoint (но конечно не является полноценной заменой, и конкурентом этим продуктам). Пожалуй, это еще один из примеров, когда наличие знаний и нужных навыков позволяют достичь нужных результатов без покупки дорогущего программного обеспечения и оборудования.

Report Page