Guia de tecnologias

Como configurar o honeypot SSH Kippo no CentOS 5.5

6 min read Segurança Atualizado 23 Sep 2025
Kippo SSH honeypot no CentOS 5.5
Kippo SSH honeypot no CentOS 5.5

Visão geral

Kippo é um honeypot SSH de interação média projetado para registrar ataques de força bruta e, o mais importante, toda a interação de shell do atacante. Ele é inspirado por outras soluções de honeypot, mas é um projeto distinto. Este tutorial descreve como compilar e instalar o Kippo em um servidor CentOS 5.5.

Importante: este procedimento envolve execução de serviços de rede que simulam sistemas vulneráveis. Utilize ambientes isolados (VMs ou VLANs) e políticas de segurança apropriadas antes de expor qualquer honeypot à Internet.

Intenção e variantes de busca

Objetivo principal: instalar e executar Kippo no CentOS 5.5. Variantes relacionadas: instalar kippo centos, kippo ssh honeypot, configurar kippo, kippo tutorial, honeypot ssh centos.

Requisitos mínimos

  • Acesso root ou sudo no servidor CentOS 5.5.
  • Conectividade para baixar pacotes (wget).
  • Isolamento de rede (recomendado): rede de salto ou ambiente de laboratório.
  • Python 2.6 (CentOS 5.5 traz por padrão Python 2.4).

Instalação do Python 2.6

Como o CentOS 5.5 inclui apenas Python 2.4, instale o Python 2.6 seguindo o tutorial indicado no link abaixo:

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

Notas importantes:

  • Instale os RPMs da versão desejada (pelo menos o pacote base e o libs).
  • Para iniciar o Python 2.6 use python26 em vez de python. (O Python 2.4 original permanece instalado.)
  • Ao instalar pacotes com setuptools, use a versão correta: python26 setup.py install

Instalação do Twisted, Zope Interface, Pycrypto e pyasn1

Twisted é um motor de rede orientado a eventos para Python. Zope Interface fornece contratos de interface em Python. Pycrypto oferece algoritmos criptográficos. pyasn1 implementa tipos ASN.1 e codecs.

Execute os passos abaixo como root ou com permissão adequada. Os blocos de código são preservados; use python26 conforme mostrado.

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
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

Criar usuário regular

Kippo não deve rodar como root. Crie um usuário dedicado ao honeypot:

useradd kippouser

Baixar o código fonte do Kippo

Faça login no usuário kippo e baixe a versão do Kippo disponível no repositório indicado.

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

Configurar o Kippo

Edite o arquivo de configuração principal kippo.cfg conforme suas necessidades. O arquivo abaixo contém comentários e opções; preserve-o como está e ajuste ssh_port, hostname, caminhos e credenciais iniciais.

vi kippo.cfg
#
# 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 usado 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

Importante: mantenha cópias de backup do arquivo kippo.cfg e dos arquivos de filesystem/pickle antes de modificar.

Iniciar o Kippo

Para iniciar o honeypot:

./start.sh

Arquivo de log

Por padrão a saída do Kippo é redirecionada para log/kippo.log. Para acompanhar em tempo real:

tail -f log/kippo.log

Tornar o Kippo acessível externamente

Por padrão o Kippo escuta na porta 2222. Para redirecionar conexões da porta 22 para a porta 2222 em Linux (quando você não pode rodar como root na porta 22) use:

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

Substitua IN_IFACE pela interface real, por exemplo eth0.

Nota: modifique regras de firewall com cuidado e garanta que o honeypot esteja em uma rede controlada.

Testes

Conecte ao servidor Kippo na porta 2222 usando root e a senha inicial 123456 para validar o comportamento:

ssh 127.0.0.1 -p 2222 -l root

Você deve ver o prompt virtual configurado, por exemplo:

sales:~#

Checklist por função

Administrador de sistema:

  • Isolar o honeypot em VM/VLAN
  • Criar usuário não-root (kippouser)
  • Aplicar regras de NAT/iptables para redirecionamento seguro
  • Limitar conectividade de saída (egress) para evitar abuso

Analista de segurança / SOC:

  • Configurar logging centralizado (syslog/ELK/Graylog)
  • Habilitar alertas para novos IPs e downloads
  • Armazenar evidências (logs, arquivos dl) em local imutável

Equipe de compliance / legal:

  • Revisar retenção de logs e requisitos de privacidade
  • Definir política para compartilhamento de amostras de malware

