Neden ilk 1024 port sadece root kullanıcısı ile sınırlandırılmış?


53

Bu her şeyden çok boşta meraktır. Bir arkadaşım bana “hangi kök dizinin Linux altında kullanabileceği? Ona 0-1024'ün sınırlı olduğunu söyledim. Sonra neden böyle olduğunu sordu ve ... Kaybettim. Hiçbir fikrim yok.

Bu bağlantı noktalarının kısıtlanmasının ve 1025-65535'in olmamasının bir nedeni var mı?

Çoğu büyük ağ servisi (HTTP, FTP, SSH, Telnet, HTTPS, POP, SMTP, vb.) Bu aralıktadır, bu yüzden olası cevapları düşündüm:

  • Güvenilmeyen bir kullanıcı, oturum açma ayrıntıları için bu bağlantı noktalarını dinleyen bir program çalıştırabilir.
  • Güvenilmeyen bir kullanıcı yetkisiz bir sunucu uygulamasını çalıştırabilir.

Burada kimse ışık tutabilir mi?

Yanıtlar:


52

1024 numaralı bağlantı noktasındaki bir bilgisayarla veri alışverişinde bulunduğunuzu ve bilgisayarın bir tür unix çalıştığını bildiğinizi varsayalım. O zaman, o bağlantı noktasında çalışan hizmetin sistem yöneticisi tarafından onaylandığını biliyorsunuz: root olarak çalışıyor veya en azından root olarak başlatılmış olması gerekiyor.

İnternetin geniş, vahşi dünyasında, bunun önemi yok. Çoğu sunucu, üzerinde çalışan servislerle aynı kişiler tarafından yönetilir; Köklerine diğer kullanıcılardan daha fazla güvenmezsin.

Çok kullanıcılı makinelerde, özellikle yerel bir ağda, bu önemli olabilir. Örneğin, sivil kriptografi önceki günlerde, başka bir makinede kabuk komutun popüler bir yöntem olduğu rsh( r emote sh ell); parola doğrulamayı kullanabilir veya yalnızca makine A'da X kullanıcısı olduğunuzu kanıtlayarak doğrulayabilirsiniz (makine B'nin X @ A'nın parola olmadan X @ B olarak giriş yapabileceğini bilerek). Bunu nasıl kanıtlayabilirim? rshİstemci root olduğunu ve bir port numarasını <1.024 kullanır, bu nedenle sunucu konuşuyor istemci güvenilir olduğunu bilir ve bunu A hangi kullanıcı başlatıyordur olarak yalan olmaz. Benzer şekilde NFS Kullanıcılar ve izinler bakımından şeffaf olacak şekilde tasarlandı, bu nedenle ortak bir yapılandırma yerel bir ağda her makinenin aynı kullanıcı veritabanını kullanmasıydı ve A'daki kullanıcı N'nin sunucudaki B dosya sistemindeki B kullanıcısı B'nin N kullanıcısının izinlerini alacağıydı. Yine, NFS istemcisinin <1024 numaralı bir bağlantı noktasından gelmesi, A'daki kökünün NFS istemcisini onayladığını kanıtlar; kullanıcı N.

İzinsiz kullanıcıların düşük portlarda sunucu çalıştıramaması bir diğer avantajdır, ancak asıl avantajı değildir. Günümüzde, sahtekarlık oldukça yenilikti ve sahtekarlık sunucuları kullanan kullanıcılar yine de dikkatli yöneticiler tarafından hızlı bir şekilde kesilecektir.


2
Öyleyse, bir çeşit fakir adamın kimliğini doğrula. Bu sözleşmenin modern * nix benzeri işletim sistemlerinde gerçek bir faydası var mı?
Andrew Lambert,

2
@Mazed: Unix dünyası muhafazakar, bu yüzden sorulması gereken soru “Gerçek bir soruna yol açar mı?” (ve çalışılmaya değer her ciddiyet, limanı değiştirmek için bir komut satırı argümanına sahip olduğu bilgisine cevap verilmelidir).
dmckee

5
@dmckee, böyle bir tasarımın alternatif portlarda çalıştırma seçeneğine sahip olsalar bile, root olarak çalışan daha fazla sunucuya yol açtığı da iddia edilebilir.
Andrew Lambert,

5
@Amazed Yerel ağlarda bugün ara sıra faydalı olabilir. Kök olarak çalışan daha fazla sunucuya yol açacağını sanmıyorum, hizmetler bağlantı noktasını bağlayabilir ve sonra ayrıcalıkları bırakabilir veya varsa yetenekleri kullanabilir veya yönetici güvenlik duvarı yapılandırmasında bir bağlantı noktasını yönlendirebilir. Unix bugün tasarlandıysa konulacağını sanmıyorum, ama acıtmıyor.
Gilles 'SO- kötü olmayı bırak'

1
Bu saçmalık uzun süre çekirdekten çıkmış olmalı. Hiçbir liman numarasının özel bir anlamı olmamalıdır. Bu tasarımın arkasındaki "akıl yürütme" uzun zamandır modası geçmiş (tasarım zamanında bile tartışmalı olduğunu düşünüyorum). Ancak daha kötüsü, “güvenilir” olan herhangi bir özel sayı aralıkları fikri, imalardır. Web sunucularının sadece web sayfalarını sunmak için root olarak çalıştırılması gerekir. Tek bir kullanım ve delik sunucusu gitti. Ve ne için? Hiç bir zaman bile çalışmayan eski tasarım için.
masi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.