교육

[팔로 알토 네트웍스] 네트워크 보안 기초 #4

김구티2 2024. 5. 6. 12:27

[4주차] 패킷 캡슐화 및 라이프사이클 

학습목표 

1. 패킷 캡슐화 및 라이프사이클 프로세스를 인식한다.
2. 프로토콜을 식별하고 OSI 및 TCP 모델 계층을 정의한다.
3. 데이터 캡슐화 프로세스의 5단계를 설명한다.
4. 전송 계층 프로토콜, 포트 및 패킷 필터링 절차를 검토한다.

[4-1] 패킷 라이프사이클

패킷 캡슐화 및 라이프사이클
회선 교환 네트워크에서 전용 물리 회로 경로는 각 통신 세션에 대해 네트워크를 통해 송신자와 수신자 사이에 설정, 유지 및 종료된다. 인터넷이 개발되기 전에는 전화 회사 네트워크와 같은 대부분의 통신 네트워크가 회선 교환되었다. 인터넷은 수억 개의 라우터와 수십억 개의 서버 및 사용자 엔드포인트로 구성된 패킷 교환 네트워크다. 패킷 교환 네트워크에서 장치는 네트워크를 통해 송신자와 수신자 사이에 패킷을 전송하기 위해 통신 링크에서 대역폭을 공유한다. 이러한 유형의 네트워크는 회선 교환 네트워크보다 오류와 혼잡에 더 탄력적이다.

 

네트워크를 통해 데이터를 전송해야 하는 애플리케이션(ex. 서버에서 클라이언트 컴퓨터로)은 먼저 데이터 블록을 생성하여 서버의 TCP 스택으로 전송한다. TCP 스택은 데이터 블록을 서버의 출력 버퍼에 넣고 서버 운영 체제가 허용하는 개별 TCP 블록(세그먼트)의 최대 세그먼트 크기(MSS)를 결정한다. 그런 다음 TCP 스택은 데이터 블록을 적절한 크기의 세그먼트(ex. 1460 바이트)로 나누고 TCP 헤더를 추가하여 서버의 IP 스택으로 세그먼트를 전송한다. IP 스택은 TCP 세그먼트(지금은 IP 패킷이라고 함)에 소스(발신자)와 수신처(수신자) IP 주소를 추가하고 네트워크를 통해 전송할 준비가 된 발신 메시지를 가지고 있음을 서버 운영 체제에 알린다. 서버 운영 체제가 준비되면 IP 패킷은 네트워크 어댑터로 전송되며, 네트워크 어댑터는 IP 패킷을 비트로 변환하여 네트워크를 통해 메시지를 전송한다.

 

대상 컴퓨터로 이동하는 동안, 패킷은 일반적으로 대상 컴퓨터에 도달하기 전에 여러 네트워크 및 보안 장치를 통과하며, 여기서 설명된 캡슐화 프로세스는 반대의 경우다.

 

OSI 및 TCP/IP 모델

OSI(Open Systems Interconnection) 및 TCP/IP(Transmission Control Protocol/Internet Protocol) 모델은 네트워크 통신 및 상호 운용성을 위한 표준 프로토콜을 정의한다. 계층화된 접근 방식을 사용하는 OSI 및 TCP/IP 모델은 다음과 같은 특징을 갖는다.

 

① 커뮤니케이션 프로세스의 일반적인 기능을 명확히 한다.
② 복잡한 네트워킹 프로세스를 단순한 하위 계층 및 구성 요소로 축소한다.
③ 표준 인터페이스를 통한 상호 운용성을 증대한다.
④ 벤더가 프로토콜 스택 전체를 재구축하는 대신, 단일 계층에서 개별 기능을 변경할 수 있도록 지원한다.
⑤ 논리적 문제 해결을 용이하게 한다.

 

국제 표준화 기구(ISO)에 의해 정의된 OSI 모델은 다음과 같은 7개의 계층으로 구성된다.

 

① 애플리케이션(L7)

이 계층은 통신 파트너의 가용성을 식별 및 설정하고, 자원 가용성을 결정하며, 통신을 동기화한다. 애플리케이션 계층에서 기능하는 프로토콜은 다음을 포함한다.

