다음을 통해 공유


2.3.1부 - [선택 사항] Linux의 ASP.NET Core 애플리케이션이 다른 사용자에 따라 자동으로 시작되도록 구성

적용 대상: .NET Core 2.1, .NET Core 3.1, .NET 5

이 문서에서는 Linux에서 ASP.NET Core 애플리케이션을 다른 사용자로 자동으로 시작하도록 구성하는 방법을 소개합니다.

필수 조건

이 부분의 연습을 수행하려면 먼저 이 시리즈의 이전 부분에 설명된 설정을 따라야 합니다. 또한 다음이 있어야 합니다.

  • Linux 가상 머신으로, Linux의 Ubuntu 18.04 LTS 배포를 실행하는 것이 좋습니다.
  • Nginx가 자동으로 실행되고 포트 80에서 요청을 수신 대기합니다.
  • Nginx는 역방향 프록시로 구성되고 포트 5000에서 수신 대기하는 ASP.NET Core 애플리케이션으로 들어오는 요청을 라우팅합니다.
  • ASP.NET Core 애플리케이션은 서버를 다시 시작한 후 또는 프로세스가 중지되거나 충돌할 때 자동으로 시작되도록 구성됩니다.

이 부분의 목표

이전 부분에서는 ASP.NET Core 애플리케이션에 대한 서비스 파일을 만들고 기본 제공 www-user 컨텍스트에서 실행되도록 서비스를 구성했습니다.

그러나 일부 환경에서는 다른 사용자 컨텍스트에서 애플리케이션을 실행할 수 있습니다. 이렇게 하면 동일한 서버에서 실행될 수 있는 다른 애플리케이션으로부터 격리를 완전히 제어할 수 있습니다. 예를 들어 여러 웹 애플리케이션을 호스트하는 경우 동일한 www-data 사용자 컨텍스트에서 모든 애플리케이션을 실행하는 대신 각 애플리케이션에 대해 권한을 개별적으로 구성할 수 있도록 각 애플리케이션을 자체 사용자 계정으로 실행하도록 구성할 수 있습니다.

목표는 특정 사용자 계정으로 실행되도록 ASP.NET Core 애플리케이션을 구성하는 것입니다.

사용자를 만드는 방법을 연습하고 컴퓨터에서 사용할 수 있는 다른 사용자 계정을 나열하는 방법을 알아봅니다.

참고 항목

이 부분은 선택 사항입니다. 또한 자습서 시리즈의 나머지 부분에 대해 ASP.NET Core 애플리케이션을 실행하는 사용자 컨텍스트는 중요하지 않습니다.

애플리케이션을 실행할 새 사용자 만들기

먼저 새 사용자를 만들고 서비스 파일을 편집하여 새 사용자 컨텍스트 내에서 서비스를 실행합니다. 사용자 계정을 만들려면 명령을 실행합니다 sudo adduser <username> . 이 데모에서는 선택한 사용자 이름이 .입니다 firstappuser. 그러나 원하는 이름을 자유롭게 사용할 수 있습니다.

sudo adduser 명령의 스크린샷.

이 스크린샷은 계정을 만든 firstappuser 결과를 보여줍니다.

ASP.NET Core 서비스는 www-data 사용자 컨텍스트에서 실행됩니다. Apache 및 Nginx를 비롯한 서비스 애플리케이션에 사용되는 기본 제공 계정입니다. 이러한 워크로드에 이 계정을 사용하는 것이 좋습니다. 명령과 groups firstappuser 명령을 실행 groups www-data 하여 두 사용자의 그룹 멤버 자격을 모두 확인하는 경우 차이점을 알 수 없습니다.

Linux의 로컬 사용자 계정은 /etc/passwd 파일에 저장됩니다. 실행하는 sudo cat /etc/passwd경우 루트 사용자를 포함한 모든 사용자가 표시됩니다. 다음 스크린샷에서는 각 열에 대해 설명합니다.

sudo cat 명령의 스크린샷.

사용자와 firstappuser 사용자의 차이점을 www-data 확인하려면 명령을 실행합니다sudo cat /etc/passwd | grep 'www-data\|firstappuser'. 출력은 다음과 유사합니다.

sudo cat grep 명령의 스크린샷.

참고 항목

www-data 사용자가 /usr/sbin/nologin 셸에 대해 구성했습니다. 즉 www-data , 사용자가 SSH를 사용하여 대화형으로 이 컴퓨터에 로그온할 수 없습니다. 그러나 firstappuser 이 작업을 수행할 수 있습니다. 새 계정은 서비스 계정이기 때문에 사용자 계정이 로그온하지 못하도록 하는 것이 보안 조치로 의미가 있습니다.

셸 액세스를 사용하지 않도록 설정하려면 명령을 실행합니다 sudo usermod -s /usr/sbin/nologin firstappuser .

sudo usermod 명령의 스크린샷.

지금까지 서비스 계정으로 사용할 수 있는 계정(firstappuser)을 만들었습니다. 다음 단계는 해당 사용자 계정 내에서 실행되도록 ASP.NET Core 서비스를 구성하는 것입니다. vi 명령을 사용하여 서비스 파일을 엽니다. "www-data"를 "firstappuser"(또는 선택한 사용자 이름)로 바꾼 다음 파일을 저장합니다.

명령의 firstappuser 스크린샷

이렇게 하면 ASP.NET Core 애플리케이션이 기본 www-data 계정과 다른 사용자 계정을 사용하여 시작할 수 있습니다.

서비스 파일을 변경한 후 실행 sudo systemctl daemon-reload하여 구성을 다시 로드합니다. 그런 다음 , 를 실행하여 서비스를 다시 시작 sudo systemctl restart myfirstwebapp.service합니다.

애플리케이션이 새 사용자 계정으로 실행되는지 확인

특정 프로세스를 실행하는 사용자를 식별하는 몇 가지 방법이 있습니다. 예를 들어 실행할 수 있습니다 ps -aux | grep <username>. 이 방법이 유용할 수 있지만 실제 명령줄 콘텐츠와 같은 일부 정보는 여전히 누락됩니다. 그러나 을 사용하여 보다 완전한 정보를 쉽게 수집할 수 있습니다 htop.

참고: Htop 작업 관리자입니다. 이 시리즈의 뒷부분에서 설명합니다. Htop 는 사용 중인 Ubuntu 서버 버전을 포함하여 여러 Linux 배포판에 미리 설치되어 있습니다. Linux 배포판에 설치되지 않은 경우 htop 패키지 관리자를 사용하여 설치할 수 있습니다.

다음 스크린샷을 검토합니다. 를 실행systemctl status하여 가져올 PID 수 있습니다. 그런 다음 스위치를 htop 사용하여 -p 명령에 전달 PID 하여 해당 PID프로세스의 세부 정보를 가져옵니다.

htop 명령의 스크린샷.

명령의 출력 htop -p <PID> 은 다음과 같습니다.

htop -p 명령의 스크린샷.

스크린샷과 같이 샘플 ASP.NET Core 애플리케이션은 이제 이 부분에서 설명하는 명령을 사용하여 만든 새 사용자 아래에서 실행됩니다.

종료하려면 F10 또는 Q를 누릅니htop.

다음 단계

2.4부 - 로컬 방화벽을 사용하고 원격 컴퓨터에서 원격 HTTP 액세스를 허용하여 Linux 보안