Self-Hosted Cybersecurity

SpiderFoot unter Debian 13 installieren und produktiv betreiben (2)

In diesem zweiten Teil der SpiderFoot-Serie installieren wir die OSINT-Plattform unter Debian 13, richten einen Systemd-Service ein und machen die Anwendung per Apache2 und HTTPS produktiv nutzbar.

4 min Lesezeit
Grafik: SpiderFoot produktiv auf Debian 13 betreiben

Nun geht es an die Praxis.

In diesem Beitrag installieren wir SpiderFoot auf einem Debian-13-Server und richten die Anwendung so ein, dass sie produktiv betrieben werden kann. Dabei verwenden wir einen Apache2-Reverse-Proxy, HTTPS-Verschlüsselung mit Let's Encrypt und richten SpiderFoot als Systemdienst ein.

Besonders wichtig: Während der Erstellung dieses Artikels hat sich gezeigt, dass SpiderFoot aktuell nicht ohne Weiteres mit der standardmäßig unter Debian 13 ausgelieferten Python-Version 3.13 betrieben werden kann. Deshalb behandeln wir auch die Installation einer separaten Python-3.12-Umgebung.

Am Ende dieses Tutorials ist SpiderFoot sicher über HTTPS erreichbar und startet automatisch beim Booten des Servers.


Voraussetzungen

Für dieses Tutorial wird ein Debian-13-Server (Trixie) vorausgesetzt.

Folgende Voraussetzungen sollten erfüllt sein:

  • Debian 13 installiert
  • Root-Zugriff oder sudo-Rechte
  • Öffentliche Domain
  • DNS-Eintrag auf den Server gesetzt
  • Apache2 installiert

Beispiel-Domain:

spiderfoot.example.de

Besonderheit unter Debian 13

Debian 13 liefert standardmäßig Python 3.13 aus.

Aktuell verwendet SpiderFoot jedoch noch eine Version von lxml (4.9.4), die mit Python 3.13 Probleme verursacht.

Ein typischer Fehler sieht beispielsweise so aus:

error: too few arguments to function '_PyLong_AsByteArray'
Failed building wheel for lxml

Die Ursache liegt nicht bei Debian oder SpiderFoot selbst, sondern bei einer noch nicht angepassten Abhängigkeit.

Daher installieren wir für SpiderFoot eine separate Python-3.12-Umgebung.


System aktualisieren

Zunächst bringen wir das System auf den aktuellen Stand.

sudo apt update
sudo apt upgrade -y

Benötigte Pakete installieren

SpiderFoot benötigt verschiedene Bibliotheken und Compiler-Komponenten.

sudo apt install -y \
build-essential \
git \
wget \
curl \
python3-dev \
libxml2-dev \
libxslt1-dev \
zlib1g-dev \
libssl-dev \
libffi-dev \
libbz2-dev \
libreadline-dev \
libsqlite3-dev \
liblzma-dev \
tk-dev \
uuid-dev

Python 3.12 installieren

Da Debian 13 standardmäßig Python 3.13 bereitstellt, installieren wir Python 3.12 separat.

Python herunterladen

cd /usr/src

sudo wget https://www.python.org/ftp/python/3.12.8/Python-3.12.8.tgz

Archiv entpacken:

sudo tar xzf Python-3.12.8.tgz

In das Verzeichnis wechseln:

cd Python-3.12.8

Python kompilieren

sudo ./configure \
  --prefix=/opt/python-3.12 \
  --enable-optimizations

sudo make -j$(nproc)

sudo make altinstall

Je nach Server kann dieser Vorgang einige Minuten dauern.


Installation prüfen

/opt/python-3.12/bin/python3.12 --version

Beispielausgabe:

Python 3.12.8

Benutzer für SpiderFoot anlegen

SpiderFoot sollte nicht als root betrieben werden.

Benutzer anlegen:

sudo adduser spiderfoot

Zum Benutzer wechseln:

sudo su - spiderfoot

SpiderFoot herunterladen

Arbeitsverzeichnis erstellen:

mkdir ~/apps
cd ~/apps

GitHub-Repository klonen:

git clone https://github.com/smicallef/spiderfoot.git

In das Verzeichnis wechseln:

cd spiderfoot

Virtuelle Python-Umgebung erstellen

Vorhandene virtuelle Umgebungen entfernen:

rm -rf venv

Neue Umgebung erstellen:

/opt/python-3.12/bin/python3.12 -m venv venv

Aktivieren:

source venv/bin/activate

Die Eingabeaufforderung sollte nun ähnlich aussehen:

(venv) spiderfoot@server:~/apps/spiderfoot$

Pip aktualisieren

pip install --upgrade pip setuptools wheel

SpiderFoot-Abhängigkeiten installieren

Nun werden alle benötigten Python-Bibliotheken installiert.

pip install -r requirements.txt

Dieser Vorgang kann einige Minuten dauern.


Ersten Funktionstest durchführen

Vor der Einrichtung eines Systemdienstes sollte SpiderFoot zunächst manuell getestet werden.

python sf.py -l 127.0.0.1:5001

Bei erfolgreichem Start erscheint:

*************************************************************
 Use SpiderFoot by starting your web browser of choice and
 browse to http://127.0.0.1:5001/
