sâmbătă, 19 septembrie 2009

Open VPN server

Materialul este copiat tot de pe un blog, sper ca autorul sa nu se supere.

daca sunt probleme il voi sterge.

materialul este dat spre voi in spiritul GPL.


Open Vpn Server

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 Files\openvpn\config\keys (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 Files\OpenVPN\sample-config copiem fişierul client.ovpn în C:\Program Files\OpenVPN\Config ş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 ).

Niciun comentariu:

Trimiteți un comentariu