Nmap әрқашан сіз сұрады деп ойлаған пакетті жібере бермейді. Шикі сокеттер қолжетімсіз болғанда, ол әдепкі SYN скандауын TCP connect скандауымен алмастырады, сондықтан әдеттегі пайдаланушы ретінде іске қосу мен sudo астында іске қосу бір порт туралы әртүрлі сұрақтарға жауап бере алады. Нәтижелер рұқсат мәселесіне ұқсайды, бірақ әдетте бұл әдістің өзгеруі. Әдісті айқын ету екі іске қосуды салыстырудың жалғыз жолы.

Екі зонд, бір порт, әртүрлі код жолдары

SYN скандауы TCP тақырыбын өзі құрастырады, оны шикі сокеттен жібереді және ядроның TCP стекі аяқталған қосылымды тіркегенге дейін жауапты желіден оқиды. connect скандауы операциялық жүйеден қарапайым сокет ашуды сұрайды және connect() қайтаратынын хабарлайды. Екеуі де портты ашық деп атай алады, бірақ тек біреуі жартылай ашық әрекетті қалдырады және тек біреуі жіберуші процеске байланысты сокет деңгейіндегі саясатқа бағынады.

Шикі жолға CAP_NET_RAW қажет, сондықтан бұл мүмкіндік болмағанда әдепкі скандау үнсіз әлсірейді. Nmap-тың өзінің скандау техникаларының анықтамасы осы алмастыруды құжаттайды: connect скандауы қосалқы нұсқа, өйткені ол ешқандай ерекше рұқсатты қажет етпейді. Алмастыру көптеген іске қосуларда ескертусіз болады, және дәл сол оны қате оқуға оңай етеді. Қосалқы нұсқа бар екенін білгеннен кейін, «root ретінде ашық, пайдаланушы ретінде жабық» деген рұқсат қатесіне ұқсамайды және екі түрлі өлшемге ұқсай бастайды.

sudo скандауда шынымен нені өзгертеді

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

Мақсат жағындағы журналдау да ерекшеленеді. Аяқталған қол алысу қызметке және кез келген сокет есебіне көрінеді, ал қалпына келтірілген жартылай ашық зонд көбіне көрінбейді. Егер іске қосуларды журналдарын өзіңіз де оқитын хостпен салыстырсаңыз, көрген айырмашылықтың бір бөлігі — бақылаудың өзі.

Екі іске қосуда әдісті тұрақты ұстаңыз

Екі шақыруда бірдей техниканы мәжбүрлеп қолданыңыз, сонда салыстыру мәнге ие бола бастайды. -sT жалаушасы connect скандауын айқын сұрайды, -Pn хосттарды анықтауды алып тастайды, -n атауларды шешуді алып тастайды, ал жалғыз -p порттар тізімінің айырмашылықтарын алып тастайды.

nmap -sT -Pn -n -p 8443 198.51.100.77
sudo nmap -sT -Pn -n -p 8443 198.51.100.77

Мекенжай мен портты тексеруге рұқсатыңыз бар хостпен ауыстырыңыз; жоғарыдағы құжаттама диапазоны үлгі, мақсат емес. Егер екі іске қосу енді сәйкес келсе, бастапқы айырмашылық скандау әдісінен болған. Егер олар әлі сәйкес келмесе, трафикті басқа нәрсе жіктейді, ал келесі бөлім — қарау керек жер.

Аккаунт контексті тек рұқсат жалаушасы емес

VPN орналастыру пакеттерді UID бойынша, cgroup бойынша немесе сокетті ашқан процеске байланысты ереже бойынша жіктей алады. Сонда root трафигі мен пайдаланушы трафигі әртүрлі маршруттау кестелері арқылы шығады немесе әртүрлі ережелер жиынтығына тап болады, және скандау әдісінің ешбір тәртібі оларды келістіре алмайды.

Рұқсатты емес, саясатты тексеріңіз. Linux-та nftables мұны meta skuid арқылы, ал iptables иесінің сәйкестігі арқылы білдіреді, және екеуінің кез келгені бір UID-ды туннельге жібере алады, ал екіншісі физикалық әдепкі маршрутты пайдалануды жалғастырады.

sudo nft list ruleset | grep -n skuid
sudo iptables-save | grep -n uid-owner
ip rule show
ip route get 198.51.100.77

Нәтижелерді салыстырмас бұрын зондты растаңыз

Қорытынды жасамас бұрын қай зондтың іске қосылғанын дәлелдеңіз. Nmap техниканы өз шығысында атайды, ал --reason әр күйге дәлел қосады, және дәл сол бөлік қол алысудың шынымен аяқталғанын айтады.

nmap --reason -sT -Pn -n -p 8443 198.51.100.77
sudo nmap --reason -sS -Pn -n -p 8443 198.51.100.77
getcap "$(command -v nmap)"
capsh --print | grep -i net_raw

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

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