Script bash que busca puertos TCP abiertos

Script bash que busca puertos TCP abiertos en una IP.

Cualquiera que maneje servidores, sabe que de vez en cuando se deben escanear los sistemas en busca de puertos TCP abiertos (entre otros puertos).

Para está tarea tenemos «nmap«, que es una excelente herramienta y de hecho es la más utilizado en estos trabajos, pero no siempre está disponible en el sistema operativo, simplemente porque no se a instalado o por que requiere alguna dependencia que no nos podemos permitir instalar.

Para cumplir esa misma función, hemos creado un script bash que buscara los puertos TCP abiertos por numero de IP, o por hostname.

Puedes modificarlo según tus necesidades.

 

Script que escanea puertos TCP abiertos

Creamos el archivo.

nano scaner_ports.sh

Copia y pegas el código del script.
#!/bin/bash

if [ "$1" == "" ]
then
echo
echo Script scan de puertos TCP abiertos en una IP o nombre de host
echo Uso : scaner_port.sh \<ip-o-hostname\> \[inicio-port\] \[final-port\]
echo inicio-port - 1 por defecto
echo final-port - 1024 por defecto
echo
exit
fi

START_PORT=$2;[ -z "$START_PORT" ] && START_PORT=1
END_PORT=$3;[ -z "$END_PORT" ] && END_PORT=1024
echo Scanning $1 \(ports $START_PORT to $END_PORT\)

PORT_PROTOCOL="tcp"

scan_port(){
PORT_NUMBER=$1
PORT_SCAN_RESULT=`2>&1 echo "" > /dev/$PORT_PROTOCOL/$TARGET_NAME_OR_IP/$PORT_NUMBER | grep connect`
[ "$PORT_SCAN_RESULT" == "" ] && echo $PORT_NUMBER\/$PORT_PROTOCOL' 'open' '`grep $PORT_NUMBER/$PROTOCOL /etc/services | head -n1 | awk '{print $1}'`
}

TARGET_NAME_OR_IP=$1
echo 'PORT STATE SERVICE'

for PORT_NUMBER in `seq $START_PORT $END_PORT`
do
scan_port $PORT_NUMBER
done

Guarda y cierra el editor.

Script bash que busca puertos TCP abiertos 1

 

Le damos permisos de ejecución (revisa que la ruta del script sea la correcta).

chmod +x /usr/local/src/scaner_ports.sh

 

Uso del script

En el script, puedes definir tres parámetros:

  • IP o nombre de host (requerido).
  • El puerto de inicio del scan (opcional).
  • El puerto final del scan (opcional).

Si no estableces ningún valor inicial ni final, el script buscara del puerto «1» al «1024».

 

Ejemplo de uso:

[root@localserver src]# bash scaner_ports.sh 192.168.10.101
Scanning 192.168.10.101 (ports 1 to 1024)
PORT STATE SERVICE
22/tcp open ssh
115/tcp open bsd

 

Recuerda que este script se desarrollo con fines productivos y educativos. No hagas mal uso de el, por favor.

Agregar comentario