본문으로 바로가기
728x90

1. VPN 구성 및 설정

Topology

본 실습에서는 두 개의 내부 네트워크를 서로 안전하게 연결하기 위해 ASA 방화벽을 이용한 Site-to-Site VPN 환경을 구성했습니다. 

 

내부 네트워크 (Inside Network)

  • ASA1 내부망: 192.168.1.0/24
  • ASA2 내부망: 192.168.2.0/24

외부 네트워크 (Outside Network)

  • ASA1 outside: 10.0.0.1
  • ASA2 outside: 10.0.0.2

실습 순서

  • VPN 대상 트래픽 정의 (ACL 설정)
  • NAT 예외 설정
  • IKE Phase 1 설정 (보안 협상)
  • Pre-Shared Key 설정 (장비 인증)
  • IKE Phase 2 설정 (데이터 암호화 방식 정의)
  • Crypto Map 적용 (VPN 실제 동작)
  • VPN 상태 확인 (show 명령어)
  • Wireshark를 통한 VPN 동작 검증

 

1.1 ACL (Interesting Traffic 정의)

VPN을 구성하기 위해서는 먼저 어떤 트래픽을 VPN 터널로 보낼 것인지(Interesting Traffic) 정의해야 합니다.

 

1) ASA1

access-list VPN_ACL extended permit ip 192.168.1.0 255.255.255.0 192.168.2.0 255.255.255.0

ASA1에서는 내부망인 192.168.1.0/24에서 원격망인 192.168.2.0/24로 향하는 모든 IP 트래픽을 VPN 대상 트래픽으로 정의해야 합니다.

 

2) ASA2

access-list VPN_ACL extended permit ip 192.168.2.0 255.255.255.0 192.168.1.0 255.255.255.0

ASA2에서는 ASA1과 반대로 설정해야 하며, 내부망인 192.168.2.0/24에서 192.168.1.0/24로 향하는 트래픽을 정의해야 합니다.

양쪽 장비의 ACL이 반드시 대칭적으로 구성되어야 합니다.

 

1.2 NAT 예외

VPN 구성 시에는 트래픽이 NAT 되지 않도록 반드시 예외 처리를 해야 합니다.

VPN은 ACL에 정의된 IP를 기준으로 동작하기 때문에 주소가 변경되면 VPN 대상 트래픽으로 인식되지 않기 때문입니다.

 

1) ASA1

! 내부망 정의
object network LOCAL_NET  
 subnet 192.168.1.0 255.255.255.0

! 원격망 정의
object network REMOTE_NET  
 subnet 192.168.2.0 255.255.255.0

! VPN 트래픽 NAT 제외: 주소 변환 없이 그대로 전달
nat (inside,outside) source static LOCAL_NET LOCAL_NET destination static REMOTE_NET REMOTE_NET

ASA1에서는 내부망과 원격망을 각각 객체로 정의하고, NAT 설정에서 source와 destination을 그대로 유지하도록 설정하여 VPN 트래픽에 대해서는 NAT가 발생하지 않도록 해야 합니다.

 

2) ASA2

object network LOCAL_NET
 subnet 192.168.2.0 255.255.255.0
object network REMOTE_NET
 subnet 192.168.1.0 255.255.255.0
nat (inside,outside) source static LOCAL_NET LOCAL_NET destination static REMOTE_NET REMOTE_NET

ASA2에서도 동일하게 설정해야 하며, 반드시 ASA1과 대칭적으로 구성해야 합니다.

 

1.3 IKE Phase 1 (ISAKMP)

IKE Phase 1은 VPN 장비 간에 안전한 통신을 위해 보안 채널을 만드는 단계입니다.

crypto ikev1 enable outside  ! outside 인터페이스에서 IKE 활성화
crypto ikev1 policy 10
 authentication pre-share  ! 사전 공유키 방식 사용
 encryption aes  ! 데이터 암호화 알고리즘
 hash sha  ! 무결성 검증
 group 2  ! 키 교환 방식 (DH Group)
 lifetime 86400  ! 키 유지 시간

먼저 outside 인터페이스에서 IKE를 활성화하고, 정책(policy)을 정의하여 인증 방식(pre-share), 암호화 방식(AES), 무결성 검증(SHA), 키 교환 방식(Group 2)을 설정해야 합니다.

이 설정은 ASA1과 ASA2 모두 동일하게 구성해야 하며, 값이 일치하지 않으면 Phase 1 협상이 실패합니다.

 

1.4 Pre-Shared Key 설정

