Profile picture

[EVE-NG] EVE-NG에서 방화벽(Fortigate)으로 IPSec VPN 구축 해보기

JaehyoJJAng2024년 07월 11일

개요

Fortigate 방화벽 장비를 활용하여 본사와 지사 간 IPSec VPN을 구축하는 방법에 대해 기록해보려고 한다.


실습 구성도

image
image

  • Backbone 스위치와 Fortigate 간의 연결은 라우티드 모드로 설정
  • 본사 Backbone 스위치와 Access Switch 간 VRRP 설정
  • 본사 백본 스위치 간 인터링크는 LACP로 설정

사전 준비

IP 주소 계획

  • 구성을 시작하기 전에 명확한 IP 주소 계획이 필요하다.

방화벽

지점 장비 포트 IP 주소
본사 HQ(방화벽) port1 <공인 IP>
본사 HQ(방화벽) port2 10.0.0.1/30
본사 HQ(방화벽) port3 10.0.0.5/30
지사 Branch(방화벽) port1 <공인 IP>
지사 Branch(방화벽) port2 10.0.1.1/27

백본

지점 장비 포트 IP 주소
본사 HQ_BB1 Gi0/0 10.0.0.2/30
본사 HQ_BB1 VLAN 2 10.0.0.9/30
본사 HQ_BB1 VLAN55 VIP 10.0.0.33/27
본사 HQ_BB1 VLAN66 VIP 10.0.0.65/27
본사 HQ_BB1 VLAN55 10.0.0.34/27
본사 HQ_BB1 VLAN66 10.0.0.66/27
본사 HQ_BB2 Gi0/0 10.0.0.6/30
본사 HQ_BB2 VLAN 2 10.0.0.10/30
본사 HQ_BB2 VLAN55 VIP 10.0.0.33/27
본사 HQ_BB2 VLAN66 VIP 10.0.0.65/27
본사 HQ_BB2 VLAN55 10.0.0.35/27
본사 HQ_BB2 VLAN66 10.0.0.67/27

VPN 설정 정보

  • Pre-shared Key: YourStrongPSK (강력한 비밀번호로 변경 필요)
  • 암호화 알고리즘: AES256/SHA256
  • Deffie-Hellman 그룹 (DH 그룹): 14
  • IKE 버전: IKEv2

본사 Fortigate 설정

인터페이스 설정

1. HQ_BB1와 연결된 인터페이스 (port2)

HQ_BB1와 포티게이트 간의 연결을 라우티드 모드로 설정하기 위해 port2에 IP 주소를 할당

config system interface
  edit "port2"
    set ip 10.0.0.1 255.255.255.252
    set allowaccess ping https ssh
    set alias "To_Backbone_SW1"
  next
end

2. HQ_BB2와 연결된 인터페이스 (port3)

HQ_BB2와 포티게이트 간의 연결을 라우티드 모드로 설정하기 위해 port3에 IP 주소를 할당

config system interface
  edit "port3"
    set ip 10.0.0.5 255.255.255.252
    set allowaccess ping https ssh
    set alias "To_Backbone_SW2"
  next
end

3. WAN 인터페이스 (port1)

공인망과 연결되는 인터페이스 설정

config system interface
    edit "port1"
        set mode static
        set ip 192.168.219.99 255.255.255.0
        set allowaccess ping https ssh
        set alias "WAN"
    next
end

config router static
  edit 1
    set dst 0.0.0.0/0
    set gateway 192.168.219.1
    set device port1

주소 객체 설정

VPN 터널의 소스와 대상 네트워크를 정의하기 위해 주소 객체 설정

config firewall address
  edit "HQ_Network"
    set subnet 10.0.0.0 255.255.255.0
  next
  edit "Branch_Network"
    set subnet 10.0.1.0 255.255.255.0
  next
end
  • HQ_Network: 본사 내부 네트워크 주소
  • Branch_Network: 지사 내부 네트워크 주소

IPSec VPN 설정

1. Phase 1 설정

VPN 터널의 Phase 1 설정 구성

config vpn ipsec phase1-interface
  edit "HQ_to_Branch_P1"
    set interface "port1"
    set ike-version 2
    set peertype any
    set net-device enable
    set proposal aes256-sha256
    set dhgrp 14
    set remote-gw 192.168.219.100
    set psksecret YourStrongPSK
  next
end
  • set interface: VPN 터널이 사용할 물리적 인터페이스를 지정
  • set ike-version: IKE 버전을 설정 (여기서는 IKEv2)
  • set proposal: 암호화 및 인증 알고리즘을 지정
  • set remote-gw: VPN 터널의 원격 게이트웨이 IP를 설정
  • set psksecret: Pre-shared Key를 설정

2. Phase 2 설정

VPN 터널의 Phase 2 설정 구성