⑴ FTP(File Transfer Protocol). TCP 포트 20(데이터 포트) 및 21(제어 포트)에서 한 시스템에서 다른 시스템으로 파일을 복사하는 데 사용된다.
⑵ HTTP(Hypertext Transfer Protocol). TCP 포트 80의 웹 서버와 웹 브라우저 간 통신에 사용된다.
⑶ HTTPS(Hypertext Transfer Protocol Secure).TCP 포트 443(및 8443 등)의 웹 서버와 웹 브라우저 간의 SSL/TLS(Secure Sockets Layer/Transport Layer Security) 암호화된 통신에 사용된다.
⑷ IMAP(Internet Message Access Protocol). TCP 및 UDP 포트 143의 원격 메일 서버에서 이메일 클라이언트가 이메일에 액세스, 관리 및 동기화할 수 있도록 하는 전자 메일 프로토콜이다.
⑸ POP3(Post Office Protocol Version 3). 전자우편 클라이언트가 TCP 포트 110 상의 원격 메일 서버에서 전자우편에 접근할 수 있도록 하는 전자우편 검색 프로토콜이다.
⑹ SMTP(Simple Mail Transfer Protocol). TCP/UDP 포트 25에서 인터넷을 통해 이메일을 주고 받기 위해 사용된다.
⑺ SNMP(Simple Network Management Protocol). TCP/UDP 포트 161(에이전트) 및 162(매니저) 상의 관리국에 폴링 스테이션별 네트워크 정보 수집 및 트랩(또는 경보) 전송에 사용된다.
⑻ Telnet. TCP/UDP 포트 23의 시스템 리소스에 대한 원격 액세스를 위한 터미널을 제공한다.

 

② 프레젠테이션(L6)

이 계층은 한 시스템의 애플리케이션 계층에서 전송된 데이터가 수신 시스템의 애플리케이션 계층과 호환되도록 하기 위한 코딩 및 변환 기능(데이터 표현, 문자 변환, 데이터 압축 및 데이터 암호화 등)을 제공한다. 프레젠테이션 계층에서 기능하는 프로토콜은 다음과 같다.

⑴ ASCII(American Standard Code for Information Interchange). 128개의 문자로 구성된 영어 알파벳을 기반으로 한 문자 부호화 방식이다.
⑵ EBCDIC(Extended Binary-Coded Decimal Interchange Code). 메인프레임 및 미드레인지 컴퓨터에 주로 사용되는 8비트 문자 인코딩 방식이다.
⑶ GIF(Graphics Interchange Format). 최대 256가지 색상을 허용하며, 이미지 또는 로고(사진은 사용하지 않음)에 적합한 비트맵 이미지 형식이다.

⑷ JPEG(Joint Photographic Experts Group). 사진의 저장 및 전송을 위한 사진 압축 방식이다.
⑸ MPEG(Motion Picture Experts Group). 오디오 및 비디오 파일 저장 및 전송에 사용되는 오디오 및 비디오 압축 방식이다.

 

③ 세션(L5)

이 계층은 연결 설정, 데이터 전송 및 연결 해제를 포함한 네트워크 시스템 간의 통신 세션(서비스 요청 및 서비스 응답)을 관리한다. 세션 계층에서 기능하는 프로토콜은 다음과 같다.

⑴ NFS(Network File System). 유닉스 기반 TCP/IP 네트워크의 원격 리소스에 대한 투명한 사용자 액세스를 지원한다.
⑵ RPC(Remote Procedure Call). 클라이언트-서버 네트워크 리다이렉션 프로토콜이다.
⑶ SSH(Secure Shell). 클라이언트와 서버 간에 암호화된 터널을 설정한다.
⑷ SIP(Session Initiation Protocol). 대규모 IP 기반 네트워크를 통한 실시간 통신(음성, 비디오, 텍스트 등)의 설정, 관리 및 종료를 위한 개방형 시그널링 프로토콜 표준이다.

 

④ 전송(L4)

이 계층은 투명하고 신뢰할 수 있는 데이터 전송 및 종단 간 전송 제어를 제공한다. 특정 전송 계층 기능은 다음을 포함한다.
⑴ 흐름제어: 송신 장치가 처리할 수 있는 데이터보다 더 많은 데이터를 송신하지 않도록 하여 장치 간의 데이터 전송을 관리한다.
⑵ 다중화: 여러 애플리케이션의 데이터를 단일 물리적 링크를 통해 동시에 전송할 수 있도록 한다.
⑶ 가상 회로 관리: 가상 회로를 설정, 유지 및 종료한다.
⑷ 에러 검사 및 복구: 전송 오류를 감지하고, 발생한 오류를 해결하기 위해 데이터 재전송 요청 등의 조치를 취한다.

 

