티스토리 뷰

반응형

Amazon VPC의 인터네트워크 트래픽 프라이버시

AWS는 VPC의 보안을 강화하고 모니터링하는데 사용할 수 있는 여러가지 기능을 제공한다.

 

보안그룹

보안그룹은 연결된 Amazon EC2 인스턴스에 대한 방화벽 역할을 수행하여 인스턴스 수준에서 인바운드 트래픽과 아웃바운드 트래픽을 모두 제어한다. 인스턴스를 시작할 대 생산한 하나 이상의 보안그룹과 인스턴스를 연결할 수 있다.

 

인스턴스를 시작할 때 보안그룹을 지정하지 않을 경우 VPC에 대해 인스턴스는 기본 보안그룹과 자동으로 연결된다.

네트워크 ACL

네트워크 ACL은 연결된 Subnet에 대해 방화벽 역할을 하여 Subnet 수준에서 인바운드 트래픽과 아웃바운드 트래픽을 모두 제어한다.

흐름로그

흐름로그는 VPC의 네트워크 인터페이스에서 양방향으로 이동하는 IP 트래픽에 대한 정보를 캡쳐한다. VPC, Subnet 또는 개별 네트워크 인터페이스에 대한 흐름로그를 생성할 수 있다. 흐름로그 데이터는 CloudWatch Log 또는 Amazon S3에 게시되며 과도하게 제한하거나 과도하게 허용하는 보안그룹과 네트워크 ACL을 진단하는데 도움이 된다.

트래픽 미러링

Amazon EC2 인스턴스의 탄력적 네트워크 인터페이스(Elastic) 에서 네트워크 트래픽을 복사할 수 있다. 그런 다음 트래픽을 대역 외 보안 및 모니터링 어플라이언스에 보낼 수 있다.

 

 

IAM을 사용해 보안그룹, 네트워크 ACL과 흐름로그를 생성하고 관리할 수 있는 권한을 가진 생성자를 생성할 수 있다. 이러한 작업을 여러사람이 할 필요가 없을거고 권한을 통해 네트워크 관리자에게만 부여할 수 있다.

(권한 종류 파악하고 여러사람한테 들어가있는지도 체크할 수 있을듯하다)

 

 


보안그룹 및 네트워크 ACL 비교

 

이 다이어그램은 보안그룹과 네트워크 ACL에서 제공하는 보안 계층을 보여준다. 예를 들어, 인터넷 게이트웨이의 트래픽은 라우팅 테이블의 라우팅을 통해 적절한 Subnet으로 라우팅된다. Subnet과 연결된 네트워크 ACL 규칙은 Subnet에 허용되는 트래픽 유형을 제어한다. 인스턴스와 연결된 보안그룹 규칙은 인스턴스에 허용되는 트래픽 유형을 제어한다.

 

 


Amazon EC2용 AWS ID 및 액세스 관리

IAM은 AWS 리소스에 대한 관리자의 접근을 안전하게 제어하는데 도움이 되는 AWS 서비스이다. IAM 관리자는 어떤 사용자가 Amazon VPC 리소스를 사용할 수 있는 인증 및 권한을 가져야하는지 제어한다.

 

대상

서비스 사용자

Amazon VPC 서비스를 사용해 작업을 수행하는 경우 필요한 자격증명과 권한을 관리자가 제공한다. 다른 Amazon VPC 기능을 사용해 작업을 수행한다면 추가적인 권한이 필요할 수 있다. 액세스 권한 관리 방식을 이해하면 적절한 권한을 관리자에게 요청할 수 있다.

서비스 관리자

회사에서 Amazon VPC 리소스를 책임지고 있다면 서비스에 대한 완전한 액세스 권한을 보유하고 있을 것이다. 서비스 관리자는 직원이 액세스해야하는 Amazon VPC 기능과 리소스를 결정한다. IAM 관리자에게 요청을 제출해 서비스 사용자의 권한을 변경할 수 있다.

IAM 관리자

Amazon VPC에 대한 액세스 권한 관리 정책 작성 방법을 숙지해야 한다.

docs.aws.amazon.com/ko_kr/vpc/latest/userguide/vpc-policy-examples.html

 

Amazon VPC 정책 예 - Amazon Virtual Private Cloud

Amazon VPC 정책 예 기본적으로 IAM 사용자 및 역할은 VPC 리소스를 생성하거나 수정할 수 있는 권한이 없습니다. 또한 AWS Management Console, AWS CLI 또는 AWS API를 사용하여 작업을 수행할 수도 없습니다. I

