2022. 6. 2. 19:49ㆍCloud/AWS 기초
AWS에서는 보안을 위해서 보안그룹(Security Group,SG)라는 개념을 사용한다. 왜 이런 이름을 사용하고 있을까?
말 그대로 이름이 붙여진 방식대로 동작하기 때문이다. SG는 방화벽이긴한데, 동일한 방화벽 규칙에 적용을 받아야하는 인스턴스들을 그룹화 시켜주는 역할을 하기 때문이다.
즉 SG라는 것을 만든 후 "인스턴스를 만들때 만든 SG를 사용하겠다." 라고 선택을 하게 되며, 이 후 해당SG로 인스턴스(혹은 app)가 들어가게된다. 즉 아래와 같은 환경이 만들어지게 되는 것 이다.
SG는 출발지주소, 모든 ip프로토콜, 모든 포트, ip주소를 사용할 수 있으며, 규칙은 상태 저장모드로 지정되어있다. 들어오는 것 중에 무엇을 허용할 것인지를 선택하고 등록하는 방식으로 주로 관리가 된다.
상태 저장모드
내부에서 트레픽이 외부로 발산되었을때, 응답값을 가지고 돌아올 경우, 이 응답값의 ip, prot, protocol등에 대해 트레픽 허용을 따로 지정하지 않더라도 자연스럽게 돌아올 수 있게 해 준다.
아무런 설정없이 단순 기본값으로만 설정하면 아래와 같다.
기본설정
인바운드 : 모든 트레픽 차단
아웃바운드 : 모든 트레픽 허용
SG가 있기 때문에 서브넷으로 트래픽에 대한 제어를 할 필요가 딱히 없다. 아래의 그림을 보도록 하자. 기본적으로 퍼블릭 서브넷에 접근하기 위해서는 1 SG를 무조건 통과해야지만 접근이 가능하며, DB저장소에 접근하기 위해서는 반드시 2 SG를 통과해야한다. 그렇기에 보안상으로 필터링을 할 수 있는 방법이 하나 더 생긴것 이다. 이렇게 되면 트래픽을 제어할 수 있게 된다.
체인 다이어그렘이라는 기법이 있는데, SG가 체인(사슬)처럼 서로연결되어있는 구조를 의미한다. 아래의 그림을 보도록 하자.
일반적으로 web서버는 https 443번 포트 혹은 http 80포트에 대해 입장할 수 있도록 허용해준다.이 후 출발지를 WEB서버의 SG로 기준을 정한 후 포트번호를 http만 접근할 수 있도록 지정하자. 그렇게 되면 둘간의 SG가 연결이 된다. 또한 APP의 SG를 출발지로하여, 3306번 포트로만 입장할 수 있는 SG를 만들어 DB서버에 보안그룹을 사용했다고 해 보자.
이런 방식의 경우 서버가 항상 고정적이며, 고장이 날 확율이 0%라면 할 필요가없다. 하지만 서버라는것은 그렇지않고 지속적으로 스케일 업/다운을 하며, 고장이 나기도 한다. 이때 새로운 서버를 만들게되면 이 서버의 ip는 새롭게 할당받게 되는데, 이런 일이 생길때 마다 IP를 일일히 등록을 하는것 보다 처음부터 이렇게 구조를 잡아두는것이 굉장히 편리하기 때문이다.
서브넷 경계에서 사용되는 방화벽이 하나 더 있는데, NACL(엑세스 제어 목록)이라는 것이 있다. in/out bound 전부 트레픽을 관리할 수 있으나, 양방향 전부다 신경을 써 줘야한다. 보통 in중 어떤것을 차단할것인지 등록하는 방식으로 사용된다.
기본설정
인바운드 : 모든 트레픽 허용
아웃바운드 : 모든 트레픽 허용
이렇게 다중 보호 계층이 생긴다면 아래와 같은 트레픽의 흐름이 이루어지게 될 것이다.
인터넷에서 접근을 하게 될 때, IGW(인터넷 게이트웨이)로 접근을 하게 될 것이며, 목적지에 따라서 라우팅 테이블의 결정에 따라 어떤 네트워크로 접근할 것인지를 배당받게된다. 그 후 NACL의 규칙을 통해서 필터링을 받게 된다. 그 다음으로 서브넷에 입장할 수 있게 해 주고, 특정 인스턴스로 접근을 하게 될 건데, 이 앞에는 SG가 있어 SG를 통해서 해당 인스턴스로 접근을 할 수있는지 확인을 하게 해 준다. 마지막으로 인스턴스에 존재하는 OS가 자체적으로 가지고 있는 방화벽을 통해서 보호를 받게 된다. 응답메세지는 이것과 반대로 나가게 된다.
이렇게 구축을 한 후 통신이 되지 않는다 라고 한다면, 가장 먼저 인스턴스가 있는 서브넷의 라우팅 테이블을 보는것이 1순위 이다.(라우팅테이블에 GW가 등록이 되어있는지) GW가 있다면, NACL의 필터링 규칙 중 차단목록이 있는지 검증한다. 이 후 SG에 허용이 되어있는지 확인을한다. 또한 인스턴스에 공인 IP가 있는지도 확인해야한다. 여기까지도 문제가 없다면 운영체제에서 서비스가 잘 돌아가고 있는지, 방화벽은 어떻게 되어있는지 검증하도록 하자.
즉 VPC에서 인터넷을 사용하기 위해서는
1. 인터넷 게이트웨이(IGW)를 VPC에 연결한다.
2. 라우팅테이블을 IGW에 연결한다.
3. 인스턴스에 공인 IP를 할당한다.
4. NACL과 SG를 적절히 사용한다.
'Cloud > AWS 기초' 카테고리의 다른 글
AWS ELB(Elastic Load Balancing) (0) | 2022.06.03 |
---|---|
AWS VPN 환경 (0) | 2022.06.02 |
AWS RDS 및 Amazon DynamoDB (0) | 2022.05.30 |
AWS SSA 공부 KMC part.1 (0) | 2022.05.29 |
AWS SAA 공부 IAM.1 (0) | 2022.05.18 |