Protocolul de identificare (ident, Ident Protocol) este protocolul descris în RFC 1413 . Oferă o modalitate de a identifica un utilizator pentru o anumită conexiune TCP . Folosind numerele unei perechi de porturi TCP interconectate ca intrare , protocolul returnează un șir de caractere care identifică proprietarul acestei conexiuni pe partea serverului. Inițial, protocolul de autentificare a fost numit Authentication Server Protocol (Protocol de autentificare server). Serverul care implementează protocolul ident se numește identd ( ident de ́).
Protocolul este un serviciu bazat pe conexiuni TCP. Serverul ascultă conexiunile TCP pe portul 113 (zecimal). După ce conexiunea este stabilită, serverul citește o linie de date care conține informații despre scopul conexiunii. Dacă există un ID de utilizator pentru conexiune, serverul trimite acel ID ca răspuns. Serverul poate închide apoi conexiunea sau poate continua dialogul cerere-răspuns. Serverul ar trebui să închidă conexiunea după expirarea timpului specificat în parametrii de configurare (60-180) în absența oricăror solicitări. Clientul poate închide oricând conexiunea, însă, pentru a compensa eventualele întârzieri ale rețelei, clientul ar trebui să aștepte cel puțin 30 de secunde după solicitare înainte de a închide conexiunea.
Trecerea solicitărilor este permisă numai pentru conexiuni complet organizate. Cererea conține numerele unei perechi de porturi (local - la distanță) folosite pentru identificarea conexiunii și primite cu indicarea adreselor locale și la distanță. Aceasta înseamnă că utilizatorul cu adresa A poate cere doar serverului B informații despre conexiunea dintre A și B.
Condiții inițiale: identd rulează pe computerul client. Clientul contactează un server extern care poate efectua o verificare de identificare.
Serverul acceptă solicitări simple text în formatul:
<port-pe-server>, <port-pe-client>unde <port-on-server> specifică portul TCP (valoarea zecimală) pentru destinație (gazda unde rulează serverul de identificare) și <port-on-client> specifică portul TCP (valoarea zecimală) pe sistemul client. Este important de reținut că, dacă un client de pe gazda A dorește să interogheze un server de pe gazda B pentru o conexiune definită local (pe gazda A) de perechea de porturi 23, 6191 (conexiune TELNET de intrare), clientul trebuie să interogheze perechea 6191, 23 (identificarea conexiunii din punctul de vedere al gazdei B). De exemplu:
6191, 23Răspunsul are formatul:
<port-pe-server>, <port-pe-client> : <tip-resp> : <info-adăugare>unde <port-on-server> și <port-on-client> se potrivesc cu numerele de port din cerere, <resp-type> identifică tipul de răspuns și <add-info> conține date specifice contextului.
Informațiile returnate sunt legate de conexiunea TCP specificată de parametrii <adresa-server>, <adresa-client>, <port-pe-server>, <port-pe-client> (<adresa-server> și <client- adresa> - IP - adresele ambelor părți ale conexiunii, iar <port-on-server> și <port-on-client> sunt parametri de cerere)
De exemplu:
6193, 23 : USERID : UNIX : stjohns 6195, 23 : EROARE: FĂRĂ UTILIZATORRăspunsurile pot fi de două tipuri:
În acest caz, șirul <add-info> conține numele sistemului de operare (incluzând eventual setul de caractere acceptat), urmat de un delimitator „:” și un șir de identificare.
Dacă răspunsul conține un set de caractere, setul de caractere este separat de numele sistemului de operare printr-o virgulă (,). Identificatorii standard sunt utilizați pentru a desemna un set de caractere. Dacă nu este specificat niciun set de caractere, se presupune US-ASCII (vezi mai jos).
Identificatorii sistemului de operare trebuie să fie specificati în conformitate cu RFC 1340 [2] , „Numerele atribuite” sau „succesorii” acestuia.
Pe lângă identificatorii OS specificati în „Numere atribuite”, poate fi utilizat identificatorul special „OTHER” (Alt OS).
Dacă „OTHER” nu este returnat ca sistem de operare, se presupune că serverul returnează identificarea „normală” a utilizatorului care deține conexiunea (un șir de caractere care identifică în mod unic utilizatorul, cum ar fi un nume de utilizator pe sistem sau utilizatorul). parte a unei adrese de e-mail). Dacă este specificat un sistem de operare (adică șirul de răspuns nu conține „OTHER”), se presupune că numele de utilizator este, de asemenea, semnificativ (de exemplu, pentru a fi folosit ca argument pentru o comandă cu degetul sau ca parte a unei adrese de corespondență) .
Valoarea „OTHER” indică faptul că următoarele date sunt un șir neformatat de caractere imprimabile ale setului utilizat în sistem. Un răspuns „ALT” TREBUIE returnat dacă ID-ul utilizatorului nu corespunde cerințelor descrise mai sus. De exemplu, un astfel de răspuns TREBUIE trimis dacă un nume real sau un număr de telefon dintr-o intrare de utilizator UNIX este returnat în loc de un nume de utilizator .
Se presupune că ID-ul utilizatorului conține doar caractere imprimabile ale setului utilizat în sistem. Identificatorul este un șir de octet care nu include caracterele (octal) 000 (NUL), 012 (LF) și 015 (CR). Este important de subliniat faptul că caracterele de spațiu (040) după două puncte fac parte din șirul de identificare și nu trebuie ignorate. De obicei, linia de răspuns se termină cu o secvență CR/LF. Subliniem că șirul poate conține caractere imprimabile, dar nu trebuie să le conțină doar pe acestea.
Dacă dintr-un motiv oarecare nu poate fi determinat proprietarul conexiunii, linia <add-info> raportează motivul. Următoarele valori <add-info> sunt posibile:
Alte coduri de răspuns pot fi adăugate în viitor. Când se utilizează răspunsuri nestandard, acestea trebuie să înceapă cu caracterul „X”.
Pe lângă returnarea răspunsurilor, serverul POATE opri conexiunile fără a returna niciun răspuns. O întrerupere prematură a conexiunii (clientul nu a primit un caracter EOL) TREBUIE să fie tratată de către client ca un răspuns „EROARE: EROARE NECUNOSCUT”.
Note:
Nivelul de valabilitate al informațiilor returnate de acest protocol depinde de setările gazdei solicitate și de politica organizației care menține gazda . De exemplu, un PC folosit într-un laborator deschis poate returna orice informații despre sine pe care utilizatorul dorește să le furnizeze. În plus, gazda poate returna informații special distorsionate (false).
Protocolul de identificare nu este destinat pentru autorizare (autentificare) sau controlul accesului. În cel mai bun caz, acest protocol oferă câteva informații suplimentare despre conexiunile TCP , în cel mai rău caz, returnează informații eronate, incorecte sau distorsionate în mod deliberat.
Utilizarea informațiilor returnate de protocol în orice alt scop decât auditul este puternic descurajată. În special, utilizarea Protocolului de identificare pentru a lua decizii de acces ca mijloc primar (adică, în absența altor verificări) sau secundar poate reduce semnificativ nivelul de securitate al unei gazde.
Serverul de identitate poate colecta informații despre utilizatori, obiecte și procese, care pot conține adesea date private. Serverul de identitate oferă servicii similare cu serviciile CallerID suportate de unele companii de telefonie, iar cerințele pentru informațiile raportate de server sunt formate în același mod ca și pentru datele CallerID. Dacă nu doriți să susțineți serviciul finger din motive de restricționare a accesului la informațiile utilizatorului, nu doriți să utilizați protocolul de autentificare.
Protocolul de identificare este cel mai popular subiect de facto pentru „ Ho, World ” avansat (adică cea mai bună direcție de luat atunci când învățați serios să programați). În acest sens, numărul demonilor care îl implementează este uriaș. Mai jos sunt link-uri către cele mai comune și mai frecvent utilizate servere din această clasă.