Infra/cloud

[AFOS] 5주차 보안 서비스 - 실습

미니문92 2021. 7. 19. 14:19

5. AWS CLI - CloudShell

 

AWS CloudShell (일본 도쿄 리전) 접속

→ 최초 접속 시 환경 구성으로 2~5분 정도 소요(미리 서비스 접근) ⇒ AWS CLI 사용해보기

서울 리전에서 접속은 아직 안된다
Region Unsupported
CloudShell is not available in 아시아 태평양 (서울). Please select another region.

 

# 현재 AWS Web Console 로그인된 계정의 정보(권한)으로 AWS CLI 환경 사용
# AWS CLI 사용 보안 주체의 정보
[cloudshell-user@ip-10-0-129-xx ~]$ aws configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ********************   container-role    
secret_key     ********************   container-role    
    region           ap-northeast-1              env    ['AWS_REGION', 'AWS_DEFAULT_REGION']
    

# s3 버킷 조회
[cloudshell-user@ip-10-0-129-xx ~]$ aws s3 ls

# S3 버킷 생성
[cloudshell-user@ip-10-0-129-xx ~]$ aws s3 mb s3://s3-mym --region ap-northeast-2
make_bucket: s3-mym

# S3 버킷 삭제
[cloudshell-user@ip-10-0-129-xx ~]$ aws s3 rb s3://s3-mym
remove_bucket: s3-mym


6. CloudTrail

이벤트 기록 클릭

 


AWS API 모든 기록 확인 => 특정 이벤트 클릭 시 상세 정보(레코드) 출력

 



7. IAM User 생성 및 로그인

root 계정으로 로그인 URL에 사용할 별칭 생성

  • IAM -> 별칭생성 -> 전세계 유일한 별칭으로 입력 ->이후 해당 로그인URL로 IAM User 로그인

사용자 지정 클릭 후 수정


IAM USER 생성

  • IAM -> 사용자 클릭 사용자 추가 클릭 : IAM User(admin, viewuser) 생성

사용자 추가

  • admin 계정 생성

기존 정책 직접 연결
csv 다운로드해서 사용자의 액세스 키 ID와 비밀 액세스키 정보 잘 보관

  • viewuser 계정 생성

액세스 유형 : AWS Management Console 액세스만 체크
기존 정책 직접 연결 : ViewOnlyAccess

 

  • IAM 사용자로 Web Console 로그인
  • 내가 설정한 로그인 URL 동작 확인 : https://minimun92.signin.aws.amazon.com/console
  • 위에서 생성한 admin, viewuser 사용자 로그인 후 EC2 생성 혹은 S3 버킷 생성 시도
    • -> 이런저런 권한 부족의 메세지가 출력되는것을 알 수 있다.

 


admin 사용자로 AWS CLI사용하기

# aws cli 사용을 위한 자격 증명 설정
[cloudshell-user@ip-10-0-151-*** ~]$ aws configure
AWS Access Key ID [None]: AKIAXHN32FXN6TVFXV6Z
AWS Secret Access Key [None]: *****************************fz99
Default region name [None]: ap-northeast-2
Default output format [None]: table

# 자격 증명 List 확인
[cloudshell-user@ip-10-0-151-*** ~]$ aws configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ****************XV6Z shared-credentials-file    
secret_key     ****************fz99 shared-credentials-file    
    region           ap-northeast-1              env    ['AWS_REGION', 'AWS_DEFAULT_REGION']

