După o mică sesiune de ARP Poisoning m-am hotărât să trag repede un OpenVPN ca să n-am probleme. Mă jucam azi cu Cain-ul împreună cu un student și am rămas uimit când a agățat parolele de pe https. Practic, jucăria genera certificate ssl fake și “păcălea” victima. Dacă o să am ocazia să fac o sesiune de ARP Poisoning undeva într-o sală mai plină și să urmăresc mai multe IP-uri o să pun un post cu poze pe aici.
Revenind la OpenVPN, am zis că-i cea mai bună soluție să evit probleme de genul ăsta în medii mai “nesigure”. Serverul pe care aveam de gând să-l folosesc pentru conectare rulează Feisty Fawn (de pe vremea când era beta chiar) iar clientul avea să fie laptopul propriu cu Windoze.
Instalarea este simplă (pe ambele mașini), poate un pic mai simplă pe Ubuntu.
Server:
apt-get install openvpn openssl bridge-utils
Client :
Se descarcă OpenVPN GUI. Se pornește installer-ul cu dublu-click. Se urmează instrucțiunile.
După instalare, pe server vor trebui create cheile și certificatele. Pentru asta va trebui să intrați în /usr/share/doc/openvpn/examples/easy-rsa/2.0 .
cd /usr/share/doc/openvpn/examples/easy-rsa/2.0
Se editează fișierul
vars
(pentru a scuti introducerea datelor de mai multe ori) și se schimbă variabilele pentru :
export KEY_COUNTRY=" " export KEY_PROVINCE="" export KEY_CITY=" " export KEY_ORG="" export KEY_EMAIL=""
După care se rulează comenzile :
./vars ./clean-all ./build-ca ./build-key-server server
Generăm și cheie pentru client(i):
./build-key gigi
Și terminăm și cu Diffie Hellman (aici e posibil să dureze mai mult, depinde de mașină):
./build-dh
Toate cheile generate sunt în directorul keys. Ar trebui să le mutăm într-un loc mai sigur și să punem în /etc/openvpn/keys doar cheile și certificatele necesare:
mkdir /etc/openvpn/keys cp ca.key ca.crt dh1024.pem server.key server.crt /etc/openvpn/keys/
Pe client vom lua cheile și certificatele necesare acolo și le vom copia în C:Program Filesopenvpnconfigkeys (presupunând că ăsta-i folderul cu instalarea OpenVPN GUI ). Folderul “keys” va trebui creat. Cheile și certificatele necesare sunt :
ca.crt gigi.crt gigi.key
Am terminat cu generarea cheilor, acum trecem la configurare. Primul este serverul.
În /etc/openvpn facem un fișier nou, server.conf.
cd /etc/openvpn touch server.conf vim server.conf
Fișierul de configurare ar trebui să conțină următoarele linii :
port 9999 proto tcp dev tap client-to-client server 10.11.12.0 255.255.255.192 push "redirect-gateway" ca keys/ca.crt cert keys/server.crt key keys/server.key dh keys/dh1024.pem client-to-client cipher AES-128-CBC comp-lzo max-clients 5 user nobody group nogroup persist-key persist-tun chroot /etc/openvpn
Salvăm și ieșim. Mai trebuiesc setate niște reguli pe firewall pentru ca routarea să funcționeze și clientul să poată avea acces la internet. Dacă există deja un firewall pe mașină editați-l pe acela, dacă nu, creați un script nou cu următoarele reguli :
echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to xxx.xxx.xxx.xxx #Unde xxx.xxx.xxx.xxx este adresa IP externa, routabilă a serverului. #Cea prin care serverul are acces în internet. iptables -A FORWARD -j ACCEPT iptables -A INPUT -i tap+ -j ACCEPT iptables -A FORWARD -i tap+ -j ACCEPT iptables -t nat -A POSTROUTING -s 10.11.12.0/24 -o eth1 -j MASQUERADE
Facem scriptul executabil și-l rulăm.
chmod 755 firewall ./firewall
Acum putem să rulăm și daemonul de openvpn. Ca să verificăm că nu avem erori la pornire, deschidem o fereastră noua pe server și urmărim syslog.
tail -f /var/log/syslog
Pornim serverul și stăm cu ochii pe syslog pentru a prinde eventualele erori.
/etc/init.d/openvpn start
Erorile ar putea fi legate de alt serviciu care ascultă pe portul respectiv.
Mai avem de făcut ultimul pas și anume, configurarea clientului.
Din C:Program FilesOpenVPNsample-config copiem fișierul client.ovpn în C:Program FilesOpenVPNConfig și-l redenumim ca gigi.ovpn.
În el operăm modificări la următorii parametri :client tls-client dev tap proto tcp #Adresa IP a serverului și portul de conectare. remote xxx.xxx.xxx.xxx 9999 persist-key persist-tun ca keys/ca.crt cert keys/gigi.crt key keys/gigi.key cipher AES-128-CBC comp-lzo
Salvăm, închidem fișierul și pornim OpenVPN GUI. Dăm click pe “Connect” și ar trebui să funcționeze.
Printre problemele care ar putea să apară, cea mai frecventă este legată de firewall. Ori cel aflat pe server ori cel aflat pe sistem. Vedeți dacă serverul permite conexiuni pe portul respectiv sau dacă clientul nu filtrează și el. În rest, n-ar trebui să apară probleme. Restul sunt de tipul PEBKAC (search google for this one :P ).
Enjoy
wiii … :) welcome to our world :P
mai dau si eu cate un click pe aici cu gandul ca ajut un om sa isi realizeze visul :) :P
Mai bine puneai un tutorial L2TP :P Urasc ideea de a folosi clienti proprietari pt. VPN :-/
interesant tutorial:P
1) Scoate MASQ. N-are rost sa faci si SNAT, si MASQ in acelasi timp.
2) Daca nu ai nevoie de bridging pentru broadcast-uri (such as gaming sau file sharing over the vpn :P ), foloseste tun in loc de tap (si atunci nici nu mai ai nevoie de apt-get install bridge-utils). Daca ai nevoie de ele, mai trebuie configurat si bridge-ul.
3) ca.key nu trebuie sa fie in openvpn/keys (e cheia privata a CA-ului, folosita doar pentru semnarea certificatelor. Pentru verificarea de la conectare, serverul foloseste doar ca.crt).
STIU ca trebuia editat tutorialul însă există o mică problemă. În apache aici e instalat mod_security care filtrează diverse chestii cum ar fi încercări de citire de prin /etc and so on. Ca să postez tutorialul a trebuit să dezactivez mod_security, să postez și să-l activez la loc. La fiecare încercare de editare trebuie să fac același lucru. După cum scrie și sus, I’m Lazy… :D Așa că, lumea poa’ să citească și în comentarii despre asta.
imi apre o prb legata de gigi.crt
Cannot load certificate file keys/user1.crt: error:02001003:system library:fopen:No such process: error:20074002:BIO routines:FILE_CTRL:system lib: error:140AD002:SSL routines:SSL_CTX_use_certificate_file:system lib
stii unde ar putea fi prb?