Instalando Servidor OpenVPN en Raspbian

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

    No hay comentarios:

    Publicar un comentario