TCPD(8)

NUME
tcpd - facilitate de control al accesului pentru serviciile de internet

DESCRIERE

Programul tcpd poate fi configurat pentru a monitoriza cererile primite pentru telnet, finger, ftp, exec, rsh, rlogin, tftp, talk, comsat și alte servicii care au o corespondență unu la unu cu fișierele executabile.

Programul suportă atât socluri de tip 4.3BSD, cât și TLI de tip System V.4. Funcționalitatea poate fi limitată atunci când protocolul de sub TLI nu este un protocol de internet.

Există două moduri posibile de operare: executarea lui tcpd înaintea unui serviciu pornit de inetd sau legarea unui demon cu biblioteca partajată libwrap, așa cum este documentat în pagina de manual hosts_access(3). Funcționarea atunci când este pornit de inetd este următoarea: de fiecare dată când sosește o cerere de serviciu, demonul inetd este păcălit să ruleze programul tcpd în loc de serverul dorit. tcpd înregistrează cererea și face câteva verificări suplimentare. Când totul este în regulă, tcpd rulează programul serverului corespunzător și se retrage.

Caracteristicile opționale sunt: control al accesului bazat pe modele, căutări ale numelui de utilizator al clientului cu protocolul RFC 931 etc., protecție împotriva gazdelor care pretind că au numele de gazdă al altcuiva și protecție împotriva gazdelor care pretind că au adresa de rețea a altcuiva.

JURNALIZAREA
Conexiunile care sunt monitorizate de tcpd sunt raportate prin intermediul facilității syslog(3). Fiecare înregistrare conține o marcă de timp, numele gazdei clientului și numele serviciului solicitat. Informațiile pot fi utile pentru a detecta activități nedorite, în special atunci când informațiile din fișierele jurnal de la mai multe gazde sunt îmbinate.

Pentru a afla unde se duc înregistrările, examinați fișierul de configurare syslog, de obicei „/etc/syslog.conf”.

CONTROLUL ACCESULUI
Opțional, tcpd permite o formă simplă de control al accesului care se bazează pe potrivirea modelelor. Software-ul de control al accesului oferă cârlige pentru executarea comenzilor de tip shell atunci când un model se declanșează. Pentru detalii, consultați pagina de manual hosts_access(5).

VERIFICAREA NUMELUI GAZDEI
Schema de autentificare a unor protocoale (rlogin, rsh) se bazează pe numele de gazdă. Unele implementări cred în numele de gazdă pe care îl obțin de la orice server de nume aleatoriu; alte implementări sunt mai atente, dar folosesc un algoritm eronat.

tcpd verifică numele de gazdă al clientului care este returnat de serverul DNS adresa->nume, analizând numele de gazdă și adresa returnate de serverul DNS nume->adresa. Dacă se detectează vreo discrepanță, tcpd concluzionează că are de-a face cu o gazdă care pretinde că are numele de gazdă al altcuiva.

Dacă sursele sunt compilate cu -DPARANOID, tcpd va întrerupe conexiunea în cazul unei neconcordanțe între numele de gazdă și adresă. În caz contrar, numele de gazdă poate fi comparat cu „wildcard”-ul PARANOID (tabel de adrese/nume de gazdă ce utilizează metacaractere, dar în modul „paranoic”, nu toate variantele de adrese/nume cu metacaractere sunt admise), după care se pot lua măsuri adecvate.

FALSIFICAREA ADRESEI GAZDEI
Opțional, tcpd dezactivează opțiunile soclului de direcționare la sursă pentru fiecare conexiune cu care se ocupă. Acest lucru va rezolva majoritatea atacurilor din partea gazdelor care pretind că au o adresă care aparține altei rețele. Serviciile UDP nu beneficiază de această protecție. Această caracteristică trebuie activată în momentul compilării.

RFC 931
Atunci când sunt activate căutările RFC 931 etc. (opțiune de compilare), tcpd va încerca să stabilească numele utilizatorului client. Acest lucru va reuși numai dacă gazda clientului rulează un demon compatibil cu RFC 931. Căutările de nume de utilizator client nu vor funcționa în cazul conexiunilor orientate pe datagrame și pot cauza întârzieri notabile în cazul conexiunilor de la PC-uri.

