June 2, 2026
Guía Definitiva de WSL 2 para Ciberseguridad y Desarrollo: Instalación y Comandos
Domina WSL 2 para ciberseguridad y desarrollo. Aprende a instalarlo, optimizar sus recursos y ejecutar comandos esenciales.
JPablo13
5 min read
¿Qué es WSL y cómo funciona?
Windows Subsystem for Linux (WSL) es una característica de Windows que permite tanto a desarrolladores y profesionales de TI ejecutar un entorno GNU/Linux directamente en Windows, sin la sobrecarga de una máquina virtual (VM) tradicional o una configuración de arranque dual (dual-boot).
WSL 1 vs. WSL 2: La Evolución
Existen dos versiones de WSL, pero WSL 2 es el estándar actual debido a su arquitectura radicalmente mejorada:
- WSL 1: Traducía las llamadas al sistema de Linux (syscalls) a llamadas al sistema de Windows en tiempo de ejecución. Tenía limitaciones de rendimiento y no soportaba el 100% de las herramientas de Linux.
- WSL 2: Utiliza una tecnología de máquina virtual ligera basada en un subconjunto de Hyper-V para ejecutar un núcleo (kernel) Linux real y completo modificado por Microsoft.
Ventajas clave de WSL 2:
- Rendimiento del sistema de archivos: Acceso ultra rápido a los archivos dentro del entorno Linux.
- Compatibilidad total con llamadas al sistema: Permite ejecutar aplicaciones complejas como Docker, bases de datos y herramientas de auditoría de seguridad sin restricciones.
- Consumo dinámico de recursos: A diferencia de una VM tradicional que reserva RAM y CPU fijas, WSL 2 libera memoria dinámicamente cuando Linux no la está usando.
- Integración fluida: Permite ejecutar herramientas de Windows desde Linux y viceversa, compartiendo el portapapeles y la red de forma nativa.
Guía de Instalación Paso a Paso
Hoy en día, el proceso de instalación se ha simplificado al máximo. Ya no es necesario activar características manualmente desde el panel de control.
Requisitos previos
- Windows 10 (versión 2004 o superior, Compilación 19041 o superior) o Windows 11.
- Virtualización habilitada en la BIOS/UEFI de tu computadora.
Proceso de instalación estándar:
- Abra PowerShell o el Símbolo del sistema (CMD) como Administrador.
- Ejecuta el siguiente comando simplificado (instalará Ubuntu por defecto y configurará WSL 2):
wsl --installwsl --install- Reinicie la computadora cuando el proceso termine.
- Al reiniciar, se abrirá una ventana de consola de Linux automáticamente para que configure el nombre de usuario y contraseña (esta contraseña es independiente de Windows y se usará para comandos
sudo).
Instalar distribuciones alternativas:
Si prefiere otra distribución (por ejemplo, para entornos de pruebas o auditoría), puede ver las disponibles e instalarlas directamente:
- Ver lista de distribuciones:
wsl --list --online - Instalar una específica usando el binario directo:
wsl --install -d <Nombre_Distribucion>
## (Ejemplo: wsl --install -d Kali-Linux o wsl --install -d Debian).wsl --install -d <Nombre_Distribucion>
## (Ejemplo: wsl --install -d Kali-Linux o wsl --install -d Debian).Parámetros de Uso y Comandos Esenciales
El manejo de WSL se realiza principalmente desde la terminal de Windows (PowerShell/CMD).
Exploración e Instalación
|Comando completo |Alias|Descripción |
|--------------------------|-----|------------------------------------------------------------------------------------|
|wsl --install | — |Instala WSL, activa virtualización y descarga Ubuntu por defecto. Requiere reinicio.|
|wsl --install -d <Distro> | — |Descarga e instala una distro específica desde el repositorio oficial de Microsoft. ||Comando completo |Alias|Descripción |
|--------------------------|-----|------------------------------------------------------------------------------------|
|wsl --install | — |Instala WSL, activa virtualización y descarga Ubuntu por defecto. Requiere reinicio.|
|wsl --install -d <Distro> | — |Descarga e instala una distro específica desde el repositorio oficial de Microsoft. |Exploración
|Comando completo |Alias |Descripción |
|---------------------|---------|---------------------------------------------------------------------------------------|
|wsl --list --online |wsl -l -o|Lista las distros oficiales disponibles en la nube para descargar. |
|wsl --list --verbose |wsl -l -v|Muestra distros instaladas localmente con estado (Running / Stopped) y versión de WSL. ||Comando completo |Alias |Descripción |
|---------------------|---------|---------------------------------------------------------------------------------------|
|wsl --list --online |wsl -l -o|Lista las distros oficiales disponibles en la nube para descargar. |
|wsl --list --verbose |wsl -l -v|Muestra distros instaladas localmente con estado (Running / Stopped) y versión de WSL. |Control de estado
|Comando completo |Alias |Descripción |
|--------------------------|---------------|-------------------------------------------------------------------------------------|
|wsl --shutdown | - |Apaga el motor WSL 2 y todas las distros activas. Libera RAM de inmediato. |
|wsl --terminate <Distro> |wsl -t <Distro>|Fuerza el cierre de una distro específica. Útil cuando una instancia queda bloqueada.|
|wsl --set-default <Distro>|wsl -s <Distro>|Define qué distro se lanza al ejecutar wsl sin argumentos. ||Comando completo |Alias |Descripción |
|--------------------------|---------------|-------------------------------------------------------------------------------------|
|wsl --shutdown | - |Apaga el motor WSL 2 y todas las distros activas. Libera RAM de inmediato. |
|wsl --terminate <Distro> |wsl -t <Distro>|Fuerza el cierre de una distro específica. Útil cuando una instancia queda bloqueada.|
|wsl --set-default <Distro>|wsl -s <Distro>|Define qué distro se lanza al ejecutar wsl sin argumentos. |Backup y portabilidad
|Comando completo |Alias|Descripción |
|-------------------------------------------|-----|-------------------------------------------------------------------------------------------------|
|wsl --export <Distro> <ruta.tar> | - |Exporta el sistema de archivos completo a un .tar. Ideal para snapshots antes de cambios mayores.|
|wsl --import <Nombre> <dest> <ruta.tar> | - |Importa un .tar como nueva distro independiente, definiendo dónde se almacena el .vhdx. |
|wsl --import-in-place <Nombre> <ruta.vhdx> | - |Registra un .vhdx existente como distro sin copiarlo. Útil para mover discos entre equipos. ||Comando completo |Alias|Descripción |
|-------------------------------------------|-----|-------------------------------------------------------------------------------------------------|
|wsl --export <Distro> <ruta.tar> | - |Exporta el sistema de archivos completo a un .tar. Ideal para snapshots antes de cambios mayores.|
|wsl --import <Nombre> <dest> <ruta.tar> | - |Importa un .tar como nueva distro independiente, definiendo dónde se almacena el .vhdx. |
|wsl --import-in-place <Nombre> <ruta.vhdx> | - |Registra un .vhdx existente como distro sin copiarlo. Útil para mover discos entre equipos. |Diagnóstico
|Comando completo |Alias|Descripción |
|------------------|-----|---------------------------------------------------------------------------------------------|
|wsl --status | - |Muestra versión del kernel, distro predeterminada y versión global de WSL. |
|wsl --update | - |Actualiza el kernel de WSL 2 a la última versión disponible desde Microsoft. |
|wsl --debug-shell | - |Abre una shell de diagnóstico a nivel de kernel. Útil para depurar fallos graves de arranque.||Comando completo |Alias|Descripción |
|------------------|-----|---------------------------------------------------------------------------------------------|
|wsl --status | - |Muestra versión del kernel, distro predeterminada y versión global de WSL. |
|wsl --update | - |Actualiza el kernel de WSL 2 a la última versión disponible desde Microsoft. |
|wsl --debug-shell | - |Abre una shell de diagnóstico a nivel de kernel. Útil para depurar fallos graves de arranque.|Destrucción
|Comando completo |Alias|Descripción |
|-------------------------|-----|---------------------------------------------------------------------------------------------------|
|wsl --unregister <Distro>| - |Elimina la distro y borra permanentemente todos sus archivos internos y el disco virtual asociado. ||Comando completo |Alias|Descripción |
|-------------------------|-----|---------------------------------------------------------------------------------------------------|
|wsl --unregister <Distro>| - |Elimina la distro y borra permanentemente todos sus archivos internos y el disco virtual asociado. |Ejecución cruzada
|Comando completo |Alias|Descripción |
|-----------------------------|-----|-------------------------------------------------------------------------------------------------------------|
|wsl | - |Inicia una sesión interactiva en la distro predeterminada. Punto de entrada más habitual. |
|wsl -d <Distro> | - |Inicia sesión interactiva en una distro específica sin cambiar la predeterminada. |
|wsl -d <Distro> -u <usuario> | - |Abre sesión en una distro concreta con un usuario específico. Útil para acceder directamente como root. |
|wsl <comando_linux> | - |Ejecuta un comando Linux desde PowerShell o CMD sin abrir sesión interactiva. Ej: wsl ls -la /etc |
|wsl -e <binario> [args] | - |Ejecuta un binario Linux explícitamente ignorando el shell de login. Más limpio para scripting desde Windows.||Comando completo |Alias|Descripción |
|-----------------------------|-----|-------------------------------------------------------------------------------------------------------------|
|wsl | - |Inicia una sesión interactiva en la distro predeterminada. Punto de entrada más habitual. |
|wsl -d <Distro> | - |Inicia sesión interactiva en una distro específica sin cambiar la predeterminada. |
|wsl -d <Distro> -u <usuario> | - |Abre sesión en una distro concreta con un usuario específico. Útil para acceder directamente como root. |
|wsl <comando_linux> | - |Ejecuta un comando Linux desde PowerShell o CMD sin abrir sesión interactiva. Ej: wsl ls -la /etc |
|wsl -e <binario> [args] | - |Ejecuta un binario Linux explícitamente ignorando el shell de login. Más limpio para scripting desde Windows.|Interoperabilidad (El "Superpoder" de WSL)
- Acceder a archivos de Windows desde Linux: Windows monta automáticamente los discos en la ruta
/mnt/. El discoC:está en/mnt/c/. - Acceder a archivos de Linux desde Windows: Abra el Explorador de archivos de Windows y escribe en la barra de direcciones
\\wsl$para ver los directorios de todas sus distribuciones. - Ejecutar comandos cruzados:
- Ejecutar una herramienta de Linux desde PowerShell:
wsl ls -la - Ejecutar un binario de Windows desde Linux:
notepad.exe archivo.txtoexplorer.exe .(abra el explorador de Windows en el directorio Linux actual).
💡 Tip de Rendimiento Crítico: Para obtener la máxima velocidad de lectura/escritura, es recomendado almacenar los proyectos dentro del sistema de archivos de Linux (ej. en
/home/usuario/proyecto) y no en los discos montados de Windows (/mnt/c/...). El cruce de sistemas de archivos penaliza el rendimiento.
Configuración Avanzada y Optimización
A. Limitación de recursos (.wslconfig)
Por defecto, WSL 2 puede llegar a consumir hasta el 50% (o más) de tu memoria RAM. Es posible limitar esto creando un archivo llamado .wslconfig en la raíz del perfil de usuario de Windows (C:\Usuarios\<Tu_Usuario>\.wslconfig).
Ejemplo de configuración optimizada:
[wsl2]
# --- RECURSOS DEL SISTEMA ---
memory=8GB
processors=6
# --- RED Y CONECTIVIDAD ---
localhostForwarding=true
# --- OPTIMIZACIÓN ---
autoMemoryReclaim=gradual
vmIdleTimeout=60000[wsl2]
# --- RECURSOS DEL SISTEMA ---
memory=8GB
processors=6
# --- RED Y CONECTIVIDAD ---
localhostForwarding=true
# --- OPTIMIZACIÓN ---
autoMemoryReclaim=gradual
vmIdleTimeout=60000Tras guardar el archivo, aplica los cambios ejecutando wsl --shutdown en PowerShell.
B. Personalización de la Terminal
Para una experiencia profesional, se recomienda usar Windows Terminal y potenciar el entorno interno de Linux con el siguiente stack:
- Zsh + Powerlevel10k: Reemplazar Bash por Zsh con el tema Powerlevel10k otorga un prompt visualmente informativo y telemetría en tiempo real.
- Editores ágiles: Integrar Neovim (potenciado con configuraciones modernas como NvChad) permite auditar código, editar archivos de configuración y ajustar scripts a velocidades extremas sin abandonar la terminal.
Utilidad de WSL en Diferentes Campos
WSL se convirtió en el puente definitivo entre la comodidad de la interfaz de usuario de Windows y la potencia de la línea de comandos de Linux.
Ciberseguridad y Pentesting / Bug Bounty
WSL 2 elimina la necesidad de usar máquinas virtuales pesadas para tareas de seguridad ofensiva:
- Arsenal de Reconocimiento y Automatización: Es el entorno perfecto para ejecutar utilidades rápidas (como
subfinder,httpx,nuclei,naabu,sqlmapykatana) aprovechando todo el hardware de la PC sin la degradación de una VM. - Integración de Proxies Híbrida: Al compartir
localhost, puedes mantener proxies interceptores de alto rendimiento (como Burp Suite o Caido) corriendo nativamente en la interfaz gráfica de Windows, y enrutar sin esfuerzo hacia ellos todo el tráfico de los escáneres que ejecutas en WSL. - Gestión Segura de Paquetes: Al desplegar herramientas basadas en Python en entornos como Kali Linux, es obligatorio utilizar
pipxen lugar depip. Esto crea entornos virtuales aislados por aplicación, evitando roturas críticas por conflictos de dependencias en el sistema (PEP 668).
Desarrollo de Software y Data Science
- Compatibilidad y Contenedores: Frameworks diseñados para Linux funcionan sin problemas. Además, Docker Desktop se integra directamente en el backend de WSL 2 con un consumo mínimo de recursos.
- Aceleración por GPU (CUDA): WSL 2 soporta nativamente el hardware de NVIDIA. Los científicos de datos pueden entrenar modelos de Inteligencia Artificial (TensorFlow/PyTorch) o ejecutar inferencias utilizando directamente la tarjeta gráfica del sistema host.
Conéctate conmigo
Support Me ☕
Si esto te ha resultado útil, te agradecería que me siguieras y apoyaras este contenido.