One place for hosting & domains

      servidor

      Cómo crear un servidor de Minecraft en Ubuntu 18.04


      El autor seleccionó el Tech Education Fund para que recibiese una donación como parte del programa Write for DOnations.

      Introducción

      Minecraft es un popular juego de video en espacio aislado. Su lanzamiento tuvo lugar originalmente en 2009 y, en él, los jugadores pueden hacer construcciones, explorar espacios, producir creaciones y sobrevivir en un mundo generado por bloques en 3D. Hasta finales de 2019, fue el segundo video juego de mayor venta de todos los tiempos. A través de este tutorial, creará su propio servidor de Minecraft para poder jugar con sus amigos. Específicamente, instalará los paquetes de software necesarios para ejecutar Minecraft, configurará el servidor para su ejecución y luego implementará el juego.

      De forma alternativa, puede explorar Minecraft en un solo clic con Minecraft Java Edition Server de un solo clic de DigitalOcean como otra ruta de instalación.

      En Este tutorial se utiliza la versión de Java de Minecraft. Si adquirió su versión de Minecraft a través de Microsoft App Store, no podrá conectarse a este servidor. La mayoría de las versiones de Minecraft que se adquieren en consolas de juegos, como PlayStation 4, Xbox One o Nintendo Switch también son de Microsoft. Estas consolas tampoco pueden conectarse al servidor creado en este tutorial. Puede obtener la versión de Java de Minecraft aquí.

      Requisitos previos

      Para completar los pasos de esta guía, necesitará lo siguiente:

      • Un servidor con una nueva instalación de Ubuntu 18.04, un non-root user con privilegios sudo y SSH habilitado. Puede seguir esta guía para inicializar su servidor y completar estos pasos. Minecraft puede hacer uso intensivo de recursos, así que téngalo en cuenta cuando seleccione el tamaño de su servidor. Si recurre a DigitalOcean y necesita más recursos, siempre puede cambiar el tamaño de su Droplet para añadir más CPU y RAM.

      • Una copia de Minecraft Java Edition instalada en una computadora local con Mac, Windows o Linux.

      Paso 1: Instalar los paquetes de software necesarios

      Una vez inicializado su servidor, su primer paso será instalar Java; necesitará que ejecute Minecraft.

      Actualice el índice de paquetes del administrador de paquetes APT:

      A continuación, instale la versión 8 de OpenJDK de Java; específicamente, el JRE sin encabezado. Esta es una versión mínima de Java en la que se elimina el apoyo para las aplicaciones GUI. Esto hace que sea ideal para ejecutar aplicaciones Java en un servidor:

      • sudo apt install openjdk-8-jre-headless

      También debe usar un software denominado screen para crear sesiones de servidor desacoplables. screen le permite crear una sesión terminal y desacoplarla de él, y dejar el proceso iniciado en ejecución. Esto es importante porque si inicia su servidor y luego cierra su terminal, esto terminaría la sesión y detendría su servidor. Instale screen ahora:

      Ahora que instaló Java, descargará el servidor de Minecraft desde el sitio web de Minecraft.

      Paso 2: Descargar la versión más reciente de Minecraft

      Ahora, debe descargar la versión actual del servidor de Minecraft. Puede hacerlo dirigiéndose al sitio web de Minecraft y copiando el enlace de descarga minecraft_server. X.X.X.jar​​, donde las X representan la versión más reciente del servidor.

      Ahora puede usar wget y el enlace que copió para descargar el servidor:

      • wget https://launcher.mojang.com/v1/objects/bb2b6b1aefcd70dfd1892149ac3a215f6c636b07/server.jar

      Si desea actualizar su servidor de Minecraft o si quiere ejecutar diferentes versiones de Minecraft, cambie el nombre de server.jar a minecraft_server_1.15.2jar, de modo que coincidan los números de versión resaltados con la versión que acaba de descargar:

      • mv server.jar minecraft_server_1.15.2.jar

      Si quiere descargar una versión anterior de Minecraft, puede encontrarla archivada en mcversions.net. Sin embargo, este tutorial se centrará en la versión reciente actual. Ahora que realizó la descarga, comenzaremos a configurar su servidor de Minecraft.

      Paso 3: Configurar y ejecutar el servidor de Minecraft

      Ahora que descargó el jar de Minecraft, estará listo para ejecutarlo.

      Primero, inicie una sesión de screen ejecutando el comando screen:

      Cuando haya leído el banner que apareció, presione la barra SPACE. screen le presentará una sesión terminal como es normal. Ahora, esta sesión es desacoplable, lo cual significa que usted podrá iniciar un comando aquí y dejarlo en ejecución.

      Ahora puede realizar su configuración inicial. No se alarme cuando este comando siguiente produzca un error. Minecraft ha diseñado su instalación de esta manera para que los usuarios deban aceptar por primera vez el acuerdo de licencia de la empresa. A continuación, hará lo siguiente:

      • java -Xms1024M -Xmx1024M -jar minecraft_server_1.15.2.jar nogui

      Antes de examinar el resultado de este comando, veremos en mayor detalle todos estos argumentos de línea de comandos con los que se aplican ajustes a su servidor:

      • Xms1024M: con esto se configura el servidor para comenzar a ejecutarse con 1024 MB o 1 GB de RAM. Puede aumentar este límite si quiere que su servidor empiece con más RAM. Tanto “M” como megabytes como “G” para gigabytes son opciones compatibles. Por ejemplo: Xms2G iniciará el servidor con 2 gigabytes de RAM.

      • Xmx1024M: con esto se configura el servidor para usar, como máximo, 1024 M de RAM. Puede aumentar este límite si quiere que su servidor se ejecute con un tamaño más grande y permitir más jugadores, o si siente que su servidor se ejecuta lentamente.

      • jar: este indicador especifica el archivo jar del servidor que se ejecutará.

      • nogui: indica al servidor que no inicie un GUI, ya que este es un servidor y no tiene una interfaz de usuario gráfica.

      La primera vez que ejecute este comando, que normalmente inicia su servidor, generará el siguiente error:

      Output

      [22:05:31] [22:05:31] [main/ERROR]: Failed to load properties from file: server.properties [22:05:31] [main/WARN]: Failed to load eula.txt [22:05:31] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

      Estos errores se generaron porque el servidor no pudo encontrar dos archivos necesarios para su ejecución: EULA (acuerdo de licencia de usuario final), que se encuentra en eula.txt, y el archivo de configuración server.properties. Afortunadamente, dado que el servidor no pudo encontrar estos archivos, los creó en su directorio de trabajo activo actual.

      Primero, abra eula.txt en nano o su editor de texto favorito:

      Dentro de este archivo, verá un enlace con el EULA de Minecraft. Copie la URL:

      ~/eula.txt

      #By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
      #Tue Mar 24 22:05:31 UTC 2020
      eula=false
      

      Abra la URL en su navegador web y lea el acuerdo. Luego, vuelva al editor de texto y encuentre la última línea en eula.txt. Aquí, cambie eula=false a eula=true. Ahora, guarde y cierre el archivo.

      Ahora que aceptó el EULA, es momento de configurar el servidor según sus especificaciones.

      En su directorio de trabajo actual, también encontrará el archivo server.properties que acaba de crear. Este archivo contiene todas las opciones de configuración de su servidor de Minecraft. Puede encontrar una lista detallada de todas las propiedades del servidor en el sitio Wiki oficial de Minecraft. Modifique este archivo con sus ajustes preferidos antes de iniciar su servidor. En este tutorial se abarcarán las propiedades fundamentales:

      El archivo aparecerá de la siguiente manera:

      ~/server.properties

      #Minecraft server properties
      #Thu Apr 30 23:42:29 UTC 2020
      spawn-protection=16
      max-tick-time=60000
      query.port=25565
      generator-settings=
      force-gamemode=false
      allow-nether=true
      enforce-whitelist=false
      gamemode=survival
      broadcast-console-to-ops=true
      enable-query=false
      player-idle-timeout=0
      difficulty=easy
      spawn-monsters=true
      broadcast-rcon-to-ops=true
      op-permission-level=4
      pvp=true
      snooper-enabled=true
      level-type=default
      hardcore=false
      enable-command-block=false
      max-players=20
      network-compression-threshold=256
      resource-pack-sha1=
      max-world-size=29999984
      function-permission-level=2
      rcon.port=25575
      server-port=25565
      server-ip=
      spawn-npcs=true
      allow-flight=false
      level-name=world
      view-distance=10
      resource-pack=
      spawn-animals=true
      white-list=false
      rcon.password=
      generate-structures=true
      online-mode=true
      max-build-height=256
      level-seed=
      prevent-proxy-connections=false
      use-native-transport=true
      motd=A Minecraft Server
      enable-rcon=false
      

      Veamos algunas de las propiedades más importantes en esta lista:

      • difficulty (por defecto, easy): establece la dificultad del juego, como la cantidad de daño que se maneja y cómo afectan los elementos al jugador. las opciones son peaceful, easy, normal y hard.

      • gamemode (por defecto, survival): configura el modo de juego. Las opciones son survival, creative, adventure y spectator.

      • level-name (por defecto, world): configura el nombre de su servidor que aparecerá en el cliente. Es posible que se deban indicar los caracteres como el apóstrofo escribiendo antes una diagonal invertida.

      • motd (por defecto, A Minecraft Server): mensaje que se muestra en la lista de servidores del cliente de Minecraft.

      • pvp (por defecto, true): permite un combate entre jugadores. Si se establece un valor true, los jugadores podrán involucrarse en un combate y producirse daño mutuamente.

      Cuando haya configurado las opciones que quiere, guarde y cierre el archivo.

      Ahora que cambió el parámetro de EULA a true y configuró sus ajustes, puede iniciar su servidor con éxito.

      Como la última vez, iniciaremos su servidor con 1024 MB de RAM. Solo que ahora también concederemos a Minecraft la capacidad de usar hasta 4G de RAM si lo necesita. Recuerde que está permitido ajustar este número para poder ajustarse a las limitaciones de su servidor o las necesidades de sus usuarios:

      • java -Xms1024M -Xmx4G -jar minecraft_server_1.15.2.jar nogui

      La inicialización puede tardar un momento. Pronto, su nuevo servidor de Minecraft comenzará a producir un resultado similar a este:

      Output

      [21:08:14] [Server thread/INFO]: Starting minecraft server version 1.15.2 [21:08:14] [Server thread/INFO]: Loading properties [21:08:14] [Server thread/INFO]: Default game type: SURVIVAL [21:08:14] [Server thread/INFO]: Generating keypair [21:08:15] [Server thread/INFO]: Starting minecraft server on *:25565

      Cuando el servidor esté activo, verá el siguiente resultado:

      Output

      [21:15:37] [Server thread/INFO]: Done (30.762s)! For help, type "help"

      Ahora, su servidor está en ejecución y usted accedió al panel de control del administrador del servidor. Ahora escriba help:

      Un resultado como este aparecerá:

      Output

      [21:15:37] [Server thread/INFO]: /advancement (grant|revoke) [21:15:37] [Server thread/INFO]: /ban <targets> [<reason>] [21:15:37] [Server thread/INFO]: /ban-ip <target> [<reason>] [21:15:37] [Server thread/INFO]: /banlist [ips|players] ...

      Desde esta terminal, puede ejecutar comandos administrador y controlar su servidor Minecraft. Ahora, usaremos screen para mantener el servidor nuevo en ejecución, incluso después de iniciar sesión. Luego, puede conectarse a su cliente de Minecraft e iniciar un juego nuevo.

      Paso 4: Mantener el servidor ejecutándose

      Ahora que está listo su servidor, le convendrá que siga ejecutándose aun después de desconectarse de su sesión de SSH. Debido a que utilizó screen anteriormente, puede desacoplarse de esta sesión presionando Ctrl + A + D. Ahora, regresará a su shell original.

      Ejecute este comando para ver todas las sesiones de screen:

      Obtendrá un resultado con el ID de su sesión, que necesitará para reanudar esa sesión:

      Output

      There is a screen on: 26653.pts-0.minecraft (03/25/20 21:18:31) (Detached) 1 Socket in /run/screen/S-root.

      Para reanudar su sesión, pase el indicador -r al comando screen y luego ingrese el ID de su sesión:

      Cuando esté listo para cerrar la sesión del servidor, asegúrese de desacoplarse de ella con Ctrl + A + D y luego cierre la sesión.

      Paso 5: Establecer conexión con su servidor desde el cliente de Minecraft

      Ahora que su servidor está listo y en ejecución, conéctese a él a través del cliente de Minecraft. ¡Con esto podrá jugar!

      Ejecute su copia de Minecraft Java Edition y seleccione Multiplayer en el menú.

      Selección de Multiplayer en el menú

      Luego, deberá añadir un servidor con el cual establecerá conexión. Haga clic en el botón Add Server.

      Selección del botón Add Server

      En la pantalla Edit Server Info que aparece, asigne un nombre a su servidor y escriba la dirección de IP de su servidor. Esta es la misma dirección IP que utilizó para conectarse a través de SSH.

      Asignación de un nombre a su servidor e introducción de la dirección IP

      Una vez que haya ingresado el nombre y la dirección IP de su servidor, accederá nuevamente a la pantalla del modo Multiplayer, donde ahora su servidor aparecerá en la lista.

      Selección del servidor y de la opción Join Server

      Desde ahora, su servidor siempre aparecerá en esta lista. Selecciónelo y haga clic en Join Server.

      ¡Disfrute del juego!

      ¡Ya se encuentra en su servidor y está listo para jugar!

      Conclusión

      Así, dispondrá de un servidor de Minecraft en ejecución en Ubuntu 18.04 para poder jugar con todos sus amigos. Diviértase abriéndose paso, haciendo creaciones y sobreviviendo en un duro mundo en 3D. Y recuerde: busque los “griefers”.



      Source link

      Cómo instalar y configurar un servidor de OpenVPN en Ubuntu 20.04


      Introducción

      Una red privada virtual (VPN) le permite transitar por redes no fiables como si estuviese en una red privada. Le permite acceder a Internet de forma segura desde su smartphone o equipo portátil cuando se conecta a una red no fiable, como la wifi de un hotel o una cafetería.

      Cuando se combina con conexiones HTTPS, esta configuración le permite proteger los inicios de sesión y las operaciones que realiza por medios inalámbricos. Puede evadir censuras y restricciones geográficas, y proteger su ubicación y el tráfico de HTTP no cifrado contra la actividad de las redes no fiables.

      OpenVPN es una solución VPN de seguridad en la capa de transporte (TLS) de código abierto y con características completas que aloja muchas configuraciones. En este tutorial, instalará OpenVPN en un servidor de Ubuntu 20.04 y luego la configurará para que el acceso a ella sea posible desde la máquina de un cliente.

      Nota: Si planea configurar un servidor de OpenVPN en un Droplet de DigitalOcean tenga en cuenta que, como muchos proveedores de host, cobraremos por excesos de ancho de banda. Por este motivo, controle el volumen de tráfico que maneja su servidor.

      Consulte esta página para obtener más información.

      Requisitos previos

      Para este tutorial, necesitará lo siguiente:

      Nota: Si bien es técnicamente posible usar su servidor de OpenVPN o su máquina local como CA, no se recomienda, dado que expone su VPN a algunas vulnerabilidades de seguridad. Según la documentación oficial de OpenVPN, debería disponer su CA en una máquina independiente dedicada a importar y firmar solicitudes de certificados. Por este motivo, para esta guía se supone que su CA se encuentra en un servidor de Ubuntu 20.04 independiente que también tiene un non-root user con privilegios sudo y un firewall básico habilitado.

      Además de eso, necesitará una máquina de cliente que usará para establecer conexión con su servidor de OpenVPN. En esta guía, lo citaremos como cliente de OpenVPN. A los efectos de este tutorial, le recomendamos que use su máquina local como el cliente de OpenVPN.

      Una vez implementados estos requisitos previos, estará listo para comenzar a instalar y configurar un servidor de OpenVPN en Ubuntu 20.04.

      Nota: Tenga en cuenta que si deshabilita la autenticación de contraseña mientras configura estos servidores, es posible que experimente dificultades al transferir archivos entre ellos más adelante en esta guía. Para solucionar este problema, puede volver a habilitar la autenticación de contraseña en cada servidor. De manera alternativa, puede generar un par de claves SSH para cada servidor, luego agregar la clave SSH pública del servidor de OpenVPN al archivo authorized_keys y viceversa. Consulte Cómo configurar claves de SSH en Ubuntu 20.04 para encontrar instrucciones sobre cómo aplicar cualquiera de estas soluciones.

      Paso 1: Instalar OpenVPN y Easy-RSA

      El primer paso de este tutorial es instalar OpenVPN y Easy-RSA. Easy-RSA es una herramienta de gestión de infraestructura de claves públicas (PKI) que usará en el servidor de OpenVPN para generar una solicitud de certificado que luego verificará y firmará en el servidor de CA.

      Para comenzar, actualice el índice de paquetes de su servidor de OpenVPN e instale y OpenVPN y Easy-RSA. Ambos paquetes están disponibles en los repositorios predeterminados de Ubuntu. Por lo tanto, puede utilizar apt para la instalación:

      • sudo apt update
      • sudo apt install openvpn easy-rsa

      A continuación, deberá crear un directorio nuevo en el servidor de OpenVPN como su non-root user llamado ~/easy-rsa:

      Ahora, deberá crear un symlink desde la secuencia de comandos de easyrsa que el paquete instaló en el directorio ~/easy-rsa que acaba de crear:

      • ln -s /usr/share/easy-rsa/* ~/easy-rsa/

      Nota: Aunque en otras guías se le indique copiar los archivos del paquete easy-rsa a su directorio de la PKI, en este tutorial usaremos enlaces simbólicos. Como resultado, toda actualización del paquete easy-rsa se reflejará automáticamente en las secuencias de comandos de su PKI.

      Por último, asegúrese de que el propietario del directorio sea su non-root sudo user y restrinja el acceso a ese usuario con chmod:

      • sudo chown sammy ~/easy-rsa
      • chmod 700 ~/easy-rsa

      Cuando haya instalado estos programas y se hayan movido a las ubicaciones correctas en su sistema, el siguiente paso es crear una infraestructura de claves públicas (PKI) en el servidor de OpenVPN para que pueda solicitar y administrar certificados TLS para clientes y otros servidores que se conecten a su VPN.

      Paso 2: Crear una PKI para OpenVPN

      Antes de poder crear la clave y el certificado privados de su servidor de OpenVPN, deberá crear un directorio local de infraestructura de clave pública en su servidor de OpenVPN. Usará este directorio para gestionar las solicitudes de certificados de clientes y del servidor en vez de hacerlas directamente en su servidor CA.

      Para crear un directorio de PKI en su servidor de OpenVPN, deberá completar un archivo llamado vars con algunos valores predeterminados. Primero, usará cd para ingresar al directorio easy-rsa y, luego, creará y editará el archivo vars utilizando nano o el editor de texto que prefiera.

      Una vez abierto el archivo, pegue las siguientes dos líneas:

      ~/easy-rsa/vars

      set_var EASYRSA_ALGO "ec"
      set_var EASYRSA_DIGEST "sha512"
      

      Estas son las dos únicas líneas que necesita en este archivo vars de su servidor de OpenVPN, ya que no se utilizará como entidad de certificación. Estas líneas garantizarán que sus claves y solicitudes de certificados privadas estén configuradas para utilizar la Elliptic Curve Cryptography (ECC) moderna, a fin de generar claves y firmas seguras para sus clientes y su servidor de OpenVPN.

      Configurar sus servidores de OpenVPN y CA para que usen ECC significa que cuando un cliente y un servidor intenten establecer una clave simétrica compartida, pueden usar algoritmos de Elliptic Curve para realizar el intercambio. Usar ECC para un intercambio de claves es mucho más rápido que usar solo Diffie-Hellman con el clásico algoritmo RSA, dado que los números son mucho más pequeños y los cálculos son más rápidos.

      Antecedentes: Cuando los clientes se conectan a OpenVPN, usan cifrado asimétrico (también conocido como “clave pública o privada”) para realizar un protocolo de enlace TLS. Sin embargo, al transmitir tráfico de VPN cifrado, el servidor y los clientes usan el cifrado simétrico, también conocido como “cifrado de clave compartida”.

      Hay mucha menos estructura informática con cifrado simétrico que con el asimétrico: los números que se utilizan son mucho más pequeños y las CPU modernas integran instrucciones para realizar operaciones de cifrado simétricas optimizadas. Para hacer el cambio de cifrado de asimétrico a simétrico, el servidor de OpenVPN y el cliente usarán el algoritmo Elliptic Curve Diffie-Hellman (ECDH) para acordar una clave secreta compartida lo antes posible.

      Cuando complete el archivo vars, podrá continuar creando el directorio PKI. Para ello, ejecute la secuencia de comandos easyrsa con la opción init-pki. Aunque ya ejecutó este comando en el servidor CA como parte de los requisitos previos, debe ejecutarlo aquí porque su servidor de OpenVPN y el de CA tienen directorios PKI separados:

      Tenga en cuenta que no necesita crear una entidad de certificación en su servidor de OpenVPN. Su servidor de CA es el único responsable de validar y firmar certificados. La PKI de su servidor VPN solo se usa como una ubicación adecuada y centralizada para almacenar solicitudes de certificado y certificados públicos.

      Después de iniciar su PKI en el servidor de OpenVPN, estará listo para continuar con el siguiente paso: crear una solicitud de certificado de servidor de OpenVPN y una clave privada.

      Paso 3: Crear una solicitud de certificado de servidor de OpenVPN y una clave privada

      Ahora que en su servidor de OpenVPN se realizaron las instalaciones establecidas en los requisitos previos, el siguiente paso es generar una clave privada y una solicitud de firma de certificados (CSR) en su servidor de OpenVPN. A continuación, transferirá la solicitud a su CA para que se firme, lo que creará el certificado requerido. Cuando tenga un certificado firmado, lo transferirá de vuelta al servidor de OpenVPN y lo instalará para que el servidor lo use.

      Para comenzar, diríjase al directorio ~/easy-rsa de su servidor de OpenVPN como non-root user:

      Invoque easyrsa con la opción gen-req seguida de un nombre común (CN) para la máquina. El CN puede ser el que prefiera, pero puede resultarle útil que sea descriptivo. Durante este tutorial, el CN del servidor de OpenVPN será server. Asegúrese de incluir también la opción nopass. Si no lo hace, se protegerá con contraseña el archivo de solicitud, lo que podría generar problemas de permisos más adelante.

      Nota: Si elige otro nombre que no sea server, deberá modificar algunas de las instrucciones a continuación. Por ejemplo, al copiar los archivos generados al directorio /etc/openvpn, deberá sustituir los nombres que correspondan. También deberá modificar el archivo /etc/openvpn/server.conf más adelante para señalar los archivos .crt y .key correctos.

      • ./easyrsa gen-req server nopass

      Output

      Common Name (eg: your user, host, or server name) [server]: Keypair and certificate request completed. Your files are: req: /home/sammy/easy-rsa/pki/reqs/server.req key: /home/sammy/easy-rsa/pki/private/server.key

      Con esto, se crearán una clave privada para el servidor y un archivo de solicitud de certificado llamado server.req. Copie la clave del servidor al directorio /etc/openvpn/server:

      • sudo cp /home/sammy/easy-rsa/pki/private/server.key /etc/openvpn/server/

      Tras completar estos pasos, habrá creado correctamente una clave privada para su servidor de OpenVPN. También generó una solicitud de firma de certificado para el servidor de OpenVPN. Ahora la CSR está lista para que su CA la firme. En la siguiente sección de este tutorial, aprenderá a firmar una CSR con la clave privada de su servidor CA.

      Paso 4: Firmar la solicitud de certificado del servidor de OpenVPN

      En el paso anterior, creó una solicitud de firma de certificado (CSR) y una clave privada para el servidor de OpenVPN. Ahora, el servidor de CA necesita conocer el certificado server y validarlo. Una vez que el CA valide y devuelva el certificado al servidor de OpenVPN, los clientes que confían en su CA podrán confiar también en el servidor de OpenVPN.

      En el servidor de OpenVPN, como su non-root user, use SCP u otro método de transferencia a fin de copiar la solicitud de certificado server.req al servidor CA para firmar lo siguiente:

      • scp /home/sammy/easy-rsa/pki/reqs/server.req sammy@your_ca_server_ip:/tmp

      Si siguió el tutorial Cómo instalar y configurar una entidad de certificación (CA) en Ubuntu 20.04 de los requisitos previos, el siguiente paso será iniciar sesión en el servidor de CA como el non-root user que creó para administrar su CA. Utilice cd para el directorio ~/easy-rsa donde creó su PK y luego importe la solicitud de certificado utilizando la secuencia de comandos easyrsa:

      • cd ~/easy-rsa
      • ./easyrsa import-req /tmp/server.req server

      Output

      . . . The request has been successfully imported with a short name of: server You may now use this name to perform signing operations on this request.

      A continuación, firme la solicitud ejecutando la secuencia de comandos easyrsa con la opción sign-req seguida del tipo de solicitud y el nombre común. El tipo de solicitud puede ser client o server. Debido a que estamos trabajando con la solicitud de certificado del servidor de OpenVPN, asegúrese de usar el tipo de solicitud server:

      • ./easyrsa sign-req server server

      En el resultado, se le solicitará que verifique que la solicitud provenga de una fuente de confianza. Escriba yes y pulse ENTER para confirmar:

      Output

      You are about to sign the following certificate. Please check over the details shown below for accuracy. Note that this request has not been cryptographically verified. Please be sure it came from a trusted source or that you have verified the request checksum with the sender. Request subject, to be signed as a server certificate for 3650 days: subject= commonName = server Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes . . . Certificate created at: /home/sammy/easy-rsa/pki/issued/server.crt

      Tenga en cuenta que si cifró su clave privada CA, se le solicitará su contraseña en este momento.

      Completados estos pasos, ha firmado la solicitud de certificado del servidor de OpenVPN usando la clave privada del servidor de CA. El archivo server.crt resultante contiene la clave de cifrado pública del servidor de OpenVPN y una nueva firma del servidor de CA. El objetivo de la firma es indicar a todos los que confían en el servidor de CA que también pueden confiar en el servidor de OpenVPN cuando se conecten a él.

      Para terminar de configurar los certificados, copie los archivos server.crt y ca.crt del servidor de CA al servidor de OpenVPN:

      • scp pki/issued/server.crt sammy@your_vpn_server_ip:/tmp
      • scp pki/ca.crt sammy@your_vpn_server_ip:/tmp

      Ahora, vuelva a su servidor de OpenVPN y copie los archivos de /tmp a /etc/openvpn/server:

      • sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/server

      Con esto, su servidor de OpenVPN estará casi listo para aceptar conexiones. En el siguiente paso, realizará algunos pasos adicionales para aumentar la seguridad del servidor.

      Paso 5: Configurar material criptográfico de OpenVPN

      Para obtener una capa de seguridad adicional, añadiremos una clave secreta compartida que el servidor y todos los clientes usarán con la directiva tls-crypt de OpenVPN. Esta opción se usa para confundir el certificado TLS que se emplea cuando un servidor y un cliente se conectan inicialmente. También lo usa el servidor de OpenVPN para realizar comprobaciones rápidas de los paquetes entrantes: si se firma un paquete usando la clave previamente compartida, el servidor lo procesa; si no se firma, el servidor sabe que es de una fuente no confiable y puede descartarlo sin tener que realizar otras tareas de descifrado.

      Esta opción le servirá para asegurarse de que su servidor de OpenVPN pueda hacer frente al tráfico sin autenticación, a los escáneres de puerto y a los ataques de denegación de servicio, que pueden restringir recursos del servidor. También hace que sea más difícil identificar el tráfico de red de OpenVPN.

      Para generar la clave tls-crypt antes compartida, ejecute lo siguiente en el servidor de OpenVPN en el directorio ~/easy-rsa:

      • cd ~/easy-rsa
      • openvpn --genkey --secret ta.key

      El resultado será un archivo llamado ta.key. Cópielo al directorio /etc/openvpn/server/:

      • sudo cp ta.key /etc/openvpn/server

      Una vez implementados estos archivos en el servidor de OpenVPN, estará listo para crear certificados de cliente y archivos de clave para sus usuarios, que usará para conectarse con la VPN.

      Paso 6: Generar un par de certificado y clave de cliente

      Aunque puede generar una solicitud de claves y certificados privados en su máquina cliente y, luego, enviarla a la CA para que la firme, en esta guía se describe un proceso para generar la solicitud de certificado en el servidor de OpenVPN. El beneficio de este enfoque es que podemos crear una secuencia de comandos que generará de manera automática archivos de configuración de cliente que contienen las claves y los certificados necesarios. Esto le permite evitar la transferencia de claves, certificados y archivos de configuración a los clientes, y optimiza el proceso para unirse a la VPN.

      Generaremos un par individual de clave y certificado de cliente para esta guía. Si tiene más de un cliente, puede repetir este proceso para cada uno. Tenga en cuenta que deberá pasar un valor de nombre único a la secuencia de comandos para cada cliente. En este tutorial, el primer par de certificado y clave se denominará client1.

      Comience por crear una estructura de directorios dentro de su directorio de inicio para almacenar los archivos de certificado y clave de cliente:

      • mkdir -p ~/client-configs/keys

      Debido a que almacenará los pares de certificado y clave de sus clientes y los archivos de configuración en este directorio, debe bloquear sus permisos ahora como medida de seguridad:

      • chmod -R 700 ~/client-configs

      Luego, diríjase al directorio EasyRSA y ejecute la secuencia de comandos ​​​​​​easyrsa con las opciones gen-req y nopass, junto con el nombre común para el cliente:

      • cd ~/easy-rsa
      • ./easyrsa gen-req client1 nopass

      Presione ENTER para confirmar el nombre común. Luego, copie el archivo client1.key al directorio ~/client-configs/keys/ que creó antes:

      • cp pki/private/client1.key ~/client-configs/keys/

      Luego, transfiera el archivo client1.req a su servidor de CA usando un método seguro:

      • scp pki/reqs/client1.req sammy@your_ca_server_ip:/tmp

      Ahora inicie sesión en su servidor de CA. A continuación, diríjase al directorio de EasyRSA e importe la solicitud de certificado:

      • cd ~/easy-rsa
      • ./easyrsa import-req /tmp/client1.req client1

      Luego, firme la solicitud como lo hizo para el servidor en el paso anterior. Esta vez, asegúrese de especificar el tipo de solicitud client:

      • ./easyrsa sign-req client client1

      Cuando se le solicite, ingrese yes para confirmar que desea firmar la solicitud de certificado y que esta provino de una fuente confiable:

      Output

      Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes

      Nuevamente, si cifró su clave de CA, se le solicitará la contraseña en este punto.

      Con esto, se creará un archivo de certificado de cliente llamado client1.crt. Transfiera este archivo de vuelta al servidor:

      • scp pki/issued/client1.crt sammy@your_server_ip:/tmp

      Vuelva a su servidor de OpenVPN, copie el certificado del cliente al directorio ~/client-configs/keys/:

      • cp /tmp/client1.crt ~/client-configs/keys/

      Luego copie los archivos ca.crt y ta.key al directorio ~/client-configs/keys/ también y establezca los permisos correspondientes para su usuario sudo:

      • cp ~/easy-rsa/ta.key ~/client-configs/keys/
      • sudo cp /etc/openvpn/server/ca.crt ~/client-configs/keys/
      • sudo chown sammy.sammy ~/client-configs/keys/*

      Con esto, se generarán los certificados y las claves de su servidor y cliente, y se almacenarán en los directorios correspondientes de su servidor de OpenVPN. Aún quedan algunas acciones que se deben realizar con estos archivos, pero tendrán lugar más adelante. Por ahora, puede continuar con la configuración de OpenVPN.

      Paso 7: Configurar OpenVPN

      Al igual que muchas otras herramientas de código abierto ampliamente usadas, OpenVPN tiene muchas opciones de configuración disponibles para personalizar su servidor según sus necesidades específicas. En esta sección, le daremos instrucciones para instalar una configuración de un servidor de OpenVPN basada en uno de los archivos de configuración de muestra incluidos en la documentación de este software.

      Primero, copie el archivo de muestra server.conf como punto de inicio para su propio archivo de configuración:

      • sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/
      • sudo gunzip /etc/openvpn/server/server.conf.gz

      Abra el archivo nuevo para editarlo con el editor de texto que prefiera. Usaremos nano en nuestro ejemplo:

      • sudo nano /etc/openvpn/server/server.conf

      Deberá cambiar algunas líneas en este archivo. Primero, encuentre la sección HMAC de la configuración buscando la directiva tls-auth. Esta línea no debería tener comentarios. Elimine los comentarios agregando un ; al comienzo de la línea. Luego, añada después una nueva línea que contenga solo el valor tls-crypt ta.key:

      /etc/openvpn/server/server.conf

      ;tls-auth ta.key 0 # This file is secret
      tls-crypt ta.key
      

      Luego, busque las líneas cipher para encontrar la sección de cifrado. El valor predeterminado está configurado para AES-256-CBC; sin embargo, el cipher de AES-256-GCM ofrece un mejor nivel de cifrado y rendimiento, y es muy compatible con los clientes de OpenVPN actualizados. Eliminaremos el valor predeterminado añadiendo un signo ; al inicio de esta línea y, luego, añadiremos otra línea que contenga el valor actualizado de AES-256-GCM:

      /etc/openvpn/server/server.conf

      ;cipher AES-256-CBC
      cipher AES-256-GCM
      

      Justo después de esta línea, añada una directiva auth para seleccionar el algoritmo de codificación de mensajes HMAC. SHA256 es una buena opción:

      /etc/openvpn/server/server.conf

      auth SHA256
      

      Luego, encuentre la línea que contenga la directiva dh que define los parámetros Diffie-Hellman. Debido a que configuramos todos los certificados para usar Elliptic Curve Cryptography, no necesita un archivo seed Diffie-Hellman. Elimine la línea existente que se parece a dh dh2048.pem o dh dh.pem. El nombre del archivo para la clave Diffie-Hellman puede ser diferente al indicado en el archivo de configuración del servidor de ejemplo. Luego, añada una línea después con el contenido dh none:

      /etc/openvpn/server/server.conf

      ;dh dh2048.pem
      dh none
      

      Luego, queremos que OpenVPN se ejecute sin privilegios cuando se inicie, por lo que debemos indicarle que se ejecute con el usuario nobody.y el grupo nogroup. Para ello, encuentre y elimine el comentario de las líneas user nobody y group nobody quitando el signo ; en el inicio de cada línea:

      /etc/openvpn/server/server.conf

      user nobody
      group nogroup
      

      (Opcional) Aplicar cambios de DNS para redireccionar todo el tráfico a través de la VPN

      Con los ajustes anteriores, creará la conexión de VPN entre su cliente y el servidor, pero no se forzarán conexiones para usar el túnel. Si desea usar la VPN para dirigir todo su tráfico de clientes a ella, probablemente le convenga aplicar algunos ajustes más a las computadoras de clientes.

      Para comenzar, encuentre y elimine el comentario de la línea que contenga push "redirect-gateway def1 bypass-dhcp". Al hacerlo, indicará a su cliente que redirija todo su tráfico a través de su servidor de OpenVPN. Tenga en cuenta que habilitar esta funcionalidad puede causar problemas de conectividad con otros servicios de red, como SSH:

      /etc/openvpn/server/server.conf

      push "redirect-gateway def1 bypass-dhcp"
      

      Debajo de esta línea, encontrará la sección dhcp-option. Nuevamente, elimine ; del inicio de ambas líneas para quitar los comentarios:

      /etc/openvpn/server/server.conf

      push "dhcp-option DNS 208.67.222.222"
      push "dhcp-option DNS 208.67.220.220"
      

      Estas líneas indicarán a su cliente que use los solucionadores OpenDNS gratuitos en las direcciones IP de la lista. Si prefiere otros solucionadores de DNS, puede sustituirlos en lugar de las IP resaltadas.

      Esto ayudará a los clientes a configurar de nuevo sus ajustes de DNS para usar el túnel de la VPN como puerta de enlace predeterminada.

      (Opcional) Ajustar el puerto y el protocolo

      Por defecto, el servidor de OpenVPN usa el puerto 1194 y el protocolo UDP para aceptar las conexiones de los clientes. Si necesita usar un puerto diferente debido a restricciones de los entornos de red que sus clientes puedan emplear, puede cambiar la opción port. Si no aloja contenido web en su servidor de OpenVPN, el puerto 443 es una opción común, ya que se suele permitir en las reglas de firewall.

      Para hacer que OpenVPN escuche en el puerto 443, abra el archivo server.conf y encuentre la línea que tiene el siguiente aspecto:

      /etc/openvpn/server/server.conf

      port 1194
      

      Edítela para que el puerto sea el 443:

      /etc/openvpn/server/server.conf

      # Optional!
      port 443
      

      Algunas veces, el protocolo se limita a ese puerto también. Si es así, encuentre la línea proto debajo de la línea port y cambie el protocolo de udp a tcp:

      /etc/openvpn/server/server.conf

      # Optional!
      proto tcp
      

      Si cambia el protocolo a TCP, deberá cambiar el valor de la directiva explicit-exit-notify de 1 a 0, ya que solo UDP la usa. Si no lo hace al usar TCP, se producirán errores al iniciar el servicio de OpenVPN.

      Busque la línea explicit-exit-notify al final del archivo y cambie el valor a 0:

      /etc/openvpn/server/server.conf

      # Optional!
      explicit-exit-notify 0
      

      Si no tiene necesidad de usar un puerto y protocolo distintos, es mejor dejar estos ajustes sin cambiar.

      (Opcional) Apuntar a credenciales no predeterminadas

      Si seleccionó antes un nombre diferente durante el comando ./easyrsa gen-req server, modifique las líneas cert y key en el archivo de configuración server.conf para que apunten a los archivos .crt y .key correspondientes. Si usa el nombre predeterminado, server, ya está configurado correctamente:

      /etc/openvpn/server/server.conf

      cert server.crt
      key server.key
      

      Cuando termine, guarde y cierre el archivo.

      Con esto, habrá terminado de configurar sus ajustes generales de OpenVPN. En el siguiente paso, personalizaremos las opciones de redes del servidor.

      Paso 6: Ajustar la configuración de redes del servidor de OpenVPN

      Hay algunos aspectos de la configuración de redes del servidor que deben modificarse para que OpenVPN pueda dirigir el tráfico de manera correcta a través de la VPN. El primero es el reenvío de IP, un método para determinar a dónde se debe dirigir el tráfico de IP. Esto es esencial para la funcionalidad de VPN que proporcionará su servidor.

      Para ajustar la configuración de IP predeterminada de su servidor de OpenVPN, abra el archivo /etc/sysctl.conf usando nano o su editor preferido:

      • sudo nano /etc/sysctl.conf

      Luego, añada la siguiente línea al final del archivo:

      /etc/sysctl.conf

      net.ipv4.ip_forward = 1
      

      Guarde y cierre el archivo cuando termine.

      Para leer el archivo y cargar los nuevos valores de la sesión actual, escriba lo siguiente:

      Output

      net.ipv4.ip_forward = 1

      Ahora, su servidor de OpenVPN podrá reenviar el tráfico entrante de un dispositivo ethernet a otro. Este ajuste garantiza que el servidor pueda dirigir tráfico desde los clientes que se conectan en la interfaz de VPN virtual fuera de sus otros dispositivos de ethernet físicos. Con esta configuración, se enviará todo el tráfico web de su cliente a través de la dirección IP de su servidor y la dirección IP pública de su cliente se ocultará de manera eficaz.

      En el siguiente paso, deberá configurar algunas reglas de firewall para asegurarse de que el tráfico hacia y desde su servidor de OpenVPN fluya de forma adecuada.

      Paso 9: Configuración del firewall

      Hasta ahora, instaló OpenVPN en su servidor, lo configuró y generó las claves y los certificados necesarios para que su cliente acceda a la VPN. Sin embargo, aún no ha proporcionado ninguna instrucción a OpenVPN sobre a dónde enviar el tráfico web entrante de los clientes. Puede especificar la forma en que el servidor debería gestionar el tráfico de clientes estableciendo algunas reglas de firewall y configuraciones de enrutamiento.

      Suponiendo que cumplió con los requisitos previos indicados al inicio de este tutorial, ya debería tener ufw instalado y en ejecución en su servidor. Para permitir OpenVPN a través del firewall, deberá habilitar el enmascaramiento, un concepto de iptables que proporciona traducción de direcciones de red (NAT) para dirigir de manera correcta las conexiones de los clientes.

      Antes de abrir el archivo de configuración de firewall para agregar las reglas de enmascaramiento, primero debe encontrar la interfaz de red pública de su máquina. Para hacer esto, escriba lo siguiente:

      Su interfaz pública es la secuencia de comandos que se encuentra en el resultado de este comando que sigue a la palabra “dev”. Por ejemplo, este resultado muestra la interfaz llamada eth0, que se resalta a continuación:

      Output

      default via 159.65.160.1 dev eth0 proto static

      Una vez que tenga la interfaz asociada con su ruta predeterminada, abra el archivo /etc/ufw/before.rules para agregar la configuración pertinente:

      • sudo nano /etc/ufw/before.rules

      Las reglas de UFW suelen agregarse usando el comando ufw. Sin embargo, las reglas enumeradas en el archivo before.rules se leen e implementan antes de que se carguen las reglas de UFW. En la parte superior del archivo, agregue las líneas resaltadas a continuación. Con esto, se establecerá la política predeterminada de la cadena POSTROUTING en la tabla nat y se enmascarará el tráfico que provenga de la VPN. Recuerde reemplazar eth0 en la línea -A POSTROUTING siguiente por la interfaz que encontró en el comando anterior:

      /etc/ufw/before.rules

      #
      # rules.before
      #
      # Rules that should be run before the ufw command line added rules. Custom
      # rules should be added to one of these chains:
      #   ufw-before-input
      #   ufw-before-output
      #   ufw-before-forward
      #
      
      # START OPENVPN RULES
      # NAT table rules
      *nat
      :POSTROUTING ACCEPT [0:0]
      # Allow traffic from OpenVPN client to eth0 (change to the interface you discovered!)
      -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
      COMMIT
      # END OPENVPN RULES
      
      # Don't delete these required lines, otherwise there will be errors
      *filter
      . . .
      

      Guarde y cierre el archivo cuando haya terminado.

      Luego, debe indicar a UFW que permita también los paquetes reenviados de modo predeterminado. Para hacer esto, abra el archivo /etc/default/ufw:

      • sudo nano /etc/default/ufw

      Dentro de este, encuentre la directiva DEFAULT_FORWARD_POLICY y cambie el valor de DROP por ACCEPT:

      /etc/default/ufw

      DEFAULT_FORWARD_POLICY="ACCEPT"
      

      Guarde y cierre el archivo cuando termine.

      Luego, modifique el firewall para permitir el tráfico hacia OpenVPN. Si no cambió el puerto y el protocolo en el archivo /etc/openvpn/server.conf, deberá abrir el tráfico UDP al puerto 1194. Si modificó el puerto o el protocolo, sustituya los valores que seleccionó aquí.

      En caso de que se haya olvidado de agregar el puerto SSH al seguir el tutorial de los requisitos previos, agréguelo aquí también:

      • sudo ufw allow 1194/udp
      • sudo ufw allow OpenSSH

      Luego de agregar esas reglas, deshabilite y vuelva a habilitar UFW para reiniciarlo y cargue los cambios de todos los archivos que haya modificado:

      • sudo ufw disable
      • sudo ufw enable

      Su servidor quedará, así, configurado para manejar de manera correcta el tráfico de OpenVPN. Una vez implementadas las reglas de firewall, podremos iniciar el servicio de OpenVPN en el servidor.

      Paso 10: Iniciar OpenVPN

      OpenVPN se ejecuta como servicio systemd, por lo que podemos usar systemctl para administrarlo. Configuraremos OpenVPN para que se inicie en el arranque, de modo que pueda conectarse a su VPN en cualquier momento siempre que su servidor esté en ejecución. Para ello, habilite el servicio de OpenVPN añadiéndolo a systemctl:

      • sudo systemctl -f enable openvpn-server@server.service

      Luego, inicie el servicio de OpenVPN:

      • sudo systemctl start openvpn-server@server.service

      Vuelva a verificar que el servicio de OpenVPN esté activo con el comando siguiente. Debería ver active (running) en el resultado:

      • sudo systemctl status openvpn-server@server.service

      Output

      ● openvpn-server@server.service - OpenVPN service for server Loaded: loaded (/lib/systemd/system/openvpn-server@.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2020-04-29 15:39:59 UTC; 6s ago Docs: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Main PID: 16872 (openvpn) Status: "Initialization Sequence Completed" Tasks: 1 (limit: 1137) Memory: 1.0M CGroup: /system.slice/system-openvpnx2dserver.slice/openvpn-server@server.service └─16872 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --c> . . . . . . Apr 29 15:39:59 ubuntu-20 openvpn[16872]: Initialization Sequence Completed

      Ya completamos la configuración de la parte del servidor para OpenVPN. A continuación, configurará su máquina cliente y se conectará con el servidor de OpenVPN.

      Paso 11: Crear la infraestructura de configuración de clientes

      Es posible que se deban crear archivos de configuración para clientes de OpenVPN, ya que todos los clientes deben tener su propia configuración y alinearse con los ajustes mencionados en el archivo de configuración del servidor. En este paso, en lugar de detallarse el proceso para escribir un único archivo de configuración que solo se pueda usar en un cliente, se describe un proceso para crear una infraestructura de configuración de cliente que puede usar para generar archivos de configuración sobre la marcha. Primero creará un archivo de configuración “de base” y, luego, una secuencia de comandos que le permitirá generar archivos de configuración, certificados y claves de clientes exclusivos según sea necesario.

      Comience creando un nuevo directorio en el que almacenará archivos de configuración de clientes dentro del directorio client-configs creado anteriormente:

      • mkdir -p ~/client-configs/files

      Luego, copie un archivo de configuración de cliente de ejemplo al directorio client-configs para usarlo como su configuración de base:

      • cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf

      Abra este archivo nuevo con nano o su editor de texto preferido:

      • nano ~/client-configs/base.conf

      Dentro de este, ubique la directiva remote. Esto conduce al cliente a la dirección de su servidor de OpenVPN: la dirección IP pública de su servidor de OpenVPN. Si decidió cambiar el puerto en el que el servidor de OpenVPN realiza escuchas, también deberá cambiar 1194 por el puerto seleccionado:

      ~/client-configs/base.conf

      . . .
      # The hostname/IP and port of the server.
      # You can have multiple remote entries
      # to load balance between the servers.
      remote your_server_ip 1194
      . . .
      

      Asegúrese de que el protocolo coincida con el valor que usa en la configuración del servidor:

      ~/client-configs/base.conf

      proto udp
      

      Luego, elimine los comentarios de las directivas user y group quitando el signo ; al inicio de cada línea:

      ~/client-configs/base.conf

      # Downgrade privileges after initialization (non-Windows only)
      user nobody
      group nogroup
      

      Encuentre las directivas que establecen ca, cert y key. Elimine los comentarios de estas directivas, ya que pronto agregará los certificados y las claves dentro del archivo:

      ~/client-configs/base.conf

      # SSL/TLS parms.
      # See the server config file for more
      # description. It's best to use
      # a separate .crt/.key file pair
      # for each client. A single ca
      # file can be used for all clients.
      ;ca ca.crt
      ;cert client.crt
      ;key client.key
      

      De modo similar, elimine la directiva tls-auth, ya que añadirá ta.key directamente al archivo de configuración del cliente (y se configura el servidor para que use tls-crypt):

      ~/client-configs/base.conf

      # If a tls-auth key is used on the server
      # then every client must also have the key.
      ;tls-auth ta.key 1
      

      Refleje los ajustes de cipher y auth establecidos en el archivo /etc/openvpn/server/server.conf:

      ~/client-configs/base.conf

      cipher AES-256-GCM
      auth SHA256
      

      Luego, agregue la directiva key-direction en algún lugar del archivo. Es necesario que fije el valor “1” para esta, a fin de que la VPN funcione de manera correcta en la máquina cliente:

      ~/client-configs/base.conf

      key-direction 1
      

      Por último, añada algunas líneas con comentarios eliminados para administrar varios métodos que los clientes VPN basados ​​en Linux utilizarán para la resolución DNS. Añadirá dos conjuntos de líneas con comentarios eliminados similares, pero separados. El primer conjunto es para los clientes que no utilizan systemd-resolved para administrar DNS. Estos clientes dependen de la utilidad resolvconf para actualizar la información DNS para clientes de Linux.

      ~/client-configs/base.conf

      ; script-security 2
      ; up /etc/openvpn/update-resolv-conf
      ; down /etc/openvpn/update-resolv-conf
      

      Luego, añada otro conjunto de líneas para clientes que utilicen systemd-resolved para la resolución de DNS:

      ~/client-configs/base.conf

      ; script-security 2
      ; up /etc/openvpn/update-systemd-resolved
      ; down /etc/openvpn/update-systemd-resolved
      ; down-pre
      ; dhcp-option DOMAIN-ROUTE .
      

      Guarde y cierre el archivo cuando termine.

      Más adelante, en el paso 13 (sobre la instalación de la configuración del cliente) de este tutorial, aprenderá a determinar cómo funciona la resolución DNS para los clientes de Linux y qué sección no debería tener comentarios.

      A continuación, cree una secuencia de comandos que compile su configuración de base con el certificado, la clave y los archivos de cifrado pertinentes, y luego ubique la configuración generada en el directorio ~/client-configs/files. Abra un nuevo archivo llamado make_config.sh en el directorio ~/client-configs:

      • nano ~/client-configs/make_config.sh

      Dentro de este, agregue el siguiente contenido:

      ~/client-configs/make_config.sh

      #!/bin/bash
      
      # First argument: Client identifier
      
      KEY_DIR=~/client-configs/keys
      OUTPUT_DIR=~/client-configs/files
      BASE_CONFIG=~/client-configs/base.conf
      
      cat ${BASE_CONFIG} 
          <(echo -e '<ca>') 
          ${KEY_DIR}/ca.crt 
          <(echo -e '</ca>n<cert>') 
          ${KEY_DIR}/${1}.crt 
          <(echo -e '</cert>n<key>') 
          ${KEY_DIR}/${1}.key 
          <(echo -e '</key>n<tls-crypt>') 
          ${KEY_DIR}/ta.key 
          <(echo -e '</tls-crypt>') 
          > ${OUTPUT_DIR}/${1}.ovpn
      

      Guarde y cierre el archivo cuando termine.

      Antes de continuar, asegúrese de marcar este archivo como ejecutable escribiendo lo siguiente:

      • chmod 700 ~/client-configs/make_config.sh

      Esta secuencia de comandos realizará una copia del archivo base.conf que creó, recopilará los archivos de certificados y las claves que haya confeccionado para su cliente, extraerá el contenido de estos y los anexará a la copia del archivo de configuración de base, y exportará todo este contenido a un nuevo archivo de configuración de cliente. Esto significa que se evita la necesidad de administrar los archivos de configuración, certificado y clave del cliente por separado, y que toda la información necesaria se almacena en un solo lugar. El beneficio de este método es que, si alguna vez necesita agregar un cliente más adelante, puede simplemente ejecutar esta secuencia de comandos para crear de manera rápida el archivo de nueva configuración y asegurarse de que toda la información importante se almacene en una sola ubicación de acceso sencillo.

      Tenga en cuenta que siempre que agregue un nuevo cliente, deberá generar claves y certificados nuevos para poder ejecutar esta secuencia de comandos y crear el archivo de configuración de esta. Podrá practicar con este comando en el siguiente paso.

      Paso 12: Generar configuraciones de clientes

      Si siguió la guía, creó un certificado y una clave de cliente llamados client1.crt y client1.key, respectivamente, en el paso 6. Puede generar un archivo de configuración para estas credenciales si se dirige al directorio ~/client-configs y ejecuta la secuencia de comandos que realizó al final del paso anterior:

      • cd ~/client-configs
      • ./make_config.sh client1

      Con esto, se creará un archivo llamado client1.ovpn en su directorio ~/client-configs/files:

      • ls ~/client-configs/files

      Output

      client1.ovpn

      Debe transferir este archivo al dispositivo que planee usar como cliente. Por ejemplo, puede ser su computadora local o un dispositivo móvil.

      Si bien las aplicaciones exactas empleadas para lograr esta transferencia dependerán del sistema operativo de su dispositivo y sus preferencias personales, un método seguro y confiable consiste en usar el protocolo de transferencia de archivos SSH (SFTP ) o la copia segura (SCP) en el backend. Con esto, se trasladarán los archivos de autenticación de VPN de su cliente a través de una conexión cifrada.

      Aquí tiene un comando SFTP de ejemplo que puede ejecutar desde su computadora local (macOS o Linux). Esto copiará el archivo client1.ovpn que hemos creado en el último paso a su directorio de inicio:

      • sftp sammy@openvpn_server_ip:client-configs/files/client1.ovpn ~/

      A continuación, se muestran diferentes herramientas y tutoriales para transferir de manera segura los archivos del servidor de OpenVPN a una computadora local:

      Paso 13: Instalar la configuración de cliente

      En esta sección, se aborda la forma de instalar un perfil de VPN de cliente en Windows, macOS, Linux, iOS y Android. Ninguna de estas instrucciones para clientes depende de la otra. Por lo tanto, no dude en consultar directamente la que corresponda para su dispositivo.

      La conexión de OpenVPN tendrá el mismo nombre que usó para el archivo .ovpn. En lo que respecta a este tutorial, esto significa que la conexión se llama client1.ovpn y guarda correspondencia con el primer archivo de cliente que generó.

      Windows

      Instalación

      Descargue la aplicación de cliente de OpenVPN para Windows de la página de descargas de OpenVPN. Seleccione la versión adecuada del instalador para su versión de Windows.

      Nota: OpenVPN necesita privilegios administrativos para instalarse.

      Luego de instalar OpenVPN, copie el archivo .ovpn a esta ubicación:

      C:Program FilesOpenVPNconfig
      

      Cuando inicie OpenVPN, este detectará el perfil de manera automática y lo dejará disponible.

      Debe ejecutar OpenVPN como administrador cada vez que lo use, aun en cuentas administrativas. Para realizar esto sin tener que hacer clic con el botón secundario y seleccionar Ejecutar como administrador cada vez que use la VPN, debe fijarlo como ajuste predeterminado desde una cuenta administrativa. Esto también significa que los usuarios estándares deberán ingresar la contraseña del administrador para usar OpenVPN. Por otro lado, los usuarios estándares no pueden conectarse de manera adecuada al servidor a menos que la aplicación OpenVPN del cliente tenga derechos de administrador. Por lo tanto, se necesitan los privilegios elevados.

      Para configurar la aplicación OpenVPN de modo que se ejecute siempre con privilegios de administrador, haga clic con el botón secundario en su ícono de acceso directo y diríjase a Properties. Al final de la pestaña Compatibility, haga clic en el botón Change settings for all users. En la nueva ventana, seleccione Ejecutar este programa como administrador.

      Conexión

      Cada vez que inicie OpenVPN GUI, Windows le preguntará si quiere que el programa realice cambios en su computadora. Haga clic en . Iniciar la aplicación OpenVPN de cliente solo ubica el applet en la bandeja del sistema para que pueda conectar y desconectar la VPN según sea necesario; no establece la conexión de VPN.

      Una vez que se inicie OpenVPN, establezca una conexión ingresando al área de notificación y haga clic con el botón secundario en el ícono de OpenVPN. Con esto, se abrirá el menú contextual. Seleccione client1 en la parte superior del menú (su perfil client1.ovpn) y, luego, Connect.

      Una ventana de estado se abrirá y mostrará el resultado de registro mientras se establece la conexión, y se mostrará un mensaje una vez que el cliente esté conectado.

      Desconéctese de la VPN de la misma forma: ingrese al applet de la bandeja del sistema, haga clic con el botón secundario en el ícono de OpenVPN, seleccione el perfil del cliente y haga clic en Disconnect.

      macOS

      Instalación

      Tunnelblick es un cliente de OpenVPN gratuito y de código abierto para macOS. Puede descargar la última imagen de disco desde la página de descargas de Tunnelblick. Haga clic en el archivo .dmg descargado y siga las instrucciones para instalarlo.

      Al finalizar el proceso de instalación, Tunnelblick le preguntará si tiene algún archivo de configuración. Responda I have configuration files y deje que Tunnelblick finalice el proceso. Abra una ventana de Finder, busque client1.ovpn y haga doble clic en él. Tunnelblick instalará el perfil de cliente. Se necesitan privilegios de administrador.

      Conexión

      Inicie Tunnelblick haciendo doble clic en el ícono de Tunnelblick de la carpeta Aplicaciones. Una vez que se haya iniciado Tunnelblick, su ícono aparecerá en la barra de menú de la esquina superior derecha de la pantalla para controlar las conexiones. Haga clic en el ícono y, luego, en el elemento de menú Connect client1 para iniciar la conexión de VPN.

      Linux

      Instalación

      Si usa Linux, dispone de varias herramientas según su distribución. En su entorno de escritorio o gestor de ventanas, también pueden incluirse utilidades de conexión.

      Sin embargo, el método de conexión más universal consiste en simplemente usar el software OpenVPN.

      En Ubuntu o Debian, puede instalarlo como en el servidor escribiendo lo siguiente:

      • sudo apt update
      • sudo apt install openvpn

      En CentOS, puede habilitar los repositorios EPEL y, luego, instalarlo escribiendo lo siguiente:

      • sudo dnf install epel-release
      • sudo dnf install openvpn

      Configurar clientes que utilizan systemd-resolved

      Primero, determine si su sistema utiliza systemd-resolved para gestionar la resolución DNS comprobando el archivo /etc/resolv.conf:

      Output

      # This file is managed by man:systemd-resolved(8). Do not edit. . . . nameserver 127.0.0.53 options edns0

      Si su sistema está configurado para utilizar systemd-resolved para la resolución DNS, la dirección IP después de la opción nameserver será 127.0.0.53. También debería haber comentarios en el archivo, como en el resultado que se muestra, en los que se explique cómo systemd-resolved administra el archivo. Si tiene una dirección IP diferente de 127.0.0.53, lo más probable es que su sistema no esté utilizando systemd-resolved y podrá, en cambio, ir a la siguiente sección sobre cómo configurar clientes Linux que tienen la secuencia de comandos update-resolv-conf.

      Para admitir estos clientes, primero instale el paquete openvpn-systemd-resolved. Proporciona secuencias de comandos que forzarán a systemd-resolved a utilizar el servidor VPN para la resolución DNS.

      • sudo apt install openvpn-systemd-resolved

      Una vez que el paquete esté instalado, configure el cliente para usarlo y envíe todas las consultas DNS a la interfaz VPN. Abra el archivo VPN del cliente:

      Ahora, elimine el comentario de las siguientes líneas que añadió anteriormente:

      client1.ovpn

      script-security 2
      up /etc/openvpn/update-systemd-resolved
      down /etc/openvpn/update-systemd-resolved
      down-pre
      dhcp-option DOMAIN-ROUTE .
      

      Configurar clientes que utilizan update-resolv-conf

      Si su sistema no está utilizando systemd-resolved para administrar DNS, compruebe si su distribución incluye en su lugar la secuencia de comandos /etc/openvpn/update-resolv-conf:

      Output

      update-resolv-conf

      Si su cliente incluye el archivo update-resolv-conf, edite el archivo de configuración del cliente de OpenVPN que transfirió anteriormente:

      Elimine los comentarios de las tres líneas que añadió para ajustar la configuración de DNS:

      client1.ovpn

      script-security 2
      up /etc/openvpn/update-resolv-conf
      down /etc/openvpn/update-resolv-conf
      

      Si usa CentOS, cambie la directiva group de nogroup a nobody para que coincidan los grupos de distribución disponibles:

      client1.ovpn

      group nobody
      

      Guarde y cierre el archivo.

      ** Conectando **

      Ahora, podrá conectarse a la VPN simplemente apuntando el comando openvpn hacia el archivo de configuración de cliente:

      • sudo openvpn --config client1.ovpn

      Esto debería permitirle establecer conexión con la VPN.

      Nota: Si su cliente utiliza systemd-resolved para administrar DNS, compruebe que la configuración se aplique correctamente ejecutando el comando systemd-resolve --status de la siguiente manera:

      • systemd-resolve --status tun0

      Debería ver un resultado como el siguiente:

      Output

      Link 22 (tun0) . . . DNS Servers: 208.67.222.222 208.67.220.220 DNS Domain: ~.

      Si ve las direcciones IP de los servidores DNS que configuró en el servidor de OpenVPN, junto con la configuración ~. para el Dominio DNS en el resultado, habrá configurado correctamente su cliente para utilizar la resolución DNS del servidor de VPN. También puede verificar si envía consultas DNS a través de VPN utilizando un sitio como DNSleaktest.com.

      iOS

      Instalación

      Desde iTunes App Store, busque e instale OpenVPN Connect, la aplicación oficial cliente de OpenVPN de iOS. Para transferir su configuración de cliente iOS al dispositivo, conéctelo directamente a una computadora.

      El proceso para completar la transferencia con iTunes se describe aquí. Abra iTunes en la computadora y haga clic en iPhone > apps. Deslícese hacia la parte inferior, hasta la sección Compartir archivos, y haga clic en la app OpenVPN. La ventana en blanco de la derecha, Documentos OpenVPN, sirve para compartir archivos. Arrastre el archivo .ovpn a la ventana de documentos de OpenVPN. iTunes con el perfil de VPN listo para cargar en el iPhone

      Ahora, inicie la aplicación OpenVPN en el iPhone. Recibirá una notificación de que un nuevo perfil está listo para importarse. Toque el símbolo verde del signo de suma para importarlo.

      La app OpenVPN de iOS muestra un nuevo perfil listo para importarseConnecting

      De esta manera, OpenVPN estará listo para usarse con el nuevo perfil. Inicie la conexión deslizando el botón Connect a la posición On. Finalice la conexión deslizando el mismo botón a la posición Off.

      Nota: El conmutador de VPN de Settings no se puede usar para establecer conexión con la VPN. Si lo intenta, recibirá un aviso que le indicará establecer conexión únicamente con la aplicación OpenVPN.

      Aplicación OpenVPN de iOS conectada a la VPN

      Android

      Instalación

      Abra Google Play Store. Busque e instale Android OpenVPN Connect, la aplicación de cliente de OpenVPN oficial de Android.

      Puede transferir el perfil .ovpn conectando el dispositivo Android a su computadora a través de un puerto USB y copiando el archivo. De manera alternativa, si tiene un lector de tarjetas SD, puede quitar la tarjeta SD del dispositivo, copiar el perfil a ella y, luego, insertar la tarjeta de vuelta en el dispositivo Android.

      Inicie la aplicación OpenVPN y haga clic en el menú FILE para importar el perfil.

      Selección del menú de importación de perfiles de la aplicación OpenVPN de Android.

      Luego, diríjase a la ubicación del perfil guardado (en la captura de pantalla se usa /storage/emulated/0/openvpn​​​) y seleccione su archivo .ovpn. Haga clic en el botón IMPORT para terminar de importar este perfil.

      Selección de un perfil de VPN para su importación en la aplicación OpenVPN de Android.

      Conexión Cuando se añada el perfil, verá una pantalla como esta:

      Aplicación OpenVPN para Android con un nuevo perfil añadido

      Para conectarse, haga clic en el botón de activar para el perfil que desee usar. Verá datos en tiempo real de su conexión y tráfico enrutados a través de su servidor de OpenVPN: Aplicación OpenVPN para Android conectada a la VPN

      Para desconectarse, solo haga clic en el botón de alternancia en la parte superior izquierda de nuevo. Se le solicitará confirmar que desea desconectarse de su VPN.

      Paso 14: Probar la conexión de su VPN (opcional)

      Nota: Este método para probar su conexión de VPN solo funcionará si optó por enrutar todo el tráfico a través de la VPN en el paso 7 cuando editó el archivo server.conf para OpenVPN.

      Una vez que todo esté instalado, con una simple revisión confirmará que todo funciona de forma correcta. Sin tener una conexión VPN habilitada, abra un explorador e ingrese a DNSLeakTest.

      En el sitio se mostrará la dirección IP asignada por su proveedor de servicios de Internet y la forma en que aparece para el resto del mundo. Para corroborar sus ajustes de DNS a través del mismo sitio web, haga clic en Extended Test. Esto le indicará los servidores DNS que usa.

      Ahora, conecte el cliente de OpenVPN a la VPN de su Droplet y actualice el navegador. Con esto, debería aparecer una dirección IP totalmente distinta (la de su servidor de VPN). Así es como aparecerá ante el mundo. Una vez más, la opción Extended Test de DNSLeakTest revisará sus ajustes de DNS y confirmará que ahora use los solucionadores de DNS enviados por su VPN.

      Paso 15: Revocar certificados de clientes

      Es posible que, de tanto en tanto, deba rechazar un certificado de cliente para evitar más accesos al servidor de OpenVPN.

      Para ello, siga el ejemplo del tutorial de requisitos previos Cómo instalar y configurar una entidad de certificación en Ubuntu 20.04, en la sección Revocar un certificado.

      Cuando haya revocado un certificado para un cliente usando estas instrucciones, deberá copiar el archivo crl.pem generado a su servidor de OpenVPN en el directorio /etc/openvpn/server:

      • sudo cp /tmp/crl.pem /etc/openvpn/server/

      Luego, abra el archivo de configuración del servidor de OpenVPN:

      • sudo nano /etc/openvpn/server/server.conf

      Al final del archivo, agregue la opción crl-verify, que indicará al servidor OpenVPN que revise la lista de rechazo de certificados que creamos cada vez que se realice un intento de conexión:

      /etc/openvpn/server/server.conf

      crl-verify crl.pem
      

      Guarde y cierre el archivo.

      Por último, reinicie OpenVPN para implementar el rechazo de certificados:

      • sudo systemctl restart openvpn-server@server.service

      El cliente ya no debería poder establecer conexión de manera correcta con el servidor usando la credencial anterior.

      Para rechazar clientes adicionales, siga este proceso:

      1. Rechace el certificado con el comando ./easyrsa revoke client-name.
      2. Genere una nueva CRL.
      3. Transfiera el archivo crl.pem nuevo a su servidor de OpenVPN y cópielo al directorio /etc/openvpn/server/ para sobrescribir la lista anterior.
      4. Reinicie el servicio de OpenVPN.

      Puede usar este proceso para rechazar cualquier certificado emitido anteriormente para su servidor.

      Conclusión

      Ahora debería disponer de una red privada completamente funcional en ejecución en su servidor de OpenVPN. Puede navegar en la Web y descargar contenido sin preocuparse por la posibilidad de que individuos malintencionados rastreen su actividad.

      Hay varios pasos que podría seguir para personalizar su instalación de OpenVPN aún más, como configurar su cliente para que se conecte a la VPN de manera automática o definir reglas específicas y políticas de acceso para los clientes. Para esto y para otras personalizaciones de OpenVPN, debería consultar la documentación oficial de OpenVPN.

      Para configurar más clientes, solo debe seguir los pasos 6 y 11 a 13 para cada dispositivo adicional. Para rechazar el acceso de los clientes, siga el paso 15.



      Source link

      Cómo instalar y configurar Postfix como servidor SMTP de solo envío en Ubuntu 18.04


      El autor seleccionó la Free and Open Source Fund para recibir una donación como parte del programa Write for DOnations.

      Introducción

      Postfix es un agente de transferencia de correo (MTA), una aplicación que se utiliza para enviar y recibir correos electrónicos. Se puede configurar para que solo se pueda utilizar para enviar correos electrónicos mediante una aplicación local.  Esto es útil en situaciones en las que necesita enviar notificaciones por correo electrónico de sus aplicaciones de forma regular o, simplemente, si tiene mucho tráfico saliente que un proveedor de servicios de correo electrónico externo no permite.  También es una alternativa más ligera a la ejecución de un servidor SMTP completo que mantiene la funcionalidad necesaria.

      En este tutorial, instalará y configurará Postfix como servidor SMTP de solo envío. También solicitará certificados TLS gratuitos de Let´s Encrypt para su dominio y cifrará los correos electrónicos salientes con ellos.

      Requisitos previos

      • Un servidor de Ubuntu 18.04 configurado conforme a la Configuración inicial de servidores para Ubuntu 18.04, con un non-root user.
      • Un nombre de dominio registrado por completo. Para este tutorial, se utilizará your_domain en todo momento. Puede adquirir un nombre de dominio en Namecheap, obtener uno gratuito en Freenom o utilizar un registrador de dominios que elija.
      • Un registro DNS con your_domain orientado a la dirección IP pública de su servidor. Puede utilizar esta introducción al DNS de DigitalOcean para obtener más información sobre cómo agregarlos.

      Nota: El nombre de host de su servidor y el nombre de su Droplet deben coincidir con your_domain, dado que DigitalOcean establece registros de PTR automáticamente para la dirección IP del Droplet de acuerdo con su nombre.

      Puede verificar el nombre de host del servidor al escribir hostname en el símbolo del sistema. El resultado debe coincidir con el nombre que le dio al Droplet al crearlo.

      Paso 1: Instalar Postfix

      En este paso, instalará Postfix. Lo más rápido es instalar el paquete mailutils, que agrupa Postfix con algunos programas complementarios que usará para probar el envío de correos electrónicos.

      Primero, actualice la base de datos del paquete:

      A continuación, instale Postfix al ejecutar el siguiente comando:

      • sudo apt install mailutils

      Cerca del final del proceso de instalación, se le presentará la ventana de configuración de Postfix:

      Seleccione Internet Site en el menú y, luego, presione TAB para seleccionar<Ok>y, luego, presione ENTER.

      La opción predeterminada es Internet Site. Es la opción recomendada para su caso de uso, por lo tanto, presione TAB y, luego, ENTER. Si solo ve el texto de la descripción, presione TAB para seleccionar OK y, luego, ENTER.

      Si no se muestra automáticamente, ejecute el siguiente comando para iniciarlo:

      • sudo dpkg-reconfigure postfix

      Luego, recibirá otro mensaje de configuración con respecto a System mail name (el nombre de correo del sistema):

      Ingrese su nombre de dominio y, luego, presione TAB para seleccionar<Ok>y, luego, ENTER.

      El nombre de correo del sistema debe ser el mismo que el que asignó a su servidor al crearlo. Cuando termine, presione TAB y, luego, ENTER.

      Ahora, tiene Postfix instalado y está listo para comenzar a configurarlo.

      Paso 2: Configurar Postfix

      En este paso, configurará Postfix para enviar y recibir correos electrónicos únicamente del servidor en el que se está ejecutando; es decir, desde localhost.

      Para que eso suceda, Postfix se debe configurar para que escuche únicamente en la interfaz de bucle invertido, que es la interfaz de red virtual que utiliza el servidor para comunicarse internamente.  Para realizar los cambios necesarios, deberá editar el archivo de configuración principal de Postfix, denominado main.cf, que se encuentra en etc/postfix.

      Ábralo para modificarlo con su editor de texto favorito:

      • sudo nano /etc/postfix/main.cf

      Busque las siguientes líneas:

      /etc/postfix/main.cf

      . . .
      mailbox_size_limit = 0
      recipient_delimiter = +
      inet_interfaces = all
      . . .
      

      Establezca el valor de inet_interfaces en loopback-only:

      /etc/postfix/main.cf

      . . .
      mailbox_size_limit = 0
      recipient_delimiter = +
      inet_interfaces = loopback-only
      . . .
      

      Otra directiva que deberá modificar es mydestination, que se utiliza para especificar la lista de dominios que se entregan a través del transporte de entrega de correo local_transport. Por defecto, los valores son similares a los siguientes:

      /etc/postfix/main.cf

      . . .
      mydestination = $myhostname, your_domain, localhost.com, , localhost
      . . .
      

      Cambie la línea para que tenga el siguiente aspecto:

      /etc/postfix/main.cf

      . . .
      mydestination = localhost.$mydomain, localhost, $myhostname
      . . .
      

      Si su dominio, en realidad, es un subdominio y desea que los mensajes de correo electrónico se vean como si se enviaran del dominio principal, puede añadir la siguiente línea al final de main.cf:

      /etc/postfix/main.cf

      ...
      masquerade_domains = your_main_domain
      

      La configuración opcional de masquerade_domains especifica para qué dominios se eliminará la parte de subdominio en la dirección de correo electrónico.

      Cuando termine, guarde y cierre el archivo.

      Nota: Si aloja varios dominios en un único servidor, los demás también se pueden pasar a Postfix al utilizar la directiva mydestination.

      A continuación, reinicie Postfix al ejecutar el siguiente comando:

      • sudo systemctl restart postfix

      Configuró Postfix para que solo envíe correos electrónicos desde su servidor. Ahora, lo probará al enviar un mensaje de ejemplo a una dirección de correo electrónico.

      Paso 3: Probar el servidor SMTP

      En este paso, probará si Postfix puede enviar correos electrónicos a una cuenta de correo electrónico externa usando el comando mail, que es parte del paquete mailutils que instaló en el primer paso.

      Para enviar un correo electrónico de prueba, ejecute el siguiente comando:

      • echo "This is the body of the email" | mail -s "This is the subject line" your_email_address

      Puede cambiar el cuerpo y el asunto del correo electrónico a su gusto. Recuerde sustituir your_email_address por una dirección de correo electrónico válida a la que pueda acceder.

      Ahora, revise el correo en la dirección de correo electrónico a la que envió este mensaje. Debería ver el mensaje en su bandeja de entrada. Si no lo ve, revise su carpeta de correo no deseado. En este punto, los correos electrónicos que envía no están cifrados, lo que hace que los proveedores de servicios piensen que es probable que sean correos no deseados.  Configurará el cifrado más adelante, en el paso 5.

      Si recibe un error del comando mail, o si no recibió un mensaje después de un período prolongado, compruebe que la configuración de Postfix que modificó sea válida y que el nombre de su servidor y el nombre de host estén establecidos con el nombre de su dominio.

      Observe que, con esta configuración, la dirección del campo From de los correos electrónicos de prueba que envíe tendrá el formato your_user_name@your_domain​​, en el que your_user_name es el nombre del usuario del servidor con el que ejecutó el comando.

      En este punto, envió un correo electrónico desde su servidor y verificó que se haya recibido correctamente. En el siguiente paso, configurará el reenvío de correos electrónicos para root.

      Paso 4: Reenviar correos del sistema

      En este paso, configurará el reenvío de correos electrónicos para el root user a fin de que los mensajes generados por el sistema que se le envíen en su servidor se reenvíen a una dirección de correo electrónico externa.

      El archivo /etc/aliases contiene una lista de nombres alternativos de destinatarios de correo electrónico. Ábralo​​​ para editarlo:

      En su estado predeterminado, tiene el siguiente aspecto:

      /etc/aliases

      # See man 5 aliases for format
      postmaster:    root
      

      La única directiva presente especifica que los correos electrónicos generados por el sistema se envíen a root.

      Añada la siguiente línea al final del archivo:

      /etc/aliases

      ...
      root:          your_email_address
      

      Con esta línea, especifica que los correos electrónicos enviados al root user se reenvíen a una dirección de correo electrónico específica. Recuerde sustituir your_email_address por su dirección de correo electrónico personal. Cuando termine, guarde y cierre el archivo.

      Para que el cambio surta efecto, ejecute el siguiente comando:

      Al ejecutar newaliases, se creará una base de datos de alias que utiliza el comando mail, que se toman del archivo de configuración que acaba de editar.

      Compruebe que se envíen correos electrónicos al root user al ejecutar lo siguiente:

      • echo "This is the body of the email" | mail -s "This is the subject line" root

      Debería recibir el correo en su dirección de correo electrónico. Si no lo ve, revise su carpeta de correo no deseado.

      En este paso, configuró el reenvío de mensajes generados por el sistema a su dirección de correo electrónico. Ahora, habilitará el cifrado de mensajes para que todos los correos electrónicos que envíe su servidor estén protegidos contra alteraciones en tránsito y se consideren más legítimos.

      Paso 5: Habilitar el cifrado SMTP

      Ahora, habilitará el cifrado SMTP al solicitar un certificado TLS gratuito de Let´s Encrypt para su dominio (con Certbot) y configurará Postfix para que lo utilice al enviar mensajes.

      Ubuntu incluye Certbot en su repositorio de paquetes predeterminado, pero podría estar desactualizado. En su lugar, añadirá el repositorio oficial al ejecutar el siguiente comando:

      • sudo add-apt-repository ppa:certbot/certbot

      Presione ENTER cuando se le solicite que acepte. A continuación, actualice la caché del administrador de paquetes de su servidor:

      Por último, instale la última versión de Certbot:

      • sudo apt install certbot -y

      En los requisitos previos, instaló el firewall sencillo ufw como parte de la configuración inicial del servidor. Deberá configurarlo para que habilite el puerto HTTP 80 para que se pueda completar la verificación de dominios. Ejecute el siguiente comando para habilitarlo:

      El resultado tendrá el siguiente aspecto:

      Output

      Rule added Rule added (v6)

      Ahora que el puerto está abierto, ejecute Certbot para obtener un certificado:

      • sudo certbot certonly --standalone --rsa-key-size 4096 --agree-tos --preferred-challenges http -d your_domain

      Este comando le ordena a Certbot que emita certificados con un tamaño de clave RSA de 4096 bits, que ejecute un servidor web autónomo temporal (--standalone) para la verificación y que revise a través del puerto 80 (--preferred-challenges http). Recuerde sustituir your_domain por su dominio antes de ejecutar el comando e ingrese su dirección de correo electrónico cuando se le solicite hacerlo.

      El resultado tendrá un aspecto similar a este:

      Output

      Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator standalone, Installer None Obtaining a new certificate Performing the following challenges: http-01 challenge for `your_domain` Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/your_domain/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/your_domain/privkey.pem Your cert will expire on 2020-07-11. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le

      Como se indica en las notas, su certificado y su archivo de clave privada se guardaron en /etc/letsencrypt/live/your_domain.

      Ahora que tiene su certificado, abra main.cf para editarlo:

      • sudo nano /etc/postfix/main.cf

      Busque la siguiente sección:

      /etc/postfix/main.cf

      # TLS parameters
      smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
      smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
      smtpd_use_tls=yes
      smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
      smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
      

      Modifíquelo para que se vea de esta manera, reemplazando your_domain por su dominio donde sea necesario, lo que actualizará su configuración de TLS para Postfix:

      /etc/postfix/main.cf

      # TLS parameters
      smtpd_tls_cert_file=/etc/letsencrypt/live/your_domain/fullchain.pem
      smtpd_tls_key_file=/etc/letsencrypt/live/your_domain/privkey.pem
      smtp_use_tls=yes
      smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
      smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
      

      Cuando termine, guarde y cierre el archivo.

      Aplique los cambios al reiniciar Postfix:

      • sudo systemctl restart postfix

      Ahora, vuelva a probar enviar un correo electrónico:

      • echo "This is the body of an encrypted email" | mail -s "This is the subject line" your_email_address

      A continuación, revise el correo de la dirección de correo electrónico que proporcionó. Es posible que vea el mensaje en su bandeja de entrada de inmediato, porque es mucho más probable que los proveedores de correo electrónico clasifiquen los mensajes no cifrados como correo no deseado.

      Puede consultar la información técnica sobre el mensaje de correo electrónico en su cliente para ver que el mensaje, efectivamente, está cifrado.

      Conclusión

      Ahora, tiene un servidor de correo electrónico de solo envío de Postfix. Cifrar todos los mensajes salientes es un buen primer paso para que los proveedores de correo electrónico no clasifiquen sus mensajes directamente como correo no deseado. Si está haciendo esto en un escenario de desarrollo, esta medida debería ser suficiente.

      Sin embargo, si desea enviar correos electrónicos a posibles usuarios del sitio (por ejemplo, correos de confirmación para la inscripción a un tablero de mensajes), considere establecer registros SPF para que los correos electrónicos de su servidor tengan más probabilidades de considerarse legítimos.



      Source link