Quando pode falhar

  • Dependências incompatíveis: CentOS 5.5 traz bibliotecas antigas; verifique versões do Twisted e Pycrypto.
  • Execução sem isolamento: se o honeypot tiver acesso irrestrito à Internet, pode ser usado para propagar malware.
  • Permissões incorretas: executar como root ou permitir gravação em locais do sistema pode comprometer a máquina hospedeira.
  • Versão do Python: Kippo requer Python 2.x; não é compatível com Python 3 sem modificações.

Abordagens alternativas

  • Cowrie: projeto popular derivado/modernizado do Kippo (compatível com Python mais recente) e mantido ativamente.
  • Dionaea: focado em captura de malware e serviços diversos (bom para amostras binárias).
  • Honeyd: emulação de hosts para protocolos diversos em redes grandes.

Escolha conforme objetivo: registro de sessão interativa (Kippo/Cowrie) versus captura de amostras binárias (Dionaea).

Mini playbook de produção

  1. Provisionar VM isolada com snapshot.
  2. Aplicar updates de hypervisor e sistema hospedeiro.
  3. Instalar Python 2.6 e dependências (Twisted, Pycrypto, etc.).
  4. Criar usuário não-root e baixar Kippo.
  5. Configurar kippo.cfg (ports, caminhos, log).
  6. Aplicar regras de firewall para limitar e monitorar egress.
  7. Integrar logs a SIEM/ELK.
  8. Testar com conexões locais e validar prompts e gravação.
  9. Habilitar alertas e criar playbooks de resposta.

Critérios de aceitação

  • O Kippo inicia sem erros e cria log/kippo.log.
  • Conexões SSH para a porta configurada apresentam o prompt configurado (ex.: sales:~#).
  • Sessões de atacante são registradas e reproduzíveis a partir dos logs.
  • Arquivos baixados por atacantes são armazenados em download_path para análise.
  • Honeypot não permite elevação de privilégios na máquina hospedeira.

Segurança e privacidade

Boas práticas de segurança:

  • Não rode Kippo como root.
  • Limite a conectividade de saída (egress) para evitar que o honeypot sirva como trampolim.
  • Use snapshots e backups antes de alterações.
  • Monitore integridade do sistema hospedeiro.

Privacidade e conformidade (GDPR e leis locais):

  • Logs podem conter endereços IP e dados de sessão. Avalie retenção e anonimização conforme sua política de privacidade.
  • Se amostras de malware incluírem dados pessoais, trate conforme requisitos legais e informe o time jurídico.

Testes de aceitação (casos de teste)

  • CT-01: Iniciar serviço e verificar criação de arquivo log/kippo.log.
  • CT-02: Conectar por SSH com credenciais iniciais e verificar gravação da sessão.
  • CT-03: Simular download via wget na sessão do honeypot e confirmar arquivo em download_path.
  • CT-04: Verificar que regras de firewall impedem tráfego de saída não autorizado.

Perguntas frequentes

Q: Posso executar Kippo em produção?

A: Honeypots devem ficar restritos a ambientes controlados; evite expô-los diretamente em infraestruturas de produção sem isolamento.

Q: Kippo funciona com Python 3?

A: Kippo foi projetado para Python 2.x. Projetos mais novos como Cowrie oferecem compatibilidade atualizada.

Q: Onde encontro análises das sessões gravadas?

A: Logs ficam em log/ e as sessões podem ser processadas por ferramentas de parsing específicas para Kippo/Cowrie.

Links úteis

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/

Resumo

Este guia cobriu a instalação do Kippo no CentOS 5.5, dependências necessárias, configuração básica, testes e medidas de segurança. Para ambientes modernos, considere alternativas mantidas ativamente, como Cowrie.

Autor
Edição

Materiais semelhantes

Instalar e usar Podman no Debian 11
Containers

Instalar e usar Podman no Debian 11

Apt‑pinning no Debian: guia prático
Administração de sistemas

Apt‑pinning no Debian: guia prático

Injete FSR 4 com OptiScaler em qualquer jogo
Tecnologia

Injete FSR 4 com OptiScaler em qualquer jogo

DansGuardian e Squid com NTLM no Debian Etch
Infraestrutura

DansGuardian e Squid com NTLM no Debian Etch

Corrigir erro de instalação no Android
Android

Corrigir erro de instalação no Android

KNetAttach: Pastas de Rede remota no KDE
KDE

KNetAttach: Pastas de Rede remota no KDE