docs.aws.amazon.com

(결국 Amazon VPC에 대한 권한들을 쭈욱 살펴보고 정리하는게 필요하겠네)

 

 


Amazon VPC가 IAM과 작동하는 방식

IAM을 사용해 Amazon VPC에 대한 액세스를 관리하기에 앞서 Amazon VPC에서 사용할 수 있는 IAM 기능을 이해해야 한다.

 

관리자는 AWS JSON 정책 문서를 사용해 누가 무엇에 액세스할 수 있는지에 대해서 지정할 수 있다. 즉, 어떤 보안 주체어떤 리소스어떤 조건에서 어떤 작업을 수행할 수 있는지를 지정할 수 있다.

 

AWS JSON의 각 항목 (Action, Resource, Condition 등)이 어떠한 것들인지 설명한다.

 

 


Amazon VPC 정책 예

정책 모범 사례

자격증명 기반 정책은 매우 강력하다. 이 정책은 계정에서 사용자가 Amazon VPC 리소스를 생성, 액세스 또는 삭제할 수 있는지 여부를 결정한다.

 

이 과정에서 다음 권장 사항을 지키는 것이 좋다.

  • AWS 관리형 정책을 사용해 시작하기
  • 최소 권한 부여
  • 중요한 작업에 대해 MFA 활성화 (중요한 리소스 또는 API 작업에 액세스할 때)
  • 보안 강화를 위해 정책 조건 사용

 

Public Subnet이 포함된 VPC 만들기

사용자가 VPC, Subnet, 라우팅 테이블 및 인터넷 게이트웨이를 만들 수 있도록 설정한다. 또한 사용자는 이넡넷 게이트웨이를 VPC에 연결하고 라우팅 테이블에 경로를 생성할 수 있다.

 

ec2:ModifyVpcAttribute Action을 통해 사용자는 VPC로 시작된 각 인스턴스가 DNS 호스트 이름을 수신할 수 있도록 VPC에 대한 DNS 호스트 이름을 활성화할 수 있다.

{
   "Version": "2012-10-17",
   "Statement": [{
      "Effect": "Allow",
      "Action": [
        "ec2:CreateVpc", "ec2:CreateSubnet", "ec2:DescribeAvailabilityZones",
        "ec2:CreateRouteTable", "ec2:CreateRoute", "ec2:CreateInternetGateway", 
        "ec2:AttachInternetGateway", "ec2:AssociateRouteTable", "ec2:ModifyVpcAttribute"
      ],
      "Resource": "*"
    }
   ]
}

 

VPC 리소스 수정 및 삭제

사용자가 수정하거나 삭제할 수 있는 VPC 리소스를 제어할 수 있다. 예를 들어 사용자는 다음 정책을 통해 Purpose=Test 태그가 있는 라우팅 테이블에서 작업하고 삭제할 수 있다. (조건에 대한 이야기)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:DeleteInternetGateway",
            "Resource": "arn:aws:ec2:*:*:internet-gateway/*",
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/Purpose": "Test"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DeleteRouteTable",
                "ec2:CreateRoute",
                "ec2:ReplaceRoute",
                "ec2:DeleteRoute"
            ],
            "Resource": "arn:aws:ec2:*:*:route-table/*",
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/Purpose": "Test"
                }
            }
        }
    ]
}

 

보안그룹 관리

사용자에게 특정 VPC 내에 있는 임의의 보안 그룹에 대한 인바운드, 아웃바운드 규칙을 생성하고 삭제하는 권한을 부여한다. 이 정책에서는 Authorize 및 Revoke 작업을 위한 보안그룹 리소스에 조건 키를 적용해 이러한 권한을 부여한다.

 

Condition 을 살펴보면 vpc-11223344556677889 라는 VPC에 대해서만 작업을 수행할 수 있다.

