Come posso verificare se una porta è in ascolto su un server Linux?
netstat -an | grep PORTNUMBER | grep -i listen
Se l'output è vuoto, la porta non è in uso.
Come posso verificare se una porta è in ascolto su un server Linux?
netstat -an | grep PORTNUMBER | grep -i listen
Se l'output è vuoto, la porta non è in uso.
Risposte:
È possibile verificare se un processo è in ascolto su una porta TCP o UDP con netstat -tuplen
.
Per verificare se alcune porte sono accessibili dall'esterno (questo è probabilmente quello che vuoi) puoi usare uno scanner di porte come Nmap da un altro sistema. L'esecuzione di Nmap sullo stesso host che si desidera verificare è abbastanza inutile per il proprio scopo.
-t
, -u
, -p
, -l
, -e
, e -n
. Grazie al parser delle opzioni può essere espresso come -tuplen
. linux.die.net/man/8/netstat
telnet
comando di solito supporta solo TCP, quindi sei sfortunato se il servizio che desideri controllare viene eseguito su un altro protocollo.
sudo netstat -tuplen
. Questo ti darà processi di proprietà non solo di te, ma anche di altri, e stamperà ulteriori dettagli (come PID / Nome del programma) se non sono già visualizzati come utenti non root.
Il modo più rapido per verificare se una porta TCP è aperta (compresi eventuali firewall hardware che potresti avere), è digitare, da un computer remoto (ad esempio il desktop):
telnet myserver.com 80
Che tenterà di aprire una connessione alla porta 80 su quel server. Se hai una pausa o neghi, la porta non è aperta :)
if you get a time out or deny, the port is not open
OK, in sintesi, hai un server a cui puoi accedere. Vuoi vedere se qualcosa è in ascolto su qualche porta. Come root, esegui:
netstat -nlp
questo mostrerà un elenco di processi in ascolto su porte TCP e UDP. Puoi scansionarlo (o grep) per il processo che ti interessa e / o per i numeri di porta che ti aspetti di vedere.
Se il processo che ti aspetti non è presente, dovresti avviarlo e controllare di nuovo netstat. Se il processo è lì, ma è in ascolto su un'interfaccia e una porta che non ti aspettavi, allora c'è un problema di configurazione (ad esempio, potrebbe essere in ascolto, ma solo sull'interfaccia di loopback, quindi vedresti 127.0.0.1:3306 e nessun'altra linea per la porta 3306, nel caso della configurazione predefinita per MySQL).
Se il processo è attivo e sta ascoltando sulla porta che ti aspetti, puoi provare a eseguire un "telnet" su quella porta dal tuo Macbook nel tuo ufficio / casa, ad es.
telnet xxxxxxxxxxxx.co.uk 443
Ciò verificherà se (presupponendo porte standard) che sia presente un server Web configurato per SSL. Si noti che questo test che utilizza telnet funzionerà solo se il processo è in ascolto su una porta TCP. Se è una porta UDP, puoi anche provare con qualsiasi client che avresti usato per connetterti ad essa. (Vedo che hai usato la porta 224. Questo è masqdialer e non ho idea di cosa sia).
Se il servizio è lì, ma non riesci ad accedervi esternamente, allora c'è un firewall che ti blocca. In tal caso, eseguire:
iptables -L -n
Questo mostrerà tutte le regole del firewall come definite sul tuo sistema. Puoi pubblicarlo, ma, in generale, se non stai consentendo tutto sulla catena INPUT, probabilmente dovrai consentire esplicitamente il traffico sulla porta in questione:
iptables -I INPUT -p tcp --dport 224 -j ACCEPT
o qualcosa del genere. Non eseguire i comandi del firewall alla cieca in base a ciò che un estraneo ti ha detto su Internet. Considera cosa stai facendo.
Se il firewall sulla casella consente il traffico desiderato, è possibile che la società di hosting stia eseguendo un firewall (ad esempio, consentono solo SSH (22 / tcp), HTTP (80 / tcp) e HTTPS (443 / tcp) e negando tutto il resto del traffico in entrata). In questo caso, dovrai aprire un ticket di helpdesk con loro per risolvere questo problema, anche se suppongo che potrebbe esserci qualcosa nel tuo cPanel che potrebbe consentirlo.
Uso la combinazione di netstat
e lsof
:
netstat -an | grep <portnumber>
lsof -i:<portnumber>
Per vedere se la porta viene utilizzata e cosa la sta usando.
Se si è connessi al sistema e si può eseguire un comando come root, è possibile controllare l'output di iptables
iptables -L -vn
questo elencherà le regole del firewall e quali porte sono target aperto ACCEPT
e qualsiasi target di porte esplicitamente chiuso REJECT
.
firewall-cmd --query-port=port/protocol
, ad es firewall-cmd --query-port=80/tcp
.
lsof -i :ssh
elencherà tutti i processi con la porta ssh aperta, sia in ascolto che in connessioni attive.
sudo
se non restituisce alcun output.