[네트워크] IPSec VPN과 터널링 개념

Robert.Yang·2023년 6월 10일
1

Network

목록 보기
55/59
post-thumbnail

이 포스트는 널널한 개발자님 강의를 참조하며 작성하였습니다.

IPSec VPN과 터널링 개념

IPSec

  • IPSec은 네트워크 계층에 보안 서비스를 제공하며 패킷단위에 적용된다. IPSec은 현재 사용 중인 IPv4, IPv6를 모두 지원한다. IPSec은 GtoG VPN 구현을 위해서 현재 가장 많이 사용되고 있는 방식으로 다음과 같은 서비스를 제공한다.
    • Access Control
    • Connectionless integrity
    • Data original authentication
    • Protection against replay
    • Confidentiality
  • IPSec은 IP수준(L3) 보안을 제공한다. 따라서 응용프로그램에 대한 의존성이 없고 IP기반 통신을 모두 보호할 수 있다는 장점이 있다.
  • IPSec VPN은 대부분 GtoG VPN에 주로 활용된다.

VPN을 구현하는 프로토콜은 꽤 여러가지가 있다. 그 중에 IPSec 프로토콜을 아는게 매우 중요하다. IPSec은 IPv4에도 적용이 되고 IPv6에도 적용이 된다. 심지어 IPv6에는 기본스펙으로 포함되어 있기 때문에 굉장히 유용하다. 또한 GtoG, GtoE까지 다양하게 지원한다. 그런데 여기서 G는 무슨의미냐면 Gateway(Router)이고 GtoE의 E는 Endpoint(PC)이다. 그런데 Router의 IPSec을 지원하면 Router라고 부르지 않고 SG라고 부른다. 그래서 SG가 VPN 게이트웨이가 되어주는 거고 이 VPN 게이트웨이와 VPN 게이트웨이오 연결하는 게 GtoG이다. 여기서 연결은 Tunnel을 만든다는 건데 이것을 Tunneling이라고 한다. 터널링이란 별게 아니고 안보인다는 것이고 왜 안보이냐면 암호화를 했기 때문에 안 보인다고 표현하는 것이다. 그래서 GtoG VPN 구현할 때 암호화 즉, 터널링이 핵심이다.

IPSec Protocol

  • ISAKMP
    • Internet Security Association Key Management Protocol은 보안 협상 및 암호화키들을 관리하는 매커니즘을 제공한다.
  • IP AH(Authentication Header)
    • AH는 데이터의 원본 인증 및 무결성 재연공격 방지기능을 제공한다.
  • IP ESP(Encapsulation Security Payload)
    • ESP는 데이터의 기밀성, 원본인증 및 기밀성 및 재연공격 방지기능을 제공한다.

IPSec을 애기할 때 나오는 프로토콜이 크게 3가지가 있는데 일단 첫째가 ISAKMP라는것인데 이것은 게이트웨이끼리 암호화를 하는데 무엇으로 암호화를 할지, 알고리즘은 어떤걸 쓸지, 키 길이를 얼마나 할지, 어떤 키를 쓸지, 얼마주기로 바꿀지를 협상을 하는데 그때 ISAKMP를 사용한다. 그리고 실질적인 핵심은 IP AH인데 무결성 방지용이고 ESP 같은 경우는 원본에 대한 암호화를 제공한다. AH를 자세히 보면 Hash 알고리즘으로 하는 것이고 ESP는 PKI기술로 암호화를 실시한다.

💡 참고
PKI 기술 공부를 해보면 hash에 대해서도 다루기도 한다.

그래서 IPSec이 터널이라는 어떤 비유적인 논리적인 체계를 hash와 PKI로 구현한다, 그 때 무결성 보장을 할 때는 AH프로토콜을 암호에 관해서는 ESP를 그리고 심지어 AH와 ESP를 조합해서 한번에 적용하기도 한다. 그래서 확장도 용이하고 좋은점들이 있는데 이 터널링이라는 것도 L3수준 터널링이 있고 L4수준의 터널링으로 나뉘는데 일단 현재는 L3수준에서만 다뤄보겠다.

