본문 바로가기

자격증/정보보안기사

[네트워크 보안] IP 프로토콜

1. 특징

 1) 비연결형 프로토콜 → 연결 상태 유지 X → 전송 순서 보장 X

 2) 비신뢰적 프로토콜 → 흐름 / 순서 / 오류 제어 수행 X

 3) 라우팅 담당 프로토콜 

  □ 라우팅 알고리즘을 통한 최적의 경로 선정

  □ 패킷 포워딩 수행

 

2. 구조

 1) 32 bit * 6 행

 2) 1행

VER(4bit) HLEN(4bit) Service Type(8bit) Total Length(16bit)

  □ VER : IP 버전 

  □ HLEN : 헤더 길이 / 기본적으로 20Byte / 옵션 헤더 최대 40Byte

  □ Service Type : 서비스 품질을 위한 용도 (사용 X)

  □ Total Length : Header Length + Data Length 

 3) 2행 → 단편화/재조립 관련 필드

Identifcation(16bit) Flags(3bit) Fragmentation offset(13bit)

  □ Identification : 단편화 전 원본 IP 데이터그램 식별을 위한 ID

  □ Flags : 1번째 bit → 사용 X , 2번째 bit → 1(단편화 하지마) or 0 , 3번째 bit → 1(재조합할 단편 남음) or 0(안 남음)

  □ Fragmentation offset : 단편의 순서라고 생각하면 편함(IP 프로토콜은 순차적 전송을 하지 않기 때문에 반드시 필요)

  □ 단편화 관련 정보

   - MTU : 데이터부(Payload)의 최대크기(Ethernet(2 Layer Protocol) = 1500Byte)

   - 특이 사항 : 전송 중에  MTU 가 적어지면 단편화 수행 / 전송 중에 MTU 가 증가한다고 해서 중간에 재조립 하지 않음

 4) 3행

TTL(8bit) Protocol(8bit) Header CheckSum(16bit)

  □ TTL : IP 패킷 생존시간 , 라우터 or L3 Switch 지날 때마다 hop count 감소(Linux = 64, Windows = 128, UNIX = 255)

  □ Protocol : 상위 프로토콜 식별용

  □ Header Check Sum : 헤더 부분 오류 검사값

 5) 4행

Source IP Address(32bit)

 6) 5행

Destination IP Address(32bit)

 7) 6행

Option(32bit)

  □ Option : 출발지에서 라우팅 경로를 지정(대부분의 경우에 사용 X)

 

3. IP Routing

 1) 규칙

  □ 모든 호스트는 PC Packet 전송을 위한 라우팅 테이블을 가지고 있음(netstat -rn 으로 확인 가능)

  □ 목적지 IP 가 동일 네트워크에 있으면 본인이 전송

  □ 목적지 IP 가 동일 네트워크에 없으면 라우팅 테이블을 참조하여 해당하는 Gateway로 전송

  □ 목적지 IP 가 본인일 경우, 상위 계층으로 데이터 전달

 2) 방법 → 추후 수정 예정

  □ 모든 연산은 목적지 IP 와 Genmask 간에 AND 연산이 기본

   - Genmask : 특정 패킷이 어느 곳으로 가야할지 결정하기 위해 해당 패킷이 가진 목적지 IP 와 AND 연산 수행 시 사용

  □ 목적지 IP와 완전 일치하는 경로 확인

   - 라우팅 테이블의 Genmask 가 255.255.255.255

  □ 없다면 목적지 IP의 네트워크 주소와 일치하는 경로 확인

   - 라우팅 테이블에서 255.255.255.255 , 0.0.0.0 을 제외한 나머지는 Genmask = Netmask

  □ 상기 경우 모두 해당하지 않는다면 Default Gateway 로 전송 

   - 라우팅 테이블의 Genmask 가 0.0.0.0

 

4. IP Spoofing 

 1) 기본 개념

  □ 트러스트 관계를 악용 

   - 트러스트 관계 : ID, PW 인증 기반이 아닌 등록된 IP는 접근을 허용하는 방식

   - 대부분의 r계열 서비스(ex. rlogin, rsh, rexec ...) 들이 이와 같은 트러스트 관계 방식을 사용 (절대 권장 X)

   - 트러스트 관계 설정 파일

     * /etc/hosts.equiv (시스템 전체 대상) , $HOME/.rhosts (각 사용자별 대상)

     * "호스트명" - "계정명" 형태로 파일 작성되어있음

     * ex. + + : 모든 호스트에 대한 모든 계정을 신뢰

       (원격에서 접속하는 모든 호스트들이 원격 대상 호스트에 설정된 모든 계정 접속 가능)

  □ 공격자는 트러스트 관계에 있는 클라이언트를 사용 불능 상태로 만듬

  □ 트러스트 관계이면서 사용 불능 상태인 클라이언트의 IP로 위조하여 서버에 접속 

  2) 대응책

  □ 시스템 간 트러스트 설정 사용 X (r계열 서비스 사용 금지), 사용할 경우엔 시스템의 MAC 주소를 정적 설정

  □ /etc/hosts.equiv, $HOME/.rhosts 파일 설정

   - chown root /etc/hosts.equiv 

   - chmod 600 /etc/hosts.equiv

   - 해당 파일에서 + 제거. 반드시 필요한 계정만 추가

 

5. IPv6 

 1) 등장 배경

  □ IPv4 의 주소 고갈 문제 해결 → 128bit (64bit : 네트워크 주소, 64bit : 인터페이스 주소)

 2) 장점

  □ 확대된 주소 공간 

  □ 단순해진 헤더 포맷 : IPv4 헤더의 불필요한 헤더 제거

  □ 간편해진 주소 설정 : 주소 자동 설정 기능 존재

  □ 강화된 보안성 : IPsec 기본 제공

 3) 전환 기술

  □ 듀얼스택 : IPv4, IPv6 를 동시 설정 

  □ 터널링

   - IPv6 네트워크 간 통신하려면 중간에 IPv4 를 사용하는 네트워크를 경유해야하는 경우 사용

   - IPv6 패킷을 IPv4 패킷으로 캡슐화  IPv4, IPv6 간에 패킷 앞부분에 변환 헤더를 추가하는 방식