FortiGate 100D seadme kasutamine IPSec VPN lüüsina

Allikas: Imre kasutab arvutit

Sissejuhatus

FortiNet http://www.fortinet.com/ toodab muu hulgas FortiGate seadmeid. Käesolevas tekstis käsitletakse FortiGate 100D seadme kasutamist kaugligipääsu IPSec lahendusena; ja ei käistleta nn SSL-VPN kasutamist. VPN kliendi poolse seadmena rakendatakse tutvustuseks OpenBSD operatsioonisüsteemi, kliendid asuvad OpenBSD taguses võrgus.

NB! Tundub, et 2017 aastal töötab FG veebipõhine liides kõige paremini Windows töökohaarvutist Chrome brauseriga. Nt Linuxist kasutades ei ole vasakus paneelis näha System sektsiooni.

Mõisted

  • FortiOS - FG seadmel töötav operatsioonisüsteem
  • UTM - Unified Threat Management, FG seadmed kuuluvad sellise üldise nimega seadmerühma

Tööpõhimõte

Fortigate 100D seadmel realiseeritud IPSec VPN lüüs töötab põhimõtteliselt nagu nö tavaline FG tulemüür, kuid lisaks füüsilistele (ja vlan) liidestele on seal kasutusel virtuaalsed IPSec andmevahetusega seotud võrguliidesed. Konkreetse kasutaja jaoks VPN ühenduse ettevalmisamine sisaldab selliseid tegevusi

  • moodustatakse aadressiobjektid - kaugligipääseja remote võrkudele ja vpn lüüsi enda küljes olevatele võrkudele
  • moodustatakse tunnel - tunneline vastab virtuaal ipsec võrguliides, ühenduse moodustamisel kasutatavad krüpto parameetrite kirjeldused jms
  • tekitatakse static ruuting seostades ta kliendi ipsec võrguliidesega
  • seadistatakse paketifiltri abil üle milliste ingress ja egress võrguliideste võivad milliste src ja dst aadressidega paketid liikuda

Käesoleva teksti kasutamise tulemusena peaks hakkama käima kahe võrgusõlme taha ühendatud subneti arvutite vahel üle IPSec kanali liiklus (ja mitte tingimata OpenBSD ja FG siseselt genereeritud pakettide jaoks)

        ______________  internet  _______________________
       |                                                 |
     __|__                                             __|__
    |     | OpenBSD 10.80.103.5                       |     | FG 192.80.103.55
    |     |                                           |     |
    |_____|                                           |_____|
       |                                                 |
   ----|------- 192.168.69.0/24 ---                 -----|--------- 10.0.9.0/24 ----

Aadress objektid

Tekitatakse local ja remote võrkude aadresside objektid valides

Policy & Objects -> Objects -> Addresses

Fg-ipsec-vpn-1.gif

kus

  • Name - VPN-remote-subnet-Priit-192.168.69.0/24, aadress objekti nimi
  • Subnet / IP Range - aadress objektiga seotud ip aadress või subneti aadress
  • Interface - ebamäärase tähendusega, parem kui see oleks kokkuvõttes asjakohane (segaseks teeb väärtuse valimise selliselt asjaolu, et Tunnel on veel puudu)

Tunnel objekt

Tekitakse Tunnel objekt

VPN -> IPsec -> Tunnels -> Create New -> Custom VPN Tunnel (No Template) -> Priit-VPN -> Next

ning täidetakse lahtrid sarnaselt alltoodule

  • üldosa
  • phase 1
  • phase 2 (iga subneti jaoks oma sissekanne)

Üldosa

VPN ühenduse üldosa

Fg-ipsec-vpn-2.gif

kus

  • Name - tunneli nimi, see saab ka nn ispec virt võrguseadme nimeks
  • Remote Gateway - klient töötab fikseeritud ip aadressilt
  • IP Address - kliendi ip
  • Interface - millise fg seadme füüsilise liidese kaudu vastavat vpn ühendust teenindatakse
  • Auth methoid - preshared key
  • võtmevahetusprotokoll - IKE v. 1
  • võtmevahetusprotokolli režiim - Main (ühenduse moodustamine on pisut kallim, aga turvaslisem)

Phase 1

IPSec phase 1 kirjeldamise osa

