Kuidas tõrkeotsing teha kodumaise IPsec VPN-i puhul. Osa 1

Kuidas tõrkeotsing teha kodumaise IPsec VPN-i puhul. Osa 1

Situatsioon

Väljas. Joon kohvi. Üliõpilane seadistas VPN-i ühenduse kahe punkti vahel ja kadus. Kontrollin: tunnel on tõepoolest olemas, kuid tunnelis pole liiklust. Üliõpilane ei vasta kõnedele.

Panen tee keema ja sukeldun C-Terra Gateway'i tõrkeotsingusse. Jagades oma kogemusi ja meetodoloogiat.

Algandmed

Kaks territoriaalselt eraldatud asukohta on ühendatud GRE tunneliga. GRE tuleb krüpteerida:

Kuidas tõrkeotsing teha kodumaise IPsec VPN-i puhul. Osa 1

Kontrollin GRE tunnelit. Selleks jooksutan ping'i seadmel R1 GRE liidese suunas seadmel R2. See on sihttõuge krüpteerimiseks. Vastust pole:

root@R1:~# ping 1.1.1.2 -c 4
PING 1.1.1.2 (1.1.1.2) 56(84) baitide andmeid.

--- 1.1.1.2 ping statistika ---
4 paketti edastatud, 0 saadud, 100% pakettide kadu, aeg 3057ms

Vaatan logisid Gate1-l ja Gate2-l. Logi rõõmsalt teatab, et IPsec tunnel on edukalt üles seatud, mingeid probleeme pole:

root@Gate1:~# cat /var/log/cspvpngate.log
Aug  5 16:14:23 localhost  vpnsvc: 00100119  IPSec ühendus 5 loodud, liiklusvalik 172.17.0.1->172.16.0.1, proto 47, võõras 10.10.10.251, id "10.10.10.251", Filter 
IPsec:Protect:CMAP:1:LIST, IPsecAction IPsecAction:CMAP:1, IKERule IKERule:CMAP:1

IPsec tunnelite statistikas Gate1-l näen, et tunnel on tõepoolest olemas, kuid Rсvd loendur on nullitud:

root@Gate1:~# sa_mgr show
ISAKMP sessions: 0 initiated, 0 responded

ISAKMP connections:
Num Conn-id (Local Addr, Port)-(Remote Addr, Port) State Sent Rcvd
1 3 (10.10.10.251,500)-(10.10.10.252,500) active 1070 1014

IPsec connections:
Num Conn-id (Local Addr, Port)-(Remote Addr, Port) Protocol Action Type Sent Rcvd
1 3 (172.16.0.1,*)-(172.17.0.1,*) 47 ESP tunn 480 0

Tean troubleshootin C-Terrat, otsin, kus kaob sihitud pakette R1-lt R2-le. Protsessi käigus (spoiler) leian vea.

Tõrkeotsing

Samm 1. Mida Gate1 R1-lt saab

Kasutades sisseehitatud paketi nuhikut – tcpdump. Käivitan nuhiku sise (Gi0/1 Cisco-sarnases tähistuses või eth1 Debian OS-i tähistuses) liidese peal:

root@Gate1:~# tcpdump -i eth1

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes
14:53:38.879525 IP 172.16.0.1 > 172.17.0.1: GREv0, key=0x1, length 92: IP 1.1.1.1 > 1.1.1.2: ICMP echo request, id 2083, seq 1, length 64
14:53:39.896869 IP 172.16.0.1 > 172.17.0.1: GREv0, key=0x1, length 92: IP 1.1.1.1 > 1.1.1.2: ICMP echo request, id 2083, seq 2, length 64
14:53:40.921121 IP 172.16.0.1 > 172.17.0.1: GREv0, key=0x1, length 92: IP 1.1.1.1 > 1.1.1.2: ICMP echo request, id 2083, seq 3, length 64
14:53:41.944958 IP 172.16.0.1 > 172.17.0.1: GREv0, key=0x1, length 92: IP 1.1.1.1 > 1.1.1.2: ICMP echo request, id 2083, seq 4, length 64

