Өрт қабырғасы журналында күтпеген бір жол бар: ACK пакеті, conntrack күйі NEW, сіздікі емес бастау мекенжайы, мақсат порты ашық. Мұны ешкім рұқсат бермеген жаңа кіріс қосылысы деп оқуға азғырыласыз. Жол шын мәнінде айтатыны тарырақ: ол пакет осы hook-қа жеткенде трекерде сәйкес күй болмаған, ал пакет ACK алып жүрген. Бұл екі түрлі нәрсе туралы екі факт, және екеуі де қол алысудың толық жазбасы емес. Қорытынды жасамас бұрын мен өтетін рет осы.

Үкімнен емес, пакеттен бастаңыз

Түсіндіруден бұрын байқауларды бөліңіз. TCP жалаушалары осы пакетті сипаттайды, трекердің күйі сол hook-та оның нені білгенін сипаттайды, ал сіздің түсіріліміңіз тек жазған терезеңізді сипаттайды.

Осы үшеуін араластыру — ACK-тың «провайдер біреуді ішке кіргізді» болып кету жолы.

NEW hook-та шын мәнінде нені білдіреді

iptables conntrack сәйкестендіруі NEW-ды қосылыс бастайтын пакет немесе екі бағытта да трафик көрмеген қосылысқа қатысты пакет ретінде құжаттайды. ESTABLISHED трекердің екі бағытта да пакеттерді көргенін білдіреді. Екі анықтаманың ешқайсысы пакет SYN болды деп те, ол тарихсыз келді деп те айтпайды.

Ағынды ортасынан бақылай бастаған трекер келесі пакетті білгеніне қарай жіктейді, ал бұл ештеңе болмауы мүмкін. Бұл трекер жады туралы мәлімдеме, қашықтағы хосттың ниеті туралы емес.

Бос бақылау ACK тосынсыйларының көбін түсіндіреді

Ядро құжаттайды nf_conntrack_tcp_loose, бұл трекерге басталуын көрмеген TCP қосылыстарын қабылдауға мүмкіндік береді. Параметр әдепкі мәнінде болғанда, ағын ортасынан келген ACK орныққан ағын ретінде қабылдануы мүмкін. Оны өшірсеңіз, сол пакет NEW емес, INVALID деп жіктелуге бейім болады. Екі нәтиже де трекер ережелерін сипаттайды, қолданба тарихын емес.

Сондықтан белгіге теория құрмас бұрын сол параметрді тексеріңіз.

Жалықтыратын себептерді осы ретпен жоққа шығарыңыз

Мен іздеген NEW-on-ACK оқиғаларының көбі осылардың бірімен аяқталды, және барлығын тексеру арзан:

  • conntrack кестесі тазаланды немесе трекер қайта іске қосылды.
  • Хост қайта жүктелді немесе ағын басқа namespace немесе құрылғыға көшті.
  • Асимметриялық маршруттау SYN-ды сіз түсірмейтін жолға шығарды.
  • NAT tuple-ды қайта жазды, сондықтан жазба енді сіз оқығанмен сәйкес келмейді.
  • Түсіру кеш басталды және басталуын ешқашан көрмеді.

Олардың әрқайсысы бұрынғы пакеттерді трекердің көру аясынан алып тастап, кейінгілерін бүлінбей қалдырады. Қайта жүктеу немесе кестені тазалау uptime мен журналдардан растауға ең оңай. Асимметриялық маршруттау бір бағытты түсіру ретінде көрінеді. NAT — айлакер, өйткені трекер сақтаған tuple журналда басылған tuple емес.

Әрі қарай жылжымас бұрын қайсыларын және қалай жоққа шығарғаныңызды жазыңыз.

tuple, интерфейс және hook оқыңыз

conntrack жазбасы мекенжайлар, порттар және протокол бойынша кілттеледі, сондықтан кез келген аударма қай жазбаның сәйкес келетінін өзгертеді. Интерфейс пен hook-ты да жазыңыз, өйткені дұрыс емес интерфейсте немесе басқа тізбектен кейін көрінген пакет жол диаграммадағыдай емес екенін айтады. Оқиға VPN-ге қатысты болғанда, ішкі пакетті немесе сыртқы тасымалдаушыны қарап отырғаныңызды анықтаңыз. Содан кейін шлюздің сол бес бөлікті tuple үшін жазғанымен салыстырыңыз.

Бір ағынның келіспейтін екі көрінісі әрқайсысынан жеке артық ақпарат береді.

Қашан эскалация жасау керек

Қолжетімді және болмауы тиіс қызметті ағынмен, оған рұқсат берген саясатпен және екі жақтағы дәлелдермен көрсете алғанда эскалация жасаңыз. Бір күй белгісіне немесе бір ішінара түсіруге сүйеніп провайдер ақауы туралы хабарламаңыз, өйткені бұл хабарлама дәл қазір оқыған түсіндірмемен жабылады. Егер қызмет шынымен ашық болса, сол шекараның иесі оны түзететін дұрыс адам, ал бағдарлама қатесінен гөрі делегатталған порт салыстыруы немесе кездейсоқ тыңдаушы ықтимал себеп.

Сосын бір пакетті тұтас сессиядай көрсеткен көріну олқылығын жабыңыз.

Қатысты мақалалар