Elementele de bază ale porturilor de rețea. Protocolul TCP

În rețelele de calculatoare, un port este punctul final de comunicare în sistemul de operare. Termenul este folosit și pentru dispozitivele hardware, dar în software este o construcție logică care identifică un anumit proces sau tip de serviciu.

Un port este întotdeauna asociat cu o adresă IP și un tip de gazdă și astfel completează atribuirea adresei de sesiune. Este identificat pentru fiecare adresă și protocol folosind un număr de 16 biți, cunoscut în mod obișnuit ca număr de port. Numerele de porturi specifice sunt adesea folosite pentru a identifica anumite servicii. Dintre miile enumerate, 1024 de numere de porturi cunoscute sunt protejate prin convenție pentru a identifica tipuri specifice de servicii pe gazdă. Protocoalele care utilizează în principal porturi sunt folosite pentru a controla procesele (cum ar fi Protocolul de control al transmisiei (TCP) și Protocolul de datagramă utilizator (UDP) din suita de protocoale Internet).

Sens

Porturile TCP nu sunt necesare pentru legăturile directe punct la punct, unde computerele de la fiecare capăt pot rula doar un program la un moment dat. Au devenit necesare pe măsură ce mașinile au devenit capabile să ruleze mai mult de un program simultan și au fost conectate la rețele moderne cu comutare de pachete. În modelul de arhitectură client-server, aplicațiile, porturile și clienții de rețea se conectează pentru a iniția serviciul, furnizează servicii de multiplexare după ce comunicarea inițială este asociată cu un număr de port cunoscut și este eliberată prin comutarea fiecărei instanțe de serviciu de solicitare la o linie dedicată. Se realizează o conexiune la un anumit număr și, datorită acestuia, clienții suplimentari pot fi serviți fără așteptare.

Detalii

Protocoalele de transfer de date - Transmission Control Protocol (TCP) și User Datagram Protocol (UDP) - sunt folosite pentru a indica numărul portului de destinație și sursa în anteturile segmentului lor. Numărul portului este un întreg fără semn pe 16 biți. Deci poate fi în intervalul de la 0 la 65535.

Cu toate acestea, porturile TCP nu pot folosi numărul 0. Portul sursă pentru UDP este opțional, iar o valoare zero înseamnă că nu este prezent.

Un proces își comunică canalele de intrare sau de ieșire printr-o priză Internet (un tip de descriptor de fișier) folosind un protocol de transport, un număr de port și o adresă IP. Acest proces este cunoscut sub numele de legare și permite trimiterea și primirea datelor într-o rețea.

Sistemul de operare este responsabil de transmiterea datelor de ieșire de la toate porturile de aplicație către rețea, precum și de redirecționarea pachetelor de rețea de intrare (prin maparea adresei IP și a numărului). Doar un proces poate fi legat la o anumită adresă IP și combinație de port folosind același protocol de transport. Blocările comune ale aplicațiilor, uneori numite conflicte de porturi, apar atunci când mai multe programe încearcă să comunice cu aceleași numere de port pe aceeași adresă IP folosind același protocol.

Cum se folosesc?

Aplicațiile care implementează servicii partajate folosesc adesea o listă special rezervată și bine-cunoscută de porturi TCP și UDP pentru a accepta cererile de servicii de la clienți. Acest proces este cunoscut sub numele de ascultare și implică primirea unei cereri de la un port binecunoscut și stabilirea unei conversații unu-la-unu între server și client folosind același număr de port local. Alți clienți pot continua să se conecteze - acest lucru este posibil deoarece conexiunea TCP este identificată ca un lanț format din adrese și porturi locale și de la distanță. Porturile TCP și UDP standard sunt stabilite prin acord sub controlul Autorității pentru Numerele Alocate de Internet (IANA).

Serviciile de rețea de bază (în special WorldWideWeb) tind să utilizeze numere de porturi mici - mai puțin de 1024. Multe sisteme de operare necesită privilegii speciale pentru ca aplicațiile să se leagă de ele, deoarece sunt adesea considerate critice pentru funcționarea rețelelor IP. Pe de altă parte, clientul final al conexiunii folosește de obicei un număr mare de ele, alocate pentru utilizare pe termen scurt, motiv pentru care există așa-numitele porturi efemere.

Structura

Porturile TCP sunt codificate în antetul pachetului de protocol de transport și pot fi interpretate cu ușurință nu numai de către computerele de expediere și de recepție, ci și de către alte componente ale infrastructurii rețelei. În special, firewall-urile sunt de obicei configurate pentru a distinge pachetele pe baza numerelor de porturi sursă sau destinație. Redirecționarea este un exemplu clasic în acest sens.

Practica de a încerca să se conecteze secvenţial la o serie de porturi pe un singur computer este cunoscută sub numele de scanare porturi. Acest lucru se datorează, de obicei, fie încercărilor de întrerupere rău intenționate, fie administratorilor de rețea care caută posibile vulnerabilități pentru a ajuta la prevenirea unor astfel de atacuri.

Activități care se concentrează pe cât de des sunt monitorizate și înregistrate computerele. Această tehnică folosește un număr de conexiuni de rezervă pentru a asigura o conexiune neîntreruptă la server.

Exemple de utilizare

Cel mai important exemplu în care porturile TCP/UDP sunt utilizate activ este sistemul de poștă Internet. Serverul este folosit pentru a lucra cu e-mail (trimitere și primire), și în general necesită două servicii. Primul serviciu este folosit pentru transportul prin e-mail și alte servere. Acest lucru se realizează prin utilizarea De obicei, aplicația de serviciu SMTP ascultă pe portul TCP numărul 25 în scopul procesării cererilor primite. Un alt serviciu este POP (Post Office Protocol) sau IMAP (sau Internet Message Access Protocol), care este necesar pentru ca aplicațiile client de e-mail de pe computerele utilizatorilor să primească mesaje de e-mail de la server. Serviciile POP ascultă numere pe portul TCP 110. Serviciile de mai sus pot rula ambele pe același computer gazdă. Când se întâmplă acest lucru, numărul portului distinge serviciul solicitat de dispozitivul la distanță - computerul utilizatorului sau alt server de e-mail.

În timp ce numărul portului de ascultare al serverului este bine definit (IANA le numește porturi binecunoscute), acest parametru client este adesea selectat dintr-un interval dinamic. În unele cazuri, clienții și serverul folosesc separat porturi TCP specifice alocate în IANA. Un bun exemplu este DHCP, unde clientul folosește UDP 68 în toate cazurile, iar serverul folosește UDP 67.

