CH 03 네트워크 보안

김유찬·2023년 4월 5일

정보 보안 개론

목록 보기
2/4
post-thumbnail

■ 네트워크의 이해

  • OSI 7계층의 이해
    -7계층: 응용프로그램 계층(applocation layer) - 응용 프로세스와 직접 관계하여 일반적인 서비스 수행
    -6계층: 표현 계층(presentation layer) - 코드 간의 번역을 담당하는 계층. 사용자 시스템에서 데이터 구조를 통일하여 응용 프로그램 계층에서 데이터 형식의 차이로 인해 발생하는 부담을 덜어줌
    -5계층: 세션 계층(session layer) - 양 끝단의 응용 프로세스가 통신을 관리하는 방법 제공
    -4계층: 전송 계층(transport layer) - 양 끝단의 사용자들이 신뢰성 있는 데이터를 주고받게 함으로써 상위 계층이 데이터 전달의 유효성이나 효율성을 신경 쓰지 않게 해줌
    -3계층: 네트워크 계층(networt layer) - 여러 개의 노드를 거칠 때마다 경로를 찾아주는 역할을 하는 계층. 다양한 길이의 데이터를 네트워크를 통해 전달하고, 전송 계층이 요구하는 서비스 품질(QoS)을 위해 기능적, 절차적 수단 제공
    -2계층: 데이터 링크 계층(data link layer) - 두 지점 간의 신뢰성 있는 전송을 보장하기 위한 계층. 16진수 12개로 구성된 MAC 주소 사용
    -1계층: 물리 계층(physical layer) - 실제 장치를 연결하기 위한 전기적, 물리적 세부 사항을 정의한 계층으로 렌선 등이 포함됨

● 물리 계층(1계층)

-케이블 내 구리 선의 보호 방법이나 꼬임 방법에 따라서 케이블을 분류(케이블 선은 일반적으로 UTP 사용)
-케이블 선의 종류(UTP, FTP, STP)

● 데이터 링크 계층(2계층)

-두 포인트 간의 신뢰성 있는 전송을 보장하기 위한 계층으로, CRC 기반의 오류 제어 및 흐름 제어가 필요(CRC: 순환 중복 검사)

※ MAC 주소

