Guia Foca - Segurança

Gleydson Mazioli da Silva

Versão 1.00 - segunda, 27 de julho de 2020

O Guia Foca Segurança é protegido pelos termos da licença CC BY-NC-SA. Para detalhes, veja “Licença CC BY-NC-SA”

segunda, 27 de julho de 2020

Resumo

Este guia tem por objetivo ser uma referência ao aprendizado do usuário e um manual de compreensão, configuração e implantação de técnicas de segurança que podem ser utilizadas em ambientes Linux (e outros sistemas operacionais), bem como em seu comportamento no dia a dia. As últimas versões do Guia Foca segurança podem ser encontrados em Página Oficial do Guia Foca Segurança. Novas versões são lançadas com uma frequência mensal e você pode receber avisos de novos lançamentos deste guia preenchendo um formulário na página Web, ou seguindo o perfil oficial do Twitter @guiafoca.


Índice

1. Introdução
Considerações sobre o nível Segurança
Antes de começar
Pré-requisitos para a utilização deste guia
Distribuições voltadas a Profissionais de Segurança
2. Explicações Básicas
O que é Segurança e porque tornar um sistema seguro?
Os 4 pilares da segurança
LPI 303
3. Arquivos e daemons de Log
Formato do arquivo de log
Daemon de log do sistema
rsyslogd
Arquivo de configuração rsyslog.conf
logger
Programas úteis para monitoração e gerenciamento de arquivos de logs
logcheck
logrotate
Configurando um servidor de logs
4. Gerenciamento de contas e cuidados para a proteção de senhas
Introdução
Criação, monitoramento e segurança de contas
Definindo valores padrões de restrição
Senhas fáceis de adivinhar e a escolha de boas senhas
Atualização de senhas de múltiplas contas
A senha do usuário root
Tipos de ataques mais comuns para se conseguir uma senha.
Dedução
Engenharia Social
Ataques por dicionário
Brute Force
Monitoramento de toques do teclado
Login falso
Melhorando a segurança das senhas armazenadas em seu sistema
Shadow Passwords
Senhas Sha512, SHA256 e MD5
5. Firewall iptables
Introdução
Versão
Um resumo da história do iptables
Características do firewall iptables
Ficha técnica
Requerimentos
Arquivos de logs criados pelo iptables
Instalação
Enviando Correções/Contribuindo com o projeto
O que aconteceu com o ipchains e ipfwadm?
Tipos de firewalls
O que proteger?
O que são regras?
O que são chains?
O que são tabelas?
Habilitando o suporte ao iptables no kernel
Ligando sua rede interna a Internet
Manipulando chains
Adicionando regras - A
Listando regras - L
Apagando uma regra - D
Inserindo uma regra - I
Substituindo uma regra - R
Criando um novo chain - N
Renomeando um chain criado pelo usuário - E
Listando os nomes de todas as tabelas atuais
Limpando as regras de um chain - F
Apagando um chain criado pelo usuário - X
Zerando contador de bytes dos chains - Z
Especificando a política padrão de um chain - P
Outras opções do iptables
Especificando um endereço de origem/destino
Especificando a interface de origem/destino
Especificando um protocolo
Especificando fragmentos
Especificando uma exceção
Especificando um alvo
Salvando e Restaurando regras
A tabela nat (Network Address Translation) - fazendo nat
Criando um novo chain na tabela NAT
Fazendo IP masquerading (para os apressados)
Fazendo SNAT
Fazendo DNAT
Monitorando conexões feitas na tabela nat
A tabela mangle
Especificando o tipo de serviço
Especificando o TOS para tráfego de saída
Outros módulos do iptables
Conferindo de acordo com o estado da conexão
Limitando o número de vezes que a regra confere
Proteção contra ping da morte
Proteção contra syn flood
Proteção contra IP spoofing
Especificando múltiplas portas de origem/destino
Especificando o endereço MAC da interface
Conferindo com quem criou o pacote
Conferindo com o conteúdo do pacote
Conferindo com o tempo de vida do pacote
Conferindo com números RPC
Conferindo com tipo de pacote
Conferindo com o tamanho do pacote
Caminho percorrido pelos pacotes nas tabelas e chains
Ping de 192.168.1.1 para 192.168.1.1
Conexão FTP de 192.168.1.1 para 192.168.1.1
Conexão FTP de 192.168.1.1 para 192.168.1.4
Conexão FTP de 200.217.29.67 para a máquina ftp.debian.org.br
Ping de 192.168.1.4 para 192.168.1.1
Conexão FTP de 192.168.1.4 para 192.168.1.1
Conexão FTP de 192.168.1.4 para ftp.debian.org.br
Conexão FTP de 200.198.129.162 para 200.217.29.167
Gráfico geral da passagem dos pacotes
Exemplos de configurações do iptables
Bloqueando conexões de fora para sua máquina
Monitorando tentativa de conexão de trojans em sua máquina
Conectando sua rede interna a Internet
Um exemplo de firewall simples
6. Restrições de acesso, recursos e serviços
Limitando recursos no bash
Uso do comando readonly para exportar variáveis
Restrições nos diretórios de usuários e root
Restrições básicas do shell bash com bash -r/--restricted, rbash
Finalizando consoles inativos
Desabilitando o registro de comandos digitados
Desabilitando serviços de shell para usuários
Limitação de recursos usando PAM
Descobrindo se um determinado programa tem suporte a PAM
Definindo uma política padrão restritiva
Restringindo/Bloqueando o login
Restringindo o acesso a root no su
Restrições de serviços PAM baseados em dia/hora
Permitindo acesso a grupos extras
Limitação de recursos do shell
Restrições de acesso a programas/diretórios/arquivos usando grupos
Dando poderes de root para executar determinados programas
Restringindo o comando su
Restrições baseadas em usuário/IP
Restrições por MAC Address/IP
Desabilitando serviços não usados no Inetd
Evitando o uso de hosts.equiv e .rhosts
Restringindo o uso do shutdown
Restringindo o acesso ao sistema de arquivos /proc
Limitando o uso de espaço em disco (quotas)
Instalando o sistema de quotas
Editando quotas de usuários/grupos
Modificando a quota de todos os usuários de uma vez
Verificando a quota disponível ao usuário
Verificando a quota de todos os usuários/grupos do sistema
Avisando usuários sobre o estouro de quota
Suporte a senhas ocultas
Suporte a senhas com algorítmo SHA e md5
Restrições no hardware do sistema
BIOS do sistema
Retirada da unidade de disquetes
Placas de rede com eprom de boot
Protegendo o LILO
Disco rígido
7. Criptografia
Introdução
Introdução aos protocolos SSL e TLS
SSL
HTTPS
Ataque Man in the Middle (MITM)
TLS
Introdução a Certificados
Certificados X509
Validade de Certificados
CA Intermediária
Como é gerado um Certificado assinado por CA?
Tipos de certificados e suas extensões
A estrutura básica de um certificado?
Extensões para uso em certificados
Cadeia de confiança de certificados
Certificado raíz
Autenticação de Certificado SSL TLS
Tipos de certificados
Significado de campos usados em certificados
Nívels de validação do certificado
openssl
O arquivo de configuração /etc/ssl/openssl.cnf
Visualizando conteúdo de um certificado existente
Convertendo entre formatos de certificados
Gerenciamento de uma CA e de chaves publicas e privadas
Gerando uma chave RSA de 2048 bits
Gerando uma chave PKCS8 de 2048 bits
Exportando a chave RSA publica para arquivo
Protegendo a chave privada
Requisitos para gerenciar uma CA
Criando uma CA privada
Criando um certificado de CA
Assinando um arquivo CRT
Renovando um Certificado
Revogando um Certificado
Revogando uma CA
Gerando um par de chaves RSA a partir da chave privada
Extraindo a chave pública a partir da chave privada do certificado
Extraindo elementos texto do certificado
Gerando uma chave Pública
Gerando arquivo binário contendo números aleatórios
Automatizando preenchimento de dados de certificado
Usando SNI nos domínios
Encriptando arquivos grandes
Especificando níveis de validação no Apache
Enviando um certificado SSL de cliente para testes
Verificando uma identidade
Certificados Auto-Assinados
Beneficios de rodar uma CA própria
Criando Certificados Auto-Assinados
Concatenando os Certificados gerados
Configurando o Apache e Virtual Hosts
Testando a conexão SSL
Sobre certificados usando Curva Eliptica
Programas para gerenciamento de CA usando ambiente gráfico e WEB
Teste de cliente/servidor SSL/TLS com openssl
Servidor OpenSSL
Cliente OpenSSL
Cadeia de Confiança
Testando protocolos que fazem upgrade para TLS
Extraindo o certificado remoto do cliente
Usando formatos diferentes de HandShake de conexão
Testando o suporte a uma versão específica de protocolo SSL
Testando o suporte a um conjunto de Ciphers
Testando servidores que requerem SNI
Testando reuso de conexão no SSL
Validação de revogação OCSP
Testando o suporte a OCSP Stapling
Verificando a revogação de CRL
Verificando vulnerabilidade HeartBleed
Determinando o tamanho de parametros DH
Certificados com extensões X509 V3
Alternativas seguras a serviços sem criptografia
http
Transmissão segura de e-mails
Servidor pop3
Transferência de arquivos
login remoto
Bate papo via IRC
Transmissão de mensagens via ICQ
Usando o GPG para Autenticação e Criptografia
Instalando o PGP
Criando um par de chaves pública/privada
Encriptando Dados
Decriptando dados com o GPG
Assinando arquivos
Checando assinaturas
Extraindo sua chave pública do chaveiro
Adicionando chaves públicas ao seu chaveiro pessoal
Listando chaves de seu chaveiro
Apagando chaves de seu chaveiro
Mudando sua FraseSenha
Assinando uma chave digital
Listando assinaturas digitais
Recomendações para a assinatura de chaves GPG
Criptografia de blocos usando DM-Crypt / cryptsetup
Encriptando um sistema de arquivos com DM-Crypto / cryptsetup
Desmontando o dispositivo criptografado
Listando limites e algoritmos suportados
Avaliando a performance de cada algoritmo
Opções de encriptação com o DM-Crypt
Fazendo dump do cabeçalho de dispositivos
Gerenciamento de chaves
Backup e Restore de cabeçalho/chaves
Convertendo automaticamente sistemas para criptografia e desconvertendo
Convertendo a partição para Criptografica
Criptografia de arquivos usando ENCFS
Limitações
Instalando
Criando a Criptografia
Alterando a senha
Montando via fstab
Usando o eCryptfs para encriptar arquivos, montagem automatica do home
Configurando o ecryptfs
Remontando o sistema de arquivos criptografado
ecryptfsd
Diretório Privado Automático para o usuário
Migrando o home do usuário para criptografado
PAM ecryptfs
Limitações do eCryptfs
Criptografia usando TrueCrypt/VeraCrypt
8. Segurança de Host
Introdução
Segurança de Host
Chroot, Container e Virtualização
Chroot
Container
Vantagens da Virtualização
Desativando softwares e serviços desnecessários
Protegendo BIOS e o GRUB2
Senha no GRUB2
Protegendo opçoes do prompt do Grub2
Protegendo o sistema com senha de boot do Grub
Protegendo entradas de menus do Grub
Protegendo a partição de recuperação do Windows
Limitando o uso de recursos de usuários
Módulo PAM pam_limits
9. Controle de Acesso
Introdução
Controle de Acesso
10. Segurança de Rede
Introdução
Segurança em Redes
Sniffer
Detectando a presença de sniffers
11. Apêndice
Sobre este guia
Sobre o Autor
Referências de auxílio ao desenvolvimento do guia
Onde encontrar a versão mais nova do guia?
Colaboradores do Guia e Agradecimentos
Marcas Registradas
Futuras Versões
Licença CC BY-NC-SA
Chave Pública PGP