Utilizarea în URL-uri

Numerele porturilor sunt uneori clar vizibile pe Internet sau pe alte URL-uri (Uniform Resource Locators). În mod implicit, HTTP folosește și HTTPS folosește 443. Cu toate acestea, există și alte variante. De exemplu, adresa URL http://www.example.com:8080/cale/ indică faptul că browserul web se conectează la 8080 în loc de serverul HTTP.

Lista de porturi TCP și UDP

După cum sa menționat, Internet Assigned Numbers Authority (IANA) este responsabilă pentru coordonarea globală a DNS-Root, adrese IP și alte resurse de protocol Internet. Aceasta include înregistrarea numerelor de port utilizate frecvent pentru serviciile de Internet binecunoscute.

Numerele de port sunt împărțite în trei intervale: bine-cunoscute, înregistrate și dinamice sau private. Binecunoscute (cunoscute și ca sistem) sunt cele numerotate de la 0 la 1023. Cerințele pentru noile numiri din acest interval sunt mai stricte decât pentru alte înregistrări.

Exemple binecunoscute

Exemplele găsite în această listă includ:

  • Port TCP 443: HTTP Secure (HTTPS).
  • 22: Secure Shell (SSH).
  • 25: Protocol simplu de transfer de e-mail (SMTP).
  • 53: Sistemul de nume de domeniu (DNS).
  • 80: Protocolul de transfer hipertext (HTTP).
  • 119: Network News Transfer Protocol (NNTP).
  • 123: Network Time Protocol (NTP)..
  • 143: Internet Message Access Protocol (IMAP)
  • 161: Protocol simplu de gestionare a rețelei (SNMP)1.
  • 94: Internet Relay Chat (IRC).

Porturile înregistrate variază de la 1024 la 49151. IANA menține o listă oficială a intervalelor cunoscute și înregistrate. Dinamic sau Privat - 49152 la 65535. O utilizare a acestui interval este pentru porturile temporare.

Istoria creației

Conceptul de număr de port a fost creat de primii dezvoltatori ARPANET într-o colaborare informală între autorii de software și administratorii de sistem.

Termenul „număr port” nu era încă folosit la acel moment. Secvența de numere pentru gazda la distanță a fost un număr de 40 de biți. Primii 32 de biți au fost similari cu adresa IPv4 de astăzi, dar primii 8 biți au fost cei mai semnificativi. Cea mai mică parte a numărului (biții de la 33 la 40) a reprezentat un alt obiect numit AEN. Acesta este prototipul numărului de port modern.

La 26 martie 1972, crearea unui director de numere de socket a fost propusă pentru prima dată în RFC 322, care a cerut ca fiecare număr persistent să fie descris în termeni de funcții și servicii de rețea. Acest director a fost publicat ulterior în RFC 433 în decembrie 1972 și a inclus o listă de gazde, numerele de porturi ale acestora și funcția corespunzătoare utilizată pe fiecare nod din rețea. În mai 1972, au fost documentate pentru prima dată atribuirile oficiale de numere de port, servicii de rețea și o funcție administrativă specială pentru menținerea acestui registru.

Prima listă de porturi TCP a avut 256 de valori AEN, care au fost împărțite în următoarele intervale:

  • 0 la 63: funcții standard ale întregii rețele
  • 64 la 127: Funcții specifice gazdei
  • 128 până la 239: Rezervat pentru utilizare ulterioară
  • 240 până la 255: orice caracteristică experimentală.

Serviciul Telnet a primit prima atribuire oficială a valorii 1. În primele zile ale ARPANET, termenul AEN se referea și la numele prizei care era folosită cu protocolul de conectare original (MSP) și programul de control al rețelei (NCP). ) componentă. Mai mult, NCP a fost predecesorul protocoalelor moderne de Internet folosind porturi TCP/IP.

Protocolul TCP/IP este baza Internetului, prin care computerele trimit și primesc informații de oriunde în lume, indiferent de locația geografică. Accesarea unui computer TCP/IP dintr-o altă țară este la fel de ușor ca accesarea unui computer din camera alăturată. Procedura de acces este identică în ambele cazuri, deși conectarea la o mașină din altă țară poate dura cu câteva milisecunde mai mult. Drept urmare, cetățenii oricărei țări pot face cumpărături cu ușurință pe Amazon.com; cu toate acestea, din cauza proximității logice, sarcina de securitate a informațiilor devine mai complicată: orice proprietar al unui computer conectat la Internet oriunde în lume poate încerca să stabilească o conexiune neautorizată cu orice altă mașină.

Este responsabilitatea profesioniștilor IT să instaleze firewall-uri și sisteme pentru a detecta traficul suspect. Analiza pachetelor preia informații despre adresele IP sursă și destinație și porturile de rețea implicate. Valoarea porturilor de rețea nu este inferioară adreselor IP; acestea sunt cele mai importante criterii pentru separarea traficului util de mesajele false și dăunătoare care intră și ies din rețea. Majoritatea traficului de rețea de Internet constă din pachete TCP și UDP, care conțin informații despre porturile de rețea pe care computerele le folosesc pentru a direcționa traficul de la o aplicație la alta. O condiție prealabilă pentru firewall și securitatea rețelei este ca administratorul să aibă o înțelegere aprofundată a modului în care computerele și dispozitivele de rețea folosesc aceste porturi.

Studiind porturile

Cunoașterea principiilor de bază ale funcționării porturilor de rețea va fi utilă oricărui administrator de sistem. Cu o înțelegere de bază a porturilor TCP și UDP, un administrator poate diagnostica independent o aplicație de rețea eșuată sau poate proteja un computer care va accesa Internetul fără a apela un inginer de rețea sau un consultant de firewall.

Prima parte a acestui articol (formată din două părți) descrie conceptele de bază necesare pentru a discuta porturile de rețea. Se va afișa locul porturilor de rețea în modelul general de rețea și rolul porturilor de rețea și al firewall-ului NAT (Network Address Translation) în conexiunile computerelor companiei la Internet. În cele din urmă, vor fi indicate punctele de rețea la care este convenabil să identifici și să filtrezi traficul de rețea pe porturile de rețea corespunzătoare. Partea 2 analizează unele dintre porturile utilizate de aplicațiile și sistemele de operare obișnuite și prezintă câteva instrumente pentru găsirea de porturi de rețea deschise.