config vpn ipsec phase2-interface
  edit "HQ_to_Branch_P2"
    set phase1name "HQ_to_Branch_P1"
    set proposal aes256-sha256
    set pfs disable
    set src-subnet 10.0.0.0 255.255.255.0
    set dst-subnet 10.0.1.0 255.255.255.0
  next
end
  • set phase1name: 해당 Phase 2가 참조할 Phase 1 이름 지정
  • set src-subnet: 본사 쪽의 네트워크 서브넷 설정
  • set dst-subnet: 지사 쪽의 네트워크 서브넷 설정

라우팅 설정

지사 네트워크로의 트래픽이 VPN 터널을 통해 전달되도록 라우팅 설정

config router static
  edit 1
    set dst 10.0.1.0 255.255.255.0
    set device "HQ_to_Branch_P1"
  next
end
  • set dst: 목적지 네트워크 설정
  • set device: 해당 트래픽이 전달될 인터페이스(VPN 터널)를 지정

방화벽 정책 설정

트래픽이 방화벽을 통과할 수 있도록 정책 설정


1. 본사 내부 -> 지사 네트워크

config firewall policy
  edit 1
    set name "HQ_to_Branch"
    set srcintf "port2"
    set dstintf "HQ_to_Branch_P1"
    set srcaddr "HQ_Network"
    set dstaddr "Branch_Network"
    set action accept
    set schedule "always"
    set service "ALL"
  next
end

config firewall policy
  edit 2
    set name "HQ_to_Branch"
    set srcintf "port3"
    set dstintf "HQ_to_Branch_P1"
    set srcaddr "HQ_Network"
    set dstaddr "Branch_Network"
    set action accept
    set schedule "always"
    set service "ALL"
  next
end
  • set srcintf: 트래픽의 출발 인터페이스를 지정
  • set dstintf: 트래픽의 도착 인터페이스를 지정
  • set action accept: 트래픽을 허용

2. 지사 네트워크 -> 본사 내부

config firewall policy
  edit 3
    set name "Branch_to_HQ"
    set srcintf "HQ_to_Branch_P1"
    set dstintf "port2"
    set srcaddr "Branch_Network"
    set dstaddr "HQ_Network"
    set action accept
    set schedule "always"
    set service "ALL"
  next
end

config firewall policy
  edit 4
    set name "Branch_to_HQ"
    set srcintf "HQ_to_Branch_P1"
    set dstintf "port3"
    set srcaddr "Branch_Network"
    set dstaddr "HQ_Network"
    set action accept
    set schedule "always"
    set service "ALL"
  next
end

지사 Fortigate 설정

본사 Fortigate 설정과 거의 동일하지만, IP 주소와 인터페이스 명칭에 주의해야 한다.


인터페이스 설정

1. Branch-SW와 연결되는 인터페이스 설정 (port2)

config system interface
    edit "port2"
        set ip 10.0.1.01 255.255.255.0
        set allowaccess ping https ssh
        set alias "internal"
    next
end

2. WAN 인터페이스 (port1)

공인망과 연결되는 인터페이스 설정

config system interface
    edit "port1"
        set ip 192.168.219.100 255.255.255.0
        set allowaccess ping https ssh
        set alias "WAN"
    next
end

config router static
  edit 1
    set dst 0.0.0.0/0
    set gateway 192.168.219.1
    set device port1

주소 객체 설정

config firewall address
  edit "Branch_Network"
    set subnet 10.0.1.0 255.255.255.0
  next
  edit "HQ_Network"
    set subnet 10.0.0.0 255.255.255.0
  next
end

IPSec VPN 설정

1. Phase 1 설정

config vpn ipsec phase1-interface
  edit "Branch_to_HQ_P1"
    set interface "port1"
    set ike-version 2
    set peertype any
    set net-device enable
    set proposal aes256-sha256
    set dhgrp 14
    set remote-gw 192.168.219.99
    set psksecret YourStrongPSK
  next
end

2. Phase 2 설정

config vpn ipsec phases2-interface
  edit "Branch_to_HQ_P2"
    set phase1name "Branch_to_HQ_P1"
    set proposal aes256-sha256
    set pfs disable
    set src-subnet 10.0.1.0 255.255.255.0
    set dst-subnet 10.0.0.0 255.255.255.0
  next
end

라우팅 설정

config router static
  edit 1
    set dst 10.0.0.0 255.255.255.0
    set device "Branch_to_HQ_P1"
  next
end

방화벽 정책 설정

1. 지사 내부 -> 본사 네트워크

config firewall policy
  edit 1
    set name "Branch_to_HQ"
    set srcintf "port2"
    set dstintf "Branch_to_HQ_P1"
    set srcaddr "Branch_Network"
    set dstaddr "HQ_Network"
    set action accept
    set schedule "always"
    set service "ALL"
  next
end

2. 본사 네트워크 -> 지사 내부

