
# Skripte zum Erstellen von Kali-Cloud-Images (Fork von https://salsa.debian.org/cloud-team/debian-cloud-images)
Kali Linux Cloud-Image-Builder via FAI (Fully Automatic Installation), geforkt von Debian Cloud Images.
Dies sind dieselben Build-Skripte, die das Kali-Team verwendet, um die offiziellen Kali Linux Cloud-Images zu erzeugen, die auf kali.org/get-kali/ zu finden sind.
Weitere Informationen finden Sie unter: kali.org/docs/cloud/ sowie kali.org/docs/troubleshooting/common-cloud-setup/.
Bauen Sie Ihr Kali, noch heute!
Wir empfehlen, auf einem Linux-basierten Host zu bauen, der der gewünschten Architektur entspricht.
Es gibt verschiedene Möglichkeiten, das kali-cloud Build-Skript einsatzbereit zu machen. Sie können entweder:
build.sh - Direkt von Ihrem Rechner aus bauenbuild-in-container.sh - Aus einem Container heraus bauen (wie Docker oder Podman) Damit build.sh funktioniert, ist Superuser-Zugriff erforderlich (z. B. sudo oder ein rootful Container). KVM ist jedoch nicht erforderlich.
Installieren Sie zunächst git und stellen Sie sicher, dass das Repository lokal geklont ist:
$ sudo apt-get install --no-install-recommends \
git ca-certificates
$ git clone https://gitlab.com/kalilinux/build-scripts/kali-cloud.git
$ cd ./kali-cloud/
Um direkt auf Ihrem Host mit build.sh zu bauen, installieren Sie die Build-Abhängigkeiten:
$ 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
HINWEIS: Je nach Alter der OS-Version müssen Sie möglicherweise qemu-user-static (Legacy) anstelle von qemu-user-binfmt (modern/aktuell/auf dem neuesten Stand) verwenden.
HINWEIS: qemu-user-static/qemu-user-binfmt ist nur erforderlich, wenn Sie architekturübergreifend bauen (z. B. amd64-Host, der ein arm64-Image baut).
Jetzt können Sie ./build.sh verwenden, das ein Kali Cloud-Image direkt auf Ihrem Rechner baut.
Wenn Sie NICHT Kali als Basis-OS verwenden, müssen Sie Kalis kali-archive-keyring installieren, damit fai Kalis Pakete abrufen kann.
$ 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
HINWEIS: Ersetzen Sie 20YY.X durch die Werte, die hier, in kali-archive-keyring angezeigt werden.
Jetzt können Sie Vom Host aus bauen (Kali) befolgen, um die Build-Abhängigkeiten zu installieren.
Wir überspringen die Einrichtung jeglicher Container-Software.
Wenn Sie lieber aus einem Container heraus bauen möchten, müssen Sie entweder docker oder podman auf Ihrem Rechner installieren und konfigurieren.
docker erfordert, dass der Benutzer zur Docker-Gruppe hinzugefügt wird oder das Root-Konto verwendet wird (z. B. $ sudo ./build-in-container.sh).podman wurde mit rootful getestet (z. B. $ sudo ./build-in-container.sh). Bei rootless Ausführung wird build-in-container.sh versuchen, sich über sudo zu erhöhen, oder auf die Neukonfiguration der podman machine als rootful zurückfallen, siehe Bekannte Einschränkungen.build-in-container.sh ist ein Wrapper über build.sh. Es erkennt, welche OCI-konforme Container-Engine verwendet werden soll, kümmert sich um die Erstellung des Container-Images, falls es fehlt, und startet dann den Container, um den Build von innen heraus durchzuführen.
Sie haben drei Möglichkeiten, das Container-Image bereitzustellen:
$ # 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
Wenn Sie sowohl docker als auch podman installiert haben, verwendet build-in-container.sh standardmäßig podman. Um dies zu ändern, stellen Sie CONTAINER=docker vor ./build-in-container.sh:
$ CONTAINER=docker ./build-in-container.sh [...]
Jetzt können Sie ./build-in-container.sh (anstelle von ./build.sh) verwenden, um ein Image zu bauen.
$ ./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