Scurtă prezentare generală a protocoalelor de rețea

TCP/IP este un set de protocoale de rețea prin care computerele comunică între ele. Suita TCP/IP nu este altceva decât bucăți de cod software instalate în sistemul de operare care oferă acces la aceste protocoale. TCP/IP este un standard, astfel încât aplicațiile TCP/IP de pe o mașină Windows ar trebui să comunice cu succes cu aceeași aplicație pe o mașină UNIX. În primele zile ale rețelei, în 1983, inginerii au dezvoltat modelul de interconectare OSI cu șapte straturi pentru a descrie procesele de rețea de calculatoare, de la cablu la aplicație. Modelul OSI constă din straturi fizice, de legătură de date, de rețea, de transport, de sesiune și de aplicație. Administratorii care lucrează constant cu Internetul și TCP/IP se ocupă în primul rând de straturile de rețea, transport și aplicații, dar pentru diagnosticarea de succes este necesar să cunoască alte straturi. În ciuda vârstei înaintate a modelului OSI, acesta este încă folosit de mulți specialiști. De exemplu, când un inginer de rețea vorbește despre comutatoarele Layer 1 sau Layer 2, sau un furnizor de firewall vorbește despre controlul Layer 7, vorbește despre straturile definite în modelul OSI.

Acest articol vorbește despre porturile de rețea situate la nivelul 4 - transport. În suita TCP/IP, aceste porturi sunt utilizate de protocoalele TCP și UDP. Dar înainte de a intra în detaliile unui singur strat, este important să aruncăm o privire rapidă asupra celor șapte straturi OSI și a rolurilor pe care le joacă în rețelele moderne TCP/IP.

Straturile 1 și 2: Cabluri fizice și adrese MAC

Stratul 1, fizic, reprezintă mediul real prin care circulă semnalul, cum ar fi cablul de cupru, cablul de fibră optică sau semnalele radio (în cazul Wi-Fi). Stratul 2, legătura de date, descrie formatul de date pentru transmiterea pe mediul fizic. La nivelul 2, pachetele sunt organizate în cadre și pot fi implementate funcții de bază de control al fluxului și de gestionare a erorilor. Standardul IEEE 802.3, mai bine cunoscut sub numele de Ethernet, este cel mai comun standard Layer 2 pentru rețelele locale moderne. Un comutator de rețea tipic este un dispozitiv de nivel 2 prin care mai multe computere se conectează fizic și fac schimb de date între ele. Uneori, două computere nu se pot conecta între ele, chiar dacă adresele IP par a fi corecte, problema poate fi cauzată de erori în memoria cache a Protocolului de rezoluție a adreselor (ARP), indicând o problemă la nivelul 2. În plus, unele puncte de acces wireless (Acces); Point, AP) oferă filtrarea adresei MAC, permițând numai adaptoarelor de rețea cu o anumită adresă MAC să se conecteze la un AP fără fir.

Straturile 3 și 4: adrese IP și porturi de rețea

Nivelul 3, rețea, acceptă rutare. În TCP/IP, rutarea este implementată în IP. Adresa IP a pachetului aparține Layer 3. Routerele de rețea sunt dispozitive de Layer 3 care analizează adresele IP ale pachetelor și transmit pachetele către alt router sau livrează pachete către computerele locale. Dacă în rețea este detectat un pachet suspect, primul pas este să verificați adresa IP a pachetului pentru a determina originea pachetului.

Împreună cu stratul de rețea, stratul 4 (transport) este un bun punct de plecare pentru diagnosticarea problemelor de rețea. Pe Internet, Layer 4 conține protocoalele TCP și UDP și informații despre portul de rețea care asociază un pachet cu o anumită aplicație. Stiva de rețea a unui computer utilizează o asociere de port de rețea TCP sau UDP cu o aplicație pentru a direcționa traficul de rețea către acea aplicație. De exemplu, portul TCP 80 este asociat cu o aplicație de server Web. Această mapare a porturilor la aplicații este cunoscută ca un serviciu.

TCP și UDP sunt diferite. În esență, TCP oferă o conexiune fiabilă pentru comunicarea între două aplicații. Înainte de a începe comunicarea, cele două aplicații trebuie să stabilească o conexiune prin finalizarea procesului de strângere de mână TCP în trei pași. UDP este mai degrabă o abordare de foc și uitare. Fiabilitatea conexiunii pentru aplicațiile TCP este asigurată de protocol, dar aplicația UDP trebuie să verifice în mod independent fiabilitatea conexiunii.

Portul de rețea este un număr între 1 și 65535 care este specificat și cunoscut ambelor aplicații între care se stabilește comunicația. De exemplu, un client trimite de obicei o cerere necriptată către un server la o adresă țintă pe portul TCP 80. De obicei, un computer trimite o solicitare DNS către un server DNS la o adresă țintă pe portul UDP 53. Clientul și serverul au o sursă și adresa IP de destinație și portul de rețea sursă și destinație, care pot varia. Din punct de vedere istoric, toate numerele de port sub 1024 sunt numite „numere de port cunoscute” și sunt înregistrate la Internet Assigned Numbers Authority (IANA). Pe unele sisteme de operare, numai procesele de sistem pot folosi porturi din acest interval. În plus, organizațiile pot înregistra porturile 1024 până la 49151 la IANA pentru a asocia portul cu aplicația lor. Această înregistrare oferă o structură care ajută la evitarea conflictelor între aplicațiile care încearcă să utilizeze același număr de port. Totuși, în general, nimic nu împiedică o aplicație să solicite un anumit port atâta timp cât acesta nu este ocupat de un alt program activ.

Din punct de vedere istoric, serverul putea asculta pe porturi cu numere mici, iar clientul ar putea iniția o conexiune pe un port cu numere mari (peste 1024). De exemplu, un client Web poate deschide o conexiune la un server Web pe portul de destinație 80, dar poate asocia un port sursă selectat aleatoriu, cum ar fi portul TCP 1025. Când răspunde clientului, serverul Web adresează pachetul clientului cu sursa portul 80 și portul de destinație 1025. Combinația dintre o adresă IP și un port se numește socket și trebuie să fie unică pe computer. Din acest motiv, atunci când configurați un server Web cu două site-uri Web separate pe același computer, trebuie să utilizați mai multe adrese IP, cum ar fi adresa 1:80 și adresa 2:80, sau să configurați serverul Web să asculte pe mai multe porturi de rețea, cum ar fi ca adresa 1:80 și adresa 1:81. Unele servere Web permit mai multe site-uri Web să ruleze pe un singur port solicitând un antet gazdă, dar această funcție este de fapt realizată de aplicația server Web la un nivel superior 7.

