En este momento estás viendo Instalación de Nginx y toda la pila LEMP en Debian 11 «Bullseye»

Instalación de Nginx y toda la pila LEMP en Debian 11 «Bullseye»

Instalación de Nginx y toda la pila LEMP en Debian 11 «Bullseye»


Instalación y configuración de ssh y UFW

La pila LEMP es un conjunto de software utilizado para ofrecer páginas web y aplicaciones web dinámicas. El acrónimo significa: sistema operativo Linux, servidor web Nginx, base de datos MySQL o MariaDB y PHP.

Vamos a instalar la pila LEMP completa en un servidor Debian 11 «Bullseye». En este primer post prepararemos el servidor con la instalación de ssh y el cortafuegos UFW. También configuraremos los dos programas. Realizaremos la instalación desde un cliente con Ubuntu 20.04 en remoto con ssh.

Sumario

  • Requisitos previos
    • Crear usuario normal con privilegios de root
    • Configurar un firewall básico
      • Reglas del cortafuegos
      • Rango de puertos
      • habilitar las conexiones desde una IP determinada
    • Interfaz gráfica de usuario para firewall UFW en Debian
  • Habilitar el acceso externo para el usuario normal
    • Si root se autentica con contraseña
    • Si root se autentica con pareja de claves

Requisitos previos

Antes de iniciar la instalación de nginx y el resto de la pila LEMP, tenemos que tener un usuario normal con privilegios de sudo configurado además de root.

Deberemos además, habilitar un firewall básico para que bloquee los puertos que no sean esenciales para nginx. Vamos con ello.

Crear usuario normal con privilegios de root

Con la instalación de Debian 11 «Bullseye», como vimos en un post anterior, ya hemos instalado SSH server. Si no fuera el caso, el procedimiento es el siguiente. Puedes ver como se instala y configura OpenSSh en este enlace.

Nos conectamos mediante ssh «OpenSSH» con el servidor y usuario root.

ssh usario@ip_servidor

Antes deberíamos haber instalado las claves, privada en el servidor y pública en el cliente para facilitar las cosas. En este caso me «logeo» con mi usuario y me convierto en root.

Nos pedirá la contraseña una sola vez si tenemos las claves SSH instaladas, si no tendremos que introducirla siempre que nos conectemos.

El siguiente paso será crear un usuario normal con privilegios de sudo para administrar el servidor sin los peligros que conlleva el trabajar con root.

adduser usuario

Ya lo tengo creado. Si no fuese así, nos pedirá una contraseña y otra información adicional no obligatoria. Con ENTER nos las podemos saltar.

Conceder privilegios de sudo al usuario normal

Para muchos de los trabajos que tengamos que realizar en el servidor, necesitaremos privilegios de root temporales para el usuario normal «superusuario». Para utilizar estos privilegios, el usuario deberá anteponer sudo a los comandos. Esto se hace añadiendo el usuario al grupo sudo.

Como root tenemos que ejecutar el siguiente comando

usermod -aG sudo javier

Y así, el usuario javier puede tener privilegios de root, añadiendo sudo a los comandos.

Configurar un firewall básico

Con Debian 11 «Bullseye», podemos utilizar el cortafuegos UFW «Uncomplicated Firewall», que viene instalado por defecto, para garantizar las conexiones por unos puertos establecidos y mantener cerrados los demás. Esta es la opción más fácil, ya que es una interfaz de firewall simplificada que oculta la complejidad de las tecnologías de filtrado de paquetes de nivel inferior, como iptables y nftables.

Si por lo que fuese tuviésemos que instalarlo, lo haríamos como sigue: (si estamos como root no es necesario el sudo). Primero actualizamos la lista de paquetes de los repositorios.

sudo apt-get update

Y después instalamos el software cortafuegos

sudo apt-get install ufw

Como vemos en la captura, lo instala y crea algunas reglas.

Advertencia: si estamos configurando a través de SSH, necesitamos permitir conexiones SSH antes de habilitar el firewall. Si nuestra conexión se interrumpe antes de permitir SSH, es posible que se nos bloquee el acceso al sistema. Si lo estamos haciendo en local lo podemos hacer más tarde.

sudo ufw allow ssh

Después de la configuración, el servicio del cortafuegos no se activará de forma predeterminada, para que esté activo, ejecutamos

sudo ufw enable

Nota: se puede deshabilitar de la misma manera, reemplazando «enable» con «disable».

En segundo lugar, se deben configurar los valores predeterminados. Para usuarios normales, los siguientes valores predeterminados funcionarán bien.

sudo ufw default deny incoming
sudo ufw default allow outgoing

Para confirmar que el servicio de firewall de UFW funciona correctamente sin ningún error

sudo ufw status verbose

Con este comando también podremos ver todos los valores predeterminados y las reglas que hemos aplicado.

Reglas del cortafuegos

Permitir reglas es bastante simple desde la línea de comandos y, a veces, es necesario. Por ejemplo, de forma predeterminada, ufw niega todas las conexiones entrantes, lo que lo convertirá en un problema si estamos utilizando SSH. Por lo tanto, debemos crear una regla, como hemos visto antes, que permita conexiones SSH escribiendo

