Ssoon
S3 Security Exercises - S3 VPC 엔드포인트에 대한 액세스 제한 / AWS Config 규칙을 사용하여 퍼블릭 버킷 감지 본문
S3 Security Exercises - S3 VPC 엔드포인트에 대한 액세스 제한 / AWS Config 규칙을 사용하여 퍼블릭 버킷 감지
구구달스 2023. 8. 30. 03:37CloudNet@가시다님이 진행하는 "AWS Hacking & Security Study" 1기 스터디입니다.
# AWS Storage Immersion Day - S3 Security Best Practices 를 참조하였습니다.
✅ Restrict Access to a S3 VPC Endpoint
VPC 엔드포인트를 사용하면 VPC 내에서 S3 리소스에 대한 액세스를 단순화할 수 있습니다. 이러한 엔드포인트는 구성이 쉽고 안정성이 높으며 인터넷 게이트웨이나 NAT 인스턴스가 필요하지 않은 S3에 대한 프라이빗 연결을 제공합니다.
💠 VPC Endpoint
VPC Endpoint를 설정하면 VPC 내에서 AWS 서비스에 대한 프라이빗 네트워크 연결이 생성됩니다. 이 연결은 인터넷을 거치지 않고 VPC 내부에서 AWS 서비스와 통신할 수 있도록 합니다. 각 VPC Endpoint는 특정 서비스에 대응하며, 예를 들어 S3 VPC Endpoint는 Amazon S3 서비스에 대한 연결을 제공합니다.
이점:
- 보안 강화: VPC Endpoint를 사용하면 인터넷을 통한 접근이 차단되므로 보안이 강화됩니다. VPC 내의 리소스는 VPC Endpoint를 통해서만 AWS 서비스에 연결할 수 있습니다.
- 데이터 전송 비용 절감: 인터넷을 통한 데이터 전송에 비용이 발생하지 않으므로 데이터 전송 비용을 절감할 수 있습니다.
- 프라이빗 네트워크: VPC Endpoint를 사용하면 리소스 간의 네트워크 통신이 VPC 내부에서 이루어지므로 공용 인터넷을 사용하지 않고도 데이터를 안전하게 전송할 수 있습니다.
- 간단한 구성: VPC Endpoint를 설정하는 것은 비교적 간단하며, AWS 콘솔이나 AWS CLI를 사용하여 수행할 수 있습니다
S3 VPC Endpoint를 설정하면 VPC 내부의 EC2 인스턴스 등이 Amazon S3에 안전하게 접근할 수 있으며, 이를 통해 데이터 보안과 전송 비용을 관리할 수 있습니다
✔ VPC 엔드포인트를 통과하는 요청에만 액세스를 제한하도록 S3 VPC 엔드포인트와 버킷 정책을 구성합니다
✔ 서비스 아래 검색창에 S3을 입력하고 Enter 키를 누릅니다. Gateway 유형으로 서비스 이름을 선택합니다.
- Amazon S3 서비스에 대한 "Gateway" 엔드포인트를 생성하면 VPC 내의 EC2 인스턴스 또는 다른 리소스가 인터넷을 거치지 않고도 안전하게 Amazon S3에 접근할 수 있습니다.
1. Gateway 엔드포인트:
- 연결 대상: Gateway 엔드포인트는 특정 AWS 서비스와 VPC 간의 연결을 위한 게이트웨이 역할을 합니다. 대표적인 예로는 Amazon S3와 DynamoDB가 있습니다.
- 전송 경로: Gateway 엔드포인트는 VPC 내부에서 AWS 서비스로의 직접적인 경로를 제공하며, 인터넷을 거치지 않고 데이터를 전송합니다. 이는 데이터가 더 안전하고 빠르게 전송되도록 도와줍니다.
- 단순한 구성: Gateway 엔드포인트는 구성이 간단하며 주로 게이트웨이 역할을 하는 AWS 서비스에 연결하는 데 사용됩니다.
2. Interface 엔드포인트:
- 연결 대상: Interface 엔드포인트는 VPC와 AWS PrivateLink를 통해 다른 AWS 서비스 또는 AWS Marketplace에서 제공하는 서비스에 연결하기 위한 방법을 제공합니다. 예를 들어, Amazon EC2, RDS, ELB와 같은 서비스에 연결할 수 있습니다.
- 전송 경로: Interface 엔드포인트는 VPC 내에서 사용자 정의 네트워크 인터페이스를 생성하여 연결합니다. 이로써 VPC 내부와 연결 대상 서비스 간의 통신이 이루어집니다. 이는 더 많은 유연성을 제공하지만 구성이 더 복잡할 수 있습니다.
- 사용자 정의 IP 주소: Interface 엔드포인트를 사용하면 VPC 내에서 사용자가 지정한 IP 주소를 사용하여 연결할 수 있습니다. 이는 IP 주소 기반의 액세스 제어를 가능하게 합니다.
✔ VPC 엔드포인트 ID 을 확인합니다.
vpce-009f52fc74bfb61bf
✔ S3 Bucket 을 클릭합니다.
✔ Permission 탭을 클릭 후 Bucket Policy 을 수정합니다.
✔ BUCKET_NAME을 버킷 이름으로 바꾸고 VPC_ENDPOINT_ID를 엔드포인트 ID로 변경하고 버킷 정책을 복사하여 버킷 정책 편집기에 붙여넣습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "s3:*",
"Effect": "Deny",
"Resource": "arn:aws:s3:::BUCKET_NAME/*",
"Condition": {
"StringNotEquals": {
"aws:sourceVpce": "VPC_ENDPOINT_ID"
}
},
"Principal": "*"
}
]
}
✔ EC2 인스턴스 에서 다음 명령어를 실행합니다.
aws s3api head-object --key app1/file1 --profile user1 --bucket sid-security-20230829
- head-object
- 객체의 메타데이터를 조회
- 메타데이터는 객체와 관련된 정보를 포함하며 사용자 지정 메타데이터 및 시스템에서 생성한 메타데이터를 모두 포함
- VPC 엔드포인트와 연결된 라우팅 테이블이 없기 때문에 HeadObject 요청이 실패합니다.
✔ 앞서 생성한 VPC 엔드포인트를 선택해야 합니다. 작업을 클릭하고 경로 테이블 관리를 선택합니다.
✔ 연결된 라우팅 테이블 ID를 선택합니다.
✔ 경로를 VPC 엔드포인트에 연결했기 때문에 요청이 성공합니다.
✅ Use AWS Config Rules to Detect a Public Bucket
✔ Step 1 : Specify rule type
- Rules, 검색 창에 S3을 입력하여 Rules을 필터링합니다. s3-bucket-public-read-prohibited를 찾아 규칙을 선택합니다.
✔ Step 2 : Configure rule
- 변경없이 Next 을 클릭합니다.
- Scope of changes
All changes | - 규칙이 리소스의 구성 및 설정 변경, 상태 변경, 속성 변경 등 모든 종류의 변경 사항을 모니터링하고 검사합니다. - 모든 변경 사항을 감시하므로 규칙은 리소스의 모든 측면을 포함한 변경 사항을 감시합니다. |
- 리소스의 모든 측면에 대한 규칙 준수를 확인하고자 할 때 - 리소스의 모든 변경 사항을 필요로 하는 경우 |
Resources | - 규칙이 특정 유형의 리소스에 대한 변경 사항만 모니터링하고 검사합니다. - 사용자는 검사하려는 리소스 유형(예: EC2 인스턴스, S3 버킷, RDS 데이터베이스 등)을 지정할 수 있습니다. |
- 특정 리소스 유형에만 집중하여 규칙을 실행하려는 경우 - 특정 리소스 유형의 변경 사항에만 관심이 있는 경우 |
Tags | - 규칙이 리소스의 태그 변경 사항만 모니터링하고 검사합니다. - 태그는 리소스에 메타데이터를 추가하는 데 사용됩니다. - 이 옵션을 선택하면 리소스의 태그 변경에만 관심을 두고 규칙을 실행할 수 있습니다. |
- 리소스의 태그 변경에만 관심이 있는 경우 - 태그를 통한 리소스 식별 및 관리를 감시하려는 경우 |
✔ Step 3 : Review and create
✔ 규칙이 실행되는 데 몇 분 정도 걸립니다. 페이지를 몇 번 새로 고쳐야 할 수도 있습니다. 구성 대시보드가 표시됩니다.
✔ S3 Bucket 을 클릭합니다.
✔ Permissions 탭을 클릭 후 Access control list (ACL) Edit 를 클릭하여 수정합니다.
✔ 모든 사람(공개 액세스)에서 목록 및 읽기를 선택하고 저장합니다.
✔ s3-bucket-public-read-prohibited 규칙을 클릭합니다.
- 액세스 제어 목록을 방금 변경했는데도 비준수 리소스가 없습니다. 이는 이 규칙이 24시간마다 실행되기 때문입니다.
✔ Actions 탭에서 Re-evaluate를 선택합니다. 규칙을 재평가하는 데 몇 분 정도 걸릴 수 있습니다.
✔ 규칙이 성공적으로 실행되면 비준수 S3 버킷이 표시됩니다.
✔ 대시보드에서도 비준수 S3 버킷 정보를 확인할 수 있습니다.
'AWS Hacking & Security Study' 카테고리의 다른 글
AWS IAM Workshop - 자격증명 기반 정책(Identity-based policies) (0) | 2023.09.05 |
---|---|
AWS IAM Workshop - IAM 사용자(User) & IAM 사용자 그룹(User Group) (0) | 2023.09.04 |
S3 Security Exercises - Public ACL 차단 / S3 Public 액세스 차단 (0) | 2023.08.30 |
S3 Security Exercises - HTTPS 필요 / SSE-S3 암호화 필요 (0) | 2023.08.28 |
S3 Security Exercises - Access Key & Bucket ACL 설정 (0) | 2023.08.28 |