$ aws ec2 describe-vpcs
[cloudshell-user@ip-10-0-151-*** ~]$ aws ec2 describe-vpcs
-------------------------------------------------------------------------------------------------------------------
|                                                  DescribeVpcs                                                   |
+-----------------------------------------------------------------------------------------------------------------+
||                                                     Vpcs                                                      ||
|+---------------+----------------+------------------+------------+---------------+-------------+----------------+|
||   CidrBlock   | DhcpOptionsId  | InstanceTenancy  | IsDefault  |    OwnerId    |    State    |     VpcId      ||
|+---------------+----------------+------------------+------------+---------------+-------------+----------------+|
||  172.31.0.0/16|  dopt-15816073 |  default         |  True      |  49*****76699 |  available  |  vpc-d1a259b7  ||
|+---------------+----------------+------------------+------------+---------------+-------------+----------------+|
|||                                           CidrBlockAssociationSet                                           |||
||+------------------------------------------------------------------+------------------------------------------+||
|||                           AssociationId                          |                CidrBlock                 |||
||+------------------------------------------------------------------+------------------------------------------+||
|||  vpc-cidr-assoc-c114d0aa                                         |  172.31.0.0/16                           |||
||+------------------------------------------------------------------+------------------------------------------+||
||||                                              CidrBlockState                                               ||||
|||+-----------------------------------------+-----------------------------------------------------------------+|||
||||  State                                  |  associated                                                     ||||
|||+-----------------------------------------+-----------------------------------------------------------------+|||

 

8. IAM Role 

CloudFormation 스택 생성 - 링크 클릭 후 템플릿 파일로 기본 환경 자동 배포

  • 스택 이름(편하게 입력), 파라미터(KeyName - 자신의 SSH 키 선택) 다음 클릭
  • 스택 옵션 구성 다음 클릭
  • 맨 하단에 아래 IAM 리소스 생성 승인 체크 후 스택 생성 클릭
    • BasicEC2 배포
    • S3IAMRoleEC2 배포 → STGLabInstanceRole 적용
    • STGLabInstanceRole IAM Role 생성

템플릿 파일 내용

STGLabInstanceRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: STGLabInstanceRole
      AssumeRolePolicyDocument:
        Version: 2012-10-17
        Statement:
          -
            Effect: Allow
            Principal:
              Service:
                - ec2.amazonaws.com
            Action:
              - sts:AssumeRole
      Path: /
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/AmazonS3FullAccess
  • BasicEC2 SSH 접속
# S3 버킷 조회
aws s3 ls

# VPC 정보 확인
$ aws ec2 describe-vpcs

# S3 버킷 조회
aws s3 ls

----------------------[옵션]---------------------
# aws cli 사용을 위한 자격 증명 설정 (admin)
$ aws configure
AWS Access Key ID [None]: ################
AWS Secret Access Key [None]: #####################
Default region name [None]: ap-northeast-2
Default output format [None]: table

# 자격 증명 List 확인
$ aws configure list

# VPC 정보 확인
$ aws ec2 describe-vpcs

# ec2 조회
aws ec2 describe-instances
aws ec2 describe-instances --query 'Reservations[*].Instances[*].{Instance:InstanceId,Name:Tags[?Key==`Name`]|[0].Value}' --output text
aws ec2 describe-instances --query 'Reservations[*].Instances[*].{Instance:PrivateIpAddress,Name:Tags[?Key==`Name`]|[0].Value}' --output text

# S3IAMRoleEC2 재시작
aws ec2 reboot-instances --instance-ids 'S3IAMRoleEC2'
ping 'S3IAMRoleEC2'
  • S3IAMRoleEC2 접속 → 자격 증명 없이도 S3 사용 가능!
