OpenVPN, klíč z CA a použití DHCP

V případě nutnosti přistupovat vzdálenými klienty z více než jednoho stroje, klasická OpenVPN se statickým klíčem už přestává stačit. Jednak zde není možnost identifikace uživatele a navíc použítí statického klíče má svá omezení. Další mód činnosti OpenVPN a jeho instalace je rozsáhlejší. Pro víc informací je možné se podívat na následující stránky:
http://www.openvpn.net/
http://www.bsdguides.org/
http://www.dvorec.eu/freebsd-navody.html
http://www.section6.net/wiki/

Postup instalace a konfigurace je uveden níže, včetně potřebných nastavení. Testovací konfigurace je následující:
- privátní síť na strane serveru je 192.168.1.0/24
- privátní VPN je 192.168.254.0/24

1) Instalace OpenSSL a OpenVPN
portinstall openssl openvpn
Při instalaci se konfigurační script zeptá, zda mají být interaktivní hesla čtena ze souboru. Jedná se o volbu, která je schopná vytvořit autentizační modul openvpn-auth-pam nebo , viz komenář v bodě 4.

2) Konfigurace Certifikační autority, kde je následně nutné potřebné .pem certifikáty zkonvertovat do tvaru .crt. Dále je zde nutné vytvořit alespoň certifikát pro openvpn server.



Vlastní konfigurace VPN serveru
3) První částí je alespoň manuální načtení ovladačů:
kldload if_tun
kldload if_tap


a dále nastavení jejich načítání přímo po startu úpravou souboru /boot/loader.conf
if_ttap_load="YES"
if_tun_load="YES"


4) Vytvoření konfiguračního a logovacího adresáře, úprava konfiguračních souborů
mkdir /usr/local/etc/openvpn
mkdir /var/log/openvpn
cd /usr/local/etc/openvpn

a vytvoření souboru /usr/local/openvpn/openvpn.conf, který bude obsahovat následující informace:
daemon
ping-timer-rem
persist-tun
persist-key
local vnější IP adresa serveru
port 1194
dev tun
proto tcp-server
server 192.168.254.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 192.168.0.0 255.255.255.0"
push "dhcp-option DNS 192.168.1.1"
push "dhcp-option WINS 192.168.1.1"
push "dhcp-option DOMAIN vpn.firma"
push "dhcp-option NBDD 192.168.1.1"
push "dhcp-option NTP 192.168.1.1"
push "dhcp-option NBS 8"
client-to-client
max-clients 32
ca /etc/ssl/CA/cacert.crt
cert /etc/ssl/server/openvpn.crt
key /etc/ssl/server/openvpn.key
dh /etc/ssl/dh4096.pem
tls-auth tls-auth.key
#duplicate-cn
#client-cert-not-required
#plugin /usr/local/lib/openvpn-auth-pam.so login
comp-lzo
keepalive 10 300
cipher AES-256-CBC
auth SHA1
verb 2
status openvpn-status.log
log /var/log/openvpn/openvpn.log
log-append /var/log/openvpn/openvpn.log


následně vytvoření klíče pro tls autentizaci
openvpn --genkey --secret tls-auth.key
Poznámky ke konfiguraci přístupu:
- Pokud nebudete chtít podepisovat pakety, není nutné tento certifikát generovat, ale je vhodné odstranit volbu
tls-auth z konfiguračnho souboru.
- Pokud budete chtít používat pouze jeden certifikát pro všechny uživatele, je nutné odstranit komentář u volby
#duplicate-cn. Ztrácíte tím ale kontrolu nad lidmi, kteří OpenVPN používají. Základní autentizace je právě pomocí certifikátů uživatelů. Díky tomu, že není interaktivní, hodí se i pro propojení sítí.
- Použití souboru hesel vyžaduje přidat do konfiguračního souboru volbu
auth-user-pass-verify auth-pam.pl via-file. Tento soubor je nutné nakopírovat příkazem:
cp /usr/local/share/doc/openvpn/sample-scripts/auth-pam.pl /usr/local/etc/openvpn
- Pro přihlášení pouze pomocí hesel, je nutné odstranit komentář u volby
#client-cert-not-required a buď zkopírovat výše uvedený PAM modul, nebo použít modul openvpn-auth-pam, který využívá PAM autentizaci proti systémovým prostředkům. Při použití druhého uvedeného je nutné zadat do konfiguračního scriptu ještě řádek plugin /usr/local/lib/openvpn-auth-pam.so login
- Využití PAM autentizace například proti LDAP databázi je také možné po instalaci:
portinstall openvpn-auth-ldap
- Blok konfigurace "tlačené" na stranu klienta je nutné si velice dobře rozvážit, některé věci jsou vhodné pro klienta, jiné pro gateway. Každopádně maximum s této konfigurace doporučuji pro klienty postavené na Windows Vista/7/2008 atd. podporující NLA (Network Location Awareness Service), která umožňuje automatickou konfiguraci sítě a její zařazení do profilů:

