Showing posts with label Tiling Window Manager. Show all posts
Showing posts with label Tiling Window Manager. Show all posts

Guía Definitiva para Construir tu Entorno Profesional de Trabajo en Linux con Parrot OS y Bspwm

La luz parpadeante del monitor era la única compañía mientras los logs del servidor escupían una anomalía. Una que no debería estar ahí. En este submundo digital, la preparación es la clave. No puedes permitirte que tu herramienta de trabajo sea una fuente de distracción o, peor aún, una vulnerabilidad. Hoy no vamos a hablar de cazar brechas; vamos a construir el nido, el santuario desde donde operaremos. Vamos a desmantelar y reconstruir tu entorno de Linux para que sea tan afilado como tu ingenio. Sabes la vieja máxima: un hacker no nace, se hace. Y se hace en las trincheras, pero también con las herramientas adecuadas, configuradas de forma óptima. Olvida esos entornos genéricos que vienen con bloatware y configuraciones por defecto. Vamos a crear algo ligero, personalizable, y sobre todo, *eficiente*. Hablaremos de Parrot OS, un camaleón para el pentester, y Bspwm, un gestor de ventanas que te dará el control que mereces.

Tabla de Contenidos

Introducción y Filosofía del Entorno Personalizado

La red es un campo de batalla, y tu estación de trabajo es tu cuartel general. Un cuartel desordenado, lento y mal equipado te pone en desventaja desde el primer momento. Parrot OS no es solo un conjunto de herramientas; es un lienzo. Bspwm, por otro lado, es el pincel. Un gestor de ventanas basado en la disposición de tejas (tiling window manager), te obliga a pensar de forma lógica sobre el espacio en tu pantalla. No hay superposición de ventanas por defecto, todo está dispuesto de forma ordenada, permitiendo un acceso rápido y una visión general clara de tus operaciones.

Esto no es solo estética. Es pura eficiencia. Menos clics, más contexto, más velocidad. Vamos a construir un entorno que se adapte a ti, no al revés. Cada comando, cada atajo, cada elemento visual debe tener un propósito.

Primeros Pasos: Instalación y Configuración Base de Parrot OS

Empezamos con la base: Parrot OS. Si aún no lo tienes, descárgalo directamente de la web. Utilizaremos VMware para la virtualización, una herramienta fiable para crear laboratorios seguros. Importa la ISO y procede con la instalación.

  1. Descarga Parrot OS: Asegúrate de obtener la ISO más reciente desde el sitio oficial.
  2. Importación en VMware: Crea una nueva máquina virtual, selecciona la ISO como disco de arranque y sigue las instrucciones. Recomiendo asignar al menos 4GB de RAM y 2-4 vCPUs si tu hardware lo permite.
  3. Instalación de la Máquina Virtual: Durante la instalación, configura tu particionado. Para un entorno de trabajo, un esquema simple con una partición raíz (`/`) y una de intercambio (`swap`) suele ser suficiente.
  4. Arranque Inicial: Una vez instalado, arranca Parrot OS.
  5. Actualización del Sistema: Este es un paso CRUCIAL. Ejecuta `sudo parrot-upgrade` para asegurarte de tener el sistema al día. Esto no solo trae las últimas actualizaciones de seguridad, sino también mejoras en las herramientas preinstaladas.
  6. Optimización de Recursos: En la configuración de VMware, ajusta los procesadores y la memoria asignados a tu VM. Un entorno de pentesting intensivo puede consumir muchos recursos.

En este punto, tienes una instalación limpia de Parrot OS. Es funcional, pero aún le falta la chispa de un entorno profesional. Es hora de inyectarle algo de magia.

Transición a Bspwm: El Arte del Window Management