sudo ufw allow ssh
o
sudo ufw allow 22

Se pueden agregar otras reglas de la misma manera simplemente especificando un nombre del programa o el puerto que utiliza por defecto. Ufw viene con valores predeterminados precargados para algunos programas de uso común, y se activan automáticamente cuando crea una regla especificando el nombre del programa. Vemos los programas predeterminados con el siguiente comando

sudo ufw app list

Rango de puertos

Podemos establecer un rango de puertos para las conexiones, por ejemplo, para conexiones TCP

sudo ufw allow 1000:2000/tcp

Y para conexiones UDP

ufw allow 1000:2000/udp

También podemos habilitar las conexiones desde una IP determinada

sudo ufw allow from IP_del_cliente

Si queremos borrar reglas lo podemos hacer ejecutando

ufw delete allow ssh

Nos permite borrar las reglas por número. Para verlas ejecutamos

sudo ufw status numbered

Esto generará una lista numerada de reglas, y el número se puede usar para eliminar una regla en particular

sudo ufw delete 2 

Tenemos la opción de utilizar una interfaz gráfica para administrar estas reglas. Veamos como instalarla.

Interfaz gráfica de usuario para firewall UFW en Debian

Si estamos usando «Graphical Desktop Linux» podemos instalar una interfaz gráfica de usuario para el firewall UFW llamada “GUFW” (Graphical Uncomplicated Firewall). La herramienta proporciona una interfaz con la que puede crear cómodamente reglas para conexiones entrantes y salientes.

sudo apt-get install gufw

Habilitar el acceso externo para el usuario normal

Ahora, que ya tenemos un usuario normal para usar en la administración del servidor, debemos verificar que nos podemos conectar con SSH con este usuario. Si fuese necesario tendríamos que instalar OpenSSH.

Mientras no lo tengamos asegurado, no hay que cerrar la sesión con root. Podríamos tener problemas para entrar en el servidor y sin la sesión root, nos veríamos en un problema.

Para configurar el acceso SSH, dependerá de si tenemos la cuenta de root configurada para usar contraseña o claves SSH para la autenticación.

Si root se autentica con contraseña

Si hemos iniciado sesión en root con contraseña, entonces la contraseña estará habilitada para SSH. Podemos iniciar sesión con la cuenta de usuario en una nueva terminal y conectar por SSH.

ssh usuario@ip_servidor

Y si todo ha ido bien, ya deberíamos poder conectarnos. Ahora ya disponemos de privilegios de root anteponiendo sudo al comando a ejecutar e introduciendo la contraseña.

Lo más recomendable es configurar una pareja de claves de SSH, y así evitamos la autenticación con contraseña y añadimos seguridad a nuestro servidor. Para ello puedes consultar este enlace configuracion-servidor-ssh.

Si root se autentica con pareja de claves

Si root ha iniciado sesión con pareja de claves, la autenticación por contraseña estará deshabilitada para SSH. Para que el usuario recién creado, pueda iniciar sesión, tendremos que copiar la clave pública del servidor en el home del nuevo usuario. El directorio correcto es : «~/.ssh/authorized_keys»

Esto lo podemos hacer de dos maneras, según nos sea conveniente:

  • Copiar la clave publica al home del usuario desde el servidor.
  • Copiar la clave pública del servidor, almacenada en el home de root, al home del usuario desde el cliente. Deberá estar también en «~/.ssh/authorized_keys»

Para hacerlo podemos utilizar el comando cp, o rsync.

Desde el cliente y en sesión root ejecutaríamos

cp -r ~/.ssh/authorized_keys  /home/javier/.ssh/authorized_keys
ó
rsync --archive --chown=javier:javier ~/.ssh /home/javier

Nota importante

Es importante que con el comando rsync en el origen pongamos «~/.ssh», sin barra final. Si pusiéramos «~/.ssh/», se copiará el contenido del directorio «~/.ssh» de la cuenta root al directorio principal del usuario sudo en lugar de la estructura de directorios completa a «~/.ssh». Los archivos no estarán donde se les espera y no funcionará la autenticación por pareja de claves.

Y comprobamos que podemos iniciar sesión con el usuario normal por SSH.

ssh usuario@servidor_ip

Y conectaremos con el servidor, con una sesión de usuario normal, con la opción de utilizar sudo para tareas administrativas. Para ello nos solicitará la contraseña.

Y así terminamos la configuración del servidor Debian 11 «Bullseye» para la estructura que vamos a montar. Podemos proceder a instalar el software que queramos. En este caso instalaremos la pila LNMP (Linux, Nginx, MySQL y PHP). Lo vemos en el siguiente artículo.

Si tienes algún comentario que hacer sobre este artículo, al pie del post tienes un formulario para hacerlo.

Si quieres contactar conmigo por cualquier otro asunto relacionado con el sitio, en la página de contacto, tienes un formulario más adecuado.

Y para suscribirte y recibir las novedades publicadas, tienes un enlace en el pie de la página o desde aquí mismo.

Deja una respuesta

This site uses Akismet to reduce spam. Learn how your comment data is processed.