Documentação e guias de referência

Referências rápidas para manter abertas enquanto você trabalha. Pesquise em todas as folhas de consulta de uma só vez.

Cibersegurança

OWASP Top 10 (2021)

Os dez riscos de segurança mais críticos em aplicações web e o que cada um significa.

RiscoO que significa
A01Falhas no controle de acesso: usuários acessam dados ou ações sem autorização.
A02Falhas criptográficas: dados sensíveis enviados ou armazenados sem criptografia forte.
A03Injeção: a entrada é executada como SQL, shell ou outro código. Inclui cross-site scripting.
A04Design inseguro: a segurança não foi planejada desde o início.
A05Configuração incorreta de segurança: senhas padrão, armazenamento aberto, erros com detalhes excessivos.
A06Componentes vulneráveis e desatualizados: bibliotecas antigas com falhas conhecidas.
A07Falhas de identificação e autenticação: logins fracos, ausência de MFA e sessões mal gerenciadas.
A08Falhas de integridade de software e dados: atualizações e pipelines não verificados.
A09Falhas de registro e monitoramento de segurança: ataques passam despercebidos.
A10Falsificação de requisições do lado do servidor: o servidor é induzido a acessar endereços internos.

Cibersegurança

Etapas da resposta a incidentes

O ciclo de vida de resposta a incidentes do NIST, na ordem em que você o executa.

EtapaO que você faz
PreparaçãoTenha planos, contatos, ferramentas e backups prontos antes que algo aconteça.
Detecção e análiseIdentifique o incidente, confirme-o e avalie sua gravidade.
ContençãoImpeça a propagação: isole máquinas, bloqueie contas ou endereços.
ErradicaçãoRemova a causa: malware, backdoors e contas comprometidas.
RecuperaçãoRestaure os sistemas a partir de backups limpos e monitore-os de perto.
Lições aprendidasRegistre o que aconteceu e corrija as falhas para evitar que se repita.

Redes

Portas comuns

Portas que você encontrará em servidores, varreduras e regras de firewall.

PortaServiço
20/tcp · FTP dataCanal de dados para transferência de arquivos. Sem criptografia: prefira SFTP.
21/tcp · FTPControle de transferência de arquivos. Envia senhas em texto aberto.
22/tcp · SSHLogin remoto e cópia de arquivos seguros (SFTP, SCP).
23/tcp · TelnetLogin remoto antigo sem criptografia. Desative-o e use SSH.
25/tcp · SMTPEntrega de e-mails entre servidores de e-mail.
53/tcp/udp · DNSConsultas de nomes de domínio.
67/udp · DHCPDistribui endereços IP em uma rede local.
80/tcp · HTTPTráfego web não criptografado. Redirecione para HTTPS.
110/tcp · POP3Download de e-mails (antigo, sem criptografia).
123/udp · NTPSincronização de horário.
143/tcp · IMAPLeitura de e-mails no servidor (sem criptografia).
161/udp · SNMPMonitoramento de dispositivos de rede. Altere as strings de comunidade padrão.
389/tcp · LDAPServiços de diretório, como o Active Directory.
443/tcp · HTTPSTráfego web criptografado (HTTP sobre TLS).
445/tcp · SMBCompartilhamento de arquivos do Windows. Nunca o exponha à internet.
587/tcp · SMTP submissionEnvio de e-mails de um aplicativo ou cliente de e-mail, com TLS.
993/tcp · IMAPSLeitura de e-mails via TLS.
1433/tcp · MS SQLBanco de dados Microsoft SQL Server.
3306/tcp · MySQLBancos de dados MySQL e MariaDB. Mantenha-os privados.
3389/tcp · RDPÁrea de Trabalho Remota do Windows. Um alvo frequente: coloque-a atrás de uma VPN.
5432/tcp · PostgreSQLBanco de dados PostgreSQL. Mantenha-o privado.
6379/tcp · RedisCache Redis. Frequentemente deixado aberto sem senha.
8080/tcp · HTTP altPorta comum para servidores de desenvolvimento e proxies.
27017/tcp · MongoDBBanco de dados MongoDB. Mantenha-o privado.

