Tiesto

WFN Üye
Konular
589
Mesajlar
589
Çözüm
0
Ticaret Puanı
0
Üyelik
23 Gün
Konum
Antalya
Web Sitesi
Var
Alanı
Domain Uzmanı
1/1
Konu sahibi
İlk olarak hangi portların gerçekten dinlendiğini belirleyin; ardından o portu açan servisi durdurun veya yalnızca güvenlik duvarında erişimi engelleyin. SSH ile uzaktan bağlıysanız, kullandığınız SSH portunu kapatmadan önce yeni bağlantıyı test edin. İşlem sonunda portu hem ss ile dinleme açısından hem de başka bir makineden bağlantı denemesiyle erişim açısından kontrol edin.

Önce açık portun hangi servise ait olduğunu bulun​


Sunucuya SSH ile bağlandıktan sonra aşağıdaki komutu çalıştırın:

Kod:
sudo ss -tulpen

Çıktıda şu alanlara bakın:
  • Local Address:Port: Servisin hangi IP adresinde ve portta dinlediğini gösterir. 0.0.0.0:80 veya :::80 tüm ağ arayüzlerinden bağlantı kabul edilebildiğini gösterir.
  • State: TCP bağlantılarında LISTEN durumu, servisin yeni bağlantı beklediğini gösterir.
  • Process: Portu kullanan işlem ve servis hakkında bilgi verir. Bu alanı görmek için komutun sudo ile çalıştırılması gerekir.
Örneğin çıktıda 0.0.0.0:8080 satırının yanında bir web uygulamasının işlem adı görünüyorsa 8080 numaralı portu o uygulama açmıştır. Yalnızca güvenlik duvarında kural silmek, servisi durdurmaz; servis çalışmaya devam ederse port sunucunun içinde hâlâ dinleniyor olabilir.

Belirli bir portu daha kolay aramak için örneğin 8080 numaralı portta şu komutu kullanabilirsiniz:

Kod:
sudo ss -ltnp | grep ':8080'

Komut hiçbir satır döndürmüyorsa sistemde o anda TCP 8080 portunda dinleyen bir işlem bulunmuyor olabilir. Bu sonuç, portun dışarıdan kesinlikle erişilemediğini tek başına kanıtlamaz; UDP servisi, başka bir IP adresi veya dış güvenlik duvarı ayrıca kontrol edilmelidir.

Portu açan servisi durdurun ve devre dışı bırakın​


Portu kullanan uygulamayı artık kullanmıyorsanız en güvenli çözüm, yalnızca güvenlik duvarı kuralını silmek yerine servisi durdurmaktır. Systemd kullanan Linux dağıtımlarında servis adını öğrendikten sonra şu sırayı izleyin:
  1. Çalışan servisi durdurun: sudo systemctl stop servis-adi
  2. Sunucu yeniden başladığında tekrar açılmasını istemiyorsanız devre dışı bırakın: sudo systemctl disable servis-adi
  3. Durumu kontrol edin: sudo systemctl status servis-adi
  4. Portun artık dinlenmediğini doğrulayın: sudo ss -tulpen | grep ':PORT'
Buradaki servis-adi ve PORT değerlerini gerçek servis adı ve port numarasıyla değiştirin. Örneğin varsayımsal olarak 3000 numaralı portu ornek-app.service açıyorsa:

Kod:
sudo systemctl stop ornek-app.service
sudo systemctl disable ornek-app.service
sudo systemctl status ornek-app.service
sudo ss -tulpen | grep ':3000'

status çıktısında servis durmuş görünmeli, son grep komutu da sonuç döndürmemelidir. Servis yeniden başlıyorsa bir üst servis, zamanlayıcı, konteyner orkestrasyonu veya uygulamanın kendi yeniden başlatma mekanizması onu tekrar çalıştırıyor olabilir. Bu durumda önce şu bilgilerle hangi işlemin servisi başlattığını inceleyin:

Kod:
sudo systemctl list-dependencies --reverse servis-adi
sudo journalctl -u servis-adi --since today

Servis çalışmalı, ancak dışarıdan erişilmemeli ise güvenlik duvarını kullanın​


