OpenVPN Server, point-to-point и другие методы авторизации.

В первой статье мы писала об установке и классической настройке сертификатной аутентификации OpenVPN сервера. Это все хорошо и замечательно, но если вам нужно сделать простое соединение point-to-point между двумя узлами есть замечательный и быстрый способ.

Static key конфигурация(аналог PSK авторизации). Есть конечно и недостатки этой конфигурации :

  • Ограниченная масштабируемость — один клиент, один сервер.
  • Секретный ключ храниться в текстовой форме на каждом VPN узле.
  • Отсутствие в будущем гарантий полной тайны – компрометация ключа приведет к раскрытию информации и из предыдущих сессий.

Первым делом  на сервере надо создать секретный ключ и передать его клиенту по защищенному каналу.

openvpn —genkey —secret static.key

Файл конфигурации сервер :

dev tun
ifconfig 10.11.11.1 10.11.11.2 #
secret /etc/openvpn/static.key
comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
user nobody
group nobody
log-append /var/log/openvpn.log
status /var/log/openvpn-status.log
daemon # работаем как демон.
#push «redirect-gateway» # при успешном подключении к серверу, клиенту будет установлен новый default-gateway от vpn-сервера.
#push «dhcp-option DNS 8.8.8.8» # передать адрес DNS сервера.
cipher AES-256-CBC

Файл конфигурации клиента :

dev tun
remote 192.168.0.1
ifconfig 10.11.11.2 10.11.11.1
secret static.key
comp-lzo
#redirect-gateway
cipher AES-256-CBC

В данной конфигурации мы используем настройки порта и протокола по умолчанию udp:1194. Если нужно что бы весь трафик шел через VPN туннель раскомментируйте опции redirect. Можно вполне запустить несколько демонов, прописав каждому свой порт в конфиге.

root@debian:/etc/openvpn# openvpn server2.conf

PAM авторизация логин/пароль.

Ну и погорим об авторизации по логину и паролю. Это достаточно безопасный способ авторизации, использует TLS соединение. Но без ключей и сертификатов тут тоже не обойтись.

На сервер нужно создать сертификаты и ключи:

  • CA сертификат.
  • Ключ и сертификат сервера.
  • Ключ Диффи Хельман для TLS сессии.
  • Последний ключ для TLS-аутентификации(подпись HMAC).

Как это сделать я писал в предыдущей статье. Клиенту нас нужно передать ca.crt, ta.key, dh.pem.

Файл конфигурации сервер :

plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so login # Использование авторизации pam.
client-cert-not-required #Не запрашивать сертификат.
mode server
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 10.0.1.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
log /var/log/openvpn.log
status openvpn-status.log
verb 3
tls-auth ta.key 0
cipher AES-256-CBC
auth SHA512
push «redirect-gateway»
push «dhcp-option DNS 8.8.8.8»
comp-lzo

Файл конфигурации клиента :

client
auth-user-pass #авторизация логин/пароль.
proto udp
port 1194
dev tun
remote 194.87.239.104
ca ca.crt
tls-auth ta.key 1
auth SHA512
cipher AES-256-CBC
comp-lzo

openvpn-plugin-auth-pam.so логин и пароль пользователей берется  из файла /etc/shadow , то есть используются пользователи сервера.