Network Information Service
Network Information Service (NIS), originariamente chiamato Yellow Pages (YP), è un servizio di nomi/directory (naming service) di tipo client-server, usato soprattutto in ambienti Unix e sistemi Unix-like per distribuire in rete dati amministrativi e di configurazione (per esempio utenti, gruppi, host, alias di posta e tabelle testuali simili). NIS organizza le informazioni in database chiamati mappe (maps), mantenuti in forma autorevole su un server master e replicati su uno o più server slave/replica; i client interrogano le mappe per risolvere nomi e ottenere attributi (ad esempio la riga per un determinato utente). Dal punto di vista dei protocolli, NIS usa ONC RPC (detto anche Sun RPC) e i meccanismi di binding tramite portmapper/rpcbind per pubblicare e risolvere dinamicamente le porte dei servizi RPC associati a NIS. NIS è spesso considerato una tecnologia legacy per via di limiti strutturali e, soprattutto, di sicurezza; molte piattaforme moderne incoraggiano la migrazione verso servizi basati su LDAP e soluzioni di identity management più recenti.
Network Information Service (NIS), originariamente chiamato Yellow Pages (YP), è un servizio di nomi/directory (naming service) di tipo client-server, usato soprattutto in ambienti Unix e sistemi Unix-like per distribuire in rete dati amministrativi e di configurazione (per esempio utenti, gruppi, host, alias di posta e tabelle testuali simili).[1][2] NIS organizza le informazioni in database chiamati mappe (maps), mantenuti in forma autorevole su un server master e replicati su uno o più server slave/replica; i client interrogano le mappe per risolvere nomi e ottenere attributi (ad esempio la riga per un determinato utente).[3][4]
Dal punto di vista dei protocolli, NIS usa ONC RPC (detto anche Sun RPC) e i meccanismi di binding tramite portmapper/rpcbind per pubblicare e risolvere dinamicamente le porte dei servizi RPC associati a NIS.[5][6]
NIS è spesso considerato una tecnologia legacy per via di limiti strutturali e, soprattutto, di sicurezza; molte piattaforme moderne incoraggiano la migrazione verso servizi basati su LDAP e soluzioni di identity management più recenti.[7][8]
Storia
[modifica | modifica wikitesto]Origini e diffusione
[modifica | modifica wikitesto]Secondo documentazione tecnica di Sun BluePrints, NIS (all’epoca noto come Yellow Pages) era già disponibile nel 1985 e si è affermato come soluzione per centralizzare file amministrativi che, in precedenza, andavano replicati manualmente su ogni host.[9]
Cambio di nome da Yellow Pages a NIS
[modifica | modifica wikitesto]Nei manuali e nelle man page, NIS viene descritto come “precedentemente noto” con il nome Yellow Pages (YP) e il cambio di denominazione viene ricondotto a questioni di marchio nel Regno Unito, dove “Yellow Pages” risulta un marchio registrato di British Telecommunications plc.[4][3]
Evoluzione: NIS+, migrazione verso LDAP e stato su Solaris
[modifica | modifica wikitesto]Sun sviluppò NIS+ come evoluzione di NIS, introducendo (tra le altre cose) una struttura di naming più ricca e meccanismi di sicurezza/controllo accessi più articolati.[9]
In ambiente Solaris sono stati forniti strumenti e meccanismi di migrazione verso repository LDAP (NIS→LDAP, spesso indicato come N2L).[10]
NIS+ non è più distribuito con il sistema operativo Oracle Solaris (rimozione annunciata e documentata), mentre NIS continua a risultare presente in Oracle Solaris 11.x, anche se con avvertenze sul futuro supporto.[11][12][13]
Panoramica tecnica
[modifica | modifica wikitesto]Architettura generale
[modifica | modifica wikitesto]Un’installazione NIS è organizzata in uno o più domini NIS (NIS domain), concettualmente separati dai domini DNS: un dominio NIS non deve rispecchiare un dominio DNS e l’amministrazione può scegliere confini diversi.[14][15]
I ruoli principali sono:
- server NIS (demone ypserv) che pubblica mappe per uno o più domini;
- client NIS che, tramite ypbind, mantiene informazioni di binding (a quale server rivolgere le richieste) e consente alle librerie/strumenti di interrogare le mappe.[16][17]
Il server può gestire più domini individuandoli come sottodirectory (tipicamente sotto /var/yp).[4][18]
Mappe (maps)
[modifica | modifica wikitesto]Una mappa è un database chiave→valore derivato spesso da file testuali (per esempio passwd, group, hosts, services). La nomenclatura delle mappe include varianti come “.byname” o “.byuid” (chiave: nome oppure UID).[19][20]
Gli strumenti “yp*” permettono di interrogare le mappe (es. ypcat per stampare valori, ypmatch per cercare una chiave, ypwhich per vedere il server correntemente usato o il master di una mappa).[21][22][23]
Archiviazione locale delle mappe
[modifica | modifica wikitesto]Le mappe sono memorizzate come database DBM (key/value) e le implementazioni possono differire sul backend: alcune documentazioni (Solaris) citano ndbm, mentre su Linux sono comuni backend gdbm o Berkeley DB (a seconda dell’implementazione).[4][24][18]
Replicazione: master e slave
[modifica | modifica wikitesto]La propagazione delle mappe verso server slave avviene tipicamente tramite:
- ypxfr (pull: lo slave trasferisce una mappa dal master);
- yppush (push: dal master “invita” gli slave a eseguire un trasferimento);
- opzionalmente ypxfrd come servizio per accelerare trasferimenti di mappe grandi.[25][26][27]
Protocolli, RPC e rpcbind/portmapper
[modifica | modifica wikitesto]ONC RPC definisce chiamate remote con encoding XDR e prevede che i servizi si registrino tramite un binder (rpcbind/portmapper).[5][6] NIS è associato a specifici RPC program numbers assegnati storicamente (per esempio “yellow pages (NIS)” 100004 per ypserv, e “yp binder (NIS)” 100007 per ypbind).[28]
Sicurezza
[modifica | modifica wikitesto]Problemi strutturali
[modifica | modifica wikitesto]Il modello di sicurezza di NIS è tradizionalmente basato su una rete “fidata”: la sola conoscenza di nome dominio NIS e hostname del server può essere sufficiente per interrogare mappe, e l’assenza di cifratura/strong authentication rende possibili attacchi di sniffing e spoofing in diversi scenari.[29][30]
Un rischio specifico è l’esposizione di informazioni sensibili nelle mappe di password: diverse guide sottolineano la necessità di evitare la propagazione dell’account root e di proteggere i file sorgente usati per generare le mappe password.[31]
Mitigazioni tipiche
[modifica | modifica wikitesto]Implementazioni di ypserv supportano spesso un file “securenets” (ad esempio /var/yp/securenets) per limitare le reti/host autorizzati a interrogare mappe e richiedere trasferimenti.[32]
Documentazione di sicurezza evidenzia però che questa misura non previene, da sola, attacchi basati su spoofing IP e va integrata con controlli di rete (segmentazione, firewalling, limitazione broadcast) e buone pratiche operative.[33][34]
Implementazioni e varianti
[modifica | modifica wikitesto]Implementazioni NIS (YP) su Unix-like
[modifica | modifica wikitesto]In ambito Linux è comune l’uso di ypserv (server) e strumenti client come yp-tools, spesso mantenuti come “Linux NIS Project”.[35]
Il repository di progetto specifica che ypserv implementa il protocollo YP/NIS v2 (non NIS+).[36]
Sistemi *BSD includono storicamente supporto a YP/NIS con demoni e man page dedicati (ypserv/ypbind).[37][38]
NIS+
[modifica | modifica wikitesto]NIS+ è stato progettato come sostituto di NIS, con funzionalità aggiuntive (naming più strutturato e meccanismi di autenticazione/controllo accessi).[9]
In Solaris, NIS+ è integrato con meccanismi come Secure RPC per l’autenticazione; la documentazione descrive l’uso di credenziali DES e la gestione di access rights su oggetti NIS+.[39][40]
Oracle documenta la rimozione di NIS+ da Oracle Solaris, mantenendo strumenti di migrazione verso LDAP.[11][12]
NIS→LDAP e “compatibilità YP” su LDAP
[modifica | modifica wikitesto]In Solaris esiste un servizio di transizione NIS→LDAP (N2L) che consente a client NIS di consumare dati mantenuti in un directory server LDAP, tramite mapping tra mappe NIS e strutture LDAP e gestione cache/TTL.[9][10]
In OpenBSD esiste una soluzione (ypldap) che espone mappe YP usando LDAP come backend, descritta da man page e file di configurazione dedicati.[41][42]
Esempi d’uso e configurazione
[modifica | modifica wikitesto]Impostazione del dominio NIS
[modifica | modifica wikitesto]La variabile di “dominio” usata da NIS è consultabile/impostabile con comandi come domainname e rappresenta il dominio NIS (non necessariamente il dominio DNS).[15][14]
# Mostra il dominio NIS
domainname
# Imposta il dominio NIS per la sessione corrente
domainname example-nis
Configurazione del binding client (ypbind)
[modifica | modifica wikitesto]Molte implementazioni supportano /etc/yp.conf come file di configurazione del binding per ypbind, con modalità “server list” o “broadcast”.[43]
Esempio (server espliciti):
domain example-nis server nis-master.example.org
domain example-nis server nis-slave1.example.org
Esempio (binding via broadcast locale):
domain example-nis broadcast
Integrazione con Name Service Switch (nsswitch.conf)
[modifica | modifica wikitesto]Nei sistemi che usano NSS (Name Service Switch), l’ordine delle fonti per database come passwd/group/hosts è definito in /etc/nsswitch.conf.[44][45]
Esempio minimale:
passwd: files nis
group: files nis
hosts: files dns nis
Query delle mappe
[modifica | modifica wikitesto]# Visualizza tutte le coppie (chiave/valore) di una mappa
ypcat passwd.byname
# Cerca una chiave in una mappa
ypmatch alice passwd.byname
# Identifica il server NIS attualmente usato dal client
ypwhich
Aggiornamento e propagazione mappe
[modifica | modifica wikitesto]Un modello tipico è rigenerare le mappe sul master e propagare verso gli slave (yppush/ypxfr).[25][26]
# Sul master: ricostruzione mappe (meccanismo e path variano)
cd /var/yp
make
# Sul master: richiede agli slave di aggiornarsi
yppush passwd.byname
Confronto tra NIS, NIS+ e LDAP
[modifica | modifica wikitesto]| Caratteristica | NIS (YP) | NIS+ | LDAP |
|---|---|---|---|
| Modello dati | Mappe key/value (tabelle “piatte” derivate da file) [19] | Namespace e oggetti/tabelle con semantica più ricca [9] | Directory tree (DIT), schema estensibile [46] |
| Trasporto/protocollo | ONC RPC + binder (rpcbind/portmapper) [5][6] | ONC RPC (con estensioni e sicurezza NIS+) [39] | TCP (tipicamente) con meccanismi di autenticazione/estensioni (LDAPv3) [46] |
| Sicurezza (in-transit/auth) | Limitata; modello “rete fidata”, mitigazioni perimetrali (securenets, filtri) [32][30] | Più articolata; uso di Secure RPC e access rights su oggetti [39][40] | Variabile: può supportare TLS/StartTLS e controlli di accesso granulari (dipende dall’implementazione) [46] |
| Scalabilità/uso tipico | Piccole/medie reti, ambienti storici, compatibilità legacy [37] | Principalmente legacy; su alcune piattaforme rimosso/abbandonato [11][12] | Enterprise/ambienti moderni (directory service), spesso integrato con SSO/IdM [7] |
| Stato attuale (2020s) | Tendente a deprecazione/rimozione in più distribuzioni; ancora usato in contesti legacy [7][8][13] | Rimosso da Solaris 11; strumenti di migrazione disponibili [11] | Standard de facto per molte directory moderne [46] |
Alternative moderne e rilevanza attuale
[modifica | modifica wikitesto]Per sistemi nuovi, molti vendor raccomandano di migrare verso soluzioni basate su LDAP/SSSD/IdM o equivalenti: per esempio RHEL 9 documenta la rimozione dei componenti NIS e suggerisce Identity Management e SSSD.[7]
Fedora ha proposto e implementato il ritiro dei programmi user-space NIS(+) (ypbind/ypserv/yp-tools) nelle release recenti, motivando la scelta con deprecazione e scarsa sicurezza del modello NIS(+) e con la disponibilità di alternative come LDAP/FreeIPA.[8]
Oracle Solaris segnala che i componenti NIS potrebbero non essere disponibili in aggiornamenti futuri e indica LDAP naming services come alternativa.[13]
Voci correlate
[modifica | modifica wikitesto]Note
[modifica | modifica wikitesto]- ^ NIS Introduction, su Oracle Solaris Documentation, Oracle. URL consultato il 4 marzo 2026.
- ^ yp(8) — description of the YP/NIS system, su FreeBSD Manual Pages, The FreeBSD Project. URL consultato il 4 marzo 2026.
- ^ a b Using NFS Services (HP-UX) — Notice to Users: NIS was formerly known as Yellow Pages (YP) (PDF), su bitsavers.org (archivio documentazione), Hewlett-Packard, Febbraio 1991. URL consultato il 4 marzo 2026.
- ^ a b c d ypserv(1M) — NIS server, su Oracle Solaris man pages, Oracle. URL consultato il 4 marzo 2026.
- ^ a b c RFC 5531 — RPC: Remote Procedure Call Protocol Specification Version 2, su IETF Datatracker. URL consultato il 4 marzo 2026.
- ^ a b c RFC 1833 — Binding Protocols for ONC RPC Version 2 (rpcbind/portmapper), su RFC Editor. URL consultato il 4 marzo 2026.
- ^ a b c d Red Hat Enterprise Linux 9 — Considerations in adopting RHEL 9 (NIS packages have been removed) (PDF), su docs.redhat.com, Red Hat. URL consultato il 4 marzo 2026.
- ^ a b c Retire the NIS(+) user-space utility programs (Fedora Change proposal), su Fedora Project Wiki. URL consultato il 4 marzo 2026.
- ^ a b c d e Understanding the NIS to LDAP Service (N2L) Architecture — “Sun’s NIS … was first available in 1985” (PDF), su Sun BluePrints (archivio), Sun Microsystems, Marzo 2006. URL consultato il 4 marzo 2026.
- ^ a b Understanding the NIS to LDAP Service (N2L) Architecture — “As of the Solaris 9 OS (Update 5), a NIS/LDAP migration tool is integrated…” (PDF), su Sun BluePrints (archivio), Sun Microsystems, Marzo 2006. URL consultato il 4 marzo 2026.
- ^ a b c d nis-plus(7) — NIS+ no longer shipped with Oracle Solaris, su Oracle Solaris man pages, Oracle. URL consultato il 4 marzo 2026.
- ^ a b c End of Feature Notices for Oracle Solaris 11 — NISPlus removed, su oracle.com, Oracle. URL consultato il 4 marzo 2026.
- ^ a b c End of Feature Notices for Oracle Solaris 11 — NIS might not be available in a future update; use LDAP, su oracle.com, Oracle. URL consultato il 4 marzo 2026.
- ^ a b Planning Your NIS Domain (NIS domain does not have to mirror DNS), su Oracle Solaris Documentation, Oracle. URL consultato il 4 marzo 2026.
- ^ a b domainname(8) — NIS domain name used in RPC exchanges, su Oracle Solaris man pages, Oracle. URL consultato il 4 marzo 2026.
- ^ ypbind(1M) — binding information for NIS clients, su Oracle Solaris man pages, Oracle. URL consultato il 4 marzo 2026.
- ^ FreeBSD Handbook — NIS client binding via ypbind (broadcast RPC requests), su FreeBSD Documentation Portal, The FreeBSD Project. URL consultato il 4 marzo 2026.
- ^ a b ypserv(8) (OpenBSD) — domains served via /var/yp, su OpenBSD Manual Pages. URL consultato il 4 marzo 2026.
- ^ a b NIS Maps (default maps e descrizioni), su Oracle Solaris Documentation, Oracle. URL consultato il 4 marzo 2026.
- ^ Using NFS Services (HP-UX) — NIS Maps e concetti (keys/values) (PDF), su bitsavers.org (archivio documentazione), Hewlett-Packard, Febbraio 1991. URL consultato il 4 marzo 2026.
- ^ a b ypcat(1) — print values of all keys in a NIS database, su Debian Manpages. URL consultato il 4 marzo 2026.
- ^ a b ypmatch(1) — print the values of keys from a NIS map, su Debian Manpages. URL consultato il 4 marzo 2026.
- ^ a b ypwhich(1) — return name of NIS server or map master, su Debian Manpages. URL consultato il 4 marzo 2026.
- ^ ypserv(8) — Linux man page (gdbm maps), su linux.die.net. URL consultato il 4 marzo 2026.
- ^ a b NIS Elements — ypxfr, yppush, ypxfrd, su Oracle Solaris Documentation, Oracle. URL consultato il 4 marzo 2026.
- ^ a b yppush(8) — copies updated maps from master to slaves, su Debian Manpages. URL consultato il 4 marzo 2026.
- ^ ypxfrd(8) — NIS map transfer server (speed up large map transfers), su linux.die.net. URL consultato il 4 marzo 2026.
- ^ RPC Program Numbers (IANA) — entries for ypserv/ypbind/yppasswdd, su IANA. URL consultato il 4 marzo 2026.
- ^ RHEL Security Guide — Use a “password-like” NIS domain name and hostname, su docs.redhat.com, Red Hat. URL consultato il 4 marzo 2026.
- ^ a b RFC 2695 — Authentication Mechanisms for ONC RPC (AUTH_SYS can be easily faked), su IETF Datatracker. URL consultato il 4 marzo 2026.
- ^ passwd Files and NIS Namespace Security (remove root entry), su Oracle Solaris Documentation, Oracle. URL consultato il 4 marzo 2026.
- ^ a b securenets(4) — allowed networks/hosts for NIS access, su Oracle Solaris man pages, Oracle. URL consultato il 4 marzo 2026.
- ^ RHEL Deployment Guide — /var/yp/securenets and default “listen to all networks”, su docs.redhat.com, Red Hat. URL consultato il 4 marzo 2026.
- ^ Securing NIS — securenets limits but does not stop IP spoofing, su linux.co.cr (mirror guida Red Hat). URL consultato il 4 marzo 2026.
- ^ Thorsten Kukuk, ypserv — Homepage of the Linux NIS Project, su thkukuk.de. URL consultato il 4 marzo 2026.
- ^ thkukuk/ypserv — NIS (YP) Server (README), su GitHub. URL consultato il 4 marzo 2026.
- ^ a b FreeBSD Handbook — Network Information System (NIS), su FreeBSD Documentation Portal, The FreeBSD Project. URL consultato il 4 marzo 2026.
- ^ ypbind(8) (OpenBSD) — binding file in /var/yp/binding, su OpenBSD Manual Pages. URL consultato il 4 marzo 2026.
- ^ a b c Overview of Secure RPC (used by NIS+), su Oracle Solaris Documentation, Oracle. URL consultato il 4 marzo 2026.
- ^ a b NIS+ Access Rights, su Oracle Solaris Documentation, Oracle. URL consultato il 4 marzo 2026.
- ^ ypldap(8) — YP maps using LDAP as a backend, su OpenBSD Manual Pages. URL consultato il 4 marzo 2026.
- ^ ypldap.conf(5) — LDAP YP map daemon configuration file, su OpenBSD Manual Pages. URL consultato il 4 marzo 2026.
- ^ yp.conf(5) — NIS binding configuration file, su Ubuntu Manpages. URL consultato il 4 marzo 2026.
- ^ nsswitch.conf(5) — Name Service Switch configuration file, su Debian Manpages. URL consultato il 4 marzo 2026.
- ^ Oracle Solaris Naming Services — Name Service Switch (DNS, LDAP, NIS, files), su Oracle Solaris Documentation, Oracle. URL consultato il 4 marzo 2026.
- ^ a b c d RFC 4511 — Lightweight Directory Access Protocol (LDAP), su IETF Datatracker. URL consultato il 4 marzo 2026.
Collegamenti esterni
[modifica | modifica wikitesto]- IANA — RPC Program Numbers, su iana.org. URL consultato il 4 marzo 2026.
- RFC 1833 — Binding Protocols for ONC RPC Version 2, su rfc-editor.org. URL consultato il 4 marzo 2026.
- RFC 5531 — ONC RPC v2, su datatracker.ietf.org. URL consultato il 4 marzo 2026.
- RFC 4511 — LDAPv3, su datatracker.ietf.org. URL consultato il 4 marzo 2026.
- Linux NIS Project — ypserv, su thkukuk.de. URL consultato il 4 marzo 2026.