jueves, 13 de septiembre de 2012

Ver que puertos tenemos abiertos y cerrarlos en Linux/Unix

Los puertos de informática son muy muy importantes,tanto que por ahi podrian hackearnos, en la informática existen mas de 1000 puertos y mas sobre cada sistema,por ejemplo en el iPhone o iOS existe el puerto iphone-sync que es el 62078,el mas básico o conocido puede ser 22 SSH o 80 http, que deben haberlos oído por ahí,el 21 ftp,el 3306 mysql,etc

El hecho es que estos puertos nos podrían constar mucho tenerlos abiertos,por ejemplo en el iOS existe openSSH y si lo tenemos abierto por defecto solo bastaría tener nuestra ip y nos hackeaban porque la mayoria de los usuarios del iOS no cambian el pass de root que es alpine,de esa misma manera en Linux si tenemos abierto el ssh y consiguen nuestra ip y nos adivinan la contraseña  acceden a nuestro sistema,por el 80 hay exploits para apache,etc

Tutorial 

Para saber que puertos tenemos abiertos necesitamos nmap

Instalamos

Ubuntu/derivados

sudo apt-get install nmap

FreeBSD

sudo pkg_add -rv nmap

openSUSE

sudo zypper in nmap

Archlinux

sudo pacman -S nmap

Googlen para su distribucion si no la inclui

2.Escaneamos

nmap localhost

Por ejemplo ami me sale esto

Starting Nmap 5.21 ( http://nmap.org ) at 2012-09-13 14:46 CDT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0023s latency).
Not shown: 995 closed ports

PORT     STATE SERVICE
21/tcp   open  ftp
80/tcp   open  http
3306/tcp open  mysql
etc
etc

Si queremos filtrar los resultados usen este comando

nmap localhost | grep open

y se iltraran los resultados

21/tcp   open  ftp
80/tcp   open  http
3306/tcp open  mysql
etc
etc

Para cerrarlos usamos este comando

sudo fuser -k puerto

ejemplo

sudo fuser -k 80/tcp 

Algunos puertos no los podemos cerrar con este comando porque necesitamos hacerlo desde su misma linea de ordenes ¡pero la mayoría si!

De hecho cree este script en bash para cerrarlos facilmente


#!/bin/bash

# Programador : Tiempo de Tux
# Pagina web : www.itimetux.com
# Depende:fuser,nmap,zenity
# Probado → Ubuntu 12.04,11.10,openSUSE 12.1,Archlinux,FreeBSD(modificando el hasbang),Mint 13

echo -e "\e[1;35mBuscando lo necesario\e[0m"

# Verificando todo lo necesario

nonmap="Error no tienes nmap instalado :("
nozenity="Error no tienes zenity instalado :("
nofuser="Error no tienes fuser instalado :("

# Verificando con las variables lo necesario(puedes borrar desde Verificando todo lo necesario hasta principal cuando instales lo necesario)

# zenity

which zenity
if [ ! $? = 0 ]; then
   echo "$nozenity" > /tmp/error-notfound
   xdg-open /tmp/error-notfound
   exit
fi

# nmap

which nmap
if [ ! $? = 0 ]; then
   echo "$nonmap" > /tmp/error-notfound
   xdg-open /tmp/error-notfound
   exit
fi

# fuser

which fuser
if [ ! $? = 0 ]; then
   echo "$nofuser" > /tmp/error-notfound
   xdg-open /tmp/error-notfound
   exit
else
echo -e "\e[1;35mListo\e[0m"
fi

# Principal

err="No seleccionaste ningun puerto"

# Pipe principal con verificacion de argumentos

puer=`nmap localhost | grep open | zenity --list --column="Puertos Abiertos"`
if [ ! $? = 0 ]; then
   echo -e '\e[0;31mError no se seleccion ningun puerto\e[0m'
   exit
fi

# Bucle principal

for puertos in $puer
do

if [ $# -ne 1 ]

then

# Filtrando los resultados

var1=`echo $puertos | grep tcp && echo $puertos | grep udp`

echo $var1

# Mostrando puerto elegido en la consola

echo -e "\e[1;35mElegido puerto $var1\e[m"

echo "Cerrar Si/No"

echo -e '\e[0;31m# Nesesitas privilegios de root\e[0m'

read option

# Leer respuesta

case $option in

si|Si|SI)

# Cerrar puerto

sudo fuser -k $var1

exit 3;
;;

no|No|NO)

# Salir

exit 1;
;;
esac

else 

exit 0;

fi

done


# Fin del codigo :D

Da uno que otro error porque lo acabo de crear pero lo editare cuando tenga tiempo y de hecho ya se cuales son los problemas xD




Si tenemos puertos abiertos muy extraños o no los conocemos googlen para que sirven,o vean los servicios de mismo Unix

less /etc/services

Aquí un vídeo de como explotan windows mediante un puerto abierto




Y algo parecido nos puede pasar en Linux si tenemos puertos abiertos,bueno tenemos que tenerlos abiertos por algo y en Linux entraría la cuestión de iptables,pero lo que recomiendo es que si no los usan cierrenlos


Eso es todo

No hay comentarios.:

Publicar un comentario

Los comentarios serán revisados antes de ser publicados.