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

4분 분량
0

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

해결 방법

SSH를 사용할 때 다음 모범 사례를 사용하여 인스턴스를 보호하세요. 명령과 관련된 단계의 경우 루트 권한으로 명령을 실행해야 합니다. 루트 사용자가 되려면 sudo -i 명령을 실행합니다.

AWS Systems Manager Session 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)를 참조하세요.

EC2 인스턴스 연결을 사용하여 EC2 인스턴스에 대한 쉘 액세스

Amazon EC2 인스턴스 연결을 사용하면 IAM 역할 및 정책을 사용하여 보안 셸(SSH)을 사용한 Linux 인스턴스 연결이 가능합니다. EC2 인스턴스 연결에 대한 자세한 내용은 EC2 Instance Connect를 사용하여 Linux 인스턴스에 연결을 참조하세요.

참고: EC2 인스턴스 연결은 다음 배포에서 지원됩니다.

  • Amazon Linux 2(모든 버전)
  • Ubuntu 16.04 이상

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

기본적으로 Amazon에서 제공하는 AMI와 AWS Marketplace의 대부분의 공급업체는 루트 사용자가 SSH 터미널에서 로그인하는 것을 허용하지 않습니다. 인스턴스에서 루트 사용자의 로그인을 허용하는 경우, 다음 단계에 따라 액세스를 거부합니다.

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

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

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

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

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

vi /etc/ssh/sshd_config

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

PermitRootLogin no

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

systemctl restart sshd

PermitRootLogin 옵션의 다른 매개변수에 대한 자세한 내용은 OpenBSD의 sshd_config를 참조하세요.

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

Amazon에서 제공하는 AMI에 대한 기본 구성은 암호 인증이 비활성화된 SSH 키 페어로 로그인하는 것입니다. 암호를 사용하면 인스턴스가 무차별 대입 공격과 같은 보안 위험에 노출되기 때문입니다. 취약한 암호는 액세스 권한 획득 시도에 의해 돌파될 수 있습니다.

따라서, 암호를 사용하도록 인스턴스를 변경한 경우 다음 명령을 사용하여 기본 구성으로 되돌립니다.

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

vi /etc/ssh/sshd_config

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

PasswordAuthentication no

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

systemctl restart sshd

참고: 암호 인증을 비활성화하기 전에 키 페어가 설치되어 있는지 확인하십시오. 이렇게 하면 EC2 인스턴스에 대한 SSH 액세스가 손실되는 것을 방지할 수 있습니다. 각 사용자는**~/.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 공식
AWS 공식업데이트됨 2년 전