Desenvolvimento de software

Códigos de status HTTP

O que significam os números nas respostas de API e nos erros do navegador.

CódigoSignificado
200 OKA solicitação foi bem-sucedida.
201 CreatedUm novo recurso foi criado.
204 No ContentFuncionou e não há nada para retornar.
301 Moved PermanentlyO endereço mudou permanentemente; siga o novo.
304 Not ModifiedSua cópia em cache ainda está atualizada.
400 Bad RequestA solicitação está malformada ou é inválida.
401 UnauthorizedUsuário não autenticado, ou o token está ausente ou expirado.
403 ForbiddenAutenticado, mas sem permissão para fazer isso.
404 Not FoundNão há nada neste endereço.
409 ConflictA solicitação entra em conflito com o estado atual, como no caso de uma duplicação.
429 Too Many RequestsUm limite de requisições foi atingido; aguarde e tente novamente.
500 Internal Server ErrorAlgo deu errado no servidor.
502 Bad GatewayUm servidor intermediário recebeu uma resposta inválida do próximo servidor.
503 Service UnavailableO servidor está sobrecarregado ou indisponível para manutenção.

Desenvolvimento de software

Guia de referência de comandos Git

Os comandos Git que você usa em quase todos os dias de trabalho.

ComandoO que faz
git clone <url>Copie um repositório para o seu computador.
git statusVeja o que mudou e o que está na área de preparação.
git add -pAdicione alterações à área de preparação aos poucos, após revisá-las.
git commit -m "message"Salve um snapshot com uma mensagem.
git switch -c featureCrie uma branch e mude para ela.
git pull --rebaseObtenha as alterações mais recentes e reaplique as suas sobre elas.
git push -u origin featureEnvie sua branch e configure o rastreamento.
git log --oneline --graphMostre um histórico compacto com branches.
git diffMostre alterações que ainda não estão na área de preparação.
git stashGuarde alterações inacabadas para depois.
git revert <commit>Desfazer um commit com um novo commit, preservando o histórico.

Nuvem e Linux

Guia rápido de comandos Linux

Os comandos que você usará todos os dias em um servidor Linux.

ComandoO que faz
pwdMostre a pasta em que você está.
ls -laListe todos os arquivos com detalhes, incluindo os ocultos.
cd /var/logMova para outra pasta.
cat file.txtExiba um arquivo.
less file.txtLeia um arquivo longo página por página.
grep -i error app.logEncontre linhas que contenham uma palavra, sem diferenciar maiúsculas de minúsculas.
chmod 755 script.shAltere as permissões de um arquivo.
chown user:group fileAltere o proprietário de um arquivo.
ps auxListe os processos em execução.
topMonitore o uso de CPU e memória em tempo real.
df -hMostre o espaço livre em disco.
sudo apt update && sudo apt upgradeInstale atualizações no Debian ou Ubuntu.
ssh user@hostConecte-se a um servidor remoto.
tail -f /var/log/syslogAcompanhe um arquivo de log conforme ele cresce.

Nuvem e Linux

Comandos do Docker e Kubernetes

Crie, execute e depure contêineres e depois gerencie-os em um cluster.

ComandoO que faz
docker build -t app .Crie uma imagem a partir do Dockerfile nesta pasta.
docker run -p 8080:80 appExecute a imagem e exponha a porta 80 como 8080.
docker psListe os contêineres em execução.
docker logs -f <id>Acompanhe a saída de um contêiner.
docker exec -it <id> shAbra um shell dentro de um contêiner em execução.
kubectl get podsListe os pods no namespace atual.
kubectl describe pod <name>Mostre detalhes e eventos recentes de um pod.
kubectl logs <pod>Exiba os logs de um pod.
kubectl apply -f deploy.yamlCrie ou atualize recursos a partir de um arquivo.
kubectl rollout undo deployment/appReverta para a versão anterior.

Redes

Tipos de registros DNS

Os registros que você encontrará em uma zona DNS e a função de cada um.

RegistroFinalidade
AMapeia um nome para um endereço IPv4.
AAAAMapeia um nome para um endereço IPv6.
CNAMETorna um nome um alias de outro.
MXIndica quais servidores de e-mail recebem mensagens para o domínio.
TXTTexto livre, usado para SPF, DKIM e verificações de propriedade do domínio.
NSLista os servidores de nomes responsáveis pelo domínio.
SOAInício de autoridade: as configurações principais e o número de série da zona.
PTRConsulta reversa: mapeia um endereço IP de volta para um nome.
SRVAponta para o host e a porta de um serviço específico.
CAARestringe quais autoridades certificadoras podem emitir certificados.

Redes

Tabela de CIDR e máscaras de sub-rede

Comprimento do prefixo, máscara de sub-rede, total de endereços e hosts utilizáveis.

PrefixoMáscara · total · utilizáveis
/8255.0.0.0 · 16,777,216 · 16,777,214
/16255.255.0.0 · 65,536 · 65,534
/20255.255.240.0 · 4,096 · 4,094
/22255.255.252.0 · 1,024 · 1,022
/24255.255.255.0 · 256 · 254
/25255.255.255.128 · 128 · 126
/26255.255.255.192 · 64 · 62
/27255.255.255.224 · 32 · 30
/28255.255.255.240 · 16 · 14
/29255.255.255.248 · 8 · 6
/30255.255.255.252 · 4 · 2
/32255.255.255.255 · 1 · 1

Redes

Comandos para diagnóstico de rede

Comandos para descobrir onde uma conexão falha. Teste apenas sistemas que sejam seus ou que você tenha permissão para testar.

ComandoO que faz
ping -c 4 example.comVerifique se um host responde e quanto tempo leva.
traceroute example.comMostre todos os roteadores pelos quais um pacote passa no caminho.
dig example.com AConsulte os registros DNS de um nome.
nslookup example.comUma consulta DNS mais simples que funciona na maioria dos sistemas.
curl -I https://example.comObtenha apenas os cabeçalhos de resposta de uma página web.
ip addrMostre suas interfaces de rede e endereços IP.
ip routeMostre para onde o tráfego é enviado, incluindo o gateway padrão.
ss -tulpnListe as portas em escuta e os programas que as abriram.
nmap -sV 192.168.1.10Faça uma varredura em um host seu para ver portas abertas e versões dos serviços.
tcpdump -i eth0 port 53Capture pacotes DNS em uma interface.

Desenvolvimento de software

Guia rápido de SQL

As instruções usadas na maioria das operações com bancos de dados. Sempre passe a entrada do usuário como parâmetros, nunca concatenando strings.

InstruçãoO que faz
SELECT name, email FROM users;Leia colunas de uma tabela.
SELECT * FROM orders WHERE total > 100;Filtre linhas com uma condição.
ORDER BY created_at DESC LIMIT 10Ordene o resultado e mantenha apenas as primeiras linhas.
INSERT INTO users (name) VALUES ($1);Adiciona uma linha. $1 é um parâmetro preenchido de forma segura.
UPDATE users SET name = $1 WHERE id = $2;Altere linhas existentes. Nunca se esqueça do WHERE.
DELETE FROM sessions WHERE expires_at < now();Remova as linhas que correspondam aos critérios.
JOIN orders ON orders.user_id = users.idCombine linhas de duas tabelas que compartilham um valor.
SELECT status, count(*) FROM orders GROUP BY status;Agrupe linhas e faça contagens ou somas.
CREATE INDEX ON users (email);Acelere as buscas em uma coluna.
BEGIN; ... COMMIT;Execute várias instruções como uma única transação: tudo ou nada.

Desenvolvimento de software

Guia rápido de expressões regulares

Padrões para buscar e validar texto. Experimente-os na ferramenta de teste de Regex.