Pe măsură ce capabilitățile de rețea au devenit disponibile în sistemele de operare și aplicații, programatorii au început să folosească numere de porturi mai mari de 1024 fără a înregistra toate aplicațiile la IANA. Căutând pe Internet orice port de rețea, de obicei puteți găsi rapid informații despre aplicațiile care folosesc acel port. Sau puteți căuta porturi bine cunoscute și găsiți multe site-uri care listează cele mai comune porturi.

Când blocați aplicațiile de rețea pe un computer sau depanați defectele firewall-ului, cea mai mare parte a muncii provine din clasificarea și filtrarea adreselor IP de nivel 3 și a protocoalelor de nivel 4 și a porturilor de rețea. Pentru a distinge rapid între traficul legitim și suspect, ar trebui să învățați să recunoașteți cele 20 cele utilizate pe scară largă în porturile TCP și UDP ale întreprinderii.

Învățarea să recunoașteți și să vă familiarizați cu porturile de rețea depășește alocarea regulilor de firewall. De exemplu, unele corecții de securitate Microsoft descriu cum să închideți porturile NetBIOS. Această măsură ajută la limitarea răspândirii viermilor care pătrund prin vulnerabilități în sistemul de operare. Știind cum și unde să închideți aceste porturi poate ajuta la reducerea riscurilor de securitate a rețelei în timp ce vă pregătiți pentru implementarea unui patch critic.

Și direct la nivelul 7

Este rar să auzim despre Layer 5 (sesiune) și Layer 6 (prezentare) în aceste zile, dar Layer 7 (aplicație) este un subiect fierbinte printre furnizorii de firewall. Cea mai nouă tendință în firewall-urile de rețea este inspecția Layer 7, care descrie tehnicile utilizate pentru a analiza modul în care o aplicație interacționează cu protocoalele de rețea. Analizând sarcina utilă a unui pachet de rețea, un firewall poate determina dacă traficul care trece prin acesta este legitim. De exemplu, o cerere Web conține o instrucțiune GET în interiorul unui pachet Layer 4 (port TCP 80). Dacă firewall-ul dvs. are funcționalitate Layer 7, puteți verifica dacă declarația GET este corectă. Un alt exemplu este că multe programe de partajare de fișiere peer-to-peer (P2P) pot deturna portul 80. Drept urmare, un străin poate configura programul să utilizeze un port pe care îl alege - cel mai probabil un port care ar trebui lăsat deschis în un firewall dat. Dacă angajații unei companii au nevoie de acces la Internet, portul 80 trebuie deschis, dar pentru a distinge traficul Web legitim de traficul P2P direcționat de cineva către portul 80, firewall-ul trebuie să ofere control de nivel 7.

Rolul firewall-ului

După ce am descris straturile de rețea, putem trece la descrierea mecanismului de comunicare între aplicațiile de rețea prin firewall-uri, acordând o atenție deosebită porturilor de rețea utilizate. În exemplul următor, un browser client comunică cu un server Web de pe cealaltă parte a firewall-ului, la fel cum ar comunica un angajat al companiei cu un server Web de pe Internet.

Majoritatea firewall-urilor Internet funcționează la straturile 3 și 4 pentru a examina și apoi a permite sau bloca traficul de rețea de intrare și de ieșire. În general, administratorul scrie liste de control al accesului (ACL) care definesc adresele IP și porturile de rețea ale traficului care este blocat sau permis. De exemplu, pentru a accesa Web-ul, trebuie să lansați un browser și să îl îndreptați către site-ul Web. Calculatorul inițiază o conexiune de ieșire prin trimiterea unei secvențe de pachete IP constând dintr-un antet și informații despre sarcina utilă. Antetul conține informații despre rută și alte atribute de pachet. Regulile de firewall sunt adesea scrise având în vedere informațiile de rutare și de obicei conțin adresele IP sursă și destinație (nivelul 3) și protocolul de pachete (nivelul 4). Când navigați pe Web, adresa IP de destinație aparține serverului Web, iar protocolul și portul de destinație (implicit) sunt TCP 80. Adresa IP sursă este adresa computerului de pe care utilizatorul accesează Web-ul și sursa port este de obicei un număr alocat dinamic, mai mare decât 1024. Informațiile utile sunt independente de antet și sunt generate de aplicația utilizatorului; în acest caz, este o solicitare către serverul Web de a furniza o pagină Web.

Firewall-ul analizează traficul de ieșire și îl permite conform regulilor firewall-ului. Multe companii permit tot traficul de ieșire din rețeaua lor. Această abordare simplifică configurarea și implementarea, dar reduce securitatea din cauza lipsei de control asupra datelor care părăsesc rețeaua. De exemplu, un cal troian poate infecta un computer dintr-o rețea de afaceri și poate trimite informații de pe acel computer către un alt computer de pe Internet. Este logic să creați liste de control al accesului pentru a bloca astfel de informații.

Spre deosebire de abordarea de ieșire a multor firewall-uri, majoritatea sunt configurate pentru a bloca traficul de intrare. De obicei, firewall-urile permit traficul de intrare numai în două situații. Primul este traficul care sosește ca răspuns la o solicitare trimisă anterior de utilizator. De exemplu, dacă îndreptați browserul către adresa unei pagini Web, firewall-ul permite codului HTML și altor componente ale paginii Web să intre în rețea. Al doilea caz este găzduirea unui serviciu intern pe Internet, cum ar fi un server de e-mail, un site Web sau FTP. Găzduirea unui astfel de serviciu se numește de obicei traducere de port sau publicare pe server. Implementarea traducerii porturilor variază între furnizorii de firewall, dar principiul de bază este același. Administratorul definește un serviciu, cum ar fi portul TCP 80 pentru serverul Web și un server back-end pentru a găzdui serviciul. Dacă pachetele intră în firewall prin interfața externă corespunzătoare acestui serviciu, atunci mecanismul de traducere a portului le transmite către un anumit computer din rețea ascuns în spatele firewall-ului. Traducerea portului este utilizată împreună cu serviciul NAT descris mai jos.