Ahora viene la parte que separa a los aficionados de los profesionales: Bspwm (Binary Window System Manager). Es un gestor de ventanas que funciona enviando comandos a `sxhkd`, un demonio que procesa atajos de teclado. Su filosofía es simple: un programa para la gestión de ventanas, otro para la entrada de teclado.

  1. Instalación de Bspwm y SXHKD:
    sudo apt update
    sudo apt install bspwm sxhkd -y
  2. Compilación de Bspwm y SXHKD (Recomendado para la última versión): A veces, las versiones de los repositorios pueden quedarse cortas. Compilar desde fuente te asegura la vanguardia.
    # Descarga el código fuente de bspwm y sxhkd
    git clone https://github.com/baskerville/bspwm.git
    git clone https://github.com/baskerville/sxhkd.git
    
    # Compila e instala bspwm
    cd bspwm
    make
    sudo make install
    cd ..
    
    # Compila e instala sxhkd
    cd sxhkd
    make
    sudo make install
    cd ..

    Nota: Asegúrate de tener las dependencias de compilación instaladas (`build-essential`, `automake`, `pkg-config`, etc.).

  3. Definición del Archivo .xinitrc: Este archivo le dice a Xorg cómo iniciar tu entorno de ventanas. Copia el siguiente contenido a `~/.xinitrc` y hazlo ejecutable (`chmod +x ~/.xinitrc`).
    #!/bin/sh
    user_params=$(echo "$@")
    if [ -z "$user_params" ]; then
      params="root"
    else
      params="$user_params"
    fi
    exec bspwm -a "pointer=250x100+10+10,resize+250x100+10+10,move+250x100+10+10" -m 0.75 -d $params -c ~/.config/bspwm/bspwmrc

Con esto, ya tienes Bspwm instalado, pero aún no está configurado. El archivo `.xinitrc` es esencial para lanzar Bspwm correctamente al iniciar sesión.

Personalización Profunda: Rofi, Dunst, Feh y Compton

Un entorno vacío no sirve de mucho. Necesitamos las herramientas que lo harán funcional y estético.

  1. Instalación de Feh y Compton:
    sudo apt install feh compton -y
    • feh: Un visor de imágenes versátil, ideal para establecer fondos de pantalla.
    • compton: Un compositor que añade efectos de transparencia y sombreado a tus ventanas, mejorando drásticamente la estética.
  2. Configuración del Archivo bspwmrc: Crea el directorio `~/.config/bspwm` y dentro, el archivo `bspwmrc`. Este es el corazón de la configuración de Bspwm. Un ejemplo minimalista para empezar:
    #!/bin/sh
    
    # Configuración de borde y espaciado
    bspc config border_width         2
    bspc config window_gap          12
    
    # Definición de colores
    bspc config normal_border_color  "#444444"
    bspc config active_border_color  "#888888"
    bspc config focused_border_color "#ff0000"
    
    # Definición del puntero para redimensionar
    bspc config pointer_modifier    "Alt"
    bspc config pointer_action      "move"
    
    # Configuración de espacios de trabajo (desktops)
    bspc monitor -d I II III IV V VI VII VIII IX X
    
    # Lanzar aplicaciones al inicio
    # bspc rule -a Gpick desktop='^1' state=floating follow=on
    # bspc rule -a Gpick state=fullscreen desktop='^1'
    
    # feh &
    # compton --config ~/.config/compton/compton.conf &
    # polybar example &
  3. Definición del `pointer_modifier` y `pointer_action` dentro de `bspwmrc`: Estos definen cómo interactúas con las ventanas usando el ratón (ej: Alt + clic izquierdo para mover).
  4. Configuración del archivo `sxhkdrc`: Este archivo define tus atajos de teclado. Crea `~/.config/sxhkd/sxhkdrc`. Aquí es donde mapearás acciones a combinaciones de teclas.
    # Bspwm
    # Terminal
    super + Return
        termite
    
    # Cerrar ventana
    super + shift + q
        bspc node -c
    
    # Navegar entre ventanas
    super + {h,j,k,l}
        bspc node -f {west,south,north,east}
    
    # Mover ventanas entre espacios de trabajo
    super + shift + {1-9,0}
        bspc node -s '^{1-9,10}'
    
    # Instalar Rofi
    sudo apt install rofi -y
    
  5. Instalación de Rofi: Una herramienta versátil para lanzar aplicaciones, menús, scripts, etc.
    sudo apt install rofi -y

    Configura `rofi` para que se lance con un atajo de teclado en tu `sxhkdrc`, por ejemplo:

    # Lanzar Rofi
    super + d
        rofi -show drun
  6. Instalación de Dunst: Un demonio de notificaciones ligero y configurable.
    sudo apt install dunst -y

    Configura Dunst en `~/.config/dunst/dunstrc` y añádelo para que se inicie con Bspwm en tu `bspwmrc`.

  7. Fondo de Pantalla con Feh: Añade `feh --bg-scale /ruta/a/tu/fondo.jpg &` a tu `bspwmrc`.
  8. Transparencia con Compton: Añade `compton --config ~/.config/compton/compton.conf &` a tu `bspwmrc`. Crea el archivo `~/.config/compton/compton.conf` con configuraciones como:
    # Transparencia
    opacity-rule = [
        "90:class_g = 'URxvt'",
        "95:class_g = 'Termite'",
        "85:class_g = 'Rofi'",
        "90:class_g = 'dunst'"
    ];
    
    # Sombreado 
    shadow = true;
    shadow-radius = 7;
    shadow-offset-x = -7;
    shadow-offset-y = -7;
    shadow-opacity = 0.7;
    
    # Otros efectos
    fading = true;
    fade-in-step = 0.03;
    fade-out-step = 0.03;
    
    # Ignorar ventanas específicas si es necesario
    # no-shadow = ["polybar", "dunst"];