애플리케이션 및 서비스에 할당된 TCP 및 UDP 포트 번호는 전송 계층에서 정의된다. 전송 계층에서 기능하는 프로토콜은 다음을 포함한다.
⑴ TCP(Transmission Control Protocol). 데이터의 신뢰성 있는 전달(수신된 세그먼트를 승인하고 누락되거나 손상된 세그먼트의 재전송을 요청함)을 제공하는 연결 지향(네트워크 장치 간의 직접 연결) 프로토콜이다. TCP 연결은 3-way 핸드셰이크를 통해 설정된다. 연결 설정, 승인 및 오류 수정과 관련된 추가적인 오버헤드는 TCP가 일반적으로 UDP와 같은 비연결 프로토콜보다 느리다는 것을 의미한다.
⑵ UDP(User Dataagram Protocol). 데이터의 최상의 전달(수신된 데이터그램은 승인되지 않으며 누락되거나 손상된 데이터그램은 요청되지 않음)을 제공하는 비연결(네트워크 장치 간의 직접 연결은 데이터그램이 전송되기 전에 설정되지 않음) 프로토콜이다. UDP에는 연결 설정, 승인, 시퀀싱 또는 오류 검사 및 복구와 관련된 오버헤드가 없다. UDP는 패킷 손실에 민감하지 않고 단편화될 필요가 없는 한 빠른 전달이 필요한 데이터에 이상적이다. UDP를 사용하는 애플리케이션에는 DNS, SNMP, 스트리밍 오디오 또는 비디오가 있다.
⑶ SCTP(Stream Control Transmission Protocol). 혼잡 제어(TCP와 유사)를 통해 신뢰성 있는 시퀀스 내 전송을 보장하는 메시지 지향 프로토콜(UDP와 유사)이다.

 

⑤ 네트워크(L3)

이 계층은 동일한 네트워크 상의 시스템 간 또는 상호 연결된 네트워크 상에서 데이터를 전송할 수 있도록 하는 라우팅 및 관련 기능을 제공한다. 라우팅 프로토콜은 이 계층에서 정의된다. 네트워크 상의 장치의 논리적 주소 지정은 IP와 같은 라우팅된 프로토콜을 사용하여 이 계층에서 수행된다.

 

⑥ 데이터 링크(L2)

이 계층은 메시지가 물리적 네트워크 링크를 통해 적절한 장치로 전달되도록 보장한다. 또한, 이 계층은 개별 장치 간의 데이터 송수신에 사용되는 네트워킹 프로토콜(ex. 이더넷)을 정의하고, 위에 나열된 계층의 메시지를 전송을 위해 프레임으로 포맷하며, 점대점 동기화 및 오류 제어를 처리하고 링크 암호화를 수행할 수 있다. 다른 계층에서 작동하는 다층 스위치도 존재하기야 하지만, 스위치는 일반적으로 OSI 모델의 계층 2에서 작동한다. 한편, 데이터 링크 계층은 두 개의 하위 계층으로 더 나뉜다.

⑴ LLC(Logical Link Control). LLC 하위 계층은 MAC 하위 계층을 위한 인터페이스를 제공하고, 네트워크 계층으로 전달되거나 물리 계층으로 전달되는 프레임의 제어, 시퀀싱 및 확인을 관리하며, 타이밍 및 흐름 제어를 관리한다.
⑵ MAC(Media Access Control). MAC 하위 계층은 프레이밍을 담당하며, CRC(Cyclic Redundancy Check)를 이용하여 에러 제어를 수행하고, MAC 주소를 식별하며, 미디어 접근을 제어한다.

 

⑦ 피지컬(L1)

이 계층은 한 장치에서 다른 장치로 네트워크 매체(ex. 케이블)를 통해 비트를 주고 받는다. 네트워크 토폴로지, 케이블 및 커넥터, 인터페이스 유형 등 네트워크의 전기적, 기계적 및 기능적 요구 사항과 물리적 매체를 통해 전송될 수 있는 비트를 전기적 신호로 변환하는 프로세스를 지정한다.

TCP/IP 모델은 원래 미국 국방부에서 개발한 것으로, OSI 모델보다 앞서 개발되었다. OSI 모델이 네트워킹 과정을 논리적으로 설명하는 데 사용되는 이론적 모델인 반면, TCP/IP 모델은 프레임 구성과 같은 실제 네트워킹 요구 사항을 정의한다. TCP/IP 모델은 4개의 계층으로 구성된다.

 