PadrãoCorrespondências
.Qualquer caractere único, exceto uma quebra de linha.
\d \w \sUm dígito, um caractere de palavra, um caractere de espaço em branco.
^ $O início e o fim do texto.
\bUm limite de palavra.
* + ?Zero ou mais, um ou mais, zero ou uma ocorrência do item anterior.
{2,4}Entre 2 e 4 do item anterior.
[abc] [^abc]Um dos caracteres listados ou qualquer caractere não listado.
(cat|dog)Um grupo que corresponde a cat ou dog e memoriza a correspondência.
(?:cat|dog)O mesmo grupo sem memorizá-lo.
(?=x)Um lookahead: somente se x vier a seguir, sem consumi-lo.

Nuvem e Linux

Noções básicas de scripts Bash

Os elementos básicos dos scripts de shell para automação.

SintaxeSignificado
#!/usr/bin/env bashPrimeira linha: qual programa executa o script.
set -euo pipefailInterrompa a execução em caso de erros, variáveis não definidas e falhas em pipelines. Um padrão mais seguro.
name="web01"; echo "$name"Defina e use uma variável. Coloque-a entre aspas para preservar os espaços.
if [ -f "$file" ]; then ... fiExecute comandos apenas se uma condição for verdadeira; neste caso, se um arquivo existir.
for f in *.log; do ... doneRepita comandos para cada item de uma lista.
cmd1 | cmd2Envie a saída de um comando para outro.
cmd > out.txt cmd >> out.txtGrave a saída em um arquivo, substituindo ou acrescentando ao conteúdo existente.
$?O código de saída do último comando. 0 significa sucesso.
cmd1 && cmd2 cmd1 || cmd2Execute o segundo apenas se o primeiro tiver sucesso ou apenas se falhar.
chmod +x script.sh && ./script.shTorne um script executável e execute-o.

Nuvem e Linux

Sintaxe de agendamento cron

Cinco campos: minuto, hora, dia do mês, mês e dia da semana. Experimente no guia explicativo de Cron.

ExpressãoExecuções
* * * * *A cada minuto.
*/15 * * * *A cada 15 minutos.
0 * * * *No início de cada hora.
0 2 * * *Todos os dias às 02:00.
30 9 * * 1-5Às 09:30 nos dias de semana, de segunda a sexta.
0 0 1 * *À meia-noite do primeiro dia de cada mês.
0 0 * * 0À meia-noite de todo domingo.
0 8,20 * * *Duas vezes por dia, às 08:00 e às 20:00.

Nuvem e Linux

Modos de permissão do Linux

Valores comuns de chmod e quando usá-los. Leitura é 4, escrita é 2 e execução é 1.

ModoSignificado
777 rwxrwxrwxTodos podem fazer tudo. Quase nunca é correto.
755 rwxr-xr-xAcesso total para o proprietário; leitura e execução para os demais. Comum para programas e pastas.
750 rwxr-x---Acesso total para o proprietário; leitura e execução para o grupo; nenhum acesso para os demais.
700 rwx------Somente o proprietário tem acesso. Ideal para pastas privadas.
664 rw-rw-r--Proprietário e grupo podem editar; os demais podem ler.
644 rw-r--r--O proprietário pode editar; todos podem ler. Comum para arquivos da web.
640 rw-r-----O proprietário edita; o grupo lê. Ideal para arquivos de configuração com senhas.
600 rw-------Somente o proprietário pode ler e escrever. Necessário para chaves privadas SSH.
400 r--------Somente leitura para o proprietário. Ideal para chaves que nunca mudam.

Cibersegurança

Cabeçalhos de segurança web e flags de cookies

Cabeçalhos de resposta que fazem os navegadores impor um comportamento mais seguro.