Bazı portların sunucu içinde açık kalması gerekir. Örneğin bir veritabanı yalnızca yerel uygulamaların erişimi için çalışıyor olabilir. Bu durumda servisi kapatmak yerine dinlediği adresi 127.0.0.1 veya gerekli özel ağ adresiyle sınırlandırmak ve dış erişimi güvenlik duvarında engellemek daha uygundur.

Kullandığınız dağıtıma ve kurulu güvenlik duvarı aracına göre komut değişir. Önce hangi aracın etkin olduğunu kontrol edin:

Kod:
sudo ufw status verbose
sudo firewall-cmd --state
sudo nft list ruleset

Komutların birinin kullanılamaması, o aracın kurulu veya etkin olmadığı anlamına gelebilir. Aynı sunucuda birden fazla aracı gelişigüzel yapılandırmayın; aktif kuralların hangi katmanda yönetildiğini belirlemeden kural silmek beklenmeyen erişim sorunlarına yol açabilir.
Araç veya durumPortu kapatmak için genel yaklaşımKontrol
UFWPorta izin veren kuralı silin veya portu reddeden kural ekleyin. SSH kuralını silmeden önce yeni bağlantıyı test edin.sudo ufw status numbered
firewalldPortu izin verilenler listesinden kaldırın; kalıcı kuralı değiştirdiyseniz yapılandırmayı yeniden yükleyin.sudo firewall-cmd --list-all
nftablesİlgili kuralı veya kuralın bulunduğu zinciri belirleyip silin; kalıcı yapılandırma kullanılıyorsa dosyayı da güncelleyin.sudo nft list ruleset
Bulut veya veri merkezi güvenlik duvarıİşletim sistemi kuralı doğru olsa bile sağlayıcının ağ güvenlik grubundaki inbound kuralını da kaldırın.Sağlayıcının ağ kuralı listesini kontrol edin.
UFW kullanıyorsanız önce numaralı kuralları görüntüleyin:

Kod:
sudo ufw status numbered

Çıktıda silmek istediğiniz kuralın sıra numarasını gördükten sonra numarayı kullanarak silin. Örneğin 3 numaralı kuralı kaldırmak için:

Kod:
sudo ufw delete 3
sudo ufw status verbose

Sıra numaraları silme işleminden sonra değişebileceği için birden fazla kuralı arka arkaya kaldırmadan önce listeyi yeniden görüntüleyin. Port servisin içinde hâlâ dinleniyor olabilir; bu nedenle güvenlik duvarı kuralını kaldırdıktan sonra ss çıktısını da kontrol edin.

firewalld kullanıyorsanız etkin bölgeyi ve izin verilen portları görüntüleyin:

Kod:
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --list-all

Port bir bölgede izinli görünüyorsa aynı bölge için kalıcı kuralı kaldırın ve yapılandırmayı yeniden yükleyin. Bölge adı ve port numarası örnektir:

Kod:
sudo firewall-cmd --zone=public --permanent --remove-port=8080/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --zone=public --list-ports

Port listede artık görünmüyorsa ilgili firewalld kuralı kaldırılmıştır. Buna rağmen uygulama 0.0.0.0:8080 veya :::8080 üzerinde dinlemeye devam ediyorsa servis hâlâ çalışıyordur; dış erişimin engellenmiş olması uygulamanın durduğu anlamına gelmez.

SSH portunu kapatırken bağlantıyı kesmeyin​


Uzak sunucuyu SSH ile yönetiyorsanız en kritik ayrım, kullandığınız SSH portudur. Örneğin bağlantınız 22/tcp üzerinden kuruluyorsa bu portu kapatmadan önce başka bir terminal açın, yeni bir SSH oturumunu test edin ve mevcut oturumu hemen kapatmayın.

SSH portunu değiştirmek istiyorsanız önce SSH sunucusunun yapılandırmasında yeni portu tanımlayın, güvenlik duvarında yeni porta izin verin ve yeni porttan bağlantıyı doğrulayın. Yeni oturum başarıyla açıldıktan sonra eski porta verilen izni kaldırın. Sıralama tersine çevrilirse mevcut oturum kapandığında sunucuya erişiminizi kaybedebilirsiniz.

Aynı şekilde, sağlayıcının ağ güvenlik grubunda 22 numaralı portu kapatmadan önce yeni SSH portunun hem işletim sistemi güvenlik duvarında hem de dış ağ güvenlik kuralında izinli olduğundan emin olun. Bir katmanda izin bulunması diğer katmanın da izin verdiğini kanıtlamaz.

Kapatma işlemini dışarıdan doğrulayın​


Sunucunun kendisinde ss ile kontrol yaptıktan sonra farklı bir makineden bağlantı testi yapın. TCP portu için varsayımsal olarak:

Kod:
nc -vz SUNUCU_IP PORT

Başarılı bağlantı, portun dışarıdan erişilebilir olduğunu gösterir; portun doğru uygulamaya hizmet verdiğini veya uygulamanın güvenli olduğunu kanıtlamaz. Connection refused sonucu genellikle hedefe ulaşıldığını ancak o portta bağlantı kabul eden servis bulunmadığını gösterir. timed out sonucu ise güvenlik duvarı, ağ yönlendirmesi, bulut güvenlik kuralı veya hedefin erişilemez olmasıyla ilgili olabilir; tek başına servisin kapalı olduğunu kanıtlamaz.

Son kontrolü şu üç sonucu birlikte değerlendirerek yapın:
  • Servis durdu ve ss portu göstermiyor: Portu açan yerel işlem kapanmıştır.
  • Servis çalışıyor, fakat dışarıdan bağlantı reddediliyor veya zaman aşımına uğruyor: Servis içeride açık kalmış, ağ erişimi güvenlik duvarı veya başka bir ağ katmanında engellenmiş olabilir.
  • Servis durdurulduğu hâlde port yeniden açılıyor: Servis başka bir yönetici tarafından yeniden başlatılıyor olabilir. Systemd bağımlılıklarını, zamanlayıcıları, konteynerleri ve uygulama günlüklerini inceleyin.
Portu kapattıktan sonra uygulamanın başka bir portta yeniden dinlemeye başlamadığını da kontrol edin. Bunun için tüm dinleme soketlerini yeniden listeleyin:

Kod:
sudo ss -tulpen

Böylece yalnızca hedef portun değil, artık gerekmeyen başka servis portlarının da açık kalıp kalmadığını görebilirsiniz.

Sık sorulan sorular​

Güvenlik duvarında portu kapatmak servisi durdurur mu?​

Hayır. Güvenlik duvarı dışarıdan gelen bağlantıyı engelleyebilir, ancak portu açan işlem çalışmaya devam eder. Portun tamamen kapanmasını istiyorsanız ilgili servisi de durdurun ve gerekiyorsa açılışta başlamasını devre dışı bırakın.

Port listesinde görünen her port tehlikeli midir?​

Hayır. Bir portun açık olması yalnızca bir servisin bağlantı beklediğini gösterir. Risk; servisin ne olduğu, hangi adreste dinlediği, kimlerin erişebildiği, güncel olup olmadığı ve kimlik doğrulama kullanıp kullanmadığıyla birlikte değerlendirilir. Tanımadığınız bir portu kapatmadan önce işlemi ve bağımlılıklarını belirleyin.

Portu kapattım ama dışarıdan hâlâ erişiliyor; neyi kontrol etmeliyim?​

Önce testin doğru IP adresine, doğru protokole ve doğru porta yapıldığını doğrulayın. Ardından ss -tulpen çıktısını, işletim sistemi güvenlik duvarı kurallarını, bulut sağlayıcısının ağ güvenlik grubunu ve varsa yük dengeleyici veya NAT yönlendirmesini birlikte inceleyin. Port farklı bir sunucuya yönlendiriliyor olabilir.

UDP portunu nasıl kontrol ederim?​

ss -u -l -n -p komutu UDP dinleme soketlerini gösterir. UDP bağlantısız çalıştığı için nc -vz gibi TCP odaklı bir test aynı şekilde yorumlanamaz; UDP hizmetinin kendi istemcisiyle veya protokolüne uygun bir test yöntemiyle doğrulama yapılmalıdır.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Foruma git ?

Bu konuyu görüntüleyen kullanıcılar

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic