Uzak ana bilgisayarın / bağlantı noktasının açık olup olmadığını kontrol edin - GNU Netcat veya NMap kullanılamaz - RHEL 7


17

İş yerinde, altyapı ekibi temel işletim sistemi olarak RHEL7 kurulu yeni VM'leri piyasaya sürüyor. Bu özel görüntü nmap-ncatNetcat sürümü ile birlikte gelir ve NMap yüklü değildir. Makinelere herhangi bir şey yüklememiz yasaklandı.

Önceden, -zaçık olup olmadığını kontrol etmek için uzak bir ana bilgisayarı / bağlantı noktasını tarama seçeneğine sahip GNU Netcat kullanıyorduk . Bunun gibi bir şey:

nc -z -v -w 3 remote.host.name 1234

Yükleyemediğim bir sistemde seçeneği ncatolmayan yeni ile aynı kontrolü nasıl yapabilirim ?-znmap


1
Neden bir portun açık / kapalı olduğunu kontrol ediyorsunuz? Bu bir izleme çözümünün parçası mı?
ewwhite

1
Biz alma konusunda çalışıyoruz -zNCAT içine, ancak bir süre Red Hat olmayacak, eminim: github.com/nmap/nmap/pull/444
bonsaiviking

@whwhite Ağ ACL'lerinin A noktası ile B noktası arasında açık olup olmadığını kontrol etmeliyim. Örneğin: uygulama sunucusu TCP'yi 1521 numaralı bağlantı noktasındaki DB sunucusuyla konuşabilir mi?
λ Jonas Gorauskas

Yanıtlar:


16

Bash, özel dosyalara yönlendirerek TCP ve / veya UDP bağlantı noktalarına bağlanmanıza izin verir:

/dev/tcp/host/port Ana makine geçerli bir ana bilgisayar adı veya Internet adresiyse ve bağlantı noktası bir tamsayı bağlantı noktası numarası veya hizmet adı ise, Bash karşılık gelen TCP soketini açmaya çalışır.

/dev/udp/host/port Ana makine geçerli bir ana bilgisayar adı veya Internet adresiyse ve bağlantı noktası bir tamsayı bağlantı noktası numarası veya hizmet adı ise, Bash karşılık gelen UDP soketini açmaya çalışır.

Dosya açılamıyor veya oluşturulamıyorsa, yeniden yönlendirme başarısız oluyor.

Bu nedenle, www.example.com adresinde 80 numaralı bağlantı noktasına bağlanıp bağlanamayacağınızı test etmek için aşağıdakiler çalışmalıdır:

echo -n > /dev/tcp/www.example.com/80

Bağlantı noktası engellenirse, "bağlantı reddedildi" iletisi veya zaman aşımı alırsınız.


1
Limana da telnet yapabilirsiniz
Ryan Babchishin

Evet, ancak RHEL 7'de minimal bir kurulum, bash'ın her zaman mevcut olduğu telnet RPM'sini içermez.
HBruijn

2
Gerçekten mi? İşler nasıl değişti.
Ryan Babchishin

1
@RyanBabchishin artı birçok güvenlik kılavuzu, telnet istemcisinin başka bir şeye giriş yapmak için kullanılmasının güvenli olmadığı gerekçesiyle kaldırılmasını gerektirir; büyük sorun giderme kullanımlarını göz ardı ederek.
Jason Martin

@JasonMartin Pfft
Ryan Babchishin

9

Ncat henüz desteklemese de -z, kabuk yeniden yönlendirme ile aynı davranışı elde edebilirsiniz:

$ ncat google.com 80 </dev/null >/dev/null && echo "yes"
yes
$ ncat google.com 81 </dev/null >/dev/null && echo "yes"
Ncat: Connection timed out.
$ ncat scanme.nmap.org 1234 </dev/null >/dev/null && echo "yes"
Ncat: Connection refused.

Bağlantı zaman aşımı -wseçeneği ile ayarlanabilir .

EDIT: Ncat 7.25BETA2-z , GNU netcat ile olduğu gibi çalışan seçeneği tanıttı , ancak sadece tek bağlantı noktalarında. Bağlantı noktası aralıklarını taramanız gerekiyorsa, Nmap kullanıyor olmalısınız.


2

Ne netcat, telnet ne de nmap gerekmez. Bash daha basit, taşınabilir ve daha verimlidir.

Açık çek

(>/dev/tcp/example.com/80) &>/dev/null && echo "Open" 

Açık / Kapalı Çek

(>/dev/tcp/example.com/80) &>/dev/null && echo "Open" || echo "Closed"

Port Aralığı Kontrolü

for i in $(seq 80 88); do (>/dev/tcp/example.com/80/$i) &>/dev/null && echo $i Open|| echo $i Closed; done
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.