① 애플리케이션(L4)

이 계층은 네트워크 응용 프로그램과 프로세스로 구성되며, OSI 모델의 Layer 5~7에 느슨하게 대응된다.


② 전송(L3)

이 계층은 엔드 투 엔드 전달을 제공하며, OSI 모델의 레이어 4에 해당한다.


③ 인터넷(L2)

이 계층은 IP 데이터그램과 라우팅을 정의하며, OSI 모델의 계층 3에 해당한다.


④ 네트워크 액세스(L1)

링크 계층(Link layer)이라고도 하는 이 계층은 물리적 네트워크에 액세스하기 위한 루틴을 포함하며, OSI 모델의 계층 1 및 2에 해당한다.

 

데이터 캡슐화

OSI 및 TCP/IP 모델에서 데이터는 가장 높은 계층(OSI 모델에서 L7, TCP/IP 모델에서 L4)에서 각 계층을 통해 가장 낮은 계층(L1)으로 하향 전달된다. 그런 다음, 네트워크 매체를 통해 목적지 노드로 전송되고, 여기서 가장 낮은 계층에서 가장 높은 계층으로 상향 전달된다. 각 계층은 바로 위 및 아래의 인접한 계층과만 통신한다. 이러한 통신은 바로 아래 계층의 데이터 섹션에서 바로 위 계층으로부터 프로토콜 정보를 래핑하는 데이터 캡슐화(또는 데이터 은닉)로 알려진 프로세스를 통해 이루어진다.

 

프로토콜 데이터 유닛(PDU)은 프로토콜의 특정 계층에서 데이터의 단위를 기술한다. 예를 들어, OSI 모델에서 1계층의 PDU는 비트, 2계층의 PDU는 프레임, 3계층의 PDU는 패킷, 4계층의 PDU는 세그먼트 또는 데이터그램으로 알려져 있다. 클라이언트 또는 서버 애플리케이션이 네트워크를 통해 데이터를 전송할 때, 데이터가 프로토콜 스택을 통과할 때 헤더(및 트레일러)가 그 아래의 인접 계층으로부터 각각의 데이터 패킷에 추가된다. 헤더(및 트레일러)는 프로토콜 스택을 통과할 때 수신단에서 각각의 데이터 패킷에서 제거된다.

 

라우팅 및 라우팅 프로토콜
IP와 같은 라우팅된 프로토콜은 라우팅 프로토콜을 사용하여 이러한 패킷을 네트워크 간에 전송할 수 있도록 하는 라우팅 정보를 가진 패킷에 주소를 지정한다. 라우팅 프로토콜은 OSI 모델의 네트워크 계층에서 정의되며, 라우터가 네트워크에서 서로 통신하는 방법을 지정한다. 라우팅 프로토콜은 정적일 수도 있고 동적일 수도 있다.

 

정적 라우팅 프로토콜은 라우터나 다른 네트워크 장치에서 수동으로 경로를 생성하고 업데이트해야 한다. 정적 경로가 중단된 경우, 대체 경로가 구성되지 않은 한, 트래픽을 자동으로 경로를 변경할 수 없다. 또한 경로가 혼잡한 경우, 트래픽을 덜 혼잡한 대체 경로를 통해 자동으로 경로를 변경할 수 없다. 정적 라우팅은 매우 작은 네트워크에서만 또는 매우 제한적이고 특수한 경우의 라우팅 시나리오에 적합하다. 그러나 정적 라우팅은 대역폭 요구 사항이 낮고, 일부 내장 보안이 존재한다.

 

동적 라우팅 프로토콜은 자동으로 새로운(또는 대체) 경로를 학습하고 목적지까지 가장 좋은 경로를 결정할 수 있다. 라우팅 테이블은 현재 라우팅 정보와 함께 주기적으로 업데이트된다. 동적 라우팅 프로토콜은 다음과 같이 추가로 분류된다.

 

① 거리 벡터