IKE Phase 1에서 설정한 인증 방식이 “pre-share”이기 때문에 실제 인증에 사용되는 키를 설정해야 합니다.

 

1) ASA1

tunnel-group 10.0.0.2 type ipsec-l2l  ! 상대 ASA 지정
tunnel-group 10.0.0.2 ipsec-attributes
 ikev1 pre-shared-key cisco123  ! 양쪽 동일한 비밀번호 설정

ASA1에서는 상대 ASA의 outside IP를 기준으로 tunnel-group을 생성해야 하며, 해당 그룹에 Pre-Shared Key를 설정해야 합니다.

 

2) ASA2

tunnel-group 10.0.0.1 type ipsec-l2l
tunnel-group 10.0.0.1 ipsec-attributes
 ikev1 pre-shared-key cisco123

ASA2에서는 ASA1의 IP를 대상으로 동일한 키를 설정해야 합니다.

 

1.5 Phase 2 (IPsec Transform Set)

Phase 2는 실제 데이터를 어떻게 암호화할 것인지 정의하는 단계입니다.

! 데이터 암호화 방식 정의 (AES = 암호화, SHA = 무결성)
crypto ipsec ikev1 transform-set MYSET esp-aes esp-sha-hmac

이 설정을 통해 ESP 기반 암호화를 사용하며, AES로 데이터 암호화를 수행하고, SHA로 무결성 검증을 수행하도록 정의해야 합니다. 이 설정 역시 양쪽 ASA에서 동일해야 합니다.

 

1.6 Crypto Map 적용

Crypto Map은 지금까지 설정한 모든 VPN 요소를 실제 인터페이스에 적용하는 단계입니다.

 

1) ASA1

crypto map VPN_MAP 10 match address VPN_ACL  ! 어떤 트래픽을 VPN으로 보낼지 지정
crypto map VPN_MAP 10 set peer 10.0.0.2  ! 상대 ASA 지정
crypto map VPN_MAP 10 set ikev1 transform-set MYSET  ! 암호화 방식 적용
crypto map VPN_MAP interface outside  ! VPN 설정을 인터페이스에 적용

ACL을 통해 VPN 대상 트래픽을 지정하고, 상대 ASA의 IP를 peer로 설정해야 하며, transform-set을 적용한 후 마지막으로 outside 인터페이스에 crypto map을 적용해야 합니다.

 

2) ASA2

crypto map VPN_MAP 10 match address VPN_ACL
crypto map VPN_MAP 10 set peer 10.0.0.1
crypto map VPN_MAP 10 set ikev1 transform-set MYSET
crypto map VPN_MAP interface outside

ASA2에서도 동일하게 설정하되, peer IP만 반대로 설정하면 됩니다~

 

2. VPN 상태 확인 (show 명령어)

1) show access-list

이 명령어는 VPN 대상 트래픽을 정의한 ACL이 정상 등록되었는지 확인하기 위해 사용합니다.

ASA1
ASA2

먼저 VPN_ACL이 생성되어 있는지 확인하고, ACL 안에 출발지 네트워크와 목적지 네트워크가 올바르게 설정되었는지 확인합니다~

 

2) show run nat

이 명령어는 NAT 예외 설정이 정상 적용되었는지 확인하기 위해 사용해야 합니다.

VPN은 ACL에 정의된 원본 IP 기준으로 동작하기 때문에 내부망과 원격망 사이의 트래픽이 NAT 되지 않아야 합니다. 만약 NAT가 적용되어 원본 IP가 변경되면, ASA는 해당 트래픽을 VPN 대상 트래픽으로 인식하지 못하게 됩니다.

ASA1, 2

이 구문이 의미하는 바는 다음과 같습니다.

  • inside에서 outside로 나가는 트래픽 중
  • 출발지가 LOCAL_NET이고 목적지가 REMOTE_NET인 경우
  • 주소를 변환하지 않고 그대로 전달하겠다는 의미입니다.

이 결과가 정상이라면 VPN 대상 트래픽은 NAT 되지 않고 원본 IP를 유지한 상태로 처리됩니다.

 

3) show run crypto map

이 명령어는 지금까지 설정한 VPN 관련 요소들이 실제로 하나의 VPN 정책으로 묶여 있는지 확인하기 위해 사용합니다.

ASA1, 2

