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

Recuperar e proteger conta Gmail invadida
Segurança

Recuperar e proteger conta Gmail invadida

Speedhack em jogos Windows com L. Spiro's MHS
Jogos

Speedhack em jogos Windows com L. Spiro's MHS

XLOOKUP com vários critérios no Excel
Excel

XLOOKUP com vários critérios no Excel

Configurar rtGui para rTorrent — guia rápido
Tutoriais

Configurar rtGui para rTorrent — guia rápido

Recuperar conta do Instagram desativada
Redes Sociais

Recuperar conta do Instagram desativada

Kippo SSH honeypot no CentOS 5.5
Segurança

Kippo SSH honeypot no CentOS 5.5