Polybar: El Cerebro de tu Escritorio

Polybar es una barra de estado de alto rendimiento que te dará toda la información que necesitas al alcance de la mano: carga de CPU, uso de memoria, estado de red, fecha, hora, control de volumen, y mucho más.

  1. Instalación de Polybar:
    sudo apt install polybar -y
  2. Instalación de Requisitos para Polybar: Para algunas funcionalidades avanzadas y temas, necesitarás herramientas adicionales.
    sudo apt install libpulse0 libpulse-dev libgtk-3-dev libjson-glib-dev python3-dev python3-pip -y
  3. Descarga de Temas para Polybar: Puedes encontrar temas pre-diseñados en GitHub o crear los tuyos. Copia la configuración (normalmente un archivo `config` y una carpeta `modules`) a `~/.config/polybar/`.
  4. Configuración del `config.ini` de Polybar: Adapta las opciones de pantalla, colores, fuentes y módulos a tus necesidades. Aquí defines qué mostrarás y cómo.
    ; Ejemplo de configuración básica en ~/.config/polybar/config.ini
    [colors]
    background = #000000
    foreground = #ffffff
    primary = #ff0000
    
    [bar/main]
    width = 100%
    height = 24
    bottom = true
    background = ${colors.background}
    foreground = ${colors.foreground}
    border-top-size = 1
    border-color-top = ${colors.primary}
    padding-left = 1
    padding-right = 1
    
    modules-left = bspwm i3
    modules-center = date
    modules-right = pulseaudio memory cpu eth hackthebox
    
    cursor-click = pointer
    cursor-long-press = ew-resize
    
    [module/bspwm]
    type = internal/bspwm
    format-icons-occupied = 
    format-icons-urgent = 
    format-icons-empty = 
    format-icons-sticky = 
    label-focused = %icon%
    label-focused-background = #5f8700
    label-occupied = %icon%
    label-active = %icon%
    label-urgent = %icon%
    label-empty = %icon%
    
    [module/date]
    type = internal/date
    interval = 1
    date = %Y-%m-%d
    time = %H:%M:%S
    format-prefix = " "
    format-prefix-foreground = ${colors.primary}
    
    [module/pulseaudio]
    type = internal/pulseaudio
    format-volume-prefix = " "
    format-volume-underline = #88a0d0
    label = %percentage%%
    
    [module/memory]
    type = internal/memory
    interval = 2
    format-prefix = " "
    format-memory-unit = ""
    format-unit = ""
    label = %percentage_used:2%%
    
    [module/cpu]
    type = internal/cpu
    interval = 2
    format-prefix = " "
    format-unit = "%"
    label = %percentage:2%%
    
    [module/eth]
    type = internal/network
    interface = eth0
    interval = 3.0
    format-connected-prefix = "E: "
    format-connected-underline = #ff0000
    label-connected = %downspeed:10%
    format-disconnected =
    
    [module/hackthebox]
    type = custom/script
    exec = echo "HTB"
    interval = 3600
    click-left = ~/.config/polybar/scripts/hackthebox.sh
    
  5. Scripts Personalizados para Polybar: Las utilidades como `ethernet_status.sh`, `hackthebox.sh`, y `s4vitar.sh` suelen ser scripts personalizados que interactúan con servicios o muestran información específica. Asegúrate de tenerlos y colócalos en la carpeta de scripts de Polybar (`~/.config/polybar/scripts/`). Personaliza el `s4vitar.sh` a tu gusto.
  6. Fuentes Nerd Fonts: Para que los iconos y símbolos en Polybar se muestren correctamente, necesitas fuentes compatibles con Nerd Fonts.
    # Descargar e instalar
    wget https://github.com/ryanoasis/nerd-fonts/releases/download/v3.0.0/Hack.zip
    unzip Hack.zip -d ~/.fonts/HackNerdFont
    fc-cache -fv

    Asegúrate de seleccionar una de estas fuentes en la configuración de Polybar.

