IPsec에 대해 알아보자. 말 그대로 IP Layer의 보안을 위한 기능이다.
IP 프로토콜은 취약한 부분이 많다. 일단 보안기능은 거의 없다고 보면되고.. (IP 스푸핑 등에 노출)
이런 IP 프로토콜에 암호, 인증 서비스를 패킷 단위로 제공하는 것이 IPsec이다.
IPv4 에서는 IPsec이 선택사항이었지만, IPv6에서는 의무적인 요구사항이다.
그만큼 장점이 많아서 그렇겠지?
IPsec은 아래와 같은 여러가지 기능을 제공한다.
* VPN을 이용하여 보안체널 구성
* 안전한 원격 인터넷 접근
* E-Commerce 보안
* 라우터 간의 안전한 라우팅 정보 교환
IPsec에서는 사용되는 보안 프로토콜들이 있다.
•IP Authentication Header (AH)
•IP Encapsulating Security Payload (ESP)
•Internet Key Exchange (IKE)
송신자를 인증하는 (AH)와 송신자 인증 및 데이터 암호화를 제공하는 (ESP) 그리고
키분배를 위한 프로토콜 (IKE)가 있다.
그리고 IPsec에는 2가지 모드가 존재한다.
* Transport Mode
* Tunneling Mode
그리고 IPsec을 이용한 통신을 하려면 SA(Security Association)이라는 보안 세션을 맺어야 한다.
SA(Security Associations)
IPsec을 이용해 보안 통신을 하기 위하여 종단점 끼리 맺는 보안 세션이다.
데이터가 전송되기 전에 송신자와 수신자가 가상의 연결을 설정하는 것.
송신자, 수신자 모두 SA에 관련된 정보 (SA 파라미터 라고 한다)를 유지해야 한다.
IP는 비연결 지향형 이었지만 IPsec은 연결지향형 이다.
그리고 SA는 단방향이다. 미리 방향이 지정된 것이 아니므로, 연결할 때 2개의 SA를 맺어야 한다.(단방향이니까)
SA는 SPI(Security Parameter Index) 라는 SA 파라미터가 들어있는 곳의 인덱스, 목적지 IP주소, 보안 프로토콜 식별자 등으로 구성된다.
SPI를 이용하여 SA 파라미터에 접근한다. (SA는 IPsec을 사용하기 위해 여러가지 파라미터를 유지한다고 말했음)
그럼 파라미터에 어떤 것들이 있는지 한번 알아봅시다.
** SA Parameter **
1. Packet sequence number counter : 패킷의 sequence number 카운터
2. Anti-replay window : replay-attack을 방어하기 위한 윈도우값
3. AH information: AH 프로토콜 정보
4. ESP information: ESP 프로토콜 정보
5. SA lifetime: 세션 만료 기간
6. IPSec protocol mode: IPsec이 무슨 모드를 사용하고 있는지.
7. Path MTU : 경로의 MTU값
이번엔 IPsec에서 사용되는 보안 프로토콜인
AH (Authentication Header)와 ESP (Encapsulating Security Payload)에 대해 알아봅시다.
SA라는 보안 세션을 맺고 나면 SA 파라미터에 프로토콜에 대한 정보가 들어있는 것을 보았다.
이제 이 보안 연결이 무슨 프로토콜을 이용하여 보안을 하는지 보고 (AH인지 ESP인지)
그에 따른 보안 통신을 할 것이다.
AH와 ESP를 한마디로 구분하자면,
AH는 무결성이 요구되는 통신에서 유용하고, ESP는 기밀성이 요구되는 통신에서 유용하다.
즉, AH는 인증, ESP는 암호화
먼저 무결성에 유용한 AH에 대해 알아보자.
AH (Authentication Header)
이름 그대로 "인증 헤더" 이다. 위에서 설명했듯이 무결성이 필요한 통신에 유용한 프로토콜이다.
기밀성 즉, 암호화에 대한 기능은 제공하지 않는다.
위 그림과 같이 IP헤더의 프로토콜 필드의 값이 51이 되면 AH를 사용하는 것이다.
기존에 패킷에는 AH Header가 존재하지 않지만 IPsec을 사용하면 저렇게 중간에 AH 헤더가 삐집고 들어간다.
AH 헤더의 구조는 아래와 같다.
•Next header : 전송 계층 헤더를 가르킴.
•Payload length : AH의 길이
•SPI : SA 파라미터 인덱스
•Sequence number (SN): anti-replay attack 을 위한 필드 (후에 설명)
•authentication data: 인증에 관련된 정보
ESP (Encapsulating Security Payload)
이번에는 ESP에 대해 알아봅시다. 이건 데이터 기밀이 필요할 때 유용하다고 했었다.
ESP는 인증도 제공하고 암호화도 제공한다.
ESP는 프로토콜 필드가 50으로 설정되어 있으면 된다. AH는 51이었지?
ESP도 헤더가 어떻게 생겼는지 함 봅시다.
ESP 헤더에 대한 내용은 다음에 더 자세히 알아보도록 하겠음.
AH와 겹치는 필드도 많으니 이해하는데 크게 어렵지 않을 듯 싶다.
겹치는 필드 외에는 데이터 암호화와 관련된 부분이겠죠.
다음, IPsec 의 기능 중 하나인 Anti-Replay Attack에 대해 알아보자. 말 그대로 리플레이 공격을 방어하는 것이다.
Anti-Replay Attack
위에서 우리는 AH,ESP 헤더에 SN(Sequence number) 필드가 있는걸 봤다.
그리고 이녀석이 Anti-Replay Attack 기능에 필요한 필드라는 것도 알고있다.
또 MAC(Message Authentication Code)라는 데이터의 무결성을 체크하는 코드도 사용한다.
어떻게 이 필드를 이용해서 Anti-Replay Attack 을 수행하는 것일까?
일단 replay attack이 뭔지 모르면 어떻게 막는지 알 수가 없다.
replay attack이란, 이름 그대로 재사용 공격이다. 정당한 사용자가 사용한 정보(쿠키, 인증값 등)를
공격자가 재사용하여 정당한 사용자인 것 처럼 둔갑하여 공격하는 것을 말한다.
AH,ESP헤더에 있던 SN 필드와 SA에 있던 Anti-replay window 를 이용해서 Anti-Replay Attack을 수행하는데,
어떠한 방식으로 방어하는지 알아보자.
최초에 SA가 성립되면 송신자는 SN을 0으로 초기화 시킨다.
그리고 패킷이 전송될 때마다 SN을 1씩 증가시킨다.
Anti-replay window는 크기가 64인데, 수신자가 패킷을 받았을 때,
지금까지 받은 패킷의 최대 SN에서 이전 64(윈도우크기)만큼 받아들인다.
대신 window 슬롯에 체크할 때 MAC(Message Authentication Code)으로 무결성 체크를 한다.
패킷의 무결성을 체크할때 아래와 같은 과정으로 체크하고, 리플레이 어택을 방지한다.
1. 수신된 패킷의 SN이 Window 범위에 있고, MAC 체크 후 인증이 된다면 window 슬롯에 기록한다.
2. 수신된 패킷의 SN이 Window의 최대값보다 크면 Window를 패킷 값으로 이동시키고 슬롯에 기록한다.
3. 수신된 패킷의 SN이 Window의 최소값보다 작거나 MAC 검증이 안되면 패킷을 버린다.
끝으로, IPSec을 이용해 구현되는 VPN (Virtual Private Network) 가상 사설망에 대해 알아보자.
IPSec VPN
VPN이란, 기존의 인터넷 서비스를 통해 하나의 사설 네트워크처럼 사용하는 것이다. 공중망을 통한 연결을 전용선처럼 사용하는 것.
VPN을 구현하는 이유는 여러가지가 있다.
원거리에 있는 종단점 끼리 외부에 노출되지 않고 통신을 하고 싶을 때
회사나 집단에서 사설망을 구축하고 싶을 때 돈이 너무 많이 들어서 등등
정보화가 고도화 됨에 따라 재택 근무를 하는 집돌이들이 많이 늘어나고
업무 범위 확대, 회사 외부로 네트워크를 구성할 필요성이 많이 대두되었다.
이유야 어떻게 됐든, VPN을 구축 하려면 여러가지 기술을 짬뽕시키면 된다.
터널링, 암호화, 인증, 접근 제어 등등
IPsec의 터널링 모드(뒤에 설명)를 이용해 VPN gateway 끼리 IPsec 통신을 하여 외부로 노출을 막는 방식으로 vpn을 구성한다.
IPsec에는 2가지 모드가 존재한다.
Transport mode (전송 모드) 와 Tunnel mode (터널링 모드) 두가지 이다.
1. Transport mode (전송 모드)
전송모드는 원격 예를 들어, 재택 근무 같은 원격 접근을 할 때 사용되는 모드이다.
원격 접속이니까 end-to-end 보안이 필요하다.
TCP, UDP 등과 같은 전송계층 세그먼트를 암호화한다는 말이다.
네트워크 패킷은 암호화 하면 안된다. 라우터가 IP 주소를 알 수 없으니까.
그래서 전송모드에서는 송수신자가 노출이 된다.
2. Tunnel mode (터널링 모드)
터널링 모드는.. VPN을 이용하여 Secure Channel을 구성할 때 사용되는 모드이다.
예를 들어, 회사 통신 인프라 구축 등을 할 때 사용된다.
그림을 보면 부연설명이 좀 되어 있다. 보다시피 저건 각각 네트워크를 보안 체널로 묶는 그림이다.
각 네트워크는 보안이 되어있는 상태이다.
주황색 동그라미 친 부분은 VPN 장비 (VPN Gateway)이다.
VPN 장비가 네트워크 간에 보안 체널을 구축한다. 이것을 터널링(Tunneling)이라고 한다.
IPsec은 저 터널링된 보안 체널을 암호화 시켜야 한다.
터널링할 때는 기존의 패킷 전체를 암호화 시킨다. 왜냐면 각 VPN 게이트웨이 끼리 각자의 주소만 알면 되니까.
IP 헤더를 포함한 전체 패킷을 암호화 시키면 된다. 그리고 나서 VPN 끼리 사용할 새로운 IP헤더를 앞에 달아주면 끝.
VPN Gateway 끼리 사용하는 ip헤더를 이용해 수신지의 VPN Gateway에 패킷이 도착하면 거기서
패킷 인증 과정을 거치고 난 후, 원하는 내부 네트워크에 접근할 수 있는 것이다.
3. 전송모드와 터널링모드의 패킷 구조 차이
먼저 전송모드의 패킷을 보자. IPv4만 다루겠다.
IP헤더는 암호화 하지 않고, TCP 세그먼트 까지만 암호화 하는 것을 볼 수 있다.
위에서 말했듯이 IP 헤더를 암호화 해버리면 라우터가 IP주소를 식별하지 못하니까.
대신 송수신자가 노출되는 것을 감수해야 한다.
다음은 터널링모드의 패킷을 한번 보자.
이건 전체다 암호화해도 된다고 하니 IP헤더까지 암호화 시켜 놓았다.
전부 암호화 하고 앞에 VPN 게이트웨이끼리 사용할 새로운 IP헤더를 붙여놓았다.
'IT 그리고 정보보안 > Knowledge base' 카테고리의 다른 글
iptables 방화벽 개념 (0) | 2021.04.19 |
---|---|
방화벽(Firewall) 이란 무엇인가 (0) | 2021.04.19 |
r-services 개념과 관련 취약점 (0) | 2021.04.19 |
SSL(Secure Socket Layer), TLS(Transport Layer Security) (0) | 2021.04.19 |
SSH (Secure Shell) (0) | 2021.04.19 |