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 KEY_COUNTRY="HU" export KEY_PROVANCE="GYMS" export KEY_CITY="GYOR" export KEY_ORG="TILB" export KEY_EMAIL="root@fekete9.tilb.sze.hu" A /etc/openvpn/easy-rsa könyvtárban állva adja ki rendre az alábbi parancsokat:../vars # környezeti változók beállítása./clean-all # meglévő tanúsítványok törlése a keys könyvtárból./build-dh # Diffie-Hellmann paraméter generálása./build-ca # CA tanusítvány generálása./build-key-server server # az OpenVPN szerver tanusítvány generálása./build-key client # 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 [root@fekete9.tilb.sze.hu]: 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 [root@fekete9.tilb.sze.hu]: 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:'root@fekete9.tilb.sze.hu' 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 [root@fekete9.tilb.sze.hu]: 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:'root@fekete9.tilb.sze.hu' 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 Elhelyezés Cél Titkos-e? ca.crt szerver + kliensek Root CA tanúsítvány NEM ca.key csak szerver Root CA titkos kulcs IGEN (hitelesítés szolgáltató) dh{n}.pem csak szerver Diffie Hellman NEM paraméter server.crt csak szerver szerver tanúsítvány NEM server.key csak szerver szerver titkos kulcs IGEN client{n}.crt csak kliens{n} kliens{n} tanúsítvány NEM client{n}.key csak kliens{n} kliens{n} titkos kulcs 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 ca ca.crt cert server.crt key server.key dh dh1024.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt # 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 # Diffie-Hellmann paraméter # VPN IP-cím tartomány beállítása # 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 user nobody group nogroup persist-key persist-tun status openvpn-status.log verb 3 ;mute 20 # tömörítési eljárás beállítása # ne root jogosultságokkal fusson # naplófájl helye # mennyire legyen "bőbeszédű" a napló # 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/emailAddress=root@fekete9.tilb.sze.hu 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/emailAddress=root@fekete9.tilb.sze.hu 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 ms 64 bytes from 10.8.0.1: icmp_seq=2 ttl=64 time=0.311 ms 64 bytes from 10.8.0.1: icmp_seq=3 ttl=64 time=0.318 ms 64 bytes from 10.8.0.1: icmp_seq=4 ttl=64 time=0.322 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