AWS

AWS 내의 보안과 규정 준수에 관한 기능/서비스 알아보기

S_N_Y 2024. 3. 10. 18:43

 

#0 DDos 공격으로부터 지켜내기 From AWS ⚔️

 

🛡️AWS Shield 사용하기 :

AWS Shield Standard는 추가 비용 없이 모든 유저에게 활성화되어 있는 서비스인데 여기서 24시간 무휴를 원한다면 유료버전인 AWS Shield Advanced를 사용하면 된다.

+)

AWS Shield Standard : 모든 유저에게 활성화 / SYN, UDP Flood, 반사 공격, 3Layer 4attacks 내장

AWS Shield Advanced : 유료 서비스 /  EC2, ELB, CloudFront, Global Accelerator, Route53에서의 정교한 공격으로부터 보호

 

🛡️AWS WAF 사용하기 :

WAF는 규칙에 따라 특정 요청을 필터링하는 웹 애플리케이션 방화벽이다. 

CloudFront와 Route53에 들어있는 Global Edge Network :

AWS Shield와 콜라보하면 Edge Location에서 공격을 완화해준다.

...

마지막으로 공격을 당했다면 AWS Auto Scaling으로 스케일링할 준비를 해야한다고 한다.

 

#1 AWS Network Firewall 🏟️ - ACL보다 더 나은 보호 메커니즘

VPC를 전반적으로 보호하는 방법은 바로 AWS Network Firewall이다.

네트워크 방화벽이 전체 VPC를 한 번에 보호한다. Layer3~Layer7 보호까지 정말 모든 트래픽을 검사할 수 있다.

peering된 VPC, Direct Connect, 인터넷 등을 네트워크 방화벽에서 보호하고 서브넷 수준에서 작동하는 ACL보다 낫다고 볼 수 있다.

 

+) <AWS Firewall Manager>

조직에 있는 모든 사용자의 보안 규칙을 하나의 central place에서 관리할 수 있다. (VPC보안 그룹을 관리)

VPC보안 그룹뿐만 아니라 WAf 규칙, AWS Shield Advanced 규칙, AWS Network Firewall 외 들들의 서비스도 관리할 수 있다.

=> 추가로 Firewall Manager에 규칙을 활성화시키면 그 규칙은 현재 존재하는 사용자 외에 미래에 생성되는 모든 사용자까지 적용된다.

 

#2 AWS에서의 침투 테스트💥

침투 테스트(Penetration Testing)는 자체 인프라를 공격해서 보안을 테스트하는 것이다.

AWS 유저는 사전 승인 없이 8개 서비스의 자체 인프라에 관해 보안 평가나 침투 테스트를 실행할 수 있다.

8개 서비스 목록 : EC2, NAT Gateway, ELB, RDS, CloudFront, Aurora, API Gateway, Lambda, Lightsail, Elastic beanstalk

...

하지만 금지될 수 있는 다른 유형의 작업들이 있다.

Route 53 호스팅 영역을 통해 DNS zone walking을 실행할 수 없고 시스템에서 분산 공격(Dos, DDos, 시뮬레이션된 Dos/DDos)을 실행할 수 없다. Port flooding, Protocol flooding 등도 마찬가지이다.

 

#3 암호화에 관련된 서비스 알아보기 - AWS KMS(key Management Service)와 CloudHSM  & ACM(AWS Certificate Manager) 🔏

 

<AWS KMS> - AWS에서 암호화 키를 관리하는데 필요

AWS의 중심이 되는 암호화 서비스는 KMS라고 부른다.

KMS를 이용하면 직접 Encryption 키에 접근하지 못한다. (키는 AWS에서 관리하고 있기 때문)

=> 우리는 액세스 키에 대한 접근 권한을 누구에세 줄지만 정의하게 된다..!

 

<CloudHSM> - 하드웨어 암호화를 위해 필요

KMS는 AWS가 암호화를 하는 소프트웨어를 관리하지만 CloudHSM를 이용하면 AWS는 단순히 암호화에 이용되는 하드웨어만 제공하는 대신에  Encryption 키를 직접 관리할 수 있다. (AWS에서 관리 X)

전용으로 제공받은 하드웨는 HSM(Hardware Security Module : 하드웨어 보안 모듈)이라고 한다.

 

<ACM(AWS Certificate Manager)>

SSL이나 TLS 인증서를 쉽게 배포하거나 프로비저닝하고 관리할 수 있는 서비스이다. 인증서는 HTTP Endpoint를 제공하고 웹사이트 전송 중 암호화를 지원한다. ACM은 Public/Private TLS 인증서를 모두 지원하고 그 중 Public TLS 인증서는 무료로 이용할 수 있다.

