MANDAR A : sergio.lopez.rubio@gmail.com
Genera un fichero con la clave
openvpn –genkey –secret static.key .
Edita el contenido..
cat static.key
En el fichero server.conf definimos este contenido.
dev tun (se crea el tun)
ifconfig 10.8.0.1 10.8.0.2 (las direcciones virtuales del TUN A y del TUN B)
secret static.key (que utiliza el fichero que hemos creado de static.key)
Se lanza el servicio desde la consola con la línea de comando
openvpn server.conf
Hay que dejar el servidor lanzado, es decir, en Linux no se puede cerrar el terminal que ha lanzado el server. O se puede lanzar como daemon, es decir residente.
¡Y con esto se tiene instalado el servidor!
En el cliente:
En Archivos de programana/openvpn/config… hemos creado una carpeta y un fichero client-statickey.ovpn
Y se pone:
remote 172.22.40.16 (que es la dirección ip del equipo) dev tun ifconfig 10.8.0.2 10.8.0.1 secret static.key (este es el fichero static.key que se ha puesto en el otro equipo y que tiene que estar en el equipo cliente en el mismo path en el que he creado el fichero client.statickey.ovpn
Luego se lanza el servicio del cliente, es decir el fichero client.statickey.ovpn.
Para la compresion, hay que ponerlo en ambos ficheros de configuración de ambas maquinas
comp-lzo
server.conf
dev tun ifconfig 10.8.0.1 10.8.0.2 #En el caso del CLIENTE cambiamos las IPs #ifconfig 10.8.0.2 10.8.0.1 secret static.key #Algoritmo de compresion comp-lzo #Tolerancia a fallos de la red keepalive 10 60 ping-timer-rem persist-tun persist-key #Estos comandos siguientes son propios del servidor. #Perdida de privilegios para que no se haga nada si alguien consigue entrar. #En este caso el usuario y el grupo han de estar definidos. #user nobody #group nobody #Lo lanzamos como demonio, es decir, como dejarlo sin necesitar que esté la #terminal activa dónde lo hemos lanzado antes con el comando openvpn #server.conf. #Quizás haya que hacer algo más para efectívamente tenerlo como demonio. #daemon
cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/4.-pki/ Dentro del fichero vars cambiar este valor porque 4.-keys es donde dejaremos las claves export KEY_DIR=”/etc/openvpn/4.-keys” export KEY_SIZE=2048 (hacemos las claves más largas para que sean más seguras) Para ejecutar el vars: /4.-pki/source vars luego hacemos el ./build-dh para que genere números aleatorios grandes Hay que poner el “./” para que los ejecute. Para crearnos como certificadores: ./pkitool –initca ./pkitool –server cursoPKI ./pkitool client1 ./pkitool –pass client2 ./pkitool –csr client3 ./pkitool –sign client3 ./pkitool –sign client3 Así firmas al cliente y tendrá el certificado. Ficheros que genera: -rw-r–r– 1 root root 1635 2009-10-27 10:31 ca.crt -rw——- 1 root root 1675 2009-10-27 10:31 ca.key -rw-r–r– 1 root root 5208 2009-10-27 10:39 client1.crt -rw-r–r– 1 root root 1029 2009-10-27 10:39 client1.csr -rw——- 1 root root 1675 2009-10-27 10:39 client1.key -rw-r–r– 1 root root 5208 2009-10-27 10:39 client2.crt -rw-r–r– 1 root root 1029 2009-10-27 10:39 client2.csr -rw——- 1 root root 1743 2009-10-27 10:39 client2.key -rw-r–r– 1 root root 5208 2009-10-27 10:37 client3.crt -rw-r–r– 1 root root 1029 2009-10-27 10:36 client3.csr -rw——- 1 root root 1675 2009-10-27 10:36 client3.key -rw-r–r– 1 root root 5331 2009-10-27 10:32 cursoPKI.crt -rw-r–r– 1 root root 1033 2009-10-27 10:32 cursoPKI.csr -rw——- 1 root root 1679 2009-10-27 10:32 cursoPKI.key CON ROUTING serverRouting.conf con estos valores #Puerto a la escucha port 1194 #Protocolo a utilizar (udp tcp) proto udp #Estamos en routing dev tun #Claves a utilizar ca /etc/openvpn/4.-keys/ca.crt cert /etc/openvpn/4.-keys/cursoPKI.crt key /etc/openvpn/4.-keys/cursoPKI.key #Diffie Hellman dh /etc/openvpn/4.-keys/dh2048.pem #Definicion de la red server 10.8.0.0 255.255.255.0 #Persistencia de IP Asignada, es decir: #cada vez que te conectas tengas la misma IP. #ipp.txt es un fichero que guarda la relacion entre las MAC y las IP ifconfig-pool-persist ipp.txt #Duplicado de claves ;duplicate-cn #Tolerancia a fallos, 120 segundos keepalive 10 120 #Encapsulamiento comp-lzo #Tolerancia + degradacion de privil. persist-key persist-tun #Loggin… quien se conecta status openvpn-status.log #Feedback verb. verb 3 ************************************* Para matar un servicio que esté corriendo y no lo encuentras: ps aux | grep openvpn Esto nos devuelve un listado con un numero, cogiendo el más pequeño pones kill -9 numero Las claves que guardamos en el cliente son:
- ca.crt
- client1.crt
- client1.key
El fichero de configuracion del cliente tendrá: #Indicarle que es un cliente client #Interfaz dev tun #Protocolo proto udp #Direccion del serv (IP/Dir. dominio) remote 172.22.40.165 #Client directive: reiteracion infinita de la conexión #El cliente se intenta conectar pero el servidor está caido #Con esta directiva el cliente intenta reentrar infinitamente. resolv-retry infinite #No bind a puerto local nobind #Claves a utilizar ca ../4.-keys/client1/ca.crt cert ../4.-keys/client1/client1.crt key ../4.-keys/client1/client1.key #Verificacion del certificado del servidor #Pide la validación del servidor. #Necesario para evitar ataques tipo Man in the Middle ns-cert-type server #Encapsulación comp-lzo #Feedback verb 3 Para conectarse desde el cliente, con el boton derecho sobre el archiv de conf del cliente: Start VPN on this file BRIDGING Hace falta la instalación de: apt-get install bridge-utils
serverBridging.conf
port 1194 proto udp dev tap0 ca /etc/openvpn/4.-keys/ca.crt cert /etc/openvpn/4.-keys/cursoPKI.crt key /etc/openvpn/4.-keys/cursoPKI.key dh /etc/openvpn/4.-keys/dh2048.pem ifconfig-pool-persist ipp.txt #nueva directiva respecto del routing server-bridge 172.22.40.100 255.255.255.0 172.22.40.110 keepalive 10 120 comp-lzo persist-key persist-tun status openvpn-status.log verb3 Los scripts bridge-start y bridge-stop son necesarios para que se puedan crear los puentes y por lo tanto tendrían que estar en el inicio de los servidores.
Routing puerto 443
Casos de uso en redes filtradas. El puerto 443, es un puertos abiertos por la configuración de la red, habitualmente. De esta forma en redes filtradas se puede acceder. Otro puerto es el 80. En el serverRouting.conf
#Puerto a la escucha #Es mejor, no sé por qué. port 443
En el cliente en el fichero client.routing.ovpn
remote 172.22.40.165 443
Para poner los servidores en marcha automaticamente valdría poniendo los .conf del servidor en la carpeta raiz: /etc/openvpn/
Conectarse al servidor a través de un proxy
En este caso el proxy está en el cliente para salir a internet. Directivas en el cliente:
- http-proxy-retry #retry on connection failure
- http-proxy proxy.bed.net 3128 #proxy.bed.net 3128 es el proxy de la red del cliente.
- remote zubia.gotdns.com 443
Ampliar el alcance a otros elementos de la red
El router tiene que tener la regla para que mande de la VPN a la red interna, que será: llevar tráfico 10.8.0.0 a 172.22.40.158 #En el caso de Routing #añadir acceso a equipos en el lado del servidor push “route 172.22.40.0 255.255.255.0″ #En el caso de Bridging no habría que hace nada en el conf del servidor. Añadir máquinas en el cliente Def un fich de conf por clientes ccd Indicar la ruta del cliente que siempre tendrá que ser la misma. #Comunicacion entre clientes client-to-client #Maquinas en el cliente accesibles a otros clientes push “route 192.168.3.0 255.255.255.0″ en el caso de usar Bridge entre varios clientes ya estaría.
Casos de Uso
- Oficina remota: Una persona se conecta a la red de la oficina así que hay que agregar maquinas (impresoras, CRM, Voz IP) que están más allá del servidor.
- Conexiones entre sedes
- Red Filtrada
#Para que el servidor reencamine las rutas hay que activar en el servidor el IP_FORWARDING… #En el terminal del servidor VPN ejecutar esta línea para que esté el IP_FORWARDING echo “1″ > /procc/sys/net/ipv4/ip_forward iptables -t nat -A PSOTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE #Router #Tiene que estar configurado con una regla para que el tráfico 10.8.0.0/24 #se encamine a el servidor de la VPN (en la LAN local) 172.22.40.8 #Hay que enviarle rutas nuevas al cliente para que alcance otras máquinas route 172.22.40.0 255.255.255.0
Compartir arch de Windos
conf el servicio como brindging o con routing con servidor de Wins
Balanceo de carga
Definir varios servidores de VPN. Si estan en la misma maquina tendrás distintos puertos. Lo mejor es que esten en máquinas distintas. Una vez lanzados los servidores en el cliente. en /openvpn/config/balancin remote 172.22.40.158 443 remote 172.22.40.158 444 remote 172.22.40.158 444 #Balanceo aleatorio remote-random #Para indicarle cuanto tiempo tiene para resolver la conexión resolve-retry 60 #aumentando la se tls-auth
Revocar CLAVES
dentro de /pki utilizaremos pkitools y el script remoke-full Primero ejecutamos . ./vars o source ./vars Ejecutamos revoke-full [nombre del cliente que es el nombre de los ficheros .crt .key] Se crea el fichero crl.pem que contiene la lista negra de los revocados Probablemente en el fich de configuración del servidor poner:
crl-verify crl.pem
Ejercicio 1 Routing
1-Server con varios Clientes.
En servidor defino PKI y configurar el server
En clientes poner las claves y conf el cte.
Directivas de seguridad en el servidor
- Disminucion de privilegios (nivel 3)
- udp (nivel 1)
- tolerancia a fallos (nivel 3)
- llave estática tls (nivel 1)
- pki (autenticación + autorizacion) (nivel 2)
Pasos en el server:
- Editar vars
- comando source ./vars
- comando ./build-dh
- comando ./pkitool –initca
- comando ./pkitool –server [nombre servidor]
- comando ./pkitool [nombre cliente]
- comando ./pkitool –pass [cliente]
- comando ./pkitool –csr [cliente]
- comando ./pkitool –sign [cliente]
Ficheros de claves en:
- SERVIDOR
- ca.crt
- server.crt
- server.key
- ta.key
- CLIENTE
- ca.crt
- cliente.crt
- cliente.key
- ta.key
Fichero de conf del cliente
client
dev tun
proto udp
remote 172.22.40.162 1194
persist-key
persist-tun
resolv-retry infinite
nobind
ca ./keys/ca.crt
cert ./keys/client2.crt
key ./keys/client2.key
tls-auth ./keys/ta.key 1
ns-cert-type server
comp-lzo
verb 3
El fichero del servidor contendrá.
# Puerto a la escucha
port 1194
# Protocolo a utilizar
proto udp
# Estamos en routing
dev tun
# Claves a utilizar
ca /etc/openvpn/ejercicio/keys-server/ca.crt
cert /etc/openvpn/ejercicio/keys-server/ServerFila3.crt
key /etc/openvpn/ejercicio/keys-server/ServerFila3.key
# Diffie Hellman
dh /etc/openvpn/ejercicio/2.-keys/dh2048.pem
# Aumentando la seguridad en el nivel 1
tls-auth /etc/openvpn/ejercicio/keys-server/ta.key 0
# Definición de la red
#ifconfig IP-servidor IP-cliente
server 10.8.3.0 255.255.255.0
# Persistencia de IP asignada
ifconfig-pool-persist ipp.txt
# Duplicado de claves
;duplicate-cn
# Tolerancia a fallos
keepalive 10 120
# Encapsulamiento
comp-lzo
# Tolerancia + degradacion de privil.
persist-key
persist-tun
# Logging quien se conecta
status openvpn-status.log
# Feedback verbosity
verb 3
#en el caso de routing, añadir acceso a otros equipos en el lado del servidor
#push “route 172.22.40.0 255.255.255.0″
#client-config-dir /etc/openvpn/5.-routing/ccd
#route 192.168.3.0 255.255.255.0
# Comunicación entre clientes
client-to-client
# Maquinas en el cliente1 accessibles a otros clientes
#push “route 192.168.3.0 255.255.255.0″
# Inyectar opciones DHCP a los clientes
#push “dhcp-options DNS 172.22.40.1″
#push “dhcp-options DNS 172.22.40.2″
#push “dhcp-options WINS 172.22.40.3″
user nobody
group nobody