Bazele NAT

Cu NAT, mai multe computere dintr-o companie pot partaja un spațiu public mic de adrese IP. Serverul DHCP al unei companii poate aloca o adresă IP dintr-unul dintre blocurile de adrese IP private, care nu sunt rutabile pe Internet, definite în Request for Comments (RFC) nr. 1918. Mai multe companii pot partaja, de asemenea, același spațiu de adrese IP private. Exemple de subrețele IP private sunt 10.0.0.0/8, 172.16.0.0/12 și 192.168.0.0/16. Routerele de internet blochează orice pachet direcționat către una dintre adresele private. NAT este o caracteristică firewall care permite companiilor care folosesc adrese IP private să comunice cu alte computere de pe Internet. Firewall-ul știe cum să traducă traficul de intrare și de ieșire în adrese IP interne private, astfel încât fiecare computer să poată accesa Internetul.

În fig. Figura 1 prezintă o conexiune NAT de bază între un client și un server Web. În etapa 1, traficul direcționat către Internet de la un computer din rețeaua corporativă intră în interfața internă a firewall-ului. Firewall-ul primește pachetul și face o intrare în tabelul de urmărire a conexiunii, care controlează traducerea adresei. Firewall-ul înlocuiește apoi adresa sursă privată a pachetului cu propria sa adresă IP publică externă și trimite pachetul la destinația sa pe Internet (pasul 2). Calculatorul de destinație primește pachetul și transmite răspunsul către firewall (pasul 3). Odată ce firewall-ul primește acest pachet, caută sursa pachetului original în tabelul de urmărire a conexiunii, înlocuiește adresa IP de destinație cu adresa IP privată corespunzătoare și redirecționează pachetul către computerul sursă (pasul 4). Deoarece firewall-ul trimite pachete în numele tuturor computerelor interne, schimbă portul de rețea sursă, iar aceste informații sunt stocate în tabelul de urmărire a conexiunii al firewall-ului. Acest lucru este necesar pentru a vă asigura că prizele de ieșire rămân unice.

Este important să înțelegeți cum funcționează NAT, deoarece NAT modifică adresa IP și porturile de rețea ale pachetelor de trafic. Această înțelegere ajută la diagnosticarea defecțiunilor. De exemplu, devine clar de ce același trafic poate avea adrese IP și porturi de rețea diferite pe interfețele externe și interne ale firewall-ului.

Mai întâi fundația, apoi structura

Înțelegerea principiilor de bază de rețea din aplicație, firewall și port nu este doar pentru inginerii de rețea. Astăzi, este rar să găsești un sistem informatic care nu este conectat la o rețea și chiar și administratorii de sistem își pot rezolva problemele mult mai ușor, înțelegând cel puțin elementele de bază ale utilizării porturilor de rețea pentru a comunica aplicațiile prin Internet.

A doua parte a articolului va analiza instrumentele de detectare a aplicațiilor din rețea prin analizarea porturilor de rețea implicate. Pentru a găsi aplicații care deschid porturi de ascultare și sunt accesibile prin rețea, computerul este interogat prin rețea (scanare porturi) și local (scanare gazdă). În plus, prin vizualizarea jurnalelor de firewall, puteți examina traficul de rețea care traversează granița rețelei și puteți analiza diferitele porturi de rețea utilizate de aplicațiile Windows și UNIX.

Surse: Wikipedia, Microsoft, portscan.ru

Cum pot afla ce porturi sunt deschise pe computerul meu?

  1. Pentru Windows: Start → „cmd” → Rulați ca administrator → „netstat -bn”
  2. Într-un program antivirus precum Avast, este posibil să vizualizați porturile active în Firewall: instrumente -> Firewall -> Conexiuni de rețea.

De asemenea, comenzi utile netstat:

Pentru a afișa atât statisticile Ethernet, cât și statisticile pentru toate protocoalele, tastați următoarea comandă:

netstat -e -s

Pentru a afișa statisticile numai pentru protocoalele TCP și UDP, tastați următoarea comandă:

netstat -s -p tcp udp

Pentru a afișa conexiunile TCP active și ID-urile procesului la fiecare 5 secunde, tastați următoarea comandă:

nbtstat -o 5

Pentru a afișa conexiunile TCP active și ID-urile procesului folosind forma numerică, tastați următoarea comandă:

nbtstat -n -o

Următoarele valori de stare sunt valabile pentru socket-urile TCP:

ÎNCHIS Închis Priza nu este folosită.
ASCULTARE (ASCULTARE) Așteaptă conexiunile de intrare.
SYN_SENT Încercarea activă de a stabili o conexiune.
SYN_RECEIVED Sincronizarea inițială a conexiunii este în curs.
STABILIT Conexiunea a fost stabilită.
CLOSE_WAIT Partea de la distanță s-a deconectat; așteptând să se închidă priza.
FIN_WAIT_1 Priza este închisă; deconectarea conexiunii.
ÎNCHIDERE Priza este închisă, apoi partea de la distanță se deconectează; Se așteaptă confirmarea.
LAST_ACK Partea de la distanță este deconectată, apoi priza este închisă; Se așteaptă confirmarea.
FIN_WAIT_2 Priza este închisă; așteptând ca partea de la distanță să se deconecteze.
TIMP DE AȘTEPTARE Socket-ul este închis, dar așteaptă procesarea pachetelor încă în rețea

Lista celor mai frecvent utilizate porturi

Porturile de rețea pot oferi informații vitale despre aplicațiile care accesează computerele prin rețea. Cunoscând aplicațiile care folosesc rețeaua și porturile de rețea corespunzătoare, puteți crea reguli de firewall precise și puteți configura computerele gazdă pentru a permite doar trafic util. Prin construirea unui profil de rețea și implementarea instrumentelor pentru a recunoaște traficul de rețea, puteți detecta mai eficient intrușii - uneori pur și simplu analizând traficul de rețea pe care îl generează. Am început să luăm în considerare acest subiect în prima parte a articolului publicat în numărul precedent al revistei. Acesta a furnizat informații de bază despre porturile TCP/IP ca bază pentru securitatea rețelei. Partea 2 va descrie câteva metode de rețea și gazdă care pot fi utilizate pentru a identifica aplicațiile care ascultă într-o rețea. Mai târziu în articol vom vorbi despre cum să evaluăm traficul care trece prin rețea.

