Guida alle tecnologie

Come installare Kippo SSH Honeypot su CentOS 5.5

6 min read Sicurezza Aggiornato 23 Sep 2025
Installare Kippo SSH Honeypot su CentOS 5.5
Installare Kippo SSH Honeypot su CentOS 5.5

TL;DR

Kippo è un honeypot SSH a interazione media che registra attacchi brute-force e l’intera sessione shell. Questa guida spiega come compilare e installare Kippo su CentOS 5.5, includendo l’installazione di Python 2.6, dipendenze (Twisted, Zope Interface, Pycrypto), configurazione e test basilari.

Introduzione

Kippo è un honeypot SSH a interazione media progettato per registrare attacchi brute-force e, soprattutto, l’interazione completa della shell eseguita dall’attaccante. Kippo è ispirato a Kojoney, ma non ne è derivato. Per ulteriori dettagli sul progetto, visita la pagina ufficiale: http://code.google.com/p/kippo/.

Questa guida mostra come compilare e installare Kippo su un server CentOS 5.5. Non viene offerta alcuna garanzia di funzionamento su tutte le configurazioni.

Prerequisiti e note preliminari

  • Sistema: CentOS 5.5
  • Permessi: accesso root o sudo per installare pacchetti e creare utenti
  • Python: CentOS 5.5 fornisce Python 2.4; Kippo richiede almeno Python 2.6 (qui usiamo python26)

Importante: Kippo non deve essere eseguito come root. Creeremo un utente dedicato più avanti.

Installazione di Python 2.6

CentOS 5.5 include Python 2.4. Per usare Kippo è necessario installare Python 2.6. Seguire il tutorial RPM per RHEL5/CentOS5 disponibile qui:

http://www.geekymedia.com/tech-articles/rhel5-centos5-rpms-for-python-2-5-and-2-6/.

Note pratiche:

  1. Installa gli RPM corrispondenti alla versione desiderata. Servono almeno il pacchetto base e le librerie (libs).
  2. Per avviare Python 2.6, usa il comando python26 invece di python. (Python 2.4 rimane installato.)
  3. Quando installi pacchetti con setuptools, usa la versione corretta di Python: ad esempio python26 setup.py install.

Installazione di Twisted, Zope Interface e Pycrypto

Twisted è un motore di rete event-driven in Python. Supporta molti protocolli (tra cui SSH) ed è necessario per Kippo.

Esempio di installazione di Twisted:

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

Installazione di Zope Interface:

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

Installazione di Pycrypto:

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

Installazione di pyasn1 (ASN.1 codec):

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

Nota: verifica che python26 sia la versione usata dai comandi setup.py. In caso di errori, ricontrolla dipendenze del compilatore (gcc, python-devel, openssl-devel) e librerie di sistema.

Creare un utente regolare

Kippo non deve essere eseguito come root. Crea un utente dedicato:

useradd kippouser

Esegui i passaggi di download e installazione con questo utente.

Scaricare il pacchetto sorgente di Kippo

Da kippoproject (sorgente originale):

su - kippouser   
wget http://kippo.googlecode.com/files/kippo-0.5.tar.gz  
tar -xvf kippo-0.5.tar.gz  
cd kippo-0.5

Configurare Kippo

Modifica il file di configurazione kippo.cfg per adattare porta, hostname e percorsi dei log. Esempio:

vi kippo.cfg

Contenuto esempio (estratto):