EXEMPLE
Detaliile de utilizare a tcpd depind de informațiile privind numele de rută care au fost compilate în program.

EXEMPLUL 1
Acest exemplu se aplică atunci când tcpd se așteaptă ca demonii de rețea originali să fie mutați într-un „alt” loc.

Pentru a monitoriza accesul la serviciul finger, mutați demonul «finger» original în „alt” loc și instalați «tcpd» în locul demonului «finger» original. Nu este necesară nicio modificare a fișierelor de configurare.

# mkdir /alt/loc
# mv /usr/sbin/in.fingerd /alt/loc
# cp tcpd /usr/sbin/in.fingerd

Exemplul presupune că demonii de rețea se află în „/usr/sbin”. Pe unele sisteme, daemonii de rețea se află în „/usr/sbin” sau în „/usr/libexec”, sau nu au prefixul „in.” în numele lor.

EXEMPLUL 2
Acest exemplu se aplică atunci când tcpd se așteaptă ca demonii de rețea să fie lăsați la locul lor inițial.

Pentru a monitoriza accesul la serviciul finger, efectuați următoarele modificări în fișierul de configurare inetd (de obicei /etc/inetd.conf):

finger  stream  tcp  nowait  nobody  /usr/sbin/in.fingerd  in.fingerd

devine:

finger  stream  tcp  nowait  nobody  /usr/sbin/tcpd     in.fingerd

Exemplul presupune că demonii de rețea se află în „/usr/sbin”. Pe unele sisteme, daemonii de rețea se află în „/usr/sbin” sau în „/usr/libexec”, demonii nu au prefixul „in.” în numele lor sau nu există un câmp „userid” în fișierul de configurare „inetd”.

Modificări similare vor fi necesare și pentru celelalte servicii care vor fi acoperite de tcpd. Trimiteți un semnal «kill -HUP» la procesul inetd(8) pentru a face ca modificările să intre în vigoare.

EXEMPLUL 3
În cazul demonilor care nu se află într-un director comun („secret” sau altul), editați fișierul de configurare inetd astfel încât să specificați un nume de rută absolută pentru câmpul nume proces. De exemplu:

    ntalk  dgram  udp  wait  root  /usr/sbin/tcpd  /usr/local/lib/ntalkd

Numai ultima componentă (ntalkd) din numele de rută va fi utilizată pentru controlul accesului și pentru jurnalizare.

ERORI
Unii demoni UDP (și RPC) mai rămân pe loc o vreme după ce își termină activitatea, în cazul în care apare o altă cerere. În fișierul de configurare inetd, aceste servicii sunt înregistrate cu opțiunea wait (așteaptă). Doar cererea care a pornit un astfel de daemon va fi înregistrată.

Programul nu funcționează cu servicii RPC prin TCP. Aceste servicii sunt înregistrate ca rpc/tcp în fișierul de configurare inetd. Singurul serviciu non-trivial care este afectat de această limitare este rexd, care este utilizat de comanda on(1). Aceasta nu reprezintă o mare pierdere. Pe majoritatea sistemelor, rexd este mai puțin sigur decât un caracter joker în fișierul „/etc/hosts.equiv”.

Cererile de difuzare RPC (de exemplu: rwall, rup, rusers) par să vină întotdeauna de la gazda care răspunde. Ceea ce se întâmplă este că clientul difuzează cererea către toți demonii portmap din rețeaua sa; fiecare demon portmap transmite cererea către un demon local. În ceea ce privește demonii rwall etc., cererea provine de la gazda locală.

FIȘIERE

Locațiile implicite ale tabelelor de control al accesului la gazdă sunt:

/etc/hosts.allow
/etc/hosts.deny

CONSULTAȚI ȘI
hosts_access(3), funcții furnizate de biblioteca „libwrap”.
hosts_access(5), formatul tabelelor de control al accesului pentru «tcpd».
syslog.conf(5), formatul fișierului de control al «syslogd».
inetd.conf(5), formatul fișierului de control al «inetd».

AUTORI
Wietse Venema (wietse@wzv.win.tue.nl),
Department of Mathematics and Computing Science,
Eindhoven University of Technology
Den Dolech 2, P.O. Box 513,
5600 MB Eindhoven, Olanda

TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.