# 현재 EC2에 적용된 IAM Role(EC2 Profile) 정보 확인
[ec2-user@S3IAMRoleEC2 ~]$ curl http://169.254.169.254/latest/meta-data/iam/security-credentials/STGLabInstanceRole
{
  "Code" : "Success",
  "LastUpdated" : "2021-07-19T04:26:53Z",
  "Type" : "AWS-HMAC",
  "AccessKeyId" : "*********FO65W3",
  "SecretAccessKey" : "**************JPYM761y",
  "Token" : "IQoJb3JpZ2luX2VjEIz//////////wEaDmFwLW5vcnRoZWFzdC0yIkgwRgIhAOAqy2uv2NH+U3OXkpljzyy4wJRBt/PtTFWiZOOJYUD2AiEAmi74UsyWKFxaazdLpgDU5wXosyyhYbgX3pIcmGZZdAMqjQQIhv//////////ARAAGgw0OTY5OTk0NzY2OTkiDOEV8BsfabxWVpPCfCrhA0tCFWFtXUv9DJGU27CLn9asvB4QTtrIhUZNwmGZOw69JkD6qG91yi139z/vRRN4EbmosVe2S5n9+gbDSC2VUgYtPN5CkDoMPY0p4u+NpvxgchON2kpUaUicOQWw06B/qyse0OgaMxeLuGcnjAefPbVcslwDfkxsdC+8kONKw/BaqZDP34NkNYe1NeKfdw272uL3xiiSt9M3ymrev18TrIuM9X3LEoV1Z/38+1CeTsE2/gPeXWJ59raM5rvSxGFvdt1XQrifxq5KZcw2+Ka3EnWxzSxcYIK1k4/ccNoeDB85OQnZmdxxVF9XRBCKvfxa8R2LEDdAQ8JHKeQnskZHqEQeAgPU9Vs0bRi5Jadr34DpYbSOJFwuzKAUCqo6YcqCh9e9pfElItfY/LSanXFcFaO+yu8l4lBxMRUJyHGSZVDaFL2S5BsOAWDkFBeOH3CElHspEUgyh7m8EpOcNdlbjPdLpsuaIfDBZgFs9WkObfb3E5aWct0KPE6Og2wbFt32PAyI/UC4Y3OpqeeC9zvZ6VESjKYoQl6EzwUUOwH6/6iqPx+M4SGgR4r/EsGj9c9+hQwfXRH5PcHEmg/DzDcNUHwcTBr/qTpnYQx+v/FjL01PtTI73p8DVnNssc8Lq1+CHi8wqv7ThwY6pAFdx/UPVKo4hDQmfjPjmcrrF28nBt35LvzeZ9+uUWfxfUFx0/4VThcgtok8xP31rpn2SA4GTz9/tnUCh7gY71lViiHEJOGiSRRgQEVaEkLoTlzwibPwBvgR7EwUoyi0RnMUyigQ3vEDCp7Bx1wyl94qmPDuTbtUwCUQSbpQx1cYaRUXfCC9qqtZJOIt43eA8LLSFCW+F7urp3wUmLr8bps+4TLqTA==",
  "Expiration" : "2021-07-19T11:02:22Z"
}

# S3 버킷 조회
aws s3 ls

# S3 버킷 생성
aws s3 mb s3://버킷(유일한 이름) --region ap-northeast-2

# S3 버킷 삭제
aws s3 rm s3://버킷

# VPC 정보 확인
$ aws ec2 describe-vpcs


9. IAM Policy

EC2 종료 중지 삭제 하는 정책을 admin 계정에 적용 후 확인

  • IAM - 사용자 - admin 클릭 -> +인라인 정책 추가 클릭

  • JSON 클릭 후 아래 내용 입력 후 하단 정책 검토 클릭
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "ec2:RebootInstances",
                "ec2:StopInstances",
                "ec2:TerminateInstances"
            ],
            "Resource": "*"
        }
    ]
}
  • 이름(편한대로 입력) -> 하단 정책 생성 클릭
# ec2 조회
aws ec2 describe-instances
aws ec2 describe-instances --query 'Reservations[*].Instances[*].{Instance:InstanceId,Name:Tags[?Key==`Name`]|[0].Value}' --output text
aws ec2 describe-instances --query 'Reservations[*].Instances[*].{Instance:PrivateIpAddress,Name:Tags[?Key==`Name`]|[0].Value}' --output text

# S3IAMRoleEC2 재시작
aws ec2 reboot-instances --instance-ids 'S3IAMRoleEC2'
ping 'S3IAMRoleEC2'
  • BasicEC2 에서 admin 자격 증명으로 ec2 재부팅 실행 시 Policy 에 의해서 차단된 aws cli 출력 로그 & 웹 콘솔의 IAM Policy 정책 스샷

에러 메세지 출력

정책에서 재시작 액션을 Deny해서 불가능

 



10. Root 계정에 MFA 활성화

  • IAM -> 사용자 -> 사용자 이름 -> 보안자격 증명 -> 할당된 MFA 디바이스 관리 클릭 후 절차대로