Soru Linux sunucusunda bağlantı noktasının açık mı yoksa kapalı mı olduğunu kontrol edin.


Bir portun bir Linux sunucusunda dinlenip dinlenmediğini nasıl kontrol edebilirim?


175
2017-09-07 17:24


Menşei


Ne sorduğun belli değil. "Açık" ile ne demek istiyorsun? Bazı sunucu bu bağlantı noktasını dinliyor mu demek istiyorsun? Yoksa sistem güvenlik duvarı tarafından izin verildiğini mi kastediyorsunuz? Ya da ne? - David Schwartz
Sunucumda bir bağlantı noktası engellendiğini ve engellemeyi / yeniden açmak istediğini düşünüyorum. - James Anderson
netstat -an | grep PORTNUMBER | grep -i listen Çıkış boşsa, bağlantı noktası kullanımda değil. - automatix


Cevaplar:


Bir işlemin TCP veya UDP bağlantı noktasında dinlenip dinlenmediğini kontrol edebilirsiniz. netstat -tuplen.

Bazı bağlantı noktalarına dışarıdan erişilip erişilemediğini kontrol etmek için (bu muhtemelen istediğiniz gibi olabilir) Nmap itibaren bir diğeri sistemi. Nmap'i kontrol etmek istediğiniz aynı ana bilgisayarda çalıştırmak, amacınız için gayet işe yaramaz.


159
2017-09-07 17:31



GNU netstat parametreleri bilir -t, -u, -p, -l, -e, ve -n. Seçenekler ayrıştırıcısı sayesinde ifade edilebilir -tuplen. linux.die.net/man/8/netstat - joschi
Ayrıca telnet komut genellikle yalnızca TCP'yi destekler, böylece kontrol etmek istediğiniz hizmet başka bir protokolde çalışırsa şansınız kalmaz. - joschi
evet, bu yüzden pencereleri karışıklık kullanıyordum. - Dexter
nc telnet'e (daha iyi) bir alternatiftir. UDP'yi de destekliyor. - Tsvetomir Dimitrov
Sudo ile kullan: sudo netstat -tuplen. Bu size sadece sizin değil, başkalarının da sahip olduğu işlemleri size verecektir ve eğer root olmayan bir kullanıcı olarak görüntülenmiyorsa, ek detaylar (PID / Program Adı gibi) basacaktır. - John Red


TCP bağlantı noktası açık olup olmadığını sınamanın en hızlı yolu (sahip olabileceğiniz herhangi bir donanım güvenlik duvarı dahil), uzak bir bilgisayardan (örneğin, masaüstünüzden) yazmanızdır:

telnet myserver.com 80

Bu sunucudaki 80 numaralı bağlantı noktasına bağlanmayı dener. Bir zaman aşımı veya inkar ederseniz, liman açık değildir :)


84
2017-09-07 17:33



"telnet" i bir komut olarak tanımıyor diyor ki ... - James Anderson
telnet istemci paketini kurmak için "tel install install". - cjc
Diyor: telnet: 82.165.148.224 adresine bağlanın: Bağlantı reddedildi - James Anderson
Yukarıda yazılanlar: if you get a time out or deny, the port is not open - Industrial
Telnet kurulumu için izinleriniz yoksa ne olur? Başka bir standart araç var mı? - KC Baltz


Tamam, özet olarak, giriş yapabileceğiniz bir sunucunuz var. Bir şeyin limanda dinlenip dinlenmediğini görmek istiyorsun. 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 süreç için ve / veya görmeyi beklediğiniz port numaralarını tarayabilirsiniz (veya grep).

Beklediğiniz işlem yoksa, bu işlemi başlatmalı ve netstat'ı tekrar kontrol etmelisiniz. Süreç var, ancak beklemediğiniz bir arabirim ve bağlantı noktasını dinliyorsa, bir yapılandırma sorunu var (ö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 bir satır yoktur).

Süreç dolduysa ve beklediğiniz bağlantı noktasını dinliyorsanız, MacBook'unuzdan ofisinizdeki / evdeki bir bağlantı noktasına "telnet" çalıştırmayı deneyebilirsiniz, örn.

 telnet xxxxxxxxxxxx.co.uk 443

Bu, (standart bağlantı noktaları varsayarsak) SSL için yapılandırılmış bir web sunucusunun var olup olmadığını sınar. Telnet kullanarak bu testin sadece işlem bir TCP portunda dinliyorsa işe yarayacağını unutmayın. Bir UDP portu ise, ona bağlanmak için hangi müşteriyi kullanacağınızı deneyebilirsiniz. (224 numaralı bağlantı noktasını kullandığını görüyorum. Bu maskeli, ve bunun ne olduğu hakkında hiçbir fikrim yok).

Servis var ise, ancak dışarıdan alamıyorsanız, sizi engelleyen bir güvenlik duvarı var. Bu durumda, çalıştırın:

 iptables -L -n

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

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

ya da bu çizgiler boyunca bir şey. Güvenlik duvarı komutlarınızı, internette bazı yabancıların size söylediklerine göre körü körüne çalıştırmayın. Ne yaptığınızı düşünün.

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


23
2017-09-07 20:01



İptables -I komutunu nasıl geri alacağınızı ekleyebilir misiniz? Teşekkürler!! - Evgeny
"iptables -D", ardından orijinal komutta "-I" den başka ne varsa onu takip et. Temel olarak, belgelere bakın. - cjc


Ben combo kullanıyorum netstatve lsof:

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

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


8
2018-03-28 19:32



hiçbir şey sudo ile veya olmadan ister - Dheeraj Thedijje
@DheerajThedijje - o zaman bu liman açık değil - warren
Evet değildi, anladım. - Dheeraj Thedijje


Sisteme bağlı ve root olarak bir komut çalıştırabiliyorsanız, iptables'in çıkışını kontrol edebilirsiniz.

iptables -L -vn

bu güvenlik duvarı kurallarını ve hangi bağlantı noktalarının açık hedef olduğunu listeler. ACCEPT ve açık herhangi bir kapalı bağlantı noktası hedefi REJECT.


7
2017-09-07 17:57



Ve güvenlik duvarınız varsa, daha basittir firewall-cmd --query-port=port/protocol, Örneğin. firewall-cmd --query-port=80/tcp. - Agostino


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


5
2018-01-25 21:45



Önek sudo eğer herhangi bir çıkış vermezse. - Elijah Lynn