Guia Foca Linux

Gleydson Mazioli da Silva

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

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 published by the Free Software Foundation; A copy of the license is included in the section entitled "GNU Free Documentation License".

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 consulta, operação e configuração de sistemas Linux (e outros tipos de *ix). A última versão oficial deste guia pode ser encontrada na Página Oficial do Foca Linux. 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 assinando o twitter @guiafoca.


Índice

1. Introdução
Considerações sobre o nível Avançado
Pré-requisitos para a utilização deste guia
O Linux
Algumas Características do Linux
2. Explicações Básicas
Monitorando os logs
Destruindo arquivos/partições de forma segura
3. Hardware
Placa de expansão
Nomes de dispositivos
Configuração de Hardware
IRQ - Requisição de Interrupção
DMA - Acesso Direto a Memória
I/O - Porta de Entrada/Saída
Hardwares configuráveis por jumpers, dip-switches, jumperless e Plug-and-Play.
Jumpers
Dip-Switches
Jumperless (sem jumper)
Plug-and-Play
Listando as placas e outros hardwares em um computador
Conflitos de hardware
Barramento
Placas on-board / off-board
Hardwares específicos ou "For Windows"
Dispositivos específicos para GNU/Linux
Configurações de Dispositivos
Configurando uma placa de rede
Configurando uma placa de SOM no Linux
Configurando um gravador de CD/DVD no Linux
Configurando o gerenciamento de energia usando o APM
Configurando o gerenciamento de energia usando ACPI
Ativando WakeUP on Lan
Aterramento
Condutores de eletricidade
Tomadas
Descargas estáticas
Melhoria de performance
Particionamento
Spindles
Fazendo ajustes finos de performance do disco
Data de acesso a arquivos/diretórios
Periféricos SATA
Periféricos SCSI
Configurando uma SCSI ID e terminação
4. Rede
O que é uma rede
Protocolo de Rede
Endereço IP
Classes de Rede IP
Referência rápida de máscara de redes
Para instalar uma máquina usando o Linux em uma rede existente
Endereços reservados para uso em uma rede Privada
Interface de rede
A interface loopback
Atribuindo um endereço de rede a uma interface (ifconfig)
Roteamento
Configurando uma rota no Linux
Resolvedor de nomes (DNS)
O que é um nome?
Arquivos de configuração usados na resolução de nomes
Executando um servidor de nomes
Serviços de Rede
Serviços iniciados como Daemons de rede
Serviços iniciados através do inetd
Segurança da Rede e controle de Acesso
/etc/ftpusers
/etc/securetty
O mecanismo de controle de acessos tcpd
Firewall
Outros arquivos de configuração relacionados com a rede
/etc/services
/etc/protocols
Camadas de Rede
RFCs de referência sobre protocolos de rede
5. Configurações especiais de Rede
IP Alias
Bridge
Requerimentos para a Instalação
Configuração da bridge
Configurações mais avançadas de bridge
Configuração manual da bridge
Usando o iptables para construir um firewall na máquina da bridge
Filtrando pacotes não IP na bridge
Conectando dois computadores usando a porta paralela
Construindo um cabo LapLink Paralelo
Conectando dois computadores usando a porta serial
Construindo um cabo LapLink Serial
6. 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
7. A distribuição Debian GNU/Linux
Porque usar a Debian?
Pacotes existentes na Debian
O que é sid/testing/frozen/stable?
Como obter a Debian
Programas de configuração
Arquivos de inicialização
Níveis de Execução
Entendendo o funcionamento dos níveis de execução do sistema (runlevels)
Rede no sistema Debian
Bug tracking system
Onde encontrar a Debian para Download?
Lista de pacotes para uma instalação rápida e manual
Pacotes Básicos (Altamente Recomendado)
Compilação do Kernel e programas em linguagem C
X11 (básico)
Window Managers para o X
Impressão (texto e gráfico com sistema de spool)
Som (mixer, mp3, Midi, wav, CD-Player)
Programas de Internet (clientes)
Acessórios
Rede
8. Personalização do Sistema
Variáveis de Ambientes
Modificando o Idioma usado em seu sistema
alias
Arquivo /etc/profile
Arquivo .bash_profile
Arquivo .bashrc
Arquivo .hushlogin
Arquivo /etc/environment
Diretório /etc/skel
9. Impressão
Portas de impressora
Imprimindo diretamente para a porta de impressora
Imprimindo via spool
Impressão em modo gráfico
Ghost Script
Magic Filter
Instalação e configuração do Magic Filter
Outros detalhes técnicos sobre o Magic Filter
Impressão remota
Dando permissão para impresão remota via lpd/lprng
Impressão via rlpr
Impressão via printcap
10. 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
11. 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
12. Apache
Introdução
Versão
Um resumo da História do Apache
Enviando Correções/Contribuindo com o projeto
Características do Apache
Ficha técnica
Requerimentos
Arquivos de log criados pelo Apache
Instalação
Iniciando o servidor/reiniciando/recarregando a configuração
Opções de linha de comando
Configurações Básicas do Apache
Configurando a porta padrao
Adicionando uma página no Apache
Configurando as interfaces que o Apache atenderá
Especificando endereços/portas adicionais (a diretiva Listen)
Restrições de Acesso
Especificando opções/permissões para as páginas
Autorização
Autenticação
Usando autorização e autenticação juntos
O arquivo .htaccess
Usando a diretiva SetEnvIf com Allow e Deny
A diretiva <Limit>
Diretiva <LimitExcept>
Definindo documentos de erro personalizados
Módulos DSO
Sistema de Log do Apache
AgentLog
ErrorLog
CustomLog
RefererLog
RewriteLog
RewriteLogLevel
ScriptLog
ScriptLogBuffer
ScriptLogLength
LogFormat
TransferLog
LogLevel
Anonymous_LogEmail
CookieLog
Relatório gráfico de acesso ao sistema
Configurando o Apache como servidor proxy
Controlando o acesso ao servidor proxy
Redirecionamento de conexões no Apache
Virtual Hosts
Virtual hosts baseados em IP
Virtual hosts baseados em nome
Segurança no uso de IP's em Virtual Hosts
Uso de criptografia SSL
Servidor apache com suporte a ssl
Instalando o suporte a módulo SSL no Apache
Gerando um certificado digital
Exemplo de configuração do módulo mod-ssl
Autorizando acesso somente a conexões SSL
Iniciando o servidor Web com suporte a SSL
Exemplo comentado de um arquivo de configuração do Apache
httpd.conf
srm.conf
access.conf
Códigos HTTP
13. Servidor ident
Introdução
Versão
Contribuindo
Características
Ficha técnica
Requerimentos de Hardware
Arquivos de log criados pelo Ident
Instalação
Instalação via Inetd
Usando tcpwrappers com oidentd
Iniciando o servidor/reiniciando/recarregando a configuração
Opções de linha de comando
Exemplos
14. Servidor telnet
Introdução
Versão
Características
Ficha técnica
Requerimentos de Hardware
Arquivos de log criados pelo servidor telnet
Instalação
Iniciando o servidor/reiniciando/recarregando a configuração
Opções de linha de comando
Controle de acesso
Recomendações
Fazendo conexões ao servidor telnet
15. Servidor ssh
Introdução
Versão
História
Contribuindo
Características
Ficha técnica
Requerimentos de Hardware
Arquivos de log criados pelo servidor ssh
Instalação do servidor openSSH
Iniciando o servidor/reiniciando/recarregando a configuração
Opções de linha de comando
Usando aplicativos clientes
ssh
scp
sftp
Servidor ssh
sshd
Controle de acesso
Usando autenticação RSA/DSA - chave pública/privada
Execução de comandos específicos usando chaves
Criando um gateway ssh
Criando um tunel proxy
Diferenças nas versões do protocolo
Exemplo de sshd_config com explicações das diretivas
16. Servidor pop3
Introdução
Versão
Contribuindo
Características
Ficha técnica
Requerimentos de Hardware
Arquivos de log criados pelo qpopper
Instalação
Iniciando o servidor/reiniciando/recarregando a configuração
Teste de acesso no pop3
Opções de linha de comando
Enviando boletins de mensagens
Especificando quotas para as caixas de correio
Restringindo acesso ao servidor pop3
17. CVS
Introdução ao CVS
Versão
História
Contribuindo com o CVS
Características
Ficha técnica
Requerimentos de Hardware
Arquivos de log criados pelo CVS
Instalação
Iniciando o servidor/reiniciando/recarregando a configuração
Opções de linha de comando
Servidor de CVS - configurando métodos de acesso ao repositório
local
fork
ext
pserver (password server)
Configurando um servidor pserver
gssapi
Criando projetos para serem usados no CVS
Repositório
Criando um repositório
Logando no servidor de CVS via pserver
Encerrando uma seção de CVS
Baixando arquivos
Adicionando um novo projeto
Sincronizando a cópia remota com a cópia local
Enviando as mudanças para o servidor remoto
Adicionando um arquivo ao módulo CVS do servidor
Adicionando um diretório ao módulo CVS do servidor
Removendo um arquivo do módulo CVS remoto
Removendo um diretório do módulo CVS remoto
Dizendo que o módulo atual não está mais em uso
Visualizando diferenças entre versões de um arquivo
Visualizando o status de versão de arquivos
Outros utilitários para trabalho no repositório
Arquivos administrativos em CVSROOT
config
modules
cvswrappers
commitinfo
verifymsg
loginfo
cvsignore
checkoutlist
history
Clientes de CVS
cvs
gcvs - Linux
WinCVS - Windows
MacCVS - Macintosh (PPC)
viewcvs
Exemplo de uma seção CVS
18. SAMBA
Introdução
Versão documentada
História
Contribuindo
Características
Ficha técnica
Requerimentos de Hardware
Arquivos de log criados
Instalação
Iniciando o servidor/reiniciando/recarregando a configuração
Opções de linha de comando
Conceitos gerais para a configuração do SAMBA
Nome de máquina (nome NetBios)
Grupo de trabalho
Domínio
Compartilhamento
Mapeamento
Navegação na Rede e controle de domínio
Arquivo de configuração do samba
Seção [global]
Seção [homes]
Seção [printers]
Buscando problemas na configuração
Níveis de sistema para eleição de rede
Variáveis de substituição
Compartilhamento de arquivos e diretórios
Descrição de parâmetros usados em compartilhamento
Configuração em Grupo de Trabalho
Resolução de nomes de máquinas no samba
Arquivo /etc/samba/lmhosts
WINS
Servidor de data/hora
Configuração do serviço de data/hora no SAMBA
Sincronizando a data/hora no Cliente
Configuração em Domínio
Uma breve introdução a um Domínio de rede
Local Master Browser
Domain Master Browser
Configurando um servidor PDC no SAMBA
Contas de máquinas de domínio
Criando uma conta de administrador de domínio
Criando Scripts de logon
Configurando perfis de usuários
Modificações de permissões de acesso pelos clientes do domínio
Gerenciamento de senhas
Ativando o suporte a senhas criptografadas
Ativando o suporte a senhas em texto plano
Mapeamento de usuários/grupos em clientes
Mapeamento de usuários/grupos domínio em Windows
Mapeamento de usuários/grupos domínio em Linux
Compartilhamento de impressão no servidor SAMBA
Configurando o Linux como um servidor de impressão Windows
Controle de acesso ao servidor SAMBA
Nível de acesso de usuários conectados ao SAMBA
Restringindo o acesso por IP/rede
Restringindo o acesso por interface de rede
Restringindo o acesso por usuários
Evite o uso do parâmetro hosts equiv!
Evite o uso de senhas em branco!
Criando um compartilhamento para acesso sem senha
Criando um compartilhamento com acesso somente leitura
Criando um compartilhamento com acesso leitura/gravação
Excessão de acesso na permissão padrão de compartilhamento
Restringindo o IPC$ e ADMIN$
Criando um compartilhamento invisível
Executando comandos antes e após o acesso ao compartilhamento
Considerações de segurança com o uso do parâmetro "public = yes"
Senhas criptografadas ou em texto puro?
Mapeamento de nomes de usuários
Melhorando a performance do compartilhamento/servidor
Configuração de Clientes NetBEUI
Considerações sobre o Windows for Workgroups e LanManager
Configurando clientes em Grupo de Trabalho
Configurando clientes em Domínio
Erros conhecidos durante o logon do cliente
Programas de navegação gráficos
Cliente de configuração gráficos
Exemplos de configuração do servidor SAMBA
Grupo de Trabalho com acesso público
Grupo de Trabalho com acesso por usuário
Domínio
19. 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
20. Introdução ao uso de criptografia para transmissão/armazenamento de dados
Introdução
Sniffer
Detectando a presença de sniffers
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
Sistemas de arquivos criptográfico
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
21. Como obter ajuda
Páginas de Manual
Info Pages
Ajuda na própria linha de comandos
help
apropos
whatis
locate
which
Documentos HOWTO's
Documentação de Programas
FAQ
RFC's
Internet
Páginas Internet de Referência
Listas de discussão
Netiqueta
Recomendações Gerais sobre a Comunicação Eletrônica
Email
Telegram/Whatsapp/Messenger/Gtalk/Skype
Talk
Listas de Discussão via Email
22. 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
Marcas Registradas
Futuras versões
Guia do Linux
Chave Pública PGP