내용으로 건너뛰기

Amazon EC2 Linux 인스턴스에서 ec2-user 계정을 제거하려면 어떻게 해야 합니까?

7분 분량
0

Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스에서 기본 ec2-user AWS 계정을 안전하게 제거하거나 잠그려고 합니다.

간략한 설명

Amazon EC2는 Amazon Linux, Red Hat Enterprise Linux(RHEL), SUSE Amazon Machine Image(AMI)에 기본적으로 ec2-user 계정을 제공합니다. ec2-user는 소프트웨어 설치, 시스템 구성, 패키지 관리와 같은 관리 작업에 사용하는 것이 좋습니다. ec2-user를 비활성화(잠금)하거나 삭제하려는 경우, 필수 관리자 권한을 새 사용자 계정에 제공해야 합니다.

ec2-user를 비활성화하거나 삭제하기 전에 다음 작업 수행:

  • 새 사용자의 액세스 및 권한을 철저하게 테스트합니다.
  • ec2-user에 의존하는 스크립트, 자동화 도구 및 애플리케이션을 검토하고 업데이트합니다.
  • 변경 사항을 모두 확인할 때까지 두 개 이상의 활성 관리 사용자 계정을 설정해 계속 사용 가능한 상태로 유지합니다.

해결 방법

중요: 실수로 인스턴스에 자신의 액세스 권한을 잃는 것을 방지하기 위해, 다음 문제 해결 단계를 순서대로 한 번에 완료하십시오.

인스턴스 백업

사용자 계정을 변경하기 전에 EC2 인스턴스의 백업을 만드는 것이 좋습니다. Amazon Elastic Block Store(Amazon EBS) AMI를 만듭니다. 또는 인스턴스에 연결된 EBS 볼륨의 스냅샷을 만듭니다. 문제가 발생하면 이 백업을 사용해 변경 사항을 롤백할 수 있습니다.

새 사용자 계정 만들기

다음 단계를 완료하십시오.

  1. ec2-user 계정으로 EC2 인스턴스에 연결합니다.
  2. 다음 명령을 실행해 관리자 권한이 있는 새 사용자 계정 만들기:
     sudo adduser newusername
    참고: newusername을 새 사용자 이름으로 바꾸십시오.
  3. 다음 명령을 실행해 기본적으로 sudo 권한이 있는 wheel 그룹에 새 사용자 계정 추가:
    sudo usermod -aG wheel newusername
    참고: newusername을 새 사용자 이름으로 바꾸십시오.

새 사용자에 대한 SSH 액세스 설정

다음 단계를 완료하십시오.

  1. 다음 명령을 실행하여 .ssh 디렉터리 만들기
    sudo mkdir /home/newusername/.ssh
    참고: newusername을 새 사용자 이름으로 바꾸십시오.
  2. 다음 명령을 실행하여 새 SSH 키 쌍 생성합니다.
    ssh-keygen -t ed25519 -C "newusername@example.com" -f ~/.ssh/newusername_key
    참고: newusername을 새 사용자 이름으로, exmaple.com을 도메인으로 바꾸십시오.
  3. 새 SSH 키 쌍을 생성한 경우, 다음 명령을 실행하여 새 퍼블릭 키를 EC2 인스턴스에 복사합니다.
    cat ~/.ssh/newusername_key.pub | ssh -i current_key.pem ec2-user@your-instance-ip "sudo tee /home/newusername/.ssh/authorized_keys"
    참고: newusername을 새 사용자 이름으로, your-instance-ip를 인스턴스 IP 주소로 바꾸십시오.
    SSH 키 쌍을 인스턴스에서 직접 생성하는 경우, 프라이빗 키를 로컬 머신에 안전하게 복사해야 합니다. 나중에 인스턴스 외부에서 SSH로 액세스하려면 이 프라이빗 키를 사용해야 합니다. 프라이빗 키를 EC2 인스턴스에서 로컬 머신으로 복사하려면 다음 명령을 실행합니다.
    scp -i your-existing-key.pem ec2-user@your-instance-ip:/home/ec2-user/.ssh/newusername_key.pem ~/Downloads/
    참고: your-existing-key를 기존 키로, your-instance-ip를 인스턴스 IP 주소로, newusername을 새 사용자 이름으로 바꾸십시오.
    보안 강화를 위해 새 SSH 키 쌍을 생성하는 것이 좋습니다. 하지만 대신에 ec2-user SSH 키를 다시 사용할 수도 있습니다. 이렇게 하면 설정의 속도는 빠르지만 보안은 낮습니다. 기존 ec2-user 퍼블릭 키를 새 사용자의 승인된 키에 복사하려면 다음 명령을 실행합니다.
    sudo cp /home/ec2-user/.ssh/authorized_keys /home/newusername/.ssh/authorized_keys
    참고: newusername을 새 사용자 이름으로, exmaple.com을 도메인으로 바꾸십시오.
  4. 필수 권한을 설정하려면 다음 명령을 실행합니다.
    sudo chown -R newusername:newusername /home/newusername/.ssh
    sudo chmod 700 /home/newusername/.ssh
    sudo chmod 600 /home/newusername/.ssh/authorized_keys
    참고: newusername을 새 사용자 이름으로 바꾸십시오.

