network segmentation

망분리

1. 통신망

1-1. 정의

  • IP 로 식별할 수 있는 노드들과 그 노드들을 잇는 물리적 회선인 링크들로 구성된 하나의 시스템을 말한다.

  • 즉, 하나의 subnet 을 하나의 망이라고 칭할 수 있다.

1-2. 네트워크 장비

  • L2 Switch

    • multiple access 를 위한 장비

    • 서버에는 network interface card 가 존재하고 그 내부에는 MAC 주소가 있음

    • 통신방식

      • MAC 테이블에 주소가 존재할 때, forwarding 한다.

      • MAC 테이블에 주소가 존재하지 않을 때, flooding 하여 응답하는 장비가 있다면, 그 포트에 장비가 있다고 인지하고 MAC 테이블에 등록한다.

    • 왜 multi access 를 위해서는 switch 장비를 써야하는가?

      • Collision domain 이란, half duplex 로 multi access(다중접속환경)을 구성했을 경우, 데이터를 동시에 전송했을 때, 충돌이 일어날 수 있는 영역을 말한다.

      • 허브를 통해 multi-access 환경을 만들었을 경우, 1계층 장비이기 때문에 신호를 증폭하여 collision domain 의 범위를 확장시킨다.

      • 반면에 switch 를 통해서 환경을 구성하였을 경우, 2계층 장비이기 때문에 신호 증폭도 시키지만, 동시에 2계층의 헤더를 열어 MAC 주소를 확인하고 전송하여 Port 별로 collision domain 을 나누기도 한다.

      • 이러한 이유 때문에 multi-access 환경을 구성할 경우, Switch 를 사용하는 것이 좋다.

  • Router

    • 서로 다른 네트워크 간의 통신을 중계한다.

    • router 처럼 3계층 이상의 네트워크 장비를 이용하여 망을 구성하게 되는데, 3계층의 역할은, 논리적 주소로 최초 출발지로부터 최종 목적지까지의 최적경로를 결정하는 것이다.

    • 통신방식

      • MAC 테이블에 주소가 존재할때, forwarding 한다.

      • MAC 테이블에 주소가 존재하지 않을 때, drop 하여 추가 조치없이 종료한다.

    • 라우팅 프로토콜을 활용하여 어떤 대역으로 패킷을 보내는 것이 최적 경로인지 학습한다.

  • 인터넷 통신

    • 외부 네트워크와 통신하기 위해서는 public ip 가 있어야 한다.

    • 라우터는 private ip 가 목적지일 경우, 인터넷 구간으로 보내지 않고 drop 해버린다.

    • 따라서 nat gateway 를 이용하여 private ip 를 public ip 로 변환해주어야 한다.

    • 자신이 속한 subnet 의 서버는 가상 스위치를 통해서 직접 통신할 수 있다.

    • 자신이 속하지 않은 subnet 의 서버 역시 가상 라우터를 통해서 직접 통신이 가능하다.

    • 그 이외에 0.0.0.0/0 (전체 대역)은 internet gateway 로 통신을 보내도록 학습해야한다.

1-3. Collision Domain & Broadcast Domain

  • Collision Domain

    • 네트워크에서 충돌이 발생할 수 있는 영역이다.

    • 물리적인 네트워크 세그먼트를 기준으로 결정된다.

    • 이 안에 있는 모든 장치들은 모두 동일한 물리적 세그먼트에서 데이터를 전송하고 수신하기 때문에 둘 이상의 장치가 동시에 데이터를 전송하면 충돌이 발생할 수 있다.

    • 이때 충돌이 발생하면 충돌된 패킷들은 모두 손실되고 재 전송되어야 한다.

    • 때문에 collision domain 의 범위는 가능한한 작을수록 좋다.

  • Broadcast Domain

    • 네트워크에서 브로드캐스트 패킷이 전파되는 영역

    • 라우터, 스위치 같은 네트워크 장비의 경계를 기준으로 결정된다.

    • 이 내부에서는 브로드캐스트 패킷이 전체 장비에게 전파되기 때문에 브로드캐스트 패킷의 양이 많아질수록 네트워크 성능이 저하될 수 있다.

    • 따라서 이 크기 역시 작을수록 네트워크 성능 향상에 도움이 된다.

  • 스위치

    • Collision Domain 과 Broadcast Domain 을 나누는 데 중요한 역할을 한다.

    • 물리적인 세그먼트 간에 패킷을 전달하면서, Collision Domain 을 분리해주고, Broadcast Domain 을 제한해준다.

  • 라우터

    • 브로드캐스트 패킷을 차단하고,

    • Broadcast Domain 을 분리해주며,

    • 다른 네트워크와 통신하면서 Collision Domain 도 분리해준다.