Blocarea aplicațiilor de rețea

Suprafața de atac al rețelei este un termen comun pentru a descrie vulnerabilitatea rețelei. Multe atacuri de rețea au loc prin aplicații vulnerabile, iar suprafața de atac poate fi redusă semnificativ prin reducerea numărului de aplicații active în rețea. Cu alte cuvinte, ar trebui să dezactivați serviciile neutilizate, să instalați un firewall pe sistemul dedicat pentru a verifica legitimitatea traficului și să creați o listă cuprinzătoare de control al accesului (ACL) pentru firewall-ul din perimetrul rețelei.

Fiecare port de rețea deschis reprezintă o aplicație care ascultă în rețea. Suprafața de atac a fiecărui server conectat la rețea poate fi redusă prin dezactivarea tuturor serviciilor și aplicațiilor de rețea neesențiale. Windows Server 2003 este superior versiunilor anterioare ale sistemului de operare deoarece permite mai puține servicii de rețea în mod implicit. Cu toate acestea, auditarea este încă necesară pentru a detecta aplicațiile nou instalate și modificările de configurare care deschid porturi de rețea inutile.

Fiecare port deschis este un potențial backdoor pentru ca atacatorii să exploateze spațiile din aplicația gazdă sau să acceseze în secret aplicația cu numele și parola altui utilizator (sau să folosească o altă metodă de autentificare legitimă). Oricum, un prim pas important pentru a vă proteja rețeaua este să dezactivați pur și simplu aplicațiile de rețea neutilizate.

Scanare porturi

Scanarea portului este procesul de detectare a aplicațiilor care ascultă prin sondarea activă a porturilor de rețea ale unui computer sau alt dispozitiv de rețea. Posibilitatea de a citi rezultatele scanării și de a compara rapoartele rețelei cu rezultatele sondajului portului gazdă vă permite să obțineți o imagine clară a traficului care circulă prin rețea. Cunoașterea topologiei rețelei este importantă în pregătirea unui plan strategic pentru scanarea unor zone specifice. De exemplu, scanând o serie de adrese IP externe, puteți aduna date valoroase despre un atacator de pe Internet. Prin urmare, ar trebui să vă scanați rețeaua mai des și să închideți toate porturile de rețea inutile.

Scanarea portului firewall extern poate detecta toate serviciile care răspund (cum ar fi web sau e-mail) găzduite pe serverele interne. Aceste servere ar trebui, de asemenea, protejate. Configurați un scaner de porturi familiar (de exemplu, Network Mapper - Nmap) pentru a scana grupul dorit de porturi UDP sau TCP. De obicei, scanarea portului TCP este mai fiabilă decât scanarea UDP datorită feedback-ului mai profund din protocoalele TCP orientate spre conexiune. Există versiuni de Nmap atât pentru Windows, cât și pentru Unix. Pornirea unei scanări de bază este ușoară, deși programul oferă funcții mult mai avansate. Pentru a găsi porturi deschise pe computerul de testare, am rulat comanda

Nmap 192.168.0.161

Ecranul 1 arată rezultatele unei sesiuni de scanare - în acest caz, un computer Windows 2003 într-o configurație standard. Datele colectate din scanarea portului arată că există șase porturi TCP deschise.