(Amazon Linux, RHEL, SUSE만 해당) 새 사용자에게 전체 sudo 액세스가 있어야 함

다음 단계를 완료하십시오.

  1. 현재 sudo 구성이 유효한지 확인하려면 다음 명령을 실행합니다.

    sudo visudo -c
  2. 필요한 경우, 다음 명령을 실행하여 sudoers 파일을 엽니다.

    sudo EDITOR=vim visudo
  3. 새 사용자가 wheel 또는 sudo와 같은 그룹에 포함되지 않은 경우, 파일에 다음 라인을 추가합니다.

    newusername ALL=(ALL) NOPASSWD:ALL

    참고: newusername을 새 사용자 이름으로 바꾸십시오.

새 사용자의 액세스 테스트

중요: 다른 관리 사용자를 제거하거나 비활성화하기 전에 새 사용자에게 SSH 및 sudo 액세스가 둘 다 있는지 확인해야 합니다.

새 사용자가 인스턴스에 액세스하여 인스턴스를 운영할 수 있는지 확인하려면 다음 단계를 완료하십시오.

  1. 새 터미널 창을 엽니다.

  2. 다음 명령을 실행하여 새 키로 SSH 로그인을 테스트합니다.

    ssh -i ~/.ssh/newusername_key newusername@your-instance-ip

    참고: newusername을 새 사용자 이름으로, your-instance-ip를 인스턴스 IP 주소로 바꾸십시오.

  3. 다음 명령을 실행하여 sudo 액세스를 확인합니다.

    sudo whoami

    출력에서 root를 수신해야 합니다. 출력 예시:

    root
  4. (선택 사항) 전체 액세스가 있는지 확인하기 위해, 일반적인 sudo 명령을 실행합니다. 명령 예시:

    sudo yum update -y

종속성 확인

다음 단계를 완료하십시오.

  1. /home/ec2-user 홈 디렉터리의 파일을 사용하는 애플리케이션이나 프로세스가 없어야 합니다. 열려 있는 파일 또는 프로세스가 있는지 확인하려면 다음 명령을 실행합니다.

    sudo lsof +D /home/ec2-user
  2. ec2-user 홈 디렉터리의 파일을 사용하는 프로세스나 애플리케이션을 찾으면, 해당 파일과 권한을 마이그레이션해야 합니다. 마이그레이션한 파일의 임시 디렉터리를 만들려면 다음 명령을 실행합니다.

    sudo mkdir -p /home/newusername/moved_files

    참고: newusername을 새 사용자 이름으로 바꾸십시오.

  3. 파일을 새 사용자의 홈 디렉터리로 복사하거나 옮기려면 다음 명령을 실행합니다.

    sudo cp -rp /home/ec2-user/some_app/home/newusername/moved_files/

    참고: some_app을 애플리케이션 이름으로, newusername을 새 사용자 이름으로 바꾸십시오.

  4. 소유권 및 권한을 업데이트하려면 다음 명령을 실행합니다.

    sudo chown -R newusername:newusername /home/newusername/moved_files

    참고: newusername을 새 사용자 이름으로 바꾸십시오.

crontab 항목이 있는 경우, 다음 단계를 완료하십시오.

  1. ec2-user에서 crontab 항목을 내보내려면 다음 명령을 실행하십시오.

    sudo crontab -u ec2-user -l > /tmp/ec2-user-crontab
  2. 새 사용자에 대하여 crontab 항목을 가져오려면 다음 명령을 실행하십시오.

    sudo crontab -u newusername /tmp/ec2-user-crontab

    참고: newusername을 새 사용자 이름으로 바꾸십시오.

시스템 및 애플리케이션 구성 업데이트

ec2-user를 참조하는 시스템 또는 서비스 구성 파일을 검토하고 수정합니다. 구성 파일 전체에서 ec2-user와 일치 항목을 검색하려면 다음 명령을 실행하십시오.

