В первой статье мы писала об установке и классической настройке сертификатной аутентификации 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 , то есть используются пользователи сервера.