Port Protocol Descriere
1 20 Date FTP File Transfer Protocol - protocol de transfer de fișiere. Port de date.
2 21 Control FTP File Transfer Protocol - protocol de transfer de fișiere. Port de comandă.
3 22 SSH Secure SHell - „safe shell”. Protocol pentru controlul de la distanță al sistemului de operare.
4 23 telnet REȚEA TERMINALĂ. Protocol pentru implementarea unei interfețe text în rețea.
5 25 SMTP Protocol simplu de transfer de e-mail - un protocol simplu de transfer de e-mail.
6 42 CÂȘTIGE Serviciul de nume de Internet Windows. Serviciu pentru maparea numelor computerelor NetBIOS cu adrese IP gazdă.
7 43 CARE ESTE "Care este". Protocol pentru obținerea datelor de înregistrare despre deținătorii de nume de domeniu și adrese IP.
8 53 DNS Sistem de nume de domeniu - sistem de nume de domeniu.
9 67 DHCP Dynamic Host Configuration Protocol - protocol pentru configurarea dinamică a gazdei. Obținerea IP-urilor dinamice.
10 69 TFTP Trivial File Transfer Protocol - un protocol simplu de transfer de fișiere.
11 80 HTTP/Web HyperText Transfer Protocol - protocol de transfer hipertext.
12 110 POP3 Post Office Protocol Version 3 - protocol pentru primirea e-mailurilor, versiunea 3.
13 115 SFTP Protocolul de transfer de fișiere SSH. Protocol securizat de transfer de date.
14 123 NTP Network Time Protocol. Un protocol pentru sincronizarea ceasului intern al computerului.
15 137 NetBIOS Sistem de intrare/ieșire de bază în rețea. Protocol pentru furnizarea operațiunilor de intrare/ieșire în rețea. Serviciu de nume.
16 138 NetBIOS Sistem de intrare/ieșire de bază în rețea. Protocol pentru furnizarea operațiunilor de intrare/ieșire în rețea. Serviciu de conectare.
17 139 NetBIOS Sistem de intrare/ieșire de bază în rețea. Protocol pentru furnizarea operațiunilor de intrare/ieșire în rețea. Serviciu de sesiune.
18 143 IMAP Internet Message Access Protocol. Protocolul stratului de aplicație pentru accesarea e-mailului.
19 161 SNMP Simple Network Management Protocol - un protocol simplu de gestionare a rețelei. Gestionarea dispozitivelor.
20 179 BGP Border Gateway Protocol, protocol de frontieră gateway. Protocol de rutare dinamică.
21 443 HTTPS HyperText Transfer Protocol Secure) este un protocol HTTP care acceptă criptarea.
22 445 SMB Bloc de mesaje pe server. Un protocol pentru accesul de la distanță la fișiere, imprimante și resurse de rețea.
23 514 Syslog Jurnal de sistem. Un protocol pentru trimiterea și înregistrarea mesajelor despre evenimente de sistem în curs.
24 515 LPD Line Printer Daemon. Protocol pentru imprimarea de la distanță pe o imprimantă.
25 993 IMAP SSL Protocol IMAP care acceptă criptarea SSL.
26 995 POP3 SSL Protocol POP3 care acceptă criptarea SSL.
27 1080 SOSETI SOCKET Secure. Protocol pentru obținerea accesului anonim securizat.
28 1194 OpenVPN Implementarea deschisă a tehnologiei Virtual Private Network (VPN).
29 1433 MSSQL Microsoft SQL Server este un sistem de gestionare a bazelor de date. Port de acces la baza de date.
30 1702 L2TP (IPsec) Protocol pentru susținerea rețelelor private virtuale. Precum și un set de protocoale de protecție a datelor.
31 1723 PPTP Protocol tunel pentru o conexiune sigură cu un server punct la punct.
32 3128 Proxy În prezent, portul este adesea folosit de serverele proxy.
33 3268 LDAP Lightweight Directory Access Protocol - protocol de acces ușor la directoare (servicii de directoare).
34 3306 MySQL Acces la bazele de date MySQL.
35 3389 RDP Remote Desktop Protocol - protocol desktop la distanță pentru Windows.
36 5432 PostgreSQL Acces la bazele de date PostgreSQL.
37 5060 ÎNGHIŢITURĂ Protocol pentru stabilirea unei sesiuni și transmiterea conținutului multimedia.
38 5900 VNC Virtual Network Computing este un sistem de acces de la distanță la desktopul unui computer.
39 5938 TeamViewer TeamViewer este un sistem pentru asigurarea controlului computerului de la distanță și schimbului de date.
40 8080 HTTP/Web Un port alternativ pentru protocolul HTTP. Uneori folosit de serverele proxy.
41 10000 NDMP Port popular: Webmin, SIP-voice, VPN IPSec peste TCP.
42 20000 DNP
Ecranul 1: Sesiune de scanare Nmap de bază
  • Portul 135 este utilizat de caracteristica de mapare a punctelor terminale RPC găsită în multe tehnologii Windows, cum ar fi aplicațiile COM/DCOM, DFS, înregistrarea evenimentelor, replicarea fișierelor, așteptarea mesajelor și Microsoft Outlook. Acest port ar trebui să fie blocat de firewall-ul perimetrului rețelei, dar este dificil să îl blocați și să mențineți în continuare funcționalitatea Windows.
  • Portul 139 este utilizat de serviciul de sesiune NetBIOS, care activează Browserul Găsește alte computere, Serviciile de partajare a fișierelor, Conectarea la rețea și serviciul Server. Este greu de închis, la fel ca portul 135.
  • Portul 445 este folosit de Windows pentru partajarea fișierelor. Pentru a închide acest port, trebuie să blocați Partajarea fișierelor și a imprimantei pentru rețelele Microsoft. Închiderea acestui port nu împiedică computerul să se conecteze la alte resurse de la distanță; cu toate acestea, alte computere nu se vor putea conecta la acest sistem.
  • Porturile 1025 și 1026 sunt deschise dinamic și sunt utilizate de alte procese de sistem Windows, în special de diverse servicii.
  • Portul 3389 este folosit de Desktop la distanță, care nu este activat implicit, dar este activ pe computerul meu de testare. Pentru a închide portul, accesați fila La distanță din caseta de dialog Proprietăți sistem și debifați caseta de selectare Permite utilizatorilor să se conecteze de la distanță la acest computer.

Asigurați-vă că căutați porturi UDP deschise și închideți pe cele inutile. Programul de scanare arată porturile deschise ale computerului care sunt vizibile din rețea. Rezultate similare pot fi obținute folosind instrumente situate pe sistemul gazdă.

Scanare gazdă

Pe lângă utilizarea unui scanner de porturi de rețea, porturile deschise de pe sistemul gazdă pot fi detectate folosind următoarea comandă (rulate pe sistemul gazdă):

Netstat -an

Această comandă funcționează atât pe Windows, cât și pe UNIX. Netstat oferă o listă de porturi active pe un computer. Pe Windows 2003 Windows XP, trebuie să adăugați opțiunea -o pentru a obține identificatorul de program (PID) corespunzător. Figura 2 arată ieșirea Netstat pentru același computer care a fost scanat anterior. Vă rugăm să rețineți că mai multe porturi care erau active anterior sunt închise.

Audit jurnal de firewall

O altă modalitate utilă de a detecta aplicațiile de rețea care trimit sau primesc date prin rețea este de a colecta și analiza mai multe date în jurnalul de firewall. Este puțin probabil ca intrările de respingere care furnizează informații din front-end-ul firewall-ului să fie utile din cauza „traficului de zgomot” (de exemplu, viermi, scanere, testare ping) care blochează internetul. Dar dacă înregistrați pachetele permise din interfața internă, puteți vedea tot traficul de rețea de intrare și de ieșire.

Pentru a vedea datele brute de trafic din rețeaua dvs., puteți instala un analizor de rețea care se conectează la rețea și înregistrează toate pachetele de rețea detectate. Cel mai utilizat analizor de rețea gratuit este Tcpdump pentru UNIX (versiunea Windows se numește Windump), care este ușor de instalat pe computer. După instalarea programului, ar trebui să îl configurați să funcționeze în modul de primire a tuturor pachetelor de rețea pentru a înregistra tot traficul, apoi conectați-l la un monitor de port de pe comutatorul de rețea și monitorizați tot traficul care trece prin rețea. Configurarea unui monitor de port va fi discutată mai jos. Tcpdump este un program extrem de flexibil care poate fi folosit pentru a vizualiza traficul de rețea folosind filtre specializate și pentru a afișa doar informații despre adresele IP și porturile sau toate pachetele. Este dificil să vizualizați depozitele de rețea pe rețelele mari fără ajutorul filtrelor adecvate, dar trebuie avut grijă să nu pierdeți date importante.

Combinarea componentelor