*************************************************************

sowie:

Starting web server at 127.0.0.1:5001 ...

Hinweis zur Passwortwarnung

Möglicherweise erscheint zusätzlich:

Warning: passwd file contains no passwords.
Authentication disabled.

Diese Meldung ist zunächst normal.

Sie bedeutet lediglich, dass SpiderFoot aktuell ohne Login-Schutz läuft.

Für einen lokalen Test ist das unproblematisch.

Im Produktivbetrieb sollte jedoch unbedingt eine Authentifizierung eingerichtet werden.

Mit STRG+C kann SpiderFoot wieder beendet werden.


Systemd-Service einrichten

Zurück zu root:

exit

Service-Datei erstellen:

sudo nano /etc/systemd/system/spiderfoot.service

Inhalt:

[Unit]
Description=SpiderFoot OSINT Platform
After=network.target

[Service]
Type=simple
User=spiderfoot
Group=spiderfoot

WorkingDirectory=/home/spiderfoot/apps/spiderfoot

ExecStart=/home/spiderfoot/apps/spiderfoot/venv/bin/python \
          /home/spiderfoot/apps/spiderfoot/sf.py \
          -l 127.0.0.1:5001

Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Service aktivieren

sudo systemctl daemon-reload
sudo systemctl enable spiderfoot
sudo systemctl start spiderfoot

Status prüfen:

sudo systemctl status spiderfoot

Bei Erfolg:

Active: active (running)

Apache2 Reverse Proxy einrichten

Benötigte Module aktivieren:

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod headers
sudo a2enmod ssl
sudo a2enmod rewrite

sudo systemctl restart apache2

VirtualHost erstellen

sudo nano /etc/apache2/sites-available/spiderfoot.conf

Inhalt:

<VirtualHost *:80>

    ServerName spiderfoot.example.de

    ProxyPreserveHost On

    ProxyPass / http://127.0.0.1:5001/
    ProxyPassReverse / http://127.0.0.1:5001/

    ErrorLog ${APACHE_LOG_DIR}/spiderfoot_error.log
    CustomLog ${APACHE_LOG_DIR}/spiderfoot_access.log combined

</VirtualHost>

Apache Basic Authentication einrichten

Für den Produktivbetrieb dringend empfohlen.

Benötigtes Paket installieren:

sudo apt install -y apache2-utils

Benutzer anlegen:

sudo htpasswd -c /etc/apache2/.htpasswd-spiderfoot admin

Passwort vergeben.

Anschließend die VirtualHost-Datei erweitern:

<Location />
    AuthType Basic
    AuthName "SpiderFoot"
    AuthUserFile /etc/apache2/.htpasswd-spiderfoot
    Require valid-user
</Location>

VirtualHost aktivieren

sudo a2ensite spiderfoot.conf

Konfiguration prüfen:

sudo apachectl configtest

Apache neu laden:

sudo systemctl reload apache2

HTTPS mit Certbot einrichten

Certbot installieren:

sudo apt install -y certbot python3-certbot-apache

Zertifikat erstellen:

sudo certbot --apache

Domain auswählen:

spiderfoot.example.de

Anschließend die Weiterleitung von HTTP auf HTTPS aktivieren.

Danach ist SpiderFoot unter folgender Adresse erreichbar:

https://spiderfoot.example.de

Firewall konfigurieren

Bei Verwendung von UFW:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload

Port 5001 muss nicht freigegeben werden, da SpiderFoot ausschließlich lokal auf 127.0.0.1 lauscht.


Zertifikatserneuerung testen

Prüfen:

systemctl list-timers | grep certbot

Testlauf:

sudo certbot renew --dry-run

Sicherheitshinweise

SpiderFoot sammelt umfangreiche Informationen und sollte daher abgesichert werden.

Empfohlen sind:

  • HTTPS aktivieren
  • Apache Basic Authentication verwenden
  • Zugriff auf vertrauenswürdige IP-Adressen beschränken
  • UFW einsetzen
  • Fail2ban verwenden
  • Regelmäßige Updates durchführen
  • SpiderFoot niemals als root ausführen

Gerade bei Unternehmen, Behörden und Kommunen sollte SpiderFoot ausschließlich autorisierten Mitarbeitern zugänglich sein.


SpiderFoot gehört zu den leistungsfähigsten Open-Source-Werkzeugen im Bereich OSINT und Threat Intelligence. Mit Debian 13 lässt sich die Plattform stabil und sicher betreiben, wenn einige Besonderheiten berücksichtigt werden.

Insbesondere die derzeitige Inkompatibilität zwischen Python 3.13 und bestimmten SpiderFoot-Abhängigkeiten macht eine separate Python-3.12-Installation sinnvoll. Nach erfolgreicher Einrichtung mit virtueller Umgebung, Systemd-Service, Apache2-Reverse-Proxy und HTTPS-Verschlüsselung steht einer produktiven Nutzung jedoch nichts mehr im Wege.

Im nächsten Teil der Serie werfen wir einen Blick auf die Benutzeroberfläche von SpiderFoot, erstellen den ersten Scan und lernen die wichtigsten Analysefunktionen kennen.