thumbnail

Fui Hackeado, mas eu voltei.....

Yuri do Monte Yuri do Monte | 3 min de leitura
há 2 semanas

Meu Blog Foi de "Hello, World!" para "Hello, Hacker!" em 30 Segundos: Uma Lição sobre Docker e Senhas Voadoras

E aí, galera do código! Hoje, vou contar uma história de terror para desenvolvedores, mas com um final feliz e educativo. Sabe aquele dia em que você acorda, toma seu café, abre o terminal e descobre que seu projeto virou o playground de um hacker? Pois é, aconteceu comigo.

Meu blog,  meu cantinho na web, foi sequestrado. E o resgate? Um arquivo .zip, uma exigência em bitcoins e uma risada maléfica ecoando na minha cabeça. Mas o mais irônico é que a porta de entrada não foi um ataque hacker digno de filme, mas um erro bobo que eu mesmo cometi.


A Cena do Crime: O docker-compose.yml da Discórdia

Depois de muito investigar (e surtar um pouquinho), descobri a arma do crime: meu próprio arquivo docker-compose.yml. Ele estava mais ou menos assim:


mysql:
    image: mysql:8.0
    container_name: laravel-mysql
    environment:
      MYSQL_ROOT_PASSWORD: senhasupersecreta123
      MYSQL_DATABASE: meu_blog_db
      MYSQL_USER: usuario_do_blog
      MYSQL_PASSWORD: senhamaissecretainda456
    volumes:
      - mysql_data:/var/lib/mysql
    networks:
      - laravel


À primeira vista, parece inofensivo, certo? Afinal, está tudo ali, organizadinho. ERRADO!

Eu, na minha inocência, deixei as senhas do meu banco de dados expostas como se fossem amostras grátis em supermercado. Qualquer pessoa com acesso ao meu repositório no GitHub (ou que simplesmente desse uma espiadinha) poderia ver minhas credenciais e fazer a festa.

Foi como deixar a chave de casa debaixo do tapete com um letreiro em neon piscando: "PODE ENTRAR!".


A Solução: Escondendo o Tesouro no Lugar Certo

Depois de chorar em posição fetal e prometer nunca mais programar na vida (drama, eu sei), encontrei a luz no fim do túnel: as variáveis de ambiente e o famoso arquivo .env.

A ideia é simples: em vez de deixar suas senhas e dados sensíveis "voando" no docker-compose.yml, você as guarda em um arquivo separado, que NUNCA é enviado para o repositório.

Ficou assim:

1. O novo docker-compose.yml (agora mais inteligente):

mysql:
    image: mysql:8.0
    container_name: laravel-mysql
    environment:
      MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
      MYSQL_DATABASE: ${DB_DATABASE}
      MYSQL_USER: ${DB_USERNAME}
      MYSQL_PASSWORD: ${DB_PASSWORD}
    volumes:
      - mysql_data:/var/lib/mysql
    networks:
      - laravel


Percebeu a mágica? Agora, em vez das senhas, temos ${VARIAVEL}. O Docker Compose é esperto o suficiente para buscar esses valores em outro lugar.

2. O arquivo .env (o cofre das senhas):

Criei um arquivo chamado .env na raiz do projeto com o seguinte conteúdo:

DB_ROOT_PASSWORD=minha-senha-super-mega-blaster-secreta
DB_DATABASE=meu_blog_db
DB_USERNAME=usuario_do_blog
DB_PASSWORD=outra-senha-que-nem-eu-lembro

3. O .gitignore (o segurança da festa):

Para garantir que o .env não vá parar no GitHub, adicionei uma linha ao meu .gitignore:

.env


Pronto! Agora, minhas senhas estão seguras no meu ambiente local, e o docker-compose.yml pode ser compartilhado sem medo. O hacker? Bom, ele vai ter que trabalhar um pouco mais da próxima vez, mas por favor NÃO FAÇA ISSO EU TENHO FAMÍLIA!!!

Lição Aprendida: Não Dê Sopa para o Azar (ou para o Hacker)

Essa experiência me ensinou da forma mais difícil que, em programação, um pequeno descuido pode causar uma grande dor de cabeça. Usar variáveis de ambiente é uma prática de segurança fundamental e muito simples de implementar.

Então, fica a dica: revise seus arquivos de configuração, proteja suas credenciais e nunca, JAMAIS, deixe suas senhas expostas. A não ser que você queira acordar um dia e descobrir que seu blog virou um site de receitas de bolo em russo.

E você, já passou por algum perrengue de segurança? Compartilhe sua história nos comentários! Vamos rir (e aprender) juntos.

Comentários

Realize login para comentar neste post
Este post não possui comentários