Cisco IPsec

From HackerNet
Revision as of 13:21, 25 November 2016 by Helikopter (talk | contribs)
Jump to: navigation, search

IPsec (RFC 4301) är en teknik för att skydda datakommunikation och räknas som en secure VPN. Det finns i tunnel och transport mode beroende på om det ska tunnlas och krypteras eller endast krypteras. IPsec funkar med IPv4/IPv6 och kan köras över en GRE-tunnel. Virtual Tunnel Interface (VTI) är routebara interface som används för att terminera IPsec-tunnlar, detta gör IPsec flexibelt och det kan användas både för unicast och multicast.

Se även Cisco Security, Cisco DMVPN och ASA VPN.

Konfiguration

Legacy

IPsec VPN med crypto maps och IKEv1 är den äldsta och minst skalbara varianten av IPsec VPN.

crypto isakmp policy 10
 encryption aes 256
 authentication pre-share
 group 20
 lifetime 86400

show crypto isakmp policy

PSK Authentication

crypto isakmp key S3cr3ts address 3.3.3.3

show crypto isakmp key

Fas 2

crypto ipsec transform-set PHASE2 esp-aes esp-sha-hmac
 mode tunnel
ip access-list extended CRYPTO
 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255

crypto map VPNMAP 10 ipsec-isakmp
 set peer 3.3.3.3
 set transform-set PHASE2
 match address CRYPTO

Interfaces

interface GigabitEthernet0/1
 description Internet
 ip address 2.2.2.2 255.255.255.0
 crypto map VPNMAP

interface GigabitEthernet0/2
 description Inside
 ip address 192.168.1.1 255.255.255.0

Verify Fas 1 och 2. Inget förhandlas förens det skickas trafik som triggar tunneln.

show crypto isakmp sa
show crypto ipsec sa
show crypto session

Reverse Route Injection

crypto map VPNMAP 10 ipsec-isakmp
 set reverse-route distance 10

Loopback

crypto map VPNMAP local-address Loopback0

GRE over IPsec with Profile

En fördel med att tunnla trafiken med GRE är att routingprotokoll kan användas över tunneln. Trafiken krypteras efter att det har enkapsulerats med GRE. Man bör manuellt ange ip mtu på tunnel-interfacet för det tar ej hänsyn till ESP-enkapsuleringen som lägger till overhead.

crypto isakmp policy 10
 encryption aes 256
 authentication pre-share
 group 20
 lifetime 86400

crypto isakmp key S3cr3ts address 3.3.3.3    

crypto ipsec transform-set PHASE2 esp-aes esp-sha-hmac 
 mode transport  #Spara overhead genom att köra i transport mode

crypto ipsec profile GRE_OVER_IPSEC
 set transform-set PHASE2 

interface Tunnel0
 ip address 1.1.1.1 255.255.255.0
 ip mtu 1400
 ip tcp adjust-mss 1360
 tunnel source Loopback0
 tunnel destination 3.3.3.3
 tunnel protection ipsec profile GRE_OVER_IPSEC

Verify

show crypto ipsec profile

VTI

Med VPN som byggs med Virtual Tunnel Interface kan man både använda dynamic routing och multicast. Det fungerar likadant som GRE över IPsec men annan enkapsulering används. Payloaden enkapsuleras direkt i IPsec som är en IP-enkapsulering därför stöds inget annat än IP (så t.ex. IS-IS fungerar ej). Detta gör att tunnel-interfacet vet sin korrekta mtu. VTI konfigureras likadant som GRE över IPsec med profil men med en skillnad, här följer därför endast skillnaden samt att transform set alltid måste köras i tunnel mode.

crypto ipsec transform-set PHASE2 esp-aes esp-sha-hmac 
 mode tunnel

interface Tunnel0
 tunnel mode ipsec ipv4

Verify

show crypto ipsec sa
show crypto session

Local och remote kommer alltid att förhandlas som 0.0.0.0/0 <-> 0.0.0.0/0 vilket gör att det aldrig behövs mer än en entry per tunnel.

IKEv2

IKEv2 har inbyggt stöd för NAT traversal och ID är alltid skyddat till skillnad från IKEv1 aggressive mode.

Key ring

crypto ikev2 keyring IKEv2_KEYRING
 peer SITE2
  address 3.3.3.3
  pre-shared-key local PSK01
  pre-shared-key remote PSK02

Proposal

crypto ikev2 proposal IKEv2_PROPOSAL
 encryption aes-cbc-256
 integrity sha512
 group 20

show crypto ikev2 proposal

Används aes-gcm måste prf köras på båda sidor.

Profile

crypto ikev2 profile IKEv2_PROFILE
 match identity remote address 3.3.3.3 255.255.255.255
 identity local address 2.2.2.2
 authentication remote pre-share
 authentication local pre-share
 keyring local IKEv2_KEYRING

show crypto ikev2 profile

Policy

crypto ikev2 policy IKEv2_POLICY
 proposal IKEv2_PROPOSAL

show crypto ikev2 policy

Transform set

crypto ipsec transform-set SITE2 esp-aes 256 esp-sha-hmac
 mode tunnel

show crypto ipsec transform-set

Crypto map

crypto map IKEv2_MAP 1000 ipsec-isakmp
 set peer 3.3.3.3
 set transform-set SITE2
 match address CRYPTO
interface gi2
 crypto map IKEv2_MAP
show crypto map

Verify

show crypto ikev2 sa

Others

QoS
Eftersom trafiken är enkapsulerad och krypterad måste QoS-beslut fattas innan, man kan använda QoS pre-classify på crypto map. Se även Cisco QoS.

crypto map VPNMAP 10 ipsec-isakmp 
 qos pre-classify

High Availability

Det finns inget samspel mellan IPSec och HSRP, dvs HSRP kan inte hålla koll på IPSec's SA state och IPSec vet inte när HSRP gör en failover. Däremot kan man konfigurera crypto-mapen att sourcea IKE fas 1 och 2 från HSRP VIP. HSRP group names bör matcha på båda enheterna. Även om HSRP konvergerar snabbt kan det ta en stund innan IPsec-tunnlar är uppsatta på nytt efter en failover. Därför är denna metod inte optimal utan det man t.ex. kan göra istället är att ha uppe två tunnlar parallellt och sedan styra routingen med IP SLA.

crypto dynamic-map VPNMAP 10
 set transform-set PHASE2
 match address ACL
 reverse-route

crypto map CRYPTO 10 ipsec-isakmp dynamic VPNMAP

interface GigabitEthernet0/1
 standby 1 name IPSEC
 crypto map CRYPTO redundancy IPSEC

GET VPN

Group Encrypted Transport VPN är en Cisco proprietary VPN-teknik som inte använder point-to-point-tunnlar utan istället tillhandahåller any-to-any kryptering genom att alla inblandade enheter kör med samma IPsec-nycklar. Group Domain Of Interpretation (RFC 3547) är ett group key management protocol som används för att distribuera dessa nycklar till alla Group Members (IOS devices) som vill ha det. GDOI körs mellan GM och Key Server. KS är en IOS-enhet som är ansvarig för att skapa och hålla koll på GET VPN control plane. All policy konfigureras på den som t.ex. krypteringsalgoritmer, timers och vilken trafik som ska krypteras. Detta laddas sedan ner av GMs under registreringen. Även om inte all policy är intressant för alla kommer det fortfarande att hämtas från KS. GET VPN har stöd för multipla KS för HA och GMs kan konfigureras att registrera med flera. Den KS med högst prio blir primary KS och övriga blir secondary. Vid lika används högst IP som tiebreaker. Nycklarna refreshas med jämna mellanrum (default 24h) genom en rekey-process. Detta görs med UDP 848 antingen med unicast eller multicast. Använder man unicast kommer varje GM att skicka ACK message som svar på den nya nyckeln. Det är endast primary KS som skickar rekey messages. Normalt sett får GMs skicka trafik utan kryptering innan man har registrerat sig med KS, detta kallas Fail-Open.

GET VPN använder Tunnel mode IPSec men istället för att använda tunnel endpoints i den nya IP-headern återanvänds orginal-IP. Detta gör att GET VPN inte passar bra att köra över internet eftersom där kan inte privata adresser routas. Därför är GET VPN bäst lämpat för privata nät, t.ex. som gör över MPLS VPN eller VPLS. Vill man däremot köra det över internet kan man kombinera det med DMVPN.

GDOI Payloads

  • GDOI SA
  • SA KEK: används för att säkra GET VPN control plane
  • SA TEK: används för att säkra data plane
  • Key Download (KD)
  • Sequence Number (SEQ)
  • Proof of Possession (POP)

Konfiguration

Key Server
Generera RSA-nycklar

crypto key generate rsa general-keys label GDOI_KEYS modulus 2048 exportable

KS har all IPsec-konf som sedan laddas ner av gruppmedlemmarna

crypto isakmp policy 10
 authentication pre-share

crypto isakmp key 0 SECRET address 2.2.2.2   #GM-1
crypto isakmp key 0 SECRET address 3.3.3.3   #GM-2 
crypto isakmp key 0 SECRET address 4.4.4.4   #GM-3 

crypto ipsec transform-set PHASE2 esp-aes esp-sha-hmac

crypto ipsec profile GDOI_PROFILE
 set transform-set PHASE2

ip access-list extended SYMMETRIC_ACL
 permit ip 172.16.0.0 0.0.255.255 172.16.0.0 0.0.255.255 

crypto gdoi group GDOI_GROUP
 identity number 123
 server local
  rekey transport unicast
  rekey authentication mypubkey rsa GDOI_KEYS
  rekey retransmit 60 number 2
  sa ipsec 1
   profile GDOI_PROFILE
   match address ipv4 SYMMETRIC_ACL
   replay time window-size 5
  address ipv4 1.1.1.1 

Group Member

crypto isakmp policy 10
 authentication pre-share

crypto isakmp key 0 SECRET address 1.1.1.1   #KS

crypto gdoi group GDOI_GROUP
 identity number 123
 server address ipv4 1.1.1.1 

crypto map GETVPN local-address Loopback 0
crypto map GETVPN 10 gdoi
 set group GDOI_GROUP

interface Gi2
 description To KS
 crypto map GETVPN

Verify

show crypto gdoi
show crypto gdoi ks
show crypto gdoi gm

Suite B
GET VPN har stöd för Suite B men måste sättas upp för det genom att på KS konfigurera de säkra algoritmer som ska användas.

show crypto gdoi feature suite-b