#
# Kippo configuration file (kippo.cfg)
#
[honeypot]
# IP addresses to listen for incoming SSH connections.
#
# (default: 0.0.0.0) = any address
#ssh_addr = 0.0.0.0
# Port to listen for incoming SSH connections.
#
# (default: 2222)
ssh_port = 2222
# Hostname for the honeypot. Displayed by the shell prompt of the virtual
# environment.
#
# (default: sales)
hostname = sales
# Directory where to save log files in.
#
# (default: log)
log_path = log
# Directory where to save downloaded (malware) files in.
#
# (default: dl)
download_path = dl
# Directory where virtual file contents are kept in.
#
# This is only used by commands like 'cat' to display the contents of files.
# Adding files here is not enough for them to appear in the honeypot - the
# actual virtual filesystem is kept in filesystem_file (see below)
#
# (default: honeyfs)
contents_path = honeyfs
# File in the python pickle format containing the virtual filesystem. 
#
# This includes the filenames, paths, permissions for the whole filesystem,
# but not the file contents. This is created by the createfs.py utility from
# a real template linux installation.
#
# (default: fs.pickle)
filesystem_file = fs.pickle
# Directory for miscellaneous data files, such as the password database.
#
# (default: data_path)
data_path = data
# Directory for creating simple commands that only output text.
#
# The command must be placed under this directory with the proper path, such
# as:
#   txtcmds/usr/bin/vi
# The contents of the file will be the output of the command when run inside
# the honeypot.
#
# In addition to this, the file must exist in the virtual
# filesystem {filesystem_file}
#
# (default: txtcmds)
txtcmds_path = txtcmds
# Public and private SSH key files. If these don't exist, they are created
# automatically.
#
# (defaults: public.key and private.key)
public_key = public.key
private_key = private.key
# Initial root password. Future passwords will be stored in
# {data_path}/pass.db
#
# (default: 123456)
password = 123456
# IP address to bind to when opening outgoing connections. Used exclusively by
# the wget command.
#
# (default: not specified)
#out_addr = 0.0.0.0
# Sensor name use to identify this honeypot instance. Used by the database
# logging modules such as mysql.
#
# If not specified, the logging modules will instead use the IP address of the
# connection as the sensor name.
#
# (default: not specified)
#sensor_name=myhostname
# Fake address displayed as the address of the incoming connection.
# This doesn't affect logging, and is only used by honeypot commands such as
# 'w' and 'last'
#
# If not specified, the actual IP address is displayed instead (default
# behaviour).
#
# (default: not specified)
#fake_addr = 192.168.66.254
# MySQL logging module
#
# Database structure for this module is supplied in doc/sql/mysql.sql
#
# To enable this module, remove the comments below, including the
# [database_mysql] line.
#[database_mysql]
#host = localhost
#database = kippo
#username = kippo
#password = secret

Suggerimenti:

  • Modifica ssh_port se non vuoi usare la porta 2222.
  • Se abiliti il logging su MySQL, crea il database e l’utente corrispondente prima.

Avviare Kippo

Nel directory sorgente di kippo, esegui:

./start.sh

Per fermare, usa lo script di arresto fornito o termina il processo padre con cura.

File di log

Per default l’output di Kippo viene scritto in log/kippo.log. Per monitorare in tempo reale:

tail -f log/kippo.log

Rendere Kippo accessibile dall’esterno

Per default Kippo ascolta sulla porta 2222. Se vuoi esporlo sulla porta 22 (standard SSH) su Linux, devi reindirizzare il traffico non privilegiato verso 2222 con iptables (richiede privilegi di root):

iptables -t nat -A PREROUTING -i IN_IFACE -p tcp --dport 22 -j REDIRECT --to-port 2222

Sostituisci IN_IFACE con il nome della tua interfaccia reale, ad es. eth0. Nota di sicurezza: esporre un honeypot su internet comporta rischi; isola la macchina, monitora costantemente e limita il traffico in uscita.

Test

Collegati al server Kippo sulla porta 2222 usando root/123456:

ssh 127.0.0.1 -p 2222 -l root

Dopo il login dovresti vedere il seguente prompt:

sales:~#

Quando questa procedura può fallire

  • Dipendenze di sistema mancanti (gcc, headers per Python, openssl-devel). Controlla i pacchetti di sviluppo.
  • Versioni incompatibili: CentOS 5.5 è obsoleto; alcuni pacchetti o mirror potrebbero non essere più disponibili.
  • Errori di permessi: assicurati che l’utente kippo abbia permessi per scrivere nelle cartelle log e dl.
  • Conflitto di porte: se un servizio già usa la porta desiderata, scegli un’altra porta o reindirizza il traffico.

