Açık Portlar ve Portları Kullanan Uygulamaları Bulmak - CentOS / RHEL
Port, bir bilgisayarla dış aygıtlar ve programlar arasındaki iletişimi sağlayan veri kanalıdır. Bu veri kanallarını (port) kimlerin kullandığını ve dinlediğini öğrenmek isterseniz birçok yöntem mevcut. Bu yazımızda bu yöntemleri inceleyeceğiz.
Bir TCP/IP ağ bağlantısı engellenmiş, drop edilmiş, açık veya filtrelenmiş olabilir. Bu eylemleri genellikle sistemin kullandığı IPtables güvenlik duvarı tarafından kontrol eder. Güvenlik duvarının haricinde, bir program veya işlem (bir sunucu veya arka plan programı) bir bağlantı noktasını (port) dinliyor veya dinlemiyordur.
Güvenlik duvarı haricinde bir program veya işlemin dinlediği ve kullandığı portları bulmak oldukça kolaydır. Bunu netstat, ss veya lsof programlarını kullanarak yaparsınız.
Güvenlik duvarında bir bağlantı noktasının açık, engelli, drop veya filtreli olup olmadığını kontrol etmenin ise iki yolu vardır:
- Bağlantı noktasını harici olarak test etmek
- Güvenlik duvarı yapılandırmasını listelemek ve çıktıyı incelemek
1. Netstat Kullanarak Açık Portları (Bağlantı Noktası) Görmek
Bir programın veya işlemin bir bağlantı noktasını (port) dinleyip dinlemediğini, bir paketi kabul etmeye hazır olup olmadığını görmek için netstat komutunu kullanın.
netstat -tulnp
netstat komutunun parametreleri aşağıda listelenmiştir:
netstat Parametreleri
t – TCP bağlantıları gösterir
u – UDP bağlantıları gösterir
l – Yalnızca dinleme işlemlerini göster (netstat hem dinlemeyi (listening) hem de kurulan (established) tüm bağlantıları gösterebilir)
n – IP adresi adlarını veya bağlantı noktası numaralarını çözme
p – Bağlantı noktasında dinlenen process adını göster
Örneğin:
2. ss Kullanarak Açık Portları (Bağlantı Noktası) Görmek
Bir programın veya işlemin bir bağlantı noktasını (port) dinleyip dinlemediğini, bir paketi kabul etmeye hazır olup olmadığını görmek için ss programını kullanın.
ss -nutlp
ss komutunun parametreleri aşağıda listelenmiştir:
netstat Parametreleri
t – TCP bağlantıları gösterir
u – UDP bağlantıları gösterir
l – Yalnızca dinleme işlemlerini göster (netstat hem dinlemeyi (listening) hem de kurulan (established) tüm bağlantıları gösterebilir)
n – IP adresi adlarını veya bağlantı noktası numaralarını çözme
p – Bağlantı noktasında dinlenen process adını göster
Örneğin:
3. lsof Kullanarak Açık Portları (Bağlantı Noktası) Görmek
lsof, sistemdeki tüm açık bağlantı noktalarını (port) detaylı listeler. Ayrıca bağlantı noktalarını açan işlem adını ve numarasını görüntüler.
lsof -i
Örneğin:
4. Bir Portu Harici Olarak Test Etmek
Telnet uygulaması, basit ağ soket bağlantısını test eder. Ancak UDP için değil, yalnızca TCP bağlantılarını kullanır. Örneğin, bir sistemdeki 80 numaralı TCP bağlantı noktasının bir bağlantıyı kabul etmeye hazır olup olmadığını görmek istiyorum. Bunun için telnet için IP adresini ve bağlantı noktasını belirtiriz.
# telnet 192.168.1.55 80
Trying 192.168.1.55...
Connected to example.redhat.com (192.168.1.55).
Escape character is '^]'.
Sunucu dinlemiyorsa yanıt farklıdır:
# telnet 10.0.0.25 80
Trying 10.0.0.25...
telnet: connect to address 10.0.0.25: Connection refused
telnet: Unable to connect to remote host: Connection refused
- Bu, bağlantının aktif olarak reddedildiğini gösterir. TCP alt sistemi paketi aldı, inceledi ve 80 numaralı bağlantı noktasında bir soket açma talebi olduğunu buldu. Bağlantıyı kabul etmeye hazır bir işlem olmadığını gördü ve ret ile yanıt verdi.
- Güvenlik duvarı bağlantıyı engelleyecek veya filtreleyecek şekilde yapılandırıldıysa, bağlantıyı kabul etmeye hazır bir işlem olsa bile telnet yukarıdakine çok benzer bir şey görüntüler.
- Güvenlik duvarı bağlantıları kesecek şekilde yapılandırılmışsa, hiçbir yanıt görülmez ve bunun yerine telnet zaman aşımına uğrardı:
# telnet 10.0.0.25 80
Trying 10.0.0.25...
telnet: connect to address 10.0.0.25: Connection timed out
5. Güvenlik duvarı kurallarını listeleme
Red Hat Enterprise Linux / Centos‘ta güvenlik duvarı kuralları service komutu kullanılarak listeleyebilirsiniz:
service iptables status
Veya iptables komutunu kullanarak:
iptables -xvn -L