프로토콜
시스템 간에 통신을 하기 위한 규약(약속)
- 구문 : 송수신 데이터 포맷
- 의미 : 데이터의 각 항목의 가지는 의미
- 타이밍 : 데이터 송수신 동작방식을 정의하는 것
OSI 7Layer
기능에 따라 계층적으로 표준화 ~ 계층적으로 나누어진 여러 프로토콜들을 조합하여 그 목적을 수행하는 방식 (분할 정복)
각 계층별로 표준화를 함으로써 상하위 계층 간에 인터페이스만 충족시켜주면 다양한 제조사들에 의한 독자적 계층별 프로토콜의 구현 및 발전 가능
Physical Layer (물리 계층, L1)
물리적 장치의 전기적, 전자적 연결에 대한 명세
디지털 데이터를 전기적, 광학적 신호로 변환하여 입출력을 담당
주소정보가 없다 ~ 목적지 인식할 수 없고 전기적 신호만을 연결된 모든 노드에게 전달
물리 계층의 데이터 단위(PDU) = bit (signal)
* PDU (Protocol Data Unit)
- 주요 장비
- Hub
들어온 모든 신호를 연결된 모든 포트로 전달하는 중계 장치
Dummy Hub (2계층의 Switching Hub와 구별) - Repeater
감쇠된 전송신호를 새롭게 재생하여 다시 전달하는 재생 중계 장치
- Hub
- 허브(Dummy Hub) 환경에서의 스니핑
더미허브는 전달받은 패킷을 연결된 모든 노드로 전송하기 때문에 허브에 연결되어 있는 모든 노드는 스니퍼를 통한 스니핑이 용이
(NIC(Network Interface Card)의 기본 동작모드가 자신을 목적지 주소로 하는 패킷(MAC주소)이 아니면 모두 폐기)
NIC의 동작모드를 무차별 모드(Promiscuous Mode)로 설정하면 자신이 목적지가 아닌 패킷도 모두 수신하기 때문에 손쉽게 스니핑 가능 <-ifconfig eth1 promisc
Data Link Layer (데이터링크 계층, L2)
Node-To-Node Delivery, 인접한 노드간의 신뢰성있는 프레임 전송을 담당
MAC주소를 이용한 인접노드 간의 통신
목적지 노드에 대한 물리적 주소가 필요하며 NIC의 MAC주소가 해당 역할 수행
데이터링크 계층의 데이터 단위 = Frame
대표적 프로토콜 : Ethernet, TokenRing, FDDI, X.25, Frame Relay
- 신뢰성 있는 전송
오류, 손실 없는 데이터의 안전한 전송 보장 (데이터 링크 컨트롤)- 흐름제어 (Flow Control)
송신노드가 수신노드의 처리속도를 고려하여 이를 초과하지 않도록 전송 제어
수신노드가 수신확인응답을 송신노드에 제공함으로써 수행- 정지-대기(Stop and Wait) 방식
송신측에서 프레임 전송 후 ACK 받을 때까지 대기 - 슬라이딩 윈도우(Sliding Window) 방식
송신측에서 ACK 받기 전에 수신 가능한 범위 내에서 여러 프레임 전송
- 정지-대기(Stop and Wait) 방식
- 오류제어 (Error Control)
주파수 혼란, 감쇠, 잡음 등으로 인한 오류, 손실 발생 시 이를 해결하기 위한 제어방식- 후진 오류 수정방식(BEC, Backward Error Correction)
데이터 전송 시 오류 검출할 수 있는 부가정보를 함께 전송하여 수신측에서 이를 점검하여 오류 발생 시 재전송 요청하는 방식. ARQ(Automatic Repeat Request) - 전진 오류 수정방식(FEC, Forward Error Correction)
재전송 불필요. 데이터 전송 시 오류의 검출 및 수정까지 가능한 부가 정보를 담아서 보내는 방식
- 후진 오류 수정방식(BEC, Backward Error Correction)
- 회선제어 (Line Control)
Point-to-Point 또는 Multipoint 회선 구성 방식과 단방향(simplex), 반이중(half-duplex), 전이중(full-duplex) 등의 전송 방식에 따라 사용되는 전송링크에 대한 제어 규범
- 흐름제어 (Flow Control)
- 주요 장비
- L2 Switch
내부적으로 MAC Address Table을 가지고 이를 참조하여 목적지 MAC 주소의 포트에 연결된 노드에게만 패킷 전송
스위치 환경에서 특정 포트를 모니터링하고자 한다면 모니터링 포트 또는 네트워크 트래픽을 모니터링할 수 있는 탭(TAP) 장비를 통해 패킷을 복제(mirroring)해서 트래픽 분석 장비로 전달
스위치 환경에서는 기본적으로 목적지로만 패킷을 전송하므로 스니핑이 불가능 (하지만 방법 있다) - Bridge
물리적으로 떨어진 동일한 LAN을 연결해주는 장비
- L2 Switch
- 스위치 환경에서의 스니핑 공격 기법
- 스위치 재밍(Switch Jamming) / MAC Flooding 공격
Source Mac 주소를 계속 변경하면서 패킷을 지속적으로 전송하여, 스위치 MAC Address Table의 버퍼를 오버플로우 시켜서 스위치가 허브처럼 동작하게 강제적으로 만드는 기법
(Fail Safe 정책 -> 스위치는 장애가 발생하면 더미허브처럼 연결된 모든 노드에게 패킷을 전송)
* fail safe (장애 발생시 모든 기능 허용 ~ 가용성>보안성)
fail secure (장애 발생시 모든 기능 차단 ~ 보안성>가용성) - ARP 스푸핑 공격
공격자가 특정 호스트의 MAC 주소를 자신의 MAC주소로 위조한 ARP Reply 패킷을 만들어 희생자에게 지속적으로 전송하면 희생자의 ARP Cache Table에 특정 호스트의 MAC 정보가 공격자의 MAC 정보로 변경됨. 이를 통해 희생자로부터 특정 호스트로 나가는 패킷을 공격자로 향하도록 하여 스니핑
희생자와 특정 호스트간의 송수신 패킷을 모두 스니핑하기 위해서는 희생자와 특정 호스트 모두 ARP 스푸핑을 수행
희생자들이 스니핑을 인식하지 못하고 정상적인 통신이 될 수 있도록 IP Forward 기능을 활성화
* ARP Reply - ARP 응답에 대한 송신자 인증이 없다는 구조적 취약점 존재 - ARP 리다이렉트 공격
ARP 스푸핑 공격의 일종. 공격자가 자신이 라우터/GW인 것처럼 MAC주소를 위조하여 ARP Reply 패킷을 대상 네트워크에 지속적으로 브로드캐스트하면, 해당 네트워크의 모든 호스트의 ARP Cache Table에 라우터/GW의 MAC 정보가 공격자의 MAC 정보로 변경 => 호스트에서 라우터로 나가는 패킷을 공격자가 스니핑! - ICMP 리다이렉트 공격
ICMP Redirection 메시지는 호스트-라우터 또는 라우터 간에 라우팅 경로를 재설정하기 위해 전송
공격자가 이를 악용하여 특정IP(대역)로 나가는 패킷의 라우팅 경로를 자신의 주소로 위조한 ICMP Redirect 메시지를 생성하여 희생자에게 전송함으로써 희생자의 라우팅 테이블을 변조하여 패킷을 스니핑 - 스위치의 SPAN/Port Mirroring 기능 이용
Monitoring Port (SPAN Port)는 관리 목적을 위해 스위치 장비에서 제공해주는 포트로 스위치를 통과하는 모든 패킷을 복제해서 전달.
스위치를 통과하는 모든 트래픽을 볼 수 있는 기능으로 특정 포트에 분석 장비를 접속하고 다른 포트의 트래픽을 분석 장비로 자동 복사해주는 기술
관리 소홀로 인해 공격자가 물리적으로 해당 포트에 접근할 수 있다면 손쉽게 패킷 스니핑 가능
- 스위치 재밍(Switch Jamming) / MAC Flooding 공격
Network Layer (네트워크 계층, L3)
End-To-End Delivery. 종단 노드 간의 라우팅을 담당 (Host-To-Host Delivery)
라우팅이란 라우팅 알고리즘(프로토콜)에 의해 목적지로 전송하기 위한 최적의 경로를 설정하고 패킷을 교환하는 기능을 제공하는 것
최종 목적지 노드를 찾아가기 위해서는 노드에 대한 논리적 주소가 필요한데 TCP/IP 프로토콜에서는 IP주소가 이 역할을 수행
네트워크 계층의 데이터 단위 = 패킷
대표적 프로토콜 : IP(TCP/IP), IPX(Novel Netware)
- 주요 장비 - 라우터 (L3 Switch)
라우팅(최적의 경로를 선정해서 패킷을 포워딩)을 담당하는 장비
데이터 링크 계층의 브로드캐스트와 멀티캐스트를 포워딩하지 않으며, 서로 다른 VLAN 간에 통신을 가능하게 하고, 기본적인 보안 기능과 QoS 관련 기능을 지원하는 장비
* 기본적 보안 기능 : ACL(Access Control List)를 이용해 접근 제어 설정
* QoS : 트래픽 조절
Transport Layer (전송 계층, L4)
End-To-End Reliable Delivery. 종단 노드 간의 신뢰성 있는 데이터 전송을 담당
각 end 노드의 해당 process간 신뢰성 있는 데이터 전송을 담당 (Process-To-Process Communication)
목적지 node(process)를 찾아가기 위해 process를 식별하기 위한 논리적 주소가 필요 ~ TCP/IP 프로토콜에서는 Port Address가 이 역할을 수행
전송 계층의 데이터 단위 = Segment
대표적 프로토콜 : TCP(TCP/IP), UDP, SCTP, SPX(Novel Netware)
- 신뢰성 있는 데이터 전송을 보장하기 위한 기능
- 분할 & 재조합 (Sementation & Reassembly)
조건에 따라 원본 데이터를 전송 가능한 Segment(단편) 단위로 분할하여 전송 -> 목적지에서 이를 재조합(Reassembly)하여 원본 데이터 복원 - 연결제어 (Connection Control)
연결지향과 비연결지향 방식을 제공
* 연결지향 : 양 호스트 사이에 데이터 송수신이 이루어지기 전에 마치 물리적 연결통로가 설정되어 있는 것처럼 동작하도록 필요한 정보를 주고받는 연결설정과 연결종료 과정을 거치는 프로토콜의 특성 (ex: TCP)
비연결지향 : 연결설정, 종료 과정이 없는 프로토콜의 특성 (ex: UDP) - 흐름제어 (Flow Control)
상호간에 수신할 수 있는 만큼만 전송해서 데이터의 손실이 발생하지 않도록 하는 제어 방식
데이터링크 계층은 인접노드 간에 흐름제어를 했다면, 전송계층에서는 종단 노드 간에 흐름제어를 수행 (범위가 넓음) - 오류제어 (Error Control)
종단 노드 간 전송 중 오류 발생 시 이를 교정 - 혼잡제어 (Congestion Control)
네트워크 혼잡도를 계산하여 전송량을 제어 (ACK가 오지 않으면 데이터 손실로 판단)
- 분할 & 재조합 (Sementation & Reassembly)
- 주요 장비
L4 Switch : SLB(Server Load Balancing, 서버 트래픽 부하분산)과 failover(장애극복) 기능 제공
Session Layer (세션 계층, L5)
Application 간 논리적인 연결인 세션의 생성, 관리 및 종료를 담당
Presentation Layer (표현 계층, L6)
데이터 표현방식 변환을 담당
인코딩/디코딩, 압축/압축해제, 암호화/복화화 등을 담당
Application Layer (응용 계층, L7)
사용자가 네트워크에 접근할 수 있는 인터페이스를 담당
네트워크 서버/클라이언트 프로그램
응용 계층 데이터 단위 = Data, Msg
OSI 모델 데이터 교환 방식
- Encapsulation / Decapsulation
상위계층의 데이터가 하위계층으로 보내지면, 하위계층 프로토콜은 자신의 기능 수행을 위해 필요한 부가정보(헤더)를 추가해서 새롭게 전송메시지를 완성 => 캡슐화
수신측에서는 상위계층으로 데이터를 보낼 때 해당 계층의 헤더정보를 확인한 후 이를 제거하고 상위계층으로 데이터를 보낸다 => 역캡슐화 - Multiplexing / Demultiplexing
다중화
하나의 기능(매체)을 여러 영역에서 동시에 사용하는 기법
상위계층의 여러 프로토콜들이 하위계층의 하나의 프로토콜을 이용하여 데이터를 전달하는 방식
수신측에서 상위 프로토콜을 구별할 수 있도록 프로토콜 식별자 정보를 헤더에 추가
역다중화
공유하는 기능(매체)으로부터 개별 영역으로 분할하는 기법
하위계층의 프로토콜이 여러 상위계층의 프로토콜 중 하나를 식별하여 데이터를 전달하는 방식
상위 프로토콜을 구별하기 위한 프로토콜 식별자정보(다중화시에 헤더에 설정된 정보)를 이용
'보안' 카테고리의 다른 글
보안기사 - IPv4, IPv6, ICMP (0) | 2020.04.20 |
---|---|
보안기사 - TCP/IP 프로토콜, ARP/RARP 프로토콜 (0) | 2020.04.20 |
보안기사 - 시스템 문제편 (0) | 2020.04.19 |
보안기사 - 윈도우 서버의 계정 관리, 서비스 관리, 로그 관리(감사정책) (0) | 2020.04.18 |
보안기사 - UNIX/Linux 서버 취약점 (0) | 2020.04.18 |