sudo grep -r "ec2-user" /etc/

ec2-user를 사용하는 애플리케이션별 설정 및 스크립트를 업데이트하여 새 사용자 이름을 반영하도록 해야 합니다.

AWS Systems Manager Agent(SSM Agent)는 기본적으로 ec2-user를 실행하거나 ec2-user 권한 및 환경 설정을 사용합니다. SSM Agent가 새 사용자 구성으로 정확하게 작동하는지 확인될 때까지 작업 세션 또는 백업 액세스 방법을 만드십시오. ec2-user를 제거하거나 수정하기 전에 SSM Agent에 다음 구성이 있는지 확인하십시오.

  • 시스템 수준 사용자(루트) 또는 새 사용자 아래에서 실행됩니다.
  • 필수 시스템 파일 및 환경 변수에 액세스할 수 있습니다.
  • /etc/amazon/ssm/amazon-ssm-agent.json 파일에서 올바르게 구성했습니다.

중요: ec2-user를 비활성화하거나 삭제하기 전에 SSM Agent를 구성하지 않으면 다음 기능에 액세스하지 못할 수 있습니다.

  • Session Manager(AWS Systems Manager 기능)
  • Session Manager 명령 실행 및 자동화
  • Inventory(AWS Systems Manager 기능)
  • Patch Manager(AWS Systems Manager 기능)

ec2-user 계정 비활성화

ec2-user를 비활성화하면 해당 계정을 로그인 또는 기타 프로세스에 사용할 수 없습니다. ec2-user를 비활성화하려면 다음 단계를 완료하십시오.

  1. 새 사용자 계정으로 EC2 인스턴스에 연결합니다.

  2. 다음 명령을 실행하여 ec2-user의 암호 로그인을 비활성화합니다.

    sudo passwd -l ec2-user
  3. 다음 명령을 실행하여 ec2-user를 sudo 또는 wheel 그룹에서 제거합니다.

    sudo gpasswd -d ec2-user wheel
  4. (선택 사항) ec2-user에서 SSH 액세스를 제거하려면 다음 명령을 실행합니다.

    sudo rm /home/ec2-user/.ssh/authorized_keys

ec2-user를 다시 활성화해야 하는 경우, EC2 인스턴스에 연결하고 다음 명령을 실행합니다.

sudo passwd -u ec2-user

ec2-user 계정 삭제

중요: ec2-user를 삭제하면 인스턴스에서 계정과 해당 홈 디렉터리가 제거됩니다. ec2-user를 삭제하면 다시 활성화할 수 없습니다.

ec2-user를 삭제하려면 다음 단계를 완료하십시오.

  1. 새 사용자 계정으로 EC2 인스턴스에 연결합니다.
  2. 다음 명령을 실행하여 ec2-user 삭제합니다.
    sudo userdel -r ec2-user

ec2-user를 삭제하면 다음과 같은 자동화된 프로세스가 영향을 받습니다.

  • ec2-user가 존재한다고 가정하는 사용자 지정 스크립트가 정상적으로 실행되지 않습니다.
  • ec2-user 아래에 설정한 cron 작업이 더 이상 실행되지 않습니다.

액세스할 수 없는 인스턴스 복구

sudo 액세스를 잃는 경우, EC2 Instance Connect 또는 Sesssion Manager를 사용하여 인스턴스에 연결하십시오. 또는 Amazon EBS 스냅샷이나 AMI를 사용하여 인스턴스를 복원할 수 있습니다.

보안 모범 사례 준수

다음 작업 수행:

  • SSH 키를 정기적으로 회전하여 보안을 강화하고 액세스 침해 위험을 줄입니다.
  • 각 관리 사용자에 대하여 고유한 SSH 키를 만들어 개별 책임을 설정합니다.
  • 모든 sudo 활동의 로깅을 활성화하여 관리자 작업을 추적하고 감사합니다.
  • 암호화 강도 및 성능을 개선하려면 ed25519와 같은 강력한 최신 키 유형을 사용하십시오.
  • 관리 권한이 있는 모든 사용자 목록을 업데이트된 버전으로 유지 관리하여 액세스를 적절하게 제어하고 검토합니다.
  • 로그인 시도를 모니터링하여 권한이 없는 액세스 또는 무차별 대입 공격을 감지합니다.

중요: 항상 정상 작동하는 한 개 이상의 관리자 계정에 액세스할 수 있어야 합니다. 기존 액세스를 비활성화하거나 수정하기 전에 모든 변경 사항을 철저히 테스트하십시오.

AWS 공식업데이트됨 일 년 전