[aws] 네트워크 ACL(NACL) 및 보안 그룹(SG) 비교

2022. 8. 14. 23:52✅ STUDY/AWS

안녕하세요 :)
AWS는 들어오고 나가는 트래픽에 대한 접근 제어를 어떻게 할까요?
오늘은 AWS의 접근 제어 방식인 NACL, SG에 대해 이야기 하고 비교해보려 합니다.


들어가기 전에 접근 제어에 대한 기본적 개념을 알아봅시다 !

인바운드 규칙 vs 아웃바운드 규칙
인바운드 규칙 : 들어오는 트래픽(소스)에 대해 허용/거부하는 규칙
아웃바운드 규칙: 나가는 트래픽(대상)에 대해 허용/거부하는 규칙

화이트 리스트 vs 블랙 리스트
화이트 리스트 : 기본적으로 모든 것을 거부하고, 허용할 규칙을 정하는 것 ( 보안그룹 )
블랙 리스트 : 기본적으로 모든 것을 허용하고, 거부할 규칙을 정하는 것 ( NACL )

Stateful vs Stateless
Stateful : 요청한 클라이언트의 IP와 포트를 저장하는 기법 ( 보안그룹 )
Stateless : 요청한 클라이언트의 IP와 포트를 저장하지 않는 기법 ( NACL )

3-way handshake

TCP 통신에서는 클라이언트와 서버가 통신을 할 때, 3-way handshake 방식으로 논리적 세션을 형성하고, 데이터를 주고 받음
클라이언트는 접속을 요청할 때마다 운영체제에게 "동적 포트(휘발성 포트)"를 할당받아 자신의 IP와 동적 포트로 서버에 요청을 보냄


네트워크 ACL(NACL)

네트워크 ACL(NACL)은 VPC에 연결되며, 서브넷을 통과하는 트래픽 접근을 제어합니다.
또한, vpc를 생성하면 자동으로 기본 NACL이 생성됩니다.
아래와 같이, 자동으로 생성된 NACL을 확인해보면 "인바운드 규칙"과 "아웃바운드 규칙"을 설정할 수 있습니다.

기본적으로 NACL은 "화이트 기반 결합 방식"이라, 제일 하단의 모든 트래픽에 대해 거부 규칙을 삭제할 수는 없습니다.
하지만, AWS는 사용자의 편의를 위해 100번이라는 규칙 번호로 모든 트래픽을 허용하는 규칙이 초기 설정해두었습니다.

물론 NACL을 화이트 기반으로 사용할지 블랙 기반으로 사용할지는 설정하기 나름입니다.
하지만, 저는 해당 초기 설정을 그대로 사용해 "블랙 리스트 결합 방식"으로 사용하는 것을 추천합니다.
그 이유는 NACL은 Stateless 방식을 사용하기 때문에 클라이언트의 IP와 동적 포트를 저장하지 않아 응답을 주려고 할 때 아웃바운드 규칙에 동적 포트 범위까지 적용해주어야 하는 번거로움이 있기 때문입니다. 쉽게 말해, 이 동적 포트는 요청을 보낼 때마다 동적 포트 범위 안에서 계속 변화하기 때문에 범위 설정을 해야하며 클라이언트의 운영체제에 따라 동적 포트 범위가 달라 정확히 설정하기에는 어려움이 있습니다. 

보안그룹과 다르게, 네트워크 ACL은 "규칙 번호"와 "허용/거부" 속성이 있습니다.
해당 규칙 번호는 우선 순위로, 트래픽이 들어오면 낮은 번호부터 순차 적용되며, 거부 규칙도 설정할 수 있습니다.

기본값으로 설정되어 있는 NACL의 인바운드 및 아운바운드 규칙


보안 그룹(SG)

보안 그룹은 ENI에 연결되며, ENI로 들어오거나 나가는 트래픽 접근을 제어합니다.

기본적으로 보안 그룹은 "화이트 리스트 방식" 입니다.
그래서 보안 그룹 생성 시에, 
모든 트래픽이 ENI로 들어오는 것(인바운드)의 규칙과 트래픽이 나가는 것(아웃바운드)의 규칙 모두 존재하지 않게 초기 세팅 되어야 하는 것이 정상이지만, AWS에서 사용자의 편의를 위해 "아웃바운드" 규칙은 전체 트래픽을 대상으로 허용하도록 설정하고 있습니다.

기본값으로 설정되어 있는 보안그룹의 인바운드 및 아운바운드 규칙

보안 그룹은 Stateful 방식을 사용하기 때문에 서버로 요청이 들어올 때, 클라이언트의 IP와 동적 포트를 저장합니다. 실제 클라이언트에게 응답을 줄 때 이렇게 저장한 클라이언트의 IP와 동적 포트를 load해 응답을 줍니다. 클라이언트의 IP와 동적 포트를 기억하고 있기 때문에 서버의 아웃바운드 규칙 설정과는 관계없이 서버의 인바운드 규칙에 클라이언트를 소스로 하여 허용만 되어 있어도 응답까지 정상작동 합니다.
아래 사진을 보면, 아웃바운드 규칙이 없는 보안그룹에 연결되어 있는 서버와 ping이 정상 작동 하는 것을 확인할 수 있습니다.

 


[결론]

개별 인스턴스의 접근 제어는 SG로 관리하고, 서브넷 접근은 NACL로 관리합니다.
이 때, NACL은 블랙 기반 결합 방식을 사용해, 서브넷에 속한 인스턴스가 공통으로 차단할 트래픽만 NACL에 적용해 사용하는 것을 추천합니다. 실제로 개별 인스턴스의 접근 제어는 SG로 허용할 트래픽만 규칙을 생성하여 관리합니다.

 


참고) Amazon VPC 네트워킹 원리와 보안

 

Amazon VPC 네트워킹 원리와 보안 - YES24

기업 클라우드 보안 정책을 수립하고 적합성 평가를 직접 수행하며 겪은 저자의 노하우가 담긴 VPC 네트워킹 책이다. VPC 공간과 컴퓨팅, 네트워킹 연결 서비스의 구조와 원리를 AWS 토폴로지로 친

www.yes24.com