-총 12개의 16진수로 구성
-앞 쪽의 6개 16진수는 네트워크 카드를 만든 회사를 나타냄(OUI)
-뒤 쪽의 6개 16진수는 각 회사에서 임의로 붙이는 일종의 시리얼
-같은 MAC 주소는 존재하지 않음
-ex) 1C-1B-DD-77-90-4C

  • 데이터 링크 계층의 패킷 흐름
    -대표적인 네트워크 장비는 스위치
    -MAC 계층에서 동작하는 대표적인 프로토콜은 이더넷
    -네트워크 계층까지의 패킷 정보 + 데이터 링크 계층의 패킷 정보(출발, 목적 MAC 주소)
    -스위치의 메모리에 포트별로 MAC 주소가 매칭된 테이블이 존재하고, 이것이 업데이트 됨
    -스위치는 네트워크 계층 정보인 IP 정보를 네트워크에 활용하지 않음
    -즉, MAC 계층까지만 조사가 됐고 현재 IP정보는 받은 게 없어 IP주소와 매칭될 수 없음

  • 두 개의 부계층
    -상위의 LLC 부계층: 여러 다양한 MAC 부계층과 네트워크 계층간의 접속을 담당
    -하위의 MAC 부계층: 물리계층 상의 토폴로지나 기타 특성에 맞추어 주는 제어를 담당
    ▷토폴로지(topology): 컴퓨터 네트워크의 요소들(링크, 노드 등(을 물리적으로 연결해놓은 것, 또는 그 연결방식/ LAN은 물리적 토폴로지와 논리적 토폴로지를 둘 다 보여 줄 수 있는 한 예
    ▷둘 간의 주요 차이점
    -MAC: 공유 매체를 통해서 신뢰성 보장 없이 패킷에 대한 전송 서비스 제공
    -LLC: 기본적으로 두 지점 간의 신뢰성 있는 패킷 링크로 전환
    -LLC의 목적: 여러 상이한 MAC 부계층 프로토콜을 사용할 수 있게 하여 망의 토폴로지에 관계없는 통신이 가능하도록 함

● 네트워크 계층(3계층)

-여러 개의 노드를 거칠 때마다 경로를 찾아줌, 다양한 길이의 데이터를 네트워크를 통해 전달
-전달 과정에서 라우팅(최적 경로 찾기), 프름 제어, 세그멘테이션, 오류 제어등을 수행
-대표적인 네트워크 장비는 라우터

※ IP 주소

-네트워크 계층에서 여러 개의 노드를 거쳐 경로를 찾기 위한 주소
-ipconfig /all명령을 실행하여 IP 주소를 확인
-ex) 11000000.10101000.00000000.01100100(C클래스)

  • IP주소의 클래스
    -A,B,C,D,E로 구성
    A클래스: 첫 번째 자리(8비트)가 네트워크 주소, 세 자리는 호스트 주소(시작주소: 0)
    B클래스: 두 번째 자리(16비트)까지 네트워크 주소, 두 자리는 호스트 주소(시작주소: 10)
    C클래스: 세 번째 자리(24비트)까지 네트워크 주소, 한 자리는 호스트 주소(시작주소: 110)
  • 네트워크 계층의 패킷 전달 구조

    -패킷 송신 시스템의 IP: 172.16.0.100 -> 출발 IP 주소
    -라우터 랜 쪽 포트의 IP(게이트웨이): 172.16.0.1
    -패킷 송신 시스템의 MAC 주소: AA-AA -> 출발 MAC 주소
    -라우터 랜 쪽 포트의 MAC 주소(게이트웨이): BB-BB -> 도착 MAC 주소
    -라우터 인터넷 쪽 포트의 MAC 주소: CC-CC
    * 순서
    1. 출발 MAC 주소, 출발 IP 주소
    2. 도착 IP 주소
    3. 도착 MAC 주소

● 전송 계층(4계층)

-양 끝단의 사용자들이 신뢰성 있는 데이터를 주고받을 수 있게 함
-상위 계층이 데이터 전달의 유효성이나 효율성을 신경 쓰지 않게 해줌
-시퀀스 넘버 기반의 오류 제어 방식을 사용하여 특정 연결의 유효성을 제어
-가장 잘 알려진 전송 프로토콜은 TCP포트라는 주소가 있음

  • 포트
    -시스템에 도착한 후 패킷이 찾아갈 응용 프로그램으로 통하는 통로 번호
    -세션 계층까지의 패킷 정보 + 전송 계층의 패킷 정보 + 네트워크 계층의 패킷 정보 + 데이터 링크 계층의 패킷 정보
    -출발지 포트는 보통 1,025~65,535번 중에서 사용하지 않는 임의의 포트를 응용 프로그램별로 할당하여 사용

  • 연결 상태 정보
    -네트워크 계층과 전송 계층의 정보는 netstat -an 명령으로 쉽게 확인할 수 있음
    -연결 상태 정보는 ESTABLISHED로 확인됨
    -연결 설정 과정은 '3-way 핸드셰이킹'이라고 함

  • TCP의 연결 과정(3-way 핸드셰이킹)

  1. 두 시스템이 통신을 하기 전에는 클라이언트는 포트가 닫힌 Closed 상태, 서버는 해당 포트로 항상 서비스를 제공할 수 있는 Listen 상태
  2. 클라이언트가 처음 통신을 하려면 임의의 포트 번호가 클라이언트 프로그램에 할당, 클라이언트는 서버에 연결하고 싶다는 의사 표시로 SYN Sent 상태가 됨
  3. 클라이언트의 연결 요청을 받은 서버는 SYN Received 상태가 됨, 클라이언트에 연결을 해도 좋다는 의미로 SYN + ACK 패킷을 보냄
  4. 클라이언트는 연결 요청에 대한 서버의 응답을 확인 했다는 표시로 ACK 패킷을 서버로 보냄
  • TCP 연결 해제 과정
  1. 통신 중에는 클라이언트와 서버 모두 Established 상태
  2. 통신을 끊으려는 클라이언트가 서버에 FIN 패킷을 보내고 클라이언트는 Close Wait 상태가 됨
  3. 서버는 클라이언트의 연결 종료 요청을 확인하고 응답으로 클라이언트에 ACK 패킷을 보내면, 서버도 클라이언트의 연결을 종료하겠다는 의미로 FIN 패킷을 보내고 Close Wait 상태가 됨
  4. 클라이언트는 연결 종료를 요청한 것에 대한 서버의 응답을 확인했다는 표시로 ACK 패킷을 서버에 보냄
  • TCP
    -연결 지향형 프로토콜(양뱡향)
    -정보를 보내는 쪽과 받는 쪽이 서로 의사 소통을 할 수 있도록 설계된 프로토콜
    -수신 픅이 데이터를 흘려버리지 않도록 하는 데이터 흐름 제어
    -전송 중 에러가 발생하면 자동으로 재전송하는 에러 제어
    -데이터의 확실한 전송을 보장하지만, 과정이 완전하지 않아 해커들에게 많은 공격을 받음

  • UDP
    -한 쪽에서 일방적으로 보내는 방식의 통신 트로토콜(단방향)
    -TCP와 달리 데이터의 수신에 대한 책임을 지지 않음
    -TCP보다 안정성 면에서는 떨어지지만, 속도는 훨씬 빠름
    -TCP와 달리 신뢰성 있는 전송을 보장하지 않음
    -특정한 경우 전송 경로 확립을 위한 번잡함을 생략하고 시간을 절약할 수 있어 UDP가 더 효과적

● 세션 계층(5계층)

-양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공
-응용 계층 간 대화 제어, 응용 실체 간 데이터 전송을 위해 기본이 되는 논리적 통신로 제공, 통신로상 데이터 전송을 위한 송신권, 동기 등의 제어
-동시 송수신 방식, 반이중 방식, 전이중 방식의 통신과 함께 체크 포인팅, 유휴, 종료, 다시 시작의 과정을 수행

● 표현 계층(6계층)

-코드 간의 번역을 담당(OSI 표준방식으로 변경)
-ASN.1 방식: 데이터 구조를 하나의 통일된 형식으로 표현, 응용 프로그램 계층 간의 서로 다른 표현을 인식하기 위해 정보를 정의하고 데이터 합축과 암호화 기능을 수행

● 응용 프로그램 계층(7계층)

-사용자나 응용 프로그램 사이에 데이터 교환이 가능하게 하는 계층
-응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행
-HTTP, FTP, 터미널 서비스, 메일 프로그램, 디렉터리 서비스 등을 제공

■ 서비스 거부 공격: DoS와 DDoS

● 서비스 거부 공격(DoS)

  • 다른 해킹에 비해 비교적 간단한 것으로 일종의 훼방
    -예를 들어 깡패가 노점상의 장사를 방해하는 것

  • 취약점 공격형
    -특정 형태의 오류가 있는 네트워크 패킷의 처리 로직에 문제가 있을 때, 공격 대상이 그 문제점을 이용하여 오작동을 유발하는 형태
    -보잉크/봉크/티어드롭 공격, 랜드 공격

  • 자원 고갈 공격형
    -네트워크 대역폭(채널)이나 시스템의 CPU, 세션 등의 자원을 소모시키는 형태
    -랜드 공격, 죽음의 핑, SYN 플러딩, HTTP GET 플러딩, HTTP CC, 동적 HTTP 리퀘스트 플러딩, 슬로 HTTP 헤더 DoS(슬로로리스), 슬로 HTTP POST, 스머프 공격, 메일 폭탄 공격

  • 보잉크/봉크/티어드롭 공격

    →프로토콜의 오류 제어 로직을 악용하여 시스템 자원을 고갈시키는 방식
    →TCP 프로토콜이 제공하는 오류 제거 기능
    -패킷의 순서가 올바른지 확인
    -중간에 손실된 패킷이 없는지 확인
    -손실된 패킷의 재전송을 요구
    →TCP는 데이터 전송 시 신뢰를 확보하기 위해 패킷 전송에 문제가 있으면 반복적으로 재요청과 수정을 함
    보잉크, 봉크, 티어드롭은 공격 대상이 TCP에서 수행되는 반복적인 재요청과 수정을 계속하게 함으로써 시스템 자원을 고갈시킴
    티어드롭은 패킷의 시퀀스 넘버와 길이를 조작하여 패킷 간의 데이터 부분이 겹치거나 빠진 상태로 패킷을 전송하는 공격 방법
    →시퀀스 넘버가 조작된 패킷의 흐름은 공격 대상에게 절대로 풀 수 없는 퍼즐을 던져주는 것과 같음
    이런 취약점은 패치관리를 통해 제거하는데, 과부하가 걸리거나 계속 반복되는 패킷을 무시하고 버리도록 처리함

  • 랜드 공격

    →'land'는 (나쁜 상태에) 빠지게 하다라는 뜻
    →패킷을 전송할 때 출발지 IP 주소와 목적지 IP 주소를 똑같이 만들어 대상에게 보내는 것
    →SYN 플러딩처럼 동시 사용자 수를 점유하고 CPU 부하를 올림
    →대책은 주로 운영체제의 패치관리를 통해 마련( ex) 방화벽 )

  • 죽음의 핑 공격

    →네트워크의 연결 상태를 점검하는 ping 명령을 보낼 때 공격 대상에게 패킷을 최대한 길게 보내 패킷을 쪼갬
    공격 대상 시스템은 대향의 작은 패킷을 수신하느라 네트워크가 마비
    →대책은 ping이 내부 네트워크에 들어오지 못하도록 방화벽에서 ICMP를 차단해야 함(ICMP: ping이 사용하는 호스트 서버와 인터넷 게이트웨이 사이에서 메시지를 제어하고 오류를 알려주는 프로토콜)

  • SYN 플러딩 공격

    동시 사용자 수의 제한을 이용한 공격
    존재하지 않는 클라이언트가 접속 가능 공간에 접속한 것처럼 속여 다른 사용자가 서비스를 제공받지 못하게 함
    →3-way 핸드셰이킹의 문제점을 악용
    →대책은 SYN Received의 대기 시간을 줄이는 것 / 침입 방지 시스템과 같은 보안 시스템으로도 공격을 쉽게 차단할 수 있음

  • HTTP GET 플러딩 공격

    →공격 대상 시스템에 TCP 3-way 핸드셰이킹 과정으로 정상 접속한 뒤 HTTP의 GET 메소드로 특정 페이지를 무한대로 실행하는 공격
    →공격 패킷을 수신하는 웹 서버는 정상적인 TCP 세션과 정상으로 보이는 HTTP GET을 지속적으로 요청받음으로 시스템에 과부하가 걸림

  • HTTP CC 공격

    →HTTP 1.1 버전의 CC 헤더 옵션은 자주 변경되는 데이터에 새로운 HTTP 요청 및 응답을 요구하기 위해 캐시 기능을 사용하지 않을 수 있음
    웹 서버가 캐시를 사용하지 않고 응답해야 하므로 웹 서비스의 부하가 증가

  • 동적 HTTP 리퀘스트 플러딩 공격

    →특징적인 HTTP 요청 패턴을 확인하여 방어하는 차단 기법을 우회하기 위한 공격
    지속적으로 요청 페이지를 변경하여 웹 페이지를 요청

  • 슬로 HTTP 헤더 DoS(슬로로리스) 공격

    →서버로 전달할 HTTP 메시지의 헤더 정보를 비정상적으로 조작
    →웹 서버가 헤더 정보를 완전히 수신할 때까지 연결을 유지하도록 하는 공격
    →시스템 자원을 소비시켜 다른 클라이언트의 정상적인 서비스를 방해

  • 슬로 HTTP POST 공격

    →웹 서버와의 커넥션을 최대한 오래 유지하여, 웹 서버가 정상적인 사용자의 접속을 받아들일 수 없게 하는 공격

profile
eukddan

0개의 댓글