Fuentes, Shell Avanzado y Utilidades Esenciales

El shell es tu interfaz directa con el sistema operativo. Aquí es donde la velocidad y la inteligencia entran en juego.

  1. Instalación de Powerlevel10k: Un prompt de Zsh muy rápido y personalizable.
    # Clona el repositorio
    git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/.config/zsh/powerlevel10k
    
    # Configura Zsh para usarlo
    echo "source ~/.config/zsh/powerlevel10k/powerlevel10k.zsh-theme" >> ~/.zshrc
    
    # Ejecuta la configuración interactiva
    p10k configure

    Sigue las instrucciones interactivas. Te preguntará sobre la fuente, los iconos, y otras opciones. Asegúrate de seleccionar una fuente Nerd Font.

  2. Configuración para Root: Copia la configuración de `~/.zshrc` a `~/.zshrc.root` (o `~/.zshrc` si eres root) y usa enlaces simbólicos si es necesario.
    sudo ln -sf ~/.config/zsh/powerlevel10k/powerlevel10k.zsh-theme /root/.config/zsh/powerlevel10k
    sudo ln -sf ~/.zshrc /root/.zshrc
  3. Compinit para evitar Warnings: Asegúrate de que tu `~/.zshrc` incluya la inicialización de `compinit` correctamente.
    # Añade esto al inicio de tu ~/.zshrc
    autoload -U compinit && compinit -C -d ~/.zcompdump # -C para caché, -d para directorio
  4. Instalación de Scrub (para rmk): Una herramienta para borrar archivos de forma segura.
    sudo apt install scrub -y
  5. Instalación de LSD: Una alternativa colorida y mejorada al comando `ls`.
    sudo apt install lsd -y
  6. Instalación de Bat: Una alternativa a `cat` con resaltado de sintaxis y numeración de líneas.
    sudo apt install bat -y
  7. Nuevos Aliases en `.zshrc`:
    alias ls='lsd'
    alias cat='bat'
    alias rmk='scrub -p 100 -s' # Borrado seguro
    alias update='sudo parrot-upgrade'
  8. Plugins para Zsh:
    • zsh-syntax-highlighting: Resalta la sintaxis de los comandos que escribes.
    • zsh-autosuggestions: Sugiere comandos basados en tu historial.
    • zsh-sudo: Añade un `sudo` rápido con `Ctrl+U`.

    Instálalos usando tu gestor de plugins de Zsh preferido (como `zplug` o `antibody`), o clona los repositorios en `~/.oh-my-zsh/custom/plugins/` si usas OhMyZsh y añadelos a tu `plugins=(...)` en `.zshrc`.

  9. Instalación de FZF: Una herramienta de búsqueda de línea de comandos interactiva.
    sudo apt install fzf -y

    Integra `fzf` con tus comandos comunes (`Ctrl+T` para archivos, `Ctrl+R` para historial).

Seguridad y Bloqueo: Manteniendo tu Fortaleza

Un entorno sin bloqueo es una invitación abierta. Necesitas una forma rápida y segura de proteger tu sesión.

  1. Glitchlock: Bloqueo de Pantalla H4x0r: Una herramienta divertida para un bloqueo de pantalla temático.
    # Compila Glitchlock
    git clone https://github.com/H4ck3rJ4ck/glitchlock.git
    cd glitchlock
    make
    sudo make install
    cd ..
  2. Atajo para Bloqueo de Pantalla: Añade a tu `sxhkdrc`:
    # Bloquear pantalla
    super + shift + l
        glitchlock
  3. Fondo y Personalización del Bloqueo: Configura Glitchlock para usar tu fondo de pantalla y personalizar el icono.
  4. Prueba de Conexión VPN HackTheBox: Asegúrate de que tu script de Polybar `hackthebox.sh` funciona y te permite conectarte a la VPN.
    # Ejemplo de script hackthebox.sh
    #!/bin/bash
    if pgrep -x "htb-vpn" > /dev/null
    then
        sudo killall htb-vpn
    else
        htb-vpn &
    fi
  5. Migración a Java 8: Para ciertos entornos de pentesting (especialmente con herramientas Java), tener una versión específica como Java 8 es crucial. Puedes usar `update-alternatives`.
    sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-8-openjdk-amd64/bin/java 1
         sudo update-alternatives --install /usr/bin/javac java /usr/lib/jvm/java-8-openjdk-amd64/bin/javac 1