Cabeçalho ou flagO que protege
Content-Security-PolicyRestringe as origens de carregamento de scripts, imagens e frames. Forte proteção contra XSS.
Strict-Transport-SecurityInstrui os navegadores a sempre usar HTTPS para este site.
X-Content-Type-Options: nosniffImpede que navegadores tentem adivinhar tipos de arquivo e executem scripts disfarçados.
X-Frame-Options: DENYImpede que outros sites exibam o seu em um frame (clickjacking).
Referrer-PolicyControla quanto do seu endereço é enviado a outros sites.
Permissions-PolicyDesativa recursos do navegador, como câmera ou localização, para a página.
Set-Cookie: HttpOnlyOculta o cookie do JavaScript, impedindo que XSS o roube.
Set-Cookie: SecureEnvia o cookie apenas por HTTPS.
Set-Cookie: SameSite=LaxRestringe cookies em requisições entre sites, reduzindo o risco de CSRF.
Access-Control-Allow-OriginCORS: quais outros sites podem ler as respostas da sua API.

Cibersegurança

Criptografia em resumo

Qual algoritmo usar para cada tarefa e quais evitar.

AlgoritmoO que é e quando usar
AES-256-GCMCriptografia simétrica rápida para dados em repouso e em trânsito. A mesma chave criptografa e descriptografa.
ChaCha20-Poly1305Uma cifra simétrica moderna, ótima para celulares sem AES em hardware.
RSA 2048+Criptografia de chave pública e assinaturas. Mais lenta, usada principalmente para trocar chaves.
ECDSA / Ed25519Assinaturas compactas de chave pública com chaves menores que as do RSA.
Diffie-HellmanPermite que duas partes estabeleçam um segredo compartilhado por um canal aberto.
SHA-256Um hash criptográfico para impressões digitais e verificações de integridade. Não serve para senhas.
HMACUm hash combinado com uma chave secreta para comprovar que uma mensagem não foi alterada.
bcrypt / Argon2Hashes lentos, com salt, feitos para armazenar senhas.
TLS 1.3O protocolo por trás do HTTPS. Use-o e desative as versões antigas.
MD5 / SHA-1Inseguros para uso em segurança. Nunca os use para assinaturas ou senhas.

Cibersegurança

Glossário de ataques comuns

Definições em linguagem simples dos ataques de que você mais ouvirá falar.

AtaqueO que é
PhishingMensagens falsas que enganam as pessoas para que revelem senhas ou cliquem em links maliciosos.
RansomwareMalware que bloqueia arquivos e exige pagamento para desbloqueá-los.
DDoSSobrecarregar um serviço com tráfego de várias máquinas para impedir o acesso de usuários reais.
Man-in-the-middlePosicionar-se secretamente entre duas partes para ler ou alterar suas mensagens.
Força brutaTestar várias senhas até que uma funcione.
Credential stuffingTestar pares de usuário e senha vazados em outros sites.
Zero-dayUm ataque a uma falha que o fornecedor ainda desconhece e para a qual, portanto, não existe correção.
Ataque à cadeia de suprimentosComprometer um fornecedor ou pacote de software para atingir seus clientes.
Escalada de privilégiosTransformar acesso limitado em acesso de administrador.
Engenharia socialManipulação de pessoas, em vez de computadores, para obter acesso.
Ameaça internaDanos causados por alguém com acesso legítimo, de propósito ou por acidente.

Cibersegurança

Táticas do MITRE ATT&CK

As 14 etapas percorridas por atacantes, uma linguagem comum para defensores.

TáticaO objetivo do atacante
ReconhecimentoColetar informações sobre o alvo.
Desenvolvimento de recursosPrepare a infraestrutura, as contas e as ferramentas para o ataque.
Acesso inicialObter acesso inicial, por exemplo, por meio de phishing.
ExecuçãoExecutar código malicioso no sistema.
PersistênciaMantenha o acesso após reinicializações e alterações de senha.
Escalada de privilégiosObter permissões mais elevadas.
Evasão de defesasEvitar ser detectado ou bloqueado.
Acesso a credenciaisRoubar nomes de contas e senhas.
DescobertaConheça o ambiente e o que há nele.
Movimentação lateralMover-se de um sistema para outros na rede.
ColetaColetar os dados de interesse.
Comando e controleComunicar-se com sistemas comprometidos para controlá-los.
ExfiltraçãoExfiltrar os dados da rede.
ImpactoInterromper, destruir ou bloquear sistemas e dados.