거리 벡터 프로토콜은 거리(홉 카운트 또는 다른 메트릭)와 벡터(출력 라우터 인터페이스)의 두 가지 요소를 기반으로 라우팅 결정을 내린다. 토폴로지 변화에 대해 주기적으로 피어 또는 이웃에 알린다. 네트워크의 모든 라우터가 최신 정보로 라우팅 테이블을 업데이트하는 데 필요한 시간인 수렴(Convergence)은 거리 벡터 프로토콜에 중요한 문제가 될 수 있다. 수렴이 없으면 네트워크의 일부 라우터는 토폴로지 변화를 모를 수 있으며, 이로 인해 라우터가 잘못된 목적지로 트래픽을 전송한다. 수렴 중에 라우터 간에 라우팅 정보가 교환되고 네트워크 속도가 상당히 느려지게 된다. 거리 벡터 프로토콜을 사용하는 네트워크에서는 수렴에 몇 분이 걸릴 수 있을 것이다.

 

RIP(Routing Information Protocol)는 홉 카운트를 라우팅 메트릭으로 사용하는 거리 벡터 라우팅 프로토콜의 대표적 예시다. 패킷이 다양한 라우터 노드 사이에서 튕겨져 나가는 것에 효과적으로 갇히는 라우팅 루프를 방지하기 위해 RIP는 15의 홉 제한을 구현하며, 이는 RIP가 지원할 수 있는 네트워크 크기를 제한한다. 데이터 패킷이 소스와 목적지 사이의 15개의 라우터 노드(홉)를 통과한 후에는 목적지에 도달할 수 없을 것이다. RIP는 홉 제한 외에도 라우팅 루프를 방지하기 위해 다음과 같은 네 가지 메커니즘을 사용한다.

⑴ 스플릿 호라이즌: 라우터가 경로가 학습된 동일한 인터페이스를 통해 경로를 다시 알리지 못하도록 한다.
⑵ 트리거된 업데이트: 변경 사항이 감지되면 RIP 업데이트를 보내기 위해 30초를 기다리는 대신, 업데이트가 즉시 전송된다.
⑶ 라우트 포이즈닝: 잘못된 경로의 홉 수를 16으로 설정하여, 경로에 도달할 수 없다는 것을 효과적으로 알린다.
⑷ 보류 타이머: 라우터가 목적지에 연결할 수 없다는 정보를 처음 받았을 때 타이머를 시작하게 한다. 해당 목적지에 대한 후속 업데이트는 타이머가 만료될 때까지 허용되지 않는다. 이 타이머는 또한 플랩핑과 관련된 문제를 방지하는 데 도움이 된다. 플랩핑은 경로(또는 인터페이스)가 짧은 시간 동안 상태를 반복적으로 변경할 때 발생한다.

 

② 링크 상태

링크 상태 프로토콜은 모든 라우터가 전체 네트워크의 완전한 지도 또는 라우팅 테이블을 계산하고 유지할 것을 요구한다. 링크 상태 프로토콜을 사용하는 라우터는 네트워크의 다른 모든 라우터에 인접한 연결 또는 링크 상태에 대한 정보를 포함하는 업데이트를 주기적으로 전송한다. 링크 상태 프로토콜은 계산 집약적이지만 목적지까지의 가장 효율적인 경로를 계산할 수 있다. 링크 속도, 지연, 부하, 신뢰성 및 비용(임의로 할당된 가중치 또는 메트릭)과 같은 수많은 요소를 고려한다. 링크 상태 프로토콜에서는 수렴이 매우 빠르게, 수 초 이내에 발생한다.


OSPF(Open Shortest Path First)는 대기업 네트워크에서 자주 사용되는 링크 상태 라우팅 프로토콜의 대표적인 예시다. OSPF는 단일 AS(autonomous system) 내에서 네트워크 트래픽을 라우팅한다. OSPF 네트워크는 32비트 영역 식별자에 의해 식별되는 영역으로 나뉜다. 영역 식별자는 네트워크 IP 주소에 대응할 수 있고(*반드시 그럴 필요는 없지만..), 충돌 없이 IP 주소를 복제할 수 있다.

 

③ 경로 벡터

경로 벡터 프로토콜은 이름부터 이미 거리 벡터 프로토콜과 유사하지만, 거리 벡터 프로토콜에서 제한된 홉 수와 관련된 확장성 문제는 없다. 경로 벡터 프로토콜의 각 라우팅 테이블 항목에는 동적으로 업데이트되는 경로 정보가 포함된다.

 

BGP(Border Gateway Protocol)는 분리된 자율 시스템 간에 사용되는 경로-벡터 프로토콜의 대표적 예시다. BGP는 매우 큰 개인 IP 네트워크뿐만 아니라 인터넷 서비스 제공자(ISP) 및 네트워크 서비스 제공자(NSP)에 의해 사용되는 핵심 프로토콜이라 할 수 있다.

728x90