Approcci alternativi

  • Eseguire Kippo in una macchina virtuale isolata (consigliato) o in un container con rete controllata.
  • Usare honeypot moderni e ancora mantenuti (p. es. Cowrie, fork attivo di Kippo) per seguire aggiornamenti e mitigazioni.
  • Impostare un reverse proxy o firewall per limitare connessioni verso l’honeypot.

Checklist per ruoli

  • Amministratore di sistema:
    • Installare pacchetti di sistema (gcc, python-devel, openssl-devel).
    • Creare utente dedicato e gestire iptables.
  • Analista sicurezza:
    • Monitorare log/kippo.log e salvare sessioni sospette.
    • Isolare artefatti scaricati nella cartella dl per analisi offline.
  • Operatore SOC:
    • Configurare alerting su nuove connessioni o file scaricati.

Criteri di accettazione

  • Kippo parte senza errori e ascolta sulla porta configurata.
  • Il log log/kippo.log registra tentativi di login e sessioni.
  • È possibile riprodurre la schermata di login (sales:~#) tramite SSH locale.
  • File scaricati vengono salvati nella directory download_path.

Sicurezza: mitigazioni e best practice

  • Non eseguire servizi non necessari sullo stesso host.
  • Isola l’honeypot in una rete separata o VLAN.
  • Blocca o restringi il traffico in uscita dall’honeypot per evitare che venga usato come pivot.
  • Effettua snapshot della VM prima di ogni modifica per poter ripristinare rapidamente.
  • Conserva i log in un server remoto di sola scrittura per evitare manomissioni.

Mini-metodologia di implementazione (passi rapidi)

  1. Prepara un host isolato (VM o rete separata).
  2. Installa dipendenze di sistema e Python 2.6.
  3. Compila e installa Twisted, Zope Interface, Pycrypto e pyasn1 con python26.
  4. Crea utente dedicato e scarica Kippo.
  5. Configura kippo.cfg (porta, percorso log, password iniziale).
  6. Avvia Kippo e verifica i log.
  7. Configura reindirizzamento porte se necessario e attiva monitoraggio/alert.

Glossario (1 riga per termine)

  • Honeypot: sistema che simula servizi vulnerabili per attirare e registrare attaccanti.
  • Brute-force: tentativo automatizzato di indovinare credenziali provando molte combinazioni.
  • VM snapshot: immagine di backup istantanea della macchina virtuale.

Link utili

The Honeynet Project: http://www.honeynet.org/
Honeypot (Wikipedia): http://en.wikipedia.org/wiki/Honeypot_(computing)
Kippo Project: http://kippo.googlecode.com/
Iran Honeynet Project: http://www.honeynet.ir/
CentOS: http://www.centos.org/

Sommario

Kippo è un honeypot SSH utile per registrare tentativi di intrusione e sessioni shell. Con CentOS 5.5 serve Python 2.6 e alcune librerie (Twisted, Zope Interface, Pycrypto, pyasn1). Esegui Kippo con un utente non privilegiato, isola l’ambiente, monitora i log e limita il traffico in uscita.

Importante: considera l’uso di fork più recenti come Cowrie se cerchi un progetto attivamente mantenuto.

Autore
Redazione

Materiali simili

XLOOKUP con più criteri in Excel
Excel

XLOOKUP con più criteri in Excel

Configurare rtGui per rTorrent
Guide.

Configurare rtGui per rTorrent

Recuperare account Instagram disabilitato
Social Media

Recuperare account Instagram disabilitato

Installare Kippo SSH Honeypot su CentOS 5.5
Sicurezza

Installare Kippo SSH Honeypot su CentOS 5.5

Bloccare app che scansionano il rullino fotografico
Privacy

Bloccare app che scansionano il rullino fotografico

Cancellare la cronologia di ricerca di YouTube
Privacy

Cancellare la cronologia di ricerca di YouTube