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.