무단 액세스를 방지하는 동시에 SSH를 사용하여 EC2 Linux 인스턴스에 안전하게 액세스하는 모범 사례는 무엇입니까?

최종 업데이트 날짜: 2020년 9월 4일

SSH를 사용하여 Amazon EC2(Amazon Elastic Compute Cloud) 인스턴스에 액세스하려고 합니다. SSH를 사용할 때 인스턴스를 안전하게 유지하고 무단 액세스를 방지하기 위한 모범 사례는 무엇입니까?

​해결 방법

참고: 루트 권한으로 다음 명령을 실행합니다. sudo -i 명령을 실행하여 루트 사용자가 됩니다.

루트 사용자가 SSH 터미널을 사용하지 못하도록 설정

이것은 Amazon에서 제공하는 AMI와 AWS Marketplace의 공급업체 대부분에 대한 기본값입니다. 인스턴스에서 루트 사용자의 로그인을 허용하는 경우 아래 단계에 따라 액세스를 거부합니다.

1.    루트 사용자의 암호를 무효화하려면 /etc/shadow 파일의 암호 필드에 * (별표)를 추가합니다.

vipw -s로 파일을 편집합니다.

첫 번째 행은 일반적으로 루트 사용자의 행입니다. 루트 사용자의 행을 다음과 같이 변경합니다.

root:*LOCK*:14600::::::

2.    vi 편집기와 같은 편집기를 사용하여 SSH 데몬의 구성 파일을 편집합니다.

vi /etc/ssh/sshd_config

다음 행이 있고 주석 처리되지 않았는지 확인합니다. 이 행은 루트 사용자에 대한 로그인 권한을 거부합니다.

PermitRootLogin no

3.    SSH 데몬을 다시 시작합니다.

service sshd restart

PermitrootLogin 옵션의 다른 매개 변수에 대한 자세한 내용은 man.openbsd.org 웹 사이트의 OpenBSD 매뉴얼 페이지 서버를 참조하십시오.

모든 사용자가 SSH 키 페어로 로그인하는지 확인하고 암호 인증 비활성화

Amazon에서 제공하는 AMI에 대한 기본 구성은 암호 인증이 비활성화된 SSH 키 페어로 로그인하는 것입니다. 인스턴스를 변경한 경우 다음 명령을 사용하여 기본 구성으로 되돌립니다.

1.    vi 편집기 또는 원하는 편집기를 사용하여 sshd_config 파일에 액세스합니다.

vi /etc/ssh/sshd_config

2.    다음 행이 있고 주석 처리되지 않았는지 확인합니다.

PasswordAuthentication no

3.    SSH 데몬을 다시 시작합니다.

service sshd restart

사용자는 ~/.ssh/authorized_keys 내에 사용자의 퍼블릭 키가 필요합니다. 키 기반 로그인에 대한 자세한 내용은 Amazon EC2 키 페어 및 Linux 인스턴스를 참조하십시오.

알 수 없는 소스로부터의 액세스 제한

퍼블릭 인스턴스의 경우 SSH 포트를 제한 없이 열어두면 잘못된 구성이 존재하거나 예기치 않은 소프트웨어 취약점이 있는 경우 침입을 허용할 수 있습니다. 침입을 방지하려면 다음 모범 사례를 따르십시오.

1.    Linux 배포 관리자가 제공하는 최신 버전으로 SSH 데몬을 업데이트합니다. 종종 SSH 데몬은 업스트림 공급자의 최신 릴리스에서 백포트 업데이트를 받습니다. 백포트에 대한 자세한 내용은 보안 수정 사항 백포팅(Backporting security fixes)을 참조하십시오.

yum -y install openssh-server # for Amazon Linux, RHEL, Centos
apt update && apt install openssh-server # For Ubuntu, Debian

2.    회사 네트워크 IP와 같이 신뢰할 수 있는 IP에서만 포트 22로 들어오는 연결을 허용하도록 보안 그룹을 제한합니다. 자세한 내용은 Linux 인스턴스에 대한 인바운드 트래픽 권한 부여를 참조하십시오. 

3.    일부 침입자는 사용자 이름과 암호를 추측하려고 시도하거나 포트 22가 열려 있으면 SSH 데몬을 오버플로하려고 할 수 있습니다. fail2ban은 인스턴스에 로그인하려는 지속적인 시도에 대해 로그 파일을 모니터링한 다음 몇 번의 실패한 시도 후에 이를 차단하는 유틸리티입니다. fail2ban을 설치하려면 다음과 같이 하십시오.

Ubuntu:

apt -y install fail2ban

Amazon Linux, Centos, RHEL:

EPEL 리포지토리를 설치합니다.

다음 명령을 실행합니다.

yum -y install fail2ban
systemctl enable fail2ban
systemctl start fail2ban

fail2ban을 구성하는 방법에 대한 자세한 내용은 Red Hat 웹 사이트의 Linux 보안: fali2ban을 통한 시스템 보호(Linux security: Protect your systems with fail2ban)를 참조하십시오.

AWS Systems Manager 세션 관리자를 사용하여 EC2 인스턴스에 대한 셸 액세스

세션 관리자를 사용하면 AWS Identity and Access Management(IAM) 사용자가 암호화 및 로깅 기능을 사용하여 인스턴스에 로그인할 수 있습니다. Systems Manager의 트래픽은 Systems Manager 엔드포인트를 통과하므로 인바운드 포트를 열지 않고도 프라이빗 인스턴스에 쉽고 안전하게 액세스할 수 있습니다. 세션 관리자에 대한 자세한 내용은 EC2 인스턴스에 대한 셸 액세스용 AWS Systems Manager 세션 관리자(AWS Systems Manager Session Manager for shell access to EC2 instances)를 참조하십시오.


이 문서가 도움이 되었습니까?


결제 또는 기술 지원이 필요합니까?