Näen, et Gate1 saab GRE pakette R1-lt. Liigun edasi.

Samm 2. Mida Gate1 GRE pakettidega teeb

Kasutan utiliiti klogview, et vaadata, mis GRE pakettidega juhtub seestpoolt VPN C-Terra draiver:

root@Gate1:~# klogview -f 0xffffffff

filtratsioonitulemus välispakett 172.16.0.1->172.17.0.1, protokoll 47, pikkus 112, liides eth0: ahel 4 "IPsecPolicy:CMAP", filter 8, sündmuse ID IPsec:Protect:CMAP:1:LIST, olek PASS
kapseldamine SA-ga 31: 172.16.0.1->172.17.0.1, protokoll 47, pikkus 112, liides eth0
läbiviidud välispakett 10.10.10.251->10.10.10.252, protokoll 50, pikkus 160, liides eth0: kapseldatud

Näen, et sihtkoht GRE liiklus (protokoll 47) 172.16.0.1 -> 172.17.0.1 läbis (PASS) krüpteerimise reeglit LIST krüptokaardil CMAP ja kapseldus (encapsulated). Seejärel paketid marsruuditi (passed out). Vastusliiklust klogview väljundis pole.

Kontrollin juurdepääsuloendeid seadmel Gate1. Näen ühte juurdepääsulitsentsi LIST, mis määratleb sihtliikluse krüpteerimiseks, seega ei ole MЭ reegleid seatud:

Gate1#show access-lists
Pikendatud IP juurdepääsulitsent LIST
  10 luba gre host 172.16.0.1 host 172.17.0.1

Väljund: probleem ei ole seadmel Gate1.

Kogemuste kohta klogview's

VPN draiver käsitleb kogu võrgu liiklust, mitte ainult seda, mis peab olema krüpteeritud. Sellised teadete nägemine klogview's, kui VPN draiver on töötanud võrgu liikluse ja edastanud selle krüpteerimata kujul:

root@R1:~# ping 172.17.0.1 -c 4

root@Gate1:~# klogview -f 0xffffffff

filtratsioonitulemus välispakett 172.16.0.1->172.17.0.1, protokoll 1, pikkus 84, liides eth0: ahel 4 "IPsecPolicy:CMAP": ilma vaste
läbiviidud välispakett 172.16.0.1->172.17.0.1, protokoll 1, pikkus 84, liides eth0: filtreeritud

Näen, et ICMP liiklus (proto 1) 172.16.0.1->172.17.0.1 ei vastanud (no match) CMAP krüptokaardi krüpteerimisreeglitele. Pakett reititi (passed out) selges vormis.

Samm 3. Mida saab Gate2 Gate1-lt

Käivitab sniffimise WAN (eth0) liidese jaoks Gate2:

root@Gate2:~# tcpdump -i eth0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
16:05:45.104195 IP 10.10.10.251 > 10.10.10.252: ESP(spi=0x30088112,seq=0x1), length 140
16:05:46.093918 IP 10.10.10.251 > 10.10.10.252: ESP(spi=0x30088112,seq=0x2), length 140
16:05:47.117078 IP 10.10.10.251 > 10.10.10.252: ESP(spi=0x30088112,seq=0x3), length 140
16:05:48.141785 IP 10.10.10.251 > 10.10.10.252: ESP(spi=0x30088112,seq=0x4), length 140

Näen, et Gate2 saab ESP pakette Gate1-lt.

Samm 4. Mida teeb Gate2 ESP pakettidega

Käivitab klogview utiliidi Gate2:

root@Gate2:~# klogview -f 0xffffffff
filtration result for in packet 10.10.10.251->10.10.10.252, proto 50, len 160, if eth0: chain 17 "FilterChain:L3VPN", filter 21, status DROP
dropped in packet 10.10.10.251->10.10.10.252, proto 50, len 160, if eth0: firewall