Fg-ipsec-vpn-3.gif

kus

  • encryption šiffer - AES256
  • authentication šiffer - SHA1
  • DH grupp - 2
  • võtme eluiga - õõpäev
  • xauth ei ole kasutuses (ipsec peale aretatud häkk kasutajanime ja parooliga autentimiseks)

Phase 2

IPSec phase 2 kirjeldamise osa

Fg-ipsec-vpn-4.gif

kus

  • Phase 2 Selectors nimekiri täitub nagu allpool lahtreid täidetakse
  • phase 2 sissekande nimi (igale üle vpn ruuditavale võrgule vastab üks sissekanne)
  • local address - fg seadme küljes olev võrk
  • remote address -fg vpn kliendi küljes olev võrk
  • krüptimise šiffer - AES256
  • autentimise šiffer - SHA1
  • DH grupp - 2
  • võtme eluiga 3600

Kui edaspidi on vaja rohkem võrke või hoste üle vpn ruutida, siis saab neid lisada.

Paketifiltri reeglid

Tektitakse paketifiltri reeglid

Policy & Objects -> Policy -> IPv4

Fg-ipsec-vpn-5.gif

kus

  • Incoming Interface - Priit-VPN
  • Source Address - VPN-remote-subet-Priit-192.168.69.0/24
  • Outgoing Interface - Tugiteenused
  • Destination Address - SUBNET-tugiteenused-10.0.9.0/24

Iseenesest IPSec lubaks liiklust mõlemas suunas, aga tänu sellistele paketifiltri reeglitele FG laseb läbi ainult liiklust kliendist enda taha olevasse subneti. Tõsi, seda ei peaks võtma klient enda kaitsmisena, klient peaks ikka ise ennast kaitsma OpenBSD paketifiltriga.

Staatiline ruuting

Tekitada static ruuting seostades ta kliendi ipsec võrguliidesega

Router -> Static -> Static Routes

ning täidetakse lahtrid

  • Destination IP/Mask - 192.168.69.0/255.255.255.0
  • Device - Priit-VPN
  • Administrative Distance - 10
  • Priority - 0

OpenBSD kliendi kasutamine

Operatsioonisüsteem OpenBSD põhiosa sisaldab IPSec kasutamiseks sobivaid vahendeid. Seadistamiseks tuleb ettevalmistada võtmevahetuse seadistusfail

# cat /etc/isakmpd/isakmpd.conf                                                                                                            
[General]
Listen-on=10.80.103.55
Default-phase-1-lifetime = 86400,60:86400
Default-phase-2-lifetime = 3600,60:86400

kus

  • Listen-on - kohaliku arvuti ip aadress
  • lifetime väärtused peavad sobima FG seadmes kasutatud väärtustega

ning ettevalmistada IPSec phase 1 ja 2 seadisusfail

# cat /etc/ipsec.conf                                                                                                                      
ike active esp from 192.168.69.0/24 to { 10.0.9.0/24 } \
  local 10.80.103.55 peer 192.80.103.55 \
  main auth hmac-sha1 enc aes-256 group modp1024 lifetime 86400 \
  quick auth hmac-sha1 enc aes-256 group modp1024 lifetime 3600 \
  psk "presharedparool"

kus

  • from järel on kohaliku tulemüüri küljes olev võrk; to järel on FG küljes olev võrk
  • local on kohaliku arvuti ip aadress, peer on FG ip aadress
  • lifetime väärtused peavad sobima FG seadmes kasutatud väärtustega

Seejärel tuleb tõsta üles enc0 seade

# ifconfig enc0 up

ning käivitada ruuting

# sysctl -w net.inet.ip.forwarding=1

IPSec teenuse käivitamiseks sobib öelda

# isakmpd -vKd
192854.164065 Default isakmpd: starting [priv]
192916.020191 Default isakmpd: phase 1 done: initiator id 10.80.103.55, responder id 192.80.103.55, \
  src:  10.80.103.55 dst: 192.80.103.55
192916.067683 Default isakmpd: quick mode done: src: 10.80.103.55 dst: 192.80.103.55
192916.074249 Default isakmpd: quick mode done: src: 10.80.103.55 dst: 192.80.103.55
..

ning öelda

