IT STUDY LOG
[SECTION 5] <Final Project> DAY 8 LOG 본문
# Daily Plan
- 날짜 : 2023.06.21
- 금일 주요 업무
- 보안프로세스 구현 및 기능확인
- 자동 태깅 구현
- 그라파나 대시보드 구현
- 일일 성능지표 구현
- 쉬는시간
- 매시 정각~10분
# Process Log
1. Task Log
⓿ 자동화 실행을 위한 IAM 역할 생성
Step 1 : AWS 서비스에서 신뢰 권한으로 System Manager와 iam 설정
Step 2 : 권한에 Automation Role 관련 관리형 정책 추가
Step 3 : 생성된 역할에 인라인 정책으로 서비스나 리소스 에 역할을 전달할 수 있는 권한(iam:PassRole)을 부여
Step 4 : 이 외에도 자동화를 수행할 때 필요한 리소스의 권한을 부여
- 아래와 같은 경우 EC2의 RevokeSecurityGroupIngress API 실행 권한이 AutomationRole에 없다는 뜻이므로 인라인 권한 정책으로 해당 리소스의 API 권한을 부여
❶ Config에서 자동 수정이 가능한 일부 취약점의 경우 system manager를 활용해 자동 수정 진행 테스트
Step 1 : 규정을 준수하지 않는 보안 그룹을 수정하기 위해 AWS Systems Manager Automation Runbook 복제
- AWS 시스템 관리자 콘솔 로 이동 후 왼쪽 열의 공유 리소스 메뉴에서 문서를 클릭
- 검색 필터에 유형을 AWS-DisablePublicAccessForSecurityGroup입력하고 Enter 키를 입력
- AWS-DisablePublicAccessForSecurityGroup 문서를 클릭 후 작업 버튼을 클릭 하고 문서 복제를 선택
- 문서 이름에 Custom-DisablePublicAccessForSecurityGroup을 입력
- 문서 설명 변경
- Disable SSH, RDP, MySQL and ports opened to IP address specified, or to all addresses if no address is specified. Similar to the RevokeSecurityGroupIngress (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RevokeSecurityGroupIngress.html) API, the security group must have existing rules specifically on the SSH, RDP, and MySQL ports in order for ingress to be disabled.
- 문서 내에서 3단계: DisableSSHFromIpV6 섹션까지 아래로 스크롤한 다음 해당 섹션 다음에 단계 추가를 선택
- 단계 이름에는 DisableMYSQLFromIpV4를 사용
- 사용할 작업 유형은 AWS API 작업 호출 및 실행
- 입력에서 서비스를 ec2 로 설정 하고 API를 RevokeSecurityGroupIngress 로 설정
- 추가 입력 - 선택 사항 에서 두 개의 입력을 추가
- 첫 번째로 입력 이름을 GroupId, 값을 {{GroupId}}로 입력
- 선택적 입력 추가를 선택해 입력 이름이 IpPermissions 이고 입력 값이 다음인 두 번째 입력을 추가
- IpProtocol: tcp FromPort: 3306 ToPort: 3306 IpRanges: - CidrIp: 0.0.0.0/0
- 입력 내용은 아래 이미지와 같아야 함
- On Failure 섹션 에서 Common properties - optional 메뉴를 확장하고 Continue 값을 추가
- 단계 추가를 다시 클릭하여 IpV6을 교정할 또 다른 단계를 추가
- 수정을 클릭
- 이 단계에서는 DisableMYSQLFromIpV6 이라는 이름을 사용
- 작업 유형은 다시 AWS API 작업 호출 및 실행
- 입력에서 서비스를 ec2 로 설정 하고 API를 RevokeSecurityGroupIngress 로 설정
- 추가 입력에서 두 개의 입력을 추가
- 첫 번째로 입력 이름을 GroupId, 값을 {{GroupId}}로 입력
- 선택적 입력 추가를 선택해 입력 이름이 IpPermissions 이고 입력 값이 다음인 두 번째 입력을 추가
- IpProtocol: tcp FromPort: 3306 ToPort: 3306 Ipv6Ranges: - CidrIpv6: '::/0'
- On Failure 섹션 에서 Common properties - optional 메뉴를 확장하고 Continue 값을 추가
- 화면 하단에서 자동화 만들기를 클릭
Step 2 : 보안 그룹에 비준수 수신 추가
- EC2 콘솔 로 이동
- 왼쪽의 네트워크 및 보안 섹션 에서 보안 그룹 클릭
- 워크숍 보안 그룹을 선택하고 인바운드 규칙 탭을 클릭
- 인바운드 규칙 편집을 클릭
- 규칙 추가 를 클릭
- 유형: SSH 선택 및 소스: Anywhere-IPv4
- 규칙 추가 를 클릭
- 유형: SSH 선택 및 소스: Anywhere-IPv6
- RDP 및 MYSQL/Aurora 에 대해 5-8단계를 반복 하고 규칙 저장을 클릭
Step 3 : 비준수 리소스 수정
- AWS config 콘솔 로 이동을 클릭한 다음 콘솔 왼쪽에서 규칙을 클릭
- restricted-common-ports 규칙을 찾아 선택
- 작업 | 문제 해결 관리 선택
- 편집: 수정 작업에서 다음을 수행
- 수정 방법: 자동 수정
- 수정 작업: Custom-DisablePublicAccessForSecurityGroup
- 리소스 ID 매개변수: GroupId (이렇게 하면 비준수 보안 그룹 ID가 수정 작업에 전달됨)
- 저장 클릭
- 구성 변경 시 감지하는 규칙의 경우 알아서 변경 탐지되지만 24시간 마다 탐지하는 규칙의 경우 작업 >재평가 과정을 통해 재평가 필요
- 범위 내 리소스에서 무제한 액세스를 추가한 보안 그룹을 선택하고 Remediate 를 클릭
- AWS Config로 돌아가서 limited-common-ports 규칙을 클릭 하고 규칙을 한 번 더 재평가해서 보안 그룹이 규정을 준수하는지 확인
❷ Config & Automation 수행할 규칙 선별
- Security Hub의 컨트롤 레퍼런스를 참고해 심각도가 Critical, High이며 Config의 관리형 규칙에 해당하는 규칙들 정리
config rule name | automation availibility | architecture | Security control ID |
Security control title | Severity | Schedule type |
iam-root-access-key-check | x | o | IAM.4 | IAM root user access key should not exist | CRITICAL | Periodic |
root-account-hardware-mfa-enabled | x | o | IAM.6 | Hardware MFA should be enabled for the root user | CRITICAL | Periodic |
lambda-function-public-access-prohibited | x | o | Lambda.1 | Lambda function policies should prohibit public access | CRITICAL | Change triggered |
rds-snapshots-public-prohibited | x | o | RDS.1 | RDS snapshot should be private | CRITICAL | Change triggered |
rds-instance-public-access-check | https://ap-northeast-2.console.aws.amazon.com/systems-manager/documents/AWSConfigRemediation-DisablePublicAccessToRDSInstance/description?region=ap-northeast-2 | o | RDS.2 | RDS DB Instances should prohibit public access, as determined by the PubliclyAccessible configuration | CRITICAL | Change triggered |
s3-bucket-public-read-prohibited | https://ap-northeast-2.console.aws.amazon.com/systems-manager/documents/AWS-DisableS3BucketPublicReadWrite/description?region=ap-northeast-2 | o | S3.2 | S3 buckets should prohibit public read access | CRITICAL | Periodic and change triggered |
s3-bucket-public-write-prohibited | https://ap-northeast-2.console.aws.amazon.com/systems-manager/documents/AWS-DisableS3BucketPublicReadWrite/description?region=ap-northeast-2 | o | S3.3 | S3 buckets should prohibit public write access | CRITICAL | Periodic and change triggered |
ssm-document-not-public | x | o | SSM.4 | SSM documents should not be public | CRITICAL | Periodic |
account-part-of-organizations | x | o | Account.2 | AWS account should be part of an AWS Organizations organization | HIGH | Periodic |
multi-region-cloudtrail-enabled | x | o | CloudTrail.1 | CloudTrail should be enabled and configured with at least one multi-Region trail that includes read and write management events | HIGH | Periodic |
cloudtrail-enabled | x | o | CloudTrail.3 | CloudTrail should be enabled | HIGH | Periodic |
cloudwatch-alarm-action-check | x | o | CloudWatch.15 | CloudWatch Alarms should have an action configured for the ALARM state | HIGH | Change triggered |
cloudwatch-alarm-action-enabled-check | x | o | CloudWatch.17 | CloudWatch alarm actions should be enabled | HIGH | Change triggered |
ecr-private-image-scanning-enabled | x | o | ECR.1 | ECR private repositories should have image scanning configured | HIGH | Change triggered |
ecs-task-definition-pid-mode-check | x | o | ECS.3 | ECS task definitions should not share the host's process namespace | HIGH | Change triggered |
ecs-containers-nonprivileged | x | o | ECS.4 | ECS containers should run as non-privileged | HIGH | Change triggered |
ecs-containers-readonly-access | x | o | ECS.5 | ECS containers should be limited to read-only access to root filesystems | HIGH | Change triggered |
ecs-no-environment-secrets(x) | x | o | ECS.8 | Secrets should not be passed as container environment variables | HIGH | Change triggered |
guardduty-enabled-centralize | https://ap-northeast-2.console.aws.amazon.com/systems-manager/documents/AWSConfigRemediation-CreateGuardDutyDetector/description?region=ap-northeast-2 | o | GuardDuty.1 | GuardDuty should be enabled | HIGH | Periodic |
iam-policy-no-statements-with-admin-access | https://ap-northeast-2.console.aws.amazon.com/systems-manager/documents/AWSConfigRemediation-ReplaceIAMInlinePolicy/description?region=ap-northeast-2 | o | IAM.1 | IAM policies should not allow full "*" administrative privileges | HIGH | Change triggered |
rds-automatic-minor-version-upgrade-enabled | https://ap-northeast-2.console.aws.amazon.com/systems-manager/documents/AWSConfigRemediation-EnableMinorVersionUpgradeOnRDSDBInstance/description?region=ap-northeast-2 | o | RDS.13 | RDS automatic minor version upgrades should be enabled | HIGH | Change triggered |
s3-bucket-policy-not-more-permissive(x) | x | o | S3.6 | S3 permissions granted to other AWS accounts in bucket policies should be restricted | HIGH | Change triggered |
s3-account-level-public-access-blocks | https://ap-northeast-2.console.aws.amazon.com/systems-manager/documents/AWSConfigRemediation-ConfigureS3PublicAccessBlock/description?region=ap-northeast-2 | o | S3.8 | S3 Block Public Access setting should be enabled at the bucket-level | HIGH | Change triggered |
❸ ❷에서 선별한 Config 규칙들 중 SSM에서 관리형 Document를 제공하는 규칙들에 한해 Automation 구현
# Daily Reporting
☑️ 일일 업무 보고서 작성
☑️ Config에서 자동 수정이 가능한 일부 취약점의 경우 system manager를 활용해 자동 수정 진행 테스트
☑️ config & automation 수행할 규칙 선별
☑️ Config의 일부 취약점 System Manager Automation 구현
☑️ 프로젝트 요구사항 중간 미팅
# references
https://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/systems-manager-automation.html
https://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/automation-setup-iam.html
https://docs.aws.amazon.com/ko_kr/securityhub/latest/userguide/securityhub-controls-reference.html
'devops bootcamp 4 > project log' 카테고리의 다른 글
[SECTION 5] <Final Project> 프로젝트 회고와 평가 (1) | 2023.06.26 |
---|---|
[SECTION 5] <Final Project> DAY 6 LOG (0) | 2023.06.19 |
[SECTION 5] <Final Project> DAY 5 LOG (0) | 2023.06.16 |
[SECTION 5] <Final Project> DAY 3 LOG (0) | 2023.06.14 |
[SECTION 5] <Final Project> 칸반과 WIP (0) | 2023.06.12 |