AWS를 처음 접할 때 많이 헷갈려 하는 부분이 바로 Network ACL과 Security Group일겁니다.

일반적으로 생각하는 방화벽과는 조금 다른 기능이라 그런 것 같습니다.

그리하여 오늘은 두 개의 보안 설정에 대한 개념정리를 해보겠습니다.


참고로 Network ACL은 VPC가 구성 되어야만 사용이 가능합니다.

VPC를 잠깐 설명드리자면 클라우드 환경에서 실제 IDC환경과 동일한 가상의 IDC환경을

구축 할 수 있도록 제공하는 기능입니다.


Network ACL은 외부간 통신을 담당하는 보안기능으로 서브넷 단위로 설정이 가능하며, Security Group는 내부간 통신을 담당하며 서버 단위로 정책을 설정할 수 있습니다.



 Network ACL : Stateless 필터링 방식

 Security Group : Stateful 필터링 방식


 ※ Stateful과 Stateless의 차이점

 Stateful : 요청 정보를 저장하여 응답하는 트래픽 제어를 하지 않음.

 Stateless : 요청 정보를 따로 저장하지 않기 때문에 응답하는 트래픽에 대한 필터링을 설정 해야함.



Network ACL과 Security Group의 전체적인 그림을 설명드리겠습니다.


경우1. 외부에서 접근

외부에서 서버로 접근하기 위해서는 Network ACL의 보안정책과 하위의 Security Group 보안정책에 적용됩니다.


경우2. 내부통신

동일 서브넷의 내부통신은 Security Group 보안정책만 적용됩니다.




여기까지만 보면 일반적인 보안이랑 크게 차이가 나지 않습니다.

하지만, Network ACL은 특정 포트와 통신 하기 위해서는 인바운드/아웃바운드 두 개의 정책을 다 써야한다고

명시되어 있습니다.




Network ACL은 기본적으로 인/아웃이 차단되어 있습니다.

예를 들어 80포트를 허용하였을 경우 방화벽의 경우는 아웃바운드가 차단이 되어도 외부에서 80포트로 접속하는데

문제가 되지 않지만, ACL의 경우는 아웃바운드가 차단이 되어 있으면 통신이 되지 않습니다.

위 이미지의 마지막 줄을 보시면 아웃바운드에 1024-65535 포트를 허용하라고 되어있습니다.


웹 서비스를 하기 위해서는 Network ACL의 인바운드/아웃바운드 정책이 하기 이미지와 같아야 합니다.

즉, 응답하는 서버의 sport도 허용 해주어야 통신이 됩니다.





여기에서 왜 1024-65535 포트를 허용하여야 하는지 궁금하신 분들도 계실겁니다.

위에서 언급한 것처럼 Stateless는 세션을 기억하지 않기 때문에 요청에 대한 응답을 할 경우 응답하는 대상의 Source Port 범위인 1024-65535를 추가 해주어야 한다는 말입니다.



그럼 Network ACL과 Security Group이 어떻게 동작하는 지 Case By Case로 알아보겠습니다.



 

 외부에서 내부로 들어오는 경우





위의 경우는 일반적인 사용자가 서버에 접근할 때 적용되는 정책입니다.

외부에서 요청이 오면 Network ACL 정책을 먼저 거친 후 Security Group 정책을 거치게 되며,

서버측 응답은 Security Group의 아웃바운드 정책은 거치지 않고 Network ACL정책만 거친 후 사용자에게 응답합니다.

여기서 주의 해야할 점은 Network ACL의 아웃바운드 정책에 1024-65535 정책이 없으면 응답을 할 수 없게 되는 것이죠..






위의 경우는 같은 서브넷에 서버가 존재할 경우는 Security Group정책만 따르게 됩니다.






위의 경우는 통신할 서버가 다른 서브넷에 존재할 경우 Case1 번과 같은 조건이기 때문에 1번과 동일하게 동작합니다.






 

 내부에서 외부로 나가는 경우


내부에서 외부로 나가는 경우는 위 3개의 Case와 반대로 생각하시면 됩니다.




위의 경우는 서버에서 외부로 접속을 시도할 때 Security Group의 아웃바운드 정책을 먼저 거친 후 Network ACL의 정책을 거치게 됩니다. 그리고 응답을 받을 때엔 Network ACL의 인바운드 정책만 적용이 됩니다.

여기서 주의해야 할 점은 Network ACL의 인바운드 정책에 1024-65535 정책이 있어야만 통신이 됩니다.






Case 2번과 동일합니다.





Case 4번과 동일합니다.





 

 결론


1. 서브넷이 다를 경우

: Network ACL 정책이 적용 됨


2. 서브넷이 같을 경우

: Security Group 정책만 적용 됨


3. Network ACL

: Stateless 기반으로 인바운드 / 아웃바운드 정책에 1024-65535 포트에 대하여 허용하여야 통신이 가능하다.


4. Security Group

: 방화벽 이라고 생각하시면 됨




'할롬::컴터 > AWS정보' 카테고리의 다른 글

[AWS] AWS-F50B간 BGP 설정  (0) 2013.05.21
[AWS] CLI Command Line 사용방법  (0) 2013.05.13