Güvenlik duvarının bir port için açılıp açılmadığını, ancak portun dinlenip dinlenmediğini kontrol etme


29

Bir Sunucuya yeni bir uygulama dağıtacağız ve uygulama 8443 numaralı bağlantı noktasını dinliyor olacak. Uygulamayı dağıtmadan önce Ağ ekibinden bu sunucudaki 8443 bağlantı noktası için güvenlik duvarını açmasını istedik. Şu anda sunucudaki belirli bir bağlantı noktasını dinleyen uygulama yok.

Yine de güvenlik duvarının 8443 numaralı bağlantı noktası için açıldığından emin olabilir miyim?

İşletim Sistemi: Linux / Windows

Yanıtlar:


16

Uzak bir makineden TCP bağlantısı yapıp yapamayacağınızı görmek istiyorsanız, buna ve hedef makineye OpenCSW'yi kurun ve her ikisine de netcat yükleyin. Bu TCP bağlantılarını test etmek için netcat kullanmak için sözdizimidir:

nc -vz targetServer portNum

Örneğin "homeServer1" üzerindeki SSH'yi kontrol etmek için:

nc -vz homeserver1 22

Bu, TCP düzeyindeki bağlantıyı uzaktaki sistemden sınamanızı sağlar. Netcat, istemci olarak hareket etmek yerine bir portta dinleyecek şekilde yapılandırılabilir. TCP / 8443'te dinlemesini sağlamak için:

Uygulamayı barındıracak sunucuda: nc -l homeserver1 8443

Güvenlik duvarının dışında oturan bir makinede: nc -vz homeserver.fqdn 8443

Bu başarılı bir infaz örneğidir:

[jadavis6@ditirlns01 ~]$ nc -vz ditirlns01.ncat.edu 8443
Connection to ditirlns01.ncat.edu 8443 port [tcp/pcsync-https] succeeded!

Başarısız bir yürütme:

[jadavis6@ditirlns01 ~]$ nc -vz ditirlns01.ncat.edu 8443
nc: connect to ditirlns01.ncat.edu port 8443 (tcp) failed: Connection refused

Bu, bir güvenlik duvarının bağlantı noktasını engelleyip engellemediği sorusunu çözmez. O görünüyor ncisteği bir güvenlik duvarı aracılığıyla icmp (veya bağlantı noktasında bir hizmeti olabilir de olmayabilir de anlam tarafından sekti edildiğinde "Ağa ulaşılamıyor" liman erişilebilir, ancak hiçbir dinleyici var ve ne zaman raporlar "Bağlantı reddedildi" ). Güvenlik duvarı aslında reddetmek yerine paketi bırakırsa, ncbir süre beklemeye devam edersiniz.
goldilocks

Son netcat komutuyla yaptığım hedef, sadece bir nedenden dolayı net olmasaydı, sonuçlarındaki sonuçları yorumlamalarına yardımcı olmak için hangi başarılı uygulamaların ve başarısız uygulamaların bir örnek vermekti. Sorularına cevap veren kısım ilk "Makinede" / "Sunucuda" kısmıdır.
Bratchley

Sorunun Solaris 10 ile ilgili olduğunu biliyorum, ancak bir FYI olarak v11'in depoda netcat'ı var.
sleepyweasel

15

Güvenlik duvarları , bir isteği engellediklerinde bir ICMP mesajıyla cevap vermelidir . Ancak, bu mutlaka böyle değil ( bu güzel yazıyla ilgileneceksiniz ).

Bir portun güvenlik duvarı üzerinden erişilebilir olup olmadığını ve eğer varsa bir şey dinleyip dinlemediğini görmek için dışarıdan test edebilirsiniz. İşte, gözlemleyebileceğiniz bir tcp isteğini wiresharkveya başka bir paket dinleyiciyi ve ne göreceğinizi içeren üç farklı senaryo :

1) Güvenlik Duvarı isteği reddediyor

Bir ICMP mesajını geri alırsınız ve isteği yapan araç hemen bu etkiye bir şey söylemelidir ("erişilemez, yönetici yasaklandı" vb.). "Tool" ile isteğinizi göndermek için kullandığınız müşteriyi kastediyorum (kullandım telnet). 1 numaralı mesajın detayları , güvenlik duvarının nasıl yapılandırıldığına bağlıdır, ancak “port erişilemez” muhtemelen en yaygın olanıdır.

"Ev sahibine giden yol yok" bunu gösterebilir, ancak daha ince yönlendirme sorunlarını da gösterebilir.

2) Güvenlik duvarı paket damla

Cevap yok, bu yüzden takım zaman aşımına uğrayana kadar bekler ya da sıkılırsınız.

3) Güvenlik duvarı pakete izin verir (veya güvenlik duvarı yok), ancak portta hiçbir şey dinlemiyor.

