Moet je de SSH-stroom uit een remote capture uitsluiten?
Een remote capture legt de verbinding vast die zijn eigen uitvoer draagt. Bepaal hoeveel je uitsluit, en combineer nooit twee negatieve hosttests met or.
Capturen op een externe machine terwijl je de uitvoer via dezelfde verbinding bekijkt, is een zelfreferentiële meting, en die vertekent wat je meet. Elk pakket dat je afdrukt, reist terug door de sessie die wordt opgenomen. Die stroom uitsluiten is meestal juist, maar de omvang van de uitsluiting is een echte beslissing. Te smal en de capture overspoelt zichzelf; te breed en het bewijs verdwijnt.
Waarom de capture zichzelf vastlegt
De capture ziet het retourpad van zijn eigen uitvoer. Elke regel die naar je terminal wordt afgedrukt, wordt een of meer pakketten op de beheerverbinding, die het filter vervolgens matcht en opnieuw afdrukt. Het resultaat is een lus die groeit tot de buffer of de link het opgeeft.
Daarom ziet een capture naar een bestand er prima uit en wordt dezelfde capture live gestreamd onbruikbaar. Het verkeer is niet nieuw; jij hebt het gemaakt. Een capture van tien seconden kan meer uitvoer produceren dan de link aankan zodra de lus begint.
Bouw de uitsluiting als één groep
Begin bij hoe de externe host jouw sessie ziet, niet bij het adres in je lokale terminal. Een spronghost of een NAT-apparaat kan de tegenpartij iets maken dat je nooit hebt getypt, dus lees het adres vanuit het eigen gezichtspunt van de externe kant. Groepeer daarna de host en de poort samen, zodat de negatie op het paar van toepassing is.
tcpdump -ni eth0 '(net 10.60.0.0/24) and not (host 203.0.113.77 and tcp port 2222)'De hele expressie tussen aanhalingstekens zetten weerhoudt de shell ervan de haakjes als syntaxis te lezen. Druk het filter opnieuw af voordat je het resultaat vertrouwt.
Het filter dat er goed uitziet en alles vasthoudt
Het verkeerde filter is het filter dat natuurlijk leest: de bron is niet de tegenpartij, of de bestemming is niet de tegenpartij. Voor een pakket van je werkstation is de eerste test waar; voor het antwoord de tweede. Ze met or verbinden houdt beide richtingen, wat precies is wat je wilde weggooien.
pcap-filterlogica geeft and en or dezelfde voorrang en evalueert van links naar rechts, dus haakjes zijn niet optioneel als je ze mengt. Negeer één gegroepeerde expressie in plaats van twee negaties te combineren. Die ene wijziging scheidt een werkend filter van een capture vol met je eigen getypte tekst. pcap-filterreferentie is kort genoeg om in de terminal te lezen en de moeite waard om te controleren wanneer een filter zich onverwacht gedraagt.
Beslis op basis van wat de capture moet bewijzen
Bepaal hoeveel je uitsluit door te vragen wat de capture moet bewijzen. Als je applicatieverkeer naar dezelfde host moet zien, sluit dan alleen de SSH-poort uit en accepteer ruis van andere sessies. Als de host irrelevant is voor de vraag, is hem helemaal uitsluiten eenvoudiger en het verwijdert een hele klasse zelfgegenereerde pakketten. Schrijf de keuze naast het capturebestand, want een filter is een aanname over het bewijs.
De keuze van de interface bepaalt wat je überhaupt kunt zien. Op de tunnel zie je het interne verkeer; op de fysieke interface zie je het versleutelde transport. Als de beheerpakketten op het door jou gekozen punt al ontbreken, lost geen enkele uitsluiting een capture op die op de verkeerde laag is gericht.