{
"Version": "2012-10-17",
  "Statement":[{
    "Effect":"Allow",
    "Action": [
       "ec2:AuthorizeSecurityGroupIngress",
       "ec2:AuthorizeSecurityGroupEgress",
       "ec2:RevokeSecurityGroupIngress",
       "ec2:RevokeSecurityGroupEgress"],
     "Resource": "arn:aws:ec2:region:account:security-group/*",
      "Condition": {
        "StringEquals": {
          "ec2:Vpc": "arn:aws:ec2:region:account:vpc/vpc-11223344556677889"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "ec2:DescribeSecurityGroups",
      "Resource": "*"
    }
  ]
}

 

Amazon VPC 콘솔의 보안그룹 페이지에서 보안그룹을 보려면 ec2:DescribeSecurityGroups 권한이 있어야 한다. 보안그룹 생성 페이지를 사용하려면 ec2:DescribeVpcsec2:CreateSecurityGroup 권한이 있어야 한다.

{
   "Version": "2012-10-17",
   "Statement": [{
      "Effect": "Allow",
      "Action": [
         "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs", "ec2:CreateSecurityGroup"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DeleteSecurityGroup", "ec2:AuthorizeSecurityGroupIngress", "ec2:AuthorizeSecurityGroupEgress",
        "ec2:RevokeSecurityGroupIngress", "ec2:RevokeSecurityGroupEgress"
      ],
      "Resource": "arn:aws:ec2:*:*:security-group/*",
      "Condition":{
         "ArnEquals": {
            "ec2:Vpc": "arn:aws:ec2:*:*:vpc/vpc-11223344556677889"
         }
      }
    }
   ]
}	

 

 


Amazon VPC에 대한 로깅 및 모니터링

다음과 같은 자동 모니터링 도구를 사용해 VPC에서 구성 요소를 관찰하고 문제 발생시 보고해야 한다.

  • 흐름 로그
    흐름 로그는 VPC의 네트워크 인터페이스에서 양방향으로 이동하는 IP 트래픽에 대한 정보를 캡처한다. VPC, Subnet 또는 개별 네트워크 인터페이스에 대한 흐름 로그를 생성할 수 있다. 흐름 로그 데이터는 CloudWatch Logs 또는 Amazon S3에 게시되며 과도하게 제한하거나 과도하게 허용하는 보안그룹과 네트워크 ACL 규칙을 진단하는데 이용될 수 있다.
  • NAT 게이트웨이 모니터링
    CloudWatch를 이용해 NAT 게이트웨이를 모니터링하여 정보를 수집하고 읽기 가능한 실시간에 가까운 지표를 만들 수 있다.

(흐름 로그를 활성화 했는지.. NAT 게이트웨이를 모니터링하고 있는지)

 

VPC의 보안그룹

보안그룹은 연결된 Amazon EC2 인스턴스에 대한 방화벽 역할을 수행하여 인스턴스 수준에서 인바운드 트래픽과 아웃바운드 트래픽을 모두 제어한다. 인스턴스를 시작할 대 생산한 하나 이상의 보안그룹과 인스턴스를 연결할 수 있다.

 

인스턴스를 시작할 때 보안그룹을 지정하지 않을 경우 VPC에 대해 인스턴스는 기본 보안그룹과 자동으로 연결된다.

 

각 보안그룹에 대해 인스턴스에 대한 인바운드 트래픽을 제어하는 규칙과 아웃바운드 트래픽을 제어하는 규칙 Set을 추가한다.

 

보안그룹 기본 사항

  • 허용 규칙을 지정할 수 있지만 거부 규칙은 지정할 수 없다.
  • 인바운드 트래픽과 아웃바운드 트래픽에 별도의 규칙을 지정할 수 있다.
  • 보안그룹 규칙을 사용하면 프로토콜과 포트 번호를 기준으로 트래픽을 필터링할 수 있다.
  • 보안그룹은 상태가 저장된다. 사용자가 인스턴스에 요청을 전송하면 해당 요청의 응답 트래픽은 인바운드 보안그룹 규칙에 관계없이 허용된다. 또한 아웃바운드 규칙에 상관없이 허용된 인바운드 트래픽에 대한 반응으로 외부로 나가는 흐름을 수행한다.
  • 새 보안그룹을 만드는 경우 인바운드 규칙이 별도로 없다. 따라서 추가하기 전에는 밖에서 오는 트래픽을 받을 수 없게된다.
  • 기본적으로 보안그룹은 모든 아웃바운드 트래픽을 허용하는 규칙이 포함된다. 
    (이 규칙이 남아있는지도 체크를 해줘야될듯 싶긴하다)
  • VPC당 생성할 수 있는 보안그룹의 수, 각 보안그룹에 추가할 수 있는 규칙의 수, 그리고 네트워크 인터페이스에 연결할 수 있는 보안그룹의 수는 정해져 있다.
  • 트래픽을 허용하는 규칙을 추가하지 않으면 보안그룹과 연결된 인스턴스가 서로 통신할 수 없다.
  • 보안그룹은 네트워크 인터페이스와 연결된다. 인스턴스를 시작한 후 인스턴스에 연결된 보안그룹은 당연히 변경할 수 있다.

VPC의 기본 보안그룹

동일 보안그룹에 할당된 네트워크 인터페이스끼리의 통신만 허용되어있고 나머지는 못들어오도록 되어있다! 나가는건 일단 어디로든 다 나갈수있게 되어있다.

 

보안그룹 규칙

보안그룹의 규칙을 추가하거나 제거할 수 있다. 규칙은 인바운드 트래픽, 아웃바운드 트래픽에 적용되고 특정 CIDR 범위 또는 VPC나 다른 보안그룹에 대한 정보로 부여할 수 있다.

  • (InBound) 트래픽의 Source과 대상 포트 또는 포트 범위. Source는 다른 보안그룹, IPv4 CIDR 블록, 단일 IPv4 주소, 접두사 목록 ID일 수 있다.
  • (OutBound) 트래픽의 Destination과 대상 포트 또는 포트 범위. Destination은 다른 보안그룹, IPv4 CIDR 블록, 단일 IPv4 주소 또는 접두사 목록 ID일 수 있다.
  • 표준 프로토콜 번호를 가진 모든 프로토콜이다.
  • 나중에 쉽게 식별할 수 있도록 설명란이 제공된다.
  • AWS CLI, 콘솔 또는 API를 사용해 보안그룹 규칙이 추가되는 경우 Source 또는 Destination CIR 블록이 표준 양식으로 자동 설정된다. 100.68.0.18/18 하면 100.68.0.0/18 처럼 네트워크주소로 변경된다.

 

3-Tier 아키텍쳐에서 적용하는 EC2 Instance에 적용할 보안그룹의 예시이다. (어렵진 않은듯하다)

 

무효 보안그룹 규칙

VPC에 다른 VPC와의 VPC 피어링 연결이 있는 경우, 보안 그룹 규칙은 피어 VPC의 다른 보안 그룹을 참조할 수 있다. 이를 통해 참조된 보안 그룹과 연결된 인스턴스가 참조하는 보안 그룹과 연결된 인스턴스와 서로 통신할 수 있다.

 

피어 VPC의 소유자가 참조된 보안 그룹을 삭제하거나 피어 VPC의 소유자가 VPC 피어링 연결을 삭제하면, 보안 그룹 규칙은 stale로 표시된다.

(이런 보안그룹 규칙이 있는지 찾아보는 것도 괜찮을듯)

 

 

보안그룹 작업

다음 작업음 Amazon VPC 콘솔을 사용한 보안그룹 작업 방법이다.

기본 보안그룹 수정

기본 보안그룹은 삭제할 수는 없지만 그룹의 규칙을 변경하는 것은 가능하다.

보안그룹 생성

보안그룹 이름하고 VPC 지정하고 바로생성~

(aws ec2 create-security-group / aws ec2 describe-security-groups)

규칙 추가/제거/업데이트

그냥 하면된다...

(aws ec2 authorize-security-group-ingress / aws ec2 authorize-security-group-egress)

(aws ec2 revoke-security-group-ingress / aws ec2 revoke-security-group-egress)

(aws ec2 update-security-group-rule-descriptions-ingress / aws ec2 update-security-group-rule-descriptions-egress)

인스턴스의 보안그룹 변경

VPC에서 인스턴스를 시작한 후 해당 인스턴스와 연결된 보안그룹을 변경할 수 있다. 인스턴스가 running/stopped 상태에 있는 경우 해당 인스턴스의 보안그룹을 변경할 수 있다.

(aws ec2 modify-instance-attribute)

보안그룹 삭제

보안그룹에 할당된 인스턴스가 없는 경우에만 삭제할 수 있다. 기본 보안그룹은 삭제할 수 없다.

(aws ec2 delete-security-group)

 

 

AWS Firewall Manager를 사용해 VPC 보안그룹을 중앙에서 관리

AWS Firewall Manager은 여러 계정과 리소스에서의 VPC 보안그룹 관리 및 유지 관리 작업을 간소화한다. 단일 중앙 관리자 계정에서 조직의 보안그룹을 구성하고 감사할 수 있다. 새로 추가한 리소스를 포함한 모든 계정과 리소스에 자동으로 규칙과 보호를 적용한다

 

  • 조직 전체에서 공통 기본 보안그룹 구성
  • 조직의 기본 보안그룹 감사
  • 규정 미준수 리소스에 대한 보고서 가져오기 및 문제 해결

 

 

 

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함