
# Scripts para criar imagens Kali na nuvem (fork de https://salsa.debian.org/cloud-team/debian-cloud-images)
Construtor de imagens cloud do Kali Linux via FAI (Fully Automatic Installation), forked de Debian Cloud Images.
Estes são os mesmos build-scripts que a equipe do Kali usa para gerar as imagens cloud oficiais do Kali Linux, disponíveis em kali.org/get-kali/.
Para mais informações, consulte: kali.org/docs/cloud/ e também kali.org/docs/troubleshooting/common-cloud-setup/.
Construa o seu Kali, hoje!
Recomendamos construir em um host baseado em Linux, que corresponda à arquitetura desejada.
Existem várias maneiras de se preparar para usar o build-script do kali-cloud. Você pode:
build.sh - Construir diretamente na sua máquinabuild-in-container.sh - Construir de dentro de um container (como Docker ou Podman) Para o build.sh funcionar, ele exigirá acesso de superusuário (por exemplo, sudo ou um container rootful). No entanto, KVM não é necessário.
Primeiro instale o git e certifique-se de que o repositório esteja 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 construir diretamente no seu host, com build.sh, instale as dependências de build:
$ 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
NOTE: Dependendo da idade da versão do SO, você pode precisar usar qemu-user-static (legado) em vez de qemu-user-binfmt (moderno/atual/atualizado).
NOTE: qemu-user-static/qemu-user-binfmt só é necessário se você estiver construindo para uma arquitetura cruzada (por exemplo, host amd64, construindo uma imagem arm64).
Agora você pode usar ./build.sh, que construirá uma imagem cloud do Kali diretamente na sua máquina.
Se você NÃO estiver usando Kali como SO base, precisará instalar o kali-archive-keyring do Kali para que o fai possa buscar os pacotes do 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
NOTE: Substitua 20YY.X pelos valores mostrados aqui, em kali-archive-keyring.
Agora você pode seguir Construir a partir do Host (Kali) para instalar as dependências de build.
Vamos pular a configuração de qualquer software de container.
Se você preferir construir de dentro de um container, precisará instalar e configurar docker ou podman na sua máquina.
docker exige que o usuário seja adicionado ao grupo Docker, ou o uso da conta root (por exemplo, $ sudo ./build-in-container.sh).podman foi testado com rootful (por exemplo, $ sudo ./build-in-container.sh). Se executado rootless, build-in-container.sh tentará se elevar via sudo, ou recorrerá a reconfigurar a podman machine como rootful, veja Limitações Conhecidas.build-in-container.sh é um wrapper em cima do build.sh. Ele detecta qual engine de container compatível com OCI usar, cuida de criar a imagem do container se estiver faltando, e então inicia o container para realizar o build de dentro dele.
Você tem três maneiras de fornecer a imagem do container:
$ # 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
Se você tiver tanto docker quanto podman instalados, build-in-container.sh usará podman por padrão. Para mudar isso, prefixe CONTAINER=docker antes de ./build-in-container.sh:
$ CONTAINER=docker ./build-in-container.sh [...]
Agora você pode usar ./build-in-container.sh (em vez de ./build.sh), para construir uma imagem.
$ ./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
Cloud options:
-H, --hostname HOSTNAME Set system host name (default: kali)
-P, --packages PKGS Install extra packages (comma/space separated list)
-s, --size SIZE Size of the disk image in GB (default: ...depends on --variant)
-T, --toolset TOOLSET The selection of tools to include in the image (default: default)
Supported: default minimal