회사 내부 공인 IP가 3.3.3.1 이라고 가정해보자 해당 공인 IP로만 접속할 수 있는 서버가 있다. 회사에서 내부망에서 접속했을 때는 문제 없이 서버에 접속할 수 있다. 하지만 외부(pc#5)에서(IP 9.9.9.1 로 가정하고) 회사 내부 서버에 접속할 때 보안이나 방화벽이 걸려있다면 접속할 수 없을 것 이다. 결국 회사 내부망(LAN)에서 접속한 것처럼 만들어주는 것이 VPN의 역할이라고 할 수 있다.
IPSec VPN은 주로 Site to Site 방식으로 사용되는 VPN입니다.
기업을 예시로 들자면 본사(Site) 네트워크와 지사(Site)네트워크를 VPN으로 연결하는 방식이라고 정의할 수 있습니다. 다시 말해 IPSec VPN은 자신의 아래에 있는 단말(PC1, PC2)에서 VPN의 단말(PC3, PC4)로 넘어가려는 패킷이 터널을 통해(실제로는 공인망을 통해) 상대편 VPN으로 건너갈 수 있도록 가능하는 것이죠
또한 패킷을 암호화함으로써 Layer 3의 단점인 데이터 암호화를 해결합니다.
이는 IPSec(Internet Protocol Security)이라 불리는 Tunneling Protocol(이하 터널링 프로토콜)이 있기에 가능한 것입니다. 패킷의 이동과 암호화는 전적으로 VPN이 책임지기 때문에 VPN 하단의 장비와 PC들은 패킷 이동과 암호화를 신경 쓰지 않고 Routing(이하 라우팅)을 통해 상대편 네트워크로 이동할 수 있습니다.
위 그림을 보시면 본사의 네트워크(10.10.10.x/24)와 지사의 네트워크(10.10.20.x/24)를 VPN을 통해 연결한 것을 확인할 수 있습니다. 본사 네트워크에 소속된 PC1(10.10.10.10/32)이 지사 네트워크에 소속된 PC3(10.10.20.10/32)으로 가기 위해서 해야 하는 것은 Default Gateway를 10.10.10.1로 잡거나 지사의 네트워크(10.10.20.x/24)로 가기 위해 Next Hop을 10.10.10.1로 잡는 것뿐입니다. 나머지는 VPN이 모두 맡아 처리하므로 신경 쓸 필요가 없지요. IPSec VPN을 사용함으로써 얻는 편리함입니다.
IPSec은 IP 패킷의 암호화와 인증, 그리고 암호화를 위한 키 관리를 맡은 프로토콜 슈트(Protocol Suite) IPSec VPN이라 부르는 이유는 VPN 터널을 생성하고 데이터를 암호화하는 방식에 있어 IPSec의 규칙을 철저히 따르기 때문이고 여기서 IPSec의 역할은
1. 인터넷 경유 구간에서 안전한 터널을 생성하고
2. 패킷을 인증할 수단을 제공하며
3. 패킷을 암호화할 키를 관리하고 제공하는 것 입니다.
또한 IPSec에는 운용 모드는 Transport Mode(전송 모드)
Tunnel Mode(이하 터널 모드)가 있습니다.
전송 모드는 IP Header를 변형하지 않고 그대로 사용하면서 IP Header를 제외한 데이터 부분만을 인증 혹은 보호하며 단말이 이 모든 과정을 담당하기에 단말 간 통신이 가능하다는 특징이 있습니다. 반면 터널모드는 New IP Header(공인 IP)를 추가적으로 씌워 Origin IP Header(사설 IP)를 캡슐화하고 IP 패킷 전체를 인증 혹은 보호하며, VPN 장비가 이를 도맡아 하므로 사설 네트워크와 사설 네트워크 간 통신을 가능케 합니다. 현재 사용하고 있는 IPSec VPN의 대부분은 터널 모드를 사용합니다.
인터넷 프로토콜(IP)의 설계에는 패킷의 암호화가 반영되지 않아서 보안에 취약합니다. 그 약점을 해결하기 위해 IP패킷에 특정 헤더를 추가함으로써 패킷을 인증/암호화하여 인터넷 프로토콜의 취약점을 보완하게 되는데 여기에 사용되는 프로토콜 헤더가 바로 맨 윗줄에 있는 AH(Authentication Header), 그리고 ESP(Encapsulating Security Payload)입니다. 그 아랫칸에는 터널 생성 시 서로를 인증하기 위한 인증서/데이터 패킷을 암호화하는 데 사용되는 알고리즘인 DES, 3DES, AES가 있습니다. 그리고 패킷이 변질되지 않았음을 증명하기 위해 사용되는 MD5, SHA가 있고 마지막으로 키를 생성하기 위한 Diffie-Hellman 알고리즘이 있습니다.
위에서 설명한 IPSec을 구성하는 프로토콜 헤더와 알고리즘이 어떻게 쓰이는지 알려면 Internet Key Exchange(IKE)를 이해해야 됩니다. IKE는
IPSec 터널을 생성하고 키를 생성/관리하는 가장 중요한 프로토콜 입니다.
IKE는 터널을 안전하게 생성하기 위한 VPN간의 협상 과정을 책임지며 패킷을 암호화하기 위한 알고리즘 등을 협의하고 결정하는 중요한 역할을 합니다.
IKE가 수행하는 터널 생성 과정과 암호화 키 생성 과정에서 위 그림에서 나온 프로토콜 헤더와 알고리즘이 모두 사용됩니다, 그러므로 IKE는 IPSec VPN의 핵심이라고 할 수 있습니다.
AH 헤더와 ESP 헤더는 IPSec 터널이 생성된 이후 VPN이 패킷(데이터)을 암호화/인증할 때 사용됩니다.
Authentication Header(이하 AH)와 Encapsulating Security Payload(이하 ESP)는 IP패킷의 보안성을 부여하기 위한 프로토콜 헤더로 패킷을 암호화/인증하는 역할을 합니다. 이 둘을 사용하는 이유는 IPSec 터널 내를 흐르는(실직적으로 공인망을 지나 다니는)데이터 패킷을 암호화하고 인증하여 외부 침입으로부터 보호하는 것이죠. IP 설계 시 패킷의 암호화에 대한 고려가 전혀 방영되어있지 않기 때문에 프로토콜 헤더를 추가로 부착하는 방법을 사용해 IP 패킷의 암호화를 실현합니다. IPSec VPN을 통과하는 패킷은 AH & ESP를 통해 암호화/인증을 실현하고 IPSec 터널을 오고 갑니다.
IP 패킷의 '무결성', '인증' 에만 사용되는 헤더(제한적 역할)
AH는 IP패킷의 무결성을 입증하기 위한, 다시 말해 패킷이 변질되지 않았음을 '인증'하기 위한 프로토콜 헤더입니다. 패킷의 데이터 부분에 해당하는 IP Payload(이하 페이로드)와 IP 헤더를 인증한 후 데이터를 생성하여 AH 헤더에 이를 포함시켜 패킷에 부착합니다. 그리고 New IP Header(공인 IP)를 추가로 씌워 기존 AH 헤더, IP 헤더와 IP 페이로드를 캡슐화합니다. 아래 그림과 함께 설명하겠습니다.
위 그림의 위 패킷은 원래의 패킷이고 아래 패킷은 AH 헤더가 부착된 패킷입니다. IPSec VPN의 터널을 통과하는 패킷은 아래 패킷과 같은 모습을 하는 것이죠.
위 그림을 보시면 AH 헤더를 확인할 수 있는데 이 헤더에는 AH 헤더 사용 목적이라고 할 수 있는 인증 데이터가 있습니다. 인증 데이터는 사설 IP에 대한 정보가 있는 IP 헤더와 IP페이로드, 그리고 New IP Header를 해쉬 알고리즘(HMAC, MD5, SHA등)을 이용해 고정 크기의 블록으로 만든 것입니다. 공격자가 IP 페이로드 혹은 IP 헤더에 조작한다면 조작된 데이터에 해쉬 알고리즘을 적용 시 헤더 내 인증 데이터와 일치하지 않을 테니 외부의 개입 여부를 단번에 알 수 있겠지요. 헤더에서 보다시피 AH는 인증에 관한 작업을 수행할 뿐 패킷의 암호화에는 전혀 관여하지 않습니다.
ESP 헤더는 AH 헤더의 인증 기능에 더해 AH 헤더의 약점인 패킷 암호화 기능을 갖춘 프로토콜 헤더입니다. 암호 알고리즘(DES, 3DES, AES)과 함께 암호화 키를 사용하여 패킷을 암호화합니다. 그렇기에 IPSec VPN을 사용한다고 하면 대부분 패킷에 ESP 헤더를 부착하여 전송한다고 볼 수 있죠. ESP는 패킷의 페이로드와 IP 헤더를 암호화하고 ESP 헤더와 선택사항인 인증 데이터를 부착한 후, New IP Header(공인 IP)를 씌워 패킷을 캡슐화합니다.
위 그림의 아래 패킷은 ESP 헤더가 적용된 패킷입니다. IPSec 터널을 통과하는 패킷은 아래 패킷과 같은 모습으로 통과하는 것입니다. 아래 패킷을 보시면 ESP 헤더, ESP Trailer, ESP Auth 등의 헤더가 보입니다. ESP Trailer는 패킷을 암호화하면 필수적을 생성되는, 페이로드와 인증 데이터를 구분하기 위한 'Padding'과 내부 프로토콜 헤더에 관한 정보를 담고 있죠. ESP 헤더는 IP 헤더와 IP 페이로드 그리고 ESP Trailer를 암호화합니다. 그리고 이 암호화한 IP 헤더 & 페이로드, Trailer에 해쉬 알고리즘을 적용하여 인증 데이터인 ESP Auth를 생성하여 부착합니다. ESP Trailer와 ESP Auth가 필수적인 역할을 담당하다 보니 ESP 헤더는 많은 정보를 담고 있지 않습니다.
위 그림은 ESP 헤더와 ESP Trailer 내부를 자세히 표현하고 있죠. '가변'이라 써진 곳이 ESP Auth입니다. ESP 헤더의 주목적이 암호화인 데다 인증 데이터까지 ESP Auth에 포함되어 있기 때문에 ESP 헤더에는 별다를 정보가 없습니다.
AH 헤더와 ESP 헤더 패킷을 자세히 보시면 Security Parameter Index(이하 SPI)를 확인하실 수 있는데요. 이는 Security Association(보안연관, SA)의 식별번호입니다. Security Association(이하 SA)이란 VPN과 VPN이 데이터를 안전하게 교환하기 위해 쌍방 간에 합의되는 사항, 즉 VPN간의 협약을 의미합니다. VPN과 VPN이 협상하여 터널을 생성하고 데이터를 암호화하는 만큼 서로 사용 가능한 알고리즘 혹은 프로토콜, 기타 정보를 확인을 해야겠죠? 그러므로 SA에는 VPN 간 서로를 인증할 방법, 터널의 유지 시간, 인증 데이터를 생성하기 위한 해쉬 알고리즘 합의, IP 페이로드를 암호화하기 위한 암호 알고리즘, 패킷을 암호화하는데 사용하는 키를 생성할 알고리즘, 터널 동작 모드 결정뿐만 아니라 AH/ESP 헤더 사용에 대한 합의 등이 포함됩니다. VPN이 어느 VPN에 연결되느냐에 따라 목적지가 다를 수 밖에 없기 때문에 터널마다 각각의 SA를 갖게 되고, SA를 식별하기 위한 번호가 필요하니 바로 그것이 SPI인 것이죠.
AH 헤더와 ESP 헤더 그리고 SA의 정의에 대해 살펴보았으니 SA를 생성 혹은 협의하는 과정, 다시 말해 터널을 생성하고 데이터를 암호화할 키를 교환하는 과정인 Internet Key Exchange는 다음 챕터에서 설명해보겠습니다.
용어
Gateway: TCP/IP에서 볼 때는 망간의 연결을 담당하는 망계층(3 layer)상의 라우터를 의미 하기도 함
라우터: 각기 독립된 네트워크들을 연결시켜주는 장치
Next-Hop: 목적지까지 가기위한 바로 다음 라우터 또는 경로
캡슐화: OSI의 7 계층모델에서 정보가 응용계층으로부터 물리계층까지 전달될 때, 각 계층은 특정제어정보(주로 Header)를 추가 (캡슐화)
IP 헤더: IP 데이터그램(패킷)dml 앞부분에서 주소 등 각종 제어 정보를 담고 있는 부분
패킷: 데이터를 일정 크기로 자른 것, 데이터 단위
참고
유튜브 널널한 개발자 VPN
http://www.ktword.co.kr/test/view/view.php?no=2554
https://aws-hyoh.tistory.com/162