2. 망 분리를 해야하는 이유

  • 개인정보를 다루는 데이터베이스 서버 등을 위한 내부 망, 사용자가 접근하는 웹 서버를 위한 외부망으로 분리하여 구성합니다.

3. AWS

3-1. Region : 국가, 지역

3-2. Availability Zone

  • 물리적으로 나뉜 IDC

  • 데이터 센터를 의미한다. (ap-northeast-2a, ap-northeast-2b 등)

    • 한국은 ap-northeast-2

  • 서브넷을 구성할 때, AZ 를 함께 설정하는데, 재난 및 재해에 대비하여 Subnet 의 AZ 를 다르게 구성할 것이 권장된다.

  • 하나의 VPC 내에 구성된 Subnet 들은 물리적으로 다른 IDC 에 구성되더라도 사설망을 통해서 통신이 가능하다. 다른 AZ 간의 통신 비용이 발생하기도 하지만, 미비한 수준이다.

3-3. VPC

  • 하나의 region 에 종속되며 다수의 availability zone 을 설정 가능하다.

  • VPC IP 대역 내에서 망을 구성한다.

  • 사설 IP 대역으로 CIDR 을 설정하고 생성한다.

  • N개의 서브넷을 가질 수 있다.

3-3-1. VPC 관련 개념 정리

  • DHCP

    • 동적으로 IP 를 할당하는 곳

  • 라우팅 테이블

    • 서로 다른 대역대들 간에 통신을 할 수 있도록 정책을 관리해주는 곳

  • ACL(Access Control List)

    • 네트워크에서 패킷의 흐름을 제어하기 위한 보안 기술 중 하나.

    • 서브멧과 VPC 수준에서 설정

    • 인바운드, 아웃바운드 트래픽에 대한 제어

    • 서버의 보안을 강화하거나 특정 프로토콜이나 IP 주소를 차단하여 네트워크 보안을 유지할 수 있다.

  • Security Group vs ACL

    • 공통점 : 네트워크 보안을 강화하는 기술

    • 차이점

      • scope : 보안그룹은 EC2 인스턴스 단위로 적용되자, ACL 은 서브넷 혹은 VPC 단위로 적용된다. 즉, 보안그룹은 인스턴스 간의 트래픽을 제어하지만, ACL은 서브넷이나 VPC 간의 인바운드, 아웃바운드 트래픽을 제어한다.

        • state : 보안그룹은 상태를 유지하고, 허용된 패킷에 대한 응답을 자동으로 허용한다. 즉, 요청 패킷에 대한 응답 패킷이 허용된 경우에는 응답 패킷도 자동으로 허용된다. 하지만 ACL 은 stateless 하며, 요청 패킷과 응답 패킷을 모두 명시적으로 허용해야한다.

        • 우선순위

          • ACL 은 규칙 순서에 따라서 우선순위를 갖지만, 보안그룹은 우선순위가 없다.

        • 제어방식

          • 보안그룹은 허용 규칙만 설정할 수 있다. 하지만 ACL 은 차단규칙, 허용규칙을 모두 설정할 수 있다.

        • 기능

          • 보안그룹은 대부분 OSI 4계층에서 동작하며, IP, port, protocol 등을 기반으로 패킷을 필터링한다.

          • 하지만 ACL은 OSI 3계층에서 동작하며, IP주소, 프로토콜 등을 기반으로 패킷을 필터링 한다.

  • 요즘에는 주로 ACL보다는 보안그룹만으로 네트워크 보안 설정을 하는 편이다. 규칙이 많아질수록 복잡해지며, 유지보수 하기가 어려워진다.

3-4. Subnet

