Uma lista de segurança voltada para DevSecOps
A equipe de segurança da informação preparou as mais atualizadas dicas de segurança para voce utilizar no seu dia-a-dia.
Este contem treinamentos, laboratorios, conferencias, guias e muito mais sobre DevSecOps para voce aplicar em sua equipe.
- O que é DevSecOps ? (Introdução a DevSecOps)
- Introdução ao SAST (Owasp SAST Intro)
- Aplique uma etapa para ferramentas de SAST em seu CI/CD (Teste de segurança no codigo com SAST)
- Exemplos de SAST Open Source (Tutorial SAST open Source)
- Aplique treinamentos periodicos (
1 vez por mês
) de DevSecOps para seu time baseado no conteudo da Awesome DevSecOps (Awesome DevSecOps) - Fique por dentro dos assuntos de segurança RUBY (RubySec)
As melhores e mais atuais dicas de segurança da CMS Wordpress.
-
Altere as chaves de segurança (Gerador disponibilizado pelo WordPress.org)
-
Certifique-se que seu arquivo wp-config.php não possa ser acessado por outras pessoas.
-
Desabilite o editor pelo wp-config.php com o código:
define(‘DISALLOW_FILE_EDIT’,true)
.
- Bloqueie várias tentativas de login (Login Lockdown
ou
iThemes Security) - Ative autenticação de 2 etapas (Google Authenticator)
- Use um email para fazer login ao invés de um nome de usuario (Force Login With Email)
- Altere o endereço da sua página de login (iThemes Security
ou diretamente pelo .htaccess
) - Remova links para sua página de login (
caso exista algum em seu tema
) - Use senhas fortes com letras maiúsculas e minúsculas, números e caracteres especiais em todas as contas (
gerador de senhas
Aleatórioou
Baseado em palavras) - Altere sua senha periodicamente (
Recomendamos um intervalo de 30 dias porem é tolerável utilizar até 90 dias no maximo.
) - Faça com que a mensagem de erro de login seja genérica (
user/pass
) (Tutorial) - Desabilite a API REST do WP caso não esteja utilizando. (Disable REST API)
- Proteja a pasta wp-admin com senha (Desbloqueie apenas os arquivos necessários)
- Atualize o WordPress para sua versão mais recente
- Não utilize uma conta com nome de usuário admin. Caso exista, crie uma nova conta e apague a antiga
- Crie uma conta Editor e use-a somente para publicar seu conteúdo
- Implemente SSL em toda seção administrativa
- Instale algum plugin para verificar se algum arquivo foi editado (Wp Security Scan ouWordfence
ou
iThemes Security) - Escaneie o site a procura de vírus, malwares e falhas de segurança periodicamente (
Ao menos 1 vez por mês.
) (Tutorial)
- Atualize o tema ativo para sua versão mais recente
- Apague temas inativos
- Apenas instale temas de fontes confiáveis
- Remova a versão do WordPress no tema(Tutorial)
- Atualize todos os plugins para suas versões mais recentes
- Apague plugins inativos
- Apenas instale plugins de fontes confiáveis
- Substitua plugins desatualizados por versões alternativas atualizadas
- Pense bem antes de instalar uma centena de plugins
- Altere o prefixo das tabelas (Tutorial)
- Configure backups semanais do seu banco de dados (Backup WP, WP DB Backup,
etc.
) - Use senhas fortes com letras maiúsculas e minúsculas, números e caracteres especiais no usuário do banco de dados (Gerador de Senhas ou Password Meter)
- Contrate uma hospedagem de confiança
(Realize uma pesquisa sobre vazamentos e incidentes de segurança do provedor.)
- Acesse seu servidor apenas por SFTP ou SSH
- Configure as permissões das pastas para 755 e arquivos para 644(Conforme a documentação)
- Certifique-se que seu arquivo wp-config.php não possa ser acessado por outras pessoas
- Remova ou bloqueie via .htaccess os arquivos license.txt, wp-config-sample.php e readme.html
- Desabilite o editor pelo wp-config.php com o código:
define('DISALLOW_FILE_EDIT',true);
- Previna a pesquisa de diretórios via .htaccess com o código:
Options All -Indexes
Siga as dicas abaixo para evitar vazamentos de segredos e vulnerabilidades em seu codigo.
- Utilize o
ShhGit
para escanear o codigo em busca de segredos (shhgit) - Criptografe o codigo usando Git-Crypt (Tutorial)
- Audite seus arquivos Gemfile.lock usando o
bundler-audit
(Bundler-Audit Online) - Utilize uma folha de dicas para agilizar a produção e/ou evitar erros de codigo (DevCode CheatSheets)
- Utilize boas praticas de FrontEnd recomendadas por desenvolvedores de todo o mundo (Front End Checklist)
- Siga as boas praticas em Node.JS (Node Best Practices)
- Utilize um gerenciador de senhas (KeePassXC)
- Utilize cabeçalhos de segurança para evitar ataques de XSS, CSRF, XXE e etc (Analisador de cabeçalhos da web)
- WebHint é uma extensão de navegador que fornece dicas de boas praticas e segurança enquanto voce navega em seu site. (Web Hint)
- Aqui temos uma lista de softwares e dicas relacionadas para segurança (Security Tools)
- Um codigo limpo e bem estrutura ajuda a evitar erros por outros programadores que atuarem no codigo (Clean Code)
- Utilize cookies de segurança em suas aplicações web (Security Cookies WhitePapper)
- Gerencie seus segredos e variaveis com
Teller
(Teller) - Realize consultorias de segurança em seus projetos conforme recomenda Github (Consultorias de segurança do repositório)
Lista das mais importantes medidas de segurança para o desenvolvimento, teste e publicação da sua API.
- Não use
Basic Auth
. Use padrões de autenticação (exemplo: JWT, OAuth). - Não reinvente a roda nos quesitos
Autenticação
,geração de tokens
earmazenamento de senhas
. Use os padrões recomendados para cada caso. - Implemente funcionalidades de limite (
Max Retry
) e bloqueio de tentativas de autenticação. - Use criptografia em todos os dados confidenciais.
- Use uma chave de segurança aleatória e complicada (
JWT Secret
) para tornar ataques de força bruta menos eficientes. - Não utilize o algoritmo de criptografia informado no cabeçalho do payload. Force o uso de um algoritmo específico no back-end (
HS256
ouRS256
). - Defina o tempo de vida do token (
TTL
,RTTL
) o menor possível. - Não armazene informações confidenciais no JWT, pois elas podem ser facilmente decodificadas.
- Sempre valide o
redirect_uri
no seu servidor através de uma lista de URLs conhecidas (previamente cadastradas). - Tente sempre retornar códigos de negociação, não o token de acesso (não permita
response_type=token
). - Utilize o parâmetro
state
com um hash aleatório para previnir CSRF no processo de autenticação OAuth. - Defina escopo de dados, e valide o parâmetro
scope
para cada aplicação.
- Limite a quantidade de requisições (Throttling) para evitar ataques DDoS e de força bruta.
- Use HTTPS no seu servidor para evitar ataques MITM (Man In The Middle Attack).
- Use cabeçalho
HSTS
com SSL para evitar ataques SSL Strip.
- Utilize o método HTTP apropriado para cada operação,
GET (obter)
,POST (criar)
,PUT/PATCH (trocar/atualizar)
eDELETE (apagar)
. - Valide o tipo de conteúdo informado no cabeçalho
Accept
da requisição (Content Negotiation) para permitir apenas os formatos suportados pela sua API (ex.application/xml
,application/json
... etc), respondendo com o status406 Not Acceptable
se ele não for suportado. - Valide o tipo de conteúdo do conteúdo da requisição informado no cabeçalho
Content-Type
da requisição para permitir apenas os formatos suportados pela sua API (ex.application/x-www-form-urlencoded
,multipart/form-data, application/json
... etc). - Valide o conteúdo da requisição para evitar as vulnerabilidades mais comuns (ex.
XSS
,SQL-Injection
,Remote Code Execution
... etc). - Não utilize nenhuma informação sensível (credenciais, senhas, tokens de autenticação) na URL. Use o cabeçalho
Authorization
da requisição. - Use um serviço gateway para a sua API para habilitar cache, limitar acessos sucessivos (ex. por quantidade máxima permitida (Quota), por limitar tráfego em situações de estresse (spike arrest) ou por limitar o número de conexões simultâneas na sua API (Concurrent Rate Limit)), e facilitar o deploy de novas funcionalidades.
- Verifique continuamente os endpoints protegidos por autenticação para evitar falhas na proteção de acesso aos dados.
- Não utilize a identificação do próprio usuário. Use
/me/orders
no lugar de/user/654321/orders
. - Não utilize ID's incrementais. Use UUID.
- Se você estiver processando arquivos XML, verifique que entity parsing não está ativada para evitar ataques de XML externo (XXE - XML external entity attack).
- Se você estiver processando arquivos XML, verifique que entity expansion não está ativada para evitar Billion Laughs/XML bomb através de ataques exponenciais de expansão de XML.
- Use CDN para uploads de arquivos.
- Se você estiver trabalhando com uma grande quantidade de dados, use workers e queues (fila de processos) para retornar uma resposta rapidamente e evitar o bloqueio de requisições HTTP.
- Não se esqueça de desativar o modo de depuração (DEBUG mode OFF).
- Envie o cabeçalho
X-Content-Type-Options: nosniff
. - Envie o cabeçalho
X-Frame-Options: deny
. - Envie o cabeçalho
Content-Security-Policy: default-src 'none'
. - Remova os cabeçalhos de identificação dos softwares do servidor -
X-Powered-By
,Server
,X-AspNet-Version
. - Envie um cabeçalho
Content-Type
na sua resposta com o valor apropriado (ex. se você retorna um JSON, então envie umContent-Type: application/json
). - Não retorne dados sensíveis como senhas, credenciais e tokens de autenticação.
- Utilize o código de resposta apropriado para cada operação. Ex.
200 OK
(respondido com sucesso),201 Created
(novo recurso criado),400 Bad Request
(requisição inválida),401 Unauthorized
(não autenticado),405 Method Not Allowed
(método HTTP não permitido) ... etc.
- Monitore a especificação e implementação do escopo da sua API através de testes unitários e de integração.
- Use um processo de revisão de código, ignorando sistemas de auto-aprovação.
- Certifique-se de que todos os componentes de seus serviços sejam validados por softwares AV (anti-vírus, anti-malware) antes de enviar para produção, incluindo as dependências de terceiros utilizadas.
- Implemente funcionalidade de reversão de deploy (rollback).
- Utilize uma API gateway dedicada e segura (KONG)
Aqui se encontrará diversos modelos de hardening em uma diversidade de tecnologias.
- Estes são baselines de hardening para as tecnologias que voce utiliza em seu ambiente como:
MySQL, PostgreSQL, Nginx, SSH, Docker e muito mais...
(Dev -> Sec) - Base lines para Linux (Linux Base Lines
puppet, chef e ansible
) - CIS Kubernetes (CIS BenchMark)
- Segurança no Nginx (Nginx Security Base line)
- Base line para PostgreSQL (Security in PostgreSQL)
- Base line para MySQL (MySQL security)
- Base line para SSH (Hardening SSH)
- Hardening para servidores da web (Web Server Hardening)
- Hardening em containers (Docker Bench)
- Hardening completo para sistemas linux (O Guia Pratico do Linux Harning)
Estas dicas ajudaram a rastrear eventos que acontecem no sistema seja eventos de segurança ou tecnicos.
Elas tambem forneceram uma serie de ferramentas que combinadas com agendadores de tarefas como cron, fornerá uma visão geral de segurança em seu ambiente.
- Audite seus arquivos Gemfile.lock usando o
bundler-audit
(Bundler-Audit Online)
- Configure o
auditd
(AUDITORIA DO SISTEMA) - Utilize o
Tiger
para melhorar a postura de segurança em seu ambiente, ele pode realiza auditorias (1 vez por mês
) automaticas em seu ambiente (Tutorial) - Realize auditorias periodicas (
1 vez por mês
) comLynis
(Tutorial) - Utilize o
Wazuh
para manter um controle de inventario e FIM (File Integrity Monitoring
) (Wazuh Open Source) - Rode o
LinEnum
periodicamente (1 vez por mês
) em seu ambiente para obter uma visão geral de segurança (LinEnum) - Utilize o
RkHunter
para procurar rootkits periodicamente em seu ambiente (RootKit Hunter) - Utilize
trivy
para escanear imagens de containers em busca de vulnerabilidaes (TriVy) - Utilize GoHarbor para escaner suas imagens containers em busca de malware (GoHarbor)