it-swarm.it

Perché le prime 1024 porte sono riservate solo all'utente root?

Questa è più curiosità oziosa di ogni altra cosa. Un mio amico mi ha chiesto "quale intervallo di porte è che solo root può usare sotto Linux?" Gli ho detto che 0-1024 erano limitati. Poi mi ha chiesto perché fosse così e ... Ero in perdita. Nessuna idea.

C'è un motivo per cui queste porte sono limitate e 1025-65535 non lo sono?

La maggior parte dei principali servizi di rete (HTTP, FTP, SSH, Telnet, HTTPS, POP, SMTP, ecc.) Sono in questa gamma, quindi possibili risposte che ho pensato:

  • Un utente non attendibile potrebbe eseguire un programma in ascolto su queste porte per i dettagli di accesso.
  • Un utente non attendibile potrebbe eseguire un'applicazione server non autorizzata.

Qualcuno può far luce qui?

53
Andrew Lambert

Supponiamo di scambiare dati con un computer su una porta <1024 e di sapere che il computer sta eseguendo una variante di unix. Quindi sai che il servizio in esecuzione su quella porta è approvato dall'amministratore di sistema: è in esecuzione come root, o almeno doveva essere avviato come root.

Nell'ampio mondo selvaggio di Internet, questo non ha importanza. La maggior parte dei server sono amministrati dalle stesse persone dei servizi in esecuzione su di essi; non ti fideresti delle radici più degli altri utenti.

Con le macchine multiutente, specialmente su una rete locale, questo può avere importanza. Ad esempio, nei giorni precedenti la crittografia civile, un metodo popolare per eseguire i comandi Shell su un'altra macchina era rsh ( r emote sh ell); potresti usare l'autenticazione con password o puoi autenticarti semplicemente dimostrando di essere l'utente X sulla macchina A (con la macchina B consapevole che X @ A potrebbe accedere come X @ B senza password). Come dimostrarlo? Il client rsh è setuid root e utilizza un numero di porta <1024, quindi il server sa che il client con cui sta parlando è affidabile e non mentirà su quale utente su A lo sta invocando. Allo stesso modo NFS è stato progettato per essere trasparente rispetto agli utenti e ai permessi, quindi una configurazione comune era che su una rete locale ogni macchina utilizzava lo stesso database di utenti, e l'utente N su A che monta filesystem dal server B otterrebbe le autorizzazioni dell'utente N su B. Ancora una volta, il fatto che il client NFS provenga da un numero di porta <1024 dimostra che la radice di A ha verificato il client NFS, che si suppone che assicurati che se trasmette una richiesta che pretende di essere dell'utente N, quella richiesta proviene davvero dall'utente N.

Gli utenti non autorizzati che non sono in grado di eseguire server su porte basse sono un altro vantaggio, ma non quello principale. Ai tempi, lo spoofing era piuttosto una novità e gli utenti che gestivano server spoof sarebbero stati rapidamente eliminati dagli amministratori vigili.