Buenas Tardes a todos! (usuarios de solaris, bsderos ), dejo a su disposicion este guia, para la instalacion de openvpn en modo multihomed, modo muy requerido por todos aquellos roadwarriors que requiera tu empresa. Lo hice para linux, debido a que ya lo tenia hecho de tiempo atras :).. y debido a que soy un gran amante del tiempo libre fuera de la compu…. asi que pues se quedo en linux el howto…. no lo habia publicado solo por decidia.. espero y les sea util.
1 - Software a instalar
j4nusx@zorrita$> yum install bridge-utils openvpn lzo openssl
j4nusx@zorrita$> yum install openssl
j4nusx@zorrita$> rpm -Uvh http://dag.wieers.com/rpm/packages/lzo2/lzo2-2.02-2.el5.rf.i386.rpm
j4nusx@zorrita$> rpm -Uvh http://dag.wieers.com/rpm/packages/lzo2/lzo2-devel-2.02-2.el5.rf.i386.rpm
j4nusx@zorrita$> rpm -Uvh http://dag.wieers.com/rpm/packages/openvpn/openvpn-2.0.9-1.el5.rf.i386.rpm
2 - Dispositivos y Puentes a crear
j4nusx@zorrita$> openvpn –mktun –dev tap0
Tue Jun 19 23:22:06 2007 TUN/TAP device tap0 opened
Tue Jun 19 23:22:06 2007 Persist state set to: ON openvpn –mktun –dev tap0
Estableceremos un bridging que inclulla a las interfaces tap0 y eth1 (en este caso la interface conectada a nuestra lan coorporativa)
j4nusx@zorrita$> brctl addbr br0 && brctl addif br0 eth1 && brctl addif br0 tap0
Establecemos la interfaces que conforman el bridging en modo promiscuo
j4nusx@zorrita$> ifconfig eth1 0.0.0.0 promisc up && ifconfig tap0 0.0.0.0 promisc up
j4nusx@zorrita$> ifconfig br0 192.168.2.1 netmask 255.255.255.0 broadcast 192.168.2.255
3 - Generacion de certificados de autentificacion solo root para determinar si un cliente tiene permisos de coneccion o no, openvpn verifica si este tiene las firmas que lo certifica en un servidor
j4nusx@zorrita$> cd /etc/openvpn && mkdir ssl && cd ssl
j4nusx@zorrita$> mkdir certs
3.1 - Creamos nuestro certificado de autoridad ca privado
j4nusx@zorrita$> openssl req -x509 -newkey rsa:1024 -out openvpn-ca.crt -outform pem -days 10000
“Generating a 1024 bit rsa private key
……………………………..++++++
…………………………………………..++++++
writing new private key to ‘privkey pem’
enter pem pass phrase verifying: mayte
enter pem pass phrase: mayte
—–
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) [GB]:MX
State or Province Name (full name) [Berkshire]:Sinaloa
Locality Name (eg, city) [Newbury]:Culiacan
Organization Name (eg, company) [My Company Ltd]:Oxkintok
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server’s hostname) []:EdwinPlauchu
Email Address []:plauchu@oxkintok.com
“Ahora Echaremos un vistazo a lo que hemos creado”
j4nusx@zorrita$> ls
openvpn-ca.crt privkey.pem
“Renombremos el archivo privkey.pem”
j4nusx@zorrita$> mv privkey.pem openvpn-ca.key
3.2 - Llave diffie hellman a 1024 bits
j4nusx@zorrita$> openssl dhparam -out dh1024.pem 1024
3.3 - Generacion de certificados individuales por cada cliente “cada punto”
Dentro de un enlace openvpn corriendo en modo tls devera de poseer su propio certificado cert y un archivo de llave privada key para lograr esto primero obtendremos de la ca un certificate signing request mi_certificado.csr de la siguiente manera, tambien obtenemos la llave que requerimos en el proceso:
j4nusx@zorrita$> openssl req -newkey rsa:1024 -keyout llave.key -keyform pem -out mi_certificado.csr -outform pem -nodes
“ahora firmamos el certificate signing request asi:”
j4nusx@zorrita$> openssl x509 -req -days 10000 -in ./mi_certificado.csr -CA ../../openvpn-ca.crt -CAkey ../../openvpn-ca.key -CAcreateserial -out ./mi_certificado.crt
Signature ok
subject=/C=MX/ST=Sinaloa/L=Culiacan/O=Oxkintok/OU=Developers/CN=EdwinPlauchu/emailAddress=pianodaemon@hotmail.com
Getting CA Private Key
Enter pass phrase for ../../openvpn-ca.key: mayte
j4nusx@zorrita$> ls
llave.key mi_certificado.crt mi_certificado.csr
##j4nusx@zorrita$> openssl x509 -req -days 10000 -in mi_certificado csr -ca certs openvpn-ca ##crt -cakey openvpn-ca key -cacreateserial -out certs mi_certificado.crt
Listo hemos obtenido nuestro certificado individual “mi_certificado.crt” ahora borramos el archivo csr que utilizamos para fabricarlo.
j4nusx@zorrita$> rm mi_certificado csr
4 -archivo de configuracion de openvpn 2 lado servidor linux
####dispositivo a utilizar###########
dev tap0
##### bandera que permite a los clientes visualizarce entre ellos ##
client-to-client
################################
#### mantiene vivo el servidor vpn
keepalive 10 30
################################
#### instrucciones que se ejecutaran
#### en los clientes al conectarce
push "ping-restart 60"
################################
#### archivo que indica el estado de openvpn
status tmp maxima-vpn status ################################ #### numero de clientes permitidos max-clients 150 ################################
#### net mask de la vpn ##########
server-bridge 192.168.2.1 255.255.255.0 192.168.2.50 192.168.2.250 ################################
#### implementacion de la trasmision de capa segura tsl #####
tls-server
################################
#### llaves ssl a utilizar ###########
dh /etc/openvpn/ssl/dh1024.pem
ca /etc/openvpn/ssl/certs/openvpn-ca.crt
cert /etc/openvpn/ssl/certs/mi_certificado.crt
key /etc/openvpn/ssl/llave.key
################################
#### protocolo y puerto ########
proto tcp-server port 5000
################################
#### modus operandi ############
mode server
################################
#### compresor de informacion ##
comp-lzo
################################
### nivel de verbose ###########
verb 0
# 0 — no output except fatal errors
# 5 — output r and w characters to the console for
# each packet read and write uppercase is used for
# tcp udp packets and lowercase is used for tun tap
# packets
################################
persist-key
persist-tun
5.- Configurando el Lado cliente con SO windows XP
Archivo de configuracion multihomed-client.conf
#puerto
port 5000
dev tap
remote mayte.homeunix.net
# tls parametros
tls-client
ca c:\vpn\openvpn-ca.crt
cert c:\vpn\alberto_certificado.crt
key c:\vpn\llave.key
# this parm is required for connecting
# to a multi-client server it tells
# the client to accept options which
# the server pushes to us pull
ping 20
