OpenVPN via login

И там если вам необходим VPN , каждый пользователь которого должен иметь личный сертификат,  а трафик в VPN должен шифроваться,  в том числе как дополнительный метод аутентификация при подключении к VPN пользователь должен вводить логин/пароль (на тот случай если к примеру ноутбук с сертификатом был утерян/утрачен что б злоумышленник не смог им воспользоваться )

Хорошая и нужная вещь, опишу сразу настройку и так , cоздание сертификатов :

#cd /usr/share/doc/openvpn/examples/easy-rsa/2.0/

#sh
. ./vars
 ./clean-all
./build-ca

Вводим по требования Имя страны , компании , и т/д
После чего делаем сертификат для сервера :
./build-key-server server
openvpn --genkey --secret ta.key

В директорию /etc/openvpn/keys должны быть скопированы следующие файлы из /usr/share/doc/openvpn/examples/easy-rsa/2.0:

 

  • ca.crt
  • dh1024.pem
  • server.crt
  • server.key
  • ta.key
Конфиг сервера /etc/openvpn/openvpn.conf. Опции описывать не буду ибо это просто посмотреть в документации.

script-security 3
tmp-dir /tmp
port 1194
proto tcp
dev tun0
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
client-cert-not-required
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh1024.pem
server 10.8.0.0 255.255.255.0
push "route 192.168.0.0 255.255.255.0"
push "dhcp-option DNS 192.168.0.1"
tls-server
tls-auth /etc/openvpn/keys/ta.key 0
tls-timeout 120
auth MD5
cipher BF-CBC
keepalive 10 120
comp-lzo
max-clients 100
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
verb 4
auth-user-pass-verify /etc/openvpn/auth/auth-static-file.pl via-file
route 10.8.0.0 255.255.255.0

 

Скрипт авторизации.

/etc/openvpn/auth/auth-static-file.pl:

#!/usr/bin/perl
# # $Id$ # # К Сергей, <alfss.obsd@gmail.com>

# use strict; use warnings; use Digest::MD5 qw(md5 md5_hex md5_base64); use version; our $VERSION = qv(0.01); my $password_file = '/etc/openvpn/auth/user_password.txt'; my $ARG = undef; if ( $ARG

 

Конфиг клиента

Клиент должен иметь следующие файлы:

  • ca.crt
  • ta.key
  • vpn_config.ovpn

Конфиг клиента:

auth-user-pass
dev tun
proto tcp
# Внешний IP сервера OpenVPN remote 55.44.33.33
# Port сервера port 1194 client resolv-retry infinite
# полный путь до сертификата ca "/Users/alfss/Documents/vpn/ca.crt" tls-client
# полный путь до ключа tls-auth "/Users/alfss/Documents/vpn/ta.key" 1
auth MD5
cipher BF-CBC
ns-cert-type server
comp-lzo
persist-key
persist-tun push "dhcp-option DNS 192.168.0.1"
verb #
Добавление пользователя

Генерация хэш для пароля:

1
2
echo -n 'password' | md5sum
5f4dcc3b5aa765d61d8327deb882cf99

файл (/etc/openvpn/auth/user_password.txt) с пользвателями должен иметь следующий вид:

1
2
3
user1:5f4dcc3b5aa765d61d8327deb882cf99
user2:5f4dcc3b5aa765d61d8327deb882cf99
user3:5f4dcc3b5aa765d61d8327deb882cf99