Instalación de OpenVPN Generar los Certificados

Anuncio
Instalación_de_Openvpn
Tabla de contenidos
• 1 Instalación de OpenVPN
• 2 Generar los Certificados
• 3 Configuración
• 4 Configuración de un Servidor Openvpn en modo
Router
• 5 Configuración de cliente Openvpn en modo
Router
• 6 Referencias
Instalación de OpenVPN
• La instalación de OpenVPN en Debian Etch es bastante simple,usando el gestor de paquetes de
Debian, instalamos un paquete llamado OpenVPN
aptitude install openvpn
• Luego que se instala el paquete, crea un directorio en /etc/openvpn, que inicialmente se encuentra
vacio, y en este directorio se deben colocar los ficheros de configuración y los respectivos
certificados.
• En el directorio de la documentación /usr/share/doc, tenemos un directorio para openvpn, donde se
encuentran ejemplos de configuración, y una carpeta llamada easy-rsa
bolivar:/usr/share/doc/openvpn# ls
AUTHORS
changelog.gz examples
changelog.Debian.gz copyright
PORTS
README
README.auth-pam
README.Debian
README.down-root
Generar los Certificados
• Antes que nada, hay que instalar el paquete openssl.
bolivar:~# aptitude install openssl
• Copiamos la carpeta 2.0 que se encuentra en /usr/share/doc/openvpn/examples/easy-rsa/ a
/etc/openvpn/easy-rsa
bolivar:~# cp /usr/share/doc/openvpn/examples/easy-rsa/2.0/ /etc/openvpn/easy-rsa -R -v
«/usr/share/doc/openvpn/examples/easy-rsa/2.0/» -> «/etc/openvpn/easy-rsa/2.0»
«/usr/share/doc/openvpn/examples/easy-rsa/2.0/build-inter» -> «/etc/openvpn/easy-rsa/2.0/buil
«/usr/share/doc/openvpn/examples/easy-rsa/2.0/Makefile» -> «/etc/openvpn/easy-rsa/2.0/Makefil
«/usr/share/doc/openvpn/examples/easy-rsa/2.0/pkitool» -> «/etc/openvpn/easy-rsa/2.0/pkitool»
«/usr/share/doc/openvpn/examples/easy-rsa/2.0/openssl.cnf» -> «/etc/openvpn/easy-rsa/2.0/open
«/usr/share/doc/openvpn/examples/easy-rsa/2.0/build-req» -> «/etc/openvpn/easy-rsa/2.0/build«/usr/share/doc/openvpn/examples/easy-rsa/2.0/clean-all» -> «/etc/openvpn/easy-rsa/2.0/clean«/usr/share/doc/openvpn/examples/easy-rsa/2.0/sign-req» -> «/etc/openvpn/easy-rsa/2.0/sign-re
«/usr/share/doc/openvpn/examples/easy-rsa/2.0/build-key-pkcs12» -> «/etc/openvpn/easy-rsa/2.0
«/usr/share/doc/openvpn/examples/easy-rsa/2.0/inherit-inter» -> «/etc/openvpn/easy-rsa/2.0/in
«/usr/share/doc/openvpn/examples/easy-rsa/2.0/build-dh» -> «/etc/openvpn/easy-rsa/2.0/build-d
Generar los Certificados
1
Instalación_de_Openvpn
«/usr/share/doc/openvpn/examples/easy-rsa/2.0/build-key-pass» -> «/etc/openvpn/easy-rsa/2.0/b
«/usr/share/doc/openvpn/examples/easy-rsa/2.0/build-key» -> «/etc/openvpn/easy-rsa/2.0/build«/usr/share/doc/openvpn/examples/easy-rsa/2.0/list-crl» -> «/etc/openvpn/easy-rsa/2.0/list-cr
«/usr/share/doc/openvpn/examples/easy-rsa/2.0/build-req-pass» -> «/etc/openvpn/easy-rsa/2.0/b
«/usr/share/doc/openvpn/examples/easy-rsa/2.0/whichopensslcnf» -> «/etc/openvpn/easy-rsa/2.0/
«/usr/share/doc/openvpn/examples/easy-rsa/2.0/build-key-server» -> «/etc/openvpn/easy-rsa/2.0
«/usr/share/doc/openvpn/examples/easy-rsa/2.0/revoke-full» -> «/etc/openvpn/easy-rsa/2.0/revo
«/usr/share/doc/openvpn/examples/easy-rsa/2.0/README.gz» -> «/etc/openvpn/easy-rsa/2.0/README
«/usr/share/doc/openvpn/examples/easy-rsa/2.0/openssl-0.9.6.cnf.gz» -> «/etc/openvpn/easy-rsa
«/usr/share/doc/openvpn/examples/easy-rsa/2.0/vars» -> «/etc/openvpn/easy-rsa/2.0/vars»
«/usr/share/doc/openvpn/examples/easy-rsa/2.0/build-ca» -> «/etc/openvpn/easy-rsa/2.0/build-c
• Entramos a la carpeta /etc/openvpn/easy-rsa para generar los certificados.
bolivar:~# cd /etc/openvpn/easy-rsa/
• Editamos el fichero vars que se encuentra en esta carpeta, en este
archivo se definen las variables que usa easy-rsa.
+ Detalles:
*
*
*
*
*
export
export
export
export
export
KEY_COUNTRY="US", Nuestro Pais.
KEY_PROVINCE="CA", Nuestro Estado
KEY_CITY="SanFrancisco", Nuestra Ciudad.
KEY_ORG="Fort-Funston", Nombre de la Organización.
KEY_EMAIL="me@myhost.mydomain", Correo por defecto.
bolivar:/etc/openvpn/easy-rsa# cat vars
export EASY_RSA="`pwd`"
export OPENSSL="openssl"
export PKCS11TOOL="pkcs11-tool"
export GREP="grep"
export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`
export KEY_DIR="$EASY_RSA/keys"
echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR
export KEY_SIZE=1024
export CA_EXPIRE=3650
export KEY_EXPIRE=3650
export KEY_COUNTRY="VE"
export KEY_PROVINCE="TA"
export KEY_CITY="San Cristobal"
export KEY_ORG="COVETEL"
export KEY_EMAIL="info@covetel.com.ve"
• Usando la herramienta pkitool, vamos a generar los certificados.
o Antes de poder usar pkitool hay que cargar las variables de configuración.
bolivar:/etc/openvpn/easy-rsa# . vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys
o Luego solo la primera vez, cuando se esta gerando la CA, hay que correr el script ./cle
bolivar:/etc/openvpn/easy-rsa# ./clean-all
o Primero Construimos la CA.
bolivar:/etc/openvpn/easy-rsa# ./pkitool --initca
Generar los Certificados
2
Instalación_de_Openvpn
Using CA Common Name: COVETEL CA
Generating a 1024 bit RSA private key
................................................................++++++
.........++++++
writing new private key to 'ca.key'
----o Creamos un certificado para el servidor.
bolivar:/etc/openvpn/easy-rsa# ./pkitool --server servidor
Generating a 1024 bit RSA private key
...++++++
.....................++++++
writing new private key to 'servidor.key'
----Using configuration from /etc/openvpn/easy-rsa/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName
:PRINTABLE:'VE'
stateOrProvinceName
:PRINTABLE:'TA'
localityName
:PRINTABLE:'San Cristobal'
organizationName
:PRINTABLE:'COVETEL'
commonName
:PRINTABLE:'servidor'
emailAddress
:IA5STRING:'info@covetel.com.ve'
Certificate is to be certified until Dec 1 14:26:09 2018 GMT (3650 days)
Write out database with 1 new entries
Data Base Updated
o Generamos el archivo DH.
bolivar:/etc/openvpn/easy-rsa# ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
.................................+.+........................................+...+......
• Luego generamos el certificado para un cliente
bolivar:/etc/openvpn/easy-rsa # ./pkitool cliente
Generating a 1024 bit RSA private key
.++++++
.............................++++++
writing new private key to 'cliente.key'
----Using configuration from /etc/openvpn/easy-rsa/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName
:PRINTABLE:'VE'
stateOrProvinceName
:PRINTABLE:'TA'
localityName
:PRINTABLE:'San Cristobal'
organizationName
:PRINTABLE:'COVETEL'
commonName
:PRINTABLE:'cliente'
Generar los Certificados
3
Instalación_de_Openvpn
emailAddress
:IA5STRING:'info@covetel.com.ve'
Certificate is to be certified until Dec 1 14:27:53 2018 GMT (3650 days)
Write out database with 1 new entries
Data Base Updated
Configuración
• El paso mas sencillo para crear un fichero de configuración, es copiar el fichero de ejemplo que se
encuentra en /usr/share/doc/openvpn/examples/samples-config-files/server.conf.gz a /etc/openvpn/
bolivar:~# cd /etc/openvpn/
bolivar:/etc/openvpn# zcat /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz
• Luego editamos el fichero de configuración dependiendo si necesitamos una VPN en modo Router o
en modo Bridge.
Configuración de un Servidor Openvpn en modo Router
• El fichero de configuración para una VPN en modo router, debe quedar como sigue:
tls-server
port 1194
proto udp
dev tun
ca ca.crt
cert servidor.crt
key servidor.key
dh dh1024.pem
server 10.10.10.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
# Lista de Revocación.
#crl-verify crl.pem
chroot /etc/openvpn
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log openvpn.log
verb 3
mute 20
client-to-client
# Carpeta donde estan las configuraciones individuales por cliente:
client-config-dir clientes
• Detalles Importantes:
o dev, indica el dispositivo de red a utilizar, en este caso como es una VPN en modo Rout
se esta usando TUN, ya que de lo contrario, si fuera en modo Bridge, se debe usar TAP.
o ca, ruta al certificado público de la CA.
Configuración de un Servidor Openvpn en modo Router
4
Instalación_de_Openvpn
o
o
o
o
o
o
o
cert, ruta al certificado público del servidor.
key, ruta al clave privada del servidor.
dh, fichero DH (Diffie-Hellman), necesario para el intercambio secreto de claves entre
server, indica el rango de la subred VPN.
comp-lzo, activa la compresión.
chroot, enjaula el demonio.
client-config-dir, directorio donde se guardan los fichero de configuración individuale
• Creamos el directorio para guardar las configuraciones individuales por cliente
bolivar:/etc/openvpn# mkdir /etc/openvpn/clientes
• Copiamos los certificados necesarios a la carpeta /etc/openvpn.
bolivar:/etc/openvpn# cp /etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn/
bolivar:/etc/openvpn# cp /etc/openvpn/easy-rsa/keys/servidor.crt /etc/openvpn/
bolivar:/etc/openvpn# cp /etc/openvpn/easy-rsa/keys/servidor.key /etc/openvpn/
• Luego de que tenemos el fichero de configuración listo, iniciamos el demonio openvpn.
bolivar:/etc/openvpn# invoke-rc.d openvpn start
• Luego podemos mirar los logs en /etc/openvpn/openvpn.log
bolivar:/etc/openvpn# tail -f openvpn.log
covetel:/home/elsanto# tail -f /etc/openvpn/openvpn.log
Wed Dec 3 15:31:34 2008 bolivar/150.188.112.78:55795 PUSH: Received control message: 'PUSH_R
Wed Dec 3 15:31:34 2008 bolivar/150.188.112.78:55795 SENT CONTROL [bolivar]: 'PUSH_REPLY,rou
topology net30,ping 10,ping-restart 120,ifconfig 10.10.10.34 10.10.10.33' (status=1)
Wed Dec 3 15:34:58 2008 lexotanil/150.188.112.78:41561 TLS: soft reset sec=0 bytes=37381/0 p
Wed Dec 3 15:35:01 2008 lexotanil/150.188.112.78:41561 VERIFY OK: depth=1, /C=VE/ST=Tachira/
San_Cristobal/O=Cooperativa_Venezolana_de_Tecnolog_xC3_xACas_Libres/OU=Sistemas/emailAddress=
Wed Dec 3 15:35:01 2008 lexotanil/150.188.112.78:41561 VERIFY OK: depth=0, /C=VE/ST=Tachira/
Cooperativa_Venezolana_de_Tecnolog_xC3_xACas_Libres/OU=lexotanil/CN=lexotanil/emailAddress=je
Wed Dec 3 15:35:01 2008 lexotanil/150.188.112.78:41561 Data Channel Encrypt: Cipher 'BF-CBC'
Wed Dec 3 15:35:01 2008 lexotanil/150.188.112.78:41561 Data Channel Encrypt: Using 160 bit m
Wed Dec 3 15:35:01 2008 lexotanil/150.188.112.78:41561 Data Channel Decrypt: Cipher 'BF-CBC'
Wed Dec 3 15:35:01 2008 lexotanil/150.188.112.78:41561 Data Channel Decrypt: Using 160 bit m
Wed Dec 3 15:35:02 2008 lexotanil/150.188.112.78:41561 Control Channel: TLSv1, cipher TLSv1/
• En el momento en que la VPN esta arriba, debemos tener una interfaz tunX, donde X es un numero
de 0 a N.
bolivar:/etc/openvpn# ifconfig tun0
tun0
Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.10.10.1 P-t-P:10.10.10.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:2 errors:0 dropped:0 overruns:0 frame:0
TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:168 (168.0 b) TX bytes:252 (252.0 b)
covetel:/home/elsanto# route
Configuración de un Servidor Openvpn en modo Router
5
Instalación_de_Openvpn
Kernel IP routing table
Destination
Gateway
10.10.10.2
*
216.75.63.0
*
10.10.10.0
10.10.10.2
default
216.75.63.1
Genmask
255.255.255.255
255.255.255.128
255.255.255.0
0.0.0.0
Flags
UH
U
UG
UG
Metric
0
0
0
0
Ref
0
0
0
0
Use
0
0
0
0
Iface
tun0
eth2
tun0
eth2
Configuración de cliente Openvpn en modo Router
• Luego de instalar el paquete openvpn, siguiendo los pasos de instalación descritos en este
documento, se deben seguir los siguientes pasos:
o Obtener los certificados necesarios y copiarlos dentro de una carpeta en /etc/openvpn,
ponerle el nombre de la vpn a la que se va a conectar:
o Certificado Público de la CA.
o Certificado Público del cliente.
o Llave privada del cliente.
o Crear el fichero de configuración dentro de la carpeta /etc/openvpn, se sugiere ponerle
el nombre de la vpn a la que se va a conectar, seguido de .conf
bolivar:/etc/openvpn# vim covetel.conf
client
dev tun
proto udp
remote covetel.com.ve 1194
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
mute-replay-warnings
ca covetel/ca.crt
cert covetel/bolivar.crt
key covetel/bolivar.key
ns-cert-type server
comp-lzo
verb 3
mute 20
status openvpn-status.log
log openvpn.log
o Detalles:
+ client, le indica a openvpn que corra en modo cliente
+ proto, define el protocolo, que puede ser udp o tcp
+ remote, aqui ponemos la dirección ip o el nombre de domino del servidor a
donde nos vamos a conectar.
+ ca, apunta al certificado público de la CA.
+ cert, apunta al certificado público del Cliente.
+ key, apunta a la llave privada del Cliente.
+ log, fichero donde se van a guardar los logs de conexión a la vpn.
• Luego que tenemos los certificados y el fichero de configuración listo, solo es necesario iniciar el
servicio Openvpn.
bolivar:/etc/openvpn# /etc/init.d/openvpn start covetel
Configuración de cliente Openvpn en modo Router
6
Instalación_de_Openvpn
Starting virtual private network daemon: covetel(OK).
• Podemos mirar los logs de la conexión en /etc/openvpn/openvpn.log
bolivar:/etc/openvpn# tail -f openvpn.log
Wed Dec 3 12:15:56 2008 OPTIONS IMPORT: --ifconfig/up options modified
Wed Dec 3 12:15:56 2008 OPTIONS IMPORT: route options modified
Wed Dec 3 12:15:56 2008 TUN/TAP device tun1 opened
Wed Dec 3 12:15:56 2008 ifconfig tun1 10.10.10.34 pointopoint 10.10.10.33 mtu 1500
Wed Dec 3 12:15:56 2008 route add -net 10.10.10.0 netmask 255.255.255.0 gw 10.10.10.33
Wed Dec 3 12:15:56 2008 GID set to nogroup
Wed Dec 3 12:15:56 2008 UID set to nobody
Wed Dec 3 12:15:56 2008 Initialization Sequence Completed
• Probamos que el servidor de Openvpn sea alcanzable por la red de la interfaz tun.
bolivar:/etc/openvpn# ping 10.10.10.1 -c 1
PING 10.10.10.1 (10.10.10.1) 56(84) bytes of data.
64 bytes from 10.10.10.1: icmp_seq=1 ttl=62 time=153 ms
--- 10.10.10.1 ping statistics --1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 153.837/153.837/153.837/0.000 ms
Referencias
• OpenVPN en Wikipedia
• Página Principal de Openvpn.
Volver
Referencias
7
Descargar