push "dhcp-option DNS 192.168.1.1"
push "dhcp-option WINS 192.168.1.1"
push "dhcp-option DOMAIN vpn.firma"
push "dhcp-option NBDD 192.168.1.1"
push "dhcp-option NTP 192.168.1.1"
push "dhcp-option NBS 8"

5) Pro spuštění je nutné v souboru /etc/rc.conf udělat následující změny:
openvpn_enable="YES"
openvpn_if="tun tap"


A spustit OpenVPN server

/usr/local/etc/rc.d/openvpn start



Konfigurace klienta
Protože tato konfigurace je vhodná nejenom pro spojení server-server ale i klient-server, doporučuji k nahlédnutí informaci o klientu pro Windows.

Vlastní konfigurace klienta musí odpovídat nastavení serveru, jinak nebude spojení realizovatelné. Pro výše uvedenou konfiguraci je zde odpovídající verze pro klienta, kde jsou komentářem označené obdobné řádky jako v konfiguraci serveru.

6) Konfigurační soubor pro klienta
client
ping-timer-rem
persist-tun
persist-key
remote vnější IP adresa serveru
port 1194
dev tun
#dev-node OpenVPN
proto tcp-client
ca cacert.crt
cert client.crt
key client.key
tls-auth tls-auth.key

comp-lzo
keepalive 10 300
cipher AES-256-CBC
auth SHA1
verb 2
status openvpn-status.log
#Windows Vista/7/2008 Issues
route-method exe
route-delay 2
# NLA issues
route-metric 512
route 0.0.0.0 0.0.0.0


Poznámky ke konfiguraci přístupu:
- Pokud není na serveru aktivní volba podepisování paketů, je nutné odstranit volbu
tls-auth z konfiguračnho souboru.
- Pod Unix/Linux systémy je vhodné přidat v konfiguraci řádek s volbou
daemon, tato volba pod Windows blokuje funkčnost.
- Pro Windows Vista/7/2008 a NLA je nutné na straně klienta přidat následující šest řádků (bez komentářů čtyři), zajišťující správnou funkcionalitu:
#Windows Vista/7/2008 Issues
route-method exe
route-delay 2
# NLA issues
route-metric 512
route 0.0.0.0 0.0.0.0


7) Tvorba klientských certifikátů. V případě, kdy je nutné vytvořit klientské certifikáty, které budou součástí autentizačního procesu, posupujeme následovně:
gennssl.sh -client jméno certifikátu

8) Nainstalujeme druhý stroj, který bude klientem
Pro FreeBSD: portinstall openvpn
Pro Windows: instalace pod Windows

9) Nahrajeme potřebné soubory na stanici. Konfigurační soubor do adresáře C:\Program Files\OpenVPN\config, klíče pak na zvolené místo. Jedná se o následující soubory:
cacert.crt - nachází se v adresáři /etc/ssl/CA
client.crt - nachází se v adresáři /etc/ssl/clients
client.key - nachází se v adresáři /etc/ssl/clients
tls-auth.key - nachází se v adresáři /usr/local/etc/openvpn

10) Ověříme spojení nastartováním klienta i serveru.



Konfigurace klientských serverů, zajištění routování na obou stranách
V případě, kdy je nutné automatické spojení více serverů mezi sebou, kde každý z nich pracuje jako router, je potřeba upravit nastavení. Rozšíření předchozího testovacího prostředí pak vypadá následovně:
- privátní síť na straně serveru je 192.168.1.0/24
- privátní VPN je 192.168.254.0/24
- privátní síť na straně klienta je 192.168.2.0/24

Postup konfigurace je pak následující:

11) Na serveru se do konfiguračního souboru /usr/local/etc/openvpn/openvpn.conf přidají následující řádky:
client-config-dir ccd
route 192.168.2.0 255.255.255.0


12) Následně se vytvoří adresář a rozšíření konfiguračního souboru.
mkdir /usr/local/etc/openvpn/ccd

Rozšíření konfiguračního souboru musí mít název certifikátu, název je case senzitive. Obsahem jsou následující dva řádky:
ifconfig-push 192.168.254.2 192.168.254.1
iroute 192.168.2.0 255.255.255.0


13) A následně je nutné restartovat OpenVPN. Tím je ukončena konfigurace, po spojení se dynamicky vytvoří správná routovací tabulka.

Powered by Drupal - Design by artinet