Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스가 SSH brute force 공격을 받았습니다. Amazon GuardDuty를 사용하여 이 공격을 막고 싶습니다.
간략한 설명
유형이 SSH인 규칙을 사용하면 포트 범위 22로 들어오는 모든 소스(0.0.0.0/0)의 연결을 허용하기 때문에 공격이 발생할 수 있습니다. 포트 범위 22에서 0.0.0.0/0을 허용하면 보안 위험이 발생합니다.
대개 이 공격은 EC2 인스턴스 침입 대상을 찾는 봇으로 인해 발생합니다. SSH 액세스를 제한하여 침입 위험을 줄일 수 있습니다. 배스천 호스트와 같이 직접 소유한 특정 소스의 SSH 액세스만 허용하도록 보안 그룹을 구성하는 것이 가장 좋습니다.
해결 방법
GuardDuty를 사용하여 AWS 환경에서 의심스러운 동작을 모니터링하고 감지할 수 있습니다. 다음 예시에서는 GuardDuty를 사용하여 SSH 무차별 대입 공격을 받는 EC2 인스턴스의 문제를 해결합니다. 이 예시에서 보안 그룹은 인터넷을 통한 소스의 SSH 액세스를 허용합니다.
- Amazon EC2 콘솔을 엽니다.
- 새 탭에서 GuardDuty 콘솔을 엽니다.
- EC2 콘솔에서 Security Groups(보안 그룹)를 선택하고 보안 그룹을 선택한 후 Inbound(인바운드) 탭을 선택합니다.
- 탐색 창에서 [인스턴스(Instances)]를 선택한 후 새 탭에서 인스턴스 창을 엽니다.
- 인스턴스를 선택하고 [인스턴스 ID(Instance ID)]를 복사합니다.
- GuardDuty 콘솔에서 Add filter criteria(필터 기준 추가)를 선택한 후 Instance ID(인스턴스 ID)를 선택합니다.
- 검색 상자에 [인스턴스 ID(Instance ID)]를 붙여 넣은 후 [적용(Apply)]을 선택합니다.
- **결과 유형(Finding Type)**에서 [마지막 확인(Last seen)] 열에 나온 대로 가장 최근에 찾은 결과를 선택합니다.
- 액터(Actor) 섹션으로 스크롤하여 공격의 소스 IP 주소를 복사합니다.
- EC2 Linux 인스턴스의 터미널을 열고 /var/log/secure 디렉터리를 연 후 보안 파일을 엽니다. 참고: 보안 파일에 SSH 로그인이 있습니다.
- 9단계에 나온 소스 IP 주소를 입력합니다.
참고: Amazon Linux AMI SSH 로그에는 인스턴스에 연결하려는 모든 인증 시도가 포함됩니다.
- AWS Config 콘솔을 열고 Rules(규칙)를 선택한 후 Add rule(규칙 추가)을 선택하고 검색 상자에 restricted를 입력합니다.
- restricted-ssh를 선택한 후 [저장(Save)]을 선택합니다. 참고: 무제한 수신 SSH 트래픽을 허용하지 않는 보안 그룹을 확인합니다.
- [규정 준수(Compliance)] 필드 아래의 [규칙 이름(Rule name)]에서 restricted-ssh 규칙이 평가 중에서 규칙 미준수 리소스로 바뀔 때까지 기다립니다. 새로 고침 아이콘을 선택할 수도 있습니다.
- restricted-ssh를 선택하여 규칙 미준수 보안 그룹을 확인합니다.
- **리소스 관리(Manage resource)**에서 규칙 미준수 보안 그룹을 선택한 후 [인바운드(Inbound)] 탭을 선택합니다.
이 예제에서 보안 그룹은 모든 소스의 SSH 연결을 허용하므로 규칙 미준수입니다. SSH 트래픽을 제한하려면 Linux 인스턴스의 인바운드 SSH 트래픽에 대한 규칙 추가를 참조하세요.
자세한 내용은 손상된 EC2 인스턴스 문제 해결을 참조하세요.
참고: Amazon CloudWatch를 사용하여 Linux 로그를 검토하려면 빠른 시작: 실행 중인 EC2 Linux 인스턴스에 CloudWatch Logs 에이전트를 설치 및 구성을 참조하세요.
관련 정보
Amazon GuardDuty – 지속적인 보안 모니터링 및 위협 감지
How to Manage Amazon GuardDuty Security Findings Across Multiple Accounts(여러 계정에 대해 Amazon GuardDuty 보안 결과를 관리하는 방법)