2019년 1월 29일 화요일

라우팅 프로토콜_BGP

ㅇ ㅂㅇ

◆ BGP(Broader Gateway Protocol ; 경계 경로 프로토콜)
 - 인터넷에서 주 경로 지정을 담당하는 프로토콜
 - 인터넷에서 자율 시스템(AS ; Autonomous System) 중 라우팅 및 도달 가능성 정보를 교환하기 위해 설계된, 표준화된 외부 게이트웨이 프로토콜
 - EGP의 한 종류로, 예를 들면 한 공인된 기간이 ISP인 한국통신이나 데이콤과 인터넷으로 연결 할 때에는 ISP와 연결하는 AS 라우터에 EGP의 한 종류인 BGP를 적용하여 연결하며, 그 기관의 내부 통신 프로토콜로는 RIP, OSPF를 적용하는 것이 일반적
 - 패킷 형태는 Marker, Length, Type 3개의 필드로 된 19 Bytes 크기의 헤더와 데이터로 구성되어 있으며 open, update, notification, keepalive의 4개 메시지 타입이 있음
 - 초기 연결시에 전체 경로 테이블을 교환하고, 이후엔 변동 내역이 있을 때만 변동내역을 교환
 - 쉽게 말해 인터넷에서 데이터가 라우팅 되는 경로를 제어

◆ BGP 동작 원리
 - BGP 프로토콜은 TCP 포트 179번을 이용하여 직접적으로 연결되어 있는 라우터와 네이버 관계(피어(peer) 관계 ; 인접 관계)를 형성
 - 정상적으로 네이버 관계가 형성 된 후 Keep-alive 메시지를 이용하여 지속적으로 네이버 상태를 확인하고 보다 안정적으로 네이버 관계가 형성하기 위해 총 6단계를 거쳐 이루어지게 됨


 1).  Idel
  - BGP 연결을 위한 초기 상태. 네이버(인접 라우터 및 정보를 교류 받는 라우터)와 정상적으로 연결을 형성하기 위해 기다리기 위한 것으로 일정시간 응답이 없을 경우 "Idle" 타이머 상태로 동작
 2). Connect
  - TCP 포트 번호를 이용하여 연결 하기 위해 기다리는 상태로 세션이 이루어질 경우 "Active" 상태를 거치지 않고 바로 "OpenSent" 상태로 동작
  - 만약 TCP 세션 연결이 이루어지지 않을 경우 "Active" 상태로 전환되어 네이버 관계를 형성하기 위해 대기
 3). Active
  - TCP 세션을 재형성하기 위한 상태 "Active" 상태에서 정장적으로 TCP 세션이 이루어질 경우 "OpenSent" 상태로 전환
  - 계속 TCP 세션이 이루어지지 않을 경우 1단계인 "Idle" 상태로 전환되어 처음부터 다시 연결 시도
 4). Open Sent
  - 네이버 라우터로부터 Open 메시지를 수신하기 위해 기다리고 있는 상태
  - 정상적인 경우 "Keepalive" 메시지를 전송하게 됨
  - iBGP or eBGP 인지 확인 한 후 잘못된 BGP 정보가 있을 경우 노티피케이션(Notification) 메시지를 전송하게 되며 "Notification" 메시지를 전송한 후 1단계 "Idle" 상태로 다시 전환
 5). Open Confirm
  - 정상적으로 네이버 관계가 성립되었는지 확인하는 단계
  - "Keepalive" 메시지를 수신할 경우 "Established" 상태가 됨
  - "Open Confirm"에서 어떤 문제로 인해 "Notification" 메시지를 수신할 경우 1단계인 "Idle" 상태로 전환
 6). Established
  - 정상적으로 네이버 관계가 형성된 것을 의미하며 이때부터 자신이 보유하고 있는 BGP 정보를 인접한 라우터로 전송


◆ 라우트 하이재킹(Route Hijacking)
 -  잘못 설정된 정보를 BGP 프로토콜을 이용하여 네이버 라우터로 전송했을 경우 수신한 라우터는 다른 네이버 라우터로 다시 전송하게 됨 BGP의 경우 Distance-vector(거리경로) 라우팅 프로토콜이므로 인접한 라우터가 전송해 준 정보를 그대로 믿게 되며 이와 같은 경우 해당 네트워크 정보가 실제 존재하고 있는 것으로 인식하여 Hijacking이 이루어지게 됨
 - Route Hijacking의 경우 다른 라우터가 사용하고 있는 정보를 마치 자신이 소유하고 있는 것 처럼 Fake IP 주소를 생성하여 인접한 라우터로 전송해 패킷을 가로채 정상적으로 통신이 이루어지지 않도록 하는 방법



※ 참고 사이트 및 문헌, 논문
 - 라우팅 프로토콜 및 BGP 정의
https://hyunmolove.tistory.com/38
http://apollo89.com/wordpress/?p=527
http://163.239.1.207:8088/dl_image/IMG/04//000000019142/SERVICE/000000019142_01.PDF
 - BGP 해킹 관련 뉴스
http://www.zdnet.co.kr/view/?no=20180426142719
https://www.boannews.com/media/view.asp?idx=74615
https://www.clien.net/service/board/news/12819386