Posto de Observação

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.

nota

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"
atenção

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
não feche a sessão ainda

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
confira o ipv4 e o ipv6

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"