En el momento de que nos conectamos a un sitio web o hacemos uso de algún servicio de red entra en juego numerosos procesos y servicios que harán que la comunicación sea exitosa y para asegurar que todo sea viable se dispone del Firewall. Este firewall está compuesto por un grupo de reglas de entrada y salida donde se analizan los paquetes entrantes y salientes para validar su integridad y así determinar si es o no confiable. Además de ello, al Solvetic te enseñará algunos métodos extras para lograr que todo funcione de la mejor manera y por ello hablaremos de dos utilidades esenciales como lo son nmap y tcpdump.
Nmap (network mapper) está desarrollado como una utilidad para exploración de redes y sondeo de seguridad directamente en los puertos, es ideal para tareas de exploración de red y auditoría de seguridad. Para comprender un poco su uso, Nmap se encarga de usar paquetes IP raw (sin contenido) con el fin de determinar qué equipos están disponibles en la red, adicional se puede validar qué servicios (nombre y versión de la aplicación) están alojados en ellos y ver su sistema operativo, tener acceso a los filtros de paquetes o cortafuegos y algunas funciones más.
- Es totalmente flexible.
- Puede ser usado en sistemas Linux, Windows, FreeBSD, OpenBSD, Solaris, macOS y muchos mas.
- Especificación de puertos y orden de escaneo.
- Detección de sistema operativo.
- Tiempo y rendimiento de cada host.
- Especificación de destino.
- Escaneo de red completo o parcial si es necesario.
- Genera informes en formatos como texto plano, XML o HTML.
- Función de escaneo furtivo, es decir, se lleva a cabo el escaneo en modo sigiloso (stealth) o bien se usa el escaneo de puertos en serie, esto para evitar ser detectado por los dispositivos de seguridad y firewalls que estén activos en el destino.
- Escaneo en paralelo el cual permite enviar múltiples paquetes de forma simultánea ayudando a optimizar el escaneo.
- Permite al usuario hacer uso de scripts con el fin de automatizar tareas y realizar escaneos avanzados en el destino.
- -iL <archivo_entrada>: va a leer una lista de sistemas del archivo
- -iR <número de sistemas>: selecciona objetivos de forma aleatoria
- -sL: Sondeo de lista: hace uso de la lista de objetivos a analizar
- -sP: Sondeo Ping: permite determinar si el objetivo está vivo
- -P0: Asume que todos los objetivos están vivos
- -PS/PA/PU [listadepuertos]: ejecuta un análisis TCP SYN, ACK o UDP de los puertos indicados por el usuario
- -PE/PP/PM: hace un análisis ICMP del tipo echo, marca de fecha y máscara de red
- -n/-R: no lleva a cabo la resolución DNS
- -sS/sT/sA/sW/sM: lleva a cabo un análisis TCP SYN/Connect()/ACK
- -sN/sF/sX: lleva a cabo un análisis TCP Null, FIN, y Xmas
- --scanflags <indicador>: permite especificar los indicadores TCP que vamos a usar
- -p <rango de puertos>: permite hacer un análisis de los puertos indicados
- -F: lleva a cabo un análisis de los puertos listados en el archivo nmap-services
- -r: analiza los puertos secuencialmente
- -O: activa la detección de sistema operativo
- --osscan-limit: limita la detección del sistema operativo
- -6: Habilita el análisis IPv6
- -A: habilita la detección de sistema operativo y de versión
Ahora, tcpdump es un analizador de paquetes de línea de comandos el cual usa libpcap, la cual es una biblioteca C/C++ portátil, que permite capturar el tráfico de red, esta herramienta puede capturar y mostrar paquetes que viajan en una interfaz de red específica, todo este análisis se hace en tiempo real.
- Permite hacer análisis de tráfico de red en tiempo real.
- Es compatible con filtros de expresiones de captura complejas haciendo uso de la sintaxis de expresiones de filtro integradas de libpcap.
- Permite guardar la captura de paquetes en un archivo para fines de soporte y gestión.
- Ofrece información detallada sobre cada paquete capturado, esto abarca su dirección ip de origen y destino, puertos, protocolo, tamaño del paquete y más detalles.
- Permite filtrar y mostrar únicamente los paquetes que se adaptan a los criterios definidos por nosotros como usuarios.
- Esta en la capacidad de capturar paquetes en base a filtros propios como lo son el uso de direcciones IP de origen y destino, puertos y mas
- -A: imprime cada paquete capturado.
- -B: muestra el tamaño del búfer.
- -c (contar): se encarga de contar la cantidad de paquetes detectados.
- --count: imprime únicamente el recuento de paquetes al leer los archivos de captura en vez de analizar estos paquetes.
- -d: genera el código compilado de coincidencia de paquetes en un formato legible por humanos.
- -e: imprime el encabezado de nivel de enlace de cada paquete.
- -f: imprime direcciones IPv4 de forma numérica mas no de forma simbólica.
- -i interface: permite definir la interfaz a analizar.
- -I (--monitor-mode): establece la interfaz en "modo monitor" y aplica para las interfaces Wi-Fi IEEE 802.11.
- -K: no verifica las sumas de comprobación de IP, TCP o UDP.
- -m module: carga las definiciones del módulo SMI MIB usando el módulo de archivo.
- -n: no convierte direcciones.
Sin mas ahora Solvetic te explicara como usar estas dos herramientas para analizar el estado del firewall en Linux y usaremos Ubuntu.
Cómo comprobar firewall con Nmap y Tcpdump
Vamos a abrir la terminal y actualizar el sistema con el siguiente comando:
sudo apt update
Después de esto vamos a instalar las utilidades necesarias con el siguiente comando:
sudo apt install tcpdump nmap
Ingresamos la letra S para confirmar este proceso:
Ahora vamos a crear el directorio donde se guardarán los resultados del análisis, usaremos el siguiente comando:
mkdir ~/nombre
Ahora vamos a escanear el equipo para buscar de puertos TCP abiertos, primero vamos a crear otro directorio dentro del anterior para el primer análisis:
mkdir ~/(nombre)/nombre
Ahora vamos a ejecutar el comando “ip a” para saber la IP de nuestro equipo o del equipo de destino:
Ahora vamos a usar el escaneo SYN el cual es un escaneo que no hace una negociación completa con el destino, para ello ejecutamos lo siguiente:
sudo tcpdump host ip_equipo -w ~/nombre/nombre/packets
Por defecto tcpdump se ejecutará en primer plano, si no se requiere esto podemos pausar este proceso con las teclas siguientes:
Ctrl + Z
Luego si es necesario ejecutamos “bg” para que se ejecute en segundo plano.
Ahora vamos a llevar a cabo el escaneo SYN, para ello vamos a ejecutar lo siguiente:
sudo nmap -sS -Pn -p- -T4 -vv --reason -oN ~/nombre/nombre/nmap.results IP_equipo
9
Hemos usado los siguientes parámetros:
- -sS: inicia el escaneo SYN
- -Pn: permite omitir el descubrimiento del host
- -p-: por defecto un escaneo SYN valida los 1000 puertos más usados, con este comando nmap verificara todos los puertos disponibles
- -T4: establece un perfil de tiempo para nmap, el valor 0 es el más lento y 5 es el más veloz
- -vv: mejora la verbosidad de la salida
- --reason: permite que nmap nos indique la causa del estado de un puerto
- -oN: escribe los resultados en un archivo
Podemos ver el resultado total del comando. Vemos el puerto, estado, servicio detectado y razón.
Analizamos los resultados de este examen con el comando:
less ~/nombre/nombre/nmap.results
Podemos ver que 65530 puertos fueron cerrados, encontramos la IP de destino, el tiempo usado y más.
Algunos comandos que podemos usar son los siguientes.
- Para ver el tráfico en tiempo real (si aplica):
sudo tcpdump -nn -r ~/nombre/nombre/packets | les
- Para ver el tráfico enviado:
sudo tcpdump -nn -r ~/nombre/nombre/packets 'dst IP_equipo' | les
- Ahora vamos a revisar los puertos UDP, primero vamos a crear el directorio usando siguiente sintaxis:
mkdir ~/nombre/udp
Ahora vamos a ejecutar el siguiente comando para analizar todo lo relacionado con UDP teniendo en cuenta la IP de destino:
sudo tcpdump host IP_equipo -w ~/nombre/udp /packets
Detenemos este proceso con las teclas:
Ctrl + Z
Permitimos que se ejecute en segundo plano con “bg”:
A tener en cuenta que el análisis UDP puede tomar demasiado tiempo por la cantidad de puertos existentes, esto a razón que UDP es un protocolo sin conexión, para reducir la velocidad y el tiempo de escaneo vamos a comprobar el rango de tiempo del parámetro con el siguiente comando:
sudo sysctl net.ipv4.icmp_ratelimit
Vamos a deshabilitar este valor estableciendo su valor en 0 con el siguiente comando:
sudo sysctl -w net.ipv4.icmp_ratelimit=0
Ahora será posible ejecutar la prueba con el siguiente comando:
sudo nmap -sU -Pn -p- -T4 -vv --reason -oN ~/nombre/udp /nmap.results IP_equipo
Vamos a la parte inferior para ver todos los resultados. Vemos la cantidad de puertos detectados, cantidad de equipos detectados, tiempo usado y más.
Después de esto vamos a restablecer de nuevo los valores del parámetro usando el siguiente comando:
sudo sysctl -w net.ipv4.icmp_ratelimit=1000
Establecemos UDP en primer plano con el comando “fg” y terminamos el proceso con:
Ctrl + C
Accederemos a los resultados con el comando:
less ~/nombre/udp/nmap.results
Es momento de crear un directorio para almacenar los servicios y hosts:
Ahora vamos a ejecutar el siguiente comando indicando los puertos a usar para el análisis:
sudo nmap -sV -Pn -p 22,80 -vv --reason -oN ~/nombre/versions/service_versions.nmap IP_equipo
Vemos los resultados completos del análisis:
Vemos allí el tipo de servicio detectado y su estado, accederemos a los resultados con el comando:
less ~/nombre /versions/service_versions.nmap
Vamos a ejecutar el siguiente comando para acceder a las versiones de sistema operativo en el equipo objetivo:
sudo nmap -O -Pn -vv --reason -oN ~/nombre/versions/os_version.nmap IP_equipo
Bajamos un poco para ver la totalidad de los resultados:
Accedemos a los resultados con el comando: Allí encontramos los sistemas operativos detectados.
less ~/nombre/versions/os_version.nmap
Algunas otras opciones para usar tcpdump son las siguientes. Para ver una lista de dispositivos donde podremos capturar datos usamos el comando:
sudo tcpdump -D
Para listar toda las interfaces disponibles ejecutamos:
sudo tcpdump –interface any
podemos capturar una cantidad X de paquetes antes de detener el análisis en cualquier interfaz:
sudo tcpdump -i any -c# -nn
Así es como estas dos utilidades serán fiables y prácticas para ver el estado del firewall en Linux.