Conntrack NEW на ACK пакет: што не докажува
ACK означен како NEW значи дека тракерот немал соодветна состојба, а не дека VPN отворил сесија. Прочитајте го hook-от, tuple-то и прозорецот на снимање.
Во дневникот на огнениот ѕид има една линија што не сте ја очекувале: ACK пакет, conntrack состојба NEW, изворна адреса што не е ваша, целна порта отворена. Искушението е да ја прочитате како нова дојдовна врска што никој не ја одобрил. Она што линијата всушност го кажува е потесно: кога тој пакет стигнал до овој hook, тракерот немал соодветна состојба, а пакетот носел ACK. Тоа се два факти за две различни работи и ниту еден не е целосен запис од ракување. Еве го редоследот што го поминувам пред да донесам заклучок.
Започнете со пакетот, а не со пресудата
Одделете ги набљудувањата пред да ги протолкувате. TCP знаменцата го опишуваат овој пакет, состојбата на тракерот опишува што знаел во овој hook, а вашето снимање опишува само прозорецот што сте го снимиле.
Мешањето на тие три е начинот на кој ACK станува „провајдерот пушти некого внатре“.
Што всушност значи NEW на hook-от
совпаѓањето conntrack во iptables го документира NEW како пакет што започнува врска, или пакет поврзан со врска што сè уште не видела сообраќај во двете насоки. ESTABLISHED значи дека тракерот видел пакети во двете насоки. Ниту една дефиниција не вели дека пакетот бил SYN, ниту дека пристигнал без историја.
Тракер што почнува да набљудува тек од средината го класифицира следниот пакет според тоа што го знае, а тоа може да биде ништо. Тоа е изјава за меморијата на тракерот, не за намерата на оддалечениот домаќин.
Лабавото следење ги објаснува повеќето изненадувања со ACK
Јадрото документира nf_conntrack_tcp_loose, што му овозможува на тракерот да преземе TCP врски чиј почеток не го видел. Со поставката на нејзината стандардна вредност, ACK од средината на тек може да биде прифатен како воспоставен тек. Исклучете ја и истиот пакет поверојатно ќе биде класифициран како INVALID наместо NEW. Двата исхода ги опишуваат правилата на тракерот, не историјата на апликацијата.
Затоа проверете ја таа поставка пред да изградите теорија врз етикетата.
Исклучете ги здодевните причини во овој редослед
Повеќето NEW-на-ACK настани што ги следев завршија со една од овие, и сите се евтини за проверка:
- Табелата conntrack беше исчистена, или тракерот беше рестартиран.
- Домаќинот беше рестартиран, или текот се премести во друг namespace или уред.
- Асиметричното рутирање го изнесе SYN на патека што не ја снимате.
- NAT го препиша tuple-то, така што записот веќе не одговара на она што го прочитавте.
- Снимањето започна доцна и никогаш не го виде почетокот.
Секоја од нив ги отстранува поранешните пакети од видот на тракерот, а подоцнежните ги остава недопрени. Рестарт или чистење на табелата најлесно се потврдуваат од uptime и дневниците. Асиметричното рутирање се појавува како еднонасочено снимање. NAT е подмолниот, бидејќи tuple-то што тракерот го зачувал не е tuple-то отпечатено во дневникот.
Запишете кои од нив ги исклучивте и како, пред да продолжите.
Прочитајте го tuple-то, интерфејсот и hook-от
Записот conntrack се клучира по адреси, порти и протокол, така што секој превод менува кој запис одговара. Запишете ги и интерфејсот и hook-от, бидејќи пакет виден на погрешен интерфејс или по друг синџир ви кажува дека патеката не е таа од дијаграмот. Кога настанот вклучува VPN, одлучете дали гледате во внатрешниот пакет или во надворешниот носител. Потоа споредете со она што портата го запишала за истото tuple од пет дела.
Два спротивставени погледи на еден тек се поинформативни од кој било од нив сам.
Кога вреди да се ескалира
Ескалирајте кога можете да покажете услуга што е достапна и не би требало да биде, со текот, политиката што ја дозволила и докази од двата краја. Не пријавувајте дефект кај провајдерот врз основа на една етикета на состојба или едно делумно снимање, бидејќи тоа пријавување ќе биде затворено со токму објаснувањето што штотуку го прочитавте. Ако услугата навистина е изложена, сопственикот на таа граница е вистинската личност да ја поправи, а делегирано мапирање на порти или ненамерен слушател е поверојатна причина од грешка.
Потоа затворете ја празнината во видливоста што дозволи еден пакет да изгледа како цела сесија.