Açık Portları Kapatma: Sunucu Hardening Rehberi
Sunucuda açık portları kapatmanın net yöntemleri: servis bazlı kapatma, güvenlik duvarı kuralı, test ve kalıcı doğrulama adımları.
Açık portlar, internette görünen kapılardır; bir saldırganın işe nereden başlayacağını belirlerler. Sunucunuzu “hardening” yaklaşımıyla korumak için ilk adım, gerçekten ihtiyaç duyulmayan portları kapatmaktır. Bu rehberde; hangi portların ne işe yaradığını belirleyecek, servis bazlı kapatma yapacak, güvenlik duvarı (firewall) kurallarını netleştirecek ve yaptığınız değişiklikleri test ederek kalıcı hale getireceksiniz.
1) Hazırlık: Port kapatmadan önce mevcut durumu ölç
Portları körlemesine kapatmak, uygulamayı erişilemez hale getirebilir. Bu yüzden önce “mevcut görüntüyü” çıkarın.
Sunucuda dinleyen portları listeleyin
Linux sunucularda dinleyen portları şu şekilde görebilirsiniz:
- ss -tulpn
- Alternatif: netstat -tulpn
Önemli nokta: Listede her satır bir süreç (process) ile ilişkilidir. Hangi portun hangi servisten (ör. nginx, sshd, docker-proxy) beslendiğini anlamadan ilerlemeyin.
Uzak erişimde görünen portu doğrulayın
Local makinede açık görünse bile firewall veya sağlayıcı katmanında kapalı olabilir. Bu nedenle dışarıdan doğrulama yapın:
- Aynı ağdan test: nc -vz <sunucu-ip> <port>
- Uzak test için port tarayıcı kullanımı: nmap -sT -Pn <sunucu-ip>
Net hedef: Her açık port için “neden açık” olduğunu yazın. Sonra gereksiz olanları kapatın.
Hızlı envanter tablosu oluşturun
Aşağıdaki gibi basit bir envanter tutun (örnek):
| Port | Protokol | Servis | Kullanım amacı | Gerekli mi? | Karar |
|---|---|---|---|---|---|
| 22 | TCP | sshd | yönetim erişimi | Evet/Şart | kısıtla |
| 80 | TCP | nginx | HTTP | Evet | açık kalır |
| 443 | TCP | nginx | HTTPS | Evet | açık kalır |
| 3306 | TCP | mysqld | veritabanı | Genelde kapalı | özel ağ/lock |
| 6379 | TCP | redis | object cache | Uygulama içi | sadece içe açık |
Bu tablo rehberinizin geri kalanını hızlandırır.
2) Servis bazlı kapatma: “Portu kapatmak” aslında “servisi azaltmak”
Hardening’in en sağlam yolu, kullanılmayan servisleri devre dışı bırakmaktır. Çünkü sadece firewall ile kapatsanız bile servis yanlış konfigürasyonda zafiyet taşıyabilir.
İhtiyaç olmayan servisleri kapatın
Genel yaklaşım:
1. ss -tulpn ile hangi portların hangi servisle ilişkili olduğunu tespit edin.
2. Sunucunuzda gerçekten çalışması gerekmeyen servisleri durdurun ve kalıcı olarak kapatın.
Servis yönetimi için tipik komutlar:
- Geçici durdurma: systemctl stop <servis>
- Kalıcı devre dışı: systemctl disable <servis>
- Durum kontrol: systemctl status <servis>
Örnek kararlar: - Docker/Container kullanmıyorsanız container ile açılan gereksiz portları kaldırın. - Çift amaçlı uygulama (ör. hem panel hem API) yoksa admin panel portlarını sadece yönetim IP’lerine bağlayın. - Veritabanı dışa açılmamalıysa “listen address” ayarını local/özel ağ ile sınırlandırın.
Çok kullanılan ama “dışarıya kapalı” tutulması gereken portlar
Aşağıdaki portlar çoğu web barındırma senaryosunda internete açık olmamalıdır: - 3306 (MySQL) / 5432 (PostgreSQL): sadece uygulama sunucusu veya özel ağ. - 6379 (Redis): sadece uygulama erişimi (şifre/ACL ile). - 27017 (MongoDB): internete kapalı, gerekirse VPN veya özel ağ.
Not: İstisna, özel bir mimaride uygulama başka makinede çalışıyorsa ve güvenli bir yol üzerinden erişim gerekiyorsa oluşur.
3) Firewall kuralları: İzinli portlar listesini “minimum” tutun
Port kapatma işinin çekirdeği güvenlik duvarıdır. Net hedefiniz “deny by default” yaklaşımıdır: varsayılan olarak kapalı, sadece gerekenler açık.
Hangi firewall? (Uygulama mantığı aynı)
Linux dünyasında en yaygın seçenekler:
- ufw (kolay yönetim)
- iptables (daha düşük seviye)
- firewalld (zone tabanlı)
Aşağıda ufw mantığıyla anlatım yapacağım; iptables kullananlar aynı mantığı uygular.
Minimum açık port seti örneği
Bir web sunucusu için örnek minimum set: - 22: sadece yönetim IP aralığınızdan - 80: HTTP - 443: HTTPS - Geri kalanı kapalı
UFW mantıksal komut örneği (sunucu erişiminizi kilitlememek için önce SSH’yi koruyun):
- Varsayılan politikanın kapalı olduğundan emin olun:
ufw default deny incoming-
ufw default allow outgoing -
SSH’yi sadece sizin IP’nizden açın:
-
ufw allow from <kendi-ip> to any port 22 proto tcp -
Web trafiğine izin verin:
ufw allow 80/tcp-
ufw allow 443/tcp -
UFW’yi etkinleştirin:
ufw enable
Yönetim için port kısıtlaması (en kritik adım)
SSH gibi yönetim portlarında iki kuralı birlikte uygulayın: 1. Kayıtlı IP kısıtı: mümkünse sadece ofis/VPN veya statik IP. 2. Kimlik doğrulama güçlendirme: parola yerine anahtar (SSH key) ve mümkünse root giriş kapatma.
Docker/uygulama portları için dikkat noktaları
Container ortamlarında portlar iki kaynaktan açılabilir: - Container runtime’ın (ör. Docker publish) - Host firewall kuralları
Net yöntem: - Önce host firewall’da izin modelini uygulayın. - Sonra container port publish etme yapıyorsanız, bunu sadece gerekli servisler için yapın. - Mümkünse container’lar arası iletişimi internal network ile sınırlayın.
4) Katman doğrulama: “Kapatıldı” demek için 3 test
Firewall kuralını koymak tek başına yeterli değildir. “Dışarıdan” ve “uygulama üzerinden” doğrulayın.
Test 1: Dışarıdan port taraması
Bir dış ağdan tarama yapın:
- nmap -sT -Pn <sunucu-ip>
Beklenti: - Gereksiz portlar “closed/filtered” görünmeli. - Gerekli portlar “open” görünmeli.
Test 2: Uygulama erişimi
Kapatmayı port seviyesinde yapınca uygulama patlaması yaşanabilir. Net kontrol: - Site/uygulama URL’leri (HTTP/HTTPS) - Admin panel erişimi (eğer kısıtlı IP ile) doğru IP’den
Örnek doğrulama:
- curl -I https://<alan-adı>
- Admin endpoint için tarayıcıdan veya curl ile 403/200 beklenen akışın doğru olduğuna bakın.
Test 3: Dinleme (listen) kontrolü
Servis gerçekten kapanmış mı? Onay:
- ss -tulpn
Beklenti: - Firewall kapatmış olsa bile servis dinleyebilir. Hardening açısından hedef servis sayısını azaltmaktır.
5) Kalıcılık ve operasyon: Kuralı bozmayan süreç kurun
Hardening’in başarısı, değişiklik sonrası kuralların geri dönmemesine bağlıdır.
Güncelleme sonrası kontrol rutini
Her paket güncellemesinde şu rutinle ilerleyin:
- ss -tulpn ile dinleyen portları tekrar kontrol
- UFW/iptables kurallarını listeleyin
- Basit bir dış tarama ile doğrulayın
Otomatik envanter: Ne değiştiyi yakalayın
Bir “port değişikliği alarmı” yaklaşımı kullanın: - Uygulama içi loglar + firewall event’leri - Sunucu performansını etkilemeyecek periyodik kontrol
Net öneri: - Haftalık “port envanteri” alın. - Yeni gelen portları “yeni servis mi geldi?” sorusuyla değerlendirin.
Sağlayıcı katmanı ile uyum
VPS/VDS ortamlarında sağlayıcı katmanı ile ek güvenlik olabilir. Ancak net kural şu: - Sağlayıcı güvenliğini tek başına güvence saymayın. - Host firewall + servis azaltma + dış test üçlüsünü birlikte uygulayın.
6) Sık yapılan hatalar ve net çözümler
Hata 1: SSH’yi kapatıp erişimi kaybetmek
Çözüm: - UFW kurulumunda önce SSH’yi kendi IP’nizden izinli yapın. - Mümkünse konsol erişimi olan bir senaryo hazırlayın.
Hata 2: Portu kapatıp servisi açık bırakmak
Çözüm:
- Hardening hedefi servis azaltmadır.
- Uygulanabilir olan durumlarda systemctl stop/disable ile kalıcı kapatma yapın.
Hata 3: “Açık port var”ı panikle yanlış yorumlamak
Çözüm:
- ss -tulpn ile süreç adını tespit edin.
- Ardından nmap ile dış görünümü kontrol edin.
- Açık ama sadece local’de ise bu farklı bir risktir.
Sonuç: Aksiyon planı (bugün uygulayın)
Açık portları kapatmada en hızlı ilerleme sırası şudur: (1) ss -tulpn ile dinleyen portları envanterleyin, (2) gerçekten gereksiz servisleri systemctl ile devre dışı bırakın, (3) firewall’da deny by default kurup sadece gerekli portları açın, (4) nmap ile dışarıdan doğrulayın ve uygulama erişimini test edin. Bu adımları tamamladıktan sonra port envanterinizi haftalık rutine çevirin; değişiklikleri yakalamak hardening’in sürdürülebilirliğini sağlar.
Hosting karşılaştırması yapmaya hazır mısın?
100+ firmanın fiyatlarını tek tıkla karşılaştır, en uygun paketi bul.
Hosting Karşılaştır →İlgili Yazılar
Hosting Taşıma: Ziyaretçi Kayıp Etmeden Adım Adım Geçiş
Hosting taşıma sırasında SEO ve ziyaretçi kaybını önlemek için DNS, TTL, yönlendirme, test ve geçiş penceresi planını net adımlarla anlatır.
Hot-swap disk nedir? Üretim sunucusunda neden kritiktir?
Hot-swap disk nedir, ne zaman devreye alınır? Üretim sunucusunda kesintisiz bakım, arıza toleransı ve risk azaltma pratikleriyle açıklanır.
VPS nedir, ne zaman tercih edilmeli? Net rehber
VPS (Virtual Private Server) nedir, kimler kullanmalı ve ne zaman tercih edilmeli? Kaynak planlama, maliyet ve performans kriterlerini net öğrenin.
Node.js Uygulaması İçin VDS Yapılandırması: Net Rehber
Node.js için VDS kurulumundan Nginx reverse proxy, PM2, TLS, log/backup ve izleme adımlarına kadar net bir yapılandırma planı.