3-5. Routing Table

  • 서브넷이 다른 서브넷이나 외부망과 통신하기 위한 정보를 가지고 있다.

3-6. Internet Gateway

  • 외부망과의 연결을 담당

  • 서브넷에 속한 EC2가 외부와 통신을 하기 위해서는 자신의 라우팅 테이블에 설정된 정보를 제외한 모든 대역에 대해서 IGW로 통신 요청하도록 설정해두어야 한다.

    • 라우팅 테이블을 생성하고, 0.0.0.0/0 대역을 Iternet Gateway 로 매핑한다.

3-7. NAT Gateway

  • private subnet 에 있는 인스턴스들이 인터넷과 통신할 수 있도록 해준다.

  • public subnet 에 위치하며, public ip 주소를 가지고 있다.

  • 인스턴스의 요청 -> 인터넷으로 전달 -> 인터넷에서 온 응답-> 인스턴스로 전달

  • 자동으로 확장되기 때문에 고가용성, 확장성이 보장된다.

  • 보안에도 유리하다. 인터넷으로 직접적으로 연결되어있지 않기 때문에 인스턴스들은 인터넷에서 직접적으로 접근 받을 수 없다.

  • 인터넷 통신을 위해서 추가적으로 비용이 발생할 수는 있다.

  • 내부망은 별도의 라우팅 테이블을 생성해준다.

  • 내부망에서 라이브러리 설치 등 외부망에 접속해야할 때에는 Nat Gateway 를 활용한다.

4. 접근제어

  • Public Cloud 의 Official OS Image, Spring Framework 등을 사용하고 있다면, 이미 많은 부분의 보안성이 상당히 보장된 상태이다.

    • SYN Flooding

      • 커널에 SYN Cookie 가 활성화되어있어서 TCP SYN Flooding 공격이 유효하지 않는다.

      • AWS 공식적인 OS 이미지를 사용하고 있다면, 이미 보안패치가 되어있어서 신경쓰지 않아도 된다.

    • LAND, Smulf Attack : 라우터에 설정하여 막을 수 있다. 역시 AWS 를 사용한다면 신경쓰기 않아도 된다.

    • SQL Injection

      • PreparedStatement, or JPA 를 사용할 경우, pre-compile 과정을 거친다.

      • 이때 파라미터로 들어가는 값을 바인딩하여 사용한다.

      • SQL 문법이 아닌 컴파일 언어로 처리하기 때문에 문법적 의미를 가지지 않으므로, 바인딩 변수에 query 를 넣더라도 의미있는 쿼리로 동작하지 않는다.

  • 따라서 서버 보안패치 등은 AWS 에 위임하고, 네트워크 보안과 계정 보안(IAM)에만 집중하면 된다.

  • AWS Security Group 을 통해서 특정 IP, Port 에 대해서 접근 제어를 할 수 있다.

5. 참고

5-1. CIDR

  • Class vs. CIDR

  • 기존에는 주소 Class 를 이용하여 IP 주소를 할당했다.

  • 이 체제에서는 각 클래스마다 사용할 수 있는 IP 주소의 개수가 고정되어있어서 발생하는 많은 문제점들이 있었다.

    • 대규모 네트워크에서 IP 주소 낭비됨

    • 주소 클래스마다 IP 주소 범위가 다른 크기를 가지고 있어서 관리도 복잡합

  • 이를 해결하기 위해 등장한 개념이 바로 CIDR 방식이다.

    • Classless Inter-Domain Routing : 인터넷 주소 체계에서 IP 주소를 좀 더 효율적으로 할당하기 위한 방법이다.

    • IP 주소의 프리픽스 길이를 사용하여 주소를 할당한다. 이 프리픽스는 네트워크 부분의 비트수를 의미.

    • 결국, CIDR = IP 주소 + 프리픽스의 길이

    • 예를 들자면, 192.168.0.0/24라는 CIDR 주소는 192.168.0.0부터 192.168.0.255까지의 IP 주소 범위를 의미

    • 장점

      • 주소 클래스와 상관 없이 IP 주소를 할당하는 것이 가능하다. 더 효율적으로 사용 가능하다.

      • IP 주소 관리도 더욱 간편해진다.

Last updated