capítulo 02
Preparando o Ambiente
Uma VM VirtualBox fazendo o papel de servidor dedicado: sistema mínimo, rede própria na LAN, acesso hardenizado desde o primeiro boot.
Os blocos de comando abaixo indicam onde rodar cada um: host é a sua máquina física, vm é a máquina virtual. Confundir os dois foi, de longe, a fonte de erro mais comum ao longo deste projeto — vale conferir sempre antes de colar.
1. Instalar o VirtualBox
sudo apt update
sudo apt install -y virtualbox
vboxmanage --version
2. Baixar a imagem do sistema convidado
Debian 12 (Bookworm), instalação mínima — leve o suficiente pra rodar como servidor headless, com repositórios estáveis pra tudo que vem depois.
mkdir -p ~/vm-isos && cd ~/vm-isos
wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-12.11.0-amd64-netinst.iso
3. Identificar a interface de rede do host
Necessário pra configurar o modo Bridged no próximo passo — é o que faz a VM aparecer na sua rede local como um dispositivo próprio, com IP próprio, em vez de ficar escondida atrás de NAT.
ip link show
Procure a interface conectada de verdade (estado UP,LOWER_UP) — normalmente algo como enp2s0 ou wlan0. Ignore interfaces virtuais de containers/VMs que já existirem (docker0, virbr0, qualquer veth*).
4. Criar a VM
VBoxManage createvm --name "honeypot-lab" --ostype Debian_64 --register
VBoxManage modifyvm "honeypot-lab" \
--memory 4096 --cpus 2 \
--nic1 bridged --bridgeadapter1 SUA_INTERFACE \
--boot1 dvd --boot2 disk --boot3 none --boot4 none
# endurecimento: sem clipboard/drag-and-drop compartilhado com o host,
# sem áudio, sem porta USB nem display remoto
VBoxManage modifyvm "honeypot-lab" \
--clipboard-mode disabled --draganddrop disabled \
--usb off --audio-driver none --vrde off
VBoxManage createhd --filename ~/VirtualBox\ VMs/honeypot-lab/honeypot-lab.vdi --size 20000
VBoxManage storagectl "honeypot-lab" --name "SATA Controller" --add sata --controller IntelAhci
VBoxManage storageattach "honeypot-lab" --storagectl "SATA Controller" \
--port 0 --device 0 --type hdd --medium ~/VirtualBox\ VMs/honeypot-lab/honeypot-lab.vdi
VBoxManage storagectl "honeypot-lab" --name "IDE Controller" --add ide
VBoxManage storageattach "honeypot-lab" --storagectl "IDE Controller" \
--port 0 --device 0 --type dvddrive --medium ~/vm-isos/debian-12.11.0-amd64-netinst.iso
5. Instalar o Debian
VBoxManage startvm "honeypot-lab" --type gui
No instalador: modo texto, particionamento guiado (disco inteiro), e na seleção de pacotes marque só SSH server e standard system utilities — nada de ambiente gráfico. Depois do primeiro boot, rode sempre em modo headless:
VBoxManage controlvm "honeypot-lab" poweroff
VBoxManage startvm "honeypot-lab" --type headless
6. Gerar uma chave SSH (se ainda não tiver)
ls -al ~/.ssh
# se não existir id_ed25519.pub:
ssh-keygen -t ed25519 -C "honeypot-lab"
Não copie o arquivo sem o .pub pra lugar nenhum — esse é o privado, fica só na sua máquina.
7. Hardening de acesso
Descubra o IP que a VM recebeu (painel do roteador, ou console local com ip a) e conecte:
ssh-copy-id usuario@IP_DA_VM
Depois, dentro da VM já conectada:
sudo nano /etc/ssh/sshd_config
Port 2200
PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
sudo systemctl restart ssh
Antes de encerrar a conexão atual, abra um segundo terminal e confirme que consegue conectar na porta nova (ssh -p 2200 usuario@IP_DA_VM). Se algo estiver errado na configuração e você já tiver fechado a sessão original, fica sem acesso remoto — precisaria voltar pro console gráfico da VM.
Firewall, restrito à rede local:
sudo apt install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow from SUA_SUB_REDE/24 to any port 2200 proto tcp
sudo ufw enable
sudo ufw status verbose
Uma regra criada sem restringir a origem (ufw allow 2200/tcp, sem o from) libera a porta pra qualquer IPv4 e qualquer IPv6 — se sua rede tiver IPv6 público, isso expõe a porta de gestão à internet inteira, sem nenhum port-forward configurado pra ela. Sempre confirme que a saída do ufw status mostra sua sub-rede, não Anywhere.
8. Usuário com sudo
usermod -aG sudo seu_usuario
Saia e conecte de novo (ou newgrp sudo na sessão atual) e confirme com sudo whoami.
9. Instalar o Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
# logout/login pra aplicar o grupo
docker --version
docker compose version
10. Snapshot do estado limpo
Uma vantagem real de rodar isso numa VM: capture esse ponto agora, antes de subir qualquer serviço do laboratório.
VBoxManage snapshot "honeypot-lab" take "so-limpo-hardened" \
--description "Debian instalado, SSH por chave, UFW ativo"
Se algo quebrar mais adiante, volta pra esse estado em segundos:
VBoxManage snapshot "honeypot-lab" restore "so-limpo-hardened"