
Scripts para construir imágenes de Kali en la nube (fork de https://salsa.debian.org/cloud-team/debian-cloud-images)
Generador de imágenes cloud de Kali Linux mediante FAI (Fully Automatic Installation), bifurcado de Debian Cloud Images.
Estos son los mismos scripts de compilación que el equipo de Kali utiliza para generar las imágenes cloud oficiales de Kali Linux, disponibles en kali.org/get-kali/.
Para más información, consulte: kali.org/docs/cloud/ así como kali.org/docs/troubleshooting/common-cloud-setup/.
¡Compila tu Kali hoy mismo!
Recomendamos compilar en un host basado en Linux, que coincida con la arquitectura deseada.
Hay varias formas de prepararse para usar el script de compilación de kali-cloud. Puede:
build.sh - Compilar directamente desde su máquinabuild-in-container.sh - Compilar desde dentro de un contenedor (como Docker o Podman) Para que build.sh funcione, requerirá acceso de superusuario (por ejemplo, sudo o un contenedor con privilegios de root). Sin embargo, KVM no es necesario.
Primero instale git y asegúrese de que el repositorio esté clonado localmente:
$ sudo apt-get install --no-install-recommends \
git ca-certificates
$ git clone https://gitlab.com/kalilinux/build-scripts/kali-cloud.git
$ cd ./kali-cloud/
Para compilar directamente en su host, con build.sh, instale las dependencias de compilación:
$ sudo apt-get install --no-install-recommends \
python3-minimal libpython3-stdlib python3-yaml python3-libcloud python3-marshmallow python3-httpx python3-pytest \
fai-server fai-setup-storage \
sudo \
qemu-utils qemu-user-binfmt \
fdisk \
udev \
dosfstools \
apt-utils \
debsums
NOTA: Dependiendo de la antigüedad de la versión del SO, es posible que necesite usar qemu-user-static (heredado) en lugar de qemu-user-binfmt (moderno/actual/al día).
NOTA: qemu-user-static/qemu-user-binfmt solo es necesario si está compilando para una arquitectura cruzada (por ejemplo, host amd64, compilando una imagen arm64).
Ahora puede usar ./build.sh, que compilará una imagen cloud de Kali directamente en su máquina.
Si NO está usando Kali como SO base, necesitará instalar el kali-archive-keyring de Kali para que fai pueda obtener los paquetes de Kali.
$ sudo apt-get install --no-install-recommends \
wget ca-certificates
$ wget https://http.kali.org/pool/main/k/kali-archive-keyring/kali-archive-keyring_20YY.X_all.deb
$ sudo apt-get install ./kali-archive-keyring_*_all.deb
NOTA: Reemplace 20YY.X con los valores mostrados aquí, en kali-archive-keyring.
Ahora puede seguir Compilar desde el host (Kali) para instalar las dependencias de compilación.
Omitiremos la configuración de cualquier software de contenedores.
Si prefiere compilar desde dentro de un contenedor, necesitará instalar y configurar docker o podman en su máquina.
docker requiere que el usuario se añada al grupo Docker, o usar la cuenta root (por ejemplo, $ sudo ./build-in-container.sh).podman ha sido probado con rootful (por ejemplo, $ sudo ./build-in-container.sh). Si se ejecuta rootless, build-in-container.sh intentará elevarse a sí mismo mediante sudo, o recurrirá a reconfigurar la podman machine como rootful, consulte Limitaciones conocidas.build-in-container.sh es un envoltorio sobre build.sh. Detecta qué motor de contenedores compatible con OCI usar, se encarga de crear la imagen del contenedor si falta, y luego inicia el contenedor para realizar la compilación desde dentro.
Tiene tres formas de proporcionar la imagen del contenedor:
$ # Option #1 - Automated build (recommended)
$ ./build-in-container.sh
$ ./build-in-container.sh --force # If you need to rebuild the image from scratch
$
$
$
$ # Option #2 - Manual build
$ docker build -t kali-build/kali-cloud .
$ # ...OR...
$ podman build -t kali-build/kali-cloud .
$
$
$
$ # Option #3 - Use the pre-generated
$ docker pull registry.gitlab.com/kalilinux/build-scripts/kali-cloud:latest
$ docker tag registry.gitlab.com/kalilinux/build-scripts/kali-cloud:latest kali-build/kali-cloud
$ # ...OR...
$ podman pull registry.gitlab.com/kalilinux/build-scripts/kali-cloud:latest
$ podman tag registry.gitlab.com/kalilinux/build-scripts/kali-cloud:latest kali-build/kali-cloud
$
$ # ...then point the build at it:
$ ./build-in-container.sh # Locally built (automated or manual)
$ IMAGE=registry.gitlab.com/kalilinux/build-scripts/kali-cloud:latest ./build-in-container.sh # Pre-generated
Si tiene tanto docker como podman instalados, build-in-container.sh usará podman por defecto. Para cambiarlo, anteponga CONTAINER=docker antes de ./build-in-container.sh:
$ CONTAINER=docker ./build-in-container.sh [...]
Ahora puede usar ./build-in-container.sh (en lugar de ./build.sh) para compilar una imagen.
$ ./build.sh --help
Usage: build.sh [OPTIONS]
Build a Kali Linux Cloud image.
Build options:
-a, --arch ARCH Build an image for this architecture (default: amd64)
Supported: amd64 arm64
-b, --branch BRANCH Kali branch used to build the image (default: kali-rolling)
Supported: kali-rolling kali-dev kali-last-snapshot
-k, --keep Keep intermediary build artifacts
-m, --mirror URL Mirror used to build the image (default: http://http.kali.org/kali)
-o, --output DIR Output directory (default: /home/kali/kali-cloud/output)
-v, --variant VARIANT Cloud platform/target image to build (default: genericcloud)
Supported: genericcloud azure ec2 gce generic nocloud
-x, --version VERSION What to name the image release as (default: rolling)
-z, --zip Compress image after the build
-h, --help Show this help and exit