Ugunsmūra žurnālā ir viena rinda, kuru negaidījāt: ACK pakete, conntrack stāvoklis NEW, avota adrese, kas nav jūsējā, galamērķa ports atvērts. Kārdinājums ir to lasīt kā jaunu ienākošu savienojumu, kuru neviens nav atļāvis. Tas, ko rinda patiešām saka, ir šaurāk: kad šī pakete sasniedza šo hook, izsekotājam nebija atbilstoša stāvokļa, un pakete nesa ACK. Tie ir divi fakti par divām dažādām lietām, un neviens no tiem nav pilnīgs rokasspiediena ieraksts. Lūk, kārtība, kuru es izeju pirms secinājuma.

Sāciet ar paketi, nevis ar spriedumu

Atdaliet novērojumus, pirms tos interpretējat. TCP karodziņi apraksta šo paketi, izsekotāja stāvoklis apraksta to, ko tas zināja šajā hook, un jūsu uztveršana apraksta tikai to logu, kuru ierakstījāt.

Šo trīs sajaukšana ir veids, kā ACK pārvēršas par “pakalpojumu sniedzējs kādu ielaida iekšā”.

Ko NEW patiešām nozīmē hook

iptables conntrack atbilstība dokumentē NEW kā paketi, kas sāk savienojumu, vai paketi, kas saistīta ar savienojumu, kurš vēl nav redzējis datplūsmu abos virzienos. ESTABLISHED nozīmē, ka izsekotājs ir redzējis paketes abos virzienos. Neviena definīcija nesaka, ka pakete bija SYN, nedz arī to, ka tā ieradās bez vēstures.

Izsekotājs, kas sāk novērot plūsmu no vidus, klasificē nākamo paketi pēc tā, ko zina, un tas var būt nekas. Tas ir apgalvojums par izsekotāja atmiņu, nevis par attālā resursdatora nodomu.

Vaļīga izsekošana izskaidro lielāko daļu ACK pārsteigumu

Kodols dokumentē nf_conntrack_tcp_loose, kas ļauj izsekotājam pārņemt TCP savienojumus, kuru sākumu tas nav redzējis. Ar iestatījumu tā noklusējuma vērtībā ACK no plūsmas vidus var tikt pieņemts kā nodibināta plūsma. Izslēdziet to, un tā pati pakete tiks drīzāk klasificēta kā INVALID, nevis NEW. Abi iznākumi apraksta izsekotāja noteikumus, nevis lietojumprogrammas vēsturi.

Tāpēc pārbaudiet šo iestatījumu pirms teorijas veidošanas par birku.

Izslēdziet garlaicīgos cēloņus šādā kārtībā

Lielākā daļa NEW-uz-ACK notikumu, kuriem sekoju, beidzās ar vienu no šiem, un visus ir lēti pārbaudīt:

  • Conntrack tabula tika iztīrīta, vai izsekotājs tika restartēts.
  • Resursdators tika pārstartēts, vai plūsma pārcēlās uz citu namespace vai ierīci.
  • Asimetriskā maršrutēšana izlaida SYN pa ceļu, kuru neuztverat.
  • NAT pārrakstīja tuple, tāpēc ieraksts vairs neatbilst tam, ko izlasījāt.
  • Uztveršana sākās vēlu un nekad neredzēja sākumu.

Katrs no tiem noņem agrākās paketes no izsekotāja redzesloka un atstāj vēlākās neskartas. Restartu vai tabulas iztīrīšanu visvieglāk apstiprināt pēc uptime un žurnāliem. Asimetriskā maršrutēšana izpaužas kā vienvirziena uztveršana. NAT ir viltīgais, jo tuple, ko izsekotājs saglabāja, nav tas tuple, kas iespiests žurnālā.

Pierakstiet, kurus no šiem izslēdzāt un kā, pirms dodaties tālāk.

Lasiet tuple, saskarni un hook

Conntrack ieraksta atslēga ir adreses, porti un protokols, tāpēc jebkurš tulkojums maina, kurš ieraksts atbilst. Pierakstiet arī saskarni un hook, jo pakete, kas redzēta nepareizajā saskarnē vai pēc citas ķēdes, saka, ka ceļš nav tāds kā diagrammā. Kad notikums attiecas uz VPN, izlemiet, vai skatāties uz iekšējo paketi vai ārējo nesēju. Pēc tam salīdziniet ar to, ko vārteja reģistrēja tam pašam piecu daļu tuple.

Divi pretrunīgi vienas plūsmas skatījumi ir informatīvāki par jebkuru no tiem atsevišķi.

Kad ir vērts eskalēt

Eskalējiet, kad varat parādīt sasniedzamu pakalpojumu, kuram nevajadzētu būt sasniedzamam, kopā ar plūsmu, to atļāvušo politiku un pierādījumiem no abiem galiem. Neziņojiet par pakalpojumu sniedzēja defektu, pamatojoties uz vienu stāvokļa birku vai vienu daļēju uztveršanu, jo šis ziņojums tiks slēgts ar tieši to skaidrojumu, kuru tikko izlasījāt. Ja pakalpojums patiešām ir atklāts, šīs robežas īpašnieks ir īstā persona to labot, un deleģēta portu kartēšana vai nevēlēts klausītājs ir ticamāks cēlonis nekā kļūda.

Pēc tam aizveriet redzamības plaisu, kas ļāva vienai paketei izskatīties kā visai sesijai.

Saistītie raksti