Bir TCP RST / ACK mesajı geri alıyorsunuz. TCP protokolünün bunu gerektirdiğini düşünüyorum. Başka bir deyişle, eğer bağlantı noktasında hiçbir şey dinlemiyorsa, işletim sisteminin kendisi bu cevabı gönderir. O çünkü # sadece ne bir araç raporlara dayanarak 1'den bu ayırt etmek zor olabilir olabilir vs 1., "ağ ulaşılamaz" "bağlantı reddedildi" şeklinde iki durumda (aynı şey ancak, büyük olasılıkla bu ayırt demek ). İstemci makinesindeki bir paket dinleyicide gözlemlenen # 1 senaryosu (ICMP reddetme mesajı) ve # 3 (TCP RST / ACK mesajı) açıkça belirgindir.

Buradaki diğer seçenek, paketin güvenlik duvarından geçmesine izin verilmesi ve bir şeyin dinlenmesidir, böylece başarılı bir bağlantı elde edersiniz.

Başka bir deyişle: genel olarak ağ bağlantınızın uygun şekilde çalıştığını varsayarsak, # 1 veya # 2 alırsanız, güvenlik duvarı aktif olarak bağlantı noktasına erişimi engelliyor demektir. Sunucunuz çalışmıyorsa ancak bağlantı noktası erişilebilir durumda ise # 3 gerçekleşir ve elbette (örtük) # 4 başarılı bir bağlantıdır.


  1. Örneğin, "erişilemeyen bağlantı noktası", "ev sahibi yasaklandı", ev sahibi / bağlantı noktası / yönetici ve ulaşılamaz / yasaklanan diğer çeşitli kombinasyonlar ; mesajdakileri araştırınız, çünkü çalmakta olan bir IP güvenlik duvarının açık bir göstergesidir.

4

netstatBir portun açık ve dinli olup olmadığını görmek için komutu kullanabilirsiniz .

Örnek

$ netstat -anp | less
Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:41716               0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      -                   
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:17500               0.0.0.0:*                   LISTEN      3034/dropbox        
tcp        0      0 0.0.0.0:17501               0.0.0.0:*                   LISTEN      3033/dropbox        
tcp        0      0 127.0.0.1:2143              0.0.0.0:*                   LISTEN      3191/ssh                       
tcp        0      0 127.0.0.1:2025              0.0.0.0:*                   LISTEN      3191/ssh 

Çıktı, TCP bağlantı noktalarını dinleyen işlemleri (en sağdaki sütun) gösterir. Bağlantı noktası numaraları, IP adreslerinden sonra virgülleri takip eden numaralardır (örneğin 0.0.0.0:111, bağlantı noktası 111 olur).

IP adresleri Yerel ve Yabancı Adresleri gösterir . Yerel , sisteminiz olurken, Yabancı ya TCP bağlantı noktanıza ya da TCP bağlantı noktalarından birine bağlanırken herhangi bir adres olur.

Yani 22 numaralı bağlantı noktasında, sistemimde çalışan ssh arka plan programı, bağlantılar için DİNLEME EDİYOR . Birisi daemon'a bağlanmaya çalıştığında, sshbir kopyasını çıkarır ve bu bağlantıyı başka bir bağlantı noktasına iter ve böylece TCP bağlantı noktası 22 geldiği gibi ek bağlantılar için açık kalır.


Netstat sözdiziminin çok netstat -a -P tcp -f inet | awk '/LISTEN$/ {print $0}'
GNU'ya

Solaris'in sloganı "Hiçbir şey sadece kolay değildir" olmalı.
Bratchley

1

Yapılandırma ve güvenlik duvarı yapılandırmasının durumu, güvenlik duvarına / işletim sistemine özgüdür.

Yapabileceğiniz şey server2'den denemek:

nmap server1

Yardımın için teşekkürler. Ne yazık ki bu komut Solaris'te mevcut değil (veya kurulu değil). Ben "nmap: komut bulunamadı" alıyorum
yottabrain

@ user1734143 muhtemelen "depolarda" veya Solaris eşdeğeridir, ancak yine de indirebilirsiniz ve buradan
RSFalcon7

@ user1734143 muhtemelen yine de kurmanız gereken OpenCSW üzerinden edinilebilir, yönetim deneyiminizi LOT daha kolaylaştırır.
Bratchley

1

Son zamanlarda aynı isteği aldım ve konuya geldim. FW üzerindeki açık portları nc komutuyla tarayabildim, çıkışını sorgularken:

nc -v -w 1 -z -s *srcIP destIP port* 2>&1 | grep timed > /dev/null && echo closed || echo open

Temel olarak, eğer zaman aşımına uğradıysam, limanın FW'de açık olmadığı anlamına gelir.


0

Harici ana makinelerin tcp bağlantıları kurup kurmayacağını görmek için www.firewallruletest.com gibi bir çevrimiçi araç kullanabilirsiniz.

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.