Mielőtt telepíteni kezdessz néhány dolgot ellenőrizz! Létezik-e a tunnel eszköz:
ls -lah /dev/net/ | grep tun
Ha nincs ilyen készítened kell:
mknod /dev/net/tun0 c 10 200
Támogatja-e a kerneled a virtuális hálózati eszközöket, alagutakat:
modprobe -l | grep tun
(Bár ha a kernel moduláris az rizikó faktor főképp egy tűzfal esetében. Ha jól van felkészítve a tűzfalad és monolitikus kernelt használsz ez nem is ad eredményt, ebben az esetben a menuconfig segít, nézzd meg abban a Network Device Support ---> Universal TUN/TAP device driver support. Ha nem forgattál be ilyen támogatést (tunneling), fordítsd újra a kernelt. Ha moduláris kernelt használsz be kell még töltened a tun modult.
insmod tun
Mostmár akár telepíthetünk is
Mint ahogy már ítram nem bonyolult a forgatás, de én csomagot telepítettem, tehát:
apt-get install openvpn
Így a függőségekkel együtt feltelepül és elvégzi a szükséges beállításokat. (Alapvetően innen már majdnem működőképes az OpenVPN.)
Létrehozott a telepítő a /usr/share/doc/packages/openvpn alatt egy könyvtárat amiben minden benne van ami nekünk kell, nézzük is meg, mi is van benne
ls -lahR /usr/share/doc/packages/openvpn | less
Hogy később gyorsabban dolgozhassunk (és hogy rendet tartsunk) ezt a könyvtárat másoljuk át
mkdir -p /usr/share/openvpn cp /usr/share/doc/packages/openvpn/* /usr/share/openvpn/*
mivel kell még ide néhány könyvtár és fájl azokat hozzuk létre
cd /usr/share/openvpn/easy-rsa/2.0/ mkdir keys cd keys/ echo 01 > serial touch index.txt
Találhatók itt példa configok, és jó kis shell scriptek amik oly gyorsá teszik a beállítást. Kezdődhet is a használatbavétel. Lépjünk be tehát a /usr/share/openvpn/easy-rsa/2.0 könyvtárba és itt szerkesszük úgy a vars állományt, hogy a file végén található változókba értelem szerint behelyettesíted az értékeket.
export KEY_COUNTRY="HU" export KEY_PROVANCE="" export KEY_CITY="Városom" export KEY_ORG="NIMPHAS Corp." export KEY_EMAIL="it@nimphas.com"
Azért mielőtt lecserélnéd, vagy szerkesztenéd a vars fájlt másold le mondjuk vars.old címmel. Ezeken kívül kell még néhány további fájl és könyvtár:
mkdir /var/log/openvpn touch /etc/openvpn/ipp.txt
Kell egy server konfigurációs fájl én ezt használom server.conf néven van elmentve a /etc/openvpn könyvtárban (a /usr/share/doc/packages/openvpn/sample-config könyvtárban találsz részletesebbeket is magyarázatokkal, feltétlen nézd meg őket):
port 1194 proto udp dev tun ca /etc/openvpn/ca.crt cert /etc/openvpn/server.crt key /etc/openvpn/server.key dh /etc/openvpn/dh1024.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist /etc/openvpn/ipp.txt push "route 192.168.5.0 255.255.255.0" # A helyi hálózathoz való routolás keepalive 10 120 comp-lzo ;client-to-client # Engedélyezi, hogy a távolról felcsatlakozó kliensek "lássák egymást" persist-key persist-tun status /var/log/openvpn/openvpn-status.log verb 3 mute 20
Ha a könyvtárak és fájlok elkészültek, létrhozzuk a tanusítványokat: A felső szintű tanusítvány és kulcs generálása:
cd /usr/share/openvpn/easy-rsa/2.0 source vars ./build-ca
Diffie Hellman paraméter előállítása (ez egy igen hosszú alap értelmezés szerint 1024 bit hosszú prímszám)
./build-dh
Paranojások a KEY_SIZE értékét megnövelhetik (a vars állományban), de ez nem szükséges, nagyban nem növeli a biztonságot de az előállítás idejét igen.
(Ha az unable to write 'random state' hibaüzenetet kapod segíthet ez az oldal: http://www.openssl.org/support/faq.cgiPróbáld meg ezt a parancsot: export KEY_SIZE=1024 && export KEY_DIR=$(pwd)/keys && export KEY_CONFIG=$(pwd)/openssl.cnf && export HOME=$(pwd)/keys && export RANDFILE=$(pwd)/keys && ./build-dh)
Következhet a server kulcsok legyártása
./build-key-server server
A paraméter amit vár a fájl neve (a kiterjesztés nékül). Így mostmár a legszükségesebb tanusítványok készen vannak, ezután csak a kliensek tanusítványai vannak hátra. Tehát készítsük el ezeket is:
source vars ./pkitool --interact --inter client00
A paramétereket a ./pkitool --help elmagyarázza, amit itt használtam:
Ezt persze addig ismételjük ameddig minden kliens tanusítványait el nem készítettük. Ha megvannak át másolgathatjuk őket a helyükre, illetve a kliensek fájljait be is tömöríthetjük, hogy aztán egyszerűbb legyen bánni velük
A serveren használandó tanusítvány állományai:
ca.crt ca.key server.crt server.csr server.key
A kliens által használt tanusítvány fájljai:
ca.crt ca.key client00.crt client00.csr client00.key
Ha a ./pkitoolnak ezt adtad meg
A server tanusítványait az /etc/openvpn könyvtárba kell rakni,
A server.conf -nak szintén ott a helye
A kliensek tanusítványainak fájljait a /usr/share/openvpn/easy-rsa/2.0/configs/client* könyvtárakban tartom *.tgzbe tömörítve. innen scpvel könnyen átmásolhatók az állományok és egyhelyen vannak
Ez sem bonyolult az OpenVPN oldaláról letölthető installer szinte mindent meg csináll. Itt is kell készítenünk egy configot (client.ovpn itt a kiterjesztés csak ez lehet), valahogy így nézzen ki:
client remote xxx.xxx.xxx.xxx # a távoli server IP címe megadhatsz domaint is port 1194 proto udp ca C:\\Progra~1\\OpenVPN\\config\\ca.crt cert C:\\Progra~1\\OpenVPN\\config\\client.crt key C:\\Progra~1\\OpenVPN\\config\\client.key dev tun comp-lzo verb 3 mute 10 ns-cert-type server persist-key persist-tun
Ha elkészítetted, pl jegyzettömbel, vagy valamilyen text editoral mentsd el az OpenVPN/config könyvtárba client.ovpn névvel. Az indításhoz pedig egy kis denevér (Én ovpn.bat névvel szoktam a config könyvtárban elhelyezni):
openvpn --config C:\\Progra~1\\OpenVPN\\config\\client.ovpn
Ha lefuttatod létrejön a VPN kapcsolat ezt onnan tudod, hogy megnyílik egy parancssori ablak és egy csomó bla-bla után kiíródik a Connection Saccesfulli Completted, illetve az ablak nyitva is marad, hogy a kapcsolat megmaradjon pingelgeti a hálózatot, és hálózati csomagokat küldözget a távoli hálózatba. Ha a Windows kliensnek a munkacsoportja ugyan az mint a hálózat gépeié akkor kisvártatva a hálózati helyek között meg is jelennek a gépek ikonjai. Még annyit érdemes megtenni a kényelem kedvéért, hogy teszel parancsikont az asztalra (már arra amit a monitoron látsz ;-) ).
A server beállításaitól csak anyiban különbözik, hogy itt a config más (ugyan az mint a windows kliens esetében értelem szerint a ~/.openvpn/ könyvtárba kell tenni a tanusítványhoz kapcsolódó fájlokat, az útvonalakat a helyesre megadni és csatlakozni a
openvpn --config ~/.openvpn/client.ovpn
parancsal. Annyit azért ne felejts el, hogy itt nem indul el konzol, ha látni akarod a történéseket konzolon indítsd az OpenVPNt
Kimondottan rossz ötlet a tanusítványokban client1..client2..client3..stb nevezni a klienseket, egyfelöl mert van nevük, meg így jól nyomon követhető ki mikor jelentkezett be.
Kimondottan rossz ötlet engedélyezni olyan kliensek csatlakozását, amelyeket nem védi legalább szoftveres tűzfal és vírusvédelmi program
Kimondottan rossz ötlet mindenkinek engedélyezni a VPN használatát
Kimondottan jó ötlet a felhasználókat nyilvántartani (e-mail, hanyas kliens, mettől-meddig érvényes a kulcsa, melyík részlegben dolgozik, mit csinál, mit használ, hálózati eszköz MAC címe)
Kimondottan jó ötlet az iptablessel a MAC címeket szűrni, mondjuk valahogy így:
iptables -A INPUT -i tun+ -p UDP -m mac --mac-source 00:00:00:00:00:00 -j ACCEPT
Kimondottan jó ötlet csak egy adott idő intervallumban engedélyezni a csatlakozást, ha lehet és nem ütközik akadályokba, modjuk 6:30 - 21:00 és a crond segítségével indítani és leállítani (A nyugalmad érdekében)