Implantando Defesa SecOps com Capacidade de Banco de Dados IoC
Implantando Defesa SecOps com Capacidade de Banco de Dados IoC. Coletar, triar, atacar e distribuir indicadores de comprometimento para proteger usuários.
Como Construir e Implantar um App Full Stack de Denúncia de Golpes com Rails
Este guia orienta você na configuração, execução e implantação de uma aplicação full stack de denúncia de golpes construída com Ruby on Rails. O app permite que usuários denunciem Indicadores de Comprometimento (IOCs), acompanhem o progresso, anexem evidências e colaborem em casos.
Recursos
- Denunciar e rastrear IOCs com múltiplas integrações de API
- Mais eficiente que planilhas
- Permite que usuários não autorizados enviem IOCs
- Suporta anexo de evidências e rastreamento
- Permite que múltiplos usuários trabalhem no mesmo IOC
1. Importando Dados CSV no PostgreSQL
Para importar dados CSV no Postgres, certifique-se de que:
- Células vazias estão definidas como
null - Timestamps placeholder para
created_ateupdated_atexistem se nenhum for fornecido - A ordem das colunas corresponde à estrutura da tabela
Passos:
- Acesse PostgreSQL no Heroku:
1
heroku pg:psql -a scam-hitlist - Execute o seguinte comando:
1
\copy iocs(id,url,created_at,updated_at,removed_date,status,report_method_one,report_method_two,form,host,follow_up_date,follow_up_count,comments) FROM './lib/data.csv' WITH DELIMITER ',' NULL AS 'null' CSV HEADER;
- Mensagem de sucesso:
copy 7000(ou número similar)
2. Configuração
- Instale dependências:
1
bundle install - Configure o banco de dados:
1
rails db:drop db:create db:migrate db:seed
3. Executando o App
- Inicie o servidor e execute JavaScript:
1
dev
- Se recursos de front-end estiverem faltando, compile assets:
1
rails assets:precompile
4. Configuração do Banco de Dados
Após semear o banco de dados, atualize manualmente o próximo ID:
1
2
3
highest_id = Ioc.maximum(:id)
next_available_id = highest_id + 1
ActiveRecord::Base.connection.execute("SELECT setval('iocs_id_seq', #{next_available_id}, false)")
Para redefinir a sequência do banco de dados:
1
heroku restart; heroku pg:reset DATABASE --confirm APP-NAME; heroku run rake db:migrate
5. Implantando no Heroku
Adicionar Buildpacks Necessários
- Chrome:
1
heroku buildpacks:add heroku/google-chrome --index=1
- Node.js:
1
heroku buildpacks:add heroku/nodejs --index=2
- Puppeteer (opcional):
1
heroku buildpacks:add jontewks/puppeteer --index=3
- Defina a variável de ambiente:
1
heroku config:set PUPPETEER_SKIP_DOWNLOAD=true [--remote yourappname]
Configurar Grover em config/initializers/grover.rb:
1
2
3
4
5
Grover.configure do |config|
config.options = {
executable_path: "google-chrome"
}
end
6. Recursos de Segurança
- Validação de arquivo: Limita o tamanho do arquivo a 5MB, permite apenas PDFs, .eml, JPEG, PNG e TXT
- Sanitização: Remove ataques XSS de entradas de formulário
- Parâmetros fortes
- Tags meta CSRF
- Algoritmo de hash forte para assinaturas de cookie (SHA-256)
- Sem métodos
open-uri,Marshal,html_safeouraw - Omniauth restrito a duas contas Google Enterprise
- Limitação de rotas
- Verificações de segurança automatizadas:
bundler-auditpara dependênciasbrakemanpara revisão de códigoOSWAP dependency check
7. Testes
- Use RSpec para testes de controlador
- Crie instâncias de modelo antes de testar
- Use
letpara definir variáveis em testes
8. Configuração Docker
- Redefina o ID mais alto do IOC (veja seção Configuração do Banco de Dados)
- Execute localmente:
1
docker-compose build && docker-compose up - Compile e envie para Docker Hub:
1 2
docker build -t yourusername/scam-hitlist:latest . docker push yourusername/scam-hitlist:latest
- Acesse o console Rails dentro do container:
1 2
docker container ps docker exec -it <container ID> bin/rails c
9. Implantando na AWS
Passos:
- Implantar no Amazon ECR:
- Certifique-se de que o Docker está rodando
- Marque e envie para o repositório AWS:
1 2
docker tag <name> <aws_repo_name> docker push <aws_repo_name>
- Criar Cluster Kubernetes:
1
eksctl create cluster --region your-region --name root --managed
- Criar Banco de Dados RDS:
- Use Free Tier com porta
5432 - Atribua grupos de segurança para permitir acesso do container
- Use Free Tier com porta
- Definir Credenciais do Banco de Dados no Kubernetes:
1 2
echo -n "<username>" | base64 echo -n "<password>" | base64
- Armazene valores em um arquivo YAML e crie um segredo:
1
kubectl create -f secrets.yaml
- Armazene valores em um arquivo YAML e crie um segredo:
- Implantar o App no Kubernetes:
1 2
kubectl create -f deployment.yaml kubectl get pods
Acessar Console no Kubernetes:
1
kubectl exec -it <pod ID> -- /bin/bash
Para Alpine:
1
kubectl exec -it <pod ID> -- /bin/sh
Migrar e Semear o Banco de Dados:
1
2
bundle exec rake db:migrate
bundle exec rake db:seed
Conclusão
Seguindo este guia, você pode configurar, executar e implantar com sucesso seu app Rails de denúncia de golpes no Heroku, Docker e AWS. Isso garante denúncia, rastreamento e gerenciamento eficientes de IOCs com uma infraestrutura escalável e segura.
