#!/bin/bash echo "=========================================" echo " 🛡️ CheckPorts - Análisis de Seguridad" echo "=========================================" # Función mejorada para escanear puertos abiertos escanear_puertos() { echo "=========================================" echo " 🔍 Escaneo de Puertos Abiertos" echo "=========================================" # Cabecera de la tabla echo -e "PROTOCOLO\tPUERTO\tSERVICIO" echo "-----------------------------------------" # Obtener los puertos abiertos y los servicios usando 'ss' ss -tuln | awk 'NR>1 {print $1, $5}' | while read -r proto addr; do # Extraer solo el puerto de la dirección (separado por ':') port=$(echo $addr | awk -F':' '{print $NF}') # Obtener el servicio asociado al puerto service=$(getent services $port | awk '{print $1}') # Si no encuentra el servicio, mostrar "Desconocido" if [[ -z "$service" ]]; then service="Desconocido" fi # Mostrar los datos en la tabla echo -e "$proto\t\t$port\t$service" done echo "=========================================" echo "✅ Análisis completado." } # Función para realizar un escaneo en modo stealth (evasión de detección) modo_stealth() { echo "[*] Iniciando escaneo en modo sigiloso..." read -p "Introduce la IP o dominio a escanear: " target sudo nmap -sS -f --randomize-hosts -T2 -p- $target } # Función para detectar y bloquear IPs maliciosas bloquear_ips_maliciosas() { echo "[*] Buscando intentos de acceso sospechosos..." # Extraer IPs de intentos fallidos en SSH sudo grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr > ip_sospechosas.txt echo "[*] IPs sospechosas detectadas:" cat ip_sospechosas.txt # Preguntar si se quieren bloquear while IFS= read -r line; do ip=$(echo $line | awk '{print $2}') intentos=$(echo $line | awk '{print $1}') if [ "$intentos" -gt 5 ]; then # Si una IP tiene más de 5 intentos fallidos echo "[!] Bloqueando IP: $ip con $intentos intentos" sudo iptables -A INPUT -s $ip -j DROP fi done < ip_sospechosas.txt echo "[*] Proceso de bloqueo terminado." } # Menú de opciones while true; do echo -e "\n=========================================" echo " 1️⃣ Escaneo de puertos abiertos" echo " 2️⃣ Escaneo en modo Stealth" echo " 3️⃣ Bloqueo de IPs maliciosas" echo " 4️⃣ Salir" echo "=========================================" read -p "Selecciona una opción: " opcion case $opcion in 1) escanear_puertos ;; 2) modo_stealth ;; 3) bloquear_ips_maliciosas ;; 4) echo "Saliendo..."; exit ;; *) echo "❌ Opción no válida" ;; esac done