config firewall policy
  edit 2
    set name "HQ_to_Branch"
    set srcintf "Branch_to_HQ_P1"
    set dstintf "port2"
    set srcaddr "HQ_Network"
    set dstaddr "Branch_Network"
    set action accept
    set schedule "always"
    set service "ALL"
  next
end

백본 스위치 설정

HQ_BB1

1. STP Root Bridge 설정

# 빠른 연결을 위해 RSTP 모드로 변경
spanningtree mode rapid-pvst

# Bridge 선정을 위한 우선순위 낮추기
spanningtree vlan 10,20,30,40 priority 4096

2. VLAN 생성

VLAN 55
name Business

VLAN 66
name Sales

3. VLAN 인터페이스 생성

int vlan 55
  no shut
  ip add 10.0.0.34 255.255.255.224
  vrrp 55 ip 10.0.0.33
  vrrp 55 timers learn
  vrrp 55 preempt delay minimum 10
  vrrp 55 priority 200

int vlan 66
  no shut
  ip add 10.0.0.66 255.255.255.224
  vrrp 66 ip 10.0.0.65
  vrrp 66 timers learn
  vrrp 66 preempt delay minimum 10
  vrrp 66 priority 200

4. HQ_ASW 스위치 간 인터페이스 설정

int g1/0 # HQ_ASW-1
  no shut
  switchport mode trunk
  switchport trunk allwed vlan 55,66

int g0/3 # HQ_ASW-2
  no shut
  switchport mode trunk
  switchport trunk allwed vlan 55,66

5. 인터링크(Interlink) 설정: HQ_BB1 --- HQ_BB2

HQ_BB2 연결 구간은 LACP + 스태틱 라우팅으로 묶어주자.

먼저 HQ_BB2 간에 연결할 Connected IP를 VLAN으로 생성해주자.

vlan 2
  name BB_LACP

int vlan 2
  no shut
  ip add 10.0.0.9 255.255.255.252

VLAN 2번의 경우 사용자 IP가 아닌 Connected IP로 사용되기에 VRRP 설정을 하지 않는다.


6. PortChannel 생성

int port-channel 1
  switchport mode trunk
  switchport trunk allowed vlan 1,2,55,66

int range g0/1-2 # HQ_BB1 - HQ_BB2 연결 포트
  channel-group 1 mode active
  channel-protocol lacp
  exit

7. 디폴트 라우트 설정

ip route 0.0.0.0 0.0.0.0 <방화벽의 내부 인터페이스 IP>

HQ_BB2

1. STP Root Bridge 설정

# 빠른 연결을 위해 RSTP 모드로 변경
spanningtree mode rapid-pvst

# Bridge 선정을 위한 우선순위 낮추기
spanningtree vlan 10,20,30,40 priority 8192

2. VLAN 생성

VLAN 55
name Business

VLAN 66
name Sales

3. VLAN 인터페이스 생성

int vlan 55
  no shut
  ip add 10.0.0.35 255.255.255.224
  vrrp 55 ip 10.0.0.33
  vrrp 55 timers learn

int vlan 66
  no shut
  ip add 10.0.0.67 255.255.255.224
  vrrp 66 ip 10.0.0.65
  vrrp 66 timers learn

4. HQ_ASW 스위치 간 인터페이스 설정

int g1/0 # HQ_ASW-1
  no shut
  switchport mode trunk
  switchport trunk allwed vlan 55,66

int g0/3 # HQ_ASW-2
  no shut
  switchport mode trunk
  switchport trunk allwed vlan 55,66

5. 인터링크(Interlink) 설정: HQ_BB1 --- HQ_BB2

HQ_BB1 연결 구간은 LACP + 스태틱 라우팅으로 묶어주자.

먼저 HQ_BB1 간에 연결할 Connected IP를 VLAN으로 생성해주자.

vlan 2
  name BB_LACP

int vlan 2
  no shut
  ip add 10.0.0.10 255.255.255.252

VLAN 2번의 경우 사용자 IP가 아닌 Connected IP로 사용되기에 VRRP 설정을 하지 않는다.


6. PortChannel 생성

int port-channel 1
  switchport mode trunk
  switchport trunk allowed vlan 1,2,55,66

int range g0/1-2 # HQ_BB1 - HQ_BB2 연결 포트
  channel-group 1 mode active
  channel-protocol lacp
  exit

7. 디폴트 라우트 설정

ip route 0.0.0.0 0.0.0.0 <방화벽의 내부 인터페이스 IP>

최종 확인 및 테스트

1. VPN 터널 상태 확인

본사 Fortigate에서

get vpn ipsec tunnel summary

터널이 정상 설정되었는지 확인


지사 Fortigate에서

get vpn ipsec tunnel summary

2. 통신 테스트

본사 측 PC에서 지사 측 PC로 통신 테스트


Loading script...