VPN Tunneling

위 그림을 보면 Original Datagram에 IP 패킷이 있다. 이 패킷을 남이봐도 모르게 IP header + payload 전체를 암호화한다고 하면 어떨까? 그러면 패킷이 위 그림의 3번째 그림처럼 변경이 된다. 즉, IP header + Payload가 3번째 그림의 IP header + IP payload가 되고 이 부분은 몽땅 암호화가 되었으니 다른 누가봐도 무슨 내용인지 알 수 없다. 그리고 여기서 중요한게 새로운 IP header가 붙고 그 외에 ESP에 관련된 것들이 붙고 인터넷으로 전달된다. 그런데 여기서 알아야할 께 기존 IP header+payload는 암호화되서 남이 봐도 알 수 없지만 새로 붙은 IP header는 일정수준 노출이 될 수 밖에 없다.

VPN GtoG

전 포스트에서 부산지사를 낸 회사 이야기를 했는데 이것을 이어서 애기해보도록 하겠다. 위 그림의 오른쪽 부분을 서울본사라고 하고 왼편을 부산지사라고 해보겠다. 여기서 서울 본사의 서버부분을 DB서버라고 했을 때 이 DB서버는 기본적으로 PN의 가장 구석에 둬서 완벽하게 private하게 둔다. 그래서 기본적인 정책이 무엇이냐면 밖에서 DB서버로 접속을 못하게 막는 것이다. 그러면 이 기본정책으로 DB서버는 서울 본사에 있는 5.5.5.x번대 호스트들만 접근이 가능하고 그 외에 호스트는 기본적으로 접근이 불가능하다.

💡 참고
참고로 이 5.5.5.x번대 호스트들은 인터넷 조차 안되는 private한 호스트이다.

그래서 이 DB서버에 접속할려면 5.5.5.x번대 호스트들을 이용해야만 DB서버를 접속이 가능하다. 즉, 이렇게 구성된 PN이 서울 본사의 네트워크라고 해보자. 그런데 부산자시에 근무하는 철수가 3.3.3.10 호스트로 DB서버를 접속해야한다고 보자. 물리적 PN으로 구축했으면 접속하는데 이상이 없겠지만 그게 아니고 VPN으로 구현했다고 한다면 어떻게 될까? 이 부분에 대해 자세히 애기해보겠다. 위 그림을 보면 서울본사 게이트웨이와 부산지사 게이트웨이가 있을 것이다. 이 2개의 게이트웨이는 기본적으로 SG가 된다. 그럼 이제 중요한게 패킷이 어떻게 변화하는지 살펴봐야 한다. 먼저 패킷이 최초생성 되었을 때 IP header + TCP header + payload로 구성이 되었을 것이다. 그리고 IP header에 src는 3.3.3.10일 것이고 dst는 5.5.5.100일 것이다. 이것을 실은채 패킷이 나가고 부산SG를 만나면 IP header의 dst를 보고 서울본사 DB서버 트래픽인걸로 인지하고 이 패킷 전체를 암호화시킨다. 그리고 이 암호화된것에 추가적으로 새로운 IP header를 붙이는데 이 새로운 IP header를 Outer IP header라고 하고 암호화된 기존 IP header를 Inner IP header라고 부른다. 그러면 Outer IP header에 src와 dst를 설정해줘야 하는데 src는 3.3.3.1이고 dst는 5.5.5.1로 설정하고 서울SG로 전달된다. 그럼 해당 패킷이 서울 SG에 도착하면 먼저 outer IP header를 제거한다. 그리고 암호화된 ip header + payload를 복호화시켜서 원본 패킷을 추출한다. 그걸 이제 DB서버에 전달한다.

그래서 VPN의 핵심원리라고 할만한 것은 결국 IP header를 중첩하고(L3 터널링) 이게 GtoG의 원리이다.

profile
모든 것을 즐길 줄 아는 개발자, 양성빈입니다.

0개의 댓글