crypto map VPN_MAP 10 match address VPN_ACL  ! ACL이 match address로 연결되어 있는지 확인
crypto map VPN_MAP 10 set peer 10.0.0.x  ! peer IP가 올바르게 설정되어 있는지 확인
crypto map VPN_MAP 10 set ikev1 transform-set MYSET  ! transform-set이 지정되어 있는지 확인
crypto map VPN_MAP interface outside  ! Crypto Map이 outside 인터페이스에 적용되어 있는지 확인

 

4) show crypto ikev1 sa

이 명령어는 IKE Phase 1 협상이 정상적으로 완료되었는지 확인하기 위해 사용합니다.

VPN은 트래픽이 발생해야 협상이 시작되기 때문에 VPC에서 ping과 같은 트래픽을 먼저 발생시킨 후 확인해야 합니다. 

ASA1

이 화면에서는 상대 장비와의 IKE 상태가 표시됩니다. 정상적인 경우 QM_IDLE 상태가 표시되어야 합니다. QM_IDLE은 다음과 같은 의미를 가집니다.

  • Phase 1 협상이 정상적으로 완료되었음을 의미합니다.
  • 상대 장비와 인증 및 보안 정책 협상이 끝났음을 의미합니다.
  • 이제 실제 IPsec 데이터 터널을 사용할 준비가 된 상태임을 의미합니다.

반대로 MM_ACTIVE, MM_WAIT_MSG, MM_NO_STATE와 같은 상태가 보인다면, 이는 아직 Phase 1 협상이 완전히 끝나지 않았거나 중간에 문제가 있다는 뜻입니다.

 

5) show crypto ipsec sa

이 명령어는 IPsec Phase 2가 정상적으로 형성되었는지, 그리고 실제 암호화된 패킷이 오가고 있는지를 확인하기 위해 사용합니다.

ASA1

이 화면에서는 먼저 local ident와 remote ident를 확인해야 합니다. 예를 들어 ASA1에서는 다음과 같은 의미로 확인됩니다.

  • local ident: 192.168.1.0/24
  • remote ident: 192.168.2.0/24

ASA2에서는 반대로 표시됩니다. 이 값은 VPN 터널을 통해 보호되는 네트워크 구간이 무엇인지 보여줍니다. 즉, ACL에서 정의한 네트워크가 실제 IPsec SA에 반영되었는지 확인하는 부분입니다.

 

다음으로 가장 중요하게 봐야 하는 것은 #pkts encaps와 #pkts decaps 값입니다.

  • encaps는 ASA가 패킷을 암호화하여 상대방에게 전송한 횟수를 의미합니다.
  • decaps는 상대방이 보낸 암호화 패킷을 복호화하여 내부망으로 전달한 횟수를 의미합니다.

이는 실제로 패킷이 암호화되어 전달되었고, 반대편에서도 이를 복호화하여 정상 처리했다는 뜻입니다.

 

또한 transform, SPI(Security Parameter Index), crypto endpoint와 같은 정보도 함께 확인할 수 있습니다.

  • transform 정보는 어떤 암호화 알고리즘이 사용되었는지 보여줍니다.
  • SPI는 IPsec SA를 식별하는 값입니다.
  • crypto endpoint는 실제 outside IP 간 터널이 형성되었는지 보여줍니다.

 

3. Wireshark를 통한 VPN 동작 검증

VPN이 정상적으로 구성되었는지 확인하기 위해서는 패킷이 암호화되어 전달되는지 확인해야 합니다.

이를 위해 Wireshark를 활용하여 inside 인터페이스와 outside 인터페이스를 각각 캡처하여 비교해 봤습니다~

 

1) Outside 인터페이스 확인

outside 인터페이스에서는 VPN 터널을 통과한 트래픽을 확인할 수 있습니다.

Outside 인터페이스

(1) 프로토콜 확인

ESP (Encapsulating Security Payload)

이는 IPsec VPN에서 사용되는 암호화 프로토콜입니다.

 

(2) Source / Destination IP 확인

10.0.0.1 → 10.0.0.2

내부 IP(192.168.x.x)가 아닌 ASA의 outside IP로 통신하는 것이 정상입니다.

 

 

2) Inside 인터페이스 확인

Inside 인터페이스에서는 암호화되기 전의 원본 트래픽을 확인할 수 있습니다.

Inside 인터페이스

(1) 프로토콜 확인

ICMP Echo Request / Reply

ping을 수행했기 때문에 ICMP 프로토콜이 확인됩니다.

 

(2) Source / Destination IP 확인

192.168.1.10 → 192.168.2.10

실제 통신하려는 내부 IP가 그대로 보입니다.

 

끝.

728x90
SMALL