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).[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

Origini e diffusione

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

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

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

Architettura generale

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)

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

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

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

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

Problemi strutturali

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

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

Implementazioni NIS (YP) su Unix-like

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+

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

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

Impostazione del dominio NIS

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)

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)

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

# 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

[21][22][23]

Aggiornamento e propagazione mappe

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

Confronto sintetico
CaratteristicaNIS (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

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

Note

  1. ↑ NIS Introduction, su Oracle Solaris Documentation, Oracle. URL consultato il 4 marzo 2026.
  2. ↑ yp(8) — description of the YP/NIS system, su FreeBSD Manual Pages, The FreeBSD Project. URL consultato il 4 marzo 2026.
  3. 1 2 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.
  4. 1 2 3 4 ypserv(1M) — NIS server, su Oracle Solaris man pages, Oracle. URL consultato il 4 marzo 2026.
  5. 1 2 3 RFC 5531 — RPC: Remote Procedure Call Protocol Specification Version 2, su IETF Datatracker. URL consultato il 4 marzo 2026.
  6. 1 2 3 RFC 1833 — Binding Protocols for ONC RPC Version 2 (rpcbind/portmapper), su RFC Editor. URL consultato il 4 marzo 2026.
  7. 1 2 3 4 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.
  8. 1 2 3 Retire the NIS(+) user-space utility programs (Fedora Change proposal), su Fedora Project Wiki. URL consultato il 4 marzo 2026.
  9. 1 2 3 4 5 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.
  10. 1 2 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.
  11. 1 2 3 4 nis-plus(7) — NIS+ no longer shipped with Oracle Solaris, su Oracle Solaris man pages, Oracle. URL consultato il 4 marzo 2026.
  12. 1 2 3 End of Feature Notices for Oracle Solaris 11 — NISPlus removed, su oracle.com, Oracle. URL consultato il 4 marzo 2026.
  13. 1 2 3 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.
  14. 1 2 Planning Your NIS Domain (NIS domain does not have to mirror DNS), su Oracle Solaris Documentation, Oracle. URL consultato il 4 marzo 2026.
  15. 1 2 domainname(8) — NIS domain name used in RPC exchanges, su Oracle Solaris man pages, Oracle. URL consultato il 4 marzo 2026.
  16. ↑ ypbind(1M) — binding information for NIS clients, su Oracle Solaris man pages, Oracle. URL consultato il 4 marzo 2026.
  17. ↑ FreeBSD Handbook — NIS client binding via ypbind (broadcast RPC requests), su FreeBSD Documentation Portal, The FreeBSD Project. URL consultato il 4 marzo 2026.
  18. 1 2 ypserv(8) (OpenBSD) — domains served via /var/yp, su OpenBSD Manual Pages. URL consultato il 4 marzo 2026.
  19. 1 2 NIS Maps (default maps e descrizioni), su Oracle Solaris Documentation, Oracle. URL consultato il 4 marzo 2026.
  20. ↑ 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.
  21. 1 2 ypcat(1) — print values of all keys in a NIS database, su Debian Manpages. URL consultato il 4 marzo 2026.
  22. 1 2 ypmatch(1) — print the values of keys from a NIS map, su Debian Manpages. URL consultato il 4 marzo 2026.
  23. 1 2 ypwhich(1) — return name of NIS server or map master, su Debian Manpages. URL consultato il 4 marzo 2026.
  24. ↑ ypserv(8) — Linux man page (gdbm maps), su linux.die.net. URL consultato il 4 marzo 2026.
  25. 1 2 NIS Elements — ypxfr, yppush, ypxfrd, su Oracle Solaris Documentation, Oracle. URL consultato il 4 marzo 2026.
  26. 1 2 yppush(8) — copies updated maps from master to slaves, su Debian Manpages. URL consultato il 4 marzo 2026.
  27. ↑ ypxfrd(8) — NIS map transfer server (speed up large map transfers), su linux.die.net. URL consultato il 4 marzo 2026.
  28. ↑ RPC Program Numbers (IANA) — entries for ypserv/ypbind/yppasswdd, su IANA. URL consultato il 4 marzo 2026.
  29. ↑ RHEL Security Guide — Use a “password-like” NIS domain name and hostname, su docs.redhat.com, Red Hat. URL consultato il 4 marzo 2026.
  30. 1 2 RFC 2695 — Authentication Mechanisms for ONC RPC (AUTH_SYS can be easily faked), su IETF Datatracker. URL consultato il 4 marzo 2026.
  31. ↑ passwd Files and NIS Namespace Security (remove root entry), su Oracle Solaris Documentation, Oracle. URL consultato il 4 marzo 2026.
  32. 1 2 securenets(4) — allowed networks/hosts for NIS access, su Oracle Solaris man pages, Oracle. URL consultato il 4 marzo 2026.
  33. ↑ RHEL Deployment Guide — /var/yp/securenets and default “listen to all networks”, su docs.redhat.com, Red Hat. URL consultato il 4 marzo 2026.
  34. ↑ Securing NIS — securenets limits but does not stop IP spoofing, su linux.co.cr (mirror guida Red Hat). URL consultato il 4 marzo 2026.
  35. ↑ Thorsten Kukuk, ypserv — Homepage of the Linux NIS Project, su thkukuk.de. URL consultato il 4 marzo 2026.
  36. ↑ thkukuk/ypserv — NIS (YP) Server (README), su GitHub. URL consultato il 4 marzo 2026.
  37. 1 2 FreeBSD Handbook — Network Information System (NIS), su FreeBSD Documentation Portal, The FreeBSD Project. URL consultato il 4 marzo 2026.
  38. ↑ ypbind(8) (OpenBSD) — binding file in /var/yp/binding, su OpenBSD Manual Pages. URL consultato il 4 marzo 2026.
  39. 1 2 3 Overview of Secure RPC (used by NIS+), su Oracle Solaris Documentation, Oracle. URL consultato il 4 marzo 2026.
  40. 1 2 NIS+ Access Rights, su Oracle Solaris Documentation, Oracle. URL consultato il 4 marzo 2026.
  41. ↑ ypldap(8) — YP maps using LDAP as a backend, su OpenBSD Manual Pages. URL consultato il 4 marzo 2026.
  42. ↑ ypldap.conf(5) — LDAP YP map daemon configuration file, su OpenBSD Manual Pages. URL consultato il 4 marzo 2026.
  43. ↑ yp.conf(5) — NIS binding configuration file, su Ubuntu Manpages. URL consultato il 4 marzo 2026.
  44. ↑ nsswitch.conf(5) — Name Service Switch configuration file, su Debian Manpages. URL consultato il 4 marzo 2026.
  45. ↑ Oracle Solaris Naming Services — Name Service Switch (DNS, LDAP, NIS, files), su Oracle Solaris Documentation, Oracle. URL consultato il 4 marzo 2026.
  46. 1 2 3 4 RFC 4511 — Lightweight Directory Access Protocol (LDAP), su IETF Datatracker. URL consultato il 4 marzo 2026.

Collegamenti esterni