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
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
Comentarios