it-swarm-id.com

Mengapa 1024 port pertama dibatasi hanya untuk pengguna root?

Ini lebih merupakan keingintahuan kosong daripada hal lainnya. Seorang teman saya bertanya kepada saya 'kisaran port mana yang hanya bisa digunakan oleh root di Linux?' Saya katakan kepadanya 0-1024 dibatasi. Lalu dia bertanya mengapa itu begitu dan ... Aku bingung. Tidak tahu sama sekali.

Apakah ada alasan mengapa port ini dibatasi dan 1025-65535 tidak?

Sebagian besar layanan jaringan utama (HTTP, FTP, SSH, Telnet, HTTPS, POP, SMTP, dll) berada dalam kisaran ini sehingga kemungkinan jawaban yang saya pikirkan:

  • Pengguna yang tidak tepercaya dapat menjalankan program yang mendengarkan port ini untuk detail masuk.
  • Pengguna yang tidak dipercaya dapat menjalankan aplikasi server yang tidak sah.

Adakah yang bisa menjelaskan di sini?

53
Andrew Lambert

Misalkan Anda bertukar data dengan komputer pada port <1024, dan Anda tahu bahwa komputer menjalankan beberapa varian unix. Kemudian Anda tahu bahwa layanan yang berjalan di port itu disetujui oleh administrator sistem: itu berjalan sebagai root, atau setidaknya harus dimulai sebagai root.

Di dunia Internet yang luas dan liar, ini tidak masalah. Sebagian besar server dikelola oleh orang yang sama dengan layanan yang berjalan di atasnya; Anda tidak akan mempercayai root lebih dari pengguna lain.

Dengan mesin multiuser, terutama pada jaringan lokal, ini bisa jadi masalah. Misalnya, pada hari-hari sebelum kriptografi sipil, metode populer menjalankan perintah Shell di komputer lain adalah rsh ( r emote sh ell); Anda dapat menggunakan otentikasi kata sandi, atau Anda dapat mengautentikasi hanya dengan membuktikan bahwa Anda adalah pengguna X pada mesin A (dengan mesin B mengetahui bahwa X @ A dapat masuk sebagai X @ B tanpa kata sandi). Bagaimana cara membuktikannya? Klien rsh adalah setuid root, dan menggunakan nomor port <1024, sehingga server tahu bahwa klien yang diajaknya bicara dapat dipercaya dan tidak akan berbohong kepada pengguna mana di A yang memintanya. Demikian pula NFS dirancang untuk transparan terhadap pengguna dan izin, jadi konfigurasi umum adalah bahwa pada jaringan lokal setiap mesin menggunakan basis data pengguna yang sama, dan pengguna N di A memasang sistem file dari server B akan mendapatkan izin pengguna N di B. Sekali lagi, fakta bahwa klien NFS berasal dari nomor port <1024 membuktikan bahwa root di A telah memeriksa klien NFS, yang seharusnya pastikan bahwa jika itu mengirimkan permintaan yang mengaku dari pengguna N maka permintaan itu benar-benar dari pengguna N.

Pengguna yang tidak sah tidak dapat menjalankan server pada port rendah adalah keuntungan lain, tetapi bukan yang utama. Kembali pada hari-hari, spoofing adalah hal yang baru dan pengguna yang menjalankan server spoof akan dengan cepat dibatalkan oleh administrator yang waspada.