Compartir a través de


Parte 2.3.1: [Opcional] Configuración de la aplicación ASP.NET Core en Linux para iniciarse automáticamente en un usuario diferente

Se aplica a: .NET Core 2.1, .NET Core 3.1, .NET 5

En este artículo se presenta cómo configurar la aplicación ASP.NET Core en Linux para iniciarse automáticamente en un usuario diferente.

Requisitos previos

Para seguir los ejercicios de esta parte, primero debe seguir la configuración que se describe en las partes anteriores de esta serie. Además, debe tener lo siguiente:

  • Una máquina virtual Linux, preferiblemente ejecutando la distribución ubuntu 18.04 LTS de Linux.
  • Nginx se ejecuta automáticamente y escucha las solicitudes en el puerto 80.
  • Nginx configurado como proxy inverso y enrutar las solicitudes entrantes a una aplicación ASP.NET Core que escucha en el puerto 5000.
  • La aplicación ASP.NET Core configurada para iniciarse automáticamente después de reiniciar el servidor o cuando se detiene o se bloquea el proceso.

Objetivo de esta parte

En la parte anterior, creó un archivo de servicio para nuestra aplicación ASP.NET Core y configuró el servicio para que se ejecute en el contexto www-user integrado.

Sin embargo, en algunos entornos, es posible que quiera ejecutar las aplicaciones en contextos de usuario diferentes. Esto le daría control total sobre el aislamiento de otras aplicaciones que podrían ejecutarse en el mismo servidor. Por ejemplo, si hospeda varias aplicaciones web, puede configurar cada aplicación para que se ejecute en su propia cuenta de usuario con el fin de tener la flexibilidad de configurar permisos por separado para cada aplicación (en lugar de ejecutar todas las aplicaciones en el mismo contexto de usuario www-data).

El objetivo es configurar la aplicación ASP.NET Core para que se ejecute en una cuenta de usuario específica.

Practicará cómo crear un usuario y aprenderá a enumerar las otras cuentas de usuario que están disponibles en el equipo.

Nota:

Esta parte es opcional. Tampoco importa en qué contexto de usuario ejecute la aplicación ASP.NET Core para el resto de la serie de tutoriales.

Creación de un nuevo usuario para ejecutar la aplicación

Empezará creando un nuevo usuario y editando el archivo de servicio para ejecutar el servicio dentro de ese nuevo contexto de usuario. Para crear la cuenta de usuario, ejecute el sudo adduser <username> comando . Para esta demostración, el nombre de usuario elegido es firstappuser. Sin embargo, no dude en usar cualquier nombre que desee.

Captura de pantalla del comando sudo adduser.

En esta captura de pantalla se muestra el resultado de crear la firstappuser cuenta.

Recuerde que el servicio ASP.NET Core se ejecuta en el contexto de usuario www-data. Se trata de una cuenta integrada que se usa para las aplicaciones de servicio, como Apache y Nginx. Se recomienda usar esta cuenta para estas cargas de trabajo. Si comprobamos las pertenencias a grupos de usuarios mediante la ejecución de los groups www-data comandos y groups firstappuser , no observará ninguna diferencia.

Las cuentas de usuario locales de Linux se almacenan en el archivo /etc/passwd . Si ejecuta sudo cat /etc/passwd, verá todos los usuarios, incluido el usuario raíz. En la captura de pantalla siguiente se describe cada columna.

Captura de pantalla del comando sudo cat.

Para ver las diferencias entre los www-data usuarios y firstappuser , ejecute el sudo cat /etc/passwd | grep 'www-data\|firstappuser' comando . La salida será similar a la siguiente.

Captura de pantalla del comando sudo cat grep.

Nota:

El www-data usuario se ha /usr/sbin/nologin configurado para el shell. Esto significa que el www-data usuario no puede iniciar sesión en este equipo de forma interactiva mediante SSH. Sin embargo, firstappuser es capaz de hacerlo. Dado que la nueva cuenta será una cuenta de servicio, tiene sentido, como medida de seguridad, para evitar que la cuenta de usuario inicie sesión.

Para deshabilitar el acceso al shell, ejecute el sudo usermod -s /usr/sbin/nologin firstappuser comando .

Captura de pantalla del comando sudo usermod.

Hasta ahora, ha creado una cuenta (firstappuser) que se puede usar como nuestra cuenta de servicio. El siguiente paso consiste en configurar el servicio ASP.NET Core para que se ejecute dentro de esa cuenta de usuario. Abra el archivo de servicio mediante un comando vi. Reemplace "www-data" por "firstappuser" (o cualquier nombre de usuario que elija) y guarde el archivo.

Captura de pantalla de firstappuser en el comando .

Esto permite que la aplicación ASP.NET Core empiece por usar una cuenta de usuario diferente a la predeterminada www-data .

Después de cambiar el archivo de servicio, vuelva a cargar la configuración ejecutando sudo systemctl daemon-reload. A continuación, reinicie el servicio mediante la ejecución sudo systemctl restart myfirstwebapp.servicede .

Compruebe que la aplicación se ejecuta en la nueva cuenta de usuario.

Hay varios métodos para identificar al usuario que ejecuta un proceso específico. Por ejemplo, puede ejecutar ps -aux | grep <username>. Aunque ese enfoque puede resultar útil, seguirá faltando información, como el contenido real de la línea de comandos. Sin embargo, hay una manera fácil de recopilar información más completa mediante htop.

Nota: Htop es un administrador de tareas. Se explicará más adelante en esta serie. Htop está preinstalado en varias distribuciones de Linux, incluida la versión del servidor Ubuntu que probablemente esté usando. Si htop no está instalado en la distribución de Linux, puede instalarlo mediante administradores de paquetes.

Examine la captura de pantalla siguiente. Puede obtener mediante la PID ejecución systemctl statusde . A continuación, pase al PID htop comando mediante el -p modificador para obtener los detalles del proceso de ese PID.

Captura de pantalla del comando htop.

Y esta es la salida del htop -p <PID> comando.

Captura de pantalla del comando htop -p.

Como se muestra en la captura de pantalla, la aplicación ASP.NET Core de ejemplo se ejecuta ahora en el nuevo usuario que se creó mediante los comandos que se describen en esta parte.

Para salir htopde , presione F10 o Q.

Pasos siguientes

Parte 2.4: Protección de Linux mediante un firewall local y permitir el acceso HTTP remoto desde equipos remotos