OpenVPN kapcsolat létrehozása Debian Lenny operációs rendszeren Szerver telepítése A legtöbb Linux disztribúció tartalmazza OpenVPN programot, melyet a csomagkezelővel egyszerűen feltelepíthetünk. apt-get update apt-get install openvpn
Ezzel telepítette az OpenVPN-t az összes függőségével együtt. A
tanúsítványok létrehozásához másolja át a /usr/share/doc/openvpn/examples/2.0/easy-rsa könyvtár tartalmát a /etc/openvpn/easy-rsa könyvtárba, majd állítsa be a generálandó tanúsítványok tulajdonságait. Ezt a vars fájl szerkesztésével teheti meg. Lehetőség van az alapértelmezett 1024 bites titkosítás helyett 2048 bites titkosítás beállítására is. Ezzel viszont nagyságrendekkel nem lesz biztonságosabb a VPN feletti kommunikáció, de a kulcsok generálása hosszabb időt vesz igénybe. A fájl végén található mezőket értelemszerűen töltse ki: export export export export export
KEY_COUNTRY="HU" KEY_PROVANCE="GYMS" KEY_CITY="GYOR" KEY_ORG="TILB" KEY_EMAIL="
[email protected]"
A /etc/openvpn/easy-rsa könyvtárban állva adja ki rendre az alábbi parancsokat: . ./vars ./clean-all ./build-dh ./build-ca ./build-key-server server ./build-key client
# # # # # #
környezeti változók beállítása meglévő tanúsítványok törlése a keys könyvtárból Diffie-Hellmann paraméter generálása CA tanusítvány generálása az OpenVPN szerver tanusítvány generálása a kliens tanusítvány generálása
A parancsok futtatásakor az alábbi sorokat kell látnia: fekete9:/etc/openvpn/easy-rsa# . ./vars NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easyrsa/keys fekete9:/etc/openvpn/easy-rsa# ./clean-all fekete9:/etc/openvpn/easy-rsa# ./build-ca Generating a 1024 bit RSA private key .....++++++ ...++++++ writing new private key to 'ca.key' ----You are about to be asked to enter information that will be incorporated
1
into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----Country Name (2 letter code) [HU]: State or Province Name (full name) [GYMS]: Locality Name (eg, city) [GYOR]: Organization Name (eg, company) [TILB]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) [TILB CA]: Email Address [
[email protected]]: fekete9:/etc/openvpn/easy-rsa# ./build-dh Generating DH parameters, 1024 bit long safe prime, generator 2 This is going to take a long time .......................................................+........................... .......................................................................+........... ...........++*++*++* fekete9:/etc/openvpn/easy-rsa# ./build-key-server server Generating a 1024 bit RSA private key ......................++++++ .....++++++ writing new private key to 'server.key' ----You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----Country Name (2 letter code) [HU]: State or Province Name (full name) [GYMS]: Locality Name (eg, city) [GYOR]: Organization Name (eg, company) [TILB]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) [server]: Email Address [
[email protected]]: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: Using configuration from /etc/openvpn/easy-rsa/openssl.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'HU' stateOrProvinceName :PRINTABLE:'GYMS' localityName :PRINTABLE:'GYOR' organizationName :PRINTABLE:'TILB' commonName :PRINTABLE:'server' emailAddress :IA5STRING:'
[email protected]' Certificate is to be certified until Nov 10 08:38:30 2020 GMT (3650 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated fekete9:/etc/openvpn/easy-rsa# ./build-key client Generating a 1024 bit RSA private key .................................................++++++ .......++++++ writing new private key to 'client.key' ----You are about to be asked to enter information that will be incorporated
2
into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----Country Name (2 letter code) [HU]: State or Province Name (full name) [GYMS]: Locality Name (eg, city) [GYOR]: Organization Name (eg, company) [TILB]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) [client]: Email Address [
[email protected]]: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: Using configuration from /etc/openvpn/easy-rsa/openssl.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'HU' stateOrProvinceName :PRINTABLE:'GYMS' localityName :PRINTABLE:'GYOR' organizationName :PRINTABLE:'TILB' commonName :PRINTABLE:'client' emailAddress :IA5STRING:'
[email protected]' Certificate is to be certified until Nov 10 08:38:44 2020 GMT (3650 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated fekete9:/etc/openvpn/easy-rsa#
Az alábbi fájlokat jöttek létre:
Fájlnév ca.crt ca.key
Elhelyezés
dh{n}.pem
szerver + kliensek csak szerver (hitelesítés szolgáltató) csak szerver
server.crt server.key client{n}.crt client{n}.key
csak szerver csak szerver csak kliens{n} csak kliens{n}
Cél
Titkos-e?
Root CA tanúsítvány Root CA titkos kulcs
NEM IGEN
Diffie Hellman paraméter szerver tanúsítvány szerver titkos kulcs kliens{n} tanúsítvány kliens{n} titkos kulcs
NEM NEM IGEN NEM IGEN
A táblázatból látható, hogy az OpenVPN szerveren az következő állományokra lesz szükségünk, ezért ezeket másolja át a /etc/openvpn/easy-rsa/keys könyvárból a /etc/openvpn könyvtárba. ca.crt
dh1024.pem
server.crt
server.key
3
Másolja át a /usr/share/doc/openvpn/sample-config-files/server.conf.gz állományt a /etc/openvpn könyvtárba. Majd tömörítse ki. Ez a gzip –d server.conf paranccsal végezhető el. A művelet során az eredeti fájl törlődik. A server.conf állományt szerkessze az alábbiak szerint: ;local 192.168.100.219 port 1194 proto udp dev tun
# # # # # # #
IP-cím beállítása, csak ezen az IP-n fogad kéréseket portszám beállítása protokoll beállítása virtuális interfész beállítása tun -> IP tunnel tap -> Ethernet tunnel
ca ca.crt cert server.crt key server.key dh dh1024.pem # Diffie-Hellmann paraméter server 10.8.0.0 255.255.255.0 # VPN IP-cím tartomány beállítása ifconfig-pool-persist ipp.txt # kliens – ip cím összerendelés ;push "route 192.168.100.0 255.255.255.0" # routolás helyi hálózathoz ;client-to-client # a felcsatlakozó kliensek "lássák egymást" keepalive 10 120 # 10 mp időközönként pingeli a klienseket # hogy elérhető-e ha nincs válasz 120 mp-ig, # akkor bontottnak tekinti a kapcsolatot comp-lzo # tömörítési eljárás beállítása user nobody # ne root jogosultságokkal fusson group nogroup persist-key persist-tun status openvpn-status.log # naplófájl helye verb 3 # mennyire legyen "bőbeszédű" a napló ;mute 20 # ismétlődő üzenetek elnyomása
Az OpenVPN szerver konfigurálása kész. Manuális indításnál a konzolra logol a szerver. Ez hibakeresésnél hasznos. Az alábbi sorokat kell látnia a képernyőn. Az utolsó sorban az Initialization Sequence Completed üzenetnek kell szerepelnie. fekete9:/etc/openvpn# openvpn server.conf Sat Nov 13 10:08:34 2010 OpenVPN 2.1_rc11 i486-pc-linux-gnu [SSL] [LZO2] [EPOLL] [PKCS11] built on Sep 18 2008 Sat Nov 13 10:08:34 2010 Diffie-Hellman initialized with 1024 bit key Sat Nov 13 10:08:34 2010 /usr/bin/openssl-vulnkey -q -b 1024 -m <modulus omitted> Sat Nov 13 10:08:34 2010 TLS-Auth MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ] Sat Nov 13 10:08:34 2010 ROUTE default_gateway=192.168.100.1 Sat Nov 13 10:08:34 2010 TUN/TAP device tun0 opened Sat Nov 13 10:08:34 2010 TUN/TAP TX queue length set to 100 Sat Nov 13 10:08:34 2010 /sbin/ifconfig tun0 10.8.0.1 pointopoint 10.8.0.2 mtu 1500 Sat Nov 13 10:08:34 2010 /sbin/route add -net 10.8.0.0 netmask 255.255.255.0 gw 10.8.0.2 Sat Nov 13 10:08:34 2010 Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ] Sat Nov 13 10:08:34 2010 GID set to nogroup Sat Nov 13 10:08:34 2010 UID set to nobody Sat Nov 13 10:08:34 2010 Socket Buffers: R=[111616->131072] S=[111616->131072] Sat Nov 13 10:08:34 2010 UDPv4 link local (bound): [undef]:1194 Sat Nov 13 10:08:34 2010 UDPv4 link remote: [undef] Sat Nov 13 10:08:34 2010 MULTI: multi_init called, r=256 v=256 Sat Nov 13 10:08:34 2010 IFCONFIG POOL: base=10.8.0.4 size=62 Sat Nov 13 10:08:34 2010 IFCONFIG POOL LIST Sat Nov 13 10:08:34 2010 Initialization Sequence Completed
4
A kliens kulcsát és tanúsítványát át kell másolni fehér gépre. Ehhez helyezze el /home/diak/ovpn könyvtárban az alábbi fájlokat, majd állítsa be azok tulajdonosát diak:diak –ra. ca.crt
client.crt
client.key
fekete9:/home/diak/ovpn# chown diak:diak ./*
Kliens telepítése
Telepítse fel az OpenVPN csomagot a fehér gépre. FTP segítségével másolja át a kulcsokat a /etc/openvpn könyvtárba. Ha szükséges telepítse fel a ProFTP szervert a fekete gépen az aptget install proftpd paraccsal. Másolja át a /usr/share/doc/openvpn/sampleconfig-files/client.conf állományt a /etc/openvpn könyvtárba majd szerkessze azt az alábbiak szerint:
client dev tun proto udp remote 192.168.100.219 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 comp-lzo verb 3 ;mute 20
# # # # # #
virtuális interfész meghatározása protokoll beállítása OpenVPN szerver IP címe mennyiszer próbálkozzon az FQDN feloldásával a kliens dedikált porton csatlakozzon ne root jogosultságokkal fusson az OpenVPN kliens
# tömörítés beállítása # mennyire legyen "bőbeszédű" a naplózás # ismétlődő üzenetek elnyomása
Indítsa el az OpenVPN klienst a fehér gépen. Ha mindent jól csinált, az utolsó sorban itt is az Initialization Sequence Completed üzenet kell szerepeljen.
feher9:/etc/openvpn# openvpn client.conf Sat Nov 13 10:59:59 2010 OpenVPN 2.1_rc11 i486-pc-linux-gnu [SSL] [LZO2] [EPOLL] [PKCS11] built on Sep 18 2008 Sat Nov 13 10:59:59 2010 /usr/bin/openssl-vulnkey -q -b 1024 -m <modulus omitted> Sat Nov 13 10:59:59 2010 LZO compression initialized Sat Nov 13 10:59:59 2010 Control Channel MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ] Sat Nov 13 10:59:59 2010 Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ] Sat Nov 13 10:59:59 2010 Local Options hash (VER=V4): '41690919' Sat Nov 13 10:59:59 2010 Expected Remote Options hash (VER=V4): '530fdded' Sat Nov 13 10:59:59 2010 NOTE: UID/GID downgrade will be delayed because of --client, --pull, or --up-delay
5
Sat Nov 13 10:59:59 2010 Socket Buffers: R=[111616->131072] S=[111616->131072] Sat Nov 13 10:59:59 2010 UDPv4 link local: [undef] Sat Nov 13 10:59:59 2010 UDPv4 link remote: 192.168.100.219:1194 Sat Nov 13 10:59:59 2010 TLS: Initial packet from 192.168.100.219:1194, sid=924bf2fa efd36be1 Sat Nov 13 10:59:59 2010 VERIFY OK: depth=1, /C=HU/ST=GYMS/L=GYOR/O=TILB/CN=TILB_CA/
[email protected] Sat Nov 13 10:59:59 2010 VERIFY OK: nsCertType=SERVER Sat Nov 13 10:59:59 2010 VERIFY OK: depth=0, /C=HU/ST=GYMS/L=GYOR/O=TILB/CN=server/
[email protected] Sat Nov 13 10:59:59 2010 Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key Sat Nov 13 10:59:59 2010 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Sat Nov 13 10:59:59 2010 Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key Sat Nov 13 10:59:59 2010 Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Sat Nov 13 10:59:59 2010 Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA Sat Nov 13 10:59:59 2010 [server] Peer Connection Initiated with 192.168.100.219:1194 Sat Nov 13 11:00:00 2010 SENT CONTROL [server]: 'PUSH_REQUEST' (status=1) Sat Nov 13 11:00:00 2010 PUSH: Received control message: 'PUSH_REPLY,route 10.8.0.1,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.6 10.8.0.5' Sat Nov 13 11:00:00 2010 OPTIONS IMPORT: timers and/or timeouts modified Sat Nov 13 11:00:00 2010 OPTIONS IMPORT: --ifconfig/up options modified Sat Nov 13 11:00:00 2010 OPTIONS IMPORT: route options modified Sat Nov 13 11:00:00 2010 ROUTE default_gateway=192.168.100.1 Sat Nov 13 11:00:00 2010 TUN/TAP device tun0 opened Sat Nov 13 11:00:00 2010 TUN/TAP TX queue length set to 100 Sat Nov 13 11:00:00 2010 /sbin/ifconfig tun0 10.8.0.6 pointopoint 10.8.0.5 mtu 1500 Sat Nov 13 11:00:00 2010 /sbin/route add -net 10.8.0.1 netmask 255.255.255.255 gw 10.8.0.5 Sat Nov 13 11:00:00 2010 GID set to nogroup Sat Nov 13 11:00:00 2010 UID set to nobody Sat Nov 13 11:00:00 2010 Initialization Sequence Completed
A működés ellenőrzéseként pingelje a 10.8.0.1 címet a fehér gépről. feher9:/etc/openvpn# ping -c4 10.8.0.1 PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data. 64 bytes from 10.8.0.1: icmp_seq=1 ttl=64 time=0.344 64 bytes from 10.8.0.1: icmp_seq=2 ttl=64 time=0.311 64 bytes from 10.8.0.1: icmp_seq=3 ttl=64 time=0.318 64 bytes from 10.8.0.1: icmp_seq=4 ttl=64 time=0.322
ms ms ms ms
--- 10.8.0.1 ping statistics --4 packets transmitted, 4 received, 0% packet loss, time 2999ms rtt min/avg/max/mdev = 0.311/0.323/0.344/0.025 ms feher9:/etc/openvpn#
6