sábado, 28 de noviembre de 2009

Configurar Open Vpn para generar redes con Prodigy - DynDns

#OpenVpn es una aplicación poderosa para generar redes privadas virtuales de bajo costo y alto rendimiento, es utilizado comúnmente para conectar múltiples  puntos distantes en nuestra organización, dar acceso a usuarios móviles. OpenVpn operan en capa 2 y 3 del modelo osi, en la parte de seguridad ofrece 2 métodos de encripatacion de los enlaces , uno es por llaves simétricas y otra por llaves asimétricas, la diferencia entre ellas es que las simetricas, se utiliza la misma llave para encriptar y decriptar, y en asimétricas se utiliza la llave privada para encriptar y la publica para desencriptar . lo cual proporciona autenticidad e integridad.

Ventajas :


Conexiones OpenVPN pueden ser realizadas a través de casi cualquier firewall
Solo un puerto en el firewall debe ser abierto para permitir conexiones, dado que desde OpenVPN 2.0 se permiten múltiples conexiones en el mismo puerto TCP o UDP
Las interfaces virtuales (tun0, tun1, etc.) permiten la implementación de reglas de firewall muy específicas
Soporte transparente para IPs dinámicas. Se elimina la necesidad de usar direcciones IP estáticas en ambos lados del túnel
Desventaja:
No tiene compatibilidad con IPsec que justamente es el estándar actual para soluciones VPN
Todavía existe poca gente que conoce como usar OpenVPN
configuramos los depósitos yum

#rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm

Instalamos las paqueterias necesaria

# yum -y install openvpn openssl

ubicamos donde se guardan los archivos de easy-rsa

# rpm -ql openvpn | grep easy-rsa


copiamos dentro del directorio /etc/openvpn/ los archivos openssl.cnf, whichopensslcnf, pkitool y vars, que se localizan en /usr/share/openvpn/easy-rsa/2.0/ (esta ruta puede cambiar y es obtenida con el comando anterior )

# cp /usr/share/openvpn/easy-rsa/2.0/openssl.cnf /etc/openvpn
# cp /usr/share/openvpn/easy-rsa/2.0/whichopensslcnf /etc/openvpn
# cp /usr/share/openvpn/easy-rsa/2.0/pkitool /etc/openvpn
# cp /usr/share/openvpn/easy-rsa/2.0/vars /etc/openvpn

editamos el archivo /etc/openvpn/vars las variables " KEY_COUNTRY,KEY_PROVINCE, KEY_CITY, KEY_ORG, KEY_EMAIL "

# vi /etc/openvpn/vars

export KEY_COUNTRY="MI_PAIS"
export KEY_PROVINCE="MI_ESTADO"
export KEY_CITY="MI_CIUDAD"
export KEY_ORG="MI_ORGANIZACION"
export KEY_EMAIL="MICUENT@_DE_CORREO"

cargamos los cambios en las variables de la siguiente manera

# source ./vars

ejecutamos el script de limpia para prevenir que cualquier otra llave este en el folder

# sh /usr/share/openvpn/easy-rsa/2.0/clean-all

ejecutamos el escrip de generación del certificado, si no existe el folder keys lo generara .

# sh /usr/share/openvpn/easy-rsa/2.0/build-ca

generamos las firmas digitales para el servidor

# sh /usr/share/openvpn/easy-rsa/2.0/build-dh
# sh /usr/share/openvpn/easy-rsa/2.0/build-key-server matriz

generamos las llaves asimétricas para los clientes que se conectaran

# sh /usr/share/openvpn/easy-rsa/2.0/build-key sucursal1
# sh /usr/share/openvpn/easy-rsa/2.0/build-key sucursal2
# sh /usr/share/openvpn/easy-rsa/2.0/build-key sucursalN

copiamos el archivo de configuración de ejemplo que se encuentra en /usr/share/doc/openvpn-2.1/sample-config-file/

# cp /usr/share/doc/openvpn-2.1/sample-config-file/server.conf ./

editamos el archivo con nuestras configuraciones

# vi /etc/openvpn/server.conf
========================================
port 1194
proto udp
dev tun
ca keys/ca.crt
cert keys/matriz.crt
key keys/matriz.key
dh keys/dh1024.pem
server 10.0.0.2 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
persist-key
persist-tun
status server.log
verb 3
========================================
en caso de tener activado se linux debemos otorgarle permiso

# restorecon -R /etc/openvpn/