Până acum, am analizat diverse metode și instrumente care pot fi folosite pentru a detecta aplicațiile care utilizează rețeaua. Este timpul să le combinați și să arătați cum să identificați porturile de rețea deschise. Este uimitor cât de vorbăreț sunt computerele în rețea! În primul rând, este recomandat să citiți documentul Microsoft „Prezentare generală a serviciilor și cerințele portului de rețea pentru sistemul Windows Server” ( http://support.microsoft.com/default.aspx?scid=kb;en-us;832017), care listează protocoalele (TCP și UDP) și numerele de porturi utilizate de aplicații și de majoritatea serviciilor de bază Windows Server. Documentul descrie aceste servicii și porturile de rețea asociate pe care le utilizează. Vă recomandăm să descărcați și să imprimați acest ghid de referință util pentru administratorii de rețea Windows.

Configurarea unui analizor de rețea

S-a remarcat anterior că o modalitate de a determina porturile utilizate de aplicații este de a monitoriza traficul dintre computere folosind un analizor de rețea. Pentru a vedea tot traficul, trebuie să conectați un analizor de rețea la un hub sau un monitor de port de pe switch. Fiecare port de pe un hub vede tot traficul de la fiecare computer conectat la acel hub, dar hub-urile sunt o tehnologie învechită și majoritatea companiilor le înlocuiesc cu switch-uri, care oferă performanțe bune, dar sunt greu de analizat: fiecare port de switch acceptă doar traficul destinat un computer conectat la hub la acest port. Pentru a analiza întreaga rețea, trebuie să monitorizați traficul trimis către fiecare port de comutare.

Acest lucru necesită configurarea unui monitor de port (diferiți furnizori îl numesc port span sau port în oglindă) pe comutator. Instalarea unui monitor de port pe un switch Cisco Catalyst de la Cisco Systems este ușoară. Trebuie să vă înregistrați pe switch și să activați modul Enable, apoi să mergeți la configurarea modului terminal și să introduceți numărul de interfață al portului switch-ului către care ar trebui să fie trimis tot traficul monitorizat. În cele din urmă, trebuie să specificați toate porturile monitorizate. De exemplu, următoarele comenzi monitorizează trei porturi Fast Ethernet și redirecționează o copie a traficului către portul 24.

Interfață FastEthernet0/24 porturi monitor FastEthernet0/1 port FastEthernet0/2 monitor porturi FastEthernet0/3 end

În acest exemplu, un analizor de rețea conectat la portul 24 va vizualiza tot traficul de ieșire și de intrare de la computerele conectate la primele trei porturi ale comutatorului. Pentru a vizualiza configurația creată, introduceți comanda

Scrieți memoria

Analiza inițială

Să ne uităm la un exemplu de analiză a datelor care trec printr-o rețea. Dacă utilizați un computer Linux pentru analiza rețelei, puteți obține o înțelegere cuprinzătoare a tipului și frecvenței pachetelor din rețea folosind un program precum IPTraf în modul Statistic. Detaliile de trafic pot fi găsite folosind programul Tcpdump.

Există două tipuri de schimb de date computer-la-computer - tunete de dateȘi sesiuni. Datagrama este un mesaj care nu necesită confirmarea primirii de la partea care primește, iar dacă o astfel de confirmare este necesară, destinatarul trebuie să trimită el însuși un mesaj special. Pentru a face schimb de date în acest fel, părțile care primesc și care transmit trebuie să respecte cu strictețe un anumit protocol pentru a evita pierderea informațiilor. Fiecare datagramă este un mesaj independent, iar dacă există mai multe datagrame pe LAN, livrarea lor către destinatar, în general, nu este garantată. În acest caz, o datagramă face de obicei parte dintr-un mesaj, iar pe majoritatea rețelelor LAN viteza de transmisie a datagramelor este mult mai mare decât a mesajelor din sesiuni.

ÎN sesiune se presupune că se creează o conexiune logică pentru schimbul de mesaje între calculatoare și se garantează primirea mesajelor. În timp ce datagramele pot fi transmise la momente aleatorii, într-o sesiune sesiunea se încheie înainte ca mesajul să fie transmis, iar sesiunea trebuie închisă când schimbul de date este complet.

Sistemele de operare ale majorității computerelor acceptă modul de multiprogramare, adică mai multe programe rulează simultan (mai multe procese rulează în paralel). Cu un anumit grad de acuratețe, putem spune că procesul este destinația finală a mesajului. Cu toate acestea, deoarece procesele sunt create și terminate dinamic, expeditorul are rareori suficiente informații pentru a identifica procesul pe alt computer. Prin urmare, devine necesară determinarea destinației datelor pe baza funcțiilor îndeplinite de procese, fără a ști nimic despre procesele care sunt implementate de aceste funcții.

În practică, mai degrabă decât să se gândească la un proces ca o destinație finală, se crede că fiecare computer are un set de destinații numite porturi de protocol. Fiecare port este identificat printr-un număr întreg pozitiv (de la 0 la 65535). În acest caz, sistemul de operare oferă un mecanism de comunicare utilizat de procese pentru a indica portul pe care rulează sau portul la care au nevoie de acces. De obicei, porturile sunt stocate în tampon, iar datele care ajung la un anumit port înainte ca un proces să fie gata să-l primească nu se vor pierde: vor fi puse în coadă până când procesul le preia.

Pentru a înțelege mai bine tehnologia portuară, imaginați-vă că mergeți la o bancă pentru a face un depozit. Pentru a face acest lucru, trebuie să mergeți la o anumită fereastră, unde operatorul va completa documentele și veți deschide un cont. În acest exemplu, banca reprezintă un computer, iar operatorii băncii sunt programe care efectuează lucrări specifice. Dar ferestrele sunt porturile, iar fiecare fereastră din bancă este adesea numerotată (1, 2,3 ...).

Același lucru este valabil și pentru porturi, prin urmare, pentru a comunica cu un port de pe alt computer, expeditorul trebuie să cunoască atât adresa IP a computerului destinatar, cât și numărul portului de pe computer. Fiecare mesaj conține atât numărul portului computerului către care este adresat mesajul, cât și numărul portului sursă al computerului către care trebuie trimis răspunsul. Acest lucru face posibil să se răspundă expeditorului pentru fiecare proces.

Porturile TCP/IP numerotate de la 0 la 1023 sunt privilegiate și sunt utilizate de serviciile de rețea, care, la rândul lor, rulează cu privilegii de administrator (super utilizator). De exemplu, serviciul Windows File and Folder Sharing folosește portul 139, dar dacă nu rulează pe computer, atunci când încercați să accesați acest serviciu (adică acest port), veți primi un mesaj de eroare.

Porturile TCP/IP de la 1023 la 65535 nu sunt privilegiate și sunt utilizate de programele client pentru a primi răspunsuri de la servere. De exemplu, browserul web al unui utilizator, atunci când accesează un server web, utilizează portul 44587 al computerului său, dar accesează portul 80 al serverului web. După ce a primit cererea, serverul web trimite un răspuns la portul 44587, care este utilizat de browserul web.