Ayrıcalıklı olmayan kullanıcıların ayrıcalıklı bağlantı noktalarına (1024'ün altındaki bağlantı noktası numaraları) bağlanmasına izin verilmemesi standart davranıştır. Bu nedenle, örneğin bağlantı noktası 80'e bağlanmak isteyen bir uygulamanın, bu bağlantı noktasına bağlanmak için ayrıcalıklı (genellikle bu, kök olarak çalıştırmak anlamına gelir) çalışması gerekir.
Ortak bir yaklaşım, bağlantıyı kabul eden ve daha sonra isteği işlemek için ayrıcalıklı olmayan bir süreç oluşturan ayrıcalıklı kullanıcıyla küçük bir "dinleyici" süreci çalıştırmaktır. Güvenlik nedeniyle istek işleme için bırakma ayrıcalıkları yapılır. Birisi isteği işleyen işlemden yararlanabiliyorsa, genellikle davetsiz misafirin işleme işlemiyle aynı ayrıcalıkları kullanarak komutları yürütmesine izin verir. Bu nedenle, tüm isteği ayrıcalıklı bir işlem kullanarak ele almak kötü olur.
Bununla birlikte, birçok uygulama için günümüzde kök olmayan olarak çalışmak yaygındır; ancak bu tür işlemler elbette ayrıcalıklı bağlantı noktalarına daha sonra standart yapılandırmada bağlanamaz. Bu yüzden Tomcat veya JBoss gibi sunucular 8080 gibi yüksek bağlantı noktalarına bağlanırdı, böylece ayrıcalıklı bir dinleyiciye ihtiyaç duymazlar.
Elbette böyle bir işlemi internete maruz bırakırsanız, her tarayıcı ilk önce HTTP protokolü kullanıldığında 80 numaralı bağlantı noktasına bağlanmaya çalışacağı için muhtemelen 80 numaralı bağlantı noktasına erişim sağlarsınız. Bunu sağlamak için yaygın olarak kullanılan çözüm, uygulama ve genel internet arasında bir güvenlik duvarı veya bağlantı noktası çevirmeni kullanmaktır. Bu nedenle, istekler güvenlik duvarı 80 numaralı bağlantı noktasını isteyen güvenlik duvarına çarptı, ancak güvenlik duvarı isteği 8080 numaralı bağlantı noktasında bir iç ana bilgisayara iletir. Bu şekilde, gerçek web sunucusu 80 numaralı bağlantı noktasında halka açıkken yüksek bağlantı noktalarında çalışabilir.
- (internet request) ----> (port 80)[Firewall] ------> (port 8080)[Webserver]
Bazen bu yönlendirme basitçe iptables
NAT kuralı kullanılarak yapılır :
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
Bu, 8080 numaralı bağlantı noktasını dinlerken ayrıcalıklı olmayan bir uygulamanın çalıştırılmasına izin verirken, 80 numaralı bağlantı noktasına gelen tüm istekler yalnızca 8080 numaralı bağlantı noktasına yeniden yönlendirilir.
Ancak modern Linux çekirdekleri kullanmanın başka bir olasılığı daha var: Kullanım yetenekleri.
setcap CAP_NET_BIND_SERVICE=+ep /some/webserver/binary
Bu, binary
root olmayan kullanıcıdan başlatılmış olsa bile ayrıcalıklı bağlantı noktalarına bağlanmaya izin verir . Daha man capabilities
fazla bilgi için bakınız.