Veredicto del Ingeniero: ¿Vale la pena este nivel de personalización?

Absolutamente. La inversión inicial de tiempo en configurar un entorno como este se paga con creces en eficiencia, confort y control. Un entorno personalizado no es un lujo; es una necesidad para cualquier profesional serio. Te permite enfocarte en la tarea de seguridad, no a luchar contra tu propia estación de trabajo. Bspwm y Polybar juntos crean un flujo de trabajo sin interrupciones, donde cada acción es rápida y cada información es visible. Si buscas ser más rápido, más eficiente y tener un control granular sobre tu espacio de trabajo digital, invertir en esta configuración es el siguiente paso lógico en tu carrera.

Arsenal del Operador/Analista

  • Sistema Operativo: Parrot OS (o Kali Linux, si prefieres)
  • Gestor de Ventanas: Bspwm
  • Barra de Estado: Polybar
  • Lanzador de Aplicaciones: Rofi
  • Notificaciones: Dunst
  • Visor de Imágenes/Fondos: Feh
  • Compositor (Transparencia/Sombras): Compton
  • Shell: Zsh con Powerlevel10k y plugins (zsh-syntax-highlighting, zsh-autosuggestions, zsh-sudo)
  • Utilidades de Terminal: LSD, Bat, FZF, Scrub, Glitchlock
  • Virtualización: VMware Workstation/Player
  • Libros Recomendados:
    • The Web Application Hacker's Handbook (para el pentesting web)
    • Linux Command Line and Shell Scripting Bible (para dominar el shell)
    • Mastering Bspwm (buscar guías y configuraciones avanzadas online)
  • Certificaciones Relevantes: PenseB, OSCP (para validar habilidades en pentesting)

Preguntas Frecuentes

¿Es Bspwm adecuado para principiantes?

Bspwm tiene una curva de aprendizaje. Requiere una comprensión básica de la gestión de ventanas y la edición de archivos de configuración. Sin embargo, la recompensa en eficiencia lo hace valer la pena. Empieza con configuraciones sencillas y ve añadiendo complejidad.

¿Por qué no usar entornos de escritorio completos como GNOME o KDE?

Entornos de escritorio completos son pesados y vienen con muchas funcionalidades que un pentester o analista de seguridad rara vez usa. Bspwm, siendo un tiling window manager, es minimalista, rápido y altamente personalizable, permitiéndote optimizar cada recurso para las tareas de seguridad.

¿Necesito compilarlos todos desde fuente?

No es estrictamente necesario. Las versiones de los repositorios de Parrot OS pueden ser suficientes para empezar. Sin embargo, compilar desde la fuente te da acceso a las últimas características y a una mejor optimización si se hace correctamente.

¿Cómo gestiono múltiples proyectos o contextos en este entorno?

La clave está en la organización de tus espacios de trabajo (desktops) en Bspwm y en la creación de scripts para lanzar conjuntos de herramientas o entornos específicos. Por ejemplo, un espacio de trabajo para análisis web, otro para explotación, otro para análisis forense.

¿Qué herramientas específicas de Parrot OS recomiendas integrar?

Además de las que hemos configurado indirectamente (como las de red y sistema), Parrot viene con muchas herramientas preinstaladas. Puedes crear atajos o scripts para acceder rápidamente a herramientas como Metasploit, Wireshark, Burp Suite (si lo instalas), y las utilidades de hacking ético que prefieras.

El Contrato: Tu Campo de Pruebas Personal

Has visto cómo desmantelar y reconstruir un entorno de trabajo desde los cimientos. Ahora, el contrato es tuyo. Implementa esta configuración. Tómate el tiempo, sigue los pasos, y **personaliza cada aspecto a tu flujo de trabajo**. No copies ciegamente; entiende cada línea de configuración. El verdadero poder no reside en la herramienta, sino en la mano que la empuña y la mente que la dirige.

Tu desafío: dedica una hora a probar diferentes configuraciones de `compton.conf` para ver cómo afectan la transparencia y el rendimiento. Documenta los cambios y los resultados. ¿Puedes experimentar alguna degradación de FPS? ¿Qué ajustes te parecen más cómodos visualmente sin sacrificar la velocidad? Comparte tus hallazgos.

Ahora es tu turno. ¿Estás de acuerdo con mi análisis o crees que hay un enfoque más eficiente? Demuéstralo con tu configuración o ideas en los comentarios.