creamos los archivos de con server.log y ipp.txt

# cd /etc/openvpn/
# touch /etc/openvpn/ipp.txt
# touch /etc/openvpn/server.log


asignamos propiedades de lectura/escritura a los archivos

# chcon -u system_u -r object_r -t openvpn_etc_rw_t /etc/openvpn/ipp.txt
# chcon -u system_u -r object_r -t openvpn_etc_rw_t /etc/openvpn/server.log

agregamos el servicio al chkconf

# chkconf openvpn on

generamos el archivo remoto para indicar que esas rutas seran utilizadas para la salida de paquetes

Iniciamos el servicio  de openvpn

# service openvpn start

para el cliente en linux , seguimos los mismos pasos de instalacion .
copiamos el archivo cliente.conf

# cp /usr/share/doc/openvpn-2.1/sample-config-file/cliente.conf ./

editamos el archivo de configuración de cliente

# vi /etc/openvpn/cliente.conf

========================================
client
dev tun
proto udp
remote IP_SERVIDOR_O_NOMBRE_DOMININIO
float
resolv-retry infinite
nobind
persist-key
persist-tun

ca key/ca.crt
cert key/sucursal1.crt
key key/sucursal1.key
ns-cert-type matriz

comp-lzo
verb 3
 ========================================

 copiamos los archivos sucursal1.crt y sucursal1.key  al cliente .

# scp -P 22 sucursal.* usuario@ip_cliente:/etc/openvpn/

creamos el archivo matriz.up  que nos dara la ruta de salida a nuestra red coporativa

Iniciamos el servicio de openvpn

# service openvpn restart

adecuamos nuestros firewalls para permitir conecciones

editamos el archivo de zonas en el shorewall

# vi /etc/shorewall/zones

agregamos la siguiente linea

===================================
vpn ipv4
===================================

editamos el archivo de interfaces

#vi /etc/shorewall/interfaces

agregamos la siguiente linea

===================================
vpn  tun+    detect
===================================

editamos el archivo de politicas del shorewall


#vi /etc/shorewall/policy

agregamos los permisas para compartir las redes .


===================================

vpn $FW ACCEPT
vpn loc ACCEPT
loc vpn ACCEPT
$FW vpn ACCEPT

===================================


editamos el archivo de reglas

# vi /etc/shorewall/rules

agregamos la siguiente linea ( tambien podemos hacer un macro.OPENVPN )


===================================
ACCEPT net $FW udp 1194

===================================

finalmente agregamos la ruta al archivo de tunnels para que permita hacer conexiones a la vpn de cualquier ubicacion .

# vi /etc/shorewall/tunnles

agregamos la siguiente linea

===================================
openvpnserver:1194 vpn 0.0.0.0/0
===================================


configuramos una cuenta y descargamos de DynDns.org el archivo ddclient

# wget http://cdn.dyndns.com/ddclient.tar.gz

descomprimimos el archivo

# tar -xvzf ddclient.tar.gz

copiamos el script ddcliente al /usr/sbin/

# cp ddclient /usr/sbin/

creamos un folder en /etc/ddclient para guardas las configuracions y copiamos el ejemplo

# mkdir /etc/ddclient
# cp sample-etc_ddclient.conf /etc/ddclient/ddclient.conf

editamos el achivo de configuraciones

# vi /etc/ddclient/ddclient.conf

congiramos hostnames, logins y passwords, descomentamos las lineas de nuestro routey las lineas del servicio de dyndns

copiamos el archivo sample-etc_rc.d_init.d_ddclien a /etc/rc.d/init.d/ddclient

# cp sample-etc_rc.d_init.d_ddclient /etc/rc.d/init.d/ddclient

abilitamos el para que arranque al inicio de nuestro sistema como servicio

# chkconfig --add ddclient
# chkconfig ddclient on

corremos el servicio

# service ddclient start


tenemos nuestra vpn montada

2 comentarios:

  1. Siempre utilice vpn ninja, por ser el que mejor me funciono, www.vpnninja.com

    ResponderEliminar
  2. Hola, tengo un problema, cuando ejecuto el #source ./vars me da el siguiente error:
    /etc/openvpn/easy-rsa/whichopensslcnf: line 6: openssl: command not found
    /etc/openvpn/easy-rsa/whichopensslcnf: line 8: openssl: command not found
    /etc/openvpn/easy-rsa/whichopensslcnf: line 10: openssl: command not found

    ResponderEliminar