Jo rinne tcpdump op 'e bûtenynterface fan in Linux IPsec-gateway en sjogge twa dingen tagelyk: ynkommende ESP-ramen en, fuort dêrnei, de ûntsifere binnenpakketten. Utgeand ferskynt allinnich ESP. De natuerlike konklúzje is dat antwurden net stjoerd wurde, of dat IPsec ien rjochting fersiferet en de oare ferjit. Gjin fan beide is wier.

Wat jo sjogge is in opnamepunt. De kernel transformearret útgeande pakketten foardat it stjoerpaad fan it apparaat se oan 'e pakketsocket jout, sadat de socket de binnenfoarm nea útgean sjocht. Ynkommend wurdt it pakket earst as ESP opnommen en de ûntkapsle kopie wurdt sichtber as it wer yn 'e stack komt. Deselde ferkear, twa ferskillende observaasjefinster.

It opnamepunt bepaalt wat jo sjogge

Op in normaal ynterface sit in AF_PACKET-socket ticht by de apparaatlaach. Pakketten dy't de host ferlitte geane earst troch IPsec-útfierferwurking, dy't in binnen TCP-segment yn in ESP- of UDP-4500-datagram feroaret, en berikke pas dêrnei dy laach. Oankommende pakketten wurde nei de socket kopiearre wylst se fan 'e tried komme, noch fersifere, en it ûntsifere resultaat wurdt letter sichtber as de stack it lokaal leveret of trochstjoert.

Dy folchoarder ferklearret de asymmetry folslein. It is gjin bewiis oer rjochting, belied of gedrach fan 'e applikaasje, en it sa behanneljen stjoert minsken efter in antwurd oan dat al dy tiid korrekt ferstjoerd wie. It is ien fan 'e pear netwurkpuzels wêr't it ynstrumint, net it netwurk, de anomaly skept.

Pas it filter oan op 'e laach dy't jo bedoele

In útdrukking lykas tcp port 443 selektearret in binnen TCP-ferbining. Utgeand is dy ferbining al ESP wurden tsjin 'e tiid dat de socket frege wurdt, sadat it filter neat treft. As jo beskerme ferkear telle wolle, filterje dan op 'e bûtenfoarm: protokol 50 foar rau ESP, of UDP-poarte 4500 as NAT-traversal yn it spul is. Beide filters leverje in pakketten oantal dat tusken de twa peers fergelike wurde kin, wat meastentiids de reden is om te tellen. Gjin fan beide fertelt oft it binnenfersyk beändere is.

Behannelje in UDP 4500-telling net as in ESP-pakketten oantal. IKE brûkt dy poarte ek foar NAT-T-keepalives en foar de ynkapsle útwikseling, sadat it getal ferkear omfettet dat net de gegevens binne dy't jo mjitte woene. De earste IKE-útwikseling op UDP 500 hat syn eigen filter nedich as dat de fraach is. In getal dat kontrôletrafyk mei gegevens mingt makket ek elke bânbreedteskatting ferkeard mei in ûnbekende marzje. Aparte tellings beantwurdzje aparte fragen.

Skriuw it filter njonken de fraach dy't it beantwurdet. „Hoefolle ESP hat de doaze ferlitten“ en „hat it webfersyk de doaze ferlitten“ binne ferskillende mjittingen mei ferskillende filters, en ien opname kin beide net besljochtsje. Sûnder dy notysje fergelykje twa minsken getallen dy't nea deselde saak telden.

Observearje foar de transformaasje, net dêrnei

As jo útgeande iepen tekst sjen moatte, ferpleats it observaasjepunt earder, foar de IPsec-útfierferwurking. NFLOG jout jo in Netfilter-hook wêr't in regel selektearre pakketten nei in socket yn brûkerromte kopiearje kin, dy't tcpdump lêze kin. De ferkearsdumpgids fan strongSwan dokumintearret dizze oanpak krekt om dizze reden.

De beliedsoerienkomst beheint de regel ta ferkear dat op it punt stiet in tunnel yn te gean. -m policy --pol ipsec --dir out is wat de regel spesifyk makket ynstee fan elk pakket te loggen dat de doaze stjoert. Lês dan de loggroep mei in beheinde opname: in lyts oantal snapshots en in grins foar grutte foarkomme dat de diagnostyk in ferkearsargyf wurdt. In beheinde opname is ek makliker oer te jaan oan in beoardieler sûnder ûnrelevante lading mei te slepen. Beslis it oantal foardat jo begjinne, net nei't jo sjoen hawwe hoefolle oankaam.

iptables -I OUTPUT 1 -d 10.83.0.44/32 -p tcp --dport 8443 -m policy --pol ipsec --dir out -j NFLOG --nflog-group 5
tcpdump -ni nflog:5 -s 128 -c 20 'host 10.83.0.44 and tcp port 8443'

Kies de hook dy't by de stream past. OUTPUT dekt ferkear dat de gateway sels generearret; transyt fan in LAN-klant giet ynstee troch de FORWARD-keatling, en in regel op OUTPUT sil it nea sjen. It adres en de poarte hjirboppe binne plakhâlders foar in goedkarde testbestimming.

Wat de observaasje bewiist

NFLOG is in logbestimming, gjin akseptaasjebeslút. In pakket dat dêr ferskynt lit sjen dat it de hook berikte en by de regel paste. It lit net sjen dat in letter filter it tastien hat, dat it apparaat it ferstjoerde of dat de peer eat ûntfong.

In leech log is like dûbelsinnich. Kontrolearje de pakketten teller fan 'e regel, befêstigje de rjochting, befêstigje dat de stream echt by in IPsec-belied paste, en befêstigje de bestimming. Allinnich in oerienkommende teller op beide peers makket fan in observaasje in konklúzje. Fergelykje dêrnei de tellers fan 'e feiligensassosjaasje op beide peers foar deselde kontrolearre poging, want de SA-tellers binne it gesachhawwende ferslach fan wat beskerme en ferstjoerd waard.

Noch in falstrik: „iepen tekst“ betsjut hjir bûten de IPsec-fersiferingslaach. In binnen HTTPS-sesje hat noch hieltyd syn eigen TLS. It opnimmen fan it ûntkapsle pakket ûntsiferet de TLS fan 'e applikaasje net, en lêsbere HTTP dêr sjen betsjut dat de applikaasje nea HTTPS brûkte.

Romje op en fergelykje beide einen

Ferwiderje de krekte regel dy't jo ynfoege hawwe, by syn eigner, sa gau as de observaasje dien is. In logregel litten litten kostet CPU op elk passend pakket en makket stil in probleem fan gegevensbehâld. Wiskje troch de regel te werheljen mei -D ynstee fan in keatling te spoelen dy't net fan jo is.

iptables -D OUTPUT -d 10.83.0.44/32 -p tcp --dport 8443 -m policy --pol ipsec --dir out -j NFLOG --nflog-group 5

As de ynset brûkersromte-IPsec, in XFRM-ynterface of hardware-offload brûkt, ferpleatse de observaasjepunten har en dit resept jildt miskien hielendal net. By libipsec is it dokumintearre plak om binnenferkear te besjen it TUN-apparaat. Identifisearje earst it paad, kies dan it punt dat de fraach beantwurdet, en ferwachtsje dat de twa rjochtingen allinnich ferskillend lykje as jo nei de ferkearde kant fan 'e transformaasje sjogge.

Relatearre artikelen