Table of Contents

OpenVPN

Zadání

  1. zvolte si právě jednoho kamaráda s PC
  2. na svém PC nakonfigurujte rozhraní dummy0 s IP adresou 1.2.X.10/24, kde X je poslední oktet IP adresy vašeho PC
  3. zprovozněte spojení prostřednictvím openvpn mezi vašimi dvěma PC
  4. na konci si budete pingat z obou PC navzájem na rozhraní dummy0 na druhém PC
  5. na každém PC poběží 1x OpenVPN server a 1x OpenVPN klient. Po připojení do VPN se klientovi automaticky nastaví správná cesta (route)
  6. autentizaci budete řešit pomocí SSL certifikátu a navíc sdíleného statického klíče (viz howto). Funkčnost tohoto prokážete tak, že si stáhnete tuto žádost, podepíšete jí a nakopírujete na PC cvičícího společně s konfiguračním souborem a instrukcemi, jak se má připojit z Ubuntu (které dobře znáte) na váš server. Cvičící přirozeně bude pingat IP vašeho dummy interface, aniž by musel změnit konfiguraci na svém PC.
  7. po úspěšném připojení cvičícího (potvrdí on) revokujete jeho klientský certifikát a výsledkem bude, že se k VPN sice připojí (na úrovni IP), ale neautentizuje k použití VPN.

Bodování

Na splnění tohoto zadání máte 2 cvičení. Kdo zmákne celý úkol za 1 cvičení, obdrží bonusový úkol za dalších 10 bodů (bude upřesněno).

  1. pingáte kamaráda přes klienta (1.5b)
  2. jste pingán kamarádem přes klienta (1.5b)
  3. pingáte kamaráda přes server (1.5b)
  4. jste pingán kamarádem přes server (1.5b)
  5. cvičící se připojí k vaší VPN podle vašeho návodu (3b)
  6. cvičící se nepřipojí po revokaci (1b)

Bonus za hotovo na 1 cvičení: 2b + bonus level (další openvpn cvičení)

Na poslední 2 položky máte pouze jediný pokus!

Nápověda

Dummy interface

dummy0 je virtuální rozhraní, které fyzicky není, ale lokálně jich můžete vytvořit neomezený počet a každému dát ip adresu.

V Debianu (ubuntu) je nutné nahrát do jádra modul:

modprobe dummy

A pak už jen konfigurovat ipčka, např.

ifconfig dummy0 1.2.3.4 netmask 255.255.255.0 

Instalace

 apt-get install openvpn

Vygenerování certifikátů

Tuto část nepotřebujete, protože máte v zadání použití vlastní CA. Tento návod necháváme jako ilustraci.

cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa/
. vars
./clean-all
./build-dh
./build-ca
./build-key-server server
./build-key client1
./build-key client2
openvpn --genkey --secret keys/ta.key

Konfigurace

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn
cd /etc/openvpn/
gunzip server.conf.gz
port 1194
proto udp
dev tap

ca ca.crt
cert server.crt
key server.key  # This file should be kept secret

dh dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
client-config-dir ccd
;push "redirect-gateway def1 bypass-dhcp"
keepalive 10 120
tls-auth ta.key 0 # This file is secret
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
client
dev tap
proto udp
remote my-server-1 1194
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
ns-cert-type server
tls-auth ta.key 1
comp-lzo
verb 3
# start
/etc/init.d/openvpn start jmeno
# stop
/etc/init.d/openvpn stop jmeno

Revokace klientského certifikátu

cd /etc/openvpn/easy-rsa
. vars
./revoke-full client1
error 23 at 0 depth lookup:certificate revoked
crl-verify crl.pem

Per-client konfigurace

client-config-dir ccd
push "redirect-gateway"

Další zdroje

1)
specifický zejména parametrem nsCertType=server, který je napsaný na certifikátu serveru
2)
v tomto případě 10.8.0.1
3)
se správnou cestou k vašemucrl.pem