Cómo verificar si un puerto está abierto para el sistema remoto (ubuntu) [cerrado]


53

¿Es posible verificar que si los puertos están abiertos para el sistema remoto en el servidor ubuntu?

Debería poder verificar si un puerto (por ejemplo: ssh) en mi máquina está abierto para la máquina remota.

Respuestas:


73

use un buen telnet antiguo:

[user@lappie ~]$ telnet host 22
Trying ip.adr.tld ...
Connected to host  (ip.addr.tld).
Escape character is '^]'.
SSH-2.0-OpenSSH_5.1p1 Debian-5

Este es un intento exitoso. Una fracasada debería verse así;

[user@lappie ~]$ telnet host 23
Trying ip.adr.tld ...
telnet: connect to address ip.adr.tld: Connection refused
telnet: Unable to connect to remote host: Connection refused

o con nmap

[user@lappie ~]$ nmap host

Starting Nmap 5.21 ( http://nmap.org ) at 2010-10-07 11:25 CEST
Nmap scan report for host (ip.adr.tld)
Host is up (0.0052s latency).
rDNS record for ip.adr.tld : host.domain.tld
Not shown: 995 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
111/tcp  open  rpcbind
3000/tcp open  ppp
5666/tcp open  nrpe

Nmap done: 1 IP address (1 host up) scanned in 0.18 seconds

¡Gran ayuda!. Sentí que solo enumera los números de puerto para los que se ejecutan los servicios en el host especificado. Lo comprobé deteniendo los servicios y ejecutando el comando nmap nuevamente. así que no enumeró el puerto que detuve. ¿Realmente muestra los puertos abiertos para la máquina remota?
usuario53864

1
@ user53864: obviamente debe ejecutar esta prueba en una máquina remota.
natxo asenjo

2
Esto solo funcionará para los servicios TCP.

El uso nmapen una máquina aws desencadena un informe de abuso.
Newbee

10

Use NMAP. Ejemplo:

nmap example.com

Puede usar la dirección IP en lugar del nombre de dominio. Aquí está la documentación completa: http://nmap.org/book/man.html


1
Solo enumera los puertos en los que se ejecutan los servicios en una máquina específica.
usuario53864

Entonces lo estás usando mal.
Christoffer Hammarström

@ user53864, eso es correcto. Más específicamente, enumerará todos los puertos ABIERTOS y también describirá qué servicios los están utilizando. Si está buscando un puerto específico, pruebe simplemente "nmap example.com 22" como dijo natxo asenjo, que escaneará el puerto 22 (SSH) para ver si está abierto.
Joshua

9

Esto es simple como:

nc -zw3 domain.tld 22 && echo "opened" || echo "closed"

-w3 es el tiempo de espera


1
nc -vzw3 domain.tld 22 es más corto y podría ser un poco más informativo ...
g2mk

5

Para un script, uso algo como lo siguiente:

nmap example.com -p 22 -sV --version-all -oG - | grep -iq '22/open'

¡El valor de retorno le dice si el puerto está abierto!


5

De esta respuesta de StackOverflow :

Parece que está buscando un escáner de puertos como nmap o netcat, los cuales están disponibles para Windows, Linux y Mac OS X.

Por ejemplo, busque telnet en una ip conocida:

  nmap -A 192.168.0.5/32 -p 23

Por ejemplo, busque puertos abiertos del 20 al 30 en host.ejemplo.com:

  nc -z host.example.com 20-30


2

Telnet solo funcionará para servicios TCP, por lo que si está intentando ver si su servidor DHCP (UDP / 68) se está ejecutando en una máquina remota, no funcionará. Del mismo modo, nmap se predetermina para escanear solo los puertos TCP.

Para puertos UDP use:

nmap -sU example.com -p 68


1

Utilicé el siguiente comando. Dio salida a lo que quería. nmap -A IPAddressOfRemoteSystem -p portNumber Ej: nmap -A 192.168.1.87 -p 8080 (o) también podemos verificar los puertos locales

antes de eso, compruebe primero cuáles son los puertos abiertos / modo escucha utilizando el siguiente comando.

netstat -ntlp | grep LISTEN

después de esto

nmap -A localhost -p portNumber

y cierre cualquier puerto, por ejemplo, si mysql se ejecuta en 3306, puede detenerlo,

sudo service mysql stop

y entonces,

nmap -A localhost -p 3306

Espero que esto sea útil.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.