# ipsecctl -f /etc/ipsec.conf

Tulemust saab kontrollida

# ipsecctl -sa

Kasutamisel tuleb tähele panna, et antud asjakorralduse puhul OpenBSD ruudib üle IPSec kanali töötavat liiklust. OpenBSD arvuti tavaline lokaalne liiklus kanalile ei satu vaikimisi, kuigi seda saab esile kutsuda, nt

# ping -I 192.168.69.1 10.0.9.4

Debugimine

Haldusliideses

Haldusliideses liikuda

System -> Network -> Packet Capture
Käsureal

Tundub, et on kaks sniffimist

  • flow - info liiklusest policy'te rakendumise jms abstraksema taseme liikluse kohta
  • packet - klassikaline tcpdump

flow

SSH shellis öelda

# diag debug enable
# diag debug flow filter add ip.add.re.ss
# diag debug flow show console enable
# diag debug flow trace start 100

ja siis on näha vist sama konsooli peal midagi sellist

id=20085 trace_id=411 msg="vd-root received a packet(proto=6, \
  10.204.62.115:53605->10.80.109.172:443) from WAN2 772."
id=20085 trace_id=411 msg="allocate a new session-0a899df8"
id=20085 trace_id=411 msg="find a route: gw-10.80.109.172 via vdl00"
id=20085 trace_id=411 msg="use addr/intf hash, len=3"
id=20085 trace_id=411 msg="Allowed by Policy-4:"
id=20085 trace_id=412 msg="vd-main received a packet(proto=6, \
  10.204.62.115:53605->10.80.109.172:443) from vdl01."
id=20085 trace_id=412 msg="allocate a new session-0a899df9

nn debug režiimi lõpetab

# diag debug disable

või shellis 'exit' ütlemine.

packet

SSH shellis öelda

# diag sniffer packet any "icmp"

Seadme nimi vaadata veebipõhises haldusliideses järele ja öelda nt

VPNHA1 # diag sniffer packet Priit-VPN 'host 192.168.69.5'
interfaces=[Priit-VPN]
filters=[host 192.168.69.5]
pcap_lookupnet: Priit-VPN: no IPv4 address assigned
87.494280 192.168.69.5.62356 -> 10.0.9.174.23: syn 2402616537 
87.494939 10.0.9.174.23 -> 192.168.69.5.62356: rst 0 ack 2402616538 
...

VPN

# diag debug ike
# show vpn ipsec phase1-interface
config vpn ipsec phase1-interface
  edit "Imre-VPN-2"
      set interface "wan1"
      set proposal aes256-sha1
      set npu-offload disable
      set dhgrp 2
      set remote-gw 10.204.62.116
      set psksecret ENC QcxQCYmfG9bPJGOfp .. QsSUams3ZNTKdQ==
  next
...
# show vpn ipsec phase2-interface
...

VLAN lisamine

Tõenäoliselt on FG seade ühendatud võrguga mingisse switch ühendatud füüsilise kaabli kaudu abil. Ja seal kaabli peal liiguvad vlan siltidega paketid. Mingil hetkel lisatakse keskkonda juurde järgmine vlan ja selle uue vlan kasutamine tuleb FG seadmele selgeks õpetada. Ilmselt peab lisaks ka teises otsas oleva switchi pordile õpetama uue vlaniga tegelemist.

VLAN liidese tekitamiseks tuleb valida

System -> Create New -> Interface

ja paisab selline pilt

Fg-ipsec-vpn-6.gif

kus

  • Interface - port1 - millisesse porti on füüsiline kaabel ühendatud
  • IP/Network Mask - 192.168.14.245/255.255.255.0 - fg seadme ip uues vlanis

VLAN tsooni tekitamiseks tuleb valida

System -> Create New -> Zone

ja paistab selline pilt

Fg-ipsec-vpn-7.gif

kus

  • Interface members - märkida ära vastav port

VLAN aadress objekti tekitamiseks tuleb valida

Policy & Objects -> Objects -> Addresses

ja paistab selline pilt

Fg-ipsec-vpn-8.gif

Tulemusena saab kasutada uut vlani nii nagu olemasolevaid vlannisid, mida on kirjeldatud käesoleva teksti põhiosas.

Kasulikud materjalid