🚀 Linux ve Windows sunucularda yeni müşterilere özel %20 indirim! Kod: ILK20  |  Hemen sipariş ver →
shield Sunucu Güvenliği & Sıkılaştırma

Linux Capabilities Nedir? Root Yetkisi Olmadan Port Açma Rehberi

Linux capabilities ile root yetkisi olmadan özel portları açmayı öğrenin. Güvenlik risklerini azaltan bu yöntemi detaylı örneklerle anlatıyoruz.

person
Editör
(Güncellendi: 28 Tem 2026) schedule 4 dk okuma visibility 32 görüntülenme

Linux sunucu güvenliği söz konusu olduğunda, gereksiz root yetkilerini kısıtlamak en önemli adımlardan biridir. Peki ya uygulamanız 1024'ten küçük bir portu dinlemek zorundaysa ve root olarak çalıştırmak istemiyorsanız? İşte burada Linux capabilities devreye giriyor. Bu yazıda, Linux yetenek sistemini (capabilities) kullanarak root yetkisi olmadan nasıl port açabileceğinizi adım adım anlatacağız.

Linux Capabilities Nedir?

Geleneksel Unix modellerinde, bir işlemin root olup olmadığına bakılırdı. Root, tüm sistem üzerinde sınırsız yetkiye sahipti; normal kullanıcı ise çok kısıtlıydı. Linux capabilities bu siyah-beyaz tabloyu renklendiriyor: Root'u küçük, bağımsız birimlere bölüyor. Örneğin, CAP_NET_BIND_SERVICE yeteneği, bir işlemin 1024'ten küçük portlara bağlanmasına izin verirken, diğer root yetkilerini vermez.

Bu sistem, özellikle web sunucuları, DNS sunucuları veya veritabanları gibi servisler için idealdir. Uygulamanız 80, 443 veya 53 gibi portları kullanıyorsa, capabilities sayesinde onu normal bir kullanıcı olarak çalıştırabilir, olası bir güvenlik açığında saldırganın tüm sistemi ele geçirmesini engelleyebilirsiniz.

Root Yetkisi Olmadan Port Açma Nasıl Yapılır?

1. İkili Dosyaya Yetenek Atama

Bir uygulamaya belirli bir yetenek vermek için setcap komutunu kullanıyoruz. Örneğin, nginx binary'sine CAP_NET_BIND_SERVICE ekleyelim:

sudo setcap 'cap_net_bind_service=+ep' /usr/sbin/nginx

Bu komut, nginx'in normal bir kullanıcı olarak çalıştığında bile 80 portuna bağlanmasını sağlar. +ep ifadesi, yeteneğin hem etkin (effective) hem de izin verilen (permitted) setlerde bulunması gerektiğini belirtir.

2. Çalışan Sürece Yetenek Verme

Bazı durumlarda, çalışan bir sürece sonradan yetenek vermek isteyebilirsiniz. Bunun için capsh veya prctl kullanılabilir. Ancak en pratik yöntem, uygulamayı başlatırken ambient yetenekler kullanmaktır. Örneğin systemd servis dosyasında:

[Service] AmbientCapabilities=CAP_NET_BIND_SERVICE User=nginx ExecStart=/usr/sbin/nginx -g 'daemon off;'

Bu sayede nginx, nginx kullanıcısı olarak çalışır, ancak 80 portuna bağlanma yetkisine sahip olur.

Önemli Noktalar ve Güvenlik İpuçları

  • Yalnızca ihtiyaç duyulan yetenekleri verin. Örneğin, CAP_NET_ADMIN çok daha geniş yetkiler içerir; onu sadece gerçekten gerekiyorsa kullanın.
  • Yetkisiz kullanıcıların setcap kullanmasını engelleyin. Sadece root veya sudo yetkisi olanlar yapabilmeli.
  • Yetenekleri düzenli olarak kontrol edin. getcap komutuyla hangi dosyaların hangi yeteneklere sahip olduğunu görebilirsiniz:
getcap -r / 2>/dev/null

Pratik Bir Örnek: Python ile Basit Bir HTTP Sunucusu

Varsayalım ki 80 portunda çalışan basit bir Python HTTP sunucunuz var. Normalde root olmadan çalıştıramazsınız. İşte adımlar:

  1. Python yorumlayıcısına yetenek atayın: sudo setcap 'cap_net_bind_service=+ep' /usr/bin/python3
  2. Sunucuyu normal kullanıcı ile başlatın: python3 -m http.server 80
  3. Artık root gerekmeden 80 portu dinleniyor.

Uyarı: Bu yöntem tüm Python scriptlerine yetki verir, bu nedenle dikkatli olun. Daha iyisi, sadece ilgili script'i özel bir kullanıcı ile çalıştırmaktır.

Capabilities Kullanmak Zorunda mıyız?

Tabii ki alternatifler var: authbind, iptables port yönlendirme veya systemd soket aktarımı. Ancak capabilities en doğrudan ve modern yaklaşımdır. Özellikle container teknolojileri (Docker, Podman) de capabilities üzerine kuruludur. Docker container'larında --cap-add ile benzer işlemler yapılır.

Sonuç

Linux capabilities, sunucu güvenliğini artırmak için vazgeçilmez bir araçtır. Root yetkisini kısıtlayarak, olası bir ihlalin etkisini minimuma indirirsiniz. Özellikle CAP_NET_BIND_SERVICE ile port açma işlemi, güvenlik duvarı ayarlarından sonra en sık başvurulan yöntemlerdendir.

HostingServer.com.tr olarak, sunucularınızı güvenli ve performanslı tutmak için en güncel teknikleri paylaşmaya devam ediyoruz. Sorularınız varsa yorumlarda bekleriz!

Bu Makaleyi Paylaş

İlgili Yazılar