- Punto de partida
- Una Raspberry pi model B, Rapbian
- La IP de la Rasberry en la red interna es 192.168.1.10 (por ejemplo).
- Red interna: 192.168.1.0/24.
- Red servidor VPN: 10.8.0.0/24.
- (incluir ejemplo de server.conf y client.conf)
- Procedimiento:
- Instalacion de openvpn y ssl
- sudo apt-get install openvpn openssl
- Creacion de una autoridad certificadora que generará certificados autofirmados
- sudo su
- cd /usr/lib/ssl
- cp openssl.cnf openssl.cnf.original
- Se cambia la linea "dir =" por
- dir = /etc/openvpn/
- cd /etc/openvpn
- mkdir certs
- mkdir newcerts
- mkdir private
- echo '01' > serial
- touch index.txt
- cd certs
- Se generan los certificados de la autorizada certificadora por 365 dias de validez.
- openssl req -nodes -new -x509 -days 365 -keyout ca.key -out ca.crt
- Se generan los certificados del servidor
- openssl req -nodes -new -extensions v3_req -keyout server.key -out server.csr
- Se firma el certificado
- sudo openssl ca -extensions v3_req -cert ca.crt -keyfile ca.key -out server.crt -in server.csr
- Se generan los certificados del cliente por 365 dias de validez.
- sudo openssl req -days 365 -new -keyout client.key -out client.csr
- Se firma el certificado
- sudo openssl ca -days 365 -cert ca.crt -keyfile ca.key -out client.crt -in client.csr
- El Common Name debe ser particular para cada cliente (no repetido)
- Se genera el Diffie-Hellman (tarda bastante)
- openssl dhparam -out dh2048.pem 2048
- En /etc/openvpn deben estar los ficheros
- ca.key, ca.crt, server.key, server.crt, dh2048.pem, server.conf
- El cliente debe tener
- ca.crt, client.conf, client.crt, client,key, dh2048.pem
- Habilitar reenvio en red IP
- Se descomenta la linea net.ipv4.ip_forward=1 en el fichero /etc/sysctl.conf
- Se cargará al reiniciar.
- Si no se quiere esperar: sudo sysctl -w net.ipv4.ip_forward=1
- Habilitar regla en iptables
- sudo su
- iptables -t nat -A INPUT -i eth0 -p tcp -m tcp --dport 1194 -j ACCEPT
- iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source 192.168.1.10
- Para verificar que la regla esta bien
- iptables -t nat -L
- Guardar las reglas en un fichero
- Si queremos guardar esta reglas en un fichero
- iptables-save > /etc/network/iptables.up.rules
- Posteriormente se podran aplicar las del fichero anterior (es la ruta por defecto a la que va a buscarlo el siguiente comando):
- iptables-apply
- Las reglas se perderan con un reboot
- Hacer reglas persistentes
- Si queremos que las reglas sean persistentes (que se carguen automaticamente en cada reinicio):
- sudo apt-get install iptables-persistent
- Si ya tuviesemos instaldo iptables-persistent lo reconfiguramos con:
- sudo dpkg-reconfigure iptables-persistent
- Nos preguntará si queremos escribir las reglas v4 y v6 en los ficheros:
- /etc/iptables/rules.v4
- /etc/iptables/rules.v6
- Respondemos que si
- Las reglas no se perderán con un reboot
- Se habilita el servicio para que arranque
- systemctl enable openvpn
- Se arranca el servicio de openvpn
- service openvpn start
- Para revocar un certificado
- cd /etc/openvpn/certs
- sudo openssl ca -cert ca.crt -keyfile ca.key -revoke certificate.crt
- Para revocarlo sin el .crt
- Se mira en index.txt el certificado que queremos revocar
- sudo openssl ca -cert ca.crt -keyfile ca.key -revoke ./newcerts/XX.pem
- En donde XX es el numero de certificado visto en index.txt
- Instalacion de certificados en clientes openvpn (http://openvpn.net/)
- Windows
- Copiar en C:\Program Files\OpenVPN\config los ficheros
- ca.crt
- client.crt
- client.key
- client.opvn (client.conf renombrado)
- dh2048.pem
- Android
- Propiedades
- Import Profile from SD card
- Se selecciona la carpeta que contenga la lista de ficheros anterior para el cliente android.
- Para ver el periodo de validez de un certificado (por ejemplo server.crt):
- openssl x509 -noout -dates -in server.crt
Instalando Servidor OpenVPN en Raspbian
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario