Android

Linux'ta açık portlar nasıl kontrol edilir (taranır)

Что такое Linux, обзор, отличия. Какой Linux выбрать в 2020

Что такое Linux, обзор, отличия. Какой Linux выбрать в 2020

İçindekiler:

Anonim

Ağ bağlantısı sorunlarını gideriyor veya güvenlik duvarı yapılandırıyor olsanız da, kontrol edilmesi gereken ilk şeylerden biri sisteminizde gerçekte hangi bağlantı noktalarının açıldığıdır.

Bu makalede, Linux sisteminizde hangi bağlantı noktalarının dışarıya açıldığını bulmak için çeşitli yaklaşımlar açıklanmaktadır.

Açık Liman Nedir

Dinleme bağlantı noktası, uygulamanın dinlediği bir ağ bağlantı noktasıdır. Ağ yığınını ss , netstat veya lsof gibi komutlarla sorgulayarak sisteminizdeki dinleme bağlantı noktalarının bir listesini alabilirsiniz. Her dinleme bağlantı noktası bir güvenlik duvarı kullanılarak açılabilir veya kapatılabilir (filtrelenebilir).

Genel olarak, açık bir bağlantı noktası uzak konumlardan gelen paketleri kabul eden bir ağ bağlantı noktasıdır.

Örneğin, 80 ve 443 numaralı bağlantı noktalarını dinleyen bir web sunucusu çalıştırıyorsanız ve bu bağlantı noktaları güvenlik duvarınızda açıksa, herkes (engellenen ips hariç) tarayıcısını kullanarak web sunucunuzda barındırılan web sitelerine erişebilir. Bu durumda, hem 80 hem de 443 açık bağlantı noktalarıdır.

Açık bağlantı noktaları güvenlik açıkları oluşturabilir, çünkü her açık bağlantı noktası saldırganlar tarafından bir güvenlik açığından yararlanmak veya başka türden saldırılar gerçekleştirmek için kullanılabilir. Yalnızca uygulamanızın işlevselliği için gereken bağlantı noktalarını açmalı ve diğer tüm bağlantı noktalarını kapatmalısınız.

nmap ile Açık Portları Kontrol Edin

Nmap, tek ana bilgisayarları ve büyük ağları tarayabilen güçlü bir ağ tarama aracıdır. Genellikle güvenlik denetimleri ve sızma testleri için kullanılır.

Mümkünse, bağlantı noktası taraması söz konusu olduğunda nmap ilk aracınız olmalıdır. Bağlantı noktası taramasının yanı sıra nmap , Mac adresini, işletim sistemi türünü, çekirdek sürümlerini ve çok daha fazlasını algılayabilir.

Konsoldan verilen aşağıdaki komut, hangi bağlantı noktalarının ağdan TCP bağlantılarını dinlediğini belirler:

sudo nmap -sT -p- 10.10.8.8

-sT , nmap TCP bağlantı noktalarını taramasını ve -p- tüm 65535 bağlantı noktalarını taramasını söyler. -p- kullanılmazsa nmap yalnızca 1000 bağlantı noktasını tarar.

Starting Nmap 7.60 (https://nmap.org) at 2019-07-09 23:10 CEST Nmap scan report for 10.10.8.8 Host is up (0.0012s latency). Not shown: 998 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http MAC Address: 08:00:27:05:49:23 (Oracle VirtualBox virtual NIC) Nmap done: 1 IP address (1 host up) scanned in 0.41 seconds

Yukarıdaki çıktı, hedef sistemde sadece 22 , 80 ve 8069 bağlantı noktalarının açıldığını göstermektedir.

UDP bağlantı noktalarını taramak için -sT yerine -sU kullanın:

sudo nmap -sU -p- 10.10.8.8

Daha fazla bilgi için nmap man sayfasını ziyaret edin ve bu aracın diğer tüm güçlü seçeneklerini okuyun.

netcat ile Açık Portları Kontrol Edin

Netcat (veya nc ), TCP veya UDP protokollerini kullanarak ağ bağlantıları üzerinden veri okuyabilen ve yazabilen bir komut satırı aracıdır.

netcat ile tek bir portu veya port aralığını tarayabilirsiniz.

Örneğin, 20-80 aralığında IP adresi 10.10.8.8 olan uzak bir makinede açık TCP bağlantı noktalarını taramak için aşağıdaki komutu kullanırsınız:

nc -z -v 10.10.8.8 20-80

-z seçeneği nc herhangi bir veri göndermeden yalnızca açık bağlantı noktalarını taramasını söyler ve -v daha ayrıntılı bilgi içindir.

Çıktı şöyle görünecektir:

nc: connect to 10.10.8.8 port 20 (tcp) failed: Connection refused nc: connect to 10.10.8.8 port 21 (tcp) failed: Connection refused Connection to 10.10.8.8 22 port succeeded!… Connection to 10.10.8.8 80 port succeeded!

nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded

Connection to 10.10.8.8 22 port succeeded! Connection to 10.10.8.8 80 port succeeded!

UDP bağlantı noktalarını taramak için -u seçeneğini nc komutuna nc :

nc -z -v -u 10.10.8.8 20-80 2>&1 | grep succeeded

Bash Pseudo Device kullanarak Açık Portları Kontrol Et

Belirli bir bağlantı noktasının açık veya kapalı olup olmadığını kontrol etmenin başka bir yolu da Bash kabuğu /dev/tcp/.. veya /dev/udp/.. sözde aygıtı kullanmaktır.

/dev/$PROTOCOL/$HOST/$IP sahte aygıtında bir komut yürütülürken Bash, belirtilen bağlantı noktasında belirtilen ana bilgisayara TCP veya UDP bağlantısı açar.

Aşağıdaki if..else ifadesi kernel.org 443 numaralı bağlantı noktasının açık olup olmadığını kontrol eder:

if timeout 5 bash -c ' /dev/null' then echo "Port is open" else echo "Port is closed" fi if timeout 5 bash -c ' /dev/null' then echo "Port is open" else echo "Port is closed" fi

Port is open

Yukarıdaki kod nasıl çalışır?

Bir sözde aygıt kullanarak bir bağlantı noktasına bağlanırken varsayılan zaman aşımı çok büyük olduğundan, 5 saniye sonra test komutunu öldürmek için timeout komutunu kullanıyoruz. Eğer bağlantı kernel.org 443 bağlantı noktasına 443 , test komutu true değerini döndürecektir.

Bir bağlantı noktası aralığını denetlemek için for döngüsünü de kullanabilirsiniz:

for PORT in {20..80}; do timeout 1 bash -c " /dev/null" && echo "port $PORT is open" done for PORT in {20..80}; do timeout 1 bash -c " /dev/null" && echo "port $PORT is open" done

Çıktı şöyle görünecektir:

port 22 is open port 80 is open

Sonuç

Açık portları taramak için kullanabileceğiniz birkaç araç gösterdik. Açık portları kontrol etmek için başka yardımcı programlar ve yöntemler de vardır, örneğin Python socket modülünü, curl , telnet veya wget .

terminal