Näen, et ESP paketid (proto 50) on (DROP) reegli (L3VPN) tulemuseks visatud (DROP) tulemüüri (firewall) poolt. Veendun, et Gi0/0-le on tõepoolest seotud L3VPN juurdepääsulisti:

Gate2#show ip interface gi0/0
GigabitEthernet0/0 on üles, liiniprotokoll on üles
  Interneti-aadress on 10.10.10.252/24
  MTU on 1500 bitti
  Väljaminev juurdepääsulisti pole seatud
  Sissevõtte juurdepääsulisti on L3VPN

Probleem tuvastatud.

Samm 5. Mis on mitte nii juurdepääsulistiga

Vaata, milline on L3VPN juurdepääsulisti:

Gate2#show access-list L3VPN
Extended IP access list L3VPN
    10 permit udp host 10.10.10.251 any eq isakmp
    20 permit udp host 10.10.10.251 any eq non500-isakmp
    30 permit icmp host 10.10.10.251 any

Näen, et ISAKMP paketid on lubatud, seega luuakse IPsec tunnel. Kuid ESP jaoks ei ole lubavat reeglit. Ilmselt segas õpilane icmp ja esp.

Korrigeerin juurdepääsulisti:

Gate2(config)#
ip access-list extended L3VPN
no 30
30 permit esp host 10.10.10.251 any

Samm 6. Kontrollin funktsionaalsust

Esimese asjana veendun, et L3VPN juurdepääsulisti on õige:

Gate2#show access-list L3VPN
Extended IP access list L3VPN
    10 permit udp host 10.10.10.251 any eq isakmp
    20 permit udp host 10.10.10.251 any eq non500-isakmp
    30 permit esp host 10.10.10.251 any

Nüüd käivitan R1 seadmest sihttrafiku:

root@R1:~# ping 1.1.1.2 -c 4
PING 1.1.1.2 (1.1.1.2) 56(84) baiti andmeid.
64 baiti aadressilt 1.1.1.2: icmp_seq=1 ttl=64 aeg=35.3 ms
64 baiti aadressilt 1.1.1.2: icmp_seq=2 ttl=64 aeg=3.01 ms
64 baiti aadressilt 1.1.1.2: icmp_seq=3 ttl=64 aeg=2.65 ms
64 baiti aadressilt 1.1.1.2: icmp_seq=4 ttl=64 aeg=2.87 ms

--- 1.1.1.2 ping statistika ---
4 paketti saadeti, 4 saadeti tagasi, 0% pakettide kaotus, aeg 3006ms
rtt min/avg/max/mdev = 2.650/10.970/35.338/14.069 ms

Võit. GRE tunnel on loodud. Sissetuleva liikluse loendur IPsec statistikas ei ole null:

root@Gate1:~# sa_mgr show
ISAKMP sessions: 0 initiated, 0 responded

ISAKMP connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) State Sent Rcvd
1 3 (10.10.10.251,500)-(10.10.10.252,500) aktiivne 1474 1350

IPsec connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) Protokoll Tegevus Tüüp Sent Rcvd
1 4 (172.16.0.1,*)-(172.17.0.1,*) 47 ESP tunnel 1920 480

Gate2 lülituses on klogview väljundis teated, et sihttakistus 172.16.0.1->172.17.0.1 on edukalt (PASS) dekrüpteeritud (decapsulated) reegliga LIST krüptokaardil CMAP:

root@Gate2:~# klogview -f 0xffffffff
filtreerimise tulemus sissepaketile 172.16.0.1->172.17.0.1, proto 47, len 112, if eth0: ahel 18 "IPsecPolicy:CMAP", filter 25, sündmuse ID IPsec:Protect:CMAP:1:LIST, staatus PASS
läbitud sissepaket 172.16.0.1->172.17.0.1, proto 47, len 112, if eth0: dekrüpteeritud

Kokkuvõte

Üliõpilane rikkus väljundi.
Olge MЭ reeglitega ettevaatlik.

Anonüümne insener
t.me/anonimous_engineer


Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster