¿cuanta gente a visto el blog?

hacking con programación bash

 sudo dnf update






touch hakalma.sh
chmod 777 hakalma.sh
vi hakalma.sh
#!/bin/bash

# Función para mostrar el menú
menu() {
    echo "================================="
    echo "    Menú de Hacking Ético        "
    echo "================================="
    echo "1) Ver conexiones activas (netstat)"
    echo "2) Cambiar contraseña de un usuario"
    echo "3) Escanear puertos abiertos en localhost"
    echo "4) Programar una tarea con crontab"
    echo "5) Salir"
    echo "================================="
    echo "Selecciona una opción: "
}

# Función 1: Ver conexiones activas usando netstat
opcion1() {
    echo "Conexiones activas:"
    netstat -tunlp
}

# Función 2: Cambiar la contraseña de un usuario
opcion2() {
    echo "Introduce el nombre del usuario para cambiar la contraseña:"
    read usuario
    sudo passwd $usuario
}

# Función 3: Escanear puertos abiertos en localhost
opcion3() {
    echo "Escaneando puertos abiertos en localhost..."
    sudo nmap -sT 127.0.0.1
}

# Función 4: Programar una tarea con crontab
opcion4() {
    echo "Introduce el comando que deseas programar en crontab:"
    read comando
    echo "Introduce la frecuencia en formato crontab (ej: '*/5 * * * *' para cada 5 minutos):"
    read frecuencia
    (crontab -l 2>/dev/null; echo "$frecuencia $comando") | crontab -
    echo "Comando programado exitosamente."
}

# Bucle para mostrar el menú y ejecutar las opciones
while true
do
    menu
    read opcion
    case $opcion in
        1) opcion1 ;;
        2) opcion2 ;;
        3) opcion3 ;;
        4) opcion4 ;;
        5) echo "Saliendo..."; exit 0 ;;
        *) echo "Opción no válida";;
    esac
done

ESC
:wq

./hakalma.sh
cd /home/pruno/scripts

crontab -e
./hakalma.sh

cd /home ; touch adios.txt


Respaldar Servidor

1:13:53

localhost

dnf install -y virt-manager

server


lsblk

localhost

dnf groupinstall -y "Virtualization host"
visudo


¿KVN en Kali Linux?

 lsb_release -a


egrep -c '(vmx|svm)' /proc/cpuinfo
si sale 0 no puede virtualizar



Crear RAID 1 con discos SSD en RaspberryPi

pi

toor


 sudo su

fdisk -l

mdadm --create /dev/md0 -- level=1 --raid-devices =2 /dev/sdc /dev/sdd

yes


fdisk -l

sudo mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/nvme0n2 /dev/nvme0n3


cat /proc/mdstat

sudo mkfs.ext4 /dev/md0


sudo mkdir -p /mnt/raid0
sudo mount /dev/md0 /mnt/raid0


sudo mdadm --stop /dev/md0
sudo mdadm --remove /dev/md0
sudo mdadm --zero-superblock /dev/nvme0n2 /dev/nvme0n3
sudo wipefs -a /dev/nvme0n2 /dev/nvme0n3

sudo umount /mnt/raid0

sudo mdadm --stop /dev/md0
sudo mdadm --remove /dev/md0
sudo mdadm --zero-superblock /dev/nvme0n2 /dev/nvme0n3
sudo wipefs -a /dev/nvme0n2 /dev/nvme0n3
cat /proc/mdstat
lsblk

sudo nano /var/www/html/limpiar_raid.sh

#!/bin/bash

# Variables
RAID_DEVICE=$1
DISKS=$2

# Desmontar RAID si está montado
if mount | grep -q "/dev/$RAID_DEVICE"; then
  umount /dev/$RAID_DEVICE
fi

# Detener y eliminar el RAID
mdadm --stop /dev/$RAID_DEVICE
mdadm --remove /dev/$RAID_DEVICE

# Limpiar las configuraciones RAID de los discos
for DISK in $DISKS; do
  mdadm --zero-superblock /dev/$DISK
  wipefs -a /dev/$DISK
done
sudo chmod +x /var/www/html/limpiar_raid.sh


sudo nano /var/www/html/crear_raid.sh

#!/bin/bash

# Variables
RAID_TYPE=$1
RAID_NAME=$2
DISKS=$3

# Crear el RAID
mdadm --create --verbose /dev/$RAID_NAME --level=$RAID_TYPE --raid-devices=$(echo $DISKS | wc -w) $DISKS

# Crear el archivo de configuración para persistir el RAID después del reinicio
mdadm --detail --scan >> /etc/mdadm.conf

# Formatear el RAID
mkfs.ext4 /dev/$RAID_NAME

# Crear el punto de montaje y montar el RAID
mkdir -p /mnt/$RAID_NAME
mount /dev/$RAID_NAME /mnt/$RAID_NAME

# Salida
echo "RAID $RAID_NAME creado con éxito y montado en /mnt/$RAID_NAME"

sudo chmod +x /var/www/html/crear_raid.sh


sudo nano /var/www/html/limpiar_raid.sh


#!/bin/bash

# Variables
RAID_DEVICE=$1
DISKS=$2

# Desmontar el RAID si está montado
if mount | grep -q "/dev/$RAID_DEVICE"; then
  umount /dev/$RAID_DEVICE
  echo "Desmontado /dev/$RAID_DEVICE"
fi

# Detener y eliminar el RAID
mdadm --stop /dev/$RAID_DEVICE
mdadm --remove /dev/$RAID_DEVICE
echo "RAID $RAID_DEVICE detenido y eliminado"

# Limpiar las configuraciones RAID de los discos
for DISK in $DISKS; do
  mdadm --zero-superblock /dev/$DISK
  wipefs -a /dev/$DISK
  echo "Disco $DISK limpiado"
done

# Salida
echo "RAID $RAID_DEVICE y sus discos asociados han sido limpiados"

sudo chmod +x /var/www/html/limpiar_raid.sh

sudo nano /var/www/html/raid_manager.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>RAID Manager</title>
</head>
<body>
    <h1>RAID Manager</h1>

    <form method="POST">
        <h2>Crear RAID</h2>
        <label for="raid_type">Tipo de RAID:</label>
        <select name="raid_type" id="raid_type" required>
            <option value="0">RAID 0</option>
            <option value="1">RAID 1</option>
            <option value="5">RAID 5</option>
            <option value="6">RAID 6</option>
            <option value="10">RAID 10</option>
        </select><br><br>

        <label for="raid_name">Nombre del RAID (ej. md0):</label>
        <input type="text" name="raid_name" id="raid_name" required><br><br>

        <label for="disks">Discos (separados por espacio, ej. nvme0n2 nvme0n3):</label>
        <input type="text" name="disks" id="disks" required><br><br>

        <button type="submit" name="create_raid">Crear RAID</button>
    </form>

    <hr>

    <form method="POST">
        <h2>Limpiar RAID</h2>
        <label for="raid_device">RAID a limpiar (ej. md0):</label>
        <input type="text" name="raid_device" id="raid_device" required><br><br>

        <label for="disks">Discos asociados (separados por espacio, ej. nvme0n2 nvme0n3):</label>
        <input type="text" name="disks" id="disks" required><br><br>

        <button type="submit" name="clean_raid">Limpiar RAID</button>
    </form>

    <hr>

    <?php
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        if (isset($_POST['create_raid'])) {
            $raid_type = escapeshellarg($_POST['raid_type']);
            $raid_name = escapeshellarg($_POST['raid_name']);
            $disks = escapeshellarg($_POST['disks']);
            
            $command = "sudo /var/www/html/crear_raid.sh $raid_type $raid_name $disks";
            $output = shell_exec($command);
            echo "<h3>Resultado de la creación del RAID:</h3>";
            echo "<pre>$output</pre>";
        }

        if (isset($_POST['clean_raid'])) {
            $raid_device = escapeshellarg($_POST['raid_device']);
            $disks = escapeshellarg($_POST['disks']);
            
            $command = "sudo /var/www/html/limpiar_raid.sh $raid_device $disks";
            $output = shell_exec($command);
            echo "<h3>Resultado de la limpieza del RAID:</h3>";
            echo "<pre>$output</pre>";
        }
    }
    ?>
</body>
</html>

sudo visudo

apache ALL=(ALL) NOPASSWD: /var/www/html/crear_raid.sh
apache ALL=(ALL) NOPASSWD: /var/www/html/limpiar_raid.sh

ESC :wq


ls -l /var/www/html/raid_manager.php

sudo nano /etc/httpd/conf/httpd.conf

DirectoryIndex raid_manager.php index.php index.html

sudo systemctl restart httpd
sudo setenforce 0
sudo nano /etc/selinux/config



SELINUX=permissive

Como instalar Trunas

 

ir al sitio web oficial https://www.truenas.com/download-truenas-core/

Instalar en Vmware


espacio

selcionar primera opcion
install upgrate
espacio



yes
enter 
poner contraseña
boot via bios
esperar





ok
enter
reboot system






programación bash: Scrips

 mkdir scripts

cd scripts

touch ejemplo.sh 

(le damos permisos de ejecusion)

chmod a+x ejemplo.sh

vi ejemplo.sh

#!/bin/bash
echo "AVANZADAS 2024 205"

esc :qw!
./ejemplo.sh

which echo
vi ejemplo.sh

#!/bin/bash
X="AVANZADAS"
echo "CONTENIDO DE LA VARIABLE $X"

ESC :wq!

./ejemplo.sh

touch ejemplo01.sh
chmod a+x ejemplo01sh
vi ejemplo01sh
./ ejemplo0.1.sh

touch ejemplo02.sh 

chmod a+x ejemplo02.sh

vi ejemplo02.sh 

#!/bin/bash
#El read ses para mostrar un texto y adquiere el valor de la baeriable
read -p "Ingresa tu nombre" X
echo "Bienvenido $X"

:wq!

./ejemplo02.sh
para saltos de linea usa echo -e
para salto de linea, antes de la palabra usar /n

Otro

touch ejemplo03.sh 

chmod a+x ejemplo03.sh

vi ejemplo03.sh 
#!/bin/bash
echo "primer argumento $1"
echo "Segundo argumento $2"
echo "Tercerargumento $1"
echo "Todos argumento $@"
echo "Nombre del archivo $0" #El que e esta ejecutando 


:wq!

./ejemplo03.sh

./ejemplo03.sh argu1 argu 2 argu 3

array

touch ejemplo04.sh
chmod a+x ejemplo04.sh

vi ejemplo04.sh 
#!/bin/bash 
#uso de arrays
#X = ("valor1"  "valor2"  "valor3"  "valor4" )
echo ${X[1]} 
echo ${X[-1]} #Del ultimo al primer
echo ${X[@]}

esc :wq!
./ejemplo04.sh


touch ejemplo05.sh
chmod a+x ejemplo05.sh

vi ejemplo05.sh 
#!/bin/bash 
#CONDICIONAL IF 
read -p "ingresa tu nombe" X

if [[ -z ${X}]]
then
echo "Tienes que ingresar un nombre"
else
    echo "Tienes que ingresar un nombre "
fi

./ejemplo05.sh.




touch ejemplo06.sh
chmod a+x ejemplo06.sh

vi ejemplo06.sh  

Comparar clave

#!/bin/bash

Clave_usuario=

Nueva ventana

su -
(inserta password)
ls
su IvanDiaz

Clave secreta

#!/bin/bash
#definicir la clave de una variable
clave_correcta = "mi_clave_secreta"

#Pedir al usuario que ingrese una clave
read -sp "Ingresa tu clave " clave_ingresada

# Comparar la clave ingresada con la clave correcta 
if ["$clave_Ingresada"=="$clave_correcta" ]; then
    echo "Clave correcta"
else
    echo "Clave incorrecta"
fi
------------------------------------------------------------------------------------------
#!/bin/bash

# Declarar array con varios valores
X=("valor1" "valor2" "rosita" "valor4")

# Solicitar clave al usuario
echo -n "Ingresa la clave para comparar: "
read clave

# Verificar si la clave ingresada es igual a "rosita"
if [[ "$clave" == "rosita" ]]; then
    echo "La clave ingresada es correcta: rosita"
else
    echo "La clave ingresada no coincide con 'rosita'."
fi
:wq!

./ejemplo06.sh.

¿Con que comando verifico que el usuario esta en el sistema?




id "¿"reota los usuarios del sistema

#!/bin/bash

touch ejemplo07.sh
chmod a+x ejemplo07.sh
vi sudo  ejemplo07.sh


#!/bin/bash
echo "Escoja"
echo "1._Path
echo ""listar archivos del directorio actual "

echo -n "SALIR"

read X
case $X in
           1)
            echo "Tu estax enm el directrorio ${pwd}" 
;;
2)
echo "El total de archivos es $( ls/home/pruno/scripts | wc - L)"
;;

3) 
echo ""Adios"
exit
;;
*)

echo "error en la digitalacion"


añade tercera opcion para backup copiaodo de tro de scripts
::
esac

ESC :wq!

por ssh

sudo tar -czvf /tmp/backup_etc.tar.gz /etc


#!/bin/bash









touch ejemplo07.sh 
chmod a+x ejemplo07.sh
vi sudo  ejemplo07.sh


#!/bin/bash
echo "Escoja"
echo "1._Path
echo ""listar archivos del directorio actual "

echo -n "SALIR"

read X
case $X in
           1)
            echo "Tu estax enm el directrorio ${pwd}" 
;;
2)
echo "El total de archivos es $( ls/home/pruno/scripts | wc - L)"
;;

3) 
echo ""Adios"
exit
;;
4)
ecbo "Realizando basckup"
#(Tar -cxvt/Home/Pruno/Scripsts/Backi´_Etc.Hz /Ryc=

echo "error en la digitalacion"


añade tercera opcion para backup copiaodo de tro de scripts
::
esac

ESC :wq!

ls-1
ls


./ejemplo07.sh





lista los archivos dentro del programa


 
touch ejemplo08.sh 
chmod a+x ejemplo08.sh
vi sudo  ejemplo8.sh

#!/bin/bash
#for

for X in $ (ls * /.sh;): do
    ecjp "Scripts $X"
done

Otro

touch ejemplo09.sh 
chmod a+x ejemplo09.sh
vi sudo  ejemplo9.shEl nombre del servidor es ""




#!/bin/bash

#Ciclo while
read -p "Ingrese un dato" X
while [[ -x $X ]
do 
                echo "debe ingresar un valor"
                read -p "ingrese el dato " X
done
echo "El Valor de la variabe es "X"

Funciones

touch ejemplo09.sh 
chmod a+x ejemplo09.sh
vi sudo  ejemplo9.sh

#!/bin/bash
#quiero una funcuon de hacer un programa que me determine el nombre de la maquina
function 
function Imprime_nombre {
    server_name = $(hostname)
    echo "EL NOMBRE DEL SERVIDOR ES $server_name"
}

function memoria_disponible {
                memoria_disponible $(free -h)
}

determinar una funcion pRA CALCULAR LA CANTIDAD DE MEMORIA EN LA MAQUINA

free -h

#!/bin/bash

function imprime_nombre {
    server_name=$(hostname)
    echo "El nombre del servidor es $server_name"
}

function muestra_memoria {
    memoria_total=$(free -h | awk '/^Mem:/ {print $2}')
    memoria_libre=$(free -h | awk '/^Mem:/ {print $4}')
    echo "Memoria total: $memoria_total"
    echo "Memoria libre: $memoria_libre"
}

imprime_nombre
muestra_memori

sacar los usuarios del sistema

usar comando cut


cat /etc/passwdd | cut -d ':' -f 1
se puede usar como por ejemplo para sacar backuop cada semana a tal hora y se envie a una ubicacion especifica