Kippo SSH-Honeypot auf CentOS 5.5 einrichten
TL;DR
Kippo ist ein mittel-interaktiver SSH‑Honeypot, der Brute‑Force‑Angriffe und komplette Shell‑Sitzungen protokolliert. Dieses Tutorial zeigt Schritt für Schritt, wie Sie Kippo unter CentOS 5.5 mit Python 2.6 und den nötigen Abhängigkeiten installieren, konfigurieren und starten.
Kurzüberblick
Kippo zeichnet komplette Angreifer‑Interaktionen auf und speichert heruntergeladene Dateien sowie Kommandos. Es ist nicht auf Kojoney basiert, aber davon inspiriert. Dieses Dokument führt durch Installation, Konfiguration, Tests und gibt praktische Hinweise zur Sicherheit und zum Betrieb.
Wichtig: Kein Garantieschein — testen Sie in einer isolierten Testumgebung, niemals auf produktiven Systemen.
Voraussetzungen
- CentOS 5.5 mit root‑Zugriff oder sudo
- Grundkenntnisse in Linux, Nutzerverwaltung und iptables
- Isoliertes Netzwerk oder Lab‑Umgebung
Python 2.6 installieren
CentOS 5.5 liefert nur Python 2.4. Kippo benötigt mindestens Python 2.6. Verwenden Sie die RPMs aus dem folgenden Leitfaden:
http://www.geekymedia.com/tech-articles/rhel5-centos5-rpms-for-python-2-5-and-2-6/
Wichtige Hinweise:
- Installieren Sie nur die RPMs für die gewünschte Version. Mindestens brauchen Sie das Basis‑Python‑Paket und das libs‑Paket.
- Starten Sie Python 2.6 mit python26 anstelle von python. Die System‑Python 2.4 bleibt bestehen.
- Wenn Sie Pakete mit setuptools installieren, verwenden Sie python26, z. B. python26 setup.py install
Twisted, Zope Interface und Pycrypto installieren
Twisted ist eine ereignisgesteuerte Netzwerkbibliothek in Python. Zope Interface liefert Schnittstellen, und Pycrypto stellt kryptografische Primitive bereit.
Führen Sie die folgenden Befehle als root oder mit sudo aus:
cd /tmp
wget http://twistedmatrix.com/Releases/Twisted/10.2/Twisted-10.2.0.tar.bz2
tar -xvf Twisted-10.2.0.tar.bz2
cd Twisted-10.2.0
python26 setup.py build
python26 setup.py install
cd /tmp
wget http://www.zope.org/Products/ZopeInterface/3.3.0/zope.interface-3.3.0.tar.gz
tar -xvf zope.interface-3.3.0.tar.gz
cd zope.interface-3.3.0
python26 setup.py build
python26 setup.py install
cd /tmp
wget wget http://www.amk.ca/files/python/crypto/pycrypto-2.0.1.tar.gz
tar -xvf pycrypto-2.0.1.tar.gz
cd pycrypto-2.0.1
python26 setup.py build
python26 setup.py install
ASN.1 Implementierung:
cd /tmp
wget http://sourceforge.net/projects/pyasn1/files/pyasn1-devel/0.0.12a/pyasn1-0.0.12a.tar.gz/download
tar -xvf pyasn1-0.0.12a.tar.gz
cd pyasn1-0.0.12a
python26 setup.py build
python26 setup.py install
Hinweis: Achten Sie auf Build‑Abhängigkeiten wie gcc, python26-devel und ähnliche Pakete; installieren Sie diese bei Bedarf.
Regulären Nutzer anlegen
Kippo darf nicht als root laufen. Legen Sie einen unprivilegierten Nutzer an:
useradd kippouser
Melden Sie sich als dieser Nutzer an, bevor Sie Kippo herunterladen und starten.
Kippo Quellpaket herunterladen
su - kippouser
wget http://kippo.googlecode.com/files/kippo-0.5.tar.gz
tar -xvf kippo-0.5.tar.gz
cd kippo-0.5
Kippo konfigurieren
Starten Sie den Editor und passen Sie kippo.cfg an Ihre Umgebung an:
vi kippo.cfg
Die Standardkonfiguration enthält viele erklärende Kommentare. Wesentliche Optionen, die Sie prüfen sollten:
- ssh_port: Port, auf dem Kippo lauscht (Standard 2222)
- hostname: Angezeigter Hostname in der Shell‑Prompt
- log_path / download_path / data_path: Verzeichnisse für Logs und heruntergeladene Dateien
- filesystem_file: Virtuelles Filesystem (fs.pickle)
- password: Anfangspasswort (nur Testzwecke)
- database_mysql: Entkommentieren, wenn Sie MySQL‑Logging aktivieren wollen
Behalten Sie die Schlüsseldateien public.key und private.key im Verzeichnis bei oder lassen Sie Kippo diese erzeugen.
# (Die vollständige Beispielkonfiguration bleibt unverändert und befindet sich in der Originaldatei.)
Kippo starten
./start.sh
Standardmäßig werden die Ausgaben nach log/kippo.log umgeleitet.
Zum Live‑Ansehen der Logs:
tail -f log/kippo.log
Kippo für öffentliche Erreichbarkeit freigeben
Standardport ist 2222. Wenn Sie Kippo unter Port 22 verfügbar machen wollen (z. B. für externe Tests), leiten Sie Verbindungen per NAT weiter. Auf Linux ist Port 22 root‑beschränkt; ein sicherer Weg ist Port‑Weiterleitung mit iptables:
iptables -t nat -A PREROUTING -i IN_IFACE -p tcp --dport 22 -j REDIRECT --to-port 2222
Ersetzen Sie IN_IFACE durch Ihre Netzwerkschnittstelle, z. B. eth0. Testen und dokumentieren Sie diese Regel im Infrastruktur‑Change‑Log.
Wichtig: Öffnen Sie Kippo niemals direkt in produktiven Netzwerken ohne zusätzliche Isolation. Bauen Sie Netzwerksegmente, Firewall‑Regeln und Monitoring ein.
Testen
Verbinden Sie sich lokal zum Test:
ssh 127.0.0.1 -p 2222 -l root
Als Anmeldung verwenden Sie root und das Passwort 123456 (wie in der Beispielkonfiguration). Nach erfolgreichem Login sollte die Shell‑Prompt erscheinen:
sales:~#
Wann Kippo versagt — Gegenbeispiele
- Hochmotivierte Angreifer erkennen Honeypots durch Timing, Verhalten oder fehlende Kernel‑Fingerprints. Kippo ist ein mittlerer Interaktionshoneypot und kann advanced persistent techniques nicht simulieren.
- Wenn Sie echte Produktionsdaten oder Services simulieren müssen, ist Kippo ungeeignet; es ist primär für Beobachtung, nicht für Täuschung auf Enterprise‑Niveau.
- Bei fehlender Netzwerkisolation kann ein gehackter Honeypot als Sprungbrett missbraucht werden.
Alternative Ansätze
- Cowrie: Fork von Kippo mit moderneren Features und aktiverer Entwicklung.
- Honeyd: Low‑interaction Honeypot für Netzwerkservices.
- Dionaea oder Conpot: Fokus auf Exploit‑Fänge und Protokollspezifika.
Entscheidung: Wählen Sie Kippo/Cowrie für SSH‑Interaktionen; andere Tools für Protokolle und Malware‑Fänge.
Sicherheits‑Härtung und Betriebliche Maßnahmen
- Isolierung: Platzieren Sie den Honeypot in einem separaten VLAN oder einem dedizierten VM‑Host.
- Monitoring: Zusätzliche IDS/IPS und Egress‑Filter, um Datenexfiltration zu vermeiden.
- Zugriff: Nur Admins im Security‑Team dürfen Logs einsehen. Verwenden Sie Read‑Only‑Backups.
- Logging: Sichern Sie Logverzeichnisse regelmäßig mit WORM‑Mechanismen.
- Updates: Kippo selbst wird nicht mehr aktiv gepflegt; prüfen Sie alternative maintained Projekte.
Rollenbasierte Checkliste
Administrator:
- Python 2.6 und Abhängigkeiten installieren
- Systempakete (gcc, python26-devel) prüfen
- iptables‑Regeln dokumentieren
Security‑Analyst:
- Log‑Analyse konfigurieren (tail, zentrale SIEM‑Anbindung)
- Download‑Verzeichnis regelmäßig prüfen und isoliert analysieren
Netzwerk‑Engineer:
- VLAN/Firewall‑Regeln anlegen
- NAT/Port‑Weiterleitung testen
Mini‑Methodik zur Inbetriebnahme (Playbook)
- Vorbereitung: VM mit CentOS 5.5 erstellen und Snapshot nehmen.
- Basis‑Pakete installieren (gcc, wget, python26 rpm).
- Kippo‑User anlegen.
- Abhängigkeiten (Twisted, Pycrypto, Zope) installieren.
- Kippo herunterladen, konfigurieren und starten.
- Funktionstest lokal durchführen.
- Netzwerkisolation und NAT konfigurieren.
- Monitoring und Backups einrichten.
Risiken und Gegenmaßnahmen (Kurzmatrix)
- Risiko: Honeypot wird Ausgangspunkt für Angriffe.
Gegenmaßnahme: Egress‑Filter, Netzinjektion verhindern, strikte Firewall. - Risiko: Logs werden manipuliert oder gelöscht.
Gegenmaßnahme: Logs in zentralen, unveränderbaren Speicher replizieren. - Risiko: Falsches Positiv/Negativ‑Handling.
Gegenmaßnahme: Signaturen und manuelle Analyse kombinieren.
Kompatibilität und Migrationstipps
- CentOS 5.5 ist veraltet. Für neue Setups prüfen Sie modernere Distributionen und bevorzugen gepflegte Forks wie Cowrie.
- Beim Migrieren: exportieren Sie das fs.pickle und konfigurieren Sie Umgebungsvariablen identisch auf dem Ziel.
Kurzes Glossar
- Honeypot: Getarnter Dienst zur Beobachtung von Angreifern.
- Medium‑interaction: Emuliert Teile eines Systems interaktiv, ohne echten Kernelzugriff.
- Egress‑Filter: Regeln, die ausgehenden Verkehr einschränken.
Links und Referenzen
The Honeynet Project: http://www.honeynet.org/
Honeypot — Wikipedia: http://en.wikipedia.org/wiki/Honeypot_(computing)
Kippo Project: http://kippo.googlecode.com/
CentOS: http://www.centos.org/
Zusammenfassung
Kippo ist ein nützliches Werkzeug, um SSH‑Angriffe zu beobachten und Angreiferverhalten zu analysieren. Achten Sie auf sichere Isolation, korrekte Python‑Versionen und die nötigen Bibliotheken. Für produktive oder langfristige Deployments prüfen Sie modernere, aktiv gepflegte Alternativen wie Cowrie.
Wichtig: Immer in einer kontrollierten Umgebung testen und Logik für Egress‑Kontrolle einbauen.