it-swarm.asia

Linux sunucusunda portun açık veya kapalı olduğunu kontrol etmek ister misiniz?

Bir bağlantı noktasının bir Linux sunucusunda dinleyip dinlemediğini nasıl kontrol edebilirim?

228
James Anderson

Bir işlemin TCP veya netstat -tuplen İle UDP bağlantı noktasında dinleyip dinlemediğini kontrol edebilirsiniz.

Bazı bağlantı noktalarına dışarıdan erişilip erişilemediğini kontrol etmek için (bu muhtemelen istediğiniz şeydir) Nmap başka bir sistemi gibi bir bağlantı noktası tarayıcısı kullanabilirsiniz. Nmap Kontrol etmek istediğiniz aynı Ana Bilgisayarda çalıştırmak amacınız için oldukça işe yaramaz.

195
joschi

Bir TCP bağlantı noktasının açık olup olmadığını (sahip olabileceğiniz herhangi bir donanım güvenlik duvarı dahil) test etmenin en hızlı yolu, uzak bir bilgisayardan (örn. Masaüstünüz) yazmaktır:

telnet myserver.com 80

Bu sunucuda 80 numaralı bağlantı noktasına bir bağlantı açmaya çalışacaktır. Bir mola alırsanız veya reddederseniz, bağlantı noktası açık değildir :)

108
Adrian Macneil

Tamam, özet olarak, giriş yapabileceğiniz bir sunucunuz var. Bir portta bir şey dinleyip dinlemediğini görmek istersiniz. Kök olarak çalıştırın:

netstat -nlp

bu, TCP ve UDP bağlantı noktalarını dinleyen işlemlerin bir listesini gösterir. İlgilendiğiniz işlem ve/veya görmeyi beklediğiniz bağlantı noktası numaralarını tarayabilir (veya grep) .

Beklediğiniz işlem orada değilse, bu işlemi başlatmalı ve netstat'ı tekrar kontrol etmelisiniz. Süreç oradaysa, ancak beklemediğiniz bir arabirim ve bağlantı noktasını dinliyorsa, bir yapılandırma sorunu vardır (örneğin, dinleme olabilir, ancak yalnızca geri döngü arabiriminde, bu nedenle 127.0.0.1:3306 ve MySQL için varsayılan yapılandırma durumunda 3306 numaralı bağlantı noktası için başka satır yok).

İşlem devam ediyorsa ve beklediğiniz bağlantı noktasını dinliyorsa, ofisinizdeki/evinizdeki Macbook'unuzdan bu bağlantı noktasına bir "telnet" çalıştırmayı deneyebilirsiniz, ör.

 telnet xxxxxxxxxxxx.co.uk 443

Bu, SSL için yapılandırılmış bir web sunucusu olup olmadığını (standart bağlantı noktaları varsayarak) test eder. Telnet kullanan bu sınamanın yalnızca işlem bir TCP bağlantı noktasında dinliyorsa çalışacağını unutmayın. Bir UDP bağlantı noktasıysa, hangi istemciyi kullanacağınızı deneyebilirsiniz) (Bağlantı noktası 224'ü kullandığınızı görüyorum. Bu bir masqdialer ve bunun ne olduğu hakkında hiçbir fikrim yok).

Hizmet oradaysa, ancak dışarıdan erişemiyorsanız, sizi engelleyen bir güvenlik duvarı vardır. Bu durumda, çalıştırın:

 iptables -L -n

Bu, sisteminizde tanımlanan tüm güvenlik duvarı kurallarını gösterecektir. Bunu gönderebilirsiniz, ancak genellikle INPUT zincirinde her şeye izin vermiyorsanız, muhtemelen söz konusu bağlantı noktası üzerindeki trafiğe açıkça izin vermeniz gerekecektir:

 iptables -I INPUT -p tcp --dport 224 -j ACCEPT

veya bu çizgiler boyunca bir şey. Güvenlik duvarı komutlarınızı, bazı yabancıların İnternet'te söylediklerine dayanarak körü körüne çalıştırmayın. Ne yaptığınızı düşünün.

Kutudaki güvenlik duvarınız istediğiniz trafiğe izin veriyorsa, barındırma şirketiniz bir güvenlik duvarı kullanıyor olabilir (ör. Yalnızca SSH (22/tcp), HTTP (80/tcp) ve HTTPS (443/tcp) ve diğer tüm gelen trafiği reddetme). Bu durumda, bu sorunu çözmek için onlarla bir yardım masası bileti açmanız gerekecek, ancak cPanel'de buna izin verebilecek bir şey olabileceğini varsayalım.

32
cjc

netstat ve lsof kombinasyonunu kullanıyorum:

netstat -an | grep <portnumber>
lsof -i:<portnumber>

Bağlantı noktasının kullanılıp kullanılmadığını ve ne kullandığını görmek için.

12
warren

Sisteme bağlıysanız ve root olarak bir komut çalıştırabiliyorsanız iptables çıktısını kontrol edebilirsiniz

iptables -L -vn

bu, güvenlik duvarı kurallarını ve hangi bağlantı noktalarının açık hedef ACCEPT ve açıkça kapatılmış bağlantı noktalarının REJECT olduğunu listeler.

8
user9517

lsof -i :ssh ssh portu açık, hem dinleme hem de aktif bağlantılar ile tüm işlemleri listeler.

6
pgs

Böyle bir testi komut dosyası yapmanız gerekiyorsa, Serhii Popov (soruya yapılan yoruma bakın) çözümü muhtemelen en iyisidir çünkü nc TCP yığınını açık arama için arayabilir) gerçek bir bağlantı denemek yerine port.

En basit form:

nc -z <ip> <port>

Komut, belirtilen <ip>:<port> Combo'yu açılmış olarak bulursa (yani hizmetlerinizden biri dinliyorsa) true değerini döndürür.

Şimdi bağlantı noktası açılana kadar beklemek için bir komut dosyası yazabilirsiniz:

while ! nc -z <ip> <port>
do
    sleep 1
done

Not 1: -w Komut satırı seçeneğini denedim ve hiçbir şey yapmadım. Her iki durumda da komut hemen geri döner. -w İle -z.

Not 2: hata ayıklamaya yardımcı olmak için -v Komut satırı seçeneğini deneyin.

0
Alexis Wilke