Este Dockerfile proporciona una imagen de Kali Linux en docker actualizada con una selección de herramientas útiles para propósitos de seguridad informática y desarrollo. Desde herramientas básicas de red hasta utilidades avanzadas de seguridad, esta imagen está diseñada para ser un entorno completo y funcional para profesionales de la ciberseguridad y entusiastas de la tecnología.
Requisitos previos:
Para utilizar este Dockerfile y construir la imagen resultante, necesitarás tener Docker instalado en tu sistema operativo. Además, se recomienda tener un conocimiento básico de Docker y cómo funciona la construcción de imágenes mediante Dockerfile.
Características destacadas:
- Herramientas comunes y útiles: La imagen incluye herramientas como curl, wget, vim, git, net-tools, y más para facilitar tareas comunes de administración y desarrollo.
- Lenguajes de programación: Python 3 con pip, Golang, Node.js y npm están preinstalados, proporcionando un entorno versátil para el desarrollo de aplicaciones y scripts.
- Paquete «Top 10» de Kali Linux y herramientas de seguridad: Se instala el metapaquete «Top 10» de Kali Linux, que contiene herramientas esenciales para pruebas de penetración y análisis de seguridad, como exploitdb, nikto, wpscan, uniscan, y más.
- Tor y proxychains: La imagen incluye Tor y proxychains para proporcionar anonimato y capacidad de redireccionamiento de tráfico a través de proxies.
- Configuración personalizada de ZSH: La shell ZSH se instala con una configuración personalizada utilizando Oh My Zsh, lo que proporciona una experiencia de línea de comandos mejorada.
- Configuración del servidor SSH: Se configura un servidor SSH para facilitar el acceso remoto al contenedor, con la capacidad de iniciar sesión como usuario root con la contraseña predeterminada ‘toor’.
- Puerto SSH expuesto: El puerto SSH (22) se expone para permitir la conexión remota al contenedor a través de SSH.
Con estos componentes, la imagen resultante ofrece un entorno robusto y completo para tareas de seguridad informática, desarrollo y administración de sistemas, todo dentro de un contenedor Docker fácilmente portable y reproducible.
FROM kalilinux/kali-rolling
# Set working directory to /root
WORKDIR /root
# Update, upgrade, and clean
RUN apt -y update && \
DEBIAN_FRONTEND=noninteractive apt -y dist-upgrade && \
apt -y autoremove && \
apt clean
RUN apt install ca-certificates -y
# Install common and useful tools
RUN apt -y install curl wget vim git net-tools whois netcat-traditional pciutils usbutils
# Install useful languages
RUN apt -y install python3-pip golang nodejs npm
# Install Kali Linux "Top 10" metapackage and a few cybersecurity useful tools
RUN DEBIAN_FRONTEND=noninteractive apt -y install kali-tools-top10 exploitdb man-db dirb nikto wpscan uniscan lsof apktool dex2jar ltrace strace binwalk
# Install Tor and proxychains, then configure proxychains with Tor
RUN apt -y install tor proxychains
COPY config/proxychains.conf /etc/proxychains.conf
# Install ZSH shell with custom settings and set it as default shell
RUN apt -y install zsh
RUN sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
COPY config/.zshrc .
# Configure SSH server
RUN apt -y install openssh-server
RUN mkdir -p /etc/ssh
RUN echo 'root:toor' | chpasswd
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# Expose SSH port
EXPOSE 22
# Start SSH server when container starts
#CMD ["/usr/sbin/sshd", "-D"]
# Set default shell
ENTRYPOINT ["/bin/zsh"]
Comandos para construir la imagen:
docker build -t kali-with-tools .
Con estos archivos, puedes construir la imagen y luego utilizar docker-compose para iniciar un contenedor basado en esa imagen, con el puerto SSH mapeado al puerto 2222 del host.
version: '3'
services:
kali:
image: kali-with-tools
ports:
- "2222:22" # Map host port 2222 to container SSH port 22
restart: unless-stopped
si deseas omitir este proceso, puedes utilizar la imagen ya construida:
version: '3'
services:
kali:
image: de0xys/kali:1
container_name: kali
ports:
- "2222:22" # Mapear el puerto 22 del contenedor al puerto 2222 del host
restart: unless-stopped
stdin_open: true # Abrir STDIN incluso si no está conectado
tty: true # Asignar una pseudo terminal (TTY) para interactuar con el contenedor
para ingresar al contenedor debemos ingresar los siguientes comandos
docker exec -ti "nombre de contenedor o id" /bin/zsh
ejemplo : docker exec -ti 9e43710b822b /bin/zsh
o como tiene el servicio ssh ejecutandose
ssh root@localhost -p 2222