또한 Auromatic TLS certificate renewal(자동 TLS 인증서 갱신) 이라는 훌륭한 기능이 있는데 TLS인증서를 다른 서비스에 로드할 수 있다. (Elastic Load Balancers, CloudFront 배포, API Gateway상의 API에 로드 등)

=> 즉, 전송 중 암호화와 SSL이나 TLS같은 인증서의 생성을 지원하는 서비스

 

<Secrect Manager>

비교적 최근에 출시된 서비스로 암호를 저장하고 암호를 강제로 기간마다 바꾸는 서비스이다. 

이걸 통해 Lambda, Amazon RDS과 통합되어 암호를 자동 생성할 수 있다. (암호는 KMS을 통하여 암호화)

 

#4 AWS Artifact, GuardDuty

 

- AWS Artifact _ 규정 준수 보고서를 열람하게 해주는 기능📑

실제 서비스는 아니지만 콘솔에선 서비스로 제공하고 있는 기능이다. Artifact는 규정 준수 보고서와 AWS 계약에 대해서 온디멘드 액세스를 제공하는 포털이다. 보고서는 다운로드가 가능하고 외부감사인이 이 문서를 볼 수 있도록 지원한다. (AWS ISO인증이나 지불카드 보안 표준(PCI) 보고서, SOC 등등)

그리고 Artifact Agreements라고 AWS 계약 상태를 검토하거나 승인, 추적한다. (BAA, HIPPA 등)

=> 이와 같은 보고서는 사내 내부 감사에 사용되거나 AWS를 사용할 때 규정을 준수했는가 증명할 때 쓰인다.

 

- Amazon GuardDuty_ 악의적 행동을 감지😈

GuardDuty는 지능형 위협을 찾아서 AWS 계정을 보호할 수 있도록 도와주는 서비스이다. 

머신러닝 알고리즘을 사용해서 이상 징후를 탐지하고 3rd party 데이터를 사용해서 이러한 위협을 찾아낸다.

+) 추가로 GuardDuty는 암호화폐 공격으로부터 사용자를 보호할 수가 있는데 전용 검색 기능(모든 입력 데이터를 분석해서 암호화폐 공격이 있는지..)이 있기 때문이다! 

 

< GuardDuty 동작 방식 >

왼쪽과 같은 여러 서비스의 이상징후를 GuardDuty가 탐지하면 Amazon EventBridge에서 이벤트가 생성해서 SNS나 람다 함수로 자동적으로 트리거하거나 알림을 보낼 수 있다.

 

#5 Amazon Inspector - 소프트웨어 상 취약점을 찾자

몇 가지 항목에 대해 자동화된 보안 평가를 실행할 수 있는 서비스이다. 

EC2에서 시스템 관리자 에이전트(SSM)을 활용한다고 할 때, Amazon Inspector가 해당 EC2 인스턴스의 보안을 평가하기 시작한다.

(의도되지 않은 네트워크 접근성 분석, 실행 중인 운영체제에 취약점이 있는지..)

이렇게 EC2, ECR로 푸쉬되는 컨테이너 도커 이미지, Lambda 함수에 보안을 평가할 수 있고 Amazon Inspector작업이 끝나면 AWS 보안 허브나 이벤트 브리지에 결과를 보고할 수도 있다. 

 

정확하게 Amazon Inspector는 무엇을 평가할까?🤔

위에서 언급했듯  EC2, ECR로 푸쉬되는 컨테이너 도커 이미지, Lambda 함수에 보안을 평가만을 위한 서비스로 필요시 에 인프라를 지속적으로 스캔하고 취약성과 CVE 데이터베이스를 살펴본다. ( 취약성 분석 쥐, CVE 데이터베이스가 업데이트 되면 Amazon Inspector가 다시 실행되는 구조)

떠한 실행될 때마다 우선순위를 정하기 위해 모든 취약성 테스트에 위험점수가 매겨진다. 

 

#6 AWS Config, Amazon Macie

 

<AWS Config> - 구성 변경 사항을 추적

과거부터 현재까지 구성에 대해 발생한 변경 사항을 기록함으로써 리소스 규정 준수를 감사하고 또 기록하도록 지원한다. AWS 구성을 수동으로 변경할 때마다 모든 변경 사항이 목록으로 표시되지 않지만 AWS Config를 이용하면 모든 사항을 다 볼 수가 있다. 해당 구성은 S3에 저장돼서 추후에 Athena로 분석하거나 복원할 수 있다.

 

AWS Config를 이용해서 해결할 수 있는 문제의 예시는 다음과 같다.

- 보안 그룹에 무제한 SSH 액세스가 있는지

- 버킷에 대한 Public 액세스가 있는지

...

이 모든 문제를 AWS Config를 통해 해결할 수 있다.

 

<Amazon Macie> - 민감한 데이터에 대해 경고

Macie는 완전 관리형 데이터 보안 및 데이터 프라이버시 서비스로 머신러닝과 패턴 매칭을 사용해서 AWS에서 민감한 데이터를 발견하고 보호한다. 보다 더 구체적으로 말하면 민감한 데이터에 대해 경고해주는 기능이다. (예 : S3 버킷에서 민감한 데이터 찾기 딱 그 기능하는 정도이다.)

 

#6 AWS Security Hub - 중앙 보안 도구 🏳️와 Amazon Detective🎩와 AWS Abuse(부정사용)🙅

<Security Hub>

Security Hub는 여러 AWS 계정의 보안을 관리하고 보안 검사를 자동화하는데에 사용된다. 상태를 보여주는 통합 대시보드가 있는데 여러 서비스와 파트너 tools에 걸쳐 경고를 집계한다.

+) Security Hub 활성화 방법 : AWS Config 서비스를 우선 활성화해야 한다.

설명을 위한 이미지

Security Hub는 한 번에 여러 계정을 관리할 수 있는데 위와 같은 서비스와 툴로부터 결과를 수집하고 그 안에서 잠재적인 문제를 발견할 수 있다. 자동화된 검사 덕분에 대시보드에서 Security Hub결과를 편하게 확인할 수 있다..!

보안 문제가 발생할 때마다 EventBridge에 이벤트가 생성되고

문제의 원인을 조사하기 위해 Amazon Detective를 사용할 수 있다.

                                             ▼

<Amazon Detective>

GuardDuty, Macie, Security Hub 등 잠재적인 보안 문제를 파악하는 서비스를 사용할 때는 근본적인 원인이 무엇인지 파악할 필요가 있는데 Amazon Detective는 의심스러운 활동의 근본적인 원인을 분석하고 조사하며 접근하기 힘든 시큐리티 부분을 더 빠르게 접근하기 위해 만들어진 서비스라고 보면 된다. 

 

<AWS Abuse(부정 사용)>

AWS 내의 일부 IP나 EC2 부정사용, 불법적인 목적의 사용이 의심되는 경우, 잡아주는 기능으로 AWS에 스팸이나 DDos 자료를 올려두거나 저작권이 의심되는 콘텐츠를 올려두는 등 안 좋은 행동이 의심되는 사용자에게 경고를 주는 기능이다.

 

#7 루트 사용자 권한

루트 사용자는 AWS 서비스와 리소스 전체에 완전한 액세스 권한을 갖게되는데 루트 사용자는 해당 계정에 대해 가장 많은 권한을 부여받은 사용자도 할 수 없는 작업을 수행할 수 있다.

=> 꼭 루트 사용자로 사용하지 말고 계정에 대한 관리 사용자를 따로 만들어서 거기에서 관리하도록 하는 것이 좋다.

 

루트 사용자의 권한을 아래에 정리해보려고 한다.

 

- 루트 사용자 비밀번호와 루트 사용자 액세스 키를 변경할 수 있다.

- 세금계산서를 열람할 수 있고 계정을 닫을 수도 있다.

- 🌟 IAM 사용자 권한을 복원하거나 AWS Support 플랜을 변경하거나 취소할 수 있다.

- 🌟 예약 인스턴스를 다시 마켓 플레이스에 팔 때

- S3 버킷을 구성해서 MFA를 활성화할 수 있다.

- GocCloud에 가입할 수 있다.

 

#8 IAM Access Analyzer

어떤 리소스를 외부에서 공유할지 결정하는데 사용되는 IAM 콘솔 내의 서비스인데 여러 서비스 중 일부에는 리소스 정책이 첨부되어있을 수도 있고 결국 여러 서비스의 리소스를 공유해야 하는데 잊을 경우엔 회사 보안에 대한 위험이 될 수도 있다.

=> 일부 데이터는 외부 소스에서 액세스할 수 있기 때문

그래서 Zone of Trust(신뢰 영역)을 정의해야 하는데 AWS 계정 또는 전체 조직일 수 있고 신뢰 영역을 따로 정해서 그 영역 바깥에 있는 것들은 전부 발견 사항으로 정의할 수 있다.

이런 식으로 S3버킷이 있다고 칠 때, Zone of Trust영역에 있는 것들 외에 Account나 External Client은 보안 위협이 있다고 플래그로 지정이 된다. 

 

✅짤막한 개념 정리

서브넷 : VPC의 IP 주소 범위

WAF : 특정 규칙에 따라 들어오는 요청들을 필터링하는 방화벽