Você está na página 1de 449

Guia Foca GNU/Linux

Gleydson Mazioli da Silva <gleydson@guiafoca.org>


Verso 6.40 - segunda, 30 de outubro de 2006
Resumo
Este documento tem por objetivo ser uma referncia ao aprendizado do usurio e um guia
de consulta, operao e congurao de sistemas Linux (e outros tipos de *ix). A ltima ver-
so deste guia pode ser encontrada na Pgina Ocial do Foca GNU/Linux (http://www.
guiafoca.org). Novas verses so lanadas com uma freqncia mensal e voc pode rece-
ber avisos de novos lanamentos deste guia preenchendo um formulrio na pgina Web.
Nota de Copyright
Copyright 1999-2006 - Gleydson Mazioli da Silva.
Permission is granted to copy, distribute and/or modify this document under the terms of
the GNU Free Documentation License, Version 1.1 or any later version published by the Free
Software Foundation; A copy of the license is included in the section entitled GNU Free Do-
cumentation License.
i
Sumrio
1 Introduo 1
1.1 Consideraes sobre o nvel Avanado . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Pr-requisitos para a utilizao deste guia . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 O Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3.1 Algumas Caractersticas do Linux . . . . . . . . . . . . . . . . . . . . . . . 5
2 Explicaes Bsicas 9
2.1 Monitorando os logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1 Destruindo arquivos/parties de forma segura . . . . . . . . . . . . . . . 9
2.2 Curingas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3 Hardware 13
3.1 Placa de expanso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 Nomes de dispositivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.3 Congurao de Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3.1 IRQ - Requisio de Interrupo . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3.2 DMA - Acesso Direto a Memria . . . . . . . . . . . . . . . . . . . . . . . . 17
3.3.3 I/O - Porta de Entrada/Sada . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.4 Hardwares congurveis por jumpers, dip-switches, jumperless e Plug-and-Play. 19
3.4.1 Jumpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.4.2 Dip-Switches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.4.3 Jumperless (sem jumper) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.4.4 Plug-and-Play . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.5 Listando as placas e outros hardwares em um computador . . . . . . . . . . . . . 26
SUMRIO ii
3.6 Conitos de hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.7 Barramento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.8 Placas on-board / off-board . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.9 Hardwares especcos ou For Windows . . . . . . . . . . . . . . . . . . . . . . . 29
3.10 Dispositivos especcos para GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . 30
3.11 Conguraes de Dispositivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.11.1 Congurando uma placa de rede . . . . . . . . . . . . . . . . . . . . . . . . 31
3.11.2 Congurando uma placa de SOM no Linux . . . . . . . . . . . . . . . . . . 32
3.11.3 Congurando um gravador de CD no Linux . . . . . . . . . . . . . . . . . 33
3.11.4 Congurando o gerenciamento de energia usando o APM . . . . . . . . . 35
3.11.5 Congurando o gerenciamento de energia usando ACPI . . . . . . . . . . 36
3.11.6 Ativando WakeUP on Lan . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.12 Aterramento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.12.1 Condutores de eletricidade . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.13 Tomadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.14 Descargas estticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.15 Melhoria de performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.15.1 Particionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.15.2 Spindles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.15.3 Fazendo ajustes nos de performance do disco . . . . . . . . . . . . . . . . 41
3.15.4 Data de acesso a arquivos/diretrios . . . . . . . . . . . . . . . . . . . . . 43
3.16 Perifricos SCSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.16.1 Congurando uma SCSI ID e terminao . . . . . . . . . . . . . . . . . . . 45
4 Rede 47
4.1 O que uma rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.2 Protocolo de Rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.3 Endereo IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.3.1 Classes de Rede IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.3.2 Referncia rpida de mscara de redes . . . . . . . . . . . . . . . . . . . . . 49
4.3.3 Para instalar uma mquina usando o Linux em uma rede existente . . . . 50
SUMRIO iii
4.3.4 Endereos reservados para uso em uma rede Privada . . . . . . . . . . . . 50
4.4 Interface de rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.4.1 A interface loopback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.4.2 Atribuindo um endereo de rede a uma interface (ifcong) . . . . . . . . . 52
4.5 Roteamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.5.1 Congurando uma rota no Linux . . . . . . . . . . . . . . . . . . . . . . . . 53
4.6 Resolvedor de nomes (DNS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.6.1 O que um nome? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.6.2 Arquivos de congurao usados na resoluo de nomes . . . . . . . . . . 55
4.6.3 Executando um servidor de nomes . . . . . . . . . . . . . . . . . . . . . . . 58
4.7 Servios de Rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.7.1 Servios iniciados como Daemons de rede . . . . . . . . . . . . . . . . . . 58
4.7.2 Servios iniciados atravs do inetd . . . . . . . . . . . . . . . . . . . . . . . 58
4.8 Segurana da Rede e controle de Acesso . . . . . . . . . . . . . . . . . . . . . . . . 61
4.8.1 /etc/ftpusers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.8.2 /etc/securetty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.8.3 O mecanismo de controle de acessos tcpd . . . . . . . . . . . . . . . . . . . 62
4.8.4 Firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.9 Outros arquivos de congurao relacionados com a rede . . . . . . . . . . . . . . 67
4.9.1 /etc/services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.9.2 /etc/protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.10 Camadas de Rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.11 RFCs de referncia sobre protocolos de rede . . . . . . . . . . . . . . . . . . . . . . 68
5 Conguraes especiais de Rede 69
5.1 IP Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.2 Bridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.2.1 Requerimentos para a Instalao . . . . . . . . . . . . . . . . . . . . . . . . 71
5.2.2 Congurao da bridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.2.3 Conguraes mais avanadas de bridge . . . . . . . . . . . . . . . . . . . 72
5.2.4 Congurao manual da bridge . . . . . . . . . . . . . . . . . . . . . . . . 73
SUMRIO iv
5.2.5 Usando o iptables para construir um rewall na mquina da bridge . . . 74
5.2.6 Filtrando pacotes no IP na bridge . . . . . . . . . . . . . . . . . . . . . . . 74
5.3 Conectando dois computadores usando a porta paralela . . . . . . . . . . . . . . 74
5.3.1 Construindo um cabo LapLink Paralelo . . . . . . . . . . . . . . . . . . . . 76
5.4 Conectando dois computadores usando a porta serial . . . . . . . . . . . . . . . . 77
5.4.1 Construindo um cabo LapLink Serial . . . . . . . . . . . . . . . . . . . . . 78
6 Arquivos e daemons de Log 81
6.1 Formato do arquivo de log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.2 Daemons de log do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
6.2.1 syslogd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
6.2.2 klogd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6.3 logger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6.4 Programas teis para monitorao e gerenciamento de arquivos de logs . . . . . 87
6.4.1 logcheck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.4.2 logrotate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.5 Congurando um servidor de logs . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
7 A distribuio Debian GNU/Linux 93
7.1 Como obter a Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
7.2 Programas de congurao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
7.3 Arquivos de inicializao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
7.4 Nveis de Execuo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
7.4.1 Entendendo o funcionamento dos nveis de execuo do sistema (runle-
vels) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
7.5 Rede no sistema Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
7.6 Bug tracking system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
7.7 Onde encontrar a Debian para Download? . . . . . . . . . . . . . . . . . . . . . . 97
8 Personalizao do Sistema 99
8.1 Variveis de Ambientes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
8.2 Modicando o Idioma usado em seu sistema . . . . . . . . . . . . . . . . . . . . . 99
8.3 alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
SUMRIO v
8.4 Arquivo /etc/profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
8.5 Arquivo .bash_profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
8.6 Arquivo .bashrc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
8.7 Arquivo .hushlogin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
8.8 Arquivo /etc/environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
8.9 Diretrio /etc/skel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
9 Impresso 105
9.1 Portas de impressora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
9.2 Imprimindo diretamente para a porta de impressora . . . . . . . . . . . . . . . . . 105
9.3 Imprimindo via spool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
9.4 Impresso em modo grco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
9.4.1 Ghost Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
9.5 Magic Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
9.5.1 Instalao e congurao do Magic Filter . . . . . . . . . . . . . . . . . . . 109
9.5.2 Outros detalhes tcnicos sobre o Magic Filter . . . . . . . . . . . . . . . . . 109
9.6 Impresso remota . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
9.6.1 Dando permisso para impreso remota via lpd/lprng . . . . . . . . . . . 111
9.6.2 Impresso via rlpr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
9.6.3 Impresso via printcap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
10 Firewall iptables 113
10.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
10.1.1 Verso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
10.1.2 Um resumo da histria do iptables . . . . . . . . . . . . . . . . . . . . . . . 114
10.1.3 Caractersticas do rewall iptables . . . . . . . . . . . . . . . . . . . . . . . 114
10.1.4 Ficha tcnica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
10.1.5 Requerimentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
10.1.6 Arquivos de logs criados pelo iptables . . . . . . . . . . . . . . . . . . . . . 116
10.1.7 Instalao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
10.1.8 Enviando Correes/Contribuindo com o projeto . . . . . . . . . . . . . . 116
10.1.9 O que aconteceu com o ipchains e ipfwadm? . . . . . . . . . . . . . . . 116
SUMRIO vi
10.1.10 Tipos de rewalls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
10.1.11 O que proteger? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
10.1.12 O que so regras? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
10.1.13 O que so chains? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
10.1.14 O que so tabelas? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
10.1.15 Habilitando o suporte ao iptables no kernel . . . . . . . . . . . . . . . . . . 119
10.1.16 Ligando sua rede interna a Internet . . . . . . . . . . . . . . . . . . . . . . 120
10.2 Manipulando chains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
10.2.1 Adicionando regras - A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
10.2.2 Listando regras - L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
10.2.3 Apagando uma regra - D . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
10.2.4 Inserindo uma regra - I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
10.2.5 Substituindo uma regra - R . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
10.2.6 Criando um novo chain - N . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
10.2.7 Renomeando um chain criado pelo usurio - E . . . . . . . . . . . . . . . . 126
10.2.8 Listando os nomes de todas as tabelas atuais . . . . . . . . . . . . . . . . . 126
10.2.9 Limpando as regras de um chain - F . . . . . . . . . . . . . . . . . . . . . . 126
10.2.10 Apagando um chain criado pelo usurio - X . . . . . . . . . . . . . . . . . 127
10.2.11 Zerando contador de bytes dos chains - Z . . . . . . . . . . . . . . . . . . . 127
10.2.12 Especicando o policiamento padro de um chain - P . . . . . . . . . . . . 127
10.3 Outras opes do iptables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
10.3.1 Especicando um endereo de origem/destino . . . . . . . . . . . . . . . . 128
10.3.2 Especicando a interface de origem/destino . . . . . . . . . . . . . . . . . 129
10.3.3 Especicando um protocolo . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
10.3.4 Especicando fragmentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
10.3.5 Especicando uma exceo . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
10.3.6 Especicando um alvo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
10.3.7 Salvando e Restaurando regras . . . . . . . . . . . . . . . . . . . . . . . . . 138
10.4 A tabela nat (Network Address Translation) - fazendo nat . . . . . . . . . . . . . . 138
10.4.1 Criando um novo chain na tabela NAT . . . . . . . . . . . . . . . . . . . . 139
10.4.2 Fazendo IP masquerading (para os apressados) . . . . . . . . . . . . . . . 139
SUMRIO vii
10.4.3 Fazendo SNAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
10.4.4 Fazendo DNAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
10.4.5 Monitorando conexes feitas na tabela nat . . . . . . . . . . . . . . . . . . 143
10.5 A tabela mangle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
10.5.1 Especicando o tipo de servio . . . . . . . . . . . . . . . . . . . . . . . . . 143
10.6 Outros mdulos do iptables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
10.6.1 Conferindo de acordo com o estado da conexo . . . . . . . . . . . . . . . 145
10.6.2 Limitando o nmero de vezes que a regra confere . . . . . . . . . . . . . . 145
10.6.3 Proteo contra ping da morte . . . . . . . . . . . . . . . . . . . . . . . . . 146
10.6.4 Proteo contra syn ood . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
10.6.5 Proteo contra IP spoong . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
10.6.6 Especicando mltiplas portas de origem/destino . . . . . . . . . . . . . . 147
10.6.7 Especicando o endereo MAC da interface . . . . . . . . . . . . . . . . . 148
10.6.8 Conferindo com quem criou o pacote . . . . . . . . . . . . . . . . . . . . . 148
10.6.9 Conferindo com o contedo do pacote . . . . . . . . . . . . . . . . . . . . . 149
10.6.10 Conferindo com o tempo de vida do pacote . . . . . . . . . . . . . . . . . . 149
10.6.11 Conferindo com nmeros RPC . . . . . . . . . . . . . . . . . . . . . . . . . 150
10.6.12 Conferindo com tipo de pacote . . . . . . . . . . . . . . . . . . . . . . . . . 150
10.6.13 Conferindo com o tamanho do pacote . . . . . . . . . . . . . . . . . . . . . 151
10.7 Caminho percorrido pelos pacotes nas tabelas e chains . . . . . . . . . . . . . . . 151
10.7.1 Ping de 192.168.1.1 para 192.168.1.1 . . . . . . . . . . . . . . . . . . . . . . 151
10.7.2 Conexo FTP de 192.168.1.1 para 192.168.1.1 . . . . . . . . . . . . . . . . . 152
10.7.3 Conexo FTP de 192.168.1.1 para 192.168.1.4 . . . . . . . . . . . . . . . . . 153
10.7.4 Conexo FTP de 200.217.29.67 para a mquina ftp.debian.org.br . . . . . . 154
10.7.5 Ping de 192.168.1.4 para 192.168.1.1 . . . . . . . . . . . . . . . . . . . . . . 155
10.7.6 Conexo FTP de 192.168.1.4 para 192.168.1.1 . . . . . . . . . . . . . . . . . 156
10.7.7 Conexo FTP de 192.168.1.4 para ftp.debian.org.br . . . . . . . . . . . . . . 156
10.7.8 Conexo FTP de 200.198.129.162 para 200.217.29.167 . . . . . . . . . . . . . 158
10.7.9 Grco geral da passagem dos pacotes . . . . . . . . . . . . . . . . . . . . 158
10.8 Exemplos de conguraes do iptables . . . . . . . . . . . . . . . . . . . . . . . . . 159
10.8.1 Bloqueando conexes de fora para sua mquina . . . . . . . . . . . . . . . 159
SUMRIO viii
10.8.2 Monitorando tentativa de conexo de trojans em sua mquina . . . . . . . 160
10.8.3 Conectando sua rede interna a Internet . . . . . . . . . . . . . . . . . . . . 160
10.8.4 Um exemplo de rewall simples . . . . . . . . . . . . . . . . . . . . . . . . 161
11 Gerenciamento de contas e cuidados para a proteo de senhas 165
11.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
11.2 Criao, monitoramento e segurana de contas . . . . . . . . . . . . . . . . . . . . 166
11.2.1 Denindo valores padres de restrio . . . . . . . . . . . . . . . . . . . . 167
11.2.2 Senhas fceis de adivinhar e escolha de boas senhas . . . . . . . . . . . . . 168
11.2.3 Atualizao de senhas de mltiplas contas . . . . . . . . . . . . . . . . . . 169
11.2.4 A senha do usurio root . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
11.3 Tipos de ataques mais comuns para se conseguir uma senha. . . . . . . . . . . . . 170
11.3.1 Deduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
11.3.2 Engenharia Social . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
11.3.3 Ataques por dicionrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
11.3.4 Brute Force . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
11.3.5 Monitoramento de toques do teclado . . . . . . . . . . . . . . . . . . . . . 172
11.3.6 Login falso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
11.4 Melhorando a segurana das senhas armazenadas em seu sistema . . . . . . . . . 173
11.4.1 Shadow Passwords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
11.4.2 Senhas MD5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
12 Apache 175
12.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
12.1.1 Verso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
12.1.2 Um resumo da Histria do Apache . . . . . . . . . . . . . . . . . . . . . . . 176
12.1.3 Enviando Correes/Contribuindo com o projeto . . . . . . . . . . . . . . 176
12.1.4 Caractersticas do Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
12.1.5 Ficha tcnica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
12.1.6 Requerimentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
12.1.7 Arquivos de log criados pelo Apache . . . . . . . . . . . . . . . . . . . . . 178
12.1.8 Instalao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
SUMRIO ix
12.1.9 Iniciando o servidor/reiniciando/recarregando a congurao . . . . . . 178
12.1.10 Opes de linha de comando . . . . . . . . . . . . . . . . . . . . . . . . . . 179
12.2 Congurando a porta padro do Apache . . . . . . . . . . . . . . . . . . . . . . . 180
12.3 Adicionando uma pgina no Apache . . . . . . . . . . . . . . . . . . . . . . . . . . 180
12.4 Congurando as interfaces que o Apache atender . . . . . . . . . . . . . . . . . . 181
12.5 Especicando endereos/portas adicionais (a diretiva Listen) . . . . . . . . . . . . 182
12.6 Especicando opes/permisses para as pginas . . . . . . . . . . . . . . . . . . 182
12.7 Restries de Acesso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
12.7.1 Autorizao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
12.7.2 Autenticao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
12.7.3 Usando autorizao e autenticao juntos . . . . . . . . . . . . . . . . . . . 195
12.7.4 O arquivo .htaccess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
12.7.5 Usando a diretiva SetEnvIf com Allow e Deny . . . . . . . . . . . . . . . . 199
12.7.6 A diretiva <Limit> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
12.7.7 Diretiva <LimitExcept> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
12.8 Denindo documentos de erro personalizados . . . . . . . . . . . . . . . . . . . . 201
12.9 Mdulos DSO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
12.10Sistema de Log do Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
12.10.1 AgentLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
12.10.2 ErrorLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
12.10.3 CustomLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
12.10.4 RefererLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
12.10.5 RewriteLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
12.10.6 RewriteLogLevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
12.10.7 ScriptLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
12.10.8 ScriptLogBuffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
12.10.9 ScriptLogLength . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
12.10.10LogFormat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
12.10.11TransferLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
12.10.12LogLevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
12.10.13Anonymous_LogEmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
SUMRIO x
12.10.14CookieLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
12.10.15Relatrio grco de acesso ao sistema . . . . . . . . . . . . . . . . . . . . . 208
12.11Congurando o Apache como servidor proxy . . . . . . . . . . . . . . . . . . . . . 208
12.11.1 Controlando o acesso ao servidor proxy . . . . . . . . . . . . . . . . . . . . 210
12.11.2 Redirecionamento de conexes no Apache . . . . . . . . . . . . . . . . . . 211
12.12Virtual Hosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
12.12.1 Virtual hosts baseados em IP . . . . . . . . . . . . . . . . . . . . . . . . . . 212
12.12.2 Virtual hosts baseados em nome . . . . . . . . . . . . . . . . . . . . . . . . 213
12.12.3 Segurana no uso de IPs em Virtual Hosts . . . . . . . . . . . . . . . . . . 215
12.13Uso de criptograa SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
12.13.1 Servidor apache com suporte a ssl . . . . . . . . . . . . . . . . . . . . . . . 216
12.13.2 Instalando o suporte a mdulo SSL no Apache . . . . . . . . . . . . . . . . 216
12.13.3 Gerando um certicado digital . . . . . . . . . . . . . . . . . . . . . . . . . 217
12.13.4 Exemplo de congurao do mdulo mod-ssl . . . . . . . . . . . . . . . . 217
12.13.5 Autorizando acesso somente a conexes SSL . . . . . . . . . . . . . . . . . 219
12.13.6 Iniciando o servidor Web com suporte a SSL . . . . . . . . . . . . . . . . . 219
12.14Exemplo comentado de um arquivo de congurao do Apache . . . . . . . . . . 220
12.14.1 httpd.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
12.14.2 srm.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
12.14.3 access.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
12.15Cdigos HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
13 Servidor ident 245
13.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
13.1.1 Verso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
13.1.2 Contribuindo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
13.1.3 Caractersticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
13.1.4 Ficha tcnica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
13.1.5 Requerimentos de Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . 247
13.1.6 Arquivos de log criados pelo Ident . . . . . . . . . . . . . . . . . . . . . . . 247
13.1.7 Instalao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
SUMRIO xi
13.1.8 Instalao via Inetd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
13.1.9 Usando tcpwrappers com oidentd . . . . . . . . . . . . . . . . . . . . . . . 248
13.1.10 Iniciando o servidor/reiniciando/recarregando a congurao . . . . . . 248
13.1.11 Opes de linha de comando . . . . . . . . . . . . . . . . . . . . . . . . . . 248
13.1.12 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
14 Servidor telnet 251
14.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
14.1.1 Verso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
14.1.2 Caractersticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
14.1.3 Ficha tcnica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
14.1.4 Requerimentos de Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . 252
14.1.5 Arquivos de log criados pelo servidor telnet . . . . . . . . . . . . . . . . . 252
14.1.6 Instalao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
14.1.7 Iniciando o servidor/reiniciando/recarregando a congurao . . . . . . 253
14.1.8 Opes de linha de comando . . . . . . . . . . . . . . . . . . . . . . . . . . 253
14.2 Controle de acesso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
14.3 Recomendaes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
14.4 Fazendo conexes ao servidor telnet . . . . . . . . . . . . . . . . . . . . . . . . . . 254
15 Servidor ssh 255
15.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
15.1.1 Verso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
15.1.2 Histria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
15.1.3 Contribuindo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
15.1.4 Caractersticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
15.1.5 Ficha tcnica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
15.1.6 Requerimentos de Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . 257
15.1.7 Arquivos de log criados pelo servidor ssh . . . . . . . . . . . . . . . . . . . 257
15.1.8 Instalao do servidor openSSH . . . . . . . . . . . . . . . . . . . . . . . . 257
15.1.9 Iniciando o servidor/reiniciando/recarregando a congurao . . . . . . 258
15.1.10 Opes de linha de comando . . . . . . . . . . . . . . . . . . . . . . . . . . 258
SUMRIO xii
15.2 Usando aplicativos clientes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
15.2.1 ssh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
15.2.2 scp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
15.2.3 sftp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
15.3 Servidor ssh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
15.3.1 sshd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
15.3.2 Controle de acesso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
15.3.3 Usando autenticao RSA/DSA - chave pblica/privada . . . . . . . . . . 263
15.3.4 Execuo de comandos especcos usando chaves . . . . . . . . . . . . . . 265
15.3.5 Criando um gateway ssh . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
15.3.6 Criando um tunel proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
15.3.7 Diferenas nas verses do protocolo . . . . . . . . . . . . . . . . . . . . . . 267
15.3.8 Exemplo de sshd_config com explicaes das diretivas . . . . . . . . . 268
16 Servidor pop3 273
16.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
16.1.1 Verso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
16.1.2 Contribuindo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
16.1.3 Caractersticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
16.1.4 Ficha tcnica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
16.1.5 Requerimentos de Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . 274
16.1.6 Arquivos de log criados pelo qpopper . . . . . . . . . . . . . . . . . . . . . 274
16.1.7 Instalao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
16.1.8 Iniciando o servidor/reiniciando/recarregando a congurao . . . . . . 275
16.1.9 Teste de acesso no pop3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
16.1.10 Opes de linha de comando . . . . . . . . . . . . . . . . . . . . . . . . . . 275
16.1.11 Enviando boletins de mensagens . . . . . . . . . . . . . . . . . . . . . . . . 277
16.1.12 Especicando quotas para as caixas de correio . . . . . . . . . . . . . . . . 277
16.1.13 Restringindo acesso ao servidor pop3 . . . . . . . . . . . . . . . . . . . . . 278
SUMRIO xiii
17 CVS 279
17.1 Introduo ao CVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
17.1.1 Verso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
17.1.2 Histria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
17.1.3 Contribuindo com o CVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
17.1.4 Caractersticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
17.1.5 Ficha tcnica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
17.1.6 Requerimentos de Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . 281
17.1.7 Arquivos de log criados pelo CVS . . . . . . . . . . . . . . . . . . . . . . . 282
17.1.8 Instalao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
17.1.9 Iniciando o servidor/reiniciando/recarregando a congurao . . . . . . 282
17.1.10 Opes de linha de comando . . . . . . . . . . . . . . . . . . . . . . . . . . 282
17.2 Servidor de CVS - congurando mtodos de acesso ao repositrio . . . . . . . . . 283
17.2.1 local . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
17.2.2 fork . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
17.2.3 ext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
17.2.4 pserver (password server) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
17.2.5 Congurando um servidor pserver . . . . . . . . . . . . . . . . . . . . . . 286
17.2.6 gssapi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
17.3 Criando projetos para serem usados no CVS . . . . . . . . . . . . . . . . . . . . . 289
17.3.1 Repositrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
17.3.2 Criando um repositrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
17.3.3 Logando no servidor de CVS via pserver . . . . . . . . . . . . . . . . . . . 290
17.3.4 Encerrando uma seo de CVS . . . . . . . . . . . . . . . . . . . . . . . . . 291
17.3.5 Baixando arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
17.3.6 Adicionando um novo projeto . . . . . . . . . . . . . . . . . . . . . . . . . 292
17.3.7 Sincronizando a cpia remota com a cpia local . . . . . . . . . . . . . . . 292
17.3.8 Enviando as mudanas para o servidor remoto . . . . . . . . . . . . . . . . 293
17.3.9 Adicionando um arquivo ao mdulo CVS do servidor . . . . . . . . . . . 293
17.3.10 Adicionando um diretrio ao mdulo CVS do servidor . . . . . . . . . . . 293
17.3.11 Removendo um arquivo do mdulo CVS remoto . . . . . . . . . . . . . . 294
SUMRIO xiv
17.3.12 Removendo um diretrio do mdulo CVS remoto . . . . . . . . . . . . . . 294
17.3.13 Dizendo que o mdulo atual no est mais em uso . . . . . . . . . . . . . 294
17.3.14 Visualizando diferenas entre verses de um arquivo . . . . . . . . . . . . 295
17.3.15 Visualizando o status de verso de arquivos . . . . . . . . . . . . . . . . . 295
17.3.16 Outros utilitrios para trabalho no repositrio . . . . . . . . . . . . . . . . 295
17.4 Arquivos administrativos em CVSROOT . . . . . . . . . . . . . . . . . . . . . . . 296
17.4.1 config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
17.4.2 modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
17.4.3 cvswrappers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
17.4.4 commitinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
17.4.5 verifymsg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
17.4.6 loginfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
17.4.7 cvsignore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
17.4.8 checkoutlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
17.4.9 history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
17.5 Clientes de CVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
17.5.1 cvs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
17.5.2 gcvs - Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
17.5.3 WinCVS - Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
17.5.4 MacCVS - Macintosh (PPC) . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
17.5.5 viewcvs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
17.6 Exemplo de uma seo CVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
18 SAMBA 303
18.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
18.1.1 Verso documentada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
18.1.2 Histria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
18.1.3 Contribuindo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
18.1.4 Caractersticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
18.1.5 Ficha tcnica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
18.1.6 Requerimentos de Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . 306
SUMRIO xv
18.1.7 Arquivos de log criados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
18.1.8 Instalao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
18.1.9 Iniciando o servidor/reiniciando/recarregando a congurao . . . . . . 306
18.1.10 Opes de linha de comando . . . . . . . . . . . . . . . . . . . . . . . . . . 307
18.2 Conceitos gerais para a congurao do SAMBA . . . . . . . . . . . . . . . . . . . 307
18.2.1 Nome de mquina (nome NetBios) . . . . . . . . . . . . . . . . . . . . . . . 307
18.2.2 Grupo de trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
18.2.3 Domnio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
18.2.4 Compartilhamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
18.2.5 Mapeamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
18.2.6 Navegao na Rede e controle de domnio . . . . . . . . . . . . . . . . . . 309
18.2.7 Arquivo de congurao do samba . . . . . . . . . . . . . . . . . . . . . . 310
18.2.8 Seo [global] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
18.2.9 Seo [homes] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
18.2.10 Seo [printers] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
18.2.11 Buscando problemas na congurao . . . . . . . . . . . . . . . . . . . . . 317
18.2.12 Nveis de sistema para eleio de rede . . . . . . . . . . . . . . . . . . . . . 318
18.2.13 Variveis de substituio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
18.3 Compartilhamento de arquivos e diretrios . . . . . . . . . . . . . . . . . . . . . . 320
18.3.1 Descrio de parmetros usados em compartilhamento . . . . . . . . . . . 321
18.4 Congurao em Grupo de Trabalho . . . . . . . . . . . . . . . . . . . . . . . 323
18.5 Resoluo de nomes de mquinas no samba . . . . . . . . . . . . . . . . . . . . . . 325
18.5.1 Arquivo /etc/samba/lmhosts . . . . . . . . . . . . . . . . . . . . . . . 325
18.5.2 WINS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
18.6 Servidor de data/hora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
18.6.1 Congurao do servio de data/hora no SAMBA . . . . . . . . . . . . . . 328
18.6.2 Sincronizando a data/hora no Cliente . . . . . . . . . . . . . . . . . . . . . 329
18.7 Congurao em Domnio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
18.7.1 Uma breve introduo a um Domnio de rede . . . . . . . . . . . . . . . . 329
18.7.2 Local Master Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
18.7.3 Domain Master Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
SUMRIO xvi
18.7.4 Congurando um servidor PDC no SAMBA . . . . . . . . . . . . . . . . . 330
18.7.5 Contas de mquinas de domnio . . . . . . . . . . . . . . . . . . . . . . . . 332
18.7.6 Criando uma conta de administrador de domnio . . . . . . . . . . . . . . 333
18.7.7 Criando Scripts de logon . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
18.7.8 Congurando pers de usurios . . . . . . . . . . . . . . . . . . . . . . . . 336
18.7.9 Modicaes de permisses de acesso pelos clientes do domnio . . . . . 338
18.8 Ativando o suporte a senhas criptografadas . . . . . . . . . . . . . . . . . . . . . . 338
18.8.1 Migrando de senhas texto plano para criptografadas . . . . . . . . . . . . 340
18.8.2 Adicionando usurios no smbpasswd . . . . . . . . . . . . . . . . . . . . . 340
18.8.3 Removendo usurios do smbpasswd . . . . . . . . . . . . . . . . . . . . . 340
18.8.4 Desabilitando uma conta no smbpasswd . . . . . . . . . . . . . . . . . . . 341
18.8.5 Habilitando uma conta no smbpasswd . . . . . . . . . . . . . . . . . . . . 341
18.8.6 Alterando a senha de um usurio . . . . . . . . . . . . . . . . . . . . . . . 341
18.8.7 Denindo acesso sem senha para o usurio . . . . . . . . . . . . . . . . . . 342
18.9 Ativando o suporte a senhas em texto plano . . . . . . . . . . . . . . . . . . . . . . 342
18.9.1 Congurando o acesso de clientes para uso de senhas em texto plano . . . 342
18.10Mapeamento de usurios/grupos em clientes . . . . . . . . . . . . . . . . . . . . . 345
18.10.1 Mapeamento de usurios/grupos domnio em Windows . . . . . . . . . . 345
18.10.2 Mapeamento de usurios/grupos domnio em Linux . . . . . . . . . . . . 345
18.11Compartilhamento de impresso no servidor SAMBA . . . . . . . . . . . . . . . . 347
18.11.1 Congurando o Linux como um servidor de impresso Windows . . . . . 347
18.12Controle de acesso ao servidor SAMBA . . . . . . . . . . . . . . . . . . . . . . . . 347
18.12.1 Nvel de acesso de usurios conectados ao SAMBA . . . . . . . . . . . . . 348
18.12.2 Restringindo o acesso por IP/rede . . . . . . . . . . . . . . . . . . . . . . . 348
18.12.3 Restringindo o acesso por interface de rede . . . . . . . . . . . . . . . . . . 349
18.12.4 Restringindo o acesso por usurios . . . . . . . . . . . . . . . . . . . . . . . 350
18.12.5 Evite o uso do parmetro hosts equiv! . . . . . . . . . . . . . . . . . . . . . . 351
18.12.6 Evite o uso de senhas em branco! . . . . . . . . . . . . . . . . . . . . . . . . 351
18.12.7 Criando um compartilhamento para acesso sem senha . . . . . . . . . . . 351
18.12.8 Criando um compartilhamento com acesso somente leitura . . . . . . . . 352
18.12.9 Criando um compartilhamento com acesso leitura/gravao . . . . . . . . 353
SUMRIO xvii
18.12.10Excesso de acesso na permisso padro de compartilhamento . . . . . . 354
18.12.11Restringindo o IPC$ e ADMIN$ . . . . . . . . . . . . . . . . . . . . . . . . 354
18.12.12Criando um compartilhamento invisvel . . . . . . . . . . . . . . . . . . . 355
18.12.13Executando comandos antes e aps o acesso ao compartilhamento . . . . 356
18.12.14Consideraes de segurana com o uso do parmetro public = yes . . . 357
18.12.15Senhas criptografadas ou em texto puro? . . . . . . . . . . . . . . . . . . . 357
18.12.16Mapeamento de nomes de usurios . . . . . . . . . . . . . . . . . . . . . . 358
18.13Melhorando a performance do compartilhamento/servidor . . . . . . . . . . . . 359
18.14Congurao de Clientes NetBEUI . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
18.14.1 Consideraes sobre o Windows for Workgroups e LanManager . . . . . 361
18.14.2 Congurando clientes em Grupo de Trabalho . . . . . . . . . . . . . . . . 361
18.14.3 Congurando clientes em Domnio . . . . . . . . . . . . . . . . . . . . . . 365
18.14.4 Erros conhecidos durante o logon do cliente . . . . . . . . . . . . . . . . . 369
18.14.5 Programas de navegao grcos . . . . . . . . . . . . . . . . . . . . . . . 370
18.14.6 Cliente de congurao grcos . . . . . . . . . . . . . . . . . . . . . . . . 370
18.15Exemplos de congurao do servidor SAMBA . . . . . . . . . . . . . . . . . . . . 371
18.15.1 Grupo de Trabalho com acesso pblico . . . . . . . . . . . . . . . . . . . . 371
18.15.2 Grupo de Trabalho com acesso por usurio . . . . . . . . . . . . . . . . . . 373
18.15.3 Domnio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
19 Restries de acesso, recursos e servios 379
19.1 Limitando recursos no bash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
19.1.1 Uso do comando readonly para exportar variveis . . . . . . . . . . . . . . 379
19.1.2 Restries nos diretrios de usurios e root . . . . . . . . . . . . . . . . . . 380
19.1.3 Restries bsicas do shell bash com bash -r/restricted, rbash . . . . . . 380
19.1.4 Finalizando consoles inativos . . . . . . . . . . . . . . . . . . . . . . . . . . 381
19.1.5 Desabilitando o registro de comandos digitados . . . . . . . . . . . . . . . 381
19.1.6 Desabilitando servios de shell para usurios . . . . . . . . . . . . . . . . . 381
19.2 Limitao de recursos usando PAM . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
19.2.1 Descobrindo se um determinado programa tem suporte a PAM . . . . . . 382
19.2.2 Denindo um policiamento padro restritivo . . . . . . . . . . . . . . . . . 383
SUMRIO xviii
19.2.3 Restringindo/Bloqueando o login . . . . . . . . . . . . . . . . . . . . . . . 383
19.2.4 Restringindo o acesso a root no su . . . . . . . . . . . . . . . . . . . . . . . 384
19.2.5 Restries de servios PAM baseados em dia/hora . . . . . . . . . . . . . 385
19.2.6 Permitindo acesso a grupos extras . . . . . . . . . . . . . . . . . . . . . . . 387
19.2.7 Limitao de recursos do shell . . . . . . . . . . . . . . . . . . . . . . . . . 387
19.3 Restries de acesso a programas/diretrios/arquivos usando grupos . . . . . . 388
19.4 Dando poderes de root para executar determinados programas . . . . . . . . . . 390
19.5 Restringindo o comando su . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
19.6 Restries baseadas em usurio/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
19.7 Restries por MAC Address/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
19.8 Desabilitando servios no usados no Inetd . . . . . . . . . . . . . . . . . . . . . . 394
19.9 Evitando o uso de hosts.equiv e .rhosts . . . . . . . . . . . . . . . . . . . . . 394
19.10Restringindo o uso do shutdown . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
19.11Restringindo o acesso ao sistema de arquivos /proc . . . . . . . . . . . . . . . . . 395
19.12Limitando o uso de espao em disco (quotas) . . . . . . . . . . . . . . . . . . . . . 396
19.12.1 Instalando o sistema de quotas . . . . . . . . . . . . . . . . . . . . . . . . . 397
19.12.2 Editando quotas de usurios/grupos . . . . . . . . . . . . . . . . . . . . . 398
19.12.3 Modicando a quota de todos os usurios de uma vez . . . . . . . . . . . 400
19.12.4 Vericando a quota disponvel ao usurio . . . . . . . . . . . . . . . . . . . 401
19.12.5 Vericando a quota de todos os usurios/grupos do sistema . . . . . . . . 402
19.12.6 Avisando usurios sobre o estouro de quota . . . . . . . . . . . . . . . . . 403
19.13Suporte a senhas ocultas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
19.14Suporte a senhas md5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
19.15Restries no hardware do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
19.15.1 BIOS do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
19.15.2 Retirada da unidade de disquetes . . . . . . . . . . . . . . . . . . . . . . . 405
19.15.3 Placas de rede com eprom de boot . . . . . . . . . . . . . . . . . . . . . . . 405
19.15.4 Protegendo o LILO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
19.15.5 Disco rgido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
SUMRIO xix
20 Introduo ao uso de criptograa para transmisso/armazenamento de dados 407
20.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
20.2 Sniffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
20.2.1 Detectando a presena de sniffers . . . . . . . . . . . . . . . . . . . . . . . 408
20.3 Alternativas seguras a servios sem criptograa . . . . . . . . . . . . . . . . . . . 409
20.3.1 http . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
20.3.2 Transmisso segura de e-mails . . . . . . . . . . . . . . . . . . . . . . . . . 409
20.3.3 Servidor pop3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
20.3.4 Transferncia de arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
20.3.5 login remoto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
20.3.6 Bate papo via IRC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
20.3.7 Transmisso de mensagens via ICQ . . . . . . . . . . . . . . . . . . . . . . 410
20.4 Sistemas de arquivos criptogrco . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
20.5 Usando pgp (gpg)para criptograa de arquivos . . . . . . . . . . . . . . . . . . . 412
20.5.1 Instalando o PGP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
20.5.2 Criando um par de chaves pblica/privada . . . . . . . . . . . . . . . . . 413
20.5.3 Encriptando dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
20.5.4 Decriptando dados com o gpg . . . . . . . . . . . . . . . . . . . . . . . . . 414
20.5.5 Assinando arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
20.5.6 Checando assinaturas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
20.5.7 Extraindo sua chave pblica do chaveiro . . . . . . . . . . . . . . . . . . . 415
20.5.8 Adicionando chaves pblicas ao seu chaveiro pessoal . . . . . . . . . . . . 415
20.5.9 Listando chaves de seu chaveiro . . . . . . . . . . . . . . . . . . . . . . . . 416
20.5.10 Apagando chaves de seu chaveiro . . . . . . . . . . . . . . . . . . . . . . . 416
20.5.11 Mudando sua FraseSenha . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
20.5.12 Assinando uma chave digital . . . . . . . . . . . . . . . . . . . . . . . . . . 416
20.5.13 Listando assinaturas digitais . . . . . . . . . . . . . . . . . . . . . . . . . . 417
20.5.14 Recomendaes para a assinatura de chaves gpg . . . . . . . . . . . . . . . 417
21 Apndice 423
21.1 Sobre este guia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
SUMRIO xx
21.2 Sobre o Autor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
21.3 Referncias de auxlio ao desenvolvimento do guia . . . . . . . . . . . . . . . . . 424
21.4 Onde encontrar a verso mais nova do guia? . . . . . . . . . . . . . . . . . . . . . 425
21.5 Colaboradores do Guia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
21.6 Marcas Registradas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
21.7 Futuras verses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
21.8 Chave Pblica PGP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
1
Captulo 1
Introduo
Bem vindo ao guia Foca GNU/Linux. O nome FOCA signica FOnte de Consulta e
Aprendizado. Este guia dividido em 3 nveis de aprendizado e verso que esta lendo agora
contm o(s) nvel(is) de aprendizado:
Avanado
Entre o contedo do guia, voc encontrar:
Anlise de logs do sistema GNU/Linux e aplicao para a soluo de problemas (Arqui-
vos e daemons de Log on page 81).
Gerenciamento de contas de usurios, denio de perodo automtico para troca de
senha peridica, polticas de segurana, etc (Gerenciamento de contas e cuidados para a
proteo de senhas on page 165).
Principais tipos de ataques para descoberta de senhas e alguns mtodos de como evita-
las (Senhas fceis de adivinhar e escolha de boas senhas on page 168).
Integrar mquinas Windows e Linux em uma mesma rede compartilhando dados entre
si e impresso (SAMBA on page 303).
Sistemas de proteo de senhas do sistema (Melhorando a segurana das senhas arma-
zenadas em seu sistema on page 173).
Criptograa e segurana na transmisso de dados, usando exemplos prticos do uso
de sniffers para entender o porque da uso de criptograa para transmisso segura de
dados (Introduo ao uso de criptograa para transmisso/armazenamento de dados
on page 407).
Uso de servios alternativos criptogrcos (Alternativas seguras a servios sem cripto-
graa on page 409).
Criptograa usando gnupgp (Usando pgp (gpg)para criptograa de arquivos on
page 412).
Captulo 1. Introduo 2
Uso de sistema de arquivos criptogrcos para armazenamento de dados (Sistemas de
arquivos criptogrco on page 410).
Otimizao de performance na transferncia de dados do disco rgido atravs de partici-
onamento e hdparm, uso de spindles para criao de swap (Melhoria de performance
on page 40).
O que so descargas estticas e a importncia do aterramento da instalao eltrica do
computador (dirigido a usurios domsticos e de pequenas instalaes) (Descargas es-
tticas on page 39).
Maiores consideraes a segurana de sistema e a problemas de segurana relativos a
falhas de congurao (distribuda entre os captulos de daemons e servidores).
Montagem de um servidor Web usando o Apache (Apache on page 175).
Montagem de um rewall para proteo do sistema (ltragem de pacotes) usando o
iptables, redirecionamento de pacotes, nat, masquerading, balanceamento de carga,
marcao de pacotes, logging (Firewall iptables on page 113).
Servidor de acesso para permitir o acesso a distncia ao seu computador usando o
telnetd (Servidor telnet on page 251).
Servidor de acesso para permitir o acesso a distncia a seu computador com criptograa
usando o ssh (Servidor ssh on page 255).
Servidor de identicao usando o oidentd (Servidor ident on page 245).
Montagem de um servidor pop3 para que suas estaes de rede possam acessar o email
na mquina servidor Linux usando programas como Outlook, Communicator, Mutt,
sylpheed e outros que utilizem o protocolo pop3 (Servidor pop3 on page 273).
Restries de acesso a instalao do computador, acesso a grupos do sistema, restries
de login usando PAM (Restries de acesso, recursos e servios on page 379).
Restries de espao usado em disco por usurios/grupos usando o sistema de quotas
(Limitando o uso de espao em disco (quotas) on page 396).
Uso de grupos dos sistema para restries de acesso (Restries de acesso a progra-
mas/diretrios/arquivos usando grupos on page 388).
Restries de acesso via hardware: BIOS, disquete, placa com boot via rede, LILO, disco
rgido (Dando poderes de root para executar determinados programas on page 390).
Manipulaes de variveis no bash (TMOUT, PS1, PS2, PS3, PS4, HISTORY, etc).
Montagem de shell bsico restrito (Restries bsicas do shell bash com bash -r/
restricted, rbash on page 380).
Captulo 1. Introduo 3
Uso do sudo para dar privilgio de execuo de programas como root a determinados
usurios (Dando poderes de root para executar determinados programas on page 390).
Para melhor organizao, dividi o guia em 3 verses: Iniciante, Intermedirio e Avanado.
Sendo que a verso Iniciante voltada para o usurio que no tem nenhuma experincia no
GNU/Linux. A ltima verso deste guia pode ser encontrada em: Pgina Ocial do guia Foca
GNU/Linux (http://www.guiafoca.org).
Caso tiver alguma sugesto, correo, crtica para a melhoria deste guia, envie um e-mail para
<gleydson@guiafoca.org>.
O Foca GNU/Linux atualizado freqentemente, por este motivo recomendo que preencha a
cha do aviso de atualizaes na pgina web em Pgina Ocial do guia Foca GNU/Linux
(http://www.guiafoca.org) no m da pgina principal. Aps preencher a cha do aviso
de atualizaes, voc receber um e-mail sobre o lanamento de novas verses do guia e o
que foi modicado, desta forma voc poder decidir em copia-la caso a nova verso contenha
modicaes que considera importantes.
Venho recebendo muitos elegios de pessoas do Brasil (e de paises de fora tambm) elogiando
o trabalho e a qualidade da documentao. Agradeo a todos pelo apoio, tenham certeza que
este trabalho desenvolvido pensando em repassar um pouco do conhecimento que adquiri
ao comear o uso do Linux.
Tambm venho recebendo muitos e-mails de pessoas que passaram na prova LPI nvel 1 e 2
aps estudar usando o guia Foca GNU/Linux. Fico bastante feliz por saber disso, pois nunca
tive a inteno de tornar o guia uma referncia livre para estudo da LPI e hoje usado para
estudo desta difcil certicao que aborda comandos, servios, conguraes, segurana, em-
pacotamento, criptograa, etc.
1.1 Consideraes sobre o nvel Avanado
Este guia foi compilado incluindo o nvel Avanado do guia FOCA GNU/Linux, ele no tem a
inteno de oferecer detalhes completos sobre a congurao de servios, servidores, aplicati-
vos, nem garantia que ele atender a determinada nalidade especca do usurio (principal-
mente de uma rede, que depende de uma perfeita compreenso para adaptao de acordo com
os requisitos de uma instalao local). Seu foco principal a instalao do servio, considera-
es voltadas a segurana, e exemplos de congurao e seu funcionamento.
Com relao a captulos sobre servidores, importante observar qual verso documentada
no guia e se confere com a instalada em seu sistema, a m de que tudo funcione corretamente.
Entretanto, na maioria dos casos, as explicaes relacionadas a uma verso de um programa
so inteiramente vlidas em uma nova verso.
Captulo 1. Introduo 4
1.2 Pr-requisitos para a utilizao deste guia
assumido que voc ja tenha experincia na congurao de sistemas Linux, conhea boa
parte dos comandos e sua utilizao, tenha noes de rede e saiba como procurar documen-
tao para complementar o que vem aprendendo. Enm, requer que se tiver interesse em se
aprofundar emdeterminada rea, que utilize os mtodos de busca de documentao sugeridos
no guia para complementao do aprendizado. Oguia no contmtodos os materiais para que
a pessoa se torne umexpert no assunto, mas contm as referncias para documentaes mais
especcas sobre determinadas reas do sistema.
Este guia no cobre a instalao do sistema. Para detalhes sobre instalao, consulte a docu-
mentao que acompanha sua distribuio GNU/Linux.
1.3 O Linux
O Linux um sistema operacional criado em 1991 por Linus Torvalds na universidade de Hel-
sinki na Finlndia. um sistema Operacional de cdigo aberto distribudo gratuitamente pela
Internet. Seu cdigo fonte liberado como Free Software (software livre) o aviso de copyright
do kernel feito por Linus descreve detalhadamente isto e mesmo ele no pode fechar o sistema
para que seja usado apenas comercialmente.
Isto quer dizer que voc no precisa pagar nada para usar o Linux, e no crime fazer cpias
para instalar em outros computadores, ns inclusive incentivamos voc a fazer isto. Ser um
sistema de cdigo aberto pode explicar a performance, estabilidade e velocidade emque novos
recursos so adicionados ao sistema.
Para rodar o Linux voc precisa, no mnimo, de umcomputador 386 SX com2 MB de memria
(para um kernel at a srie 2.2.x) ou 4MB (para kernels 2.4 e superiores) e 40MB disponveis
em seu disco rgido para uma instalao bsica e funcional.
O sistema segue o padro POSIX que o mesmo usado por sistemas UNIX e suas variantes.
Assim, aprendendo o Linux voc no encontrar muita diculdade em operar um sistema
do tipo UNIX, FreeBSD, HPUX, SunOS, etc., bastando apenas aprender alguns detalhes
encontrados em cada sistema.
O cdigo fonte aberto permite que qualquer pessoa veja como o sistema funciona (til para
aprendizado), corrija alguma problema ou faa alguma sugesto sobre sua melhoria, esse
um dos motivos de seu rpido crescimento, do aumento da compatibilidade de perifricos
(como novas placas sendo suportadas logo aps seu lanamento) e de sua estabilidade.
Outro ponto em que ele se destaca o suporte que oferece a placas, CD-Roms e outros tipos de
dispositivos de ltima gerao e mais antigos (a maioria deles j ultrapassados e sendo com-
pletamente suportados pelo sistema operacional). Este um ponto forte para empresas que
desejam manter seus micros em funcionamento e pretendem investir em avanos tecnolgicos
com as mquinas que possui.
Hoje o Linux desenvolvido por milhares de pessoas espalhadas pelo mundo, cada uma fa-
zendo sua contribuio ou mantendo alguma parte do kernel gratuitamente. Linus Torvalds
Captulo 1. Introduo 5
ainda trabalha em seu desenvolvimento e tambm ajuda na coordenao entre os desenvolve-
dores.
Osuporte ao sistema tambmse destaca como sendo o mais eciente e rpido do que qualquer
programa comercial disponvel no mercado. Existem centenas de consultores especializados
espalhados ao redor do mundo. Voc pode se inscrever em uma lista de discusso e relatar
sua dvida ou alguma falha, e sua mensagem ser vista por centenas de usurios na Internet
e algum ir te ajudar ou avisar as pessoas responsveis sobre a falha encontrada para devida
correo.
1.3.1 Algumas Caractersticas do Linux
livre e desenvolvido voluntariamente por programadores experientes, hackers, e con-
tribuidores espalhados ao redor do mundo que tem como objetivo a contribuio para
a melhoria e crescimento deste sistema operacional. Muitos deles estavam cansados do
excesso de propaganda (Marketing) e baixa qualidade de sistemas comerciais existentes
Convivem sem nenhum tipo de conito com outros sistemas operacionais (com o DOS,
Windows, OS/2) no mesmo computador.
Multitarefa real
Multiusurio
Suporte a nomes extensos de arquivos e diretrios (255 caracteres)
Conectividade com outros tipos de plataformas como Apple, Sun, Macintosh, Sparc, Alpha,
PowerPc, ARM, Unix, Windows, DOS, etc.
Proteo entre processos executados na memria RAM
Suporte a mais de 63 terminais virtuais (consoles)
Modularizao - O GNU/Linux somente carrega para a memria o que usado durante
o processamento, liberando totalmente a memria assim que o programa/dispositivo
nalizado
Devido a modularizao, os drivers dos perifricos e recursos do sistema podem ser car-
regados e removidos completamente da memria RAM a qualquer momento. Os drivers
(mdulos) ocupam pouco espao quando carregados na memria RAM (cerca de 6Kb
para a Placa de rede NE 2000, por exemplo)
No h a necessidade de se reiniciar o sistema aps a modicar a congurao de qual-
quer perifrico ou parmetros de rede. Somente necessrio reiniciar o sistema no caso
de uma instalao interna de um novo perifrico, falha em algum hardware (queima do
processador, placa me, etc.).
No precisa de um processador potente para funcionar. O sistema roda bem em com-
putadores 386Sx 25 com 4MB de memria RAM (sem rodar o sistema grco X, que
recomendado 8MB de RAM). J pensou no seu desempenho em um 486 ou Pentium ;-)
O crescimento e novas verses do sistema no provocam lentido, pelo contrrio, a cada
nova verso os desenvolvedores procuram buscar maior compatibilidade, acrescentar
recursos teis e melhor desempenho do sistema (como o que aconteceu na passagem do
kernel 2.0.x para 2.2.x).
No requerida uma licena para seu uso. O GNU/Linux licenciado de acordo com os
termos da GPL.
Acessa corretamente discos formatados pelo DOS, Windows, Novell, OS/2,
Captulo 1. Introduo 6
NTFS, SunOS, Amiga, Atari, Mac, etc.
Utiliza permisses de acesso a arquivos, diretrios e programas emexecuo na memria
RAM.
O LINUX NO VULNERVEL A VRUS! Devido a separao de privilgios entre pro-
cessos e respeitadas as recomendaes padro de poltica de segurana e uso de contas
privilegiadas (como a de root, como veremos adiante), programas como vrus tornam-se
inteis pois tem sua ao limitada pelas restries de acesso do sistema de arquivos e
execuo. Frequentemente so criados exploits que tentam se aproveitar de falhas exis-
tentes em sistemas desatualizados e usa-las para danicar o sistema. Erroneamente este
tipo de ataque classicado como vrus por pessoas mal informadas e so resolvidas
com sistemas bem mantidos. Em geral, usando uma boa distribuio que tenha um bom
sistema de atualizao resolve em 99.9% os problemas com exploits. Qualquer programa
(nocivo ou no) poder alterar partes do sistema que possui permisses (ser abordado
como alterar permisses e tornar seu sistema mais restrito no decorrer do guia).
Rede TCP/IP mais rpida que no Windows e tem sua pilha constantemente melhorada.
O GNU/Linux tem suporte nativo a redes TCP/IP e no depende de uma camada in-
termediria como o WinSock. Em acessos via modem a Internet, a velocidade de trans-
misso 10% maior. Jogadores do Quake ou qualquer outro tipo de jogo via Internet
preferem o GNU/Linux por causa da maior velocidade do Jogo em rede. fcil rodar
um servidor Quake em seu computador e assim jogar contra vrios adversrios via In-
ternet.
Roda aplicaes DOS atravs do DOSEMU, QEMU, BOCHS. Para se ter uma idia, pos-
svel dar o boot em um sistema DOS qualquer dentro dele e ao mesmo tempo usar a
multitarefa deste sistema.
Roda aplicaes Windows atravs do WINE.
Suporte a dispositivos infravermelho.
Suporte a rede via rdio amador.
Suporte a dispositivos Plug-and-Play.
Suporte a dispositivos USB.
Suporte a Fireware.
Dispositivos Wireless.
Vrios tipos de rewalls de alta qualidade e com grande poder de segurana de graa.
Roteamento esttico e dinmico de pacotes.
Ponte entre Redes.
Proxy Tradicional e Transparente.
Possui recursos para atender a mais de um endereo IP na mesma placa de rede, sendo
muito til para situaes de manuteno em servidores de redes ou para a emulao de
mais computadores virtualmente. O servidor WEB e FTP podem estar localizados no
mesmo computador, mas o usurio que se conecta tem a impresso que a rede possui
servidores diferentes.
O sistema de arquivos usado pelo GNU/Linux (Ext2) organiza os arquivos de forma
inteligente evitando a fragmentao e fazendo-o um poderoso sistema para aplicaes
multi-usurias exigentes e gravaes intensivas.
Permite a montagem de um servidor Web, E-mail, News, etc. com um baixo custo e
alta performance. O melhor servidor Web do mercado, o Apache, distribudo gratuita-
mente junto coma maioria das distribuies Linux. Omesmo acontece como Sendmail.
Captulo 1. Introduo 7
Por ser um sistema operacional de cdigo aberto, voc pode ver o que o cdigo fonte
(instrues digitadadas pelo programador) faz e adapta-lo as suas necessidades ou de
sua empresa. Esta caracterstica uma segurana a mais para empresas srias e outros
que no querem ter seus dados roubados (voc no sabe o que um sistema sem cdigo
fonte faz na realidade enquanto esta processando o programa).
Suporte a diversos dispositivos e perifricos disponveis no mercado, tanto os novos
como obsoletos.
Pode ser executado em 10 arquiteturas diferentes (Intel, Macintosh, Alpha, Arm, etc.).
Consultores tcnicos especializados no suporte ao sistema espalhados por todo o mundo.
Entre muitas outras caractersticas que voc descobrir durante o uso do sistema.
TODOS OS TENS DESCRITOS ACIMA SO VERDADEIROS E TESTADOS PARA QUE TI-
VESSE PLENA CERTEZA DE SEU FUNCIONAMENTO.
Captulo 1. Introduo 8
9
Captulo 2
Explicaes Bsicas
Este captulo traz explicaes sobre os principais componentes existentes no computador e do
sistema operacional.
2.1 Monitorando os logs
Os arquivos de logs residem em /var/log e registram tudo o que acontecem com o kernel,
com os daemons e utilitrios do sistema. Eles so muito importantes tanto para monitorar o
que acontece com o seu sistema como para ajudar na soluo de problemas diversos.
Acostume-se a olhar constantemente os arquivos de log em seu sistema, isto pode ser impor-
tante para encontrar possveis falhas de segurana, tentativa de acesso ao sistema e, principal-
mente, solucionar problemas (principalmente os mais complicados). Leia Arquivos e daemons
de Log on page 81 para mais detalhes.
2.1.1 Destruindo arquivos/parties de forma segura
Esta seo tem a inteno de conscientizar o administrador do uso devido de tcnicas para
garantir que dados sensveis sejam apagados de forma segura em seu sistema.
Quando um arquivo apagado, apenas a entrada na tabela de inodes mexida, e ele pode
ainda ser recuperado com o debugfs e um pouco de pacincia e engenharia. O mesmo acon-
tece com as parties, que podem ser recuperadas com facilidade (isto explicado no nvel
Intermedirio do guia). Esta recuperao proporcionada pelas regras de funcionamento do
sistema de arquivos e do esquema de particionamento, ou seja, so permitidas pelo SO.
Vou um pouco mais alm: O disco rgido uma mdia magntica e opera de forma mecnica
para ler/gravar dados. Quando um arquivo apagado, seja por qualquer motivo, ainda
possvel recupera-lo. O que permite isto porque o HD nem sempre tem a preciso de gravar
exatamente no mesmo lugar (pois a cabea movida mecanicamente), gravando em trilhas
microscpicamente vizinhas a anterior. Ento a imagem do arquivo que foi apagada continua
Captulo 2. Explicaes Bsicas 10
l. Segundo ouvi falar, a NASA possui recursos para recuperar at 60 regravaes posteriores
no disco. claro que isto pode ocorrer em pouco tempo, dependendo do tamanho de sua
partio e se esta for uma /var/spool em um servidor de e-mails :-)
Baseado nesta teoria, voc poder apagar os dados de forma destrutiva usando o programa
shred, que regrava o arquivo repetidamente com dados aleatrios. Sua sintaxe a seguinte:
shred -n 70 -v -u arquivo
Isto faz com que ele regrava o contedo do arquivo 70 vezes com dados aleatrios. O -u
trunca e remove o arquivo aps concludo.
Note que o uso de dados aleatrios serve para destruir as possibilidades de uma recuperao
simples, este o motivo de se recomendar sempre o uso de /dev/urandom ao invs de /dev
/zero para destruio de arquivos.
OBS1: Saiba exatamente o que est fazendo pois estes procedimentos servem para dicultar
ao mximo a recuperao de dados.
OBS2: Devido as tecnologias de sistemas que utilizam journaling (XFS, EXT3, JFS e ReiserFS)
e sistemas RAID, o shred no funcionar. O shred tambm no funcionar com sistemas de
arquivos via rede (NFS, SMB, etc.). Se procura alguma forma de proteger seus dados, mesmo
que apagados, utilize um mtodo de criptograa como o DM-CRYPTO, crypto-loop, gpg, etc.
OBS3: Caso esteja usando um sistema de arquivos criptografado, estes procedimentos so
quase desnecessrios (dependendo do nvel de segurana e algortmos que voc utiliza).
2.2 Curingas
Curingas (ou referncia global) um recurso usado para especicar um ou mais arquivos ou
diretrios do sistema de uma s vez. Este um recurso permite que voc faa a ltragem do
que ser listado, copiado, apagado, etc. So usados 4 tipos de curingas no GNU/Linux:
* - Faz referncia a um nome completo/restante de um arquivo/diretrio.
? - Faz referncia a uma letra naquela posio.
[padro] - Faz referncia a uma faixa de caracteres de um arquivo/diretrio. Padro
pode ser:
[a-z][0-9] - Faz referncia a caracteres de a at z seguido de um caracter de 0
at 9.
[a,z][1,0] - Faz a referncia aos caracteres a e z seguido de um caracter 1 ou 0
naquela posio.
[a-z,1,0] - Faz referncia a intervalo de caracteres de a at z ou 1 ou 0 naquela
posio.
Captulo 2. Explicaes Bsicas 11
A procura de caracteres Case Sensitive assim se voc deseja que sejam localizados
todos os caracteres alfabticos voc deve usar [a-zA-Z].
Caso a expresso seja precedida por um ^, faz referncia a qualquer caracter exceto o da
expresso. Por exemplo [^abc] faz referncia a qualquer caracter exceto a, b e c.
{padres} - Expande e gera strings para pesquisa de padres de um arquivo/diretrio.
X{ab,01} - Faz referncia a seqencia de caracteres Xab ou X01
X{a-z,10} Faz referencia a seqencia de caracteres Xa-z e X10.
O que diferencia este mtodo de expanso dos demais que a existncia do arquivo/diretrio
opcional para gerao do resultado. Isto til para a criao de diretrios. Lembrando que os
4 tipos de curingas (*, ?, [], {}) podem ser usados juntos. Para entender melhor vamos
a prtica:
Vamos dizer que tenha 5 arquivo no diretrio /usr/teste: teste1.txt,teste2.txt,
teste3.txt,teste4.new,teste5.new.
Caso deseje listar todos os arquivos do diretrio /usr/teste voc pode usar o coringa *
para especicar todos os arquivos do diretrio:
cd /usr/teste e ls * ou ls /usr/teste/*.
No tem muito sentido usar o comando ls com * porque todos os arquivos sero listados se
o ls for usado sem nenhum Coringa.
Agora para listar todos os arquivos teste1.txt,teste2.txt,teste3.txt com excesso
de teste4.new, teste5.new, podemos usar inicialmente 3 mtodos:
1 Usando o comando ls *.txt que pega todos os arquivos que comeam com qualquer
nome e terminam com .txt.
2 Usando o comando ls teste?.txt, que pega todos os arquivos que comeam com o
nome teste, tenham qualquer caracter no lugar do coringa ? e terminem com .txt.
Com o exemplo acima teste*.txt tambm faria a mesma coisa, mas se tambm tivs-
semos um arquivo chamado teste10.txt este tambm seria listado.
3 Usando o comando ls teste[1-3].txt, que pega todos os arquivos que comeam
com o nome teste, tenham qualquer caracter entre o nmero 1-3 no lugar da 6a letra
e terminem com .txt. Neste caso se obtm uma ltragem mais exata, pois o coringa ?
especica qualquer caracter naquela posio e [] especica nmeros, letras ou intervalo
que ser usado.
Agora para listar somente teste4.new e teste5.new podemos usar os seguintes mtodos:
1 ls *.new que lista todos os arquivos que terminam com .new
2 ls teste?.new que lista todos os arquivos que comeamcomteste, contenhamqual-
quer caracter na posio do coringa ? e terminem com .new.
3 ls teste[4,5].* que lista todos os arquivos que comeam com teste contenham
nmeros de 4 e 5 naquela posio e terminem com qualquer extenso.
Existem muitas outras formas de se fazer a mesma coisa, isto depende do gosto de cada um. O
que pretendi fazer aqui foi mostrar como especicar mais de um arquivo de uma s vez. O uso
de curingas ser til ao copiar arquivos, apagar, mover, renomear, e nas mais diversas partes
Captulo 2. Explicaes Bsicas 12
do sistema. Alias esta uma caracterstica do GNU/Linux: permitir que a mesma coisa possa
ser feita com liberdade de vrias maneiras diferentes.
13
Captulo 3
Hardware
Hardware tudo que diz respeito a parte fsica do computador. Nesta seo sero abordados
assuntos relacionados com a congurao de hardwares, escolha de bons hardwares, disposi-
tivos for Windows, etc.
3.1 Placa de expanso
um circuito eletrnico encaixado na placa me que tem por objetivo adicionar novas funcio-
nalidades ao computador. Esta placa pode ser uma:
placa de som - para fazer o computador emitir sons, msicas, ligar um joystick, etc.
fax-modem - para enviar/receber fax, conectar-se a internet, BBS, acesso remoto, bina,
etc.
rede - para permitir a comunicao com outros computadores em uma rede interna
controladora de perifricos - Para ligar discos rgidos, unidades de disquete,
impressora, mouse, joystick, etc.
SCSI - Para ligar unidades de disco rgidos e perifricos de alto desempenho.
Controladora de Scanner - Para ligar um Scanner externo ao micro computador.
O encaixe da placa me que recebe as placas de expanso so chamados de Slots.
3.2 Nomes de dispositivos
Seria terrvel se ao congurar CADAprograma que utilize o mouse ou o modemprecisssemos
nos se referir a ele pela IRQ, I/O, etc. . . para evitar isso so usados os nomes de dispositivos.
Captulo 3. Hardware 14
Os nomes de dispositivos no sistema GNU/Linux so acessados atravs do diretrio /dev. Aps
congurar corretamente o modem, com sua porta I/O 0x2F8 e IRQ 3, ele identicado auto-
maticamente por /dev/ttyS1 (equivalente a COM2 no DOS). Daqui para frente basta se referir
a /dev/ttyS1 para fazer alguma coisa com o modem.
Voc tambm pode fazer um link de /dev/ttyS1 para um arquivo chamado /dev/modem
usando: ln -s /dev/ttyS1 /dev/modem, faa a congurao dos seus programas usando
/dev/modem ao invs de /dev/ttyS1 e se precisar recongurar o seu modem e a porta serial
mudar para /dev/ttyS3, ser necessrio somente apagar o link /dev/modem antigo e criar
um novo apontando para a porta serial /dev/ttyS3.
No ser necessrio recongurar os programas que usam o modem pois eles esto usando
/dev/modem que est apontando para a localizao correta. Isto muito til para um bom
gerenciamento do sistema.
Abaixo uma tabela com o nome do dispositivo no GNU/Linux, portas I/O, IRQ, DMA e nome
do dispositivo no DOS (os nomes de dispositivos esto localizados no diretrio /dev):
Dispos. Dispos.
Linux DOS IRQ DMA I/O
ttyS0 COM1 4 - 0x3F8
ttyS1 COM2 3 - 0x2F8
ttyS2 COM3 4 - 0x3E8
ttyS3 COM4 3 - 0x2E8
lp0 LPT1 7 3(ECP) 0x378
lp1 LPT2 5 3(ECP) 0x278
/dev/hda1 C: 14 - 0x1F0,0x3F6
/dev/hda2 D: * 14 - 0x1F0,0x3F6
/dev/hdb1 D: * 15 - 0x170,0x376
* A designao de letras de unidade do DOS no padro como no GNU/Linux e depende da
existncia de outras unidades fsicas/lgicas no computador.
3.3 Congurao de Hardware
A congurao consiste em ajustar as opes de funcionamento dos dispositivos (perifricos)
para comunicao com a placa me. Um sistema bem congurado consiste em cada dispo-
sitivo funcionando com suas portas I/O, IRQ, DMA bem denidas, no existindo conitos
com outros dispositivos. Isto tambm permitir a adio de novos dispositivos ao sistema sem
problemas.
importante conhecer bem a congurao dos dispositivos do sistema para saber identicar e
corrigir possveis problemas de conitos e o que deve ser modicado, caso seja necessrio.
Os parmetros usados para congurar dispositivos de hardware so a IRQ, DMA e I/O. Nem
todo dispositivo usam estes trs parmetros, alguns apenas a I/O e IRQ, outros apenas a I/O,
etc.
Captulo 3. Hardware 15
3.3.1 IRQ - Requisio de Interrupo
Existem dois tipos bsicos de interrupes: as usadas por dispositivos (para a comunicao
coma placa me) e programas (para obter a ateno do processador). As interrupes de software
so mais usadas por programas, incluindo o sistema operacional e interrupes de hardware mais
usado por perifricos. Daqui para frente ser explicado somente detalhes sobre interrupes
de hardware.
Os antigos computadores 8086/8088 (XT) usavam somente 8 interrupes de hardware ope-
rando a 8 bits. Com o surgimento do AT foram includas 8 novas interrupes, operando a 16
bits. Os computadores 286 e superiores tem 16 interrupes de hardware numeradas de 0 a
15. Estas interrupes oferecem ao dispositivo associado a capacidade de interromper o que o
processador estiver fazendo, pedindo ateno imediata.
As interrupes do sistema podem ser visualizadas no kernel com o comando cat
/proc/interrupts. Abaixo um resumo do uso mais comum das 16 interrupes de hard-
ware:
0 Timer do Sistema - Fixa
01 Teclado - Fixa
02 Controlador de Interrupo Programvel - Fixa.
Esta interrupo usada como ponte para a IRQ 9 e vem dos
antigos processadores 8086/8088 que somente tinham 8 IRQs.
Assim, pera tornar processadores 8088 e 80286 comunicveis,
a IRQ 2 usada como um redirecionador quando se utiliza uma
interrupo acima da 8.
03 Normalmente usado por /dev/ttyS1 mas seu uso depende dos
dispositivos instalados em seu sistema (como fax-modem,
placas de rede 8 bits, etc).
04 Normalmente usado por /dev/ttyS0 e quase sempre usada pelo mouse
serial a no ser que um mouse PS2 esteja instalado no sistema.
05 Normalmente a segunda porta paralela. Muitos micros no tem a segunda
porta paralela, assim comum encontrar placas de som e outros
dispositivos usando esta IRQ.
06 Controlador de Disquete - Esta interrupo pode ser compartilhada
com placas aceleradoras de disquete usadas em tapes (unidades de fita).
07 Primeira porta de impressora. Pessoas tiveram sucesso compartilhando
esta porta de impressora com a segunda porta de impressora.
Muitas impressoras no usam IRQs.
Captulo 3. Hardware 16
08 Relgio em tempo real do CMOS - No pode ser usado por nenhum
outro dispositivo.
09 Esta uma ponte para IRQ2 e deve ser a ltima IRQ a ser
utilizada. No entanto pode ser usada por dispositivos.
10 Interrupo normalmente livre para dispositivos. O controlador
USB utiliza essa interrupo quando presente, mas no regra.
11 Interrupo livre para dispositivos
12 Interrupo normalmente livre para dispositivos. O mouse PS/2,
quando presente, utiliza esta interrupo.
13 Processador de dados numricos - No pode ser usada ou compartilhada
14 Esta interrupo usada pela primeira controladora de discos
rgidos e no pode ser compartilhada.
15 Esta a interrupo usada pela segunda controladora de discos
e no pode ser compartilhada. Pode ser usada caso a segunda
controladora esteja desativada.
Dispositivos ISA, VESA, EISA, SCSI no permitem o compartilhamento de uma mesma IRQ,
talvez isto ainda seja possvel caso no haja outras opes disponveis e/ou os dois dispositivos
no acessem a IRQ ao mesmo tempo, mas isto uma soluo precria.
Conitos de IRQocorremquando dois dispositivos disputamuma mesma IRQ, e normalmente
ocasionam a parada ou mal funcionamento de um dispositivo e/ou de todo o sistema. Para
resolver um conito de IRQs, deve-se conhecer quais IRQs esto sendo usadas por quais dis-
positivos (usando cat /proc/interrupts) e congurar as interrupes de forma que uma
no entre em conito com outra. Isto normalmente feito atravs dos jumpers de placas ou
atravs de software (no caso de dispositivos jumperless ou plug-and-play).
Dispositivos PCI so projetados para permitir o compartilhamento de uma mesma IRQ pois as
manipulam de forma diferente. Se for necessrio usar uma interrupo normal, o chipset (ou
BIOS) mapear a interrupo para uma interrupo normal do sistema (normalmente usando
alguma interrupo entre a IRQ 9 e IRQ 12).
Prioridade das Interrupes
Cada IRQ no sistema tem um nmero que identica a prioridade que ser atendida pelo pro-
cessador. Nos antigos sistemas XT as prioridades eram identicadas em seqncia de acordo
com as interrupes existentes:
IRQ 0 1 2 3 4 5 6 7 8
Captulo 3. Hardware 17
PRI 1 2 3 4 5 6 7 8 9
Com o surgimento do barramento AT (16 bits), as interrupes passaram a ser identicadas da
seguinte forma:
IRQ 0 1 2 (9 10 11 12 13 14 15) 3 4 5 6 7 8
PRI 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Note que a prioridade segue em seqncia atravs da ponte da IRQ 2 para IRQ 9. Os disposi-
tivos com prioridade mais baixa so atendidos primeiro, mas uma diferena de desempenho
praticamente imperceptvel de ser notada nos sistemas atuais.
3.3.2 DMA - Acesso Direto a Memria
ADMA usada para permitir a transferncia de dados entre dispositivos I/Oe a memria sem
precisar do processador faze-lo. Ele livra esta carga do processador e resulta em uma rpida
transferncia de dados.
O PC padro tem dois controladores de DMA. O primeiro controla os canais 0, 1, 2, 3 e
o segundo os canais 4, 5, 6, 7, assim temos 8 canais. No entanto, o canal 4 perdido
porque usado pelo controlador de acesso direto a memria. Os canais 0-3 so chamados de canais
baixos porque podem somente mover um byte (8 bits) por transferncia enquanto canais altos
movem 2 bytes (16 bits) por transferncia.
Os dados movidos usando a DMA no so movidos atravs do controlador de DMA. Isto ofe-
rece uma limitao porque a DMA somente podem mover dados entre os dispositivos (portas
I/O) e a memria. No possvel mover dados entre as portas ou entre a memria.
Existem dois controladores de DMA nos computadores AT e superiores. Ao contrrio do que
acontece com os dois controladores de IRQ, o primeiro controlador ligado ao segundo e no
o segundo ao primeiro. Os canais de DMA altos (5 ao 7) somente podem ser acessados por
dispositivos de 16 bits (aqueles que utilizam a segunda parte do slot AT). Como resultado
temos 8 canais de DMA, de 0 a 7, sendo que a DMA 4 usada como ligao entre eles.
Os canais de DMA em uso no sistema podem ser visualizados com cat /proc/dma. Abaixo
uma listagem de uso mais comum dos canais de DMA.
DMA Barram. Uso
0 - Usada pelo circuito de refresh da memria DRAM
1 8/16 bits Normalmente usado por placas de som (canal 8 bits),
porta paralela ECP, adaptadoras SCSI, placas de rede ou
controladora de scanner.
2 8/16 bits Normalmente usado pela controladora de disquetes ou
controladoras de tapes.
3 8/6 bits Usado pela porta paralela ECP, placa de som,
controladoras de tapes, controladoras SCSI ou
Captulo 3. Hardware 18
controladora de scanner antiga.
4 - Usada como ponte para a outra controladora de DMA (0-3)
5 16 bits Normalmente usada pela placa de som (canal 16 bits),
placas controladoras SCSI, placas de rede ou
controladora de scanner.
6 16 bits Placa de som (canal 16 bits), controladora de scanner
ou placa de rede.
7 16 bits Placa de som (canal 16 bits), controladora de scanner
ou placa de rede.
Somente dispositivos ISA e derivados dele, como o EISA e VESA, usam os canais de DMA
padro. Os atuais dispositivos de alta taxa de transferncia (normalmente PCI) possuem seu
prprio controlador de DMA embutido, muito mais rpido do que a DMA padro. Este con-
trolador de DMA chamado de Bus Mastering e muito usado nos discos rgidos atuais e pode
atingir taxas de 33,3MB/s (no modo 2) e 66MB/s (no modo 4 - requer um cabo IDE com ater-
ramento para evitar interferncias de rudos externos).
Conitos de DMA
Umcanal de DMAno pode ser compartilhado entre dispositivos. Ainda possvel congurar
dois dispositivos para usarem um mesmo canal de DMA, desde que ele no seja usado ao
mesmo tempo. Isto acontece comScanners paralelos que compartilhama mesma porta paralela
com a impressora. Se voc for uma pessoa que explora os recursos de multitarefa de seu Linux
e seu desempenho, evite estes tipos de dispositivos, prera aqueles que utilizam seus prprios
recursos.
Quando ocorre um conito de DMA, os dados podem ser misturados e ocorrerem coisas estra-
nhas at o travamento total do sistema. Este tipo de conito difcil de se diagnosticar, a no
ser que o tcnico seja experiente o bastante e tenha desconado do que o problema se trata. . .
3.3.3 I/O - Porta de Entrada/Sada
Cada dispositivo possui um endereo de porta. O endereo uma localizao da memria
usada pelo computador para enviar dados ao dispositivo e onde o dispositivo envia dados ao
computador. Ao contrrios da IRQ e DMA, o dispositivo pode usar mais de uma porta de
Entrada/Sada ou uma faixa de endereos. Por exemplo, uma placa de som padro usa as
portas 0x220, 0x330 e 0x388, respectivamente audio digital, midi e opl3.
As placas de rede normalmente transferemgrandes quantidades de dados, assimocupamuma
faixa de endereos. Minha NE2000, por exemplo, ocupa a faixa de endereos 0x260 a 0x27F
(0x260-0x27F). O tamanho da faixa de endereos varia de acordo com o tipo de dispositivo.
Os endereos de I/O em uso no sistema podem ser visualizados com o comando cat
/proc/ioports.
Endereos das portas de entrada/sada no podem ser compartilhados
Captulo 3. Hardware 19
3.4 Hardwares congurveis por jumpers, dip-switches, jumperless
e Plug-and-Play.
3.4.1 Jumpers
Hardwares congurveis por jumpers (pinos metlicos protegidos por uma capa plstica) tem
sua congurao alterada atravs da colocao, retirada ou mudana de posio. Hardwares
congurveis por jumpers so os preferidos por tcnicos de informtica muito experientes.
Estes hardwares possuem a caracterstica de somente terem seus parmetros modicados atra-
vs da mudana da posio dos jumpers da placa, desta forma se obtm uma congurao xa
(no podendo ser modicada por qualquer tipo de programa) e o dispositivo estar sempre
pronto para ser ativado aps a inicializao de qualquer sistema operacional.
O nico inconveniente a necessidade de se retirar a placa do computador para se ter acesso
aos jumpers de congurao, a no ser que estejam manualmente acessveis. Alguns hardwa-
res congurveis atravs de jumpers podem tambm funcionar como Plug-and-Play, atravs
de um ajuste da posio dos jumpers para Plug-and-Play.
Normalmente as placas controladoras SIDE, rede, bons modelos de fax-modens, placas de som,
SCSI, etc., so conguradas por jumpers e possuem um mapa de congurao gravado em seu
circuito impresso que explica as posies de como os jumpers devem ser posicionados para
operar na congurao desejada. Normalmente possvel escolher uma entre vrios tipos
de congurao, mas recomendado optar por valores padres (para detalhes veja IRQ -
Requisio de Interrupo on page 15, DMA - Acesso Direto a Memria on page 17 e I/O -
Porta de Entrada/Sada on the facing page).
As disposio dos jumpers so normalmente denidas em fechado/aberto e multi-posio. Na
disposio fechado/aberto, o jumper pode ou no ser colocado, denindo a congurao do
dispositivo:
::|::
Esta disposio facilmente encontrada na seleo de IRQ e I/O em placas de fax-modem.
Na disposio multi-posio, os pinos de encaixe so numerados de 1 a 3 (ou 1 a 4, 1 a 5, etc) e os
pinos podem ou no ser colocados na placa e a posio que so colocados tambm inuencia
os valores escolhidos para o funcionamento do dispositivo (a posio 1-2 especicam um valor
enquanto 2-3 especicam outro). A associao entre a posio dos jumpers e a congurao
desejada feita consultando o mapa desenhado no circuito impresso da placa ou o manual de
instrues da placa.
A congurao de jumper atravs de multi-posio normalmente usada em placas me para
denir a freqncia de operao do barramento, a freqncia de multiplicao ou o tipo do processador.
Se no possuir o mapa de congurao de sua placa e/ou o manual de instrues, ser ne-
cessrio fazer um mapeamento manual da placa, mas para isto voc precisar conhecer de-
talhadamente a congurao de portas I/O, DMA, IRQ usadas na mquina que ser usada
Captulo 3. Hardware 20
e anotar as diferenas obtidas atravs da modicao da pinagem do dispositivo. Isto no
fcil, mas tcnicos de informtica experientes conhecero as armadilhas encontradas pelo
mapeamento manual de placas e faro o esquema de congurao completo do dispositivo,
obtendo um excelente manual de instrues. Nesta hora a experincia conta mais que o uso de
programas de diagnstico.
Outra caracterstica de hardwares congurados atravs de jumpers que raramente apresen-
tam problemas de funcionamento, a no ser que seus parmetros como IRQ, DMA, ou I/O
estejam em conitos com outro dispositivo, mas isso no culpa do fabricante e nem mesmo
do dispositivo. . .
3.4.2 Dip-Switches
a mesma coisa que os hardwares congurveis por jumpers exceto que so usados dip-
switches no lugar de jumpers. O dip-switches um conjunto de chaves numeradas que po-
dem ser colocadas para cima ou para baixo (como um disjuntor ou vrios interruptores
LIGA/DESLIGA colocados um ao lado do outro) para se modicar a congurao do dispo-
sitivo.
Normalmente as chaves esto acessveis na parte metlica da placa (onde os hardwares so
conectados) para permitir a fcil mudana de congurao sem retirar a placa. ainda comum
encontrar isto em algumas placas de fax-modem.
3.4.3 Jumperless (sem jumper)
Os hardwares jumperless no possuem jumpers e so congurados atravs de um programa
que acompanha a prpria placa. Neste programa escolhida a IRQ, DMA, I/Oe a congurao
salva na prpria placa ou restaurada aps cada inicializao por um programa carregado na
memria. Devido a congurao via software, se obtm uma congurao xa com muito
mais facilidade do que via jumpers (por no haver a necessidade de se retirar a placa).
A maioria das placas jumperless podem funcionar tambm como Plug-and-Play. Existem mui-
tas placas de rede, fax-modem, scanner jumperless no mercado.
3.4.4 Plug-and-Play
O Plug-and-Play um protocolo que l os valores de operao disponveis para a placa e per-
mitem que o usurio possa especicar facilmente qual ser sua IRQ, DMA, I/O.
A diferena em relao ao modo jumperless que o mesmo programa de congurao Plug-
and-Play permite congurar todas as placas Plug-and-Play e a placa somente recebe os valores
de IRQ, DMAe I/Oaps ser ativada por este programa, normalmente o isapnp no Linux. Isto
signica que a placa no tem nenhum parmetro de IRQ, DMA e I/O na partida do sistema.
Desta forma, somente sistemas operacionais que possuem suporte ao Plug-and-Play (como o
GNU/Linux, Windows) ou programas acionadores PnP (como o ICU para o DOS) podemativar
e usar estes tipos de placas.
Captulo 3. Hardware 21
Placas Plug-and-Play permitem muita exibilidade de congurao de dispositivos. O pro-
grama usado para a congurao de placas Plug-and-Play no GNU/Linux o isapnp e a
congurao de todas as placas Plug-and-Play so denidas no arquivo /etc/isapnp.conf.
Veja a prxima seo para entender como funciona o arquivo de congurao isapnp.conf
e assim poder ativar seu dispositivo Plug-and-Play.
Entendendo o arquivo de congurao isapnp.conf
Segue abaixo umexemplo de arquivo /etc/isapnp.conf gerado atravs do pnpdump para a
congurao de uma placa de SomSound Blaster comporta IDE embutida no GNU/Linux.
O objetivo congurar a placa Sound Blaster para operar na congurao:
IO=0x220
IRQ=5
DMA=1
DMA16=5
MIDI=0x330
OPL=0x388
IDE operando como placa controladora quartenria na porta
0x168/0x36e - Ns queremos ligar um HD na placa de som, SIM o GNU/Linux
permite isso, e ele ser congurado como /dev/hdg1
JOYSTICK na porta 0x220 - bom para jogos e controle do xmms
Observe que as linhas iniciando com # so apenas comentrios e no sero interpretadas pelo
isapnp:
# $Id: pnpdump.c,v 1.21 1999/12/09 22:28:33 fox Exp $
# Release isapnptools-1.21 (library isapnptools-1.21)
#
# Para detalhes do formato do arquivo de sada, veja a pgina de
# manual do isapnp.conf
#
# A seo abaixo faz o isolamento da placa atravs da BIOS (normalmente no
# precisa ser alterado). Com a configurao abaixo, os dados sobre
# dispositivos sero obtidos diretamente da BIOS.
# Em placas me que no suportam Plug-and-Play, necessrio apenas o
# parmetro (ISOLATE) para que o isapnp possa assumir totalmente o controle
# para identificao dos dispositivos Plug-and-Play
(READPORT 0x0273)
(ISOLATE PRESERVE)
(IDENTIFY *)
(VERBOSITY 2)
(CONFLICT (IO FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # ou WARNING
# Card 1: (serial identifier fc 10 01 fb 5d 28 00 8c 0e)
Captulo 3. Hardware 22
# Vendor Id CTL0028, Serial Number 268565341, checksum 0xFC.
# Version 1.0, Vendor version 1.0
# ANSI string -->Creative SB16 PnP<--
#
# Descomente os valores desejados abaixo, selecionando a configurao requerida.
# Note que o valor padro equivale ao primeiro parmetro disponvel (Minimum)
# "(CONFIGURE" inicia um bloco de configurao e finaliza com "(ACT Y)"
# Para ativar as configuraes selecionadas, basta descomentar a linha
# "#(ACT Y)" no final do bloco de configurao.
(CONFIGURE CTL0028/268565341 (LD 0
# ANSI string -->Audio<--
# Pela string acima, esta a configurao de Audio da Sound Blaster
# Hora de mltiplas escolhas, escolha apenas uma!
# Inicia funes dependentes, classificada por prioridade aceitvel
#
# IRQ 5, 7 ou 10.
(INT 0 (IRQ 5 (MODE +E)))
# Foi especificada a IRQ 5 na configurao acima
# Primeiro canal DMA 0, 1 ou 3.
# Somente DMA de 8 bits
# Dispositivo lgico no um bus master
# DMA may execute in count by byte mode
# DMA may not execute in count by word mode
# DMA channel speed in compatible mode
(DMA 0 (CHANNEL 1))
# O valor da DMA 8 bits padro 0 (o mais baixo), mas este no o valor
# que desejamos. Ajustamos o valor para 1.
# Next DMA channel 5, 6 or 7.
# 16 bit DMA only
# Logical device is a bus master
# DMA may not execute in count by byte mode
# DMA may execute in count by word mode
# DMA channel speed in compatible mode
(DMA 1 (CHANNEL 5))
# O canal DMA 16 bits desejado para a Sound Blaster o 5. Apenas
# descomentamos a linha acima.
# Logical device decodes 16 bit IO address lines
# Minimum IO base address 0x0220
# Maximum IO base address 0x0280
# IO base alignment 32 bytes
# Number of IO addresses required: 16
Captulo 3. Hardware 23
(IO 0 (SIZE 16) (BASE 0x0220))
# Apenas descomentamos a linha.
# Logical device decodes 16 bit IO address lines
# Minimum IO base address 0x0300
# Maximum IO base address 0x0330
# IO base alignment 48 bytes
# Number of IO addresses required: 2
(IO 1 (SIZE 2) (BASE 0x0330))
# O valor padro 0x0300 para a porta MIDI, mas ns desejamos usar o
# valor 0x0330. Descomentamos a linha e alteramos o valor da I/O.
# Logical device decodes 16 bit IO address lines
# Minimum IO base address 0x0388
# Maximum IO base address 0x0388
# IO base alignment 1 bytes
# Number of IO addresses required: 4
(IO 2 (SIZE 4) (BASE 0x0388))
# Apenas descomentamos a linha. 0x0388 um valor padro para OPL
# Fim de funes dependentes
(NAME "CTL0028/268565341[0]{Audio }")
(ACT Y) #Descomentamos para ativar este bloco de configurao acima
))
########################################
# Logical device id CTL2011
#
# Descomente os valores desejados abaixo, selecionando a configurao requerida.
# Note que o valor padro equivale ao primeiro parmetro disponvel (Minimum)
# "(CONFIGURE" inicia um bloco de configurao e finaliza com "(ACT Y)"
# Para ativar as configuraes selecionadas, basta descomentar a linha
# "#(ACT Y)" no final do bloco de configurao.
(CONFIGURE CTL0028/268565341 (LD 1
# Compatible device id PNP0600
# ANSI string -->IDE<--
# Pela string acima sabemos que esta a configurao da IDE embutida na SB
# Hora de mltiplas escolhas, escolha apenas uma!
# Inicia funes dependentes: Prioridade Preferida
# IRQ 10.
(INT 0 (IRQ 10 (MODE +E)))
# Descomentamos e aceitamos o valor acima, pois no entra em conflito com
Captulo 3. Hardware 24
# nenhum outro dispositivo do sistema.
# Logical device decodes 16 bit IO address lines
# Minimum IO base address 0x0168
# Maximum IO base address 0x0168
(IO 0 (SIZE 8) (BASE 0x0168))
# Descomentamos e aceitamos o valor acima, pois no entra em conflito com
# nenhum outro dispositivo do sistema.
# Logical device decodes 16 bit IO address lines
# Minimum IO base address 0x036e
# Maximum IO base address 0x036e
# IO base alignment 1 bytes
# Number of IO addresses required: 2
(IO 1 (SIZE 2) (BASE 0x036e))
# Descomentamos e aceitamos o valor acima, pois no entra em conflito com
# nenhum outro dispositivo do sistema.
# End dependent functions
(NAME "CTL0028/268565341[1]{IDE }")
(ACT Y) # Descomentando esta linha, a placa IDE da Sound Blaster passar a
# funcionar como IDE quartenria (de acordo com os recursos passados)
))
#######################################
# Logical device id CTL7001
#
# Descomente os valores desejados abaixo, selecionando a configurao requerida.
# Note que o valor padro equivale ao primeiro parmetro disponvel (Minimum)
# "(CONFIGURE" inicia um bloco de configurao e finaliza com "(ACT Y)"
# Para ativar as configuraes selecionadas, basta descomentar a linha
# "#(ACT Y)" no final do bloco de configurao.
(CONFIGURE CTL0028/268565341 (LD 3
# Compatible device id PNPb02f
# ANSI string -->Game<--
# Pela string acima sabemos que a Entrada para Joystick
# Logical device decodes 16 bit IO address lines
# Minimum IO base address 0x0200
# Maximum IO base address 0x0200
# IO base alignment 1 bytes
# Number of IO addresses required: 8
(IO 0 (SIZE 8) (BASE 0x0200))
(NAME "CTL0028/268565341[3]{Jogo }")
Captulo 3. Hardware 25
(ACT Y) # Sem muitos comentrios... descomentamos a linha IO acima e
# ativamos a configurao (descomentando (ACT Y)). A diferena
# que especificamos o nome GAME para o recurso atravs da
# linha (NAME "CTL0028/268565341[3]{Jogo }")
# Este nome ser mostrado quando o Joystick for ativado
))
# Returns all cards to the Wait for Key state
(WAITFORKEY)
Note ainda que o isapnp.conf gerado atravs do pnpdump contm vrios tipos de priorida-
des de congurao para o mesmo bloco de congurao e a prioridade que usamos acima foi
priority acceptable para o bloco de audio da Sound Blaster e priority preferred
para a porta IDE e Joystick. Os tipos de prioridades disponveis so:
priority preferred - Congurao preferida para o funcionamento do hardware.
a recomendada pelo fabricante do hardware e tambm recomendvel se voc no
tem muita experincia na congurao de hardwares, pois lista somente uma congu-
rao por recurso. Se a placa entrar em conito com outras placas usando priority
preferred, tente a priority acceptable.
priority acceptable - Lista todas as conguraes aceitas pelo seu hardware. Ela
minha opo preferida, pois permite analisar dinamicamente todas as conguraes per-
mitidas pelo hardware e escolher qual a mais adequada para funcionar sem problemas
no sistema.
priority functional - Pode conter 1 ou mais blocos de prioriade funcional
por hardware. Note que alguns recursos do hardware podem no estar disponvel neste
tipo de prioridade. til para uso em casos de conito, quando o hardware pode ser
colocado em funcionamento de forma alternativa ou parcial.
Aps a gravao do arquivo /etc/isapnp.conf, basta voc digitar isapnp
/etc/isapnp.conf para ativar a congurao dos dispositivos listados com as con-
guraes que voc escolheu. Se o isapnp lhe mostrar mensagens de conito ou qualquer
outro problema, verique as conguraes do hardware e modique, se necessrio. Depois
execute novamente o /etc/isapnp.conf. Para detalhes sobre outros parmetros no
explicados aqui, veja a pgina de manual do isapnp.conf.
A maioria das distribuies GNU/Linux congura os dispositivos Plug-and-Play existentes
neste arquivo automaticamente na inicializao (como o caso da Debian e a Red Hat). Se
este no for o seu caso, coloque a linha isapnp /etc/isapnp.conf em um dos scripts de
inicializao de sua distribuio.
Captulo 3. Hardware 26
3.5 Listando as placas e outros hardwares em um computador
Administradores e tcnicos ao congurar uma mquina precisaro saber quais os hardwares
ela possui, perifricos e at mesmo a reviso de dispositivos e clock para congurar as coisas e
ver a necessidade de atualizaes de dispositivos atuais.
Dispositivos PCI/AMR/CNR podem ser listados executando o comando cat /proc/pci.
Outra forma de listar tais dispositivos usando o lspci, se voc precisa de mais detalhes
como o mapeamento de memria, use lspci -vv.
O mapeamento de memria de dispositivos podem ser mostrados com o comando cat
/proc/ioports, ou usando o comando lsdev.
O barramento USB e dispositivos conectados a ele podem ser listados com o comando lsusb
ou com cat /proc/bus/usb/devices.
Hardwares disponveis na mquina, como placa me, clock multiplicador, discos, placas di-
versas, verses e nmeros seriais de dispositivos podem ser mostrados atravs do comando
lshw. Use lshw -html para produzir a listagem em formato HTML, bem interessante para
relatrios :-)
3.6 Conitos de hardware
Ocorre quando um ou mais dispositivos usam a mesma IRQ, I/O ou DMA. Um sistema com
conguraes de hardware em conito tem seu funcionamento instvel, travamentos constan-
tes, mal funcionamento de um ou mais dispositivos e at mesmo, em casos mais graves, a
perda de dados.
Sempre que possvel conhea e utilize os valores padres para a congurao de perifricos,
isto pode te livrar de conitos com outros dispositivos e mal funcionamento do sistema. Al-
guns programas de diagnstico ou de auto-deteco podem no localizar seu dispositivo caso
ele esteja usando um valor muito diferente do padro.
Para resolver conitos de hardware ser necessrio conhecer a congurao de cada dispo-
sitivo em seu sistema. Os comandos cat /proc/interrupts, cat /proc/dma e cat
/proc/ioports podem ser teis para se vericar as conguraes usadas.
Lembre-se que o barramento PCI permite o compartilhamento de IRQs entre placas PCI.
3.7 Barramento
O tipo de slot varia de acordo com o barramento usado no sistema, que pode ser um(s) do(s)
seguinte(s):
ISA 8 Bits Industry Standard Architecture - o padro mais antigo, encontrado em
computadores PC/XT.
Captulo 3. Hardware 27
ISA 16 Bits Evoluo do padro ISA 8 Bits, possui um conector maior e permite a conexo de
placas de 8 bits. Sua taxa de transferncia chega a 2MB/s.
VESA Video Electronics Standard Association - uma interface feita inicialmente
para placas de vdeo rpidas. O barramento VESA basicamente um ISA com um en-
caixe extra no nal. Sua taxa de transferncia pode chegar a 132MB/s.
EISA Enhanced Industry Standard Architecture - um barramento mais encon-
trado em servidores. Tem a capacidade de bus mastering, que possibilita a comunicao
das placas sem a interferncia da CPU.
MCA Micro Channel Architecture - Barramento 32 bits proprietrio da IBM. Voc no
pode usar placas ISA nele, possui a caracterstica de bus mastering, mas pode procurar
por dispositivos conectados a ele, procurando congurao automtica. Este barramento
estava presente no PS/1 e PS/2, hoje no mais usado.
PCI Peripheral Component Interconnect - outro barramento rpido produzido pela
Intel com a mesma velocidade que o VESA. O barramento possui um chipset de controle
que faz a comunicao entre os slots PCI e o processador. O barramento se congura
automaticamente (atravs do Plug-and-Play). O PCI o barramento mais usado por
Pentiums e est se tornando uma padro no PC.
AGP Accelerated Graphics Port - um novo barramento criado exclusivamente para
a ligao de placas de video. um slot marrom (em sua maioria) que ca mais separado
do ponto de xao das placas no chassis (comparado ao PCI). Estas placas permitem
obter um desempenho elevado de vdeo se comparado as placas onboards com memria
compartilhada e mesmo PCI externas. O consumo de potncia em placas AGP x4 podem
chegar at a 100W, portanto importante dimensionar bem o sistema e ter certeza que a
fonte de alimentao pode trabalhar com folga.
PCMCIA Personal Computer Memory Card International Association - um
slot especial usado para conexes de placas externas (normalmente revestivas de pls-
tico) e chamadas de cartes PCMCIA. Estes cartes podem adicionar mais memria ao
sistema, conter um fax-modem, placa de rede, disco rgido, etc. Os cartes PCMCIA so
divididos em 3 tipos:
Tipo 1 Tem a espessura de 3.3 milmetros, e podem conter mais memria RAM ou
memria Flash.
Tipo 2 Tem a espessura de 5 milmetros e capacidade de operaes I/O. um tipo
usado para placas de fax-modem, rede, som. Computadores que aceitam cartes
PCMCIA do tipo 2, mantm a compatibilidade com o tipo 1.
Tipo 3 Tem a espessura de 10.5 milmetros e normalmente usado para discos rgidos
PCMCIA. Slots PCMCIA do tipo 3 mantm a compatibilidade com o tipo 2 e 1.
AMR Audio Modem Raise - Pequeno barramento criado pela Intel para a conexo de placas
de some modem. Placas de some modemAMR usamo HSP (host signal processor) e so
como as Placas on-board e todo o processamento feito pela CPU do computador (veja
detalhes em Placas on-board / off-board on the next page e Hardwares especcos ou
For Windows on page 29. Sua vantagem o preo: um modem ou placa de som AMR
custa em torno de R$ 25,00.
CNR Communication and Networking Rise - Pequeno barramento criado pela Intel
para a conexo de placas de som, modens e placas de rede. Este um pequenino slot
marrom que localizado no ponto de xao das placas no chassis do gabinete. Elas so
como as Placas on-board e todo o processamento feito pela CPU do computador (veja
Captulo 3. Hardware 28
detalhes em Placas on-board / off-board on the current page e Hardwares especcos
ou For Windows on the facing page.
3.8 Placas on-board / off-board
Placas on-board so embutidas na placa me (motherboard). Placas off-board so placas externas
encaixadas nos slots de expanso da placa me.
No inicio da era do PC/XT todos as placas eram embutidas na placa me (na poca eram
somente a placa de vdeo e controladora). Com o surgimento do padro AT, diversas empresas
de informtica desenvolveram dispositivos concorrentes e assim o usurio tinha a liberdade
de escolha de qual dispositivo colocar em sua placa me (ou o mais barato ou o de melhor
qualidade e desempenho), isto permitiu a adio de perifricos de qualidade sem romper com
seu oramento pessoal (comprando uma placa de som, depois uma de fax-modem, placa de
vdeo melhor, etc).
Atualmente parece que voltamos ao ponto de partida e tudo vem embutido na placa me
(on-board) e o usurio no tem como escolher qual dispositivo usar em seu computador.
muito difcil (praticamente impossvel) encontrar uma placa me que satisfaa completamente
as necessidades do usurio ou recomendaes de um bom tcnico de informtica (a no ser
que seja um tcnico experiente e encontre alguma alternativa).
Certamente o nico dispositivo que funciona melhor se embutido na placa me a placa con-
troladora de perifricos. Esta placa usada para se conectar unidades de disquete, discos rgidos,
CD-ROM, portas seriais, paralelas, joystick ao computador. Os HDs conectados em uma con-
troladora embutida conseguem ter um desempenho muito maior do que em placas conectadas
externamente, semcausar nenhumtipo de problema. Felizmente os ltimos modelos de placas
me 486 e os Pentium j trazem a placa controladora de perifricos embutida.
Hardwares embutidos na placa me (como fax-modem, vdeo, som) so em mdia 30% mais
baratos que os vendidos separadamente mas quase sempre so usados dispositivos de baixo
desempenho e qualidade para reduzir o preo da placa me e quase sempre usados hardwares
For Windows.
Hoje em dia por causa do preo da placa me, comum encontrar pessoas que vericam so-
mente o preo e sequer procuram saber ou conhecem a qualidade das placas embutidas na
placa me. Pior ainda encontrar vendedores despreparados que sequer sabem explicar o
porque que uma placa de som Sound Blaster 64 mais cara que uma de modelo genrico. . .
Certa vez z um teste de desempenho em um jogo chamado Network Rally do DOS com minha
mquina Pentium 120 MHz (s com a placa controladora embutida), 16 MB RAM, placa de som
Sound Blaster 16, placa de vdeo Trident 9680 com 1MB versus um computador Pentium 200
MMX, 32 MB RAM, placa de vdeo embutida (usando 2 MB de memria compartilhada), fax
modem Rockwell embutido, e som CMI 8330 tambm embutido.
O resultado foi que o jogo rodava perfeito em meu pentium 120MHZ e no outro computador
com o som pipocando e imagem apresentando paradas. O problema que em dispositivos
Captulo 3. Hardware 29
de baixa qualidade e baratos, sua carga de processamento jogada para o processador, resul-
tando em menos potncia para executar os programas (veja Hardwares especcos ou For
Windows on the current page para maiores detalhes sobre o problema). A memria de v-
deo compartilhada quer dizer que parte da memria RAM usada para memria de vdeo ao
invs de uma memria DRAM especca e desenvolvida exclusivamente para acelerao de
vdeo. Isto traz mais lentido pois a memria de vdeo (RAM) tambm ser acessada pelo bar-
ramento do computador, envolvendo mais carga para o processador, etc. Atcnica de memria
compartilhada exclusiva de placas de vdeo embutidas.
Outro perifrico que traz problemas e muita carga para o processador o fax-modem for Win-
dows, HSP, AMR, micromodem, etc. A maioria destes perifricos se recusam a funcionar em
computadores inferiores ao Pentium 150, no trazem seu chip de processamento e o pior: o
chip UART. Isto faz com que o perifrico, mesmo marcando conexo a 57.600 ou mais tenha
um desempenho de at duas vezes menor que um fax-modem inteligente com chip de proces-
samento prprio e UART (semcontar comos controles internos do modem, como os protocolos
de correo de erros, e sua extensa interface de programao via comandos). Aeconomia, neste
caso, ser paga em sua conta telefnica.
Outra vantagem de fax-modens inteligentes que os modelos atuais vem com FlashBios o que
signica que podem ser reprogramados facilmente para passar de 33.600 para 57.600 sem tro-
car a placa, ou aceitarem novas tendncias de tecnologia. Para detalhes veja Hardwares espe-
ccos ou For Windows on this page.
Se voc estiver em uma situao destas, certamente os computadores de menor potncia e com
hardwares inteligentes (que possuem seus prprios chips de controle e processamento) tero
um desempenho muito melhor. Mas tambm existem placas embutidas que tem a mesma
qualidade de placas separadas (como alguns modelos de placas me que trazema Sound Blaster
embutida). O preo pode ser maior mas voc estar pagando por um dispositivo de melhor
qualidade e que certamente trar benefcios a voc e ao seu sistema.
Consulte um tcnico em informtica experiente para te indicar uma placa me de bom preo
e de qualidade. muito comum encontrar falta de prossionalismo em pessoas que no sa-
bem distinguir as caractersticas, funes e vantagens entre uma placa de boa qualidade e um
hardware for Windows a no ser o preo mais barato.
3.9 Hardwares especcos ou For Windows
Esta seo foi retirada do manual de instalao da Debian GNU/Linux. Uma tendncia que
perturba a proliferao de Modens e impressoras especcos para Windows. Em muitos
casos estes so especialmente fabricados para operar com o Sistema Operacional Microsoft
Windows e costumam ter a legenda WinModem, for Windows, ou Feito especialmente
para computadores baseados no Windows.
Geralmente estes dispositivos so feitos retirando os processadores embutidos daquele hard-
ware e o trabalho deles so feitos por drivers do Windows que so executados pelo processador
principal do computador. Esta estratgia torna o hardware menos caro, mas o que poupado
Captulo 3. Hardware 30
no passado para o usurio e este hardware pode at mesmo ser mais caro quanto dispositi-
vos equivalentes que possuem inteligncia embutida.
Voc deve evitar o hardware baseado no Windows por duas razes:
1 O primeiro que aqueles fabricantes no tornam os recursos disponveis para criar um
driver para Linux. Geralmente, o hardware e a interface de software para o dispositivo
proprietria, e a documentao no disponvel sem o acordo de no revelao, se ele
estiver disponvel. Isto impede seu uso como software livre, desde que os escritores de
software grtis descubram o cdigo fonte destes programas.
2 A segunda razo que quando estes dispositivos tem os processadores embutidos re-
movidos, o sistema operacional deve fazer o trabalho dos processadores embutidos,
freqentemente em prioridade de tempo real, e assim a CPU no esta disponvel para
executar programas enquanto ela esta controlando estes dispositivos. Umexemplo tpico
disso so os Modens for Windows; Alm da carga jogada na CPU, o dispositivo no pos-
sui o chip UART 16550, que essencial para uma boa taxa de transferncia do modem.
O que alguns destes dispositivos fazem a emulao deste chip exigindo no mnimo
uma CPU Pentium de 166 MHZ para operar adequadamente nesta taxa de transmisso.
Mesmo assim, devido a falta do chip UART, um modem destes inicia uma transmisso
de um arquivo a 57.600, a tendncia sua taxa de transferncia ir caindo na medida que
um arquivo transferido (at se estabilizar em 21/25 Kbps).
Assim o usurio tpico do Windows no obtm um multi-processamento to intensivo
como um usurio do Linux, o fabricante espera que aquele usurio do Windows sim-
plesmente no note a carga de trabalho que este hardware pe naquela CPU. No entanto,
qualquer sistema operacional de multi-processamento, at mesmo Windows 95 / 98 ou
NT, so prejudicados quando fabricantes de perifricos retiram o processador embutido
de suas placas e colocam o processamento do hardware na CPU.
Voc pode ajudar a reverter esta situao encorajando estes fabricantes a lanarem a documen-
tao e outros recursos necessrios para ns desenvolvermos drivers para estes hardwares,
mas a melhor estratgia simplesmente evitar estes tipos de hardwares at que ele esteja lis-
tado no HOWTO de hardwares compatveis com Linux.
Note que hoje j existem muitos drivers para WinModems e outros hardwares for Windows
para o Linux. Veja a lista de hardwares compatveis no HARDWARE-HOWTO ou procure o
driver no site do fabricante de seu dispositivo. Mesmo assim a dica evitar hardwares for
Windows e comprar hardwares inteligentes onde cada um faz sua funo sem carregar a CPU.
3.10 Dispositivos especcos para GNU/Linux
Esta seo foi retirada do manual de instalao da Debian GNU/Linux. Existem diversos ven-
dedores, agora, que vendem sistemas com a Debian ou outra distribuio do GNU/Linux
pr-instaladas. Voc pode pagar mais para ter este privilgio, mas compra um nvel de
paz de mente, desde ento voc pode ter certeza que seu hardware bem compatvel com
Captulo 3. Hardware 31
GNU/Linux. Praticamente todas as placas que possuem processadores prprios funcionam
sem nenhum problema no Linux (algumas placas da Turtle Beach e mwave tem suporte de
som limitado).
Se voc tiver que comprar uma mquina com Windows instalado, leia cuidadosamente a li-
cena que acompanha o Windows; voc pode rejeitar a licena e obter um desconto de seu
vendedor.
Se no estiver comprando umcomputador comGNU/Linux instalado, ou at mesmo umcom-
putador usado, importante vericar se os hardwares existentes so suportados pelo kernel
do GNU/Linux. Verique se seu hardware listado no Hardware Compatibility HOWTO, na
documentao do cdigo fonte do kernel no diretrio Documentation/sound ou consulte
um tcnico de GNU/Linux experiente.
Deixe seu vendedor (se conhecer) saber que o que est comprando para um sistema
GNU/Linux. Desta forma isto servir de experincia para que ele poder recomendar o mesmo
dispositivo a outras pessoas que procurambons dispositivos para sistemas GNU/Linux. Apie
vendedores de hardwares amigos do GNU/Linux.
3.11 Conguraes de Dispositivos
As sees abaixo explicam como fazer conguraes em dispositivos diversos no sistema
Linux como placas de rede, som, gravador de CD entre outras.
3.11.1 Congurando uma placa de rede
Para congurar sua placa de rede no Linux siga os passos a seguir:
1 Identique se sua placa de rede ISA ou PCI. Caso seja ISA, pode ser preciso alterar a
congurao de jumpers ou plug-and-play, evitando conitos de hardware ou o no fun-
cionamento da placa (veja como congura-la em Hardwares congurveis por jumpers,
dip-switches, jumperless e Plug-and-Play. on page 19.
2 Identique a marca/modelo de sua placa. O programa lshw til para isto. Caso sua
placa seja PCI ou CNR, execute o comando lspci e veja a linha Ethernet. Em ltimo
caso, abra a mquina e procure a marca na prpria placa. Quase todos os fabricantes
colocam a marca da placa no prprio circuito impresso ou no CI principal da placa (nor-
malmente o maior).
3 Depois de identicar a placa, ser preciso carregar o mdulo correspondente para ser
usada no Linux. Em algumas instalaes padres o suporte j pode estar embutido
no kernel, neste caso, voc poder pular este passo. Para carregar um mdulo, digite
o comando modprobe modulo . Em placas ISA, geralmente preciso passar a IRQ
e porta de I/O como argumentos para alocar os recursos corretamente. O modprobe
tentar auto-detectar a congurao em placas ISA, mas ela poder falhar por algum
motivo. Por exemplo, para uma NE 2000: modprobe ne io=0x300 irq=10. Para
evitar a digitao destes parmetros toda vez que a mquina for iniciada recomendvel
coloca-lo no arquivo /etc/modules.conf da seguinte forma:
Captulo 3. Hardware 32
options ne io=0x300 irq=10
A partir de agora, voc pode carregar o mdulo de sua placa NE 2000 apenas com o
comando modprobe ne. O parmetro io=0x300 irq=10 ser automaticamente adici-
onado. Em sistemas Debian, o local correto para colocar as opes de um mdulo em
arquivos separados localizados dentro de /etc/modutils. Crie um arquivo chamado
/etc/modutils/ne e coloque a linha:
options ne io=0x300 irq=10
Depois disso, execute o comando update-modules para o sistema gerar um novo ar-
quivo /etc/modules.conf com todos os mdulos de /etc/modutils e substituir o
anterior.
4 Aps carregar o mdulo de sua placa de rede, resta apenas congurar seus parmetros
de rede para coloca-la em rede. Veja Atribuindo um endereo de rede a uma interface
(ifcong) on page 52.
3.11.2 Congurando uma placa de SOM no Linux
A congurao de dispositivos de audio no Linux no uma coisa complicada, se resumindo
na congurao de recursos de IRQ (caso a placa seja ISA), carregar o seu respectivo mdulo
com seus parmetros e ajustar o mixer. Atualmente existem 2 padres de som no sistema
Linux: OSS (Open Sound System) e ALSA (Advanced Linux Sound Architecture).
O OSS o primeiro padro existente no sistema Linux e embutido por padro no kernel. O
ALSA mais novo, suporta full duplex e outros recursos adicionais, alm de manter a compa-
tibilidade com OSS. O ALSA um padro mais moderno e garante mais performance para a
CPU da mquina, principalmente para a exibio de vdeos, etc.
Reservando os recursos de hardware para sua placa de som
Caso esteja usando uma placa ISAjumpeada, jumperless ou Plug-and-Play, preciso selecionar
que recursos de hardware sua placa est usando e como estes sero congurados.
O padro a utilizao da IRQ 5, DMA1, DMA16, I/O 0x220, 0x330, 0x388 para PCM e MIDI.
A congurao de uma placa Plug-and-Play descrita em Plug-and-Play on page 20 e de
uma placa jumpeada em Jumpers on page 19. Como referncia, veja a tabela padro de uso
de interrupes em IRQ - Requisio de Interrupo on page 15.
Congurando uma placa de som usando o padro OSS
O padro OSS o presente por padro desde que o suporte a som foi includo no kernel. Para
congurar uma placa de som para usar este sistema de som, primeiro compile seu kernel com
o suporte ao mdulo de sua placa de som. Caso seja uma placa ISA, voc provavelmente ter
que habilitar a seo Open Sound System para ver as opes disponveis (entre elas, a Sound
Blaster e compatveis). Uma olhada na ajuda de cada mdulo deve ajuda-lo a identicar quais
placas cada opo do kernel suporta.
Captulo 3. Hardware 33
Caso seu kernel seja o padro de uma distribuio Linux, provavelmente ter o suporte a
todas as placas de som possveis. Siga o passo a passo abaixo para congurar sua placa de som
no sistema:
1 Primeiro descubra se sua placa de som ISA. Caso seja, verique se os seus recursos
esto alocados corretamente (veja Conitos de hardware on page 26). Caso seja PCI,
AMR, execute o comando lspci, procure pela linha Multimedia e veja o nome da
placa. Voc tambm poder executar o comando lshw para descobrir qual placa voc
possui (veja Listando as placas e outros hardwares em um computador on page 26)
para detalhes.
2 Carregue o mdulo da placa de som com o comando modprobe mdulo . Na Debian,
voc pode executar o comando modconf para navegar visualmente entre os mdulos
disponveis e carregar os mdulos necessrios. Algumas placas (principalmente ISA)
requerem que seja especicado o recurso de hardware sejam passados para seu mdulo,
ou simplesmente voc quer especicar isto para manter o uso de hardware sobre seu
controle. Alguns dos parmetros mais usados em placas Sound Blaster so os seguintes:
modprobe sb io=0x220 irq=5 dma=1 dma16=5 mpu_io=0x330
Para evitar ter que passar estes parmetros todas as vezes para o mdulo, voc poder
coloca-los no arquivo /etc/modules.conf da seguinte forma:
options sb io=0x220 irq=5 dma=1 dma16=5 mpu_io=0x330
Assim, quando der o comando modprobe sb ele ser carregado com as opes acima.
Na distribuio Debian, voc dever criar um arquivo chamado /etc/modutils/sb
contendo a linha acima, depois execute o update-modules para juntar todos os ar-
quivos do /etc/modutils e criar o /etc/modules.conf.
3 Aps carregar o mdulo correto de sua placa de som, seu sistema de som dever estar
funcionando. Se voc utiliza uma distribuio Linux, os dispositivos de somcomo /dev
/audio, /dev/dsp, /dev/mixer estaro criados e ento poder passar para o prximo
passo. Caso no existam, entre no diretrio /dev e execute o comando MAKEDEV audio.
4 O prximo passo consiste em instalar um programa para controle de volume, tonali-
dade e outros recursos de sua placa de som. O recomendado o aumix por ser simples,
pequeno e funcional, e permitindo restaurar os valores dos nveis de volumes na inicia-
lizao (isso evita que tenha que ajustar o volume toda vez que iniciar o sistema). Caso o
aumix aparea na tela, sua placa de somj est funcionando! Caso acesse o sistema como
usurio, no se esquea de adicionar seu usurio ao grupo audio para ter permisso de
usar os dispositivos de som: adduser usuario audio .
3.11.3 Congurando um gravador de CD no Linux
Congurar umgravador de CDno Linux no temmistrios, apenas preciso que sejamsegui-
dos passos para que a coisa funcione direito, pois sempre funciona. Se algo no funcionou, ou
porque os passos no foram seguidos corretamente, algum problema no hardware, alguma
falha no kernel especca que afeta seu gravador, ou o autor deste guia deu mancada em algo
(por favor, relate a falha) :-)
O tipo mais complicado de gravador, se tratando de congurao, o IDE, pois seu funci-
onamento baseado na emulao SCSI. Para usar esta interface, ele precisa ser identicado
Captulo 3. Hardware 34
como um dispositivo SCSI usando emulao SCSI do kernel, isto necessrio porque o m-
dulo padro ATAPI do kernel para unidades de CD (ide-cd) no contm todos os comandos
necessrios para permitir que uma unidade funcione como gravadora de CD. No Windows a
coisa tambm funciona desta forma, a unidade emulada como SCSI para fazer a gravao,
se voc no sabia disso, tenho certeza que esta gostando da forma como as coisas cam claras
quando se usa Linux :-)
Caso seu gravador seja IDE, veja Congurando o suporte a um gravador IDE on this page
caso seja um autntico gravador com barramento SCSI, v at Congurando o suporte a um
gravador SCSI on the next page.
Congurando o suporte a um gravador IDE
Para congurar seu gravador de CD IDE para ser usado no Linux, siga os seguintes passos:
1 Tenha certeza que compilou o suporte as seguintes caractersticas no kernel:
Em "ATA/IDE/MFM/RLL support" marque as opes:
* Include IDE/ATAPI CDROM support
* SCSI emulation support
Depois em "SCSI support" marque as opes:
* SCSI support
M SCSI CD-ROM Support
M SCSI Generic Support
As opes marcadas como * sero embutidas no kernel e as M como mdulos. Note
que ambas as opes IDE/ATAPI CDROM e SCSI Emulation foram marcadas como
embutidas. Isto faz com que o driver ATAPI tenha prioridade em cima do SCSI, mas vou
explicar mais adiante como dizer para o kernel para carregar o suporte a SCSI para de-
terminada unidade. Isto til quando temos mais de 1 unidade de CD IDE no sistema e
queremos congurar somente o gravador para SCSI, pois alguns aplicativos antigos no
se comunicam direito tanto com gravadores SCSI como emulados. Voc tambm pode
marcar somente a opo SCSI Emulation para que sua(s) unidade(s) seja(m) automati-
camente emulada(s) como SCSI. Caso tenha usado esta tcnica, v at a seo Testando
o funcionamento on the facing page.
2 O prximo passo identicar o dispositivo de CD-Rom atual. Isto feito atravs do
comando dmesg. Supondo que sua unidade de CD hdc (primeiro disco na segunda
controladora IDE) e que compilou ambos o suporte a IDE ATAPI e SCSI emulation
no kernel, adicione o argumento hdc=ide-scsi no /etc/lilo.conf ou no grub:
# Lilo
vmlinuz=/vmlinuz
append="hdc=ide-scsi"
Isto diz para o kernel que a unidade hdc usar emulao ide-scsi. Caso tenha outras
unidades de CD no sistema, estas ainda utilizao ATAPI como protocolo de comunicao
padro. Execute o lilo para gerar novamente o setor de inicializao com as modicaes e
reinicie o computador.
Captulo 3. Hardware 35
OBS: Cuidado ao colocar um disco rgido IDE como hdc! A linha hdc=ide-scsi dever ser
retirada, caso contrrio, seu disco rgido no ser detectado.
Agora, siga at Testando o funcionamento on the current page.
Congurando o suporte a um gravador SCSI
Caso tenha um autentico gravador SCSI, no ser preciso fazer qualquer congurao de emu-
lao, a unidade estar pronta para ser usada, desde que seu suporte esteja no kernel. As
seguintes opes do kernel so necessrias para funcionamento de gravadores SCSI:
Depois em "SCSI support" marque as opes:
* SCSI support
M SCSI CD-ROM Support
M SCSI Generic Support
Alm disso, deve ser adicionado o suporte EMBUTIDO no kernel a sua controladora SCSI. Se
o seu disco rgido tambm SCSI, e seu CD est ligado na mesma controladora SCSI, ela j est
funcionando e voc poder seguir para o passo Testando o funcionamento on this page. Caso
contrrio carregue o suporte da sua placa adaptadora SCSI antes de seguir para este passo.
Testando o funcionamento
Para testar se o seu gravador, instale o pacote cdrecord e execute o comando: cdrecord
-scanbus para vericar se sua unidade de CD-ROM detectada.
Voc dever ver uma linha como:
scsibus0:
0,0,0 0) CREATIVE CD-RW RWXXXX 1.00 Removable CD-ROM
0,1,0 1) *
0,2,0 2) *
Oque signica que sua unidade foi reconhecida perfeitamente pelo sistema e j pode ser usada
para gravao.
3.11.4 Congurando o gerenciamento de energia usando o APM
OAPM(Advanced Power Management - Gerenciamento Avanado de Energia) permite que sistemas
gerenciem caractersticas relacionadas com o uso e consumo de energia do computador. Ele
opera a nvel de BIOS e tenta reduzir o consumo de energia de vrias formas quando o sistema
no estiver em uso (como reduzindo o clock da CPU, desligar o HD, desligar o monitor, etc.).
Captulo 3. Hardware 36
O uso de advanced power management tambm permite que computadores com fonte de
alimentao ATX sejam desligados automaticamente quando voc executa o comando halt.
Caso sua mquina tenha suporte a ACPI, este dever ser usado como preferncia ao invs
do APM por ter recursos mais sosticados (veja Congurando o gerenciamento de energia
usando ACPI on the current page).
Para ativar o suporte a APM no Linux, compile seu kernel com o suporte embutido a APM
e tambm a Advanced Power Management (seno sua mquina no desligar sozinha no
halt). Caso deseje compilar como mdulo, basta depois carregar o mdulo apm adicionando no
arquivo /etc/modules. Depois disso instale o daemon apmd para gerenciar as caractersticas
deste recurso no sistema.
Voc pode desativar o uso de APM de 3 formas: removendo seu suporte do kernel, passando
o argumento apm=off (quando compilado estaticamente no kernel) ou removendo o nome do
mdulo do arquivo /etc/modules (quando compilado como mdulo). Depois disso remova
o daemon apmd.
3.11.5 Congurando o gerenciamento de energia usando ACPI
O ACPI (Advanced Conguration and Power Interface - Interface de Congurao e Gerenciamento
de Energia Avanado) uma camada de gerenciamento de energia que opera a nvel de sistema
operacional. Apresenta os mesmos recursos que o APM, e outros como o desligamento da
mquina por teclas especiais de teclado, controle de brilho e contraste de notebooks, suspend
para RAM, suspend para disco, reduo de velocidade de CPU manualmente, monitoramento
de perifricos, temperatura, hardwares, etc.
Desta forma, o ACPI varia de sistema para sistema em questes relacionadas com suporte a
recursos especiais, estes dados so armazenados em tabelas chamadas DSDT. O Linux inclui
suporte a recursos ACPI genricos entre placas me, recursos especcos devem ser extrados
diretamente da BIOS e disassemblados manualmente para a construo de um kernel com
suporte especco a tabela DSDT do hardware (no falarei das formas de se fazer disso aqui,
somente do suporte genrico).
recomendvel pelo menos o uso do kernel 2.4.21 para suporte a ACPI. Para compilar esta-
ticamente, marque com Y a opo ACPI, depois marque os mdulos que voc quer que ele
monitore: button (boto power), fan (ventoinhas), etc. Se compilou como mdulo, adicione
o nome do mdulo acpi no arquivo /etc/modules. No h problema em compilar tambm
o suporte a APM, pois no causar problemas com um kernel com ACPI tambm compilado.
Caso no saiba quais mdulos ACPI seu sistema aceita, marque o suporte a todos e carregue-
os. Aps isto, entre no diretrio /proc/acpi e de um ls entrando nos diretrios e vendo
se existem arquivos dentro deles. Remova o mdulo correspondente daqueles que no tiver
contedo.
Aps isto, instale o daemon acpid e congure-o para monitorar algumas caractersticas do
seu sistema. Por padro o acpid monitora o boto POWER, assim se voc pressionar o power,
seu sistema entrar automaticamente emrun-level 0, fechando todos os processos e desligando
sua mquina.
Captulo 3. Hardware 37
O suporte a ACPI pode ser desativado de 3 formas: Removendo seu suporte do kernel, pas-
sando o argumento acpi=off ao kernel (caso esteja compilado estaticamente) ou removendo
o mdulo de /etc/modules (caso tenha compilado como mdulo. Aps isto, remova o dae-
mon acpid do seu sistema.
3.11.6 Ativando WakeUP on Lan
Algumas placas me ATX possuem suporte a este interessante recurso, que permite sua m-
quina ser ligada atravs de uma rede. Isto feito enviando-se uma seqncia especial de paco-
tes diretamente para o MAC (endereo fsico) da placa de rede usando um programa especial.
Para usar este recurso, seu sistema dever ter as seguintes caractersticas:
Placa me ATX
Fonte de alimentao ATX compatvel com o padro 2.0, com fornecimento de pelo me-
nos 720ma de corrente na sada +3v.
Placa de rede com suporte a WakeUP-on-Lan (WOL), voc poder conrmar isto vendo
um conector branco de 3 terminais instalado na placa que o local onde o cabo wake-up
conectado.
Suporte na BIOS tambm dever ter a opo para WakeUP-on-Lan.
Com todos esses tens existentes, instale em uma mquina da rede o pacote etherwake. De-
pois disso, pegue o MAC address a placa de rede da mquina que tem o wakeup on lan e na
mquina da rede onde instalou o pacote execute o seguinte comando:
ether-wake AA:BB:CC:DD:EE:FF
Onde AA:BB:CC:DD:EE:FF o endereo MAC da placa de rede. A mquina dever ligar e
realizar o procedimento padro de POST normalmente.
Algumas das situaes onde o WOL no funciona quando sua rede controlada por Switches
(devido a natureza de funcionamento deste equipamentos) ou caso esteja atrs de um roteador
que no faz proxy arp.
3.12 Aterramento
O aterramento correto da instalao eltrica essencial para garantir a proteo de seu micro-
computador (e outros aparelhos que requerem isto). Muitos usurios simplesmente removem
o pino central da tomada de seu computador, ou ligam o terra junto ao neutro da rede el-
trica, isto errado e pode trazer srias conseqncias. O computador possui componentes
sensveis que geram descargas estticas durante seu funcionamento (fonte, discos, placas, etc),
estas descargas e rudos so absorvidas pelo sistema de aterramento (que ligado no gabinete
do computador e outros componentes internos). Sem aterramento o seu gabinete passar a dar
choques eltricos (teste com uma chave de testes, ela acender indicando a circulao de cor-
rente eltrica) e a corrente acumulada poder queimar componentes internos sensveis (placa
me, HD, memrias, placas expansoras).
Captulo 3. Hardware 38
A ligao do terra ao neutro da rede menos perigosa em condies normais, mas se um raio
cair na rede eltrica as conseqncias podero ser piores. Mesmo a rede de iluminao pblica
tendo aterramento emcada poste isto pode no ser o suciente para reduzir a carga de um raio
que caia nas proximidades.
O sistema de aterramento residencial para PC deve ser feito com uma estaca de cobre com no
mnimo 2 metros de altura. O cobre um timo condutor de eletricidade, perdendo somente
para a prata (veja Condutores de eletricidade on this page). Cave um buraco no solo com a
ajuda de uma cavadeira (hehe, nunca ouviu falar nisso? :-), se estiver com diculdades para
cavar por causa de solo ressecado, molhe a terra para facilitar as coisas. Coma estaca enterrada,
prenda um cabo eltrico em sua extremidade.
O ideal para testar este sistema de aterramento seria ter um equipamento chamado
terrmetro (medidor de aterramento), mas utilizaremos 2 alternativas mais acessveis:
Ligue uma lmpada incandescente de 100W em um bocal com uma ponta ligada na ex-
tremidade positiva da rede eltrica (fase) e a outra ponta no o da barra de cobre. O
aterramento est bem feito quando a lmpada acender quase em sua potncia total. Li-
gue o o do aterramento no pino central da tomada de seu computador. OBS: Cuidado
para no tomar um baita choque durante esta operao em alguns casos pode ser fatal.
Utilize sandalhas ou sapatos de borracha (materiais isolantes) isto evitar tomar o choque
caso acontea.
Ligue a outra extremidade do o que vem da barra de cobre no pino central da tomada
de seu computador e ligue-o. Consiga um multmetro (analgico ou digital) e coloque
para medir em escala DC 10V. Coloque a ponta negativa (preta) no neutro da rede eltrica
e encoste a ponta positiva (vermelha) no gabinete de seu computador. O aterramento
estar aprovado caso o valor medido seja de no mximo 2.5 volts.
Caso algo ocorra errado, cheque novamente os passos acima. Se desconar das condies do
solo, use uma barra maior ou ligue 2 barras de cobre juntas.
3.12.1 Condutores de eletricidade
A tabela abaixo est classicada em ordem do material que possui melhor conduo de eletri-
cidade (eltrons com circulaos livres) baseada no fator mm2/m. (da mais condutora para a
menos condutora).
1 Prata - 0,0164
2 Cobre - 0,0172
3 Ouro - 0,0230
4 Alumnio - 0,0283
5 Zinco - 0,0600
6 Platina - 0,0950
7 Ferro - 0,1200
8 Chumbo - 0,2100
9 mercrio - 0,9680
Captulo 3. Hardware 39
3.13 Tomadas
As tomadas eltricas de 127V ou 220V AC 60Hz de trs pinos, pelas normas tcnicas da ABNT,
no. ABNT 6147 devem car distantes no mximo a 1,5 metro dos equipamentos e com terceiro
pino ligado terra. interessante que a tenso das tomadas esteja identicada nas mesmas,
em caso de mais de uma voltagem fornecida no local, evitando a queima de equipamentos.
Segue abaixo um exemplo de tomada fmea e a recomendao para sua montagem. Note
que a entrada para o pino terra voltado para cima, pois o caimento dos os da maioria dos
equipamentos fabricados estaro desta forma voltados para baixo.
127v 220v
+-----------+ +-----------+
Terra ---+----(_) | Terra ---+----(_) |
| _ _ | | _ _ |
| _| | | |_ | | _| | | |_ |
Fase ---+(_ | | _)+--- Neutro Fase ---+(_ | | _)+--- Fase
| |_| |_| | | |_| |_| |
| _ | | _ |
+-----------+ +-----------+
Como comentando anteriormente, no utilize como ponto de terra os sistemas de aterramento
das companhias de eletricidade, telefonia, ar condicionado e sistema de pra-raios.
3.14 Descargas estticas
a energia que se acumula durante o choque das molculas de ar seco ou atrito com outros
objetos. Pode acontecer de em dias secos voc tomar um choque ao abrir seu carro ou tocar
em algum objeto metlico, isto uma descarga esttica. Na realidade voc no tomou um cho-
que, ao tocar em um objeto metlico esta energia descarregada violentamente. Esta energia
pode chegar na ordem de 5 mil volts quando acumulada (assustador no?).
por este motivo que caminhes que transportam combustvel arrastam uma corrente no
cho, esta corrente funciona como umaterramento (veja Aterramento on page 37) eliminando
descargas estticas que possam gerar fascas e causar um desastre. Pulseiras, cordes, objetos
metlicos podem ser usados para eliminar descargas estticas de pessoas. O contato freqente
com o solo um mtodo muito til. Existem casos em que um colar salvou a vida de pessoas
atingidas por raio, justamente pelas explicaes acima. O colar derrete com a drenagem da
eletricidade do raio mas a pessoa tem mais chances de sair viva.
Em indivduos realmente sensveis, uma chapinha de metal pode ser colocada no sapato fa-
zendo contato com o calcanhar drenando constantemente estas descargas, isto ecaz e bem
melhor que sair arrastando correntes por ai :-)
Se voc trabalha com hardwares ou apenas mais um fuador de PCs, agora voc entender
porque recomendvel sempre tocar em partes metlicas do computador antes de mexer em
Captulo 3. Hardware 40
qualquer placa e porque aquele seu amigo disse que a placa dele queimou depois que resolveu
limpar seus contatos.
3.15 Melhoria de performance
3.15.1 Particionamento
Para um melhor desempenho, os dados que so solicitados constantemente devero ser arma-
zenados em uma partio no inicio do disco rgido. Esta rea a mais rpida e checa a ser 60%
mais rpida que o nal do HD (em alguns modelos). Em especial, a partio de boot, swap e
binrios do sistema podero ser armazenados nesta partio para aumentar a velocidade da
carga de programas e no prejudicar a performance do sistema quando o uso da partio de
troca (swap) for necessria.
Em discos rgidos grandes (6GB ou maiores) recomendvel criar no mnimo uma partio
pequena para /boot, outra para /, outra para swap e outra para /usr. Ficando distribudas
da seguinte maneira no disco rgido:
BBRRRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRRRRR
SSSSSSSSSSUUUUUUUUUUUUU
UUUUUUUUUUUUUUUUUUUUUUU
UUUUUUUUUUUUUUUUUUUUUUU
UUUUUUUUUUUUUUUUUUUUUUU
UUUUUUUUUUUUUUUUUUUUUUU
UUUUUUUUUUUUUUUUUUUUUUU
UUUUUUUUUUUUUUUUUUUUUUU
B - /boot
R - Raz /
S - Swap
U - /usr
Mas a swap no caria ainda mais rpida sendo a primeira partio no disco? Sim e no:
Realmente ca rpida (na teoria conforme explicado acima), mas levando em considerao
que o deslocamento das cabeas de leitura/gravao do disco rgido leva certo tempo, mais
vantajoso mant-la entre as 2 parties mais acessadas, isto diminui o tempo de acesso caso
um programa esteja fazendo uso constante de / ou /usr e precisar trocar dados na partio
swap.
Alm do mais, a partio / geralmente pequena (no mximo 800M) deixando a swap em
uma rea muito prxima do inicio do disco rgido. Com base nisto, voc poder ter uma
melhor viso tcnica para a construo de suas parties dependendo da funo do sistema.
Captulo 3. Hardware 41
3.15.2 Spindles
Em sistemas que utilizam um disco rgido dedicado para fazer swap, a ligao deste em uma
placa controladora independente aumentar bastante a performance do sistema, pois enquanto
o disco principal ligado em sua controladora estiver fazendo uma operao de leitura, o outro
poder estar fazendo sua operao de swap simultaneamente. O mesmo no acontece quando
dois discos rgidos IDE esto ligados no mesmo cabo (isto no acontece no SCSI).
3.15.3 Fazendo ajustes nos de performance do disco
O hdparm um programa que permite modicar caractersticas diversas da unidade de disco
rgido e de CD como modo de transferncia de dados, leitura adiante, dma, cache, leitura
simultnea de setores, hibernao, etc.
Por padro as transferncias de dados entre a controladora do HD (a plaquinha que ca em-
baixo dele) e a controladora de perifricos feita em 16 bits. Para exibir a congurao atual
do disco rgido /dev/hda (por exemplo), digite o seguinte comando: hdparm /dev/hda
/dev/hdb:
multcount = 0 (off)
I/O support = 0 (16-bit)
unmaskirq = 0 (off)
using_dma = 1 (off)
keepsettings = 0 (off)
nowerr = 0 (off)
readonly = 0 (off)
readahead = 8 (on)
Imediatamente podemos modicar os seguintes campos para melhorar sensivelmente o de-
sempenho do disco rgido:
multcount Pode ser modicada com -m[num] e especica o nmero mximo de setores que
sero acessados de uma s vez na operao de leitura da unidade. O valor mximo
recomendado igual a capacidade mxima suportada pelo seu disco rgido, que pode
ser obtida com o comando: hdparm -i /dev/hda
Model=TS6324A2, FwRev=.340 , SerialNo=A99B99JA
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
RawCHS=13228/15/63, TrkSize=0, SectSize=0, ECCbytes=0
BuffType=unknown, BuffSize=256kB, MaxMultSect=16, MultSect=16
CurCHS=13228/15/63, CurSects=12500460, LBA=yes, LBAsects=12500460
IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2 udma0 udma1 *udma2 udma3 udma4 udma5
O campo MaxMultSect=16 indica o valor de 16 como mximo suportado em uma nica
operao pela unidade. Valores maiores podero ser especicados mas no traro ganho
de performance. Para discos rgidos Western Digital recomendvel deixar este valor
Captulo 3. Hardware 42
como 0, porque eles possuem um mecanismo embutido para leitura de setores. Para
experimentar valores fora dos padres, coloque seu sistema de arquivos como somente
leitura para no perder dados caso algo saia errado. Note que o comando hdparm -i
mostra alguns detalhes interessantes sobre a congurao do disco rgido e modos de
operao suportados.
I/O support Modicado com -c[num]. O nmero especicado pode ser 0 para transferncia
de dados em 16 bits, 1 para 32 bits e 3 para 32 bits com uma seqencia especial de sin-
cronismo (alguns chips requerem esta ao invs da 1).
using_dma Modicado com -d[num]. Habilita ou no o uso de DMA para a transferncia de
dados do HD, ativando o controle de algumas operaes pelo chipset livrando a CPU
para processamento. 0 desativa DMA e 1 ativa. Note que nem todos os chipsets acei-
tam esta operao. Esta usada em conjunto com a opo -X oferece um excelente ga-
nho de performance pelo uso correto de sua controladora. A ativao de dma tambm
pode ser feita automaticamente na recompilao do kernel ou especicando o parmetro
ideX=dma (X o nmero da controladora IDE) na linha de comando de boot: ou no
arquivo /etc/lilo.conf.
xfermode Modicado pela opo -X[num]. Permite selecionar o melhor modo de transfern-
cia de dados do seu disco rgido, nesta parte onde voc seleciona o modo UltraDMA
para transferncia de dados, caso seu HD/CD-ROM suporte. Os seguintes valores so
vlidos:
32 - PIO Mode 0
33 - PIO Mode 1
34 - PIO Mode 2
35 - PIO Mode 3
36 - PIO Mode 4
64 - Ultra DMA Mode 0
65 - Ultra DMA Mode 1
66 - Ultra DMA Mode 2
67 - Ultra DMA Mode 3
68 - Ultra DMA Mode 4
69 - Ultra DMA Mode 5
70 - Ultra DMA Mode 6
Para descobrir os modos PIO e UltraDMA do seu HD, utilize o comando hdparm -I
/dev/hd?. NO UTILIZE UM MODO PIO/ULTRA DMA NO SUPORTADO PELA
SUA CONTROLADORA. CASO SUA PLACA CONTROLADORA DO HD SUPORTE
UM MODO ALTO PIO/ULTRADMA MAS SUA CONTROLADORA IDE NO SU-
PORTA, VOC DEVER UTILIZAR O VALOR MAIS ADEQUADO PARA AMBAS.
FAA TESTES SEMPRE QUE ALTERAR O MODO DE FUNCIONAMENTO E ESTEJA
ATENTO A MENSAGENS DE ERROS PARA QUE NO TENHA PERDA DE DADOS!!!
unmaskirq Modicado com-u[num]. Habilita ou no o controlador de disco mascarar as inter-
rupes de processador durante o processamento das interrupes de disco. 0 desativa
esta funo e 1 ativa. Use esta opo com cuidado e sob seu prprio risco: algumas pla-
cas controladores de HD e controladoras de perifricos no trabalham bem com a taxa de
transferncia aumentada, podem ocorrer perda de dados. Coloque o sistema de arquivos
como somente leitura antes de testar esta caracterstica.
readonly Modicado com -r[num]. Coloca o disco em modo somente leitura. A montagem da
Captulo 3. Hardware 43
partio com a opo ro no /etc/fstab preferida.
readahead Modicado com -a[num]. Congura o nmero de blocos que sero lidos anteci-
padamente no sistema de arquivos (por padro usado 8 blocos - 4 Kb). Este nmero
poder ser modicado para se adequar a utilizao do computador. Em sistemas com
muita procura de arquivos pequenos (servidores web), um valor pequeno (como o pa-
dro) recomendvel. Se a mquina um servidor de arquivos dedicado, um valor
maior trar maiores benefcios.
Veja mais detalhes sobre o comando hdparm em sua pgina de manual. Depois de seleci-
onado o melhor valor de performance, voc dever salvar em um arquivo que ser lido na
inicializao para ativao destes valores. Para fazer teste de performance de leitura bruta uti-
lize o comando hdparm -t /dev/hd?, para fazer testes com o uso de cache, use o comando
hdparm -T /dev/hd?.
OBS: Se o Linux resetar o disco rgido, a maioria das conguraes retornaro ao seu valor
padro. Isto ocorre devido a opes mau utilizadas no hdparm, no suportadas pelo disco
rgido ou por problemas no HD/controladora.
Exemplos:
# Ajusta o nmero de setores simultneos para 16 e o modo de transferncia para
# 32 bits no disco rgido /dev/hda
hdparm -c1 -m16 /dev/hda
# Programa a leitura adiante do HD para 64 blocos (32Kb), o modo de transferncia
# para 32 bits, usar DMA, e 16 setores simultneos.
hdparm -c1 -d1 -m16 -a64 /dev/hda
#Mostra os valores de configurao atuais do disco rgido
hdparm /dev/hda
3.15.4 Data de acesso a arquivos/diretrios
Toda vez que acessamos umarquivo ou diretrio da mquina Linux a data/hora atualizada.
Emmquinas normais isto OKmas emservidores onde o acesso a arquivos constante (como
no diretrio /var/spool em servidores de e-mail ou /usr/ em servidores diskless) reco-
mendvel desativar esta caracterstica. Isto reduzir a quantidade de buscas das cabeas do
disco rgido para a atualizao deste atributo e conseqentemente aumentar a performance
na gravao de arquivos (o disco rgido usa o sistema mecnico para ler/gravar dados, muito
mais lento que a memria RAM eletrnica).
chattr -R +A /var/spool
O atributo +A desativa a gravao da data de acesso dos arquivos e sub-diretrios dentro
de /var/spool. Para desativar a atualizao da data de acesso para toda a partio, voc
pode incluir a opo de montagem noatime no seu /etc/fstab:
Captulo 3. Hardware 44
/dev/hda1 /var/spool ext2 defaults,noatime 0 1
OBS: O Linux utiliza trs atributos de data para controle de arquivos:
atime - Data/Hora de acesso: atualizado toda vez que o arquivo lido ou executado.
mtime - Data/Hora da modicao, atualizado sempre que alguma modicao ocorre
no arquivo ou no contedo do diretrio. Esta mais interessante que a ctime principal-
mente quando temos hardlinks.
ctime - Data/Hora da ltima modicao do inodo do arquivo.
Em parties onde a gravao freqente (como na prpria /var/spool) a desativao do
atributo atime alm de melhorar o desempenho do disco, no far muita falta.
3.16 Perifricos SCSI
Hardwares SCSI (Small Computer System Interfaces) representam a tecnologia ideal para a
transferncia de dados em alta velocidade e ligao de vrios perifricos. A taxa de transfe-
rncia especicada para dispositivos SCSI sempre a padro se comparada a dispositivos IDE
(quando uma taxa de 66Mb/s quase nunca atingida).
Estes dispositivos so classicados em 3 categorias:
SCSI I - Usa um cabo de 25 condutores para a ligao de perifricos. Normalmente
usado em scanners, impressoras e outros dispositivos. A taxa de transferncia no
muito alta se comparado aos outros tipos SCSI.
SCSI II - Tambm chamado de Fast SCSI. Usa um cabo de 50 condutores para a ligao
de perifricos. Permite que sejam ligados at 7 perifricos em uma mesma controladora
(veja Congurando uma SCSI ID e terminao on the facing page). o mais comum
encontrado hoje em dia, mas vem perdendo espao aos poucos para a tecnologia SCSI
III.
SCSI III - Tambm chamado de Fast SCSI SE ou LVD. Usa um cabo de 68 condutores
para ligao de perifricos (veja Congurando uma SCSI ID e terminao on the next
page). Permite que sejam ligados at 16 perifricos em uma mesma controladora.
Um cabo SCSI pode ter o comprimento de at 5 metros de extenso. Os perifricos SCSI so
identicados atravs de nmeros chamados de identicador SCSI ou SCSI ID. Estes nmeros
vo de 0 a 6 para o padro SCSI 2 e de 0 a 15 para o padro SCSI 3.
Placas SCSI como a Adaptec UV 19160 permitem a ligao de perifricos SCSI 2 e SCSI 3 na
mesma placa com a taxa de transmisso de 160 MB/s por perifrico, alm de possuir um se-
tup prprio para congurar as opes dos dispositivos da placa e a operao da prpria. A
tecnologia SCSI algo realmente rpido para a transferncia de dados e cara tambm, seu uso
muito recomendado emservidores crticos. Os prprios dispositivos SCSI como discos rgidos,
gravadores de CD, cd-rom, etc. so construdos de tal forma que tem a durabilidade maior que
perifricos comuns, garantindo a mxima conana para operao/armazenamento de dados
em longos perodos de operao.
Captulo 3. Hardware 45
3.16.1 Congurando uma SCSI ID e terminao
Uma SCSI ID congurada independentemente por dispositivo e consiste em 3 jumpers (ou
dip switches) que possuem os valores 1, 2 e 4. Veja o exemplo abaixo de uma unidade de CD
SCSI 2:
+--------------------------------------------
|
|
|
|SCSI ID
| |
| _____ TERM
| | | | |
| o o o o o o
| o o o o o o
| 1 2 4 T
|
+---------------------------------------------
Se voc deixar os 3 jumpers da SCSI ID abertos, o dispositivo usar a SCSI ID 0. Colocando
o jumper na posio 1, a unidade ter a SCSI ID 1. Se voc colocar um jumper na posio 1 e
outro na 4, a unidade ser identicada pela SCSI ID 5 (quando mais de um jumper ligado, os
nmeros sero somados).
A terminao SCSI funciona de forma semelhante a de uma rede BNC, o ltimo perifrico do
cabo SCSI deve ter o jumper de terminao colocado para indicar que o ltimo perifrico do
cabo e evitar deexo de dados. Algumas placas SCSI modernas ajustam automaticamente a
terminao de perifricos sem necessidade de ajustar manualmente.
Captulo 3. Hardware 46
47
Captulo 4
Rede
Este captulo descreve o que uma rede, os principais dispositivos de rede no GNU/Linux,
a identicao de cada um, como congurar os dispositivos, escolha de endereos IP, rotea-
mento.
Parte deste captulo, uns 70% pelo menos, baseado no documento NET3-4-HOWTO. (seria
perda de tempo reescrever este assunto pois existe um material desta qualidade j disponvel).
4.1 O que uma rede
Rede a conexo de duas ou mais mquinas com o objetivo de compartilhar recursos entre
uma mquina e outra. Os recursos podem ser:
Compartilhamento do contedo de seu disco rgido (ou parte dele) com outros usu-
rios. Os outros usurios podero acessar o disco como se estivesse instalado na prpria
mquina). Tambm chamado de servidor de arquivos.
Compartilhamento de uma impressora comoutros usurios. Os outros usurios podero
enviar seus trabalhos para uma impressora da rede. Tambm chamado de servidor de
impresso.
Compartilhamento de acesso a Internet. Outros usurios podero navegar na Internet,
pegar seus e-mails, ler noticias, bate-papo no IRC, ICQ atravs do servidor de acesso
Internet. Tambm chamado de servidor Proxy.
Servidor de Internet/Intranet. Outros usurios podero navegar nas pginas Internet
localizadas em seu computador, pegar e-mails, usar um servidor de IRC para chat na
rede, servidor de ICQ, etc
Comos tens acima funcionando possvel criar permisses de acesso da rede, denindo quem
ter ou no permisso para acessar cada compartilhamento ou servio existente na mquina
(www, ftp, irc, icq, etc), e registrando/avisando sobre eventuais tentativas de violar a segu-
rana do sistema, rewalls, pontes, etc.
Entre outras ilimitadas possibilidades que dependem do conhecimento do indivduo no am-
biente GNU/Linux, j que ele permite muita exibilidade para fazer qualquer coisa funcionar
em rede.
Captulo 4. Rede 48
A comunicao entre computadores em uma rede feita atravs do Protocolo de Rede.
4.2 Protocolo de Rede
O protocolo de rede a linguagem usada para a comunicao entre um computador e outro.
Existemvrios tipos de protocolos usados para a comunicao de dados, alguns so projetados
para pequenas redes (como o caso do NetBios) outros para redes mundiais (TCP/IP que
possui caractersticas de roteamento).
Dentre os protocolos, o que mais se destaca atualmente o TCP/IP devido ao seu projeto,
velocidade e capacidade de roteamento.
4.3 Endereo IP
O endereo IP so nmeros que identicam seu computador em uma rede. Inicialmente voc
pode imaginar o IP como um nmero de telefone. O IP compostos por quatro bytes e a
conveno de escrita dos nmeros chamada de notao decimal pontuada. Por conveno,
cada interface (placa usada p/ rede) do computador ou roteador tem um endereo IP. Tambm
permitido que o mesmo endereo IP seja usado em mais de uma interface de uma mesma
mquina mas normalmente cada interface tem seu prprio endereo IP.
As Redes do Protocolo Internet so seqncias contnuas de endereos IPs. Todos os ende-
reos dentro da rede tem um nmero de dgitos dentro dos endereos em comum. A poro
dos endereos que so comuns entre todos os endereos de uma rede so chamados de poro
da rede. Os dgitos restantes so chamados de poro dos hosts. O nmero de bits que so com-
partilhados por todos os endereos dentro da rede so chamados de netmask (mscara da rede)
e o papel da netmask determinar quais endereos pertencem ou no a rede. Por exemplo,
considere o seguinte:
----------------- ---------------
Endereo do Host 192.168.110.23
Mscara da Rede 255.255.255.0
Poro da Rede 192.168.110.
Poro do Host .23
----------------- ---------------
Endereo da Rede 192.168.110.0
Endereo Broadcast 192.168.110.255
----------------- ---------------
Qualquer endereo que nalizado em zero em sua netmask, revelar o endereo da rede que
pertence. O endereo e rede ento sempre o menor endereo numrico dentro da escalas de
endereos da rede e sempre possui a poro host dos endereos codicada como zeros.
Captulo 4. Rede 49
O endereo de broadcast um endereo especial que cada computador em uma rede escuta
em adio a seu prprio endereo. Este um endereo onde os datagramas enviados so
recebidos por todos os computadores da rede. Certos tipos de dados como informaes de
roteamento e mensagens de alerta so transmitidos para o endereo broadcast, assim todo com-
putador na rede pode recebe-las simultaneamente.
Existe dois padres normalmente usados para especicar o endereo de broadcast. O mais am-
plamente aceito para usar o endereo mais alto da rede como endereo broadcast. No
exemplo acima este seria 192.168.110.255. Por algumas razes outros sites tem adotado a con-
veno de usar o endereo de rede como o endereo broadcast. Na prtica no importa
muito se usar este endereo, mas voc deve ter certeza que todo computador na rede esteja
congurado para escutar o mesmo endereo broadcast.
4.3.1 Classes de Rede IP
Por razes administrativas aps algum pouco tempo no desenvolvimento do protocolo IP al-
guns grupos arbitrrios de endereos foram formados em redes e estas redes foram agrupadas
no que foram chamadas de classes. Estas classes armazenam um tamanho padro de redes que
podem ser usadas. As faixas alocadas so:
+--------------------------------------------------------+
| Classe | Mscara de | Endereo da Rede |
| | Rede | |
+--------------------------------------------------------+
| A | 255.0.0.0 | 0.0.0.0 - 127.255.255.255 |
| B | 255.255.0.0 | 128.0.0.0 - 191.255.255.255 |
| C | 255.255.255.0 | 192.0.0.0 - 223.255.255.255 |
|Multicast| 240.0.0.0 | 224.0.0.0 - 239.255.255.255 |
+--------------------------------------------------------+
O tipo de endereo que voc deve utilizar depende exatamente do que estiver fazendo.
4.3.2 Referncia rpida de mscara de redes
A tabela abaixo faz referncia as mscaras de rede mais comuns e a quantidade de mquinas
mximas que ela atinge. Note que a especicao da mscara tem inuncia direta na classe
de rede usada:
Mscara Mscara Nmero
(Forma (Forma Mximo de
octal) 32 bits) Mquinas
Classe A:
/8 /255.0.0.0 16,777,215
Captulo 4. Rede 50
Classe B:
/16 /255.255.0.0 65,535
/17 /255.255.128.0 32,767
/18 /255.255.192.0 16,383
/19 /255.255.224.0 8,191
/20 /255.255.240.0 4,095
/21 /255.255.248.0 2,047
/22 /255.255.252.0 1,023
/23 /255.255.254.0 511
Classe C
/24 /255.255.255.0 255
/25 /255.255.255.128 127
/26 /255.255.255.192 63
/27 /255.255.255.224 31
/28 /255.255.255.240 15
/29 /255.255.255.248 7
/30 /255.255.255.252 3
/32 /255.255.255.255 1
Qualquer outra mscara fora desta tabela (principalmente para a classe A), dever ser redimen-
sionada comuma calculadora de IP para chegar a umnmero aproximado de redes/mquinas
aproximados que deseja.
4.3.3 Para instalar uma mquina usando o Linux em uma rede existente
Se voc quiser instalar uma mquina GNU/Linux em uma rede TCP/IP existente ento voc
deve contactar qualquer um dos administradores da sua rede e perguntar o seguinte:
Endereo IP de sua mquina
Endereo IP da rede
Endereo IP de broadcast
Mscara da Rede IP
Endereo do Roteador
Endereo do Servidor de Nomes (DNS)
Voc deve ento congurar seu dispositivo de rede GNU/Linux com estes detalhes. Voc no
pode simplesmente escolhe-los e esperar que sua congurao funcione.
4.3.4 Endereos reservados para uso em uma rede Privada
Se voc estiver construindo uma rede privada que nunca ser conectada a Internet, ento voc
pode escolher qualquer endereo que quiser. No entanto, para sua segurana e padronizao,
existem alguns endereos IPs que foram reservados especicamente para este propsito. Eles
esto especicados no RFC1597 e so os seguintes:
Captulo 4. Rede 51
+---------------------------------------------------------+
| ENDEREOS RESERVADOS PARA REDES PRIVADAS |
+---------------------------------------------------------+
| Classe | Mscara de | Endereo da Rede |
| de Rede | Rede | |
+---------+---------------+-------------------------------+
| A | 255.0.0.0 | 10.0.0.0 - 10.255.255.255 |
| B | 255.255.0.0 | 172.16.0.0 - 172.31.255.255 |
| C | 255.255.255.0 | 192.168.0.0 - 192.168.255.255 |
+---------------------------------------------------------+
Voc deve decidir primeiro qual ser a largura de sua rede e ento escolher a classe de rede
que ser usada.
4.4 Interface de rede
As interfaces de rede no GNU/Linux esto localizadas no diretrio /dev e a maioria criada
dinamicamente pelos softwares quando so requisitadas. Este o caso das interfaces ppp e
plip que so criadas dinamicamente pelos softwares.
Abaixo a identicao de algumas interfaces de rede no Linux (a ? signica um nmero que
identica as interfaces seqencialmente, iniciando em 0):
eth? - Placa de rede Ethernet e WaveLan.
ppp? - Interface de rede PPP (protocolo ponto a ponto).
slip? - Interface de rede serial
eql - Balanceador de trfego para mltiplas linhas
plip? - Interface de porta paralela
arc?e,arc?s - Interfaces Arcnet
sl?,ax? - Interfaces de rede AX25 (respectivamente para kernels 2.0.xx e 2.2.xx.
fddi? - Interfaces de rede FDDI.
dlci??,sdla? - Interfaces Frame Relay, respectivamente para para dispositivos de
encapsulamento DLCI e FRAD.
nr? - Interface Net Rom
rs? - Interfaces Rose
st? - Interfaces Strip (Starmode Radio IP)
tr? - Token Ring
Para maiores detalhes sobre as interfaces acima, consulte o documento NET3-4-HOWTO.
4.4.1 A interface loopback
A interface loopback um tipo especial de interface que permite fazer conexes com voc
mesmo. Todos os computadores que usam o protocolo TCP/IP utilizam esta interface e exis-
tem vrias razes porque precisa fazer isto, por exemplo, voc pode testar vrios programas
de rede sem interferir com ningum em sua rede. Por conveno, o endereo IP 127.0.0.1 foi
Captulo 4. Rede 52
escolhido especicamente para a loopback, assim se abrir uma conexo telnet para 127.0.0.1,
abrir uma conexo para o prprio computador local.
A congurao da interface loopback simples e voc deve ter certeza que fez isto (mas note
que esta tarefa normalmente feita pelos scripts padres de inicializao existentes em sua
distribuio).
ifconfig lo 127.0.0.1
Caso a interface loopback no esteja congurada, voc poder ter problemas quando tentar
qualquer tipo de conexo comas interfaces locais, tendo problemas at mesmo como comando
ping.
4.4.2 Atribuindo um endereo de rede a uma interface (ifcong)
Aps congurada sicamente, a interface precisa receber um endereo IP para ser identicada
na rede e se comunicar comoutros computadores, almde outros parmetros como o endereo
de broadcast e a mscara de rede. O comando usado para fazer isso o ifconfig (interface
congure).
Para congurar a interface de rede Ethernet (eth0) com o endereo 192.168.1.1, mscara de
rede 255.255.255.0, podemos usar o comando:
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up
O comando acima ativa a interface de rede. A palavra up pode ser omitida, pois a ativao
da interface de rede o padro. Para desativar a mesma interface de rede, basta usar usar o
comando:
ifconfig eth0 down
Digitando ifconfig so mostradas todas as interfaces ativas no momento, pacotes enviados,
recebidos e colises de datagramas. Para mostrar a congurao somente da interface eth0,
use o comando: ifconfig eth0 Em sistemas Debian, o arquivo correto para especicar os
dados das interfaces o /etc/network/interfaces .
Para mais detalhes, veja a pgina de manual do ifconfig ou o NET3-4-HOWTO.
4.5 Roteamento
Roteamento quando uma mquina com mltiplas conexes de rede decide onde entregar os
pacotes IP que recebeu, para que cheguem ao seu destino.
Captulo 4. Rede 53
Pode ser til ilustrar isto com um exemplo. Imagine um simples roteador de escritrio, ele
pode ter um link intermitente com a Internet, um nmero de segmentos ethernet alimentando
as estaes de trabalho e outro link PPP intermitente fora de outro escritrio. Quando o ro-
teador recebe um datagrama de qualquer de suas conexes de rede, o mecanismo que usa
determina qual a prxima interface deve enviar o datagrama. Computadores simples tambm
precisam rotear, todos os computadores na Internet tem dois dispositivos de rede, um a in-
terface loopback (explicada acima) o outro um usado para falar com o resto da rede, talvez
uma ethernet, talvez uma interface serial PPP ou SLIP.
OK, viu como o roteamento funciona? cada computador mantm uma lista de regras especiais
de roteamento, chamada tabela de roteamento. Esta tabela contm colunas que tipicamente con-
tm no mnimo trs campos, o primeiro o endereo de destino, o segundo o nome da interface
que o datagrama deve ser roteado e o terceiro opcionalmente o endereo IP da outra mquina
que levar o datagrama em seu prximo passo atravs da rede. No GNU/Linux voc pode ver
a tabela de roteamento usando um dos seguintes comandos:
cat /proc/net/route
route -n
netstat -r
Oprocesso de roteamento muito simples: umdatagrama (pacote IP) recebido, o endereo de
destino (para quem ele ) examinado e comparado com cada item da tabela de roteamento.
O item que mais corresponder com o endereo selecionado e o datagrama direcionado a
interface especicada.
Se o campo gateway estiver preenchido, ento o datagrama direcionado para aquele compu-
tador pela interface especicada, caso contrrio o endereo de destino assumido sendo uma
rede suportada pela interface.
4.5.1 Congurando uma rota no Linux
A congurao da rota feita atravs da ferramenta route. Para adicionar uma rota para a
rede 192.168.1.0 acessvel atravs da interface eth0 basta digitar o comando:
route add -net 192.168.1.0 eth0
Para apagar a rota acima da tabela de roteamento, basta substituir a palavra add por del. A
palavra net quer dizer que 192.168.1.0 um endereo de rede (lembra-se das explicaes em
Endereo IP on page 48?)) para especicar uma mquina de destino, basta usar a palavra
-host. Endereos de mquina de destino so muito usadas em conexes de rede apenas entre
dois pontos (como ppp, plip, slip). Por padro, a interface especicada como ltimo argu-
mento. Caso a interface precise especica-la em outro lugar, ela dever ser precedida da opo
-dev.
Para adicionar uma rota padro para um endereo que no se encontre na tabela de rotea-
mento, utiliza-se o gateway padro da rede. Atravs do gateway padro possvel especicar um
Captulo 4. Rede 54
computador (normalmente outro gateway) que os pacotes de rede sero enviados caso o en-
dereo no conra com os da tabela de roteamento. Para especicar o computador 192.168.1.1
como gateway padro usamos:
route add default gw 192.168.1.1 eth0
O gateway padro pode ser visualizado atravs do comando route -n e vericando o campo
gateway. A opo gw acima, especica que o prximo argumento um endereo IP (de uma
rede j acessvel atravs das tabelas de roteamento).
O computador gateway est conectado a duas ou mais redes ao mesmo tempo. Quando seus
dados precisam ser enviados para computadores fora da rede, eles so enviados atravs do
computador gateway e o gateway os encaminham ao endereo de destino. Desta forma, a res-
posta do servidor tambm enviada atravs do gateway para seu computador ( o caso de uma
tpica conexo com a Internet).
A nossa congurao caria assim:
route add -net 192.168.1.0 eth0
route add default gw 192.168.1.1 eth0
Para mais detalhes, veja a pgina de manual do route ou o NET3-4-HOWTO.
4.6 Resolvedor de nomes (DNS)
DNS signica Domain Name System (sistema de nomes de domnio). O DNS converte os
nomes de mquinas para endereos IPs que todas as mquinas da Internet possuem. Ele faz
o mapeamento do nome para o endereo e do endereo para o nome e algumas outras coisas.
Um mapeamento simplesmente uma associao entre duas coisas, neste caso um nome de
computador, como www.cipsga.org.br, e o endereo IP desta mquina (ou endereos) como
200.245.157.9.
O DNS foi criado com o objetivo de tornar as coisas mais fceis para o usurio, permitindo
assim, a identicao de computadores na Internet ou redes locais atravs de nomes ( como
se tivssemos apenas que decorar o nome da pessoa ao invs de um nmero de telefone).
A parte responsvel por traduzir os nomes como www.nome.com.br em um endereo IP
chamada de resolvedor de nomes.
O resolvedor de nomes pode ser um banco de dados local (controlador por um arquivo ou pro-
grama) que converte automaticamente os nomes em endereos IP ou atravs de servidores DNS
que fazema busca emumbanco de dados na Internet e retornamo endereo IP do computador
desejado. Um servidor DNS mais difundido na Internet o bind.
Atravs do DNS necessrio apenas decorar o endereo sem precisar se preocupar com o
endereo IP (alguns usurios simplesmente no sabem que isto existe. . . ). Se desejar mais
detalhes sobre DNS, veja o documento DNS-HOWTO.
Captulo 4. Rede 55
4.6.1 O que um nome?
Voc deve estar acostumado com o uso dos nomes de computadores na Internet, mas pode
no entender como eles so organizados. Os nomes de domnio na Internet so uma estrutura
hierrquica, ou seja, eles tem uma estrutura semelhante aos diretrios de seu sistema.
Um domnio uma famlia ou grupo de nomes. Um domnio pode ser colocado em um sub-
domnio. Um domnio principal um domnio que no um sub-domnio. Os domnios princi-
pais so especicados na RFC-920. Alguns exemplos de domnios principais comuns so:
COM - Organizaes Comerciais
EDU - Organizaes Educacionais
GOV - Organizaes Governamentais
MIL - Organizaes Militares
ORG - Outras Organizaes
NET - Organizaes relacionadas com a Internet
Identificador do Pas - So duas letras que representam um pas em particular.
Cada um dos domnios principais tem sub-domnios. Os domnios principais baseados no
nome do pas so freqentemente divididos em sub-domnios baseado nos domnios .com,
.edu, .gov, .mil e .org. Assim, por exemplo, voc pode naliza-lo com: com.au e gov.au
para organizaes comerciais e governamentais na Austrlia; note que isto no uma re-
gra geral, as organizaes de domnio atuais dependem da autoridade na escolha de nomes
de cada domnio. Quando o endereo no especica o domnio principal, como o endereo
www.unicamp.br, isto quer dizer que uma organizao acadmica.
O prximo nvel da diviso representa o nome da organizao. Subdomnios futuros variam
em natureza, freqentemente o prximo nvel do sub-domnio baseado na estrutura depar-
tamental da organizao mas ela pode ser baseada em qualquer critrio considerado razovel
e signicantes pelos administradores de rede para a organizao.
A poro mais a esquerda do nome sempre o nome nico da mquina chamado hostname,
a poro do nome a direita do hostname chamado nome de domnio e o nome completo
chamado nome do domnio completamente qualicado (Fully Qualied Domain Name).
Usando o computador www.debian.org.br como exemplo:
br - Pas onde o computador se encontra
org - Domnio principal
debian - Nome de Domnio
www - Nome do computador
A localizao do computador www.debian.org.br atravs de servidores DNS na Inter-
net obedece exatamente a seqncia de procura acima. Os administradores do domnio
debian.org.br podem cadastrar quantos sub-domnios e computadores quiserem (como
www.non-us.debian.org.br ou cvs.debian.org.br).
4.6.2 Arquivos de congurao usados na resoluo de nomes
Abaixo a descrio dos arquivos usados no processo de resolver um nome no sistema
GNU/Linux.
Captulo 4. Rede 56
/etc/resolv.conf
O /etc/resolv.conf o arquivo de congurao principal do cdigo do resolvedor de
nomes. Seu formato um arquivo texto simples com um parmetro por linha e o endereo
de servidores DNS externos so especicados nele. Existem trs palavras chaves normalmente
usadas que so:
domain Especica o nome do domnio local.
search Especica uma lista de nomes de domnio alternativos ao procurar por um computa-
dor, separados por espaos. A linha search pode conter no mximo 6 domnios ou 256
caracteres.
nameserver Especica o endereo IP de um servidor de nomes de domnio para resoluo de
nomes. Pode ser usado vrias vezes.
Como exemplo, o /etc/resolv.conf se parece com isto:
domain maths.wu.edu.au
search maths.wu.edu.au wu.edu.au
nameserver 192.168.10.1
nameserver 192.168.12.1
Este exemplo especica que o nome de domnio a adicionar ao nome no qualicado (i.e. host-
names sem o domnio) maths.wu.edu.au e que se o computador no for encontrado na-
quele domnio ento a procura segue para o domnio wu.edu.au diretamente. Duas linhas de
nomes de servidores foram especicadas, cada uma pode ser chamada pelo cdigo resolvedor
de nomes para resolver o nome.
/etc/host.conf
O arquivo /etc/host.conf o local onde possvel congurar alguns tens que gerenciam
o cdigo do resolvedor de nomes. O formato deste arquivo descrito em detalhes na pgina
de manual resolv+. Em quase todas as situaes, o exemplo seguinte funcionar:
order hosts,bind
multi on
Este arquivo de congurao diz ao resolvedor de nomes para checar o arquivo /etc/hosts
(parmetro hosts) antes de tentar vericar um servidor de nomes (parmetro bind) e retornar
um endereo IP vlido para o computador procurado e multi on retornar todos os endereos
IP resolvidos no arquivo /etc/hosts ao invs do primeiro.
Os seguintes parmetros podem ser adicionados para evitar ataques de IP spoong:
nospoof on
spoofalert on
O parmetro nospoof on ativa a resoluo reversa do nome da biblioteca resolv (para checar se
o endereo pertence realmente quele nome) e o spoofalert on registra falhas desta operao no
syslog.
Captulo 4. Rede 57
/etc/hosts
O arquivo /etc/hosts faz o relacionamento entre um nome de computador e endereo IP lo-
cal. Recomendado para IPs constantemente acessados e para colocao de endereos de virtual
hosts (quando deseja referir pelo nome ao invs de IP). A incluso de um computador neste
arquivo dispenda a consulta de umservidor de nomes para obter umendereo IP, sendo muito
til para mquinas que so acessadas frequentemente. A desvantagem de fazer isto que voc
mesmo precisar manter este arquivo atualizado e se o endereo IP de algum computador for
modicado, esta alterao dever ser feita em cada um dos arquivos hosts das mquinas da
rede. Em um sistema bem gerenciado, os nicos endereos de computadores que aparecero
neste arquivo sero da interface loopback e os nomes de computadores.
# /etc/hosts
127.0.0.1 localhost loopback
192.168.0.1 maquina.dominio.com.br
Voc pode especicar mais que um nome de computador por linha como demonstrada pela
primeira linha, a que identica a interface loopback. Certique-se de que a entrada do nome
de domnio neste arquivo aponta para a interface de rede e no para a interface loopback, ou
ter problema com o comportamento de alguns servios.
OBS: Caso encontre problemas de lentido para resolver nomes e at para executar os aplica-
tivos (como o mc, etc), verique se existem erros neste arquivo de congurao.
Estes sintomas se confundem com erros de memria ou outro erro qualquer de congurao
de hardware, e somem quando a interface de rede desativada (a com o IP no loopback). Isto
causados somente pela m congurao do arquivo /etc/hosts. O bom funcionamento
do Unix depende da boa ateno do administrador de sistemas para congurar os detalhes de
seu servidor.
/etc/networks
O arquivo /etc/networks tem uma funo similar ao arquivo /etc/hosts. Ele contm um
banco de dados simples de nomes de redes contra endereos de redes. Seu formato se difere
por dois campos por linha e seus campos so identicados como:
Nome_da_Rede Endereo_da_Rede
Abaixo um exemplo de como se parece este arquivo:
loopnet 127.0.0.0
localnet 192.168.1.0
amprnet 44.0.0.0
Quando usar comandos como route, se um destino uma rede e esta rede se encontra no
arquivo /etc/networks, ento o comando route mostrar o nome da rede ao invs de seu
endereo.
Captulo 4. Rede 58
4.6.3 Executando um servidor de nomes
Se voc planeja executar um servidor de nomes, voc pode fazer isto facilmente. Por favor veja
o documento DNS-HOWTO e quaisquer documentos includos emsua verso do BIND(Berkeley
Internet Name Domain).
4.7 Servios de Rede
Servios de rede o que est disponvel para ser acessado pelo usurio. No TCP/IP, cada servio
associado a um nmero chamado porta que onde o servidor espera pelas conexes dos
computadores clientes. Uma porta de rede pode se referenciada tanto pelo nmero como pelo
nome do servio.
Abaixo, alguns exemplos de portas padres usadas em servios TCP/IP:
21 - FTP (transferncia de arquivos)
23 - Telnet (terminal virtual remoto)
25 - Smtp (envio de e-mails)
53 - DNS (resolvedor de nomes)
79 - Finger (detalhes sobre usurios do sistema)
80 - http (protocolo www - transferncia de pginas Internet)
110 - Pop-3 (recebimento de mensagens)
119 - NNTP (usado por programas de noticias)
O arquivo padro responsvel pelo mapeamento do nome dos servios e das portas mais uti-
lizadas o /etc/services (para detalhes sobre o seu formato, veja a /etc/services on
page 67).
4.7.1 Servios iniciados como Daemons de rede
Servios de rede iniciados como daemons camresidente o tempo todo na memria esperando
que algum se conecte (tambm chamado de modo standalone). Um exemplo de daemon o
servidor proxy squid e o servidor web Apache operando no modo daemon.
Alguns programas servidores oferecem a opo de serem executados como daemons ou atravs
do inetd. recomendvel escolher daemon se o servio for solicitado freqentemente (como o
caso dos servidores web ou proxy).
Para vericar se um programa est rodando como daemon, basta digitar ps ax e procurar o
nome do programa, em caso positivo ele um daemon.
Normalmente os programas que so iniciados como daemons possuem seus prprios recursos
de segurana/autenticao para decidir quem tem ou no permisso de se conectar.
4.7.2 Servios iniciados atravs do inetd
Servios iniciados pelo inetd so carregados para a memria somente quando so solicitados.
O controle de quais servios podem ser carregados e seus parmetros, so feitos atravs do
Captulo 4. Rede 59
arquivo /etc/inetd.conf.
Um daemon chamado inetd l as conguraes deste arquivo e permanece residente na me-
mria, esperando pela conexo dos clientes. Quando uma conexo solicitada, o daemon inetd
verica as permisses de acesso nos arquivos /etc/hosts.allow e /etc/hosts.deny e
carrega o programa servidor correspondente no arquivo /etc/inetd.conf. Um arquivo
tambm importante neste processo o /etc/services que faz o mapeamento das portas e
nomes dos servios.
Alguns programas servidores oferecem a opo de serem executados como daemons ou atravs
do inetd. recomendvel escolher inetd se o servio no for solicitado freqentemente (como
o caso de servidores ftp, telnet, talk, etc).
/etc/inetd.conf
O arquivo /etc/inetd.conf um arquivo de congurao para o daemon servidor inetd.
Sua funo dizer ao inetd o que fazer quando receber uma requisio de conexo para um
servio emparticular. Para cada servio que deseja aceitar conexes, voc precisa dizer ao inetd
qual daemon servidor executar e como executa-lo.
Seu formato tambm muito simples. um arquivo texto com cada linha descrevendo um
servio que deseja oferecer. Qualquer texto em uma linha seguindo uma # ignorada e
considerada um comentrio. Cada linha contm sete campos separados por qualquer nmero
de espaos em branco (tab ou espaos). O formato geral o seguinte:
servio tipo_soquete proto opes.num usurio caminho_serv. opes_serv.
servio o servio relevante a este arquivo de congurao pego do arquivo /etc
/services.
tipo_soquete Este campo descreve o tipo do soquete que este item utilizar, valores permiti-
dos so: stream, dgram, raw, rdm, ou seqpacket. Isto umpouco tcnico de natureza,
mas como uma regra geral, todos os servios baseados em tcp usam stream e todos os
protocolos baseados em udp usam dgram. Somente alguns tipos de daemons especiais
de servidores usam os outros valores.
protocolo O protocolo considerado vlido para esta item. Isto deve bater com um item apro-
priado no arquivo /etc/services e tipicamente ser tcp ou udp. Servidores baseados
no Sun RPC (Remote Procedure Call), utilizam rpc/tcp ou rpc/udp.
opes Existem somente duas conguraes para este campo. A congurao deste campo
diz ao inetd se o programa servidor de rede libera o soquete aps ele ser iniciado e ento
se inetd pode iniciar outra cpia na prxima requisio de conexo, ou se o inetd deve
aguardar e assumir que qualquer servidor j em execuo pegar a nova requisio de
conexo. Este um pequeno truque de trabalho, mas como uma regra, todos os servido-
res tcp devem ter este parmetro ajustado para nowait e a maior parte dos servidores udp
deve t-lo ajustado para wait. Foi alertado que existem algumas excesses a isto, assim
deixo isto como exemplo se no estiver seguro. O nmero especicado aps o . opci-
onal e dene a quantidade mxima de vezes que o servio poder ser executado durante
Captulo 4. Rede 60
1 minuto. Se o servio for executado mais vezes do que este valor, ele ser automatica-
mente desativado pelo inetd e uma mensagem ser mostrada no log do sistema avisando
sobre o fato. Para reativar o servio interrompido, reinicie o inetd com: killall -HUP
inetd. O valor padro 40.
usurio Este campo descreve que conta de usurio usurio no arquivo /etc/passwd ser
escolhida como dono do daemon de rede quando este for iniciado. Isto muito til se
voc deseja diminuir os riscos de segurana. Voc pode ajustar o usurio de qualquer
item para o usurio nobody, assim se a segurana do servidor de redes quebrada, a
possibilidade de problemas minimizada. Normalmente este campo ajustado para
root, porque muitos servidores requerem privilgios de usurio root para funcionarem
corretamente.
caminho_servidor Este campo o caminho para o programa servidor atual que ser execu-
tado.
argumentos_servidor Este campo inclui o resto da linha e opcional. Voc pode colocar neste
campo qualquer argumento da linha de comando que deseje passar para o daemon ser-
vidor quando for iniciado.
Uma dica que pode aumentar signicativamente a segurana de seu sistema comentar (colo-
car uma #no inicio da linha) os servios que no sero utilizados.
Abaixo um modelo de arquivo /etc/inetd.conf usado em sistemas Debian:
# /etc/inetd.conf: veja inetd(8) para mais detalhes.
#
# Banco de Dados de configuraes do servidor Internet
#
#
# Linhas iniciando com "#:LABEL:" ou "#<off>#" no devem
# ser alteradas a no ser que saiba o que est fazendo!
#
#
# Os pacotes devem modificar este arquivo usando update-inetd(8)
#
# <nome_servio> <tipo_soquete> <proto> <opes> <usurio> <caminho_servidor> <args>
#
#:INTERNO: Servios internos
#echo stream tcp nowait root internal
#echo dgram udp wait root internal
#chargen stream tcp nowait root internal
#chargen dgram udp wait root internal
#discard stream tcp nowait root internal
#discard dgram udp wait root internal
#daytime stream tcp nowait root internal
#daytime dgram udp wait root internal
time stream tcp nowait root internal
#time dgram udp wait root internal
Captulo 4. Rede 61
#:PADRES: Estes so servios padres.
#:BSD: Shell, login, exec e talk so protocolos BSD.
#shell stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rshd
#login stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rlogind
#exec stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rexecd
talk dgram udp wait.10 nobody.tty /usr/sbin/tcpd /usr/sbin/in.talkd
ntalk dgram udp wait.10 nobody.tty /usr/sbin/tcpd /usr/sbin/in.ntalkd
#:MAIL: Mail, news e servios uucp.
smtp stream tcp nowait.60 mail /usr/sbin/exim exim -bs
#:INFO: Servios informativos
#:BOOT: O servio Tftp oferecido primariamente para a inicializao. Alguns sites
# o executam somente em mquinas atuando como "servidores de inicializao".
#:RPC: Servios baseados em RPC
#:HAM-RADIO: servios de rdio amador
#:OTHER: Outros servios
4.8 Segurana da Rede e controle de Acesso
Deixe-me iniciar esta seo lhe alertando que a segurana da rede em sua mquina e ataques
maliciosos so uma arte complexa. Uma regra importante : No oferea servios de rede que
no deseja utilizar.
Muitas distribuies vem conguradas com vrios tipos de servios que so iniciados auto-
maticamente. Para melhorar, mesmo que insignicantemente, o nvel de segurana em seu
sistema voc deve editar se arquivo /etc/inetd.conf e comentar (colocar uma #) as li-
nhas que contm servios que no utiliza.
Bons candidatos so servios tais como: shell, login, exec, uucp, ftp e servios de infor-
mao tais como finger, netstat e sysstat.
Existem todos os tipos de mecanismos de segurana e controle de acesso, eu descreverei os
mais importantes deles.
4.8.1 /etc/ftpusers
O arquivo /etc/ftpusers um mecanismo simples que lhe permite bloquear a conexo de
certos usurios via ftp. O arquivo /etc/ftpusers lido pelo programa daemon ftp (ftpd)
quando um pedido de conexo recebido. O arquivo uma lista simples de usurios que no
tem permisso de se conectar. Ele se parece com:
Captulo 4. Rede 62
# /etc/ftpusers - login de usurios bloqueados via ftp
root
uucp
bin
mail
4.8.2 /etc/securetty
O arquivo /etc/securetty lhe permite especicar que dispositivos tty que o usurio root
pode se conectar. O arquivo /etc/securetty lido pelo programa login (normalmente /bin
/login). Seu formato uma lista de dispositivos tty onde a conexo permitida, em todos
os outros, a entrada do usurio root bloqueada.
# /etc/securetty - terminais que o usurio root pode se conectar
tty1
tty2
tty3
tty4
4.8.3 O mecanismo de controle de acessos tcpd
O programa tcpd que voc deve ter visto listado no mesmo arquivo /etc/inetd.conf,
oferece mecanismos de registro e controle de acesso para os servios que esta congurado
para proteger. Ele um tipo de rewall simples e fcil de congurar que pode evitar tipos
indesejados de ataques e registrar possveis tentativas de invaso.
Quando executado pelo programa inetd, ele l dos arquivos contendo regras de acesso e
permite ou bloqueia o acesso ao servidor protegendo adequadamente.
Ele procura nos arquivos de regras at que uma regra conra. Se nenhuma regra conferir, ento
ele assume que o acesso deve ser permitido a qualquer um. Os arquivos que ele procura em
seqncia so: /etc/hosts.allow e /etc/hosts.deny. Eu descreverei cada um destes
arquivos separadamente.
Para uma descrio completa desta facilidade, voc deve vericar a pgina de manual apro-
priada (hosts_access (5) um bom ponto de partida).
/etc/hosts.allow
O arquivo /etc/hosts.allow um arquivo de congurao do programa /usr/sbin
/tcpd. O arquivo hosts.allow contm regras descrevendo que hosts tem permisso de
acessar um servio em sua mquina.
O formato do arquivo muito simples:
Captulo 4. Rede 63
# /etc/hosts.allow
#
# lista de servios: lista de hosts : comando
lista de servios uma lista de nomes de servios separados por vrgula que esta regra se
aplica. Exemplos de nomes de servios so: ftpd, telnetd e fingerd.
lista de hosts uma lista de nomes de hosts separada por vrgula. Voc tambm pode usar
endereos IPs aqui. Adicionalmente, voc pode especicar nomes de computadores
ou endereo IP usando caracteres coringas para atingir grupos de hosts. Exemplos in-
cluem: gw.vk2ktj.ampr.org para conferir com um endereo de computador espe-
cco, .uts.edu.au para atingir qualquer endereo de computador nalizando com
aquele string. Use 200.200.200. para conferir com qualquer endereo IP iniciando com
estes dgitos. Existem alguns parmetros especiais para simplicar a congurao, al-
guns destes so: ALL atinge todos endereos, LOCAL atinge qualquer computador que
no contm um . (ie. est no mesmo domnio de sua mquina) e PARANOID atinge
qualquer computador que o nome no confere com seu endereo (falsicao de nome).
Existe tambm um ltimo parmetro que tambm til: o parmetro EXCEPT lhe per-
mite fazer uma lista de excees. Isto ser coberto em um exemplo adiante.
comando um parmetro opcional. Este parmetro o caminho completo de um comando
que dever ser executado toda a vez que esta regra conferir. Ele pode executar um co-
mando para tentar identicar quem esta conectado pelo host remoto, ou gerar uma men-
sagem via E-Mail ou algum outro alerta para um administrador de rede que algum est
tentando se conectar. Existem um nmero de expanses que podem ser includas, alguns
exemplos comuns so: %h expande o endereo do computador que est conectado ou
endereo se ele no possuir um nome, %d o nome do daemon sendo chamado.
Se o computador tiver permisso de acessar umservio atravs do /etc/hosts.allow, ento
o /etc/hosts.deny no ser consultado e o acesso ser permitido.
Como exemplo:
# /etc/hosts.allow
#
# Permite que qualquer um envie e-mails
in.smtpd: ALL
# Permitir telnet e ftp somente para hosts locais e myhost.athome.org.au
in.telnetd, in.ftpd: LOCAL, myhost.athome.org.au
# Permitir finger para qualquer um mas manter um registro de quem
in.fingerd: ALL: (finger @%h | mail -s "finger from %h" root)
Qualquer modicao no arquivo /etc/hosts.allow entrar em ao aps reiniciar o dae-
mon inetd. Isto pode ser feito com o comando kill -HUP [pid do inetd], o pid do inetd
pode ser obtido com o comando ps ax|grep inetd.
/etc/hosts.deny
O arquivo /etc/hosts.deny um arquivo de congurao das regras descrevendo quais
computadores no tem a permisso de acessar um servio em sua mquina.
Captulo 4. Rede 64
Um modelo simples deste arquivo se parece com isto:
# /etc/hosts.deny
#
# Bloqueia o acesso de computadores com endereos suspeitos
ALL: PARANOID
#
# Bloqueia todos os computadores
ALL: ALL
A entrada PARANOID realmente redundante porque a outra entrada nega tudo. Qualquer
uma destas linhas pode fazer uma segurana padro dependendo de seu requerimento em
particular.
Tendo um padro ALL: ALL no arquivo /etc/hosts.deny e ento ativando especicamente os ser-
vios e permitindo computadores que voc deseja no arquivo /etc/hosts.allow a con-
gurao mais segura.
Qualquer modicao no arquivo /etc/hosts.deny entrar em ao aps reiniciar o dae-
mon inetd. Isto pode ser feito com o comando kill -HUP [pid do inetd], o pid do inetd
pode ser obtido com o comando ps ax|grep inetd.
/etc/hosts.equiv e /etc/shosts.equiv
O arquivo /etc/hosts.equiv usado para garantir/bloquear certos computadores e usu-
rios o direito de acesso aos servios r* (rsh, rexec, rcp, etc) sem precisar fornecer uma senha.
O /etc/shosts.equiv equivalente mas lido somente pelo servio ssh. Esta funo til
em um ambiente seguro onde voc controla todas as mquinas, mesmo assim isto um perigo
de segurana (veja nas observaes). O formato deste arquivo o seguinte:
#Acesso Mquina Usurio
- maquina2.dominio.com.br usuario2
- maquina4.dominio.com.br usuario2
+ maquina1.dominio.com.br +@usuarios
O primeiro campo especica se o acesso ser permitido ou negado caso o segundo e terceiro
campo conram. Por razes de segurana deve ser especicado o FQDN no caso de nomes de
mquinas. Grupos de rede podem ser especicados usando a sintaxe +@grupo.
Para aumentar a segurana, no use este mecanismo e encoraje seus usurios a tambm no
usar o arquivo .rhosts.
ATENO O uso do sinal + sozinho signica permitir acesso livre a qualquer pessoa de
qualquer lugar. Se este mecanismo for mesmo necessrio, tenha muita ateno na especicao
de seus campos.
Captulo 4. Rede 65
Evita tambm A TODO CUSTO uso de nomes de usurios (a no ser para negar o acesso),
pois fcil forjar o login, entrar no sistema tomar conta de processos (como por exemplo do
servidor Apache rodando sob o usurio www-data ou at mesmo o root), causando enormes
estragos.
Vericando a segurana do TCPD e a sintaxe dos arquivos
O utilitrio tcpdchk til para vericar problemas nos arquivos hosts.allow e
hosts.deny. Quando executado ele verica a sintaxe destes arquivos e relata problemas,
caso eles existam.
Outro utilitrio til o tcpdmatch, o que ele faz permitir que voc simule a tentativa
de conexes ao seu sistema e observar ser ela ser permitida ou bloqueada pelos arquivos
hosts.allow e hosts.deny.
importante mostrar na prtica como o tcpdmatch funciona atravs de um exemplo simu-
lando um teste simples em um sistema com a congurao padro de acesso restrito:
O arquivo hosts.allow contm as seguintes linhas:
ALL: 127.0.0.1
in.talkd, in.ntalkd: ALL
in.fingerd: 192.168.1. EXCEPT 192.168.1.30
A primeira linha permite o loopback (127.0.0.1) acessar qualquer servio TCP/UDP em
nosso computador, a segunda linha permite qualquer um acessar os servidor TALK (ns
desejamos que o sistema nos avise quando algumdesejar conversar) e a terceira somente
permite enviar dados do finger para computadores dentro de nossa rede privada (ex-
ceto para 192.168.1.30).
O arquivo hosts.deny contm a seguinte linha:
ALL: ALL
Qualquer outra conexo ser explicitamente derrubada.
Vamos aos testes, digitando: tcpdmatch in.ngerd 127.0.0.1 (vericar se o endereo 127.0.0.1
tem acesso ao nger):
client: address 127.0.0.1
server: process in.fingerd
matched: /etc/hosts.allow line 1
access: granted
Ok, temos acesso garantido com especicado pela linha 1 do hosts.allow (a primeira linha
que confere usada). Agora tcpdmatch in.ngerd 192.168.1.29:
Captulo 4. Rede 66
client: address 192.168.1.29
server: process in.fingerd
matched: /etc/hosts.allow line 3
access: granted
O acesso foi permitido atravs da linha 3 do hosts.allow. Agora tcpdmatch in.ngerd
192.168.1.29:
client: address 192.168.1.30
server: process in.fingerd
matched: /etc/hosts.deny line 1
access: denied
O que aconteceu? como a linha 2 do hosts.allow permite o acesso a todos os compu-
tadores 192.168.1.* exceto 192.168.1.30, ela no bateu, ento o processamento partiu para o
hosts.deny que nega todos os servios para qualquer endereo. Agora um ltimo exemplo:
tcpdmatch in.talkd www.debian.org
client: address www.debian.org
server: process in.talkd
matched: /etc/hosts.allow line 2
access: granted
Ok, na linha 2 qualquer computador pode te chamar para conversar via talk na rede, mas
para o endereo DNS conferir com um IP especicado, o GNU/Linux faz a resoluo DNS,
convertendo o endereo para IP e vericando se ele possui acesso.
No lugar do endereo tambm pode ser usado a forma daemon@computador ou
cliente@computador para vericar respectivamente o acesso de daemons e cliente de de-
terminados computadores aos servios da rede.
Como pode ver o TCPD ajuda a aumentar a segurana do seu sistema, mas no cone nele
alm do uso em um sistema simples, necessrio o uso de um rewall verdadeiro para contro-
lar minuciosamente a segurana do seu sistema e dos pacotes que atravessam os protocolos,
roteamento e as interfaces de rede. Se este for o caso aprenda a trabalhar a fundo com rewalls
e implemente a segurana da sua rede da forma que melhor planejar.
4.8.4 Firewall
Dentre todos os mtodos de segurana, o Firewall o mais seguro. A funo do Firewall
bloquear determinados tipos de trfego de um endereo ou para uma porta local ou permitir
o acesso de determinados usurios mas bloquear outros, bloquear a falsicao de endereos,
redirecionar trfego da rede, ping da morte, etc.
A implementao de um bom rewall depender da experincia, conhecimentos de rede (pro-
tocolos, roteamento, interfaces, endereamento, masquerade, etc), da rede local, e sistema em
Captulo 4. Rede 67
geral do Administrador de redes, a segurana de sua rede e seus dados dependem da esco-
lha do prossional correto, que entenda a fundo o TCP/IP, roteamento, protocolos, servios e
outros assuntos ligados a rede.
Freqentemente tem se ouvido falar de empresas que tiveram seus sistemas invadidos, em
parte isto devido a escolha do sistema operacional indevido mas na maioria das vezes o
motivo a falta de investimento da empresa em polticas de segurana, que algumas simples-
mente consideram a segurana de seus dados e sigilo interno como uma despesa a mais.
Um bom rewall que recomendo o ipchains, Sinus e o TIS. Particularmente gosto muito
de usar o ipchains e o Sinus e possvel fazer coisas inimaginveis programando scripts
para interagirem com estes programas. . .
4.9 Outros arquivos de congurao relacionados com a rede
4.9.1 /etc/services
O arquivo /etc/services um banco de dados simples que associa um nome amigvel a
humanos a uma porta de servio amigvel a mquinas. um arquivo texto de formato muito
simples, cada linha representa um item no banco de dados. Cada item dividido em trs
campos separados por qualquer nmero de espaos em branco (tab ou espaos). Os campos
so:
nome porta/protocolo apelido # comentrio
name Uma palavra simples que representa o nome do servio sendo descrito.
porta/protocolo Este campo dividido em dois sub-campos.
porta - Um nmero que especica o nmero da porta em que o servio estar
disponvel. Muitos dos servios comuns tem designados um nmero de servio.
Estes esto descritos no RFC-1340.
protocolo - Este sub-campo pode ser ajustado para tcp ou udp. importante notar
que o item 18/tcp muito diferente do item 18/udp e que no existe razo tcnica
porque o mesmo servio precisa existir em ambos. Normalmente o senso comum
prevalece e que somente se um servio esta disponvel em ambos os protocolos tcp
e udp, voc precisar especicar ambos.
apelidos Outros nomes podem ser usados para se referir a entrada deste servio.
comentrio Qualquer texto aparecendo em uma linha aps um caracter # ignorado e tra-
tado como comentrio.
4.9.2 /etc/protocols
O arquivo /etc/protocols um banco de dados que mapeia nmeros de identicao de
protocolos novamente em nomes de protocolos. Isto usado por programadores para permiti-
los especicar protocolos por nomes em seus programas e tambm por alguns programas tal
Captulo 4. Rede 68
como tcpdump permitindo-os mostrar nomes ao invs de nmeros em sua sada. A sintaxe geral
deste arquivo :
nomeprotocolo nmero apelidos
4.10 Camadas de Rede
So organizaes do protocolo TCP/IP que visam organizar e simplicar seu padro e imple-
mentao pelos desenvolvedores.
Um padro TCP o conjunto de regras que devem ser seguidas para garantir a homoge-
neidade da comunicao entre diversos sistemas de diversos fabricantes (por exemplo,
Mac com Windows, Windows com Linux, etc.).
A implementao o cdigo escrito por cada desenvolvedor para integrao ao sistema
operacional seguindo as regras do padro para garantir a comunicao entre as mqui-
nas, portanto, a implementao do protocolo TCP varia de fabricante para fabricante.
Existem dois tipos de padres TCP: Darpa e OSI. O padro Darpa dividido em 4 camadas e
ainda o padro atualmente utilizado. O padro OSI mais recente, dividido em 7 camadas,
mas ainda no se tornou um padro como o Darpa.
Segue abaixo os padres e a descrio de cada uma das camadas:
Darpa Aplicao - www, ftp, dns, etc. Fazem interface com as aplicaes do sistema.
Transporte - Protocolo tcp e udp. Cuidam da parte de transporte dos dados do
sistema.
Rede - IP, icmp, igmp, arp. Cuida de levar o pacote para seu destino (rotas) e condi-
es de transmisso.
Interface de Rede - Ethernet, FDDI, Token Ring. Dene qual o mtodo que a
mensagem transmitida ser encapsulada para envio ao seu destino.
Apesar dos padres Darpa e OSI, o protocolo TCP/IP ocialmente independente destas ca-
madas.
4.11 RFCs de referncia sobre protocolos de rede
Como referncia de pesquisa, segue abaixo a listagem de nmeros de RFCs para protocolos de
rede mais utilizados:
IP http://www.rfc-editor.org/rfc/rfc791.txt
ICMP http://www.rfc-editor.org/rfc/rfc792.txt
TCP http://www.rfc-editor.org/rfc/rfc793.txt
UDP http://www.rfc-editor.org/rfc/rfc768.txt
69
Captulo 5
Conguraes especiais de Rede
Este captulo descreve alguns tipos de conguraes que podem ser feitas em rede utilizando
os recursos disponveis do Linux. Aqui no esto todas as aplicaes, pois o sistema bastante
exvel e o prprio time de desenvolvimento do kernel no demonstrou limitaes quanto as
formas de se construir uma rede :-)
5.1 IP Alias
Este recurso permite congurar uma interface de rede para responder por um ou mais IPs,
que no precisam pertencer a mesma faixa. Para usurios externos, a impresso que a rede
tem muitas mquinas, quando na realidade apenas uma responde por todos estes endereos
virtuais. Podemos citar algumas utilizaes teis deste recurso:
Simular uma rede com diversas mquinas
Construir virtual hosts baseados em IP
Denir endereamentos secundrios para ns de anlise e depurao de pacotes (princi-
palmente como armadilhas para trojans)
Colocao de servios com operao restritas a interfaces em funcionamento atravs de
faixas especcas usando as conguraes da interface virtual
Transio de IP de servidores de forma transparente
Entre muitas outras. A idia aqui mostrar a simplicidade de se congurar este recurso
e entender o processo, que bastante simples.
Para congurar o recurso de IP Alias necessrio apenas que a opo IP Aliasing Support seja
habilitada no kernel (como mdulo ou embutida). Em nosso exemplo abaixo, temos uma rede
com a interface eth0 congurada com o IP 192.168.1.1 (classe C privada) e queremos adicio-
nar uma interface virtual que atenda pelo IP 172.16.0.1 (classe B privada) e depois seguir os
seguintes passos:
1 Ative a interface de rede com ifconfig ou ifup (caso esteja usando a Debian).
2 Crie uma interface virtual usando o comando ifconfig eth0:0 172.16.0.1. Isto
criar uma nova interface chamada eth0:0 que passar a responder pelo IP 172.6.0.1.
permitido o uso de nomes para especicar a interface virtual, como: eth0:rede1,
eth0:rede2, eth0:escritrio.
Captulo 5. Conguraes especiais de Rede 70
3 Digite ifconfig para ver as conguraes de sua nova interface de rede. Use o ping
tambm para v-la: ping 172.16.0.1.
eth0 Encapsulamento do Link: Ethernet Endereo de HW 00:80:AE:B3:AA:AA
inet end.: 192.168.1.1 Bcast:192.168.1.255 Masc:255.255.255.0
UP BROADCASTRUNNING MULTICAST MTU:1500 Mtrica:1
RX packets:979 errors:0 dropped:0 overruns:0 frame:0
TX packets:1228 errors:0 dropped:0 overruns:0 carrier:0
colises:1 txqueuelen:100
RX bytes:71516 (69.8 Kb) TX bytes:1146031 (1.0 Mb)
IRQ:10 Endereo de E/S:0x300
eth0:0 Encapsulamento do Link: Ethernet Endereo de HW 00:80:AE:B3:AA:AA
inet end.: 192.168.1.10 Bcast:192.168.1.255 Masc:255.255.255.0
UP BROADCASTRUNNING MULTICAST MTU:1500 Mtrica:1
IRQ:10 Endereo de E/S:0x300
Note que o MACAddress da placa eth0 e eth0:0 so o mesmo, indicando que a mesma
interface atende ambos os IPs.
4 Se necessrio ajuste as rotas ou gateway como comando route (veja Congurando uma
rota no Linux on page 53).
Para desativar uma interface de rede virtual, utilize a sintaxe: ifconfig eth0:0 down ou
ifdown eth0:0 (caso esteja usando a Debian).
Se o teste com o ping no funcionar, verique se possui o suporte a IP Alias no kernel, se
o mdulo precisa ser carregado manualmente (caso seu kernel no esteja compilado com o
kmod) ou se existe um rewall restritivo bloqueando seu IP.
Na distribuio Debian a congurao de uma interface virtual pode ser feita de forma idn-
tica a interfaces estticas padro:
auto eth0
iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
auto eth0:0
iface eth0:0 inet static
address 172.16.0.1
netmask 255.255.0.0
network 172.16.0.1
broadcast 172.16.255.255
OBS1: Quando voc desativa uma interface fsica (eth0), todas as interfaces virtuais tambm
so desativadas.
OBS2: Caso utilize um rewall (principalmente com a poltica padro permissiva), esteja
atento as modicaes que precisa realizar para no comprometer a segurana de sua m-
Captulo 5. Conguraes especiais de Rede 71
quina. Caso tenha dados considerados seguros em sua mquina e esteja em dvida sobre as
implicaes de segurana do IP Alias em sua mquina, consulte seu administrador de redes.
OBS3: Note que somente os 4 primeiros caracteres sero mostrados na sada do ifconfig,
desta forma procure utilizar no mximo esta quantidade de caracteres para evitar problemas
durante uma futura administrao do servidor, no caso de esquecimento do nome completo
da interface virtual).
5.2 Bridge
Uma bridge uma interface de rede lgica composta por uma ou mais interfaces de rede fsica
operando em nvel 2 (enviando pacotes atravs de MAC adresses, veja Camadas de Rede on
page 68).
Sua operao transparente na rede, podendo ser usada como um switch/rewall, estao
de monitorao, etc. Aqui descreverei como montar uma bridge simples e uma aplicao de
rewall simples. As possibilidades so diversas e uma congurao bem feita pode detectar
ataques, protocolos desconhecidos at vrus complexos de rede.
5.2.1 Requerimentos para a Instalao
necessrio um dos seguintes requerimentos para se montar uma bridge:
Kernel com suporte a bridge ativado (na congurao de rede)
O pacote bridge-utils instalado.
patch bridge-nf se desejar usar o netlter com as interfaces de entrada e sada (como
antes de usar a bridge) ao invs de controlar o trfego apenas pela interface criada pela
bridge.
Ative a opo 802.1d Ethernet Bridging na seo Networking Options, recompile
e instale seu novo kernel. Caso tenha aplicado o patch bridge nf, aparecer uma sub opo
chamada netfilter (firewalling) support que permitir que o rewall trabalhe com
as interfaces fsicas ao invs de somente atravs da interface virtual criada pela bridge.
OBS: O patch bridge nf viola a RFC de bridges. Mesmo assim ela a nica opo em muitas
aplicaes, principalmente quando se deseja controlar o trfego que atravessam as interfaces.
Aps isto instale o pacote bridge-utils, ele possui os utilitrios necessrios para ativar,
congurar e monitorar o funcionamento de sua bridge.
No necessria ativao do ip_forward para o funcionamento da bridge, uma vez que ela
funcionar como uma interface lgica que rene interfaces de rede fsicas.
5.2.2 Congurao da bridge
Nos exemplos abaixo, eu assumirei a utilizao do nome de dispositivo br0 para se referir a
bridge no sistema. Siga estes passos para congurar uma bridge em sistemas Debian:
Captulo 5. Conguraes especiais de Rede 72
Primeiro, desative os blocos no arquivo /etc/network/interfaces que conguram
as interfaces que sero usadas na bridge (por exemplo, eth0 e eth1). Elas podem ser
comentadas, removidas, ou voc poder comentar a linha auto eth0 e auto eth1 para que
ele no ative automaticamente estas interfaces com o ifup -a (executado durante a
inicializao). Desta forma, a inicializao destas interfaces poder somente ser feita
manualmente.
auto br0
iface br0 inet static
address 192.168.1.2
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
bridge_ports eth0 eth1
Note que a interface virtual da brigde (br0) deve ser congurada com parmetros v-
lidos de interfaces (assim com uma interface de rede padro). Note a adio da linha
bridge_ports que indica que interfaces de rede sero usadas para fazer a bridge. Caso
seja usado o parmetro all, todas as interfaces fsicas de rede sero usadas para fazer
bridge (excluindo a lo).
Execute o ifdown -a (para desativar as interfaces antigas.
Execute o ifup br0 para levantar as interface br0. Osistema poder demorar umpouco
para levantar a bridge (as vezes at 40 segundos) mas isto normal.
Pronto, voc ter uma bridge simples j congurada e funcionando em seu sistema! As inter-
faces fsicas sero conguradas com o IP 0.0.0.0 e estaro operando em modo promscuo.
5.2.3 Conguraes mais avanadas de bridge
A bridge permite ainda denir prioridade para utilizao de interfaces, alm de outras fun-
cionalidades que lhe permitem ajustar a performance da mquina de acordo com sua rede.
Um bom exemplo, quando voc deseja criar 2 bridges em uma mesma mquina envolvendo
interfaces de rede especcas, uma atendendo a rede 192.168.0.x e outra a rede 192.168.1.x:
auto br0
iface br0 inet static
address 192.168.0.2
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
bridge_ports eth0 eth1
auto br1
iface br1 inet static
address 192.168.1.2
network 192.168.1.0
Captulo 5. Conguraes especiais de Rede 73
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.0.1
bridge_ports eth2 eth3 eth4
No exemplo acima, as interfaces eth0 e eth1 fazem parte da bridge br0 e as demais (eth0,
eth1 e eth2 da bridge br1.
bridge_ports eth2 eth3
bridge_bridgeprio 16385
bridge_portprio eth1 100
bridge_fd 5
5.2.4 Congurao manual da bridge
Internamente, o que o ifup faz interpretar os parmetros no arquivo de congurao e exe-
cutar os comandos do pacote bridge-utils para ativar a interface da bridge. O utilitrio
responsvel por este processo o brctl. Ser documentado aqui como ativar uma bridge
atravs deste programa (que servir para fazer uma bridge em qualquer sistema Linux).
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1
ifconfig eth0 0.0.0.0
ifconfig eth1 0.0.0.0
ifconfig br0 192.168.0.4
O comando acima ativa uma bridge simples, como o primeiro exemplo. Tenha certeza que as
interfaces fsicas de rede esto desativadas antes de executar este comando.
Outros parmetros que podem ser usados com o brctl:
setbridgeprio [bridge [prioridade]] Dene a prioridade da bridge, o valor deve estar entre 0
e 65536 (16 bits). Valores menores denem uma prioridade maior.
setfd [bridge [tempo]] Ajusta o delay da bridge especicada em [tempo] segundos.
setmaxage [bridge [tempo]] Ajusta o tempo mximo de vida da bridge para [tempo] segun-
dos.
setportprio [bridge [interface] [prioridade]] Ajusta a prioridade da [interface] especicada na
[bridge]. O valor de prioridade deve estar entre 0 e 255 (8 bits). Quanto menor o valor
maior a prioridade. Isto til para otimizaes o volume de trfego em mquinas que
possuem diversas interfaces conguradas fazendo parte da bridge.
brctl addbr br0
brctl addif br0 eth0
Captulo 5. Conguraes especiais de Rede 74
brctl addif br0 eth1
brctl setportprio br0 eth0 50
brctl setportprio br0 eth1 80
brctl setfd br0 2
ifconfig eth0 0.0.0.0
ifconfig eth1 0.0.0.0
ifconfig br0 192.168.0.4
5.2.5 Usando o iptables para construir um rewall na mquina da bridge
A construo de um rewall em uma bridge no tem maiores segredos, basta referir-se a inter-
face lgica da bridge para construir suas regras (tendo em mente como uma bridge funciona e
como os pacotes atravessaro as interfaces).
Caso aplique o patch bridge nf, ser possvel referir-se as interfaces locais de rede e tambma da
bridge. Neste caso a interface da bridge ser identicada como interface IN ou OUT PHYSIN
e as interfaces fsicas como PHYSOUT:
Oct 22 09:19:24 router kernel: IN=br0 PHYSIN=eth0 OUT= MAC=ff:ff:ff:ff:ff:ff:00:d4:7d:ff:ff:ff:08:00 SRC=192.168.0.4 DST=1982.168.255.255 LEN=238 TOS=0x00 PREC=0x00 TTL=128 ID=23383 PROTO=UDP SPT=138 DPT=138 LEN=218
Mesmo que a bridge no necessite de ip_forward ativado para redirecionar os pacotes atravs
das interfaces, isto ser necessrio para habilitar o uso do rewall para controlar o trfego que
atravessa as interfaces.
5.2.6 Filtrando pacotes no IP na bridge
Para fazer esta tarefa, utilize a ferramenta ebtables disponvel em (http://users.
pandora.be/bart.de.schuymer/ebtables/).
5.3 Conectando dois computadores usando a porta paralela
O Linux bastante poderoso quando se trata de mtodos para se conectar duas ou mais m-
quinas em rede. Uma brincadeira que levada a srio que qualquer coisa que ligue uma
mquina a outra possui um controlador desenvolvido por algum para fazer uma rede :)
Usando o plip (Parallel Line Internet Protocol) permite criar uma interface de rede para a
porta paralela que utiliza todos os recursos de uma rede normal. Esta interface ser identi-
cada por plip?, onde ? o nmero da porta paralela, recm congurada.
A rede via porta paralela pode atingir at 1Mb/s e mesmo esta velocidade parecer aparente-
mente baixa apresenta diversas vantagens por sua escalabilidade e pode lhe salvar em muitas
situaes de problemas. Algumas caractersticas deste tipo de rede:
Pode ser congurado em qualquer mquina, pois sempre haver uma porta paralela.
Captulo 5. Conguraes especiais de Rede 75
til para fazer instalao de Linux em mquinas sem CD-ROM. No momento da ins-
talao preciso somente alternar para um console, executar os passos descritos aqui e
continuar com o processo de instalao normal :)
uma boa soluo quando as duas mquinas esto prximas
O custo para montagem desta rede extremamente baixo, bastando um cabo Lap Link
Paralelo que custa no mximo R$20,00 o de 1,5M ou se gosta de eletrnica, montar seu
prprio cabo usando o esquema que descrevo em Construindo um cabo LapLink Para-
lelo on the following page.
Voc poder fazer qualquer coisa que faria em uma rede normal (incluindo MASQUE-
RADING, roteamento entre redes, etc) sendo bastante interessante para testes prticos
dos exemplos do Foca Linux Avanado ;-)
Ficar admirado com as capacidade de rede existente no Linux e feliz por ter colocado
mais uma congurao em funcionamento :)
Agora, os contras da conexo via porta paralela:
A porta paralela no estar disponvel para ser usada em impressoras, conexo de cme-
ras.
O cabo no pode ter mais de 4,5 metros. Acima dessa comprimento, voc pode colocar
sua controladora em risco alm da perda de sinal. Por segurana, o tamanho recomend-
vel 2,5 metros.
Quando toda a banda do cabo utilizada, algumas CPUs se tornamextremamente lentas.
Para congurar uma conexo via cabo paralelo (plip) entre duas mquinas, vamos assumir que
a primeira mquina ter o IP 192.168.1.1 e a segunda mquina 192.168.1.2:
1 Conecte o cabo Lap Link em cada uma das portas de impressora. Caso saiba fazer co-
nexes eletrnicas ou goste do assunto, veja Construindo um cabo LapLink Paralelo on
the next page.
2 Verique se o seu kernel est compilado com o suporte a rede plip. Caso no esteja, a
congurao da interface plip falhar no passo do ifconfig.
3 Se o sistema executa algum daemon de impresso, interrompa antes de usar a porta
paralela. Alguns tipos de servios de impresso interferem no funcionamento do plip.
4 Congure o mdulo parport_pc passando o parmetro irq=7 (a IRQ que sua porta de
impressora utiliza). Esta congurao necessria pois em algumas mquinas isso faz
que o plip no funcione ou aconteam somente timeouts de transmisso.
5 Execute o comando ifconfig plip0 192.168.1.1. Verique se a interface foi ati-
vada com o comando ifconfig plip0.
6 Nesse ponto a interface est ativa, mas a nossa mquina no conhece nada sobre a
rede ou como alcanar a mquina 192.168.1.2. Como a conexo ponto a ponto, pre-
cisamos adicionar uma rota direta para esta mquina com o comando: route add
-host 192.168.1.2 plip0. Este comando diz para criar uma rota com o destino
192.168.1.2 usando a interface plip0.
7 Congure a outra mquina seguindo os passos acima, apenas invertendo os 2 endereos
IPs usados.
Pronto, agora verique se cada uma das mquinas se comunica coma outra usando o comando
ping 192.168.1.x. Se ocorrer um erro de timeout na transmisso, leia atentamente os pas-
sos acima e refaa a congurao em ambas as mquinas. Ainda no funcionando, verique se
existe um rewall bloqueando os pacotes da nova interface e se o cabo Lap Link est em bom
estado, o problema pode estar ai.
Captulo 5. Conguraes especiais de Rede 76
O nmero mximo de interfaces plip? est limitado ao nmero mximo suportado pela m-
quina. O padro em sistemas padro IBM/PC de 3 (plip0, plip1, plip2).
Para desativar uma rede plip, utilize o comando ifconfig plip0 down, remova o mdulo
plip (rmmod plip). Aps isto, a porta paralela ser liberada para uso por outros aplicativos.
5.3.1 Construindo um cabo LapLink Paralelo
Se voc tem experincia com eletrnica, poder construir seu prprio cabo LapLink Paralelo
para fazer os testes desta seo. Os materiais necessrios so:
2 Conectores DB25 macho
2 Capas para os conectores acima.
Fio para ligao dos conectores (15 ligaes). No meu caso utilizei 2 metros de um rolo
de cabo SCSI de 50 vias para fazer as ligaes, que uma boa alternativa para manter o
cabo bonito e os os juntos.
Este o conector macho DB25 (a tomada que liga no computador) visto por trs (minha namo-
rada j disse que no sou bom em arte ASCII). Bom, no custa tentar de novo:
-------------------------------
13 \ o o o o o o o o o o o o o / 1
25 \ o o o o o o o o o o o o / 14
-------------------------
A gura acima mostra a posio dos pinos como referncia para a soldagem dos terminais. A
tabela abaixo mostra a ligao dos os nos cabos das 2 pontas do cabo:
+---------+---------+
| Ponta 1 | Ponta 2 |
+---------+---------+
| 1 | 1 |
| 2 | 15 |
| 3 | 13 |
| 4 | 12 |
| 5 | 10 |
| 6 | 11 |
| 10 | 5 |
| 11 | 6 |
| 12 | 4 |
| 13 | 3 |
| 14 | 14 |
| 15 | 2 |
| 16 | 16 |
| 17 | 17 |
| 25 | 25 |
+---------+---------+
Captulo 5. Conguraes especiais de Rede 77
5.4 Conectando dois computadores usando a porta serial
Este mtodo permite criar uma rede ponto a ponto usando a porta serial da mquina, que
funcionar de forma semelhante a mostrada em Conectando dois computadores usando a
porta paralela on page 74.
Omtodo que irei descrever bastante simples e utiliza o slattach e o protocolo slip para co-
municao entre as duas mquinas, mas nada impede que seja usado o ppp para comunicao,
apenas acrescentar um pouco mais de complexibilidade para esta congurao para obter o
mesmo resultado.
Usando o mtodo descrito, ser criada uma interface chamada sl? (interface SLIP, onde ? o
nmero da interface recm congurada).
A rede via porta serial pode atingir em mdia 115.200kbps/s mas prtico quando no tem
outras opes para fazer uma rede ponto a ponto. Segue algumas caractersticas deste tipo de
rede:
Pode ser congurado em qualquer mquina, pois sempre haver uma porta serial dispo-
nvel.
possvel fazer a instalao de Linux em mquinas sem CD-ROM e acesso a rede, onde
no possvel gerar disquetes para instalar o resto dos pacotes necessrios, embora seja
limitado a 11Kb/s. No momento da instalao preciso somente alternar para um con-
sole, executar os passos descritos aqui e continuar com o processo de instalao normal
:)
uma boa soluo quando as duas mquinas at em ambientes prximos.
O custo para montagem desta rede extremamente baixo, bastando um cabo Lap Link
Serial custa em mdia R$20,00 o cabo de 4 metros. Se voc tambm um amante da
eletrnica, estou descrevendo o esquema de montagem do cabo em Construindo um
cabo LapLink Serial on the next page.
Voc poder fazer qualquer coisa que faria em uma rede normal (incluindo roteamento
entre redes, MASQUERADING, etc)
mais uma prova das capacidades de rede que possvel usando o Linux.
Agora, os contras da conexo via porta serial:
A porta serial no estar disponvel para ser usada para conexo de mouses, impressoras
seriais, dispositivos eletrnicos e inteligentes, etc.
O comprimento mximo do cabo de 15 metros. Acima dessa comprimento, voc pode
colocar sua controladora em risco alm da perda de sinal. Por segurana, o tamanho
mximo recomendvel 13 metros
Para congurar uma conexo via cabo serial entre duas mquinas, vamos assumir que a pri-
meira mquina ter o IP 192.168.2.1 e a segunda mquina 192.168.2.2:
1 Conecte o cabo Lap Link serial em cada uma das portas seriais.
2 Verique se o seu kernel est compilado com o suporte a rede slip e tambm com su-
porte a cslip (slip compactado, que melhora a taxa de transferncia dependendo dos
dados sendo transmitidos). Caso no tenha o suporte a slip, voc poder usar o ppp nas
duas pontas do link fazendo algumas adaptaes para usar a interface ppp?, como
simples no ser descrito neste guia :) (veja o manual do slattach)
3 Interrompa qualquer programa que esteja usando a porta serial.
Captulo 5. Conguraes especiais de Rede 78
4 Execute o comando slattach -s 115200 /dev/ttyS1 &. A funo do slattach
associar uma interface de rede a um dispositivo, neste caso associamos o dispositivo
/dev/ttyS1 (segunda porta serial) a interface sl0 (verique se a interface foi criada
usando o comando ifconfig sl0. A opo -p especica um protocolo alternativo
para o slattach, o padro o cslip. Outros tipos disponveis so slip, adaptive ppp e kiss
(usado em conexes de rdio AX.25). Recomendo ver a pgina de manual do slattach.
5 Nesse ponto a interface est ativa, mas a nossa mquina no conhece nada sobre a rede
ou como alcanar a mquina 192.168.2.2. Como a conexo ponto a ponto, precisa-
mos adicionar uma rota direta para esta mquina com o comando: route add -host
192.168.2.2 sl0. Este comando diz para criar uma rota como destino 192.168.2.2
usando a interface sl0.
6 Congure a outra mquina seguindo os passos acima, apenas invertendo os 2 endereos
IPs usados.
Pronto, agora verique se cada uma das mquinas se comunica coma outra usando o comando
ping 192.168.2.x. Se ocorrer um erro, verique os seguintes tens:
Se as velocidade e o protocolo especicado em ambos os lados do link esto iguais.
Se j existe um processo slattach rodando em segundo plano.
Se existe um rewall bloqueando os pacotes da nova interface
Se o cabo Lap Link serial est em bom estado.
O nmero mximo de interfaces sl? depende da quantidade de portas seriais da sua m-
quina. Caso utilize uma placa multi serial, o nmero mximo de conexes de rede se torna
grande (mas isto apenas para curiosidade, pois no compensa uma multi serial para ligar
uma quantidade grande de mquinas a baixa velocidade).
Para derrubar a conexo, basta derrubar a interface serial com o ifconfig sl0 down, dar
um kill no daemon do slattach e remover o mdulo slip e cslip com o comando rmmod.
Assim sua porta serial ser liberada e poder ser usada por outros aplicativos.
5.4.1 Construindo um cabo LapLink Serial
Se voc uma pessoa que sabe mexer com eletrnica, poder construir seu prprio cabo La-
pLink serial para fazer os testes desta seo. Os materiais necessrios so:
2 - Conectores seriais DB9 fmea
2 - Capas para os conectores acima.
Fios para ligao dos conectores. Uma forma que utilizei para montar este cabo foi apro-
veitar um carretel de cabo SCSI aproveitando 10 metros desando somente 9 dos 50 os
que acompanha o cabo (deixei um o extra no caso de algum outro se romper).
Ferro de solda e solda para as ligaes.
Concentrao e pacincia para a confeco correta dos cabos.
Este o conector fmea DB9 (tomada que liga na mquina) visto por trs (hora de mostrar
novamente meu talento com arte ASCII :))
--------------
1 \ o o o o o / 5
6 \ o o o o / 9
----------
Captulo 5. Conguraes especiais de Rede 79
A gura acima mostra a posio dos pinos como referncia para a soldagem dos terminais. A
tabela abaixo mostra a ligao dos os nos cabos das 2 pontas. Note que cada ponta pode ter a
opo da serial de 9 ou 25 pinos (ou as duas):
+--------+--------+---------+
|Ponta 1 | | Ponta 2|
+---+----+--------+----+----+
| 9 | 25 | | 25 | 9 |
+---+----+--------+----+----+
| 5 | 7 | | 7 | 5 |
| 3 | 2 | | 3 | 2 |
| 7 | 4 | | 5 | 8 |
| 6 | 6 | | 20 | 4 |
| 2 | 3 | | 2 | 3 |
| 8 | 5 | | 4 | 7 |
| 4 | 20 | | 6 | 6 |
+---+----+--------+----+----+
Captulo 5. Conguraes especiais de Rede 80
81
Captulo 6
Arquivos e daemons de Log
A atividade dos programas so registradas em arquivos localizados em /var/log . Estes ar-
quivos de registros so chamados de logs e contm a data, hora e a mensagem emitida pelo
programa (violaes do sistema, mensagens de erro, alerta e outros eventos) entre outros cam-
pos. Enm, muitos detalhes teis ao administrador tanto para acompanhar o funcionamento
do seu sistema, comportamento dos programas ou ajudar na soluo e preveno de proble-
mas.
Alguns programas como o Apache, exim, ircd e squid criam diversos arquivos de log e por
este motivo estes so organizados em sub-diretrios (a mesma tcnica usada nos arquivos de
congurao em /etc, conforme a padro FHS atual).
6.1 Formato do arquivo de log
Um arquivo de log normalmente composto pelos seguintes campos:
Data|Hora|Mquina|daemon|mensagem
O campo mquina o nome do computador que registrou a mensagem (a mquina pode atuar
como um servidor de logs registrando mensagens de diversos computadores em sua rede). O
campo daemon indica qual programa gravou a mensagem.
O uso dos utilitrios do console pode ajudar muito na pesquisa e monitorao dos logs, por
exemplo, para obter todas as mensagens do daemon kernel da estao de trabalho wrk1,
eliminando os campos wrk1 e kernel:
cat /var/log/*|grep wrk1|grep kernel|awk {print $1 $2 $3 $6 $7 $8 $9 $10 $11 $12}
Os parmetros $1, $2 do comando awk indica que campos sero listados, (omitimos $4 e
$5 que so respectivamente wrk1 e kernel). Um bom utilitrio para monitorao de logs
est documentado em logcheck on page 87.
Captulo 6. Arquivos e daemons de Log 82
6.2 Daemons de log do sistema
Os daemons de log do sistema registram as mensagens de sada do kernel (klogd) e sistema
(syslogd) nos arquivos em /var/log .
A classicao de qual arquivo em /var/log receber qual tipo de mensagem controlado
pelo arquivo de congurao /etc/syslog.conf atravs de facilidades e nveis (veja Arquivo
de congurao syslog.conf on the current page para detalhes).
6.2.1 syslogd
Este daemon controla o registro de logs do sistema.
syslogd [opes]
opes
-f Especica um arquivo de congurao alternativo ao /etc/syslog.conf.
-h Permite redirecionar mensagens recebidas a outros servidores de logs especicados.
-l [computadores ] Especica um ou mais computadores (separados por :) que devero ser
registrados somente com o nome de mquina ao invs do FQDN (nome completo, in-
cluindo domnio).
-m [minutos ] Intervalo em minutos que o syslog mostrar a mensagem --MARK--. O valor
padro padro 20 minutos, 0 desativa.
-n Evita que o processo caia automaticamente em background. Necessrio principalmente se
o syslogd for controlado pelo init.
-p [soquete ] Especica um soquete UNIX alternativo ao invs de usar o padro /dev/log.
-r Permite o recebimento de mensagens atravs da rede atravs da porta UDP 514. Esta opo
til para criar umservidor de logs centralizado na rede. Por padro, o servidor syslog
rejeitar conexes externas.
-s [domnios ] Especica a lista de domnios (separados por :) que devero ser retirados
antes de enviados ao log.
-a [soquetes ] Especica soquetes adicionais que sero monitorados. Esta opo ser necess-
ria se estiver usando um ambiente chroot. possvel usar at 19 soquetes adicionais
-d Ativa o modo de depurao do syslog. O syslog permanecer operando em primeiro
plano e mostrar as mensagens no terminal atual.
Na distribuio Debian, o daemon syslogd iniciado atravs do script /etc/init.d
/sysklogd.
Arquivo de congurao syslog.conf
O arquivo de congurao /etc/syslog.conf possui o seguinte formato:
facilidade.nvel destino
A facilidade e nvel so separadas por um . e contm parmetros que denem o que ser
registrado nos arquivos de log do sistema:
Captulo 6. Arquivos e daemons de Log 83
facilidade - usada para especicar que tipo de programa est enviando a mensa-
gem. Os seguintes nveis so permitidos (em ordem alfabtica):
auth - Mensagens de segurana/autorizao ( recomendvel usar authpriv ao in-
vs deste).
authpriv - Mensagens de segurana/autorizao (privativas).
cron - Daemons de agendamento (cron e at).
daemon - Outros daemons do sistema que no possuem facilidades especcas.
ftp - Daemon de ftp do sistema.
kern - Mensagens do kernel.
lpr - Subsistema de impresso.
local0 a local7 - Reservados para uso local.
mail - Subsistema de e-mail.
news - Subsistema de notcias da USENET.
security - Sinnimo para a facilidade auth (evite usa-la).
syslog - Mensagens internas geradas pelo syslogd.
user - Mensagens genricas de nvel do usurio.
uucp - Subsistema de UUCP.
* - Confere com todas as facilidades.
Mais de uma facilidade pode ser especicada na mesma linha do syslog.conf
separando-as com ,.
nvel - Especica a importncia da mensagem. Os seguintes nveis so permitidos (em
ordem de importncia invertida; da mais para a menos importante):
emerg - O sistema est inutilizvel.
alert - Uma ao deve ser tomada imediatamente para resolver o problema.
crit - Condies crticas.
err - Condies de erro.
warning - Condies de alerta.
notice - Condio normal, mas signicante.
info - Mensagens informativas.
debug - Mensagens de depurao.
* - Confere com todos os nveis.
none - Nenhuma prioridade.
Alm destes nveis os seguintes sinnimos esto disponveis:
error - Sinnimo para o nvel err.
panic - Sinnimo para o nvel emerg.
warn - Sinnimo para o nvel warning.
destino - O destino das mensagens pode ser um arquivo, um pipe (se iniciado por um
|), um computador remoto (se iniciado por uma @), determinados usurios do sis-
tema (especicando os logins separados por vrgula) ou para todos os usurios logados
via wall (usando *).
Todas as mensagens com o nvel especicado e superiores a esta especicadas no
syslog.conf sero registradas, de acordo com as opes usadas. Conjuntos de facilidades
e nveis podem ser agrupadas separando-as por ;.
OBS1: Sempre use TABS ao invs de espaos para separar os parmetros do syslog.conf.
Captulo 6. Arquivos e daemons de Log 84
OBS2: Algumas facilidades como security, emitem um beep de alerta no sistema e enviam
uma mensagem para o console, como forma de alerta ao administrador e usurios logados no
sistema.
Existem ainda 4 caracteres que garantes funes especiais: *, =, ! e -:
* - Todas as mensagens da facilidade especicada sero redirecionadas.
= - Somente o nvel especicado ser registrado.
! - Todos os nveis especicados e maiores NO sero registrados.
- - Pode ser usado para desativar o sync imediato do arquivo aps sua gravao.
Os caracteres especiais = e ! podem ser combinados em uma mesma regra.
Exemplo: Veja abaixo um exemplo de um arquivo /etc/syslog.conf padro de sistemas
Debian
#
# Primeiro alguns arquivos de log padres. Registrados por facilidade
#
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* /var/log/mail.log
user.* -/var/log/user.log
uucp.* -/var/log/uucp.log
#
# Registro de logs do sistema de mensagens. Divididos para facilitar
# a criao de scripts para manipular estes arquivos.
#
mail.info -/var/log/mail.info
mail.warn -/var/log/mail.warn
mail.err /var/log/mail.err
# Registro para o sistema de news INN
#
news.crit /var/log/news/news.crit
news.err /var/log/news/news.err
news.notice -/var/log/news/news.notice
#
# Alguns arquivos de registro "pega-tudo".
# So usadas "," para especificar mais de uma prioridade (por
# exemplo, "auth,authpriv.none") e ";" para especificar mais de uma
# facilidade.nvel que ser gravada naquele arquivo.
Captulo 6. Arquivos e daemons de Log 85
# Isto permite deixar as regras consideravelmente menores e mais legveis
#
*.=debug;\
auth,authpriv.none;\
news.none;mail.none -/var/log/debug
*.=info;*.=notice;*.=warn;\
auth,authpriv.none;\
cron,daemon.none;\
mail,news.none -/var/log/messages
#
# Emergncias so enviadas para qualquer um que estiver logado no sistema. Isto
# feito atravs da especificao do "*" como destino das mensagens e so
# enviadas atravs do comando wall.
#
*.emerg *
#
# Eu gosto de ter mensagens mostradas no console, mas somente em consoles que
# no utilizo.
#
#daemon,mail.*;\
# news.=crit;news.=err;news.=notice;\
# *.=debug;*.=info;\
# *.=notice;*.=warn /dev/tty8
# O pipe /dev/xconsole usado pelo utilitrio "xconsole". Para usa-lo,
# voc deve executar o "xconsole" com a opo "-file":
#
# $ xconsole -file /dev/xconsole [...]
#
# NOTA: ajuste as regras abaixo, ou ficar maluco se tiver um um site
# muito movimentado...
#
daemon.*;mail.*;\
news.crit;news.err;news.notice;\
*.=debug;*.=info;\
*.=notice;*.=warn |/dev/xconsole
# A linha baixo envia mensagens importantes para o console em que
# estamos trabalhando logados (principalmente para quem gosta de ter
# controle total sobre o que est acontecendo com seu sistema).
*.err;kern.debug;auth.notice;mail.crit /dev/console
Captulo 6. Arquivos e daemons de Log 86
6.2.2 klogd
Este daemon controla o registro de mensagens do kernel. Ele monitora as mensagens do kernel
e as envia para o daemon de monitoramento syslogd, por padro.
klogd [opes]
opes
-d Ativa o modo de depurao do daemon
-f [arquivo ] Envia as mensagens do kernel para o arquivo especicado ao invs de enviar ao
daemon do syslog
-i Envia um sinal para o daemon recarregar os smbolos de mdulos do kernel.
-I Envia um sinal para o daemon recarregar os smbolos estticos e de mdulos do kernel.
-n Evita a operao em segundo plano. til se iniciado pelo init
-k [arquivo ] Especica o arquivo que contm os smbolos do kernel. Exemplos deste arquivo
esto localizados em /boot/System.map-xx.xx.xx.
-o Faz comque o daemon leia e registre todas as mensagens encontradas nos buffers do kernel,
aps isto o daemon encerrado.
-p Ativa o modo parania. Isto far o klogd somente carregar detalhes sobre os mdulos
quando os caracteres Oops forem detectados nas mensagens do kernel. recomend-
vel ter sempre a ltima verso do klogd e evitar a utilizao desta opo em ambientes
crticos.
-s Fora a utilizao da interface de chamadas do sistema para comunicao com o kernel.
-x Esconde traduo EIP, assim ele no l o arquivo /boot/System.map-xx-xx-xx.
A especicao de um arquivo com a opo -k necessria se desejar que sejam mostradas a
tabela de smbolos ao invs de endereos numricos do kernel.
6.3 logger
Este comando permite enviar uma mensagem nos log do sistema. A mensagem enviada aos
logs via daemon syslogd ou via soquete do sistema, possvel especicar a prioridade, nvel,
um nome identicando o processo, etc. Seu uso muito til em shell scripts ou em outros
eventos do sistema.
logger [opes] [mensagem]
Onde:
mensagem Mensagem que ser enviada ao daemon syslog
opes
-i Registra o PID do processo
-s Envia a mensagem ambos para a sada padro (STDOUT) e syslog.
-f [arquivo ] Envia o contedo do arquivo especicado como mensagem ao syslog.
-t [nome ] Especica o nome do processo responsvel pelo log que ser exibido antes do PID
na mensagem do syslog.
-p [prioridade ] Especica a prioridade da mensagem do syslog, especicada como
facilidade.nvel. Veja os tipos de prioridade/nveis em Arquivo de congurao
syslog.conf on page 82. O valor padro prioridade.nvel user.notice
Captulo 6. Arquivos e daemons de Log 87
-u [soquete ] Envia a mensagem para o [soquete] especicado ao invs do syslog
Mais detalhes sobre o funcionamento sobre o daemon de log do sistema syslogd, pode ser
encontrado em syslogd on page 82
Exemplos: logger -i -t focalinux Teste teste teste, logger -i -f
/tmp/mensagem -p security.emerg
6.4 Programas teis para monitorao e gerenciamento de arquivos
de logs
6.4.1 logcheck
um programa usado para enviar um e-mail periodicamente ao administrador do sistema
(atravs do cron ou outro daemon com a mesma funo) alertando sobre os eventos que ocor-
reram desde a ltima execuo do programa. As mensagens do logcheck so tratadas por
arquivos em /etc/logcheck e organizadas em categorias antes de ser enviada por e-mail,
isto garante muita praticidade na interpretao dos eventos ocorridos no sistema.
As categorias so organizadas da mais importantes para a menos importante, e vo desde
Hacking em andamento (providncias devem ser tomadas imediatamente para resolver a
situao) at eventos anormais do sistema (mensagens de inicializao, mensagens dos dae-
mons do sistema, etc.).
O tipo de mensagem que ser includa/ignorada nos logs enviados podem ser personalizadas
pelo administrador do sistema atravs dos arquivos/diretrios dentro de /etc/logcheck.
Nomes de arquivos/diretrios contendo a palavra ignore so usados para armazenar ex-
presses regulares que NO sero enviadas pelo logcheck. permitido o uso de expresses
regulares perl/sed para especicar as mensagens nos arquivos de log.
6.4.2 logrotate
Usado para fazer backups dos logs atuais do sistema (programado via cron, ou outro daemon
com a mesma funo) e criando novos arquivos de logs que sero usados pelo sistema. Opcio-
nalmente os arquivos de logs antigos sero compactados para diminuir a utilizao de espao
em disco ou enviados por e-mail ao administrador. A rotao dos arquivos de logs proporci-
ona maior agilidade quando precisamos encontrar algum detalhe til (que seria mais difcil de
se achar em um arquivo de log de 10MB ou maior).
A rotao de logs feita de acordo com o tamanho do arquivo de logs especicado, mas a
opo -f pode ser usada para forar a rotao de logs. A opo -d fornece mais detalhes
sobre o que o logrotate est fazendo. Seu arquivo principal de congurao o /etc
/logrotate.conf. Um modelo deste tipo de arquivo o seguinte:
#### Estas opes afetam globalmente o funcionamento do logrotate
# roda os arquivos de log semanalmente
Captulo 6. Arquivos e daemons de Log 88
weekly
# mantm as ltimas 4 cpias de logs anteriores
rotate 4
# Erros de no existncia dos logs so enviados para o usurio root
mail root
# Cria novos arquivos de log (vazios) aps rodar os antigos
create
# Descomente isso se desejar seus arquivos de logs compactados. O parmetro
# delaycompress usado para que o primeiro log rodado seja mantido
# descompactado
compress
delaycompress
# Executam os scripts em prerotate e postrotate a cada vez que os logs
# forem rodados.
nosharedscripts
# Definimos um diretrio que poder conter definies individuais para
# diversos servios no sistema, eles podem ir neste arquivo mas
# diversas configuraes individuais podem deixar a interpretao
# deste arquivo confusa.
include /etc/logrotate.d
# Define opes especficas para a rotao mensal de /var/log/wtmp, o novo arquivo
# de log somente ser rodados caso tenha mais de 5MB (size 5M), ser criado
# com a permisso 0664 e pertencer ao usurio root grupo utmp
# (create 0664 root utmp) e ser mantida somente uma cpia do log anterior.
# (rotate 1)
/var/log/wtmp {
monthly
create 0664 root utmp
size 5M
rotate 1
}
# Define opes especficas para a rotao mensal de /var/log/btmp, se o arquivo
# no existir no ser necessrio gerar alertas (missinkok) que sero enviados
# ao administrador. O novo arquivo criado dever ter a permisso 0664 com o
# dono root e grupo utmp (create 0664 root utmp) e ser
# mantida somente uma cpia do log anterior.
/var/log/btmp {
Captulo 6. Arquivos e daemons de Log 89
missingok
monthly
create 0664 root utmp
rotate 1
}
# Define opes especficas para a rotao mensal de /var/log/lastlog, o novo
# arquivo ser criado com a permisso 0664 com o dono root e grupo
# utmp e ser mantida somente uma cpia do arquivo de log anterior
# (rotate 1).
/var/log/lastlog {
missingok
monthly
create 0664 root utmp
rotate 1
}
# Define opes especficas para a rotao diria de /var/log/messages, o
# arquivo ser rodado se atingir o tamanho de 1Mb, ento o
# novo arquivo ser criado com as mesmas permisses do arquivo anterior.
# O comando killall -1 syslogd ser executado aps a rotao
# para que o daemon syslogd funcione corretamente mas somente uma vez
# durante a rotao de vrios arquivos de logs (sharedscripts).
# Sero mantidas as 10 ltimas cpias do arquivo /var/log/messages
# compactadas (o parmetro compress foi especificado na seo global deste
# arquivo de configurao).
/var/log/messages {
daily
size 1M
sharedscripts
postrotate
/sbin/killall -1 syslogd
endscript
rotate 10
}
# Define opes especficas para a rotao mensal dos arquivos em /var/log/mirror/*,
# a falta desses arquivos no precisa ser notificada ao administrador (missingok),
# mesmo assim o parmetro "nomail" evitar isto de qualquer forma. Os logs
# rodados no sero compactados (nocompress) e sero mantidas as ltimas 7 cpias
# dos logs.
/var/log/mirror/* {
montly
nomail
missingok
nocompress
Captulo 6. Arquivos e daemons de Log 90
rotate 7
}
# logs especficos do sistema podem ser configurados aqui. As opes padres e
# definidas na seo global deste arquivo sero usadas para processar os
# arquivos de logs restantes.
Qualquer denio de parmetro especicado no arquivo de congurao, substituir as de-
nies anteriores. Quando o nmero mximo de logs mantidos pela opo rotate [num]
atingida, os logs eliminados sero enviados para o usurio especicado na opo mail [email].
A utilizao da diretiva nomail evita isso.
Quando for utilizar coringas para se referir a determinados arquivos dentro de um diretrio,
no utilize a sintaxe log-xxx-* porque isto foraria a recompactao de arquivos .gz j
feitas, gerando arquivos do tipo .gz.gz... e derrubando o processamento da sua mquina
gerada por umloop de compactao e enchendo as entradas de diretrio. Prera usar a sintaxe
log-xxx-*.log (ou outra, modicando a congurao do programa que gera os logs).
OBS: importante enviar um sinal HUP ao programa que grava para aquele arquivo de log
para que no ocorram problemas aps a rotao, isto feito usando o parmetro postrotate.
6.5 Congurando um servidor de logs
As mensagens das mquinas de sua rede podem ser centralizadas em uma nica mquina,
isto facilita o gerenciamento, anlise e soluo de problemas que ocorrem nas mquinas da
rede. Mais importante ainda que qualquer invaso a estao de trabalho no ser registrada
localmente (podendo ser apagada posteriormente pelo invasor, isso comum).
Congurando o servidor de logs Adicione a opo -r ao iniciar o daemon syslogd para acei-
tar logs enviados das mquinas clientes. Na distribuio Debian modique o arquivo
/etc/init.d/sysklogd colocando a opo -r na varivel SYSLOGD e reinicie o ser-
vio usando ./sysklogd restart. Adicionalmente podero ser usadas as opes -l
mquina ( umL minsculo no uma letra I) para registrar o nome FQDNda mquina
e -h para redirecionar conexes a outros servidores de logs (veja syslogd on page 82).
Congurando mquinas cliente Modique o arquivo /etc/syslogd.conf (veja Arquivo
de congurao syslog.conf on page 82 colocando o nome do computador seguido
de @ para redirecionar as mensagens dos logs:
auth,authpriv.* @servlog
*.*;auth,authpriv.none @servlog
cron.* @servlog
daemon.* @servlog
kern.* -/var/log/kern.log
kern.* @servlog
lpr.* @servlog
mail.* /var/log/mail.log
user.* -/var/log/user.log
Captulo 6. Arquivos e daemons de Log 91
user.* @servlog
uucp.* -/var/log/uucp.log
E reinicie o daemon syslogd da mquina cliente para re-ler o arquivo de congurao:
killall -HUP syslogd ou /etc/init.d/sysklogd restart.
OBS1: Mantenha o relgio do servidor de logs sempre atualizado (use o chrony ou outro
daemon de sincronismo NTP para automatizar esta tarefa).
OBS2: interessante compilar um daemon syslogd personalizado modicando o nome e
localizao do arquivo /etc/syslog.conf para enganar possveis invasores. Isto pode ser
modicado no arquivo syslogd.c na linha:
#define _PATH_LOGCONF "/etc/syslog.conf"
Use a imaginao para escolher um nome de arquivo e localizao que diculte a localizao
deste arquivo.
OBS3: Emuma grande rede, recomendvel congurar umcomputador dedicado como servi-
dor de log (desativando qualquer outro servio) e congurar o iptables para aceitar somente
o trfego indo para a porta UDP 514 (syslogd):
iptables -P INPUT DROP
iptables -A INPUT -p udp --dport 514 -j ACCEPT
Captulo 6. Arquivos e daemons de Log 92
93
Captulo 7
A distribuio Debian GNU/Linux
Este captulo traz algumas caractersticas sobre a distribuio Debian GNU/Linux, progra-
mas de congurao e particularidades. A maioria dos trechos aqui descritos, tambm se apli-
cam a distribuies baseadas na Debian, como a Corel Debian GNU/Linux e a LibraNet.
Voc deve estar se perguntando mas porque um captulo falando sobre a
distribuio Debian se eu uso outra?. Bem, a partir da verso Intermedirio
do Foca Linux existem algumas partes que so especicas de algumas distribuies Linux e
que no se aplicam a outras, como a localizao dos arquivos de congurao, nomes dos
programas de congurao e outros detalhes especcos e esta verso a baseada na Debian.
Pegue na pgina do Foca Linux (http://www.guiafoca.org) uma verso Intermedirio
/Avanado do guia especco para sua distribuio.
7.1 Como obter a Debian
A instalao da distribuio pode ser obtida atravs de Download de ftp://ftp.debian.
org//debian/dists/stable/main/disks-i386 (para Intel x86), seus programas di-
versos esto disponveis em ftp://ftp.debian.org//debian/dists/stable/main/
binary-i386.
A distribuio tambm pode ser obtida atravs de 3 (ou 4) CDs binrios (para a Debian 2.2).
7.2 Programas de congurao
dselect - Seleciona pacote para instalao/desinstalao
pppconfig - Congura o computador para se conectar a Internet facilmente. Aps isto,
use pon para se conectar a Internet, poff para se desconectar e plog para monitorar a
conexo.
Captulo 7. A distribuio Debian GNU/Linux 94
modconf - Permite selecionar os mdulos que sero automaticamente carregados na ini-
cializao do sistema. Se requerido pelos mdulos os parmetros I/O, IRQ e DMA tam-
bm podem ser especicados.
kbdconfig - Permite selecionar o tipo de teclado que utiliza
shadowconfig - Permite ativar ou desativar o suporte a senhas ocultas (shadow pas-
sword). Com as senhas ocultas ativadas, as senhas criptografadas dos usurios e grupos
so armazenadas nos arquivos shadow e gshadow respectivamente, que somente po-
dem ser acessadas pelo usurio root.
Isto aumenta consideravelmente a segurana do sistema pois os arquivos passwd e
group contm dados de usurios que devem ter permisso de leitura de todos os usu-
rios do sistema.
tasksel - Permite selecionar/modicar de forma fcil a instalao de pacotes em seu
sistema atravs da funo que sua mquina ter ou do seu perl de usurio.
tzconfig - Permite modicar/selecionar o fuso-horrio usado na distribuio.
Alm destes, a Debian 3.0 (Woody) conta com o sistema de congurao baseado no
dpkg-reconfigure que permite congurar de forma fcil e rpida aspecto de pacotes:
dpkg-reconfigure xserver-svga.
7.3 Arquivos de inicializao
Os arquivos de inicializao da distribuio Debian (e baseadas nela) esto localizados no
diretrio /etc/init.d. Cada daemon (programa residente na memria) ou congurao
especca possui um arquivo de onde pode ser ativado/desativado. Os sistemas residentes
neste diretrio no so ativados diretamente, mas simatravs de links existentes nos diretrios
/etc/rc?.d onde cada diretrio consiste em um nvel de execuo do sistema (veja tambm
a Nveis de Execuo on the facing page).
Por padro, voc pode usar as seguintes palavras chaves com os arquivos de congurao:
start - Inicia o daemon ou executa a congurao
stop - Interrompe a execuo de um daemon ou desfaz a congurao feita anterior-
mente (se possvel).
restart - Reinicia a execuo de um daemon. equivalente ao uso de stop e start
mas se aplicam somente a alguns daemons e conguraes, que permitem a interrupo
de execuo e reinicio.
Por exemplo, para recongurar as interfaces de rede do computador, podemos utilizar os se-
guintes comandos:
cd /etc/init.d
./networking restart
Captulo 7. A distribuio Debian GNU/Linux 95
7.4 Nveis de Execuo
Os Nveis de execuo (run levels) so diferentes modos de funcionamento do GNU/Linux com
programas, daemons e recursos especcos. Em geral, os sistemas GNU/Linux possuem sete
nveis de execuo numerados de 0 a 6. O daemon init o primeiro programa executado no
GNU/Linux (veja atravs do ps ax|grep init) e responsvel pela carga de todos daemons
de inicializao e congurao do sistema.
O nvel de execuo padro em uma distribuio GNU/Linux denido atravs do arquivo
de congurao do /etc/inittab atravs da linha
id:2:initdefault:
7.4.1 Entendendo o funcionamento dos nveis de execuo do sistema (runlevels)
Os nvel de execuo atual do sistema pode ser visualizado atravs do comando runlevel e
modicado atravs dos programas init ou telinit. Quando executado, o runlevel l o
arquivo /var/run/utmp e adicionalmente lista o nvel de execuo anterior ou a letra N em
seu lugar (caso ainda no tenha ocorrido a mudana do nvel de execuo do sistema).
Na Debian, os diretrios /etc/rc0.d a /etc/rc6.d contm os links simblicos para arqui-
vos em /etc/init.d que so acionados pelo nvel de execuo correspondente.
Por exemplo, o arquivo S10sysklogd em /etc/rc2.d, um link simblico para /etc
/init.d/sysklogd.
O que aconteceria se voc removesse o arquivo /etc/rc2.d/S10sysklogd? Simplesmente
o daemon sysklogd deixaria de ser executado no nvel de execuo 2 do sistema (que o
padro da Debian).
A Debian segue o seguinte padro para denir se um link simblico em /etc/rc[0-6].d
iniciar ou interromper a execuo de um servio em /etc/init.d, que o seguinte:
Se um link iniciado com a letra K (kill), quer dizer que o servio ser interrompido
naquele nvel de execuo. Oque ele faz executar o daemon em/etc/init.d seguido
de stop.
Se um link iniciado com a letra S (start), quer dizer que o servio ser iniciado naquele
nvel de execuo ( equivalente a executar o daemon seguido de start).
Primeiro os links com a letra K so executado e depois os S. A ordem que os links so executa-
dos dependem do valor numrico que acompanha o link, por exemplo, os seguintes arquivos
so executados em seqncia:
S10sysklogd
S12kerneld
S20inetd
S20linuxlogo
S20logoutd
S20lprng
Captulo 7. A distribuio Debian GNU/Linux 96
S89cron
S99xdm
Note que os arquivos que iniciam com o mesmo nmero (S20*) so executados alfabetica-
mente. O nvel de execuo do sistema pode ser modicado usando-se o comando init ou
telinit. Os seguinte nveis de execuo esto disponveis na Debian:
0 - Interrompe a execuo do sistema. todos os programas e daemons nalizados.
acionado pelo comando shutdown -h
1 - Modo monousurio, til para manuteno dos sistema.
2 - Modo multiusurio (padro da Debian)
3 - Modo multiusurio
4 - Modo multiusurio
5 - Modo multiusurio com login grco
6 - Reinicializao do sistema. Todos os programas e daemons so encerrados e o sis-
tema reiniciado. acionado pelo comando shutdown -r e o pressionamento de
CTRL+ALT+DEL.
Por exemplo, para listar o nvel de execuo atual do sistema digite: runlevel. O runlevel
dever listar algo como:
N 2
Agora para mudar para o nvel de execuo 1, digite: init 3. Agora conra a mudana
digitando: runlevel. Voc dever ver este resultado:
2 3
Isto quer dizer que o nvel de execuo anterior era o 2 e o atual o 3.
7.5 Rede no sistema Debian
O local que contm as conguraes de rede em um sistema Debian o /etc/network
/interfaces.
7.6 Bug tracking system
o sistema para relatar bugs e enviar sugestes sobre a distribuio. Para relatar um bug
primeiro voc deve saber ingls ( a lngua universal entendida pelos desenvolvedores) e ve-
ricar se o bug j foi relatado. O Debian Bug tracking system pode ser acessado pelo endereo:
http://bugs.debian.org/.
Para relatar uma falha/sugesto, envie um e-mail para: <submit@bugs.debian.org>, com
o assunto referente a falha/sugesto que deseja fazer e no corpo da mensagem:
Captulo 7. A distribuio Debian GNU/Linux 97
Package: pacote
Severity: normal/grave/wishlist
Version: verso do pacote
E o relato do problema
O bug ser encaminhado diretamente ao mantenedor do pacote que vericar o problema re-
latado. Os campos Package e Severity so obrigatrios para denir o nome do pacote (para
enderear o bug para a pessoa correta) e verso do pacote (esta falha pode ter sido relatada e
corrigida em uma nova verso).
7.7 Onde encontrar a Debian para Download?
No endereo ftp://ftp.debian.org/. Outros endereos podem ser obtidos na pgina
ocial da Debian (http://www.debian.org/) clicando no link Download e mirrors.
Adistribuio Woody (3.0) completa, com8710 pacotes ocupa emtorno de 3.0 GB, (equivalente
a 6 CDS de pacotes e mais 3 se quiser o cdigo fonte). Voc tambm pode optar por fazer a
instalao dos pacotes opcionais via Internet atravs do mtodo apt. Para detalhes veja o guia
do dselect ou envie uma mensagem para a lista de discusso <debian-user-portuguese@
lists.debian.org>
Captulo 7. A distribuio Debian GNU/Linux 98
99
Captulo 8
Personalizao do Sistema
Este captulo ensina como personalizar algumas caractersticas de seu sistema GNU/Linux.
8.1 Variveis de Ambientes
um mtodo simples e prtico que permite a especicao de opes de congurao de
programas sem precisar mexer com arquivos no disco ou opes. Algumas variveis do
GNU/Linux afetam o comportamento de todo o Sistema Operacional, como o idioma utili-
zado e o path . Variveis de ambientes so nomes que contm algum valor e tem a forma
Nome=Valor. As variveis de ambiente so individuais para cada usurio do sistema ou con-
soles virtuais e permanecem residentes na memria RAM at que o usurio saia do sistema
(logo-off) ou at que o sistema seja desligado.
As variveis de ambiente so visualizadas/criadas atravs do comando set ou echo $NOME
(apenas visualiza) e exportadas para o sistemas com o comando export NOME=VALOR.
Nos sistemas Debian, o local usado para especicar variveis de ambiente o /etc
/environment (veja Arquivo /etc/environment on page 102). Todas as variveis es-
pecicadas neste arquivos sero inicializadas e automaticamente exportadas na inicializao
do sistema.
Exemplo: Para criar uma varivel chamada TESTE que contenha o valor 123456 digite:
export TESTE=123456. Agora para ver o resultado digite: echo $TESTE ou set|grep
TESTE. Note que o $ que antecede o nome TESTE serve para identicar que se trata de uma
varivel e no de um arquivo comum.
8.2 Modicando o Idioma usado em seu sistema
O idioma usado em seu sistema pode ser modicado facilmente atravs das variveis de ambi-
ente. Atualmente a maioria dos programas esto sendo localizados. A localizao um recurso
que especica arquivos que contm as mensagens do programas em outros idiomas. Voc
Captulo 8. Personalizao do Sistema 100
pode usar o comando locale para listar as variveis de localizao do sistema e seus res-
pectivos valores. As principais variveis usadas para determinar qual idioma os programas
localizados utilizaro so:
LANG - Especica o idioma_PAIS local. Podem ser especicados mais de um idioma na
mesma varivel separando-os com :, desta forma caso o primeiro no esteja disponvel
para o programa o segundo ser vericado e assim por diante. A lngua Inglesa iden-
ticada pelo cdigo C e usada como padro caso nenhum locale seja especicado. Por
exemplo: export LANG=pt_BR, export LANG=pt_BR:pt_PT:C
LC_MESSAGES - Especica o idioma que sero mostradas as mensagens dos programas.
Seu formato o mesmo de LANG.
LC_ALL - Congura todas as variveis de localizao de uma s vez. Seu formato o
mesmo de LANG.
As mensagens de localizao esto localizadas em arquivos individuais de cada programa
em /usr/share/locale/[Idioma]/LC_MESSAGES . Elas so geradas atravs de arqui-
vos potfiles (arquivos com a extenso .po ou .pot e so gerados catlogos de mensa-
gens .mo. As variveis de ambiente podem ser especicadas no arquivo /etc/environment
desta forma as variveis sero carregadas toda a vez que seu sistema for iniciado. Voc tambm
pode especicar as variveis de localizao emseu arquivos de inicializao .bash_profile,
.bashrc ou .profile assim toda a vez que entrar no sistema, as variveis de localizao
personalizadas sero carregadas.
Siga as instrues a seguir de acordo com a verso de sua distribuio Debian:
Debian 3.0 Acrescente a linha pt_BR ISO-8859-1 no arquivo /etc/locale.gen, rode o
utilitrio locale-gen para gerar os locales e acrescente as variveis de localizao no
arquivo /etc/locales.def seguindo a forma:
export LANG=pt_BR
export LC_ALL=pt_BR
export LC_MESSAGES=pt_BR
Note que o arquivo /etc/environment tambm pode ser usado para tal tarefa, mas
o locales.def foi criado especialmente para lidar com variveis de localizao na
Debian 3.0.
Debian 2.2 Coloque estas variveis no arquivo /etc/environment (veja um exemplo deste
arquivo em Arquivo /etc/environment on page 102), assim toda a vez que seu sis-
tema for iniciado as variveis de localizao sero carregadas e exportadas para o sis-
tema, estando disponveis para todos os usurios.
Para as mensagens e programas do X-Window usarem em seu idioma local, preciso colocar
as variveis no arquivo ~/.xserverrc do diretrio home de cada usurio e dar a permisso
de execuo neste arquivo (chmod 755 .xserverrc). Lembre-se de incluir o caminho com-
pleto do arquivo executvel do seu gerenciador de janelas na ltima linha deste arquivo (sem
o & no nal), caso contrrio o Xserver ser nalizado logo aps ler este arquivo.
Abaixo exemplos de localizao com as explicaes:
export LANG=pt_BR - Usa o idioma pt_BR como lngua padro do sistema. Caso o
idioma Portugues do Brasil no esteja disponvel, C usado (Ingls).
export LANG=C - Usa o idioma Ingls como padro ( a mesma coisa de no especicar
LANG, pois o idioma Ingls usado como padro).
Captulo 8. Personalizao do Sistema 101
export LANG=pt_BR:pt_PT:es_ES:C - Usa o idioma Portugus do Brasil como pa-
dro, caso no esteja disponvel usa o Portugus de Portugal, se no estiver disponvel
usa o Espanhol e por m o Ingls.
recomendvel usar a varivel LC_ALL para especicar o idioma, desta forma todos os
outras variveis (LANG,MESSAGES,LC_MONETARY,LC_NUMERIC,LC_COLLATE,LC_CTYPE
eLC_TIME) sero conguradas automaticamente.
8.3 alias
Permite criar um apelido a um comando ou programa. Por exemplo, se voc gosta de digitar
(como eu) o comando ls --color=auto para ver uma listagem longa e colorida, voc pode
usar o comando alias para facilitar as coisas digitando: alias ls=ls --color=auto
(no se esquea da meia aspa para identicar o comando). Agora quando voc digitar ls, a
listagem ser mostrada com cores.
Se voc digitar ls -la, a opo -la ser adicionada no nal da linha de comando do alias:
ls --color=auto -la, e a listagem tambm ser mostrada em cores.
Se quiser utilizar isto toda vez que entrar no sistema, veja Arquivo .bash_profile on the
next page e Arquivo .bashrc on the following page.
8.4 Arquivo /etc/profile
Este arquivo contm comandos que so executados para todos os usurios do sistema no mo-
mento do login. Somente o usurio root pode ter permisso para modicar este arquivo.
Este arquivo lido antes do arquivo de congurao pessoal de cada usurio (.profile(root)
e .bash_profile).
Quando carregado atravs de um shell que requer login (nome e senha), o bash procura
estes arquivos em seqncia e executa os comandos contidos, caso existam:
1 /etc/profile
2 ~/.bash_profile
3 ~/.bash_login
4 ~/.profile
Ele ionterrompe a pesquisa assim que localiza o primeiro arquivo no diretrio do usurio
(usando a sequncia acima). Por exemplo, se voc tem o arquivo ~/.bash_login e ~
/.bash_profile em seu diretrio de usurio, ele processar o /etc/profile e aps
isto o ~/.bash_profile, mas nunca processar o ~/.bash_login (a menos que o ~
/.bash_profile seja apagado ou renomeado).
Caso o bash seja carregado atravs de um shell que no requer login (um terminal no X, por
exemplo), o seguinte arquivo executado: ~/.bashrc.
Observao: Nos sistemas Debian, o prole do usurio root est congurado no arquivo
/root/.profile. A razo disto porque se o bash for carregado atravs do comando sh,
Captulo 8. Personalizao do Sistema 102
ele far a inicializao clssica deste shell lendo primeiro o arquivo /etc/profile e aps o
~/.profile e ignorando o .bash_profile e .bashrc que so arquivos de congurao
usados somente pelo Bash. Exemplo, inserindo a linha mesg y no arquivo /etc/profile
permite que todos os usurios do sistema recebam pedidos de talk de outros usurios. Caso
um usurio no quiser receber pedidos de talk, basta somente adicionar a linha mesg n no
arquivo pessoal .bash_profile.
8.5 Arquivo .bash_profile
Este arquivo reside no diretrio pessoal de cada usurio. executado por shells que usam
autenticao (nome e senha). .bash_profile contm comandos que so executados para o
usurio no momento do login no sistema aps o /etc/profile. Note que este um arquivo
oculto pois tem um . no inicio do nome.
Por exemplo colocando a linha: alias ls=ls --colors=auto no .bash_profile,
cria um apelido para o comando ls -colors=auto usando ls, assim toda vez que voc
digitar ls ser mostrada a listagem colorida.
8.6 Arquivo .bashrc
Possui as mesmas caractersticas do .bash_profile mas executado por shells que no
requerem autenticao (como uma seo de terminal no X).
Os comandos deste arquivo so executados no momento que o usurio inicia um shell com as
caractersticas acima. Note que este um arquivo oculto pois tem um . no inicio do nome.
8.7 Arquivo .hushlogin
Deve ser colocado no diretrio pessoal do usurio. Este arquivo faz o bash pular as mensagens
do /etc/motd, nmero de e-mails, etc. Exibindo imediatamente o aviso de comando aps a
digitao da senha.
8.8 Arquivo /etc/environment
Armazena as variveis de ambiente que so exportadas para todo o sistema. Uma varivel
de ambiente controla o comportamento de um programa, registram detalhes teis durante a
seo do usurio no sistema, especicam o idioma das mensagens do sistema, etc.
Exemplo do contedo de um arquivo /etc/environment:
LANG=pt_BR
Captulo 8. Personalizao do Sistema 103
LC_ALL=pt_BR
LC_MESSAGES=pt_BR
8.9 Diretrio /etc/skel
Este diretrio contmos modelos de arquivos .bash_profile e .bashrc que sero copiados
para o diretrio pessoal dos usurios no momento que for criada uma conta no sistema. Desta
forma voc no precisar congurar estes arquivos separadamente para cada usurio.
Captulo 8. Personalizao do Sistema 104
105
Captulo 9
Impresso
Este capitulo descreve como imprimir em seu sistema GNU/Linux e as formas de impresso
via spool, rede, grca, etc.
Antes de seguir os passos descritos neste captulo, tenha certeza que seu kernel foi compilado
como suporte a impressora paralela ativado, caso contrrio at mesmo a impresso direta para
a porta de impressora falhar. .
9.1 Portas de impressora
Uma porta de impressora o local do sistema usado para se comunicar com a impressora. Em
sistemas GNU/Linux, a porta de impressora identicada como lp0,lp1,lp2 no diretrio
/dev, correspondendo respectivamente a LPT1, LPT2 e LPT3 no DOS e Windows. Recomendo
que o suporte a porta paralela esteja compilado como mdulo no kernel.
9.2 Imprimindo diretamente para a porta de impressora
Isto feito direcionando a sada ou o texto com > diretamente para a porta de impressora no
diretrio /dev.
Supondo que voc quer imprimir o texto contido do arquivo trabalho.txt e a porta de
impressora em seu sistema /dev/lp0, voc pode usar os seguintes comandos:
cat trabalho.txt >/dev/lp0 - Direciona a sada do comando cat para a impres-
sora.
cat <trabalho.txt >/dev/lp0. Faz a mesma coisa que o acima.
cat -n trabalho.txt >/dev/lp0 - Numera as linhas durante a impresso.
head -n 30 trabalho.txt >/dev/lp0 - Imprime as 30 linhas iniciais do arquivo.
cat trabalho.txt|tee /dev/lp0 - Mostra o contedo do cat na tela e envia tam-
bm para a impressora.
Os mtodos acima servem somente para imprimir em modo texto (letras, nmeros e caracteres
semi-grcos).
Captulo 9. Impresso 106
9.3 Imprimindo via spool
A impresso via spool tem por objetivo liberar logo o programa do servio de impresso dei-
xando um outro programa especico tomar conta. Este programa chamado de daemon de
impresso, normalmente o lpr ou o lprng (recomendado) em sistemas GNU/Linux.
Logo aps receber o arquivo que ser impresso, o programa de spool gera um arquivo tem-
porrio (normalmente localizado em /var/spool/lpd) que ser colocado em la para a im-
presso (umtrabalho ser impresso aps o outro, emseqncia). Oarquivo temporrio gerado
pelo programa de spool apagado logo aps concluir a impresso.
Antes de se imprimir qualquer coisa usando os daemons de impresso, preciso congurar
os parmetros de sua impressora no arquivo /etc/printcap. Um arquivo /etc/printcap
para uma impressora local padro se parece com o seguinte:
lp|Impressora compatvel com Linux
:lp=/dev/lp0
:sd=/var/spool/lpd/lp
:af=/var/log/lp-acct
:lf=/var/log/lp-errs
:pl#66
:pw#80
:pc#150
:mx#0
:sh
possvel tambm compartilhar a impressora para a impresso em sistemas remotos, isto ser
visto em uma seo separada neste guia.
Usando os exemplos anteriores da seo Imprimindo diretamente para uma porta
de impressora, vamos acelerar as coisas:
cat trabalho.txt |lpr - Direciona a sada do comando cat para o programa de
spool lpr.
cat <trabalho.txt |lpr. Faz a mesma coisa que o acima.
cat -n trabalho.txt |lpr - Numera as linhas durante a impresso.
head -n 30 trabalho.txt |lpr - Imprime as 30 linhas iniciais do arquivo.
A la de impresso pode ser controlada com os comandos:
lpq - Mostra os trabalhos de impresso atuais
lprm - Remove um trabalho de impresso
Ou usado o programa de administrao lpc para gerenciar a la de impresso (veja a pgina
de manual do lpc ou digite ? ao iniciar o programa para detalhes).
OBS1: Se a impressora no imprimir ou no for possvel compartilhar a porta de impres-
sora paralela com outros dispositivos (tal como o plip), verique se o mdulo parport_pc foi
carregado e com os valores de irq e I/O corretos (por exemplo, modprobe parport_pc
io=0x378 irq=7). Muitas vezes sua porta paralela pode funcionar sem problemas durante
a impresso, mas se ao utilizar plip ocorrerem erros, a causa pode ser essa. Na distribuio
Captulo 9. Impresso 107
Debian, use o programa modconf para congurar os valores permanentemente para o m-
dulo parport_pc.
OBS2: Se tiver mais de uma impressora instalada na mquina, ser necessrio especicar a
opo -P impressora para especicar qual impressora deseja imprimir/controlar.
9.4 Impresso em modo grco
A impresso em modo grco requer que conhea a marca e modelo de sua impressora e
os mtodos usados para imprimir seus documentos. Este guia abordar somente a segunda
recomendao :-)
9.4.1 Ghost Script
O mtodo mais usados pelos aplicativos do GNU/Linux para a impresso de grcos do Ghost
Script. O Ghost Script (chamado de gs) um interpretador do formato Pos Script (arquivos
.ps) e pode enviar o resultado de processamento tanto para a tela como impressora. Ele est
disponvel para diversas plataformas e sistema operacionais alm do GNU/Linux, inclusive o
DOS, Windows, OS/2, etc.
O formato .ps esta se tornando uma padronizao para a impresso de grcos em
GNU/Linux devido a boa qualidade da impresso, liberdade de congurao, gerenciamento
de impresso feito pelo gs e por ser um formato universal, compatveis com outros sistemas
operacionais.
Para imprimir um documento via Ghost Script, voc precisar do pacote gs, gsfonts (para a
distribuio Debian e distribuies baseadas, ou outros de acordo comsua distribuio Linux)
e suas dependncias. A distribuio Debian vem com vrios exemplos Pos Script no diret-
rio /usr/share/doc/gs/example que so teis para o aprendizado e testes com o Ghost
Script.
Hora da diverso:
Copie os arquivos tiger.ps.gz e alphabet.ps.gz do diretrio /usr/share/doc
/gs/examples (sistemas Debian) para /tmp e descompacte-os com o comando gzip
-d tiger.ps.gz e gzip -d alphabet.ps.gz. Se a sua distribuio no possui
arquivos de exemplo ou voc no encontra nenhuma referncia de onde se localizam,
mande um e-mail que os envio os 2 arquivos acima (so 32Kb).
O Ghost Script requer um monitor EGA, VGA ou superior para a visualizao dos seus
arquivos (no tenho certeza se ele funciona com monitores CGA ou Hrcules Monocro-
mtico) . Para visualizar os arquivos na tela digite:
gs tiger.ps
gs alphabet.ps
Para sair do Ghost Script pressione CTRL+C. Neste ponto voc deve ter visto um de-
senho de umtigre e (talvez) letras do alfabeto. Se o comando gs alphabet.ps mostrou
somente uma tela embranco, voc se esqueceu de instalar as fontes do Ghost Script (esto
localizadas no pacote gsfonts na distribuio Debian).
Captulo 9. Impresso 108
Para imprimir o arquivo alphabet.ps use o comando:
gs -q -dSAFER -dNOPAUSE -sDEVICE=epson -r240x72 -sPAPERSIZE=legal -sOutputFile=/dev/lp0
alphabet.ps
Oarquivo alphabet.ps deve ser impresso. Caso apareceremmensagens como Error:
/invalidfont in findfont no lugar das letras, voc se esqueceu de instalar ou con-
gurar as fontes do Ghost Script. Instale o pacote de fontes (gsfonts na Debian) ou
verique a documentao sobre como congurar as fontes. Cada uma das opes acima
descrevem o seguinte:
-q, -dQUIET - No mostra mensagens de inicializao do Ghost Script.
-dSAFER - uma opo para ambientes seguros, pois desativa a operao de mu-
dana de nome e deleo de arquivo e permite somente a abertura dos arquivos no
modo somente leitura.
-dNOPAUSE - Desativa a pausa no nal de cada pgina processada.
-sDEVICE=dispositivo - Dispositivo que receber a sada do Ghost Script.
Neste local pode ser especicada a marca o modelo de sua impressora ou um for-
mato de arquivo diferente (como pcxmono, bmp256) para que o arquivo .ps seja
convertido para o formato designado. Para detalhes sobre os dispositivos dispo-
nveis em seu Ghost Script, digite gs --help|less ou veja a pgina de manual.
Normalmente os nomes de impressoras e modelos so concatenados, por exemplo,
bjc600 para a impressora Canon BJC 600, epson para impressoras padro epson, st-
color para Epson Stylus color, etc. O Hardware-HOWTO contm referncias sobre
hardware suportados pelo GNU/Linux, tal como impressoras e sua leitura pode ser
til.
-r<ResH>x<ResV> - Dene a resoluo de impresso (em dpi) Horizontal e Verti-
cal. Os valores dependem de sua impressora.
-sPAPERSIZE=tamanho - Tamanho do papel. Podem ser usados a4, legal, letter,
etc. Veja a pgina de manual do gs para ver os outros tipos suportados e suas medi-
das.
-sOutputFile=dispositivo - Dispositivo que receber a sada de processa-
mento do gs. Voc pode especicar
*
arquivo.epson - Nome do arquivo que receber todo o resultado do pro-
cessamento. O arquivo.epson ter toda a impresso codicada no formato
entendido por impressoras epson e poder ser impresso com o comando cat
arquivo.epson >/dev/lp0. Uma curiosidade til: possvel imprimir este
arquivo em outros sistemas operacionais, tal como o DOS digitando: copy /b
arquivo.eps prn (lembre-se que o DOS tem um limite de 8 letras no nome
do arquivo e 3 na extenso. Voc deve estar compreendendo a exibilidade que
o GNU/Linux e suas ferramentas permitem, isso s o comeo.
*
impressao%d.epson - Nome do arquivo que receber o resultado do
processamento. Cada pgina ser gravada em arquivos separados como
impressao1.epson, impressao2.epson. Os arquivos podem ser impres-
sos usando os mesmos mtodos acima.
*
/dev/lp0 para uma impressora em /dev/lp0
*
- para redirecionar a sada de processamento do gs para a sada padro. til
para usar o gs com pipes |.
*
\|lpr - Envia a sada do Ghost Script para o daemon de impresso. O objetivo
Captulo 9. Impresso 109
deixar a impresso mais rpida.
Se voc curioso ou no esta satisfeito comas opes mostradas acima, veja a pgina
de manual do gs.
9.5 Magic Filter
O Magic Filter um ltro de impresso inteligente. Ele funciona acionado pelo spool de im-
presso (mais especicamente o arquivo /etc/printcap) e permite identicar e imprimir
arquivos de diversos tipos diretamente atravs do comando lpr arquivo.
um timo programa e ALTAMENTE RECOMENDADO se voc deseja apenas clicar no
boto imprimir e deixar os programas fazerem o resto :-) A inteno do programa justamente
automatizar os trabalhos de impresso e spool.
A maioria dos programas para ambiente grco X11, incluindo o Netscape, Word Perfect,
Gimp e Star Ofce trabalham nativamente com o magicfilter.
9.5.1 Instalao e congurao do Magic Filter
O Magic Filter encontrado no pacote magicfilter da distribuio Debian e baseadas.
Sua congurao pode ser feita com o programa magicfilterconfig que torna o processo
de congurao rpido e fcil para quem no conhece a sintaxe do arquivo /etc/printcap
ou no tem muitas exigncias sobre a congurao detalhada da impressora.
Aps instalar o magicfilter reinicie o daemon de impresso (se estiver usando a Debian,
entre no diretrio /etc/init.d e como usurio root digite ./lpr restart ou ./lprng
restart).
Para testar o funcionamento do magicfilter, digite lpr alphabet.ps e lpr tiger.ps,
os arquivos sero enviados para o magicfilter que identicar o arquivo como Pos Script,
executar o Ghost Script e retornar o resultado do processamento para o daemon de impres-
so. O resultado ser visto na impressora.
Se tiver problemas, verique se a congurao feita com o magicfilterconfig est correta.
Caso precise re-congurar o magicfilter, digite magicfilterconfig --force (lembre-
se que a opo force substitui qualquer congurao personalizada que tenha adicionado ao
arquivo /etc/printcap).
9.5.2 Outros detalhes tcnicos sobre o Magic Filter
Durante a congurao do magicfilter, a seguinte linha adicionada ao arquivo /etc
/printcap:
:if=/etc/magicfilter/epson9-filter
Captulo 9. Impresso 110
No tenho nenhum contrato de divulgao com a epson :-) estou usando esta marca de impres-
sora porque a mais tradicional e facilmente encontrada. A linha que comea com :if no
magicfilter identica um arquivo de ltro de impresso.
O arquivo /etc/magicfilter/epson9-filter criado usando o formato do magiclter,
e no difcil entender seu contedo e fazer algumas modicaes:
#! /usr/sbin/magicfilter
#
# Magic filter setup file for 9-pin Epson (or compatible) printers
#
# This file is in the public domain.
#
# This file has been automatically adapted to your system.
#
# wild guess: native control codes start with ESC
0 \033 cat
# PostScript
0 %! filter /usr/bin/gs -q -dSAFER -dNOPAUSE -r120x72 -sDEVICE=epson -sOutputFile=- - -c quit
0 \004%! filter /usr/bin/gs -q -dSAFER -dNOPAUSE -r120x72 -sDEVICE=epson -sOutputFile=- - -c quit
# PDF
0 %PDF fpipe /usr/bin/gs -q -dSAFER -dNOPAUSE -r120x72 -sDEVICE=epson -sOutputFile=- $FILE -c quit
# TeX DVI
0 \367\002 fpipe /usr/bin/dvips -X 120 -Y 72 -R -q -f
# compressd data
0 \037\235 pipe /bin/gzip -cdq
# packed, gzipped, frozen and SCO LZH data
0 \037\036 pipe /bin/gzip -cdq
0 \037\213 pipe /bin/gzip -cdq
0 \037\236 pipe /bin/gzip -cdq
0 \037\240 pipe /bin/gzip -cdq
0 BZh pipe /usr/bin/bzip2 -cdq
# troff documents
0 .\?\?\040 fpipe /usr/bin/grog -Tps $FILE
0 .\\\" fpipe /usr/bin/grog -Tps $FILE
0 \\\" fpipe /usr/bin/grog -Tps $FILE
0 .\\\" fpipe /usr/bin/grog -Tps $FILE
0 \\\" fpipe /usr/bin/grog -Tps $FILE
Captulo 9. Impresso 111
Voc deve ter notado que para cada tipo de arquivo existe o respectivo programa que execu-
tado, basta voc modicar as opes usadas nos programas neste arquivo (como faria na linha
de comando) para afetar o comportamento da impresso.
Por exemplo, modicando a resoluo para -r240x72 no processamento de arquivos Pos Script
(gs), a impressora passar a usar esta resoluo.
9.6 Impresso remota
Aqui ser explicado como fazer seu sistema Linux atuar como um servidor de impresso para
outras mquinas de sua rede.
9.6.1 Dando permisso para impreso remota via lpd/lprng
As mquinas autorizadas a usar a impressora local devero ter seus nomes includos no ar-
quivo /etc/hosts.lpd (para o daemon lpd padro) ou /etc/lprng/lpd.perms (para o
daemon lpd do pacote lprng).
O arquivo /etc/lprng/lpd.perms do lprng mais congurvel (e complexo), uma linha
como:
ACCEPT HOST=estacao1.dominio.org SERVICE=X,R,P,Q,M,C
aceitar os servios (SERVICE) de conexo (X), lpr (R), impresso de trabalhos (P), lpq (Q),
lprm (M) e lpc (C) da mquina estacao1.dominio.org. Veja os comentrios neste arquivo
para entender o funcionamento de suas opes ou a pgina de manual do lpd.perms.
9.6.2 Impresso via rlpr
O rlpr redireciona a impresso diretamente ao servidor de impresso. Sua vantagem que a
impresso feita diretamente sem a necessidade de congurar um arquivo /etc/printcap
e dispensar trabalhos adicionais de administrao. Ele envia o trabalho de impresso direta-
mente ao daemon lpd na na porta 515 (a mquina deve estar congurada para aceitar cone-
xes, veja Dando permisso para impreso remota via lpd/lprng on the current page).
Para enviar o arquivo listagem.txt para a impressora hp no servidor
impr.meudominio.org:
rlpr -Himpr.meudominio.org -Php listagem.txt
A opo -H especica o nome do servidor de impresso e -P o nome da impressora. Caso no
tenha permisses para imprimir na impressora remota, uma mensagem ser mostrada.
Captulo 9. Impresso 112
9.6.3 Impresso via printcap
Atravs deste mtodo, a impresso ser tratada atravs do spool remoto (lpd ou lprng) e
enviada ao servidor de impresso. Para que isto funcione, utilize a seguinte congurao no
seu arquivo /etc/printcap:
lp:Impressora remota:\
:sd=/var/spool/lpd/lp:\
:rm=impr.meudominio.org:\
:rp=hp:\
:sh:
Ento quando for executado o comando lpr na mquina remota, o lprng envi-
ar a impresso para a impressora hp (rp=hp) na mquina impr.meudominio.org
(rm=impr.meudominio.org).
Caso voc tenha a opo de imprimir tanto para uma impressora local quando para uma re-
mota, voc poder usar uma congurao como a seguinte:
lp|hp|Impressora Local:\
:lp=/dev/lp0:\
:sd=/var/spool/lpd/hp:\
:sh:\
:pw#80:\
:pl#66: \
:px#1440:\
:mx#0:\
:if=/etc/magicfilter/dj930c-filter:\
:af=/var/log/lp-acct:\
:lf=/var/log/lp-errs:
hp-r|Impressora Remota:\
:sd=/var/spool/lpd/lp:\
:rm=impr.meudominio.org:\
:rp=hp:\
:sh:
Para selecionar qual impressora ser usada, adicione a opo -Pimpressora na linha de comando
dos utilitrios lpr, lpq, lprm (por exemplo, lpr -Php-r relatorio.txt. Quando a op-
o -P especicada, a impressora lp ser usada por padro.
OBS Lembre-se de reiniciar seu daemon de impresso toda vez que modicar o arquivo /etc
/printcap.
113
Captulo 10
Firewall iptables
Este captulo documenta o funcionamento do rewall iptables que acompanha a srie do
kernel 2.4, opes usadas, e aponta alguns pontos fundamentais para iniciar a congurao e
construo de bons sistemas de rewall.
10.1 Introduo
O Firewall um programa que como objetivo proteger a mquina contra acessos indesejados,
trfego indesejado, proteger servios que estejam rodando na mquina e bloquear a passa-
gem de coisas que voc no deseja receber (como conexes vindas da Internet para sua segura
rede local, evitando acesso aos dados corporativos de uma empresa ou a seus dados pessoais).
No kernel do Linux 2.4, foi introduzido o rewall iptables (tambm chamado de netlter)
que substitui o ipchains dos kernels da srie 2.2. Este novo rewall tem como vantagem
ser muito estvel (assim como o ipchains e ipfwadm), convel, permitir muita exibili-
dade na programao de regras pelo administrador do sistema, mais opes disponveis ao
administrador para controle de trfego, controle independente do trfego da rede local/entre
redes/interfaces devido a nova organizao das etapas de roteamento de pacotes.
O iptables um rewall em nvel de pacotes e funciona baseado no endereo/porta de
origem/destino do pacote, prioridade, etc. Ele funciona atravs da comparao de regras para
saber se um pacote tem ou no permisso para passar. Em rewalls mais restritivos, o pacote
bloqueado e registrado para que o administrador do sistema tenha conhecimento sobre o que
est acontecendo em seu sistema.
Ele tambm pode ser usado para modicar e monitorar o trfego da rede, fazer NAT (mas-
querading, source nat, destination nat), redirecionamento de pacotes, marcao de pacotes,
modicar a prioridade de pacotes que chegam/saem do seu sistema, contagem de bytes, divi-
dir trfego entre mquinas, criar protees anti-spoong, contra syn ood, DoS, etc. O trfego
vindo de mquinas desconhecidas da rede pode tambm ser bloqueado/registrado atravs
do uso de simples regras. As possibilidades oferecidas pelos recursos de ltragem iptables
como todas as ferramentas UNIX maduras dependemde sua imaginao, pois ele garante uma
Captulo 10. Firewall iptables 114
grande exibilidade na manipulao das regras de acesso ao sistema, precisando apenas co-
nhecer quais interfaces o sistema possui, o que deseja bloquear, o que tem acesso garantido,
quais servios devem estar acessveis para cada rede, e iniciar a construo de seu rewall.
O iptables ainda tem a vantagem de ser modularizvel, funes podem ser adicionadas
ao rewall ampliando as possibilidades oferecidas. Usei por 2 anos o ipchains e armo que
este umrewall que tempossibilidades de gerenciar tanto a segurana emmquinas isoladas
como roteamento em grandes organizaes, onde a passagem de trfego entre redes deve ser
minuciosamente controlada.
Um rewall no funciona de forma automtica (instalando e esperar que ele faa as coisas
por voc), necessrio pelo menos conhecimentos bsicos de rede tcp/ip, roteamento e portas
para criar as regras que faro a segurana de seu sistema. A segurana do sistema depende do
controle das regras que sero criadas por voc, as falhas humanas so garantia de mais de 95%
de sucesso nas invases.
Enm o iptables um rewall que agradar tanto a pessoas que desejam uma segurana
bsica em seu sistema, quando administradores de grandes redes que querem ter um controle
minucioso sobre o trfego que passam entre suas interfaces de rede (controlando tudo o que
pode passar de uma rede a outra), controlar o uso de trfego, monitorao, etc.
10.1.1 Verso
assumido que esteja usando a verso 1.2.3 do iptables e baseadas nas opes do kernel
2.4.16 (sem o uso de mdulos experimentais). As explicaes contidas aqui podem funcionar
para verses posteriores, mas recomendvel que leia a documentao sobre modicaes no
programa (changelog) embusca de mudanas que alteremo sentido das explicaes fornecidas
aqui.
10.1.2 Um resumo da histria do iptables
O iptables um cdigo de rewall das verses 2.4 do kernel, que substituiu o ipchains
(presente nas sries 2.2 do kernel). Ele foi includo no kernel da srie 2.4 em meados de Ju-
nho/Julho de 1999.
A histria do desenvolvimento (desde o porte do ipfw do BSD para o Linux at o
iptables (que a quarta gerao de rewalls do kernel) est disponvel no documento,
Netfilter-howto.
10.1.3 Caractersticas do rewall iptables
Especicao de portas/endereo de origem/destino
Suporte a protocolos TCP/UDP/ICMP (incluindo tipos de mensagens icmp)
Suporte a interfaces de origem/destino de pacotes
Manipula servios de proxy na rede
Captulo 10. Firewall iptables 115
Tratamento de trfego dividido emchains (para melhor controle do trfego que entra/sai
da mquina e trfego redirecionado.
Permite um nmero ilimitado de regras por chain
Muito rpido, estvel e seguro
Possui mecanismos internos para rejeitar automaticamente pacotes duvidosos ou mal
formados.
Suporte a mdulos externos para expanso das funcionalidades padres oferecidas pelo
cdigo de rewall
Suporte completo a roteamento de pacotes, tratadas em uma rea diferente de trfegos
padres.
Suporte a especicao de tipo de servio para priorizar o trfego de determinados tipos
de pacotes.
Permite especicar excees para as regras ou parte das regras
Suporte a deteco de fragmentos
Permite enviar alertas personalizados ao syslog sobre o trfego aceito/bloqueado.
Redirecionamento de portas
Masquerading
Suporte a SNAT (modicao do endereo de origem das mquinas para um nico IP ou
faixa de IPs).
Suporte a DNAT (modicao do endereo de destino das mquinas para um nico IP
ou xa de IPs)
Contagem de pacotes que atravessaram uma interface/regra
Limitao de passagem de pacotes/conferncia de regra (muito til para criar protees
contra, syn ood, ping ood, DoS, etc).
10.1.4 Ficha tcnica
Pacote: iptables
iptables - Sistema de controle principal para protocolos ipv4
ip6tables - Sistema de controle principal para protocolos ipv6
iptables-save - Salva as regras atuais em um arquivo especicado como argumento.
Este utilitrio pode ser dispensado por um shell script contendo as regras executado na
inicializao da mquina.
iptables-restore - Restaura regras salvas pelo utilitrio iptables-save.
10.1.5 Requerimentos
necessrio que o seu kernel tenha sido compilado com suporte ao iptables (veja Habi-
litando o suporte ao iptables no kernel on page 119. O requerimento mnimo de memria
necessria para a execuo do iptables o mesmo do kernel 2.4 (4MB). Dependendo do tr-
fego que ser manipulado pela(s) interface(s) do rewall ele poder ser executado com folga
em uma mquina 386 SX com 4MB de RAM.
Como as conguraes residem no kernel no necessrio espao extra em disco rgido para
a execuo deste utilitrio.
Captulo 10. Firewall iptables 116
10.1.6 Arquivos de logs criados pelo iptables
Todo trfego que for registrado pelo iptables registrado por padro no arquivo /var/log
/kern.log.
10.1.7 Instalao
apt-get install iptables
Opacote iptables contmo utilitrio iptables (e ip6tables para redes ipv6) necessrios
para inserir suas regras no kernel. Se voc no sabe o que ipv6, no precisar se preocupar
com o utilitrio ip6tables por enquanto.
10.1.8 Enviando Correes/Contribuindo com o projeto
A pgina principal do projeto http://netfilter.filewatcher.org. Sugestes podem
ser enviadas para a lista de desenvolvimento ocial do iptables: http://lists.samba.
org.
10.1.9 O que aconteceu com o ipchains e ipfwadm?
O iptables faz parte da nova gerao de rewalls que acompanha o kernel 2.4, mas o su-
porte ao ipchains e ipfwadm ainda ser mantido atravs de mdulos de compatibilidade do
kernel at 2004. Seria uma grande falta de considerao retirar o suporte a estes rewalls do
kernel como forma de obrigar a aprenderem o iptables (mesmo o suporte sendo remo-
vido aps este perodo, acredito que criaro patches externos para futuros kernels que no
traro mais este suporte). Se precisa do suporte a estes rewalls antes de passar em denitivo
para o iptables leia Habilitando o suporte ao iptables no kernel on page 119.
Se voc um administrador que gosta de explorar todos os recursos de um rewall, usa todos
os recursos que ele oferece ou mantm uma complexa rede corporativa, tenho certeza que
gostar do iptables.
10.1.10 Tipos de rewalls
Existem basicamente dois tipos de rewalls:
nvel de aplicao - Este tipo de rewall analisam o contedo do pacote para to-
mar suas decises de ltragem. Firewalls deste tipo so mais intrusivos (pois analisam
o contedo de tudo que passa por ele) e permitem um controle relacionado com o con-
tedo do trfego. Alguns rewalls em nvel de aplicao combinam recursos bsicos
existentes em rewalls em nvel de pacotes combinando as funcionalidade de controle
de trfego/controle de acesso em uma s ferramenta. Servidores proxy, como o squid,
so um exemplo deste tipo de rewall.
Captulo 10. Firewall iptables 117
nvel de pacotes - Este tipo de rewall toma as decises baseadas nos parmetros
do pacote, como porta/endereo de origem/destino, estado da conexo, e outros par-
metros do pacote. Orewall ento pode negar o pacote (DROP) ou deixar o pacote passar
(ACCEPT). O iptables um excelente rewall que se encaixa nesta categoria. Firewall
em nvel de pacotes o assunto explicado nesta seo do guia mas ser apresentada uma
explicao breve sobre o funcionamento de anlise de strings do iptables.
Os dois tipos de rewalls podem ser usados em conjunto para fornecer uma camada dupla de
segurana no acesso as suas mquinas/mquinas clientes.
10.1.11 O que proteger?
Antes de iniciar a construo do rewall bom pensar nos seguintes pontos:
Quais servios precisa proteger. Servios que devem ter acesso garantido a usurios
externos e quais sero bloqueados a todas/determinadas mquinas. recomendvel
bloquear o acesso a todas portas menores que 1024 por executarem servios que rodam
com privilgio de usurio root, e autorizar somente o acesso as portas que realmente
deseja (congurao restritiva nesta faixa de portas).
Que tipo de conexes eu posso deixar passar e quais bloquear. Servios com autentica-
o emtexto plano e potencialmente inseguros como rlogin, telnet, ftp, NFS, DNS, LDAP,
SMTP RCP, X-Windowso servios que devemser ter acesso garantido somente para m-
quinas/redes que voc cona. Estes servios podem no ser s usados para tentativa de
acesso ao seu sistema, mas tambmcomo forma de atacar outras pessoas aproveitando-se
de problemas de congurao. A congurao do rewall ajuda a prevenir isso, mesmo
se um servio estiver mal congurado e tentando enviar seus pacotes para fora, ser im-
pedido. Da mesma forma se uma mquina Windows de sua rede for infectada por um
trojan no haver pnico: o rewall poder estar congurado para bloquear qualquer
tentativa de conexo vinda da internet (cracker) para as mquinas de sua rede. Para c-
pia de arquivos via rede insegura (como atravs da Internet), recomendado o uso de
servios que utilizam criptograa para login e transferncia de arquivos (veja Servidor
ssh on page 255) ou a congurao de uma VPN.
Que mquinas tero acesso livre e quais sero restritas.
Que servios devero ter prioridade no processamento.
Que mquinas/redes NUNCA devero ter acesso a certas/todas mquinas.
O volume de trfego que o servidor manipular. Atravs disso voc pode ter que balan-
cear o trfego entre outras mquinas, congurar protees contra DoS, syn ood, etc.
O que tem permisso de passar de uma rede para outra (em mquinas que atuam como
roteadores/gateways de uma rede interna).
Etc.
A anlise destes pontos pode determinar a complexidade do rewall, custos de implementa-
o, prazo de desenvolvimento e tempo de maturidade do cdigo para implementao. Exis-
tem muitos outros pontos que podem entrar na questo de desenvolvimento de um sistema
de rewall, eles dependem do tipo de rewall que est desenvolvendo e das polticas de segu-
rana de sua rede.
Captulo 10. Firewall iptables 118
10.1.12 O que so regras?
As regras so como comandos passados ao iptables para que ele realize uma determinada
ao (como bloquear ou deixar passar um pacote) de acordo com o endereo/porta de ori-
gem/destino, interface de origem/destino, etc. As regras so armazenadas dentro dos chains
e processadas na ordem que so inseridas.
As regras so armazenadas no kernel, o que signica que quando o computador for reiniciado
tudo o que fez ser perdido. Por este motivo elas devero ser gravadas em um arquivo para
serem carregadas a cada inicializao.
Um exemplo de regra: iptables -A INPUT -s 123.123.123.1 -j DROP.
10.1.13 O que so chains?
Os Chains so locais onde as regras do rewall denidas pelo usurio so armazenadas para
operao do rewall. Existem dois tipos de chains: os embutidos (como os chains INPUT,
OUTPUT e FORWARD) e os criados pelo usurio. Os nomes dos chains embutidos devem ser
especicados sempre em maisculas (note que os nomes dos chains so case-sensitive, ou seja,
o chain input completamente diferente de INPUT).
10.1.14 O que so tabelas?
Tabelas so os locais usados para armazenar os chains e conjunto de regras com uma deter-
minada caracterstica em comum. As tabelas podem ser referenciadas com a opo -t tabela e
existem 3 tabelas disponveis no iptables:
filter - Esta a tabela padro, contm 3 chains padres:
INPUT - Consultado para dados que chegam a mquina
OUTPUT - Consultado para dados que saem da mquina
FORWARD - Consultado para dados que so redirecionados para outra interface de
rede ou outra mquina.
Os chains INPUT e OUTPUT somente so atravessados por conexes indo/se originando
de localhost.
OBS: Para conexes locais, somente os chains INPUT e OUTPUT so consultados na
tabela lter.
nat - Usada para dados que gera outra conexo (masquerading, source nat, destination
nat, port forwarding, proxy transparente so alguns exemplos). Possui 3 chains padres:
PREROUTING - Consultado quando os pacotes precisam ser modicados logo que
chegam. o chain ideal para realizao de DNAT e redirecionamento de portas
(Fazendo DNAT on page 142).
OUTPUT - Consultado quando os pacotes gerados localmente precisam ser modi-
cados antes de serem roteados. Este chain somente consultado para conexes que
se originam de IPs de interfaces locais.
Captulo 10. Firewall iptables 119
POSTROUTING - Consultado quando os pacotes precisam ser modicados aps o
tratamento de roteamento. o chain ideal para realizao de SNAT e IP Masquera-
ding (Fazendo SNAT on page 140).
mangle - Utilizada para alteraes especiais de pacotes (como modicar o tipo de servio
(TOS) ou outros detalhes que sero explicados no decorrer do captulo. Possui 2 chains
padres:
INPUT - Consultado quando os pacotes precisam ser modicados antes de serem
enviados para o chain INPUT da tabela lter.
FORWARD - Consultado quando os pacotes precisam ser modicados antes de serem
enviados para o chain FORWARD da tabela lter.
PREROUTING - Consultado quando os pacotes precisam ser modicados antes de
ser enviados para o chain PREROUTING da tabela nat.
POSTROUTING - Consultado quando os pacotes precisam ser modicados antes de
serem enviados para o chain POSTROUTING da tabela nat.
OUTPUT - Consultado quando os pacotes precisam ser modicados antes de serem
enviados para o chain OUTPUT da tabela nat.
Veja A tabela mangle on page 143 para mais detalhes sobre a tabela mangle.
10.1.15 Habilitando o suporte ao iptables no kernel
Para usar toda a funcionalidade do rewall iptables, permitindo fazer o controle do que tem
ou no permisso de acessar sua mquina, fazer Masquerading/NAT em sua rede, etc., voc
precisar dos seguintes componentes compilados em seu kernel (os mdulos experimentais
fora ignorados intencionalmente):
*
* Network Options:
*
Network packet filtering (replaces ipchains) [Y/m/n/?]
Network packet filtering debugging [Y/m/n/?]
e na Subseo:
*
* IP: Netfilter Configuration
*
Connection tracking (required for masq/NAT) (CONFIG_IP_NF_CONNTRACK) [M/n/y/?]
FTP protocol support (CONFIG_IP_NF_FTP) [M/n/?]
IRC protocol support (CONFIG_IP_NF_IRC) [M/n/?]
IP tables support (required for filtering/masq/NAT) (CONFIG_IP_NF_IPTABLES) [Y/m/n/?]
limit match support (CONFIG_IP_NF_MATCH_LIMIT) [Y/m/n/?]
MAC address match support (CONFIG_IP_NF_MATCH_MAC) [M/n/y/?]
netfilter MARK match support (CONFIG_IP_NF_MATCH_MARK) [M/n/y/?]
Captulo 10. Firewall iptables 120
Multiple port match support (CONFIG_IP_NF_MATCH_MULTIPORT) [M/n/y/?]
TOS match support (CONFIG_IP_NF_MATCH_TOS) [M/n/y/?]
LENGTH match support (CONFIG_IP_NF_MATCH_LENGTH) [M/n/y/?]
TTL match support (CONFIG_IP_NF_TTL) [M/n/y/?]
tcpmss match support (CONFIG_IP_NF_MATCH_TCPMSS) [M/n/y/?]
Connection state match support (CONFIG_IP_NF_MATCH_STATE) [M/n/?]
Packet filtering (CONFIG_IP_NF_FILTER) [M/n/y/?]
REJECT target support (CONFIG_IP_NF_TARGET_REJECT) [M/n/?]
Full NAT (CONFIG_IP_NF_NAT) [M/n/?]
MASQUERADE target support (CONFIG_IP_NF_TARGET_MASQUERADE) [M/n/?]
REDIRECT target support (CONFIG_IP_NF_TARGET_REDIRECT) [M/n/?]
Packet mangling (CONFIG_IP_NF_MANGLE) [M/n/y/?]
TOS target support (CONFIG_IP_NF_TARGET_TOS) [M/n/?]
MARK target support (CONFIG_IP_NF_TARGET_MARK) [M/n/?]
LOG target support (CONFIG_IP_NF_TARGET_LOG) [M/n/y/?]
TCPMSS target support (CONFIG_IP_NF_TARGET_TCPMSS) [M/n/y/?]
Esta congurao permite que voc no tenha problemas para iniciar o uso e congurao do
seu rewall iptables, ela ativa os mdulos necessrios para utilizao de todos os recursos do
rewall iptables. Quando conhecer a funo de cada um dos parmetros acima (durante o
decorrer do texto), voc poder eliminar muitas das opes desnecessrias para seu estilo de
rewall ou continuar fazendo uso de todas ;-)
OBS1: A congurao acima leva em considerao que voc NO executar os cdi-
gos antigos de rewall ipfwadm e ipchains. Caso deseje utilizar o ipchains ou o
ipfwadm, ser preciso responder com M a questo IP tables support (required for l-
tering/masq/NAT) (CONFIG_IP_NF_IPTABLES). Ser necessrio carregar manualmente o
mdulo correspondente ao rewall que deseja utilizar (modprobe iptables_filter.o no
caso do iptables).
No execute mais de um tipo de rewall ao mesmo tempo!!!
OBS2: recomendvel ativar o daemon kmod para carga automtica de mdulos, caso con-
trrio ser necessrio compilar todas as partes necessrias embutidas no kernel, carregar os
mdulos necessrios manualmente ou pelo iptables (atravs da opo modprobe=mdulo).
10.1.16 Ligando sua rede interna a Internet
Se a sua inteno (como da maioria dos usurios) conectar sua rede interna a Internet de
forma rpida e simples, leia Fazendo IP masquerading (para os apressados) on page 139 ou
Fazendo SNAT on page 140. Um exemplo prtico de congurao de Masquerading deste
tipo encontrado em Conectando sua rede interna a Internet on page 160.
Aps congurar o masquerading, voc s precisar especicar o endereo IP da mquina mas-
querading (servidor) como Gateway da rede. No Windows 9x/NT/2000 isto feito no Pai-
nel de Controle/Rede/Propriedades de Tcp/IP. No Linux pode ser feito com route add
default gw IP_do_Servidor.
Captulo 10. Firewall iptables 121
10.2 Manipulando chains
O iptables trabalha com uma tabela de regras que analisada uma a uma at que a ltima
seja processada. Por padro, se uma regra tiver qualquer erro, uma mensagem ser mostrada
e ela descartada. O pacote no conferir e a ao nal (se ele vai ser aceito ou rejeitado) depen-
der das regras seguintes.
As opes passadas ao iptables usadas para manipular os chains so SEMPRE em mais-
culas. As seguintes operaes podem ser realizadas:
10.2.1 Adicionando regras - A
Como exemplo vamos criar uma regra que bloqueia o acesso a nosso prpria mquina
(127.0.0.1 - loopback). Primeiro daremos um ping para vericar seu funcionamento:
#ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=0.6 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=255 time=0.5 ms
--- 127.0.0.1 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.5/0.5/0.6 ms
Ok, a mquina responde, agora vamos incluir uma regra no chain INPUT (-A INPUT) que
bloqueie (-j DROP) qualquer acesso indo ao endereo 127.0.0.1 (-d 127.0.0.1):
iptables -t filter -A INPUT -d 127.0.0.1 -j DROP
Agora vericamos um novo ping:
#ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
--- 127.0.0.1 ping statistics ---
2 packets transmitted, 0 packets received, 100% packet loss
Desta vez a mquina 127.0.0.1 no respondeu, pois todos os pacotes com o destino 127.0.0.1 (-d
127.0.0.1) so rejeitados (-j DROP). A opo -A usada para adicionar novas regras no nal do
chain. Alm de -j DROP que serve para rejeitar os pacotes, podemos tambm usar -j ACCEPT
para aceitar pacotes. A opo -j chamada de alvo da regra ou somente alvo pois dene o
destino do pacote que atravessa a regra (veja Especicando um alvo on page 134). Bem vindo
a base de um sistema de rewall :-)
OBS1: - O acesso a interface loopback no deve ser de forma alguma bloqueado, pois muitos
aplicativos utilizam soquetes tcp para realizarem conexes, mesmo que voc no possua uma
rede interna.
Captulo 10. Firewall iptables 122
OBS2: - A tabela lter ser usada como padro caso nenhuma tabela seja especicada atravs
da opo -t.
10.2.2 Listando regras - L
A seguinte sintaxe usada para listar as regras criadas:
iptables [-t tabela] -L [chain] [opes]
Onde:
tabela uma das tabelas usadas pelo iptables. Se a tabela no for especicada, a tabela
lter ser usada como padro. Veja O que so tabelas? on page 118 para detalhes.
chain Um dos chains disponveis na tabela acima (veja O que so tabelas? on page 118) ou
criado pelo usurio (Criando um novo chain - N on page 124). Caso o chain no seja
especicado, todos os chains da tabela sero mostrados.
opes As seguintes opes podem ser usadas para listar o contedo de chains:
-v - Exibe mais detalhes sobre as regras criadas nos chains.
-n - Exibe endereos de mquinas/portas como nmeros ao invs de tentar a resolu-
o DNS e consulta ao /etc/services. A resoluo de nomes pode tomar muito
tempo dependendo da quantidade de regras que suas tabelas possueme velocidade
de sua conexo.
-x - Exibe nmeros exatos ao invs de nmeros redondos. Tambm mostra a faixa
de portas de uma regra de rewall.
--line-numbers - Exibe o nmero da posio da regra na primeira coluna da
listagem.
Para listar a regra criada anteriormente usamos o comando:
#iptables -t filter -L INPUT
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all -- anywhere localhost
O comando iptables -L INPUT -n tem o mesmo efeito, a diferena que so mostrados
nmeros ao invs de nomes:
#iptables -L INPUT -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all -- 0.0.0.0/0 127.0.0.1
#iptables -L INPUT -n --line-numbers
Captulo 10. Firewall iptables 123
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 DROP all -- 0.0.0.0/0 127.0.0.1
#iptables -L INPUT -n -v
Chain INPUT (policy ACCEPT 78 packets, 5820 bytes)
pkts bytes target prot opt in out source destination
2 194 DROP icmp -- * * 0.0.0.0/0 127.0.0.1
Os campos assim possuem o seguinte signicado:
Chain INPUT Nome do chain listado
(policy ACCEPT 78 packets, 5820 bytes) Policiamento padro do chain (veja Especicando o
policiamento padro de um chain - P on page 127).
pkts Quantidade de pacotes que atravessaram a regra (veja Zerando contador de bytes dos
chains - Z on page 127).
bytes Quantidade de bytes que atravessarama regra. Pode ser referenciado comK(Kilobytes),
M (Megabytes), G (Gigabytes).
target O alvo da regra, o destino do pacote. Pode ser ACCEPT, DROP ou outro chain. Veja
Especicando um alvo on page 134 para detalhes sobre a especicao de um alvo.
prot Protocolo especicado pela regra. Pode ser udp, tcp, icmp ou all. Veja Especicando um
protocolo on page 130 para detalhes.
opt Opes extras passadas a regra. Normalmente ! (veja Especicando uma exceo on
page 133) ou f (veja Especicando fragmentos on page 133).
in Interface de entrada (de onde os dados chegam). Veja Especicando a interface de ori-
gem/destino on page 129.
out Interface de sada (para onde os dados vo). Veja Especicando a interface de ori-
gem/destino on page 129.
source Endereo de origem. Veja Especicando umendereo de origem/destino on page 128.
destination Endereo de destino. Veja Especicando um endereo de origem/destino on
page 128.
outras opes Estas opes normalmente aparecem quando so usadas a opo -x:
dpt ou dpts - Especica a porta ou faixa de portas de destino.
reject-with icmp-port-unreachable - Signica que foi usado o alvo RE-
JECT naquela regra (veja Alvo REJECT on page 134).
10.2.3 Apagando uma regra - D
Para apagar um chain, existem duas alternativas:
1 Quando sabemos qual o nmero da regra no chain (listado com a opo -L) pode-
mos referenciar o nmero diretamente. Por exemplo, para apagar a regra criada acima:
iptables -t filter -D INPUT 1 Esta opo no boa quando temos um rewall
complexo com um grande nmero de regras por chains, neste caso a segunda opo a
mais apropriada.
2 Usamos a mesma sintaxe para criar a regra no chain, mas trocamos -A por -D: iptables
-t filter -D INPUT -d 127.0.0.1 -j DROP Ento a regra correspondentes no
Captulo 10. Firewall iptables 124
chain INPUT ser automaticamente apagada (conra listando o chain com a opo -L).
Caso o chain possua vrias regras semelhantes, somente a primeira ser apagada. OBS:
No possvel apagar os chains defaults do iptables (INPUT, OUTPUT. . . ).
10.2.4 Inserindo uma regra - I
Precisamos que o trfego vindo de 192.168.1.15 no seja rejeitado pelo nosso rewall. No
podemos adicionar uma nova regra (-A) pois esta seria includa no nal do chain e o trfego
seria rejeitado pela primeira regra (nunca atingindo a segunda). A soluo inserir a nova
regra antes da regra que bloqueia todo o trfego ao endereo 127.0.0.1 na posio 1:
iptables -t filter -I INPUT 1 -s 192.168.1.15 -d 127.0.0.1 -j ACCEPT
Aps este comando, temos a regra inserida na primeira posio do chain (repare no nmero
1 aps INPUT) e a antiga regra nmero 1 passa a ser a nmero 2. Desta forma a regra acima
ser consultada, se a mquina de origem for 192.168.1.15 ento o trfego estar garantido, caso
contrrio o trfego com o destino 127.0.0.1 ser bloqueado na regra seguinte.
10.2.5 Substituindo uma regra - R
Aps criar nossa regra, percebemos que a nossa inteno era somente bloquear os pings com
o destino 127.0.0.1 (pacotes ICMP) e no havia necessidade de bloquear todo o trfego da
mquina. Existem duas alternativas: apagar a regra e inserir uma nova no lugar ou modicar
diretamente a regra j criada sem afetar outras regras existentes e mantendo a sua ordem no
chain (isso muito importante). Use o seguinte comando:
iptables -R INPUT 2 -d 127.0.0.1 -p icmp -j DROP
O nmero 2 o nmero da regra que ser substituda no chain INPUT, e deve ser especicado.
O comando acima substituir a regra 2 do chain INPUT (-R INPUT 2) bloqueando (-j DROP)
qualquer pacote icmp (-p icmp) com o destino 127.0.0.1 (-d 127.0.0.1).
10.2.6 Criando um novo chain - N
Em rewalls organizados com um grande nmero de regras, interessante criar chains indivi-
duais para organizar regras de um mesmo tipo ou que tenha por objetivo analisar um trfego
de uma mesma categoria (interface, endereo de origem, destino, protocolo, etc) pois podem
consumir muitas linhas e tornar o gerenciamento do rewall confuso (e conseqentemente cau-
sar srios riscos de segurana). O tamanho mximo de um nome de chain de 31 caracteres e
podem conter tanto letras maisculas quanto minsculas.
iptables [-t tabela] [-N novochain]
Para criar o chain internet (que pode ser usado para agrupar as regras de internet) usamos o
seguinte comando:
iptables -t filter -N internet
Captulo 10. Firewall iptables 125
Para inserir regras no chain internet basta especica-lo aps a opo -A:
iptables -t filter -A internet -s 200.200.200.200 -j DROP
E ento criamos um pulo (-j) do chain INPUT para o chain internet:
iptables -t filter -A INPUT -j internet
OBS: O chain criando pelo usurio pode ter seu nome tanto em maisculas como minsculas.
Se uma mquina do endereo 200.200.200.200 tentar acessar sua mquina, o iptables con-
sultar as seguintes regras:
INPUT internet
---------------------------- -----------------------------
| Regra1: -s 192.168.1.15 | | Regra1: -s 200.200.200.200|
|--------------------------| |---------------------------|
| Regra2: -s 192.168.1.1 | | Regra2: -d 192.168.1.1 |
|--------------------------| -----------------------------
| Regra3: -j DROP |
----------------------------
O pacote tem o endereo de origem
200.200.200.200, ele passa pela
primeira e segunda regras do chain
INPUT, a terceira regra direciona
para o chain internet
_______________________________________
v / v
/-------------------------|-\ / /-------------------------------------|-\
| Regra1: -s 192.168.1.15 | | / | Regra1: -s 200.200.200.200 -j DROP \_____\
|-------------------------|-| / |---------------------------------------| /
| Regra2: -s 192.168.1.1 | | / | Regra2: -d 200.200.200.202 -j DROP |
|-------------------------|-|/ \---------------------------------------/
| Regra3: -j internet /|
|---------------------------| No chain internet, a primeira regra confere
| Regra4: -j DROP | com o endereo de origem 200.200.200.200 e
\---------------------------/ o pacote bloqueado.
Se uma mquina com o endereo de origem 200.200.200.201 tentar acessar a mquina,
ento as regra consultadas sero as seguintes:
O pacote tem o endereo de origem
Captulo 10. Firewall iptables 126
200.200.200.201, ele passa pela
primeira e segunda regras do chain
INPUT, a terceira regra direciona
para o chain internet ______________________________________
v / v
/-------------------------|-\ / /-------------------------------------|-\
| Regra1: -s 192.168.1.15 | | / | Regra1: -s 200.200.200.200 -j DROP | |
|-------------------------|-| / |-------------------------------------|-|
| Regra2: -s 192.168.1.1 | | / | Regra2: -s 200.200.200.202 -j DROP | |
|-------------------------|-|/ \-------------------------------------|-/
| Regra3: -j internet /| v
|---------------------------| /
| Regra4: -j DROP --+-------------------------------------------
\------------------------/-/ O pacote passa pelas regras 1 e 2 do chain
| internet, como ele no confere com nenhuma
v das 2 regras ele retorna ao chain INPUT e
Esta regra a nmero 4 analisado pela regra seguinte.
que diz para rejeitar o
pacote.
10.2.7 Renomeando um chain criado pelo usurio - E
Se por algummotivo precisar renomear umchain criado por voc na tabela lter, nat ou mangle,
isto poder ser feito usando a opo -E do iptables:
iptables -t filter -E chain-antigo novo-chain
Note que no possvel renomear os chains defaults do iptables.
10.2.8 Listando os nomes de todas as tabelas atuais
Use o comando cat /proc/net/ip_tables_names para fazer isto. interessante dar uma
olhada nos arquivos dentro do diretrio /proc/net, pois os arquivos existentes podem lhe
interessar para outras nalidades.
10.2.9 Limpando as regras de um chain - F
Para limpar todas as regras de um chain, use a seguinte sintaxe:
iptables [-t tabela] [-F chain]
Onde:
tabela Tabela que contm o chain que desejamos zerar.
Captulo 10. Firewall iptables 127
chain Chain que desejamos limpar. Caso um chain no seja especicado, todos os chains da
tabela sero limpos.
iptables -t filter -F INPUT
iptables -t filter -F
10.2.10 Apagando um chain criado pelo usurio - X
Para apagarmos um chain criado pelo usurio, usamos a seguinte sintaxe:
iptables [-t tabela] [-X chain]
Onde:
tabela Nome da tabela que contm o chain que desejamos excluir.
chain Nome do chain que desejamos apagar. Caso no seja especicado, todos os chains de-
nidos pelo usurio na tabela especicada sero excludos.
OBS: - Chains embutidos nas tabelas no podem ser apagados pelo usurio. Veja os nomes
destes chains em O que so tabelas? on page 118.
iptables -t filter -X internet
iptables -X
10.2.11 Zerando contador de bytes dos chains - Z
Este comando zera o campo pkts e bytes de uma regra do iptables. Estes campos podem ser
visualizados com o comando iptables -L -v. A seguinte sintaxe usada:
iptables [-t tabela] [-Z chain] [-L]
Onde:
tabela Nome da tabela que contm o chain que queremos zerar os contadores de bytes e pa-
cotes.
chain Chain que deve ter os contadores zerados. Caso no seja especicado, todos os chains da
tabela tero os contadores zerados. Note que as opes -Z e -L podem ser usadas juntas,
assim o chain ser listado e imediatamente zerado. Isto evita a passagem de pacotes
durante a listagem de um chain.
iptables -t filter -Z INPUT
10.2.12 Especicando o policiamento padro de um chain - P
O policiamento padro determina o que acontecer com um pacote quando ele chegar ao nal
das regras contidas em um chain. O policiamento padro do iptables ACCEPT mas isto
pode ser alterado com o comando:
Captulo 10. Firewall iptables 128
iptables [-t tabela] [-P chain] [ACCEPT/DROP]
Onde:
tabela Tabela que contm o chain que desejamos modicar o policiamento padro.
chain Dene o chain que ter o policiamento modicado. O chain deve ser especicado.
ACCEPT/DROP ACCEPT aceita os pacotes caso nenhuma regra do chain conferir (usado
em regras permissivas). DROP rejeita os pacotes caso nenhuma regra do chain confe-
rir (usado em regras restritivas).
O policiamento padro de um chain mostrado com o comando iptables -L:
# iptables -L INPUT
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP icmp -- anywhere localhost
No exemplo acima, o policiamento padro de INPUT ACCEPT (policy ACCEPT), o que sig-
nica que qualquer pacote que no seja rejeitado pela regra do chain, ser aceito. Para alterar
o policiamento padro deste chain usamos o comando:
iptables -t filter -P INPUT DROP
NOTA: Os policiamentos PERMISSIVOS (ACCEPT) normalmente so usados em conjunto
com regras restritivas no chain correspondentes (tudo bloqueado e o que sobrar liberado)
e policiamentos RESTRITIVOS (DROP) so usados em conjunto com regras permissivas no
chain correspondente (tudo liberado e o que sobrar bloqueado pelo policiamento padro).
10.3 Outras opes do iptables
10.3.1 Especicando um endereo de origem/destino
As opes -s (ou src/source)e -d (ou dst/destination) servem para especicar en-
dereos de origem e destino respectivamente. permitido usar um endereo IP completo
(como 192.168.1.1), um hostname (debian), um endereo fqdn (www.debian.org) ou um par
rede/mscara (como 200.200.200.0/255.255.255.0 ou 200.200.200.0/24).
Caso um endereo/mscara no sejam especicados, assumido 0/0 como padro (todos as
mquinas de todas as redes). A interpretao dos endereos de origem/destino dependem do
chain que est sendo especicado (como INPUT e OUTPUT por exemplo).
OBS: Caso seja especicado um endereo fqdn e este resolver mais de um endereo IP, sero
criadas vrias regras, cada uma se aplicando a este endereo IP especco. recomendvel
sempre que possvel a especicao de endereos IPs nas regras, pois alm de serem muito
rpidos (pois no precisar de resoluo DNS) so mais seguros para evitar que nosso rewall
seja enganado por um ataque de IP spoong.
Captulo 10. Firewall iptables 129
# Bloqueia o trfego vindo da rede 200.200.200.*:
iptables -A INPUT -s 200.200.200.0/24 -j DROP
# Bloqueia conexes com o destino 10.1.2.3:
iptables -A OUTPUT -d 10.1.2.3 -j DROP
# Bloqueia o trfego da mquina www.dominio.teste.org a rede 210.21.1.3
# nossa mquina possui o endereo 210.21.1.3
iptables -A INPUT -s www.dominio.teste.org -d 210.21.1.3 -j DROP
10.3.2 Especicando a interface de origem/destino
As opes -i (ou in-interface) e -o (ou out-interface) especicam as interfaces de ori-
gem/destino de pacotes. Nem todos as chains aceitam as interfaces de origem/destino simul-
taneamente, a interface de entrada (-i) nunca poder ser especicada em um chain OUTPUT
e a interface de sada (-o) nunca poder ser especicada em um chain INPUT. Abaixo uma
rpida referncia:
+---------------------+--------------------------------+
TABELA | CHAIN | INTERFACE |
| +----------------+---------------+
| | ENTRADA (-i) | SADA (-o) |
+---------+---------------------+----------------+---------------+
| | INPUT | SIM | NO |
| filter | OUTPUT | NO | SIM |
| | FORWARD | SIM | SIM |
+---------+---------------------+----------------+---------------+
| | PREROUTING | SIM | NO |
| nat | OUTPUT | NO | SIM |
| | POSTROUTING | NO | SIM |
+---------+---------------------+----------------+---------------+
| | PREROUTING | SIM | NO |
| mangle | | | |
| | OUTPUT | NO | SIM |
+---------+---------------------+----------------+---------------+
O caminho do pacote na interface ser determinado pelo tipo da interface e pela posio dos
chains nas etapas de seu roteamento. O chain OUTPUT da tabela lter somente poder conter
a interface de sada (veja a tabela acima). O chain FORWARD da tabela lter o nico que
aceita a especicao de ambas as interfaces, este um timo chain para controlar o trfego
que passa entre interfaces do rewall.
Por exemplo para bloquear o acesso do trfego de qualquer mquina com o endereo
200.123.123.10 vinda da interface ppp0 (uma placa de fax-modem):
Captulo 10. Firewall iptables 130
iptables -A INPUT -s 200.123.123.10 -i ppp0 -j DROP
A mesma regra pode ser especicada como
iptables -A INPUT -s 200.123.123.10 -i ppp+ -j DROP
O sinal de + funciona como um coringa, assim a regra ter efeito em qualquer interface de
ppp0 a ppp9. As interfaces ativas no momento podem ser listadas com o comando ifconfig,
mas permitido especicar uma regra que faz referncia a uma interface que ainda no existe,
isto interessante para conexes intermitentes como o PPP. Para bloquear qualquer trfego
local para a Internet:
iptables -A OUTPUT -o ppp+ -j DROP
Para bloquear a passagem de trfego da interface ppp0 para a interface eth1 (de uma de nossas
redes internas):
iptables -A FORWARD -i ppp0 -o eth1 -j DROP
10.3.3 Especicando um protocolo
A opo -p (ou protocol) usada para especicar protocolos no iptables. Podem ser espe-
cicados os protocolos tcp, udp e icmp. Por exemplo, para rejeitar todos os pacotes UDP vindos
de 200.200.200.200:
iptables -A INPUT -s 200.200.200.200 -p udp -j DROP
OBS1: Tanto faz especicar os nomes de protocolos em maisculas ou minsculas.
Especicando portas de origem/destino
As portas de origem/destino devemser especicadas aps o protocolo e podemser precedidas
por uma das seguintes opes:
--source-port ou --sport - Especica uma porta ou faixa de portas de origem.
--destination-port ou --dport - Especica uma porta ou faixa de portas de des-
tino.
Uma faixa de portas pode ser especicada atravs de PortaOrigem:PortaDestino:
# Bloqueia qualquer pacote indo para 200.200.200.200 na faixa de
# portas 0 a 1023
iptables -A OUTPUT -d 200.200.200.200 -p tcp --dport :1023 -j DROP
Captulo 10. Firewall iptables 131
Caso a PortaOrigem de uma faixa de portas no seja especicada, 0 assumida como padro,
caso a Porta Destino no seja especicada, 65535 assumida como padro. Caso precise es-
pecicar diversas regras que envolvam o tratamento de portas diferentes, recomendo da uma
olhada em Especicando mltiplas portas de origem/destino on page 147, antes de criar um
grande nmero de regras.
Especicando mensagens do protocolo ICMP
O protocolo ICMP no possui portas, mas possvel fazer um controle maior sobre o trfego
ICMP que entra/sai da rede atravs da especicao dos tipos de mensagens ICMP. Os tipos
de mensagens devem ser especicados com a opo icmp-type CdigoICMP logo aps a
especicao do protocolo icmp:
iptables -A INPUT -s 200.123.123.10 -p icmp --icmp-type time-exceeded -i ppp+ -j DROP
A regra acima rejeitar mensagens ICMP do tipo time-exceeded (tempo de requisio exce-
dido) que venham do endereo 200.123.123.10 atravs da interface ppp+.
Alguns tipos de mensagens ICMP so classicados por categoria (como o prprio time-
exceeded), caso a categoria time-exceeded seja especicada, todas as mensagens daquela
categoria (como ttl-zero-during-transit, ttl-zero-during-reassembly) conferiro na regra es-
pecicada.Os tipos de mensagens ICMP podem ser obtidos com o comando iptables -p
icmp -h:
echo-reply (pong)
destination-unreachable
network-unreachable
host-unreachable
protocol-unreachable
port-unreachable
fragmentation-needed
source-route-failed
network-unknown
host-unknown
network-prohibited
host-prohibited
TOS-network-unreachable
TOS-host-unreachable
communication-prohibited
host-precedence-violation
precedence-cutoff
source-quench
redirect
network-redirect
host-redirect
Captulo 10. Firewall iptables 132
TOS-network-redirect
TOS-host-redirect
echo-request (ping)
router-advertisement
router-solicitation
time-exceeded (ttl-exceeded)
ttl-zero-during-transit
ttl-zero-during-reassembly
parameter-problem
ip-header-bad
required-option-missing
timestamp-request
timestamp-reply
address-mask-request
address-mask-reply
OBS1: No bloqueie mensagens do tipo host-unreachable e source-quench, pois ter s-
rios problemas no controle de suas conexes. A primeira diz que o destino est inalcanavel
e a segunda que o host est sobrecarregado, assim os pacotes devem ser enviados mais lenta-
mente.
Especicando pacotes syn
Pacotes syn so usados para iniciaremuma conexo, o uso da opo syn serve para especicar
estes tipos de pacotes. Desta maneira possvel bloquear somente os pacotes que iniciam uma
conexo, sem afetar os pacotes restantes. Para que uma conexo ocorra necessrio que a
mquina obtenha a resposta a pacotes syn enviados, caso ele seja bloqueado a resposta nunca
ser retornada e a conexo no ser estabelecida.
iptables -A INPUT -p tcp --syn --dport 23 -i ppp+ -j DROP
A regra acima bloqueia (-j DROP) qualquer tentativa de conexo (syn) vindas da interface
ppp+ ao telnet (dport 23) da mquina local, conexes j efetuadas o so afetadas por esta
regra. A opo syn somente pode ser especicada para o protocolo tcp.
ATENO: - A situao de passagem de pacotes durante deve ser levada em conta durante
a inicializao do rewall, bloqueando a passagem de pacotes durante o processo de congu-
rao, criando regras que bloqueiam a passagem de pacotes (exceto para a interface loopback)
at que a congurao do rewall esteja completa, pode ser uma soluo eciente.
Outra alternativa segura congurar as regras de rewall antes das interfaces de rede se tor-
narem ativas (usando a opo pre-up comando_rewall no arquivo de congurao /etc
/network/interfaces em sistemas Debian.
Captulo 10. Firewall iptables 133
10.3.4 Especicando fragmentos
A opo -f (ou fragment) permite especicar regras que conram com fragmentos. Frag-
mentos so simplesmente um pacote maior dividido em pedaos para poder ser transmitido
via rede TCP/IP para remontagem do pacote pela mquina de destino.
Somente o primeiro fragmento possui detalhes de cabealho para ser processado, os segundos
e seguintes somente possuemalguns cabealhos necessrios para dar continuidade ao processo
de remontagem do pacote no destino.
Uma regra como
iptables -A INPUT -s 200.200.200.1 -f -j DROP
derrubar os fragmentos de 200.200.200.1 derrubar o segundo pacote e pacotes seguintes en-
viados por 200.200.200.1 at ns.
OBS1: Note que se o cabealho do pacote no tiver detalhes sucientes para checagem de
regras no iptables, a regra simplesmente no ira conferir.
OBS2: No preciso especicar a opo -f para conexes NAT, pois os pacotes so remon-
tados antes de entrarem no cdigo de ltragem.
OBS3: A opo -f tambm pode ser usada para evitar o ood por fragmentos (bomba de
fragmentos) que, dependendo da intensidade, podem at travar a mquina.
10.3.5 Especicando uma exceo
Muitos parmetros (como o endereo de origem/destino, protocolo, porta, mensagens ICMP,
fragmentos, etc) podem ser precedidos pelo sinal ! que signica exceo. Por exemplo:
iptables -t filter -A INPUT ! -s 200.200.200.10 -j DROP
Diz para rejeitar todos os pacotes EXCETO os que vem do endereo 200.200.200.10.
iptables -A INPUT -p tcp ! --syn -s 200.200.200.10 ! -i eth0 -j DROP
Diz para bloquear todos os pacotes EXCETO os que iniciam conexes (! syn), EXCETO para
pacotes vindos pela interface eth0 (! -i eth0).
iptables -A INPUT -s 200.200.200.10 ! -p tcp -j DROP
Bloqueia todos os pacotes vindos de 200.200.200.10, EXCETO os do protocolo tcp.
Captulo 10. Firewall iptables 134
10.3.6 Especicando um alvo
O alvo (-j) o destino que um pacote ter quando conferir com as condies de uma regra, um
alvo pode dizer para bloquear a passagem do pacote (-j DROP), aceitar a passagem do pacote
(-j ACCEPT), registrar o pacote no sistema de log (-j LOG), rejeitar o pacote (-j REJECT), redi-
recionar um pacote -j REDIRECT, retornar ao chain anterior sem completar o processamento
no chain atual (-j RETURN), passar para processamento de programas externos (-j QUEUE),
fazer source nat (-j SNAT), destination nat (-j DNAT), etc. Podem existir mais alvos, pois o
iptables modularizvel, e mdulos que acrescentam mais funes podem ser carregados
em adio aos j existentes no kernel.
Nos exemplos anteriores vimos o uso de diversos alvos como o DROP e o ACCEPT. Apenas
farei uma breve referncia sobre os alvos mais usados em operaes comuns dos chains. Os
alvos REDIRECT, SNAT e DNAT sero explicados em uma seo seguinte:
ACCEPT O pacote ACEITO e o processamento das regras daquele chains concludo. Pode
ser usado como alvo em todos os chains de todas as tabelas do iptables e tambm
pode ser especicado no policiamento padro das regras do rewall (veja Especicando
o policiamento padro de um chain - P on page 127).
DROP Rejeita o pacote e o processamento das regras daquele chain concludo. Pode ser
usado como alvo em todos os chains de todas as tabelas do iptables e tambm pode
ser especicado no policiamento padro das regras do rewall (veja Especicando o
policiamento padro de um chain - P on page 127).
REJECT Este um mdulo opcional que faz a mesma funo do alvo DROP com a diferena
de que uma mensagem ICMP do tipo icmp-port-unreachable (TCP/UDP) ou host-
unreachable (ICMP) retornada para a mquina de origem. Pode ser usado como alvo
somente nos chains da tabela (no como policiamento padro).
LOG Este mdulo envia uma mensagem ao syslog caso a regra conra, o processamento
continua normalmente para a prxima regra (o pacote no nem considerado ACEITO
ou REJEITADO).
RETURN Retorna o processamento do chain anterior sem processar o resto do chain atual.
QUEUE Passa o processamento para um programa a nvel de usurio.
Alvo REJECT
Para ser usado, o mdulo ipt_REJECT deve ser compilado no kernel ou como mdulo.
Este alvo rejeita o pacote (como o DROP) e envia uma mensagem ICMP do tipo icmp-port-
unreachable como padro para a mquina de origem.
um alvo interessante para bloqueio de portas TCP, pois em alguns casos da a impresso que
a mquina no dispe de um sistema de rewall (o alvo DROP causa uma parada de muito
tempo em alguns portscanners e tentativas de conexo de servios, revelando imediatamente
o uso de um sistema de rewall pela mquina). O alvo REJECT vem dos tempos do ipchains
e somente pode ser usado na tabela lter. Quando um pacote confere, ele rejeitado com a
mensagem ICMP do tipo port unreachable, possvel especicar outro tipo de mensagem
ICMP com a opo reject-with tipo_icmp.
Captulo 10. Firewall iptables 135
OBS: REJECT pode ser usado somente como alvo na tabela lter e no possvel especica-lo
como policiamento padro do chain lter (como acontecia no ipchains. Uma forma alter-
nativa inserir como ltima regra uma que pegue todos os pacotes restantes daquele chain e
tenha como alvo REJECT (como iptables -A INPUT -j REJECT), desta forma ele nunca
atingir o policiamento padro do chain.
# Rejeita pacotes vindos de 200.200.200.1 pela interface ppp0:
iptables -A INPUT -s 200.200.200.1 -i ppp+ -j REJECT
Especicando LOG como alvo
Este alvo usado para registrar a passagemde pacotes no syslog do sistema. umalvo muito
interessante para ser usado para regras que bloqueiam determinados trfegos no sistema (para
que o administrador tome conhecimento sobre tais tentativas), para regras de m de chain
(quando voc tem um grande conjunto de regras em um rewall restritivo e no sabe onde
suas regras esto sendo bloqueadas), para satisfazer sua curiosidade, etc.
# Para registrar o bloqueio de pacotes vindos de 200.200.200.1 pela interface ppp0
iptables -A INPUT -s 200.200.200.1 -i ppp+ -j LOG
# Para efetuar o bloqueio
iptables -A INPUT -s 200.200.200.1 -i ppp+ -j REJECT
Note que no exemplo anterior a regra que registra o pacote (-j LOG) deve aparecer antes da
regra que REJEITA (-j REJECT), caso contrrio a regra de LOG nunca funcionar. A regra que
REJEITA poderia tambm ser trocada por uma regra que ACEITA, caso queira registrar um
pacote que deve ser aceito (se o policiamento padro do seu rewall for restritivo (-P DROP).
A nica coisa que muda nas regras de log o alvo da regra, isto facilita a implementao de
grandes conjuntos de regras de rewall.
A regra acima mostrar a seguinte sada no syslog do sistema:
Aug 25 10:08:01 debian kernel: IN=ppp0 OUT= MAC=10:20:30:40:50:60:70:80:90:00:00:00:08:00 SRC=200.200.200.1 DST=200.210.10.10 LEN=61 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=1031 DPT=53 LEN=41
Os campos possuem o seguinte signicado:
Aug 25 10:08:01 Ms, dia e hora do registro do pacote.
debian Nome do computador que registrou o pacote.
kernel: Daemon que registrou a mensagem, no caso o iptables faz parte do prprio kernel.
IN=ppp0 Especica a interface de entrada (de onde o pacote veio).
OUT= Especica a interface de sada (para onde o pacote foi).
MAC=10:20:30:40:50:60:70:80:90:00:00:00:08:00 Endereo mac da interface de rede (pode ser
obtido com arp interface).
SRC=200.200.200.1 Endereo de origem do pacote.
DST=200.210.10.10 Endereo de destino do pacote.
SEQ=234234343 Nmero de seqncia da recepo. ativado com a opo log-tcp-sequence.
Captulo 10. Firewall iptables 136
LEN=61 Tamanho em bytes do pacote IP.
TOS=0x00 Prioridade do cabealho TOS (Tipo). Veja a seo Especicando o tipo de servio
on page 143 para mais detalhes.
PREC=0x00 Prioridade do cabealho TOS (Precedncia). Veja a seo Especicando o tipo de
servio on page 143 para mais detalhes.
TTL=64 Tempo de vida do pacote. No exemplo, 64 roteadores (hops).
ID=0 Identicao nica destes datagrama. Esta identicao tambm usada pelos fragmen-
tos seguintes deste pacote.
DF Opo Dont fragment (no fragmentar) do pacote. Usada quando o pacote pequeno
o bastante para no precisar ser fragmentado.
MF Opo More Fragments (mais fragmentos) esto para ser recebidos.
FRAG=100 Tamanho do fragmento especicado em pacotes de 8 bits. No exemplo acima, o
pacote tem o tamanho de 800 bytes (100*8).
PROTO=UDP Nome do protocolo. Pode ser TCP, UDP ou ICMP
SPT=1031 Porta de origem da requisio.
DPT=53 Porta de destino da requisio.
LEN=41 Tamanho do pacote.
O log acima mostra uma consulta DNS (porta destino 53) para nossa mquina (INPUT) de
200.200.200.1 para 200.210.10.10.
O problema que em um grande nmero de regras ser difcil saber qual regra conferiu
(pois teramos que analisar o endereo/porta origem/destino) e o destino do pacote (se ele
foi ACEITO ou BLOQUEADO) pois voc pode ter regras para ambas as situaes. Por este
motivo existem algumas opes teis que podemos usar com o alvo LOG:
log-prex descrio Permite especicar uma descrio para a regra do rewall de at 29
caracteres. Caso tiver espaos, devem ser usadas aspas.
log-level nvel Especica o nvel da mensagem no syslog.
log-tcp-options Registra campos do cabealho TCP nos logs do sistema.
log-ip-options Registra campos do cabealho IP nos logs do sistema
log-tcp-sequence Registra os nmeros de seqencia TCP. Evite ao mximo o uso desta op-
o, pois a seqencia de nmeros TCP pode ser a chave para um seqestro de seo ou
IP spoong em seu sistema caso algum usurio tenha acesso a estes logs. Caso utilize
tcp/ip em servidores pblicos, o uso desta opo ajudar a entender bem os ataques DoS
causados por syn-ood e porque ativar os SynCookies (veja Proteo contra syn ood
on page 146).
OBS1:Lembre-se que estas opes so referentes ao alvo LOG e devem ser usadas aps este,
caso contrrio voc ter um pouco de trabalho para analisar e consertar erros em suas regras
do rewall.
OBS2:Caso esteja usando o rewall em um servidor pblico, recomendo associar um limite a
regra de log, pois um ataque poderia causar um DoS enchendo sua partio. Leia mais sobre
isso em Limitando o nmero de vezes que a regra confere on page 145.
# Complementando o exemplo anterior:
# Para registrar o bloqueio de pacotes vindos de 200.200.200.1 pela interface ppp0
iptables -A INPUT -s 200.200.200.1 -i ppp+ -j LOG --log-prefix "FIREWALL: Derrubado "
Captulo 10. Firewall iptables 137
# Para efetuar o bloqueio
iptables -A INPUT -s 200.200.200.1 -i ppp+ -j REJECT
Retornar a seguinte mensagem no syslog:
Aug 25 10:08:01 debian kernel: FIREWALL: Derrubado IN=ppp0 OUT= MAC=10:20:30:40:50:60:70:80:90:00:00:00:08:00 SRC=200.200.200.1 DST=200.210.10.10 LEN=61 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=1031 DPT=53 LEN=41
Agora voc sabe o que aconteceu com o pacote (Rejeitado). A padronizao de mensagens de
rewall tambm importante para a criao de scripts de anlise que podero fazer a anlise
dos logs do seu rewall (para criao de estatsticas que podemservir como base para a criao
de novas regras de rewall ou eliminao de outras).
OBS: Se voc sente falta da funo -l do ipchains que combina o alvo e log na mesma regra
voc pode criar um alvo como o seguinte:
iptables -N log-drop
iptables -A log-drop -j LOG
iptables -A log-drop -j DROP
E usar log-drop como alvo em suas regras. Mesmo assim esta soluo limitada em re-
lao a -l do ipchains porque o iptables no inclui detalhes de qual chain bloqueou o
pacote/qual pacote foi bloqueado, assim necessrio a especicao da opo log-prex para
as mensagens se tornaremmais compreensveis. Esta limitao pode ser contornada utilizando
um rewall feito em linguagem shell script, desta forma voc ter um controle maior sobre o
seu programa usando funes e integrao com outros utilitrios.
Especicando RETURN como alvo
O alvo RETURN diz ao iptables interromper o processamento no chain atual e retornar o
processamento ao chain anterior. Ele til quando criamos um chain que faz um determinado
tratamento de pacotes, por exemplo bloquear conexes vindas da internet para portas baixas,
exceto para um endereo IP especco. Como segue:
1-) iptables -t filter -A INPUT -i ppp0 -j internet
2-) iptables -t filter -j ACCEPT
3-) iptables -t filter -N internet
4-) iptables -t filter -A internet -s www.debian.org -p tcp --dport 80 -j RETURN
5-) iptables -t filter -A internet -p tcp --dport 21 -j DROP
6-) iptables -t filter -A internet -p tcp --dport 23 -j DROP
7-) iptables -t filter -A internet -p tcp --dport 25 -j DROP
8-) iptables -t filter -A internet -p tcp --dport 80 -j DROP
Captulo 10. Firewall iptables 138
Quando um pacote com o endereo www.debian.org tentando acessar a porta www (80)
de nossa mquina atravs da internet (via interface ppp0), o chain nmero 1 confere, ento o
processamento continua no chain nmero 4, o chain nmero 4 confere ento o processamento
volta para a regra nmero 2, que diz para aceitar o pacote.
Agora se um pacote vem com o endereo www.dominio.com.br tentando acessar a porta
www*80) de nossa mquina atravs da internet (via interface ppp0), o chain nmero 1 confere,
ento o processamento continua no chain nmero 4, que no confere. O mesmo acontece com
os chains 5, 6 e 7. O chain nmero 8 confere, ento o acesso bloqueado.
Como pode notou, o alvo RETURN facilita bastante a construo das regras do seu rewall,
caso existam mquinas/redes que sejam excees as suas regras. Se ela no existisse, seria ne-
cessrio especicar diversas opes -s, -d, etc para poder garantir o acesso livre a determinadas
mquinas.
10.3.7 Salvando e Restaurando regras
As regras que voc est trabalhosamente criando e testando manualmente enquanto manipula
o iptables podem ser salvas de 2 formas; uma delas escrevendo um shell script que tenha
todos os comandos, um por linha. Isto recomendado quando tem um rewall grande e que
exige uma boa padronizao de regras, bem como sua leitura, comentrios. O script shell
tambm permite o uso de funes presente no interpretador de comando, portanto se voc
uma pessoa que gosta de interagir com as funes do shell e deixar as coisas mais exveis,
prera esta opo.
A outra forma usando as ferramentas iptables-save e iptables-restore baseada na
idia do ipchains-save e ipchains-restore. Oiptables-save deve ser usado sempre
que modicar regras no rewall iptables da seguinte forma:
iptables-save >/dir/iptables-regras
Uma das vantagens do uso do iptables-save ele tambm salvar os contadores de chains,
ou seja, a quantidade de pacotes que conferiram com a regra. Isto tambm pode ser feito
com algumas regras adicionais em seu shell script, caso tenha interesse nesses contadores para
estatsticas ou outros tipos de relatrios.
Para restaurar as regras salvas, utilize o comando:
iptables-restore </dir/iptables-regras
10.4 A tabela nat (Network Address Translation) - fazendo nat
A tabela nat serve para controlar a traduo dos endereos que atravessam o cdigo de rote-
amento da mquina Linux. Existem 3 chains na tabela nat: PREROUTING, OUTPUT e POS-
TROUTING (veja O que so tabelas? on page 118 para maiores detalhes).
Captulo 10. Firewall iptables 139
A traduo de endereos tem inmeras utilidades, uma delas o Masquerading, onde mqui-
nas de uma rede interna podem acessar a Internet atravs de uma mquina Linux, redireci-
onamento de porta, proxy transparente, etc. Esta seo abordar os tipos de NAT, exemplos
de como criar rapidamente uma conexo IP masquerading e entender como a traduo de
endereos funciona no iptables.
Se sua inteno ligar sua rede a Internet existem duas opes:
Voc possui uma conexo que lhe oferece um endereo IP dinmico (a cada conexo
dado um endereo IP - como uma conexo PPP) ento o IP masquerading o que precisa
(veja Fazendo IP masquerading (para os apressados) on the current page ou Fazendo
IP Masquerading on page 141).
Voc temuma conexo que lhe oferece umendereo IP permanente (ADSL, por exemplo)
ento o SNAT o que precisa (veja Fazendo SNAT on the next page).
10.4.1 Criando um novo chain na tabela NAT
O procedimento para criao de um novo chain nesta tabela o mesmo descrito em Criando
um novo chain - N on page 124 ser necessrio somente especicar a tabela nat (-t nat) para
que o novo chain no seja criado na tabela padro (-t lter).
iptables -t nat -N intra-inter
Que criar o chain chamado intra-inter na tabela nat. Para inserir regras neste chain ser neces-
srio especicar a opo -t nat.
10.4.2 Fazendo IP masquerading (para os apressados)
Voc precisar de umkernel comsuporte ao iptables (veja Habilitando o suporte ao iptables
no kernel on page 119 e ip_forward e ento digitar os dois comandos abaixo para habilitar
o masquerading para todas as mquinas da rede 192.168.1.*:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
echo "1" >/proc/sys/net/ipv4/ip_forward
A congurao do servidor Linux est completa, agora os clientes da rede precisaro ser con-
gurados para usar o endereo IP do servidor Linux como gateway. recomendvel ins-
talar um servidor proxy e DNS na mquina Linux para acelerar o desempenho das requisi-
es/resoluo de nomes das mquinas em rede. A utilizao de bits TOS tambm pode trazer
um grande aumento de velocidade para os diferentes servios da rede (veja Especicando o
tipo de servio on page 143).
Captulo 10. Firewall iptables 140
10.4.3 Fazendo SNAT
SNAT (source nat - nat no endereo de origem) consiste em modicar o endereo de origem
das mquinas clientes antes dos pacotes serem enviados. A mquina roteadora inteligente
o bastante para lembrar dos pacotes modicados e reescrever os endereos assim que obter a
resposta da mquina de destino, direcionando os pacotes ao destino correto. Toda operao de
SNAT feita no chain POSTROUTING.
permitido especicar endereos de origem/destino, protocolos, portas de origem/destino,
interface de entrada/sada (dependendo do chain), alvos, etc. desnecessrio especicar frag-
mentos na tabela nat, pois eles sero remontados antes de entrar no cdigo de roteamento.
O SNAT a soluo quando voc tem acesso a internet atravs de um nico IP e deseja fa-
zer que sua rede tenha acesso a Internet atravs da mquina Linux. Nenhuma mquina da
Internet poder ter acesso direto as mquinas de sua rede interna via SNAT.
OBS: A observao acima no leva em conta o controle de acesso externo congurado na m-
quina que estiver congurando o iptables, uma congurao mau realizada pode expor sua
mquina a acessos externos indesejados e comprometer sua rede interna caso algum consiga
acesso direto ao servidor.
necessrio especicar SNAT como alvo (-j SNAT) quando desejar que as mquinas de sua
rede interna tenha acesso a Internet atravs do IP xo da mquina Linux (para conexes in-
termitentes como PPP, veja Fazendo IP Masquerading on the next page). O parmetro --to
IP:portas deve ser usado aps o alvo SNAT. Ele serve para especicar um endereo IP, faixa
de endereos e opcionalmente uma porta ou faixa de portas que ser substituda. Toda a ope-
rao de SNAT realizada atravs do chain POSTROUTING:
# Modifica o endereo IP dos pacotes vindos da mquina 192.168.1.2 da rede interna
# que tem como destino a interface eth1 para 200.200.217.40 (que o nosso endereo
# IP da interface ligada a Internet).
iptables -t nat -A POSTROUTING -s 192.168.1.2 -o eth1 -j SNAT --to 200.200.217.40
Os pacotes indo para a Internet (nossa conexo feita via eth1, nossa interface externa) vindo
do endereo 192.168.1.2, so substitudos por 200.241.200.40 e enviados para fora. Quando a
resposta a requisio retornada, a mquina com iptables recebe os pacotes e faz a ope-
rao inversa, modicando o endereo 200.241.200.40 novamente para 192.168.1.2 e enviando
a resposta a mquina de nossa rede interna. Aps denir suas regras de NAT, execute o co-
mando echo 1 >/proc/sys/net/ipv4/ip_forward para habilitar o suporte a redire-
cionamento de pacotes no kernel.
Tambm possvel especicar faixas de endereos e portas que sero substitudas:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 200.200.217.40-200.200.217.50
Modica o endereo IP de origem de todas as mquinas da rede 192.168.1.0/24 que tem o des-
tino a interface eth0 para 200.241.200.40 a 200.241.200.50. Oendereo IP selecionado escolhido
de acordo com o ltimo IP alocado.
Captulo 10. Firewall iptables 141
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 200.200.217.40-200.200.217.50:1-1023
Idntico ao anterior, mas faz somente substituies na faixa de portas de origem de 1 a 1023.
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 200.200.217.40-200.200.217.50 --to 200.200.217.70-200.200.217.73
Faz o mapeamento para a faixa de portas 200.200.217.40 a 200.200.217.50 e de 200.200.217.70 a
200.200.217.73.
OBS1: Se por algum motivo no for possvel mapear uma conexo NAT, ela ser derrubada.
OBS2: Tenha certeza que as respostas podem chegar at a mquina que fez o NAT. Se estiver
fazendo SNAT em um endereo livre em sua rede (como 200.200.217.73).
OBS3: Como notou acima, o SNAT usado quando temos uma conexo externa com um ou
mais IPs xos. O Masquerading uma forma especial de SNAT usada para funcionar em
conexes que recebem endereos IP aleatrios (PPP).
OBS4: No se esquea de habilitar o redirecionamento de pacotes aps fazer suas regra de
NAT com o comando: echo 1 >/proc/sys/net/ipv4/ip_forward, caso contrrio o
redirecionamento de pacotes no funcionar.
Fazendo IP Masquerading
O IP Masquerading um tipo especial de SNAT usado para conectar a sua rede interna a
internet quando voc recebe um IP dinmico de seu provedor (como em conexes ppp). Todas
as operaes de IP Masquerading so realizadas no chain POSTROUTING. Se voc tem um IP
xo, deve ler Fazendo SNAT on the facing page.
Para fazer IP Masquerading de uma mquina com o IP 192.168.1.2 para ter acesso a Internet,
use o comando:
iptables -t nat -A POSTROUTING -s 192.168.1.2/32 -o ppp0 -j MASQUERADE
A diferena que o alvo -j MASQUERADE. O comando acima faz IP Masquerading de
todo o trfego de 192.168.1.2 indo para a interface ppp0: O endereo IP dos pacotes vindos
de 192.168.1.2 so substitudos pelo IP oferecido pelo seu provedor de acesso no momento
da conexo, quando a resposta retornada a operao inversa realizada para garantir que
a resposta chegue ao destino. Nenhuma mquina da internet poder ter acesso direto a sua
mquina conectava via Masquerading.
Para fazer o IP Masquerading de todas as mquinas da rede 192.168.1.*:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE
Aps denir a regra para fazer Masquerading (SNAT), execute o comando echo 1
>/proc/sys/net/ipv4/ip_forward para habilitar o suporte a redirecionamento de pa-
cotes no kernel.
Captulo 10. Firewall iptables 142
10.4.4 Fazendo DNAT
DNAT (Destination nat - nat no endereo de destino) consiste em modicar o endereo de
destino das mquinas clientes. O destination nat muito usado para fazer redirecionamento
de pacotes, proxyes transparentes e balanceamento de carga.
Toda operao de DNAT feita no chain PREROUTING. As demais opes e observaes do
SNAT so tambm vlidas para DNAT (com exceo que somente permitido especicar a
interface de origem no chain PREROUTING).
# Modifica o endereo IP destino dos pacotes de 200.200.217.40 vindo da interface eth0
# para 192.168.1.2.
iptables -t nat -A PREROUTING -s 200.200.217.40 -i eth0 -j DNAT --to 192.168.1.2
Tambm possvel especicar faixas de endereos e portas que sero substitudas no DNAT:
iptables -t nat -A PREROUTING -i eth0 -s 192.168.1.0/24 -j DNAT --to 200.200.217.40-200.200.217.50
Modica o endereo IP de destino do trfego vindos da interface 192.168.1.0/24 para um IP
de 200.241.200.40 a 200.241.200.50. Este um excelente mtodo para fazer o balanceamento
de carga entre servidores. O endereo IP selecionado escolhido de acordo com o ltimo IP
alocado.
iptables -t nat -A PREROUTING -i eth0 -s 192.168.1.0/24 -j DNAT --to 200.200.217.40-200.200.217.50:1024:5000
Idntico ao anterior, mas faz somente substituies na faixa de portas de destino de 1024 a
5000. A operao acima a mesma realizada pelo ipmasqadm dos kernels da srie 2.2.
OBS1: Se por algum motivo no for possvel mapear uma conexo NAT, ela ser derrubada.
OBS2: No se esquea de conferir se o ip_forward est ajustado para 1: echo 1
>/proc/sys/net/ipv4/ip_forward.
Redirecionamento de portas
O redirecionamento de portas permite a voc repassar conexes com destino a uma porta para
outra porta na mesma mquina. O alvo REDIRECT usado para fazer esta operao, junto
como argumento to-port especicando a porta que ser redirecionada. Este o mtodo DNAT
especco para se para fazer proxy transparente (para redirecionamento de endereos/portas,
veja Fazendo DNAT on the current page). Todas as operaes de redirecionamento de portas
realizada no chain PREROUTING e OUTPUT da tabela nat.
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 81
Redireciona as conexes indo para a porta 80 para a porta 81 (rodando squid) no rewall.
ATENO: O squid possui suporte a proxy transparente, e poder atender as requisies
acima da regra acima.
Captulo 10. Firewall iptables 143
10.4.5 Monitorando conexes feitas na tabela nat
Use o comando cat /proc/net/ip_conntrack para listar todas as conexes atuais trata-
das pelo mdulo nat.
10.5 A tabela mangle
A tabela mangle serve para especicar aes especiais para o tratamento do trfego que atra-
vessa os chains. Nesta tabela existem cincos chains: PREROUTING, POSTROUTING, INPUT,
OUTPUT e FORWARD (veja O que so tabelas? on page 118 para maiores detalhes).
Em geral, cada um deste chain processado antes do chain correspondente na tabela lter e
nat para denir opes especiais para o trfego (por exemplo, o chain PREROUTING da tabela
mangle processado antes do PREROUTING da tabela nat). O chain OUTPUT da tablea mangle
corresponde ao OUTPUT da tabela nat. Opes como o Tipo de Servio (TOS) especicado
nesta tabela para classicar e aumentar consideravelmente a velocidade de trfego considera-
dos em tempo real. Mesmo aps o trfego ser estabelecido, os chains da tabela mangle con-
tinuam ativos para garantir que as opes especiais relacionadas com a conexo continuem
fazendo efeito (veja os exemplos de Caminho percorrido pelos pacotes nas tabelas e chains
on page 151).
10.5.1 Especicando o tipo de servio
O tipo de servio um campo existente no cabealho de pacotes do protocolo ipv4 que tem a
funo especicar qual a prioridade daquele pacote. A prioridade denida usando o algo-
ritmo FIFO do prprio kernel, sendo uma das alternativas de controle/priorizao de trfego
das mais simples e rpidas.
Uma das vantagens da utilizao do tipo de servio dar prioridade ao trfego de pacotes
interativos (como os do ICQ, IRC, servidores de chat), etc. Com o TOS especicado, mesmo
que esteja fazendo um download consumindo toda a banda de sua interface de rede, o trfego
com prioridade interativa ser enviado antes, aumentando a ecincia do uso de servios em
sua mquina.
Em testes realizados em minha conexo de 56K, o uso de regras TOS aumentou bastante o de-
sempenho em trfego interativo (em torno de 300%), durante o uso total da banda da interface
ppp em grande consumo de banda.
Usamos o alvo TOS (-j TOS) para especicar a modicao do tipo de servio nos pacotes que
atravessam as regras do rewall, acompanhada do argumento set-tos TOS que dene a nova
prioridade dos pacotes. Os valores aceitos so os seguintes:
Espera Mnima especicado atravs de Minimize-Delay, 16 ou 0x10
Mximo Processamento especicado atravs de Maximize-Throughput, 8, ou 0x08.
Mxima Conana especicado atravs de Maximize-Reliability, 4 ou 0x04.
Custo mnimo Especicado atravs de Minimize-Cost, 2 ou 0x02.
Prioridade Normal Especicado atravs de Normal-Service, 0 ou 0x00.
Captulo 10. Firewall iptables 144
Os pacotes vem por padro com o valor TOS ajustado como prioridade normal (bits tos ajus-
tados para 0x00). O tipo Mnima Espera o de maior prioridade, recomendado para trfego
interativo.
Especicando o TOS para trfego de sada
Este o mais usado, pois prioriza o trfego que sai da mquina (com destino a Internet, por
exemplo). Sua operao realizada atravs do chain OUTPUT ou POSTROUTING.
Para priorizar todo o trfego de IRC de nossa rede interna indo para a interface ppp0:
iptables -t mangle -A OUTPUT -o ppp0 -p tcp --dport 6666-6668 -j TOS --set-tos 16
O bit TOS ajustado para Espera mnima e ser enviado antes dos pacotes com prioridade
normal para fora. Para priorizar a transmisso de dados ftp saindo da rede:
iptables -t mangle -A OUTPUT -o ppp0 -p tcp --dport 20 -j TOS --set-tos 8
Para priorizar o trfego de ICQ da rede:
iptables -t mangle -A OUTPUT -o ppp0 -p tcp --dport 5190 -j TOS --set-tos 16
Existem muitas outras otimizaes que podem ser feitas, s depende dos requerimentos e an-
lise de cada servio da rede pelo administrador.
OBS: - Os pacotes que atravessamo alvo TOS somente temos bits tipo do servio modicados,
eles no sero de qualquer forma rejeitados.
Especicando o TOS para o trfego de entrada
Este prioriza o trfego que entra da mquina. Sua operao realizada no chain INPUT ou
PREROUTING. No faz muito sentido o uso deste chain dentro de uma rede pequena/mdia,
pois o trfego que recebermos ser priorizado pelo chain de sada de outras mquinas da in-
ternet/outras redes antes de chegar a nossa (desde que elas tambm estejam usando TOS).
Para priorizar o processamento do trfego interativo vindo de servidores IRC para nossa rede:
iptables -t mangle -A PREROUTING -i eth0 -p tcp --sport 6666-6668 -j TOS --set-tos 0x10
Modica o tipo de servio para mnima espera de todo o trfego enviado por servidores de IRC
vindo da interface eth0.
OBS: - Os pacotes que atravessamo alvo TOS somente temos bits tipo do servio modicados,
eles no sero de qualquer forma rejeitados. \
Captulo 10. Firewall iptables 145
10.6 Outros mdulos do iptables
Os mdulos do iptables so especicados com a opo -m mdulo ou match mdulo e permitem
expandir a funcionalidade do rewall atravs de novas conferncias e recursos de ltragem
adicionais, como limitar a conferncia de regras do rewall (um mtodo til de limitar ping
oods, syn oods, etc).
10.6.1 Conferindo de acordo com o estado da conexo
Este mdulo permite especicar regras de acordo com o estado da conexo do pacote, isto
feito atravs da interpretao da sada do mdulo ip_conntrack. O parmetro state OP-
ES deve acompanhar este mdulo. As opes permitidas so as seguintes:
NEW - Confere com pacotes que criam novas conexes
ESTABLISHED - Confere com conexes j estabelecidas
RELATED - Confere com pacotes relacionados indiretamente a uma conexo, como men-
sagens de erro icmp, etc.
INVALID - Confere com pacotes que no puderam ser identicados por algum motivo.
Como respostas de conexes desconhecidas.
Caso seja necessrio especicar mais de uma opes estas devem ser separadas por vrgulas.
iptables -A INPUT -m state --state NEW -i ppp0 -j DROP
Bloqueia qualquer tentativa de nova conexo vindo da interface ppp0.
iptables -A INPUT -m state --state NEW,INVALID -i ppp0 -j LOG
Permite registrar novas conexes e pacotes invlidos vindos da interface ppp0.
10.6.2 Limitando o nmero de vezes que a regra confere
A opo -m limit permite especicar o nmero de vezes que uma regra conferir quando todas
as outras condies forem satisfeitas. O nmero padro de conferncia de 3 por hora, a no
ser que seja modicado atravs dos argumentos aceitos pelo limit:
--limit num/tempo - Permite especicar a taxa de conferncias do limit. Oparmetro
num especica um nmero e tempo pode ser
s - Segundo
m - Minuto
Captulo 10. Firewall iptables 146
h - Hora
d - Dia
Assim uma regra como iptables -A INPUT -m limit --limit 5/m -j
ACCEPT permitir que a regra acima conra apenas 5 vezes por minuto (limit
2/s). Este limite pode ser facilmente adaptado para uma regra de log que confere
constantemente no causar uma avalanche em seus logs. O valor padro 3/h.
--limit-burst num - Especica o nmero inicial mximo de pacotes que iro conferir,
este nmero aumentado por 1 a cada vez que o parmetro limit acima no for atingido.
O valor padro 5.
10.6.3 Proteo contra ping da morte
A regra abaixo pode tomada como base para proteo contra ping ood:
iptables -t filter -A ping-chain -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -t filter -A ping-chain -j DROP
A regra acima limita em 1 vez por segundo (limit 1/s) a passagem de pings (echo requests)
para a mquina Linux.
iptables -t filter -A ping-chain -i ppp0 -p icmp --icmp-type echo-reply -m limit --limit 1/s -j RETURN
iptables -t filter -A ping-chain -j DROP
Limita respostas a pings (echo reply) vindos da interface ppp0 (-i ppp0) a 1 por segundo.
ATENO: Oexemplo acima somente para a criao de suas prprias regras comlimitaes,
caso um pacote no conra ele ser bloqueado pela prxima regra. Se uma regra como esta for
colocada no chain INPUT sem modicaes, ela no ter o efeito desejado, podendo colocar
em risco a sua instalao pela falsa impresso de segurana. Portanto, recomendvel sempre
testar as modicaes para ter certeza que elas tem efeito.
10.6.4 Proteo contra syn ood
A regra abaixo uma boa proteo para os ataques syn oods:
iptables -t filter -A syn-chain -p tcp --syn -m limit --limit 2/s -j ACCEPT
iptables -t filter -A syn-chain -j DROP
Esta regra limita o atendimento de requisies de conexes a 2 por segundo. Ou-
tra forma de aumentar a segurana contra syn-oods atravs do prprio kernel
ativando a opo TCP Synood na compilao e depois executando: echo 1
>/proc/sys/net/ipv4/tcp_synflood. No entanto, utilize estas opes com cautela em
Captulo 10. Firewall iptables 147
servidores que possuem um grande nmero de acessos para no ter problemas que afetem seu
clientes.
ATENO: Os exemplos acima devem so somente exemplos para criao de suas prprias
regras comlimitaes, caso umpacote no conra coma regra ele ser bloqueado pela prxima
regra. Se uma regra como esta for colocada no chain INPUT sem modicaes, ela no ter o
efeito desejado, podendo colocar em risco a sua instalao pela falsa impresso de segurana.
Portanto, recomendvel sempre testar as modicaes para ter certeza que elas tem efeito.
10.6.5 Proteo contra IP spoong
A especicao de endereos de origem/destino junto com a interface de rede pode ser usado
como um detector de ataques spoong. A lgica que todos os endereos que NUNCA devem
vir da interface X devem ser negados imediatamente. As regras abaixo so colocadas no inicio
do chain INPUT para detectar tais ataques:
iptables -A INPUT -s 192.168.1.0/24 -i ! eth0 -j DROP
iptables -A INPUT ! -s 192.168.1.0/24 -i eth0 -j DROP
A primeira regra diz para bloquear todos os endereos da faixa de rede 192.168.1.* que NO
vem da interface eth0, a segunda regra diz para bloquear todos os endereos que no sejam
192.168.1.* vindos da interface eth0. O smbolo ! serve para especicar excees (veja Espe-
cicando uma exceo on page 133. Okernel do Linux automaticamente bloqueia a passagem
de pacotes que dizem ser de 127.0.0.1 e no est vindo da interface loopback.
O mtodo preferido para controlar o ip spoong atravs do cdigo de roteamento do kernel
(a no ser que esteja usando algum tipo de roteamento de origem assimtrico necessrio por
alguns programas especiais):
for i in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 1 >$i
done
Desta forma qualquer endereo dizendo ser 192.168.1.5 vindo de ppp0 ser imediatamente
rejeitado. Uma checagem adicional contra IP spoong pode ser feita no arquivo /etc
/host.conf (veja /etc/host.conf on page 56).
10.6.6 Especicando mltiplas portas de origem/destino
O mdulo multiport permite que seja especicado mltiplas portas para um alvo. Podem
ser especicadas at 15 portas em um nico parmetro e basta que uma porta conra para
que a regra entre em ao, pois a comparao feita usando condies or. O parmetro
multiport deve ser acompanhado de um dos argumentos abaixo:
Captulo 10. Firewall iptables 148
--source-port [porta1, porta2...] - Faz a regra conferir se a porta de origem
estiver presente entre as portas especicadas.
--destination-port [porta1, porta2...] - Faz a regra conferir se a porta de
destino estiver presente entre as portas especicadas.
--port [porta1, porta2...] - Faz a regra conferir caso a porta de origem ou des-
tino esteja presente no parmetro.
Este mdulo pode eliminar muitas regras de rewall que fazem o mesmo tratamento de paco-
tes para diversas portas diferentes.
iptables -A INPUT -p tcp -i ppp0 -m multiport --destination-port 21,23,25,80,110,113,6667 -j DROP
Bloqueia todos os pacotes vindo de ppp0 para as portas 21 (ftp), 23 (telnet), 25 (smtp), 80
(www), 110 (pop3), 113 (ident), 6667 (irc).
10.6.7 Especicando o endereo MAC da interface
O mdulo mac serve para conferir com o endereo Ethernet dos pacotes de origem. Somente
faz sentido se usado nos chains de PREROUTING (da tabela nat) ou INPUT (da tabela lter).
Aceita como argumento a opo mac-source endereo. O smbolo ! pode ser usado para
especicar uma exceo.
iptables -t filter -A INPUT -m mac --mac-source 00:80:AD:B2:60:0B -j DROP
Confere com a mquina com endereo ethernet igual a 00:80:AD:B2:60:0B.
10.6.8 Conferindo com quem criou o pacote
Este mdulo confere como usurio que iniciou a conexo. somente vlido no chain OUTPUT
da tabela lter. Os seguintes argumentos so vlidas para este mdulo:
--uid-owner UID - Confere se o pacote foi criado por um processo com o UID especi-
cado. At o momento somente UID numricos so aceitos.
--gid-owner GID - Confere se o pacote foi criado por umusurio pertencente ao grupo
GID. At o momento somente GID numricos so aceitos.
--pid-owner PID - Confere se o pacote foi criado por um processo com o PID especi-
cado.
--sid-owner ID - Confere se o pacote foi criado por um processo no grupo de seo
especicado.
OBS: - Lembre-se que pacotes que no possuem detalhes sucientes de cabealho nunca con-
feriro!
Captulo 10. Firewall iptables 149
iptables -A OUTPUT -m owner --gid-owner 100 -p udp -j DROP
Rejeita um conexes indo para portas UDP de pacotes criados pelo usurios pertencentes ao
grupo 100.
10.6.9 Conferindo com o contedo do pacote
O mdulo string do iptables permite a inspeo de contedo de um pacote e tomar uma
ao se determinado tipo de trfego for encontrado em um pacote. Esta tcnica pode ser usada
tanto para segurana como para economia de banda dentro da rede. Esta opo *NO* torna
o iptables como um rewall proxy, pois o proxy tem a habilidade de inspecionar o contedo,
protocolo, comandos do pacote e decidir se o seu contedo nocivo ou no. O rewall em
nvel de pacotes fazendo inspeo de contedo, chega a ser 3 a 10 vezes mais rpido do que
um proxy, assim seu uso deve ser analisado dependendo do trfego que circula pelo link e da
segurana dos dados que trafegam atravs dele.
Uma boa prtica aliar esta opo a umIDS externo usando o alvo QUEUE e deixando o traba-
lho de espeo de contedo para ele. Um exemplo de restrio direta o bloqueio do envio de
qualquer informao condencial sigilosa para fora da rede interna (nmero de contas, tudo
que conferir com CPF, CGC, endereos de e-mail, memorandos, etc). De qualquer forma, ana-
lise o trfego de sua rede antes de querer implementar qualquer soluo baseada neste mtodo
sob o risco de afetar trfego legtimo.
Outra utilidade eciente a diminuio de trfego, pois podemos barrar programas que so-
brecarregam o link em uma rede com muitos usurios como, por exemplo, usando o Kazaa ou
qualquer outro programa para cpia de arquivos via Internet. Veja alguns exemplos:
# Bloqueia qualquer tentativa de acesso ao programa Kazaa
iptables -A INPUT -m string --string "X-Kazaa" -j DROP
# No permite que dados confidenciais sejam enviados para fora da empresa
# e registra o ocorrido.
iptables -A OUTPUT -m string --string "conta" -j LOG --log-prefix "ALERTA: dados confidencial "
iptables -A OUTPUT -m string --string "conta" -j DROP
# Somente permite a passagem de pacotes que no contm ".exe" em seu contedo
iptables -A INPUT -m string --string ! ".exe" -j ACCEPT
10.6.10 Conferindo com o tempo de vida do pacote
O mdulo ttl pode ser usado junto com as seguintes opes para conferir com o tempo de
vida (TTL) de um pacote:
--ttl-eq [num]
--ttl-lt [num]
--ttl-gq [num]
Captulo 10. Firewall iptables 150
Veja alguns exemplos:
# Confere com todos os pacotes que tem o TTL maior que 100
iptables -A INPUT -m ttl --ttl-gt 100 -j LOG --log-prefix "TTL alto"
# Confere com todos os pacotes que tem o TTL igual a 1
iptables -A INPUT -m ttl --ttl-eq 1 -j DROP
OBS: Tenha um especial cuidado durante a programao de regras que usem TTL, como elas
esto especialmente associadas com o estado da comunicao estabelecida entre as duas pon-
tas e o tipo de protocolo, cuidados especiais devem ser tomados para que seu rewall no
manipule de forma incorreta trfego vlido.
10.6.11 Conferindo com nmeros RPC
O mdulo rpc permite um controle especial sobre o trfego RPC que chega at a sua mquina.
Um uso til restringir a chamada a determinados nmeros RPC e permitir outros (por exem-
plo, permitindo somente o servio keyserv e bloqueando outros como o ypserv ou portmapper).
As seguintes opes podem ser usadas com o mdulo nfs:
--rpcs [procedimentos] - Confere com a lista de chamadas RPC especicadas.
Mais de umprocedimento RPCpode ser especicado como nome ou nmero separando-
os com vrgulas. Um arquivo til que contm esta lista o /etc/rpc.
--strict - Ignora servios RPC que no contenham a chamada get do portmapper. Em
situaes normais, o inicio de qualquer solicitao RPC.
Veja alguns exemplos:
# Para conferir com todas as chamadas RPC referentes a conexes iniciadas
# para o portmapper
iptables -A INPUT -m rpc --rpcs portmapper --strict -j DROP
# Para permitir que somente as chamadas para status e statmon sejam
# aceitas
iptables -A INPUT -m rpc --rpcs 100023,100024 -j ACCEPT
10.6.12 Conferindo com tipo de pacote
O mdulo pkttype permite identicar um pacote do tipo unicast (direcionado a voc), bro-
adcast (direcionado a uma determinada rede, denida pela netmask) ou multicast (destinado a
grupos de redes) e desta forma realizar aes em cima destes. O tipo de pacote identicado
logo aps a opo pkt-type. Veja alguns exemplos:
# Bloqueia a passagem de pacotes multicast de uma rede para outra
iptables -A FORWARD -i eth0 -o eth0 -m pkttype --pkt-type multicast -j DROP
Captulo 10. Firewall iptables 151
# Como deve ter notado, possvel fazer a associao com diversas especificaes
# de mdulos, bastando apenas especificar uma opo "-m" para cada mdulo
# adicional:
# Permite a passagem de pacotes broadcast de uma rede para outra com
# limitao de 5/s.
iptables -A FORWARD -i eth0 -o eth0 -m pkttype --pkt-type broadcast -m limit --limit 5/s -j ACCEPT
10.6.13 Conferindo com o tamanho do pacote
O tamanho do pacote pode ser usado como condio de ltragem atravs do mdulo length.
O tamanho do pacote especicado atravs da opo length e o argumento segue a mesma
sintaxe da especicao de portas no iptables sendo separados por :. Veja alguns exemplos:
# Bloqueia qualquer pacote ICMP maior que 30Kb
iptables -A INPUT -i eth0 -m length --length 30000: -j DROP
# Bloqueia qualquer pacote com o tamanho entre 20 e 2000 bytes
iptables -A INPUT -i eth0 -m length --length 20:2000 -j DROP
10.7 Caminho percorrido pelos pacotes nas tabelas e chains
MUITOimportante entender a funo de cada ltro e a ordemde acesso dos chains de acordo
com o tipo de conexo e interface de origem/destino. Esta seo explica a ordem que as regra
so atravessadas, isso lhe permitir planejar a distribuio das regras nos chains, e evitar erros
de localizao de regras que poderia deixar seu rewall com srios problemas de segurana,
ou um sistema de rewall totalmente confuso e sem lgica.
Nos exemplos abaixo assumirei a seguinte congurao:
A mquina do rewall com iptables possui o endereo IP 192.168.1.1 e conecta a
rede interna ligada via interface eth0 a internet via a interface ppp0.
Rede interna com a faixa de endereos 192.168.1.0 conectada ao rewall via interface
eth0
Interface ppp0 fazendo conexo com a Internet com o endereo IP 200.217.29.67.
A conexo das mquinas da rede interna (eth0) com a rede externa (ppp0) feita via
Masquerading.
Tambm utilizarei a sintaxe CHAIN-tabela para fazer referncia aos chains e tabelas dos blocos
ASCII: INPUT-lter - chain INPUT da tabela lter.
ATENO: A ordem de processamento das regras do iptables, diferente do ipchains
devido a incluso do novo sistema de nat e da tabela mangle.
10.7.1 Ping de 192.168.1.1 para 192.168.1.1
Endereo de Origem: 192.168.1.1
Captulo 10. Firewall iptables 152
Endereo de Destino: 192.168.1.1
Interface de Entrada: lo
Interface de Sada: lo
Protocolo: ICMP
Descrio: Ping para o prprio firewall
SADA DE PACOTES (envio do ping para 192.168.1.1):
+-------------+ +----------+ +-------------+ +------------------+ +----------------+
|OUTPUT-mangle| => |OUTPUT-nat| => |OUTPUT-filter| =>|POSTROUTING-mangle|=>|POSTROUTING-nat |
+-------------+ +----------+ +-------------+ +------------------+ +----------------+
ENTRADA DOS PACOTES (Retorno da resposta ping acima):
+-----------------+ +------------+ +------------+
|PREROUTING-mangle| =>|INPUT-mangle|=>|INPUT-filter|
+-----------------+ +------------+ +------------+
Quando damos o ping (echo request) os pacotes seguem o caminho em SADA DE PACOTES
percorrendo os chains na ordem especicada e retornam via ENTRADA DOS PACOTES (echo
reply). No envio da resposta da requisio de ping, o caminho de sada do pacote ignora os
chains OUTPUT-nat e POSTROUTING-nat (j que no necessrio nat) mas sempre processa
os chains correspondentes da tabela mangle na ordem indicada acima.
OBS1: Para conexes com destinos na prpria mquina usando um endereo IP das interfaces
locais, a interface ser ajustada sempre para lo (loopback).
OBS2: Em qualquer operao de entrada/sada de pacotes, os dois chains da tabela mangle so
sempre os primeiros a serem acessados. Isto necessrio para denir a prioridade e controlar
outros aspectos especiais dos pacotes que atravessam os ltros.
OBS3: O chain OUTPUT da tabela lter consultado sempre quando existem conexes se
originando em endereos de interfaces locais.
10.7.2 Conexo FTP de 192.168.1.1 para 192.168.1.1
Endereo de Origem: 192.168.1.1
Endereo de Destino: 192.168.1.1
Interface de Origem: lo
Interface de Destino: lo
Porta Origem: 1404
Porta Destino: 21
Protocolo: TCP
Descrio: Conexo ftp (at o prompt de login, sem transferncia de
arquivos).
SADA DOS PACOTES (envio da requisio para 192.168.1.1):
+-------------+ +----------+ +-------------+ +------------------+ +---------------+
Captulo 10. Firewall iptables 153
|OUTPUT-mangle| => |OUTPUT-nat| => |OUTPUT-filter| => +POSTROUTING-mangle| => |POSTROUTING-nat|
+-------------+ +----------+ +-------------+ +------------------+ +---------------+
ENTRADA DE PACOTES (respostas da requisio vindas de 192.168.1.1):
+-----------------+ +------------+ +------------+
|PREROUTING-mangle| => |INPUT-mangle| => |INPUT-filter|
+-----------------+ +------------+ +------------+
Arequisio ftp passa atravs dos chains especicados emSADADOS PACOTES e retorna por
ENTRADA DE PACOTES. Aps a conexo ser estabelecida, o caminho de SADA DE PACOTES
ser:
+-------------+ +-------------+ +------------------+
|OUTPUT-mangle| => |OUTPUT-filter| => |POSTROUTING-mangle|
+-------------+ +-------------+ +------------------+
pois os dados de entrada que vemda interface externa, so passados diretamente a mquina do
rewall, no necessitando de tratamento SNAT (os chains OUTPUT-nat e POSTROUTING-nat
so processado somente uma vez a procura de regras que conferem, principalmente para fa-
zer SNAT). Note novamente que mesmo no sendo necessrio NAT, o chain POSTROUTING-
mangle checado.
OBS1: Para conexes com destinos na prpria mquina usando um endereo IP das interfaces
locais, a interface ser ajustada sempre para lo (loopback).
OBS2: Emqualquer operao de entrada/sada de pacotes, os dois chains da tabela mangle so
sempre os primeiros a serem acessados. Isto necessrio para denir a prioridade e controlar
outros aspectos especiais dos pacotes que atravessam os ltros.
10.7.3 Conexo FTP de 192.168.1.1 para 192.168.1.4
Endereo de Origem: 192.168.1.1
Endereo de Destino: 192.168.1.4
Interface de Origem: eth0
Interface de Destino: eth0
Porta Origem: 1405
Porta Destino: 21
Protocolo: TCP
Descrio: Conexo ftp (at o prompt de login, sem transferncia de
arquivos).
SADA DOS PACOTES (envio da requisio para 192.168.1.4):
+-------------+ +----------+ +-------------+ +------------------+ +---------------+
|OUTPUT-mangle| => |OUTPUT-nat| => |OUTPUT-filter| => +POSTROUTING-mangle| => |POSTROUTING-nat|
+-------------+ +----------+ +-------------+ +------------------+ +---------------+
Captulo 10. Firewall iptables 154
ENTRADA DE PACOTES (respostas da requisio de 192.168.1.4):
+-----------------+ +------------+ +------------+
|PREROUTING-mangle| => |INPUT-mangle| => |INPUT-filter|
+-----------------+ +------------+ +------------+
A requisio ftp passa atravs dos chains especicados em SADA DOS PACOTES com o des-
tino 192.168.1.4 porta 21 e retorna por ENTRADA DE PACOTES para 192.168.1.1 porta
1405. Aps a conexo ser estabelecida, o caminho de SADA DE PACOTES ser:
+-------------+ +-------------+ +------------------+
|OUTPUT-mangle| => |OUTPUT-filter| => |POSTROUTING-mangle|
+-------------+ +-------------+ +------------------+
pois os dados no precisam de tratamento SNAT (os chains OUTPUT-nat e POSTROUTING-
nat so processado somente uma vez a procura de regras que conferem, principalmente para
fazer SNAT).
OBS: Em qualquer operao de entrada/sada de pacotes, os dois chains da tabela mangle so
sempre os primeiros a serem acessados. Isto necessrio para denir a prioridade e controlar
outros aspectos especiais dos pacotes que atravessam os ltros.
10.7.4 Conexo FTP de 200.217.29.67 para a mquina ftp.debian.org.br
Endereo de Origem: 200.217.29.67
Endereo de Destino: 200.198.129.162
Interface de Origem: ppp0
Interface de Destino: ppp0
Porta Origem: 1407
Porta Destino: 21
Protocolo: TCP
Descrio: Conexo ftp (at o prompt de login, sem transferncia de
arquivos).
SADA DOS PACOTES (envio da requisio para 200.198.129.162):
+-------------+ +----------+ +-------------+ +------------------+ +---------------+
|OUTPUT-mangle| => |OUTPUT-nat| => |OUTPUT-filter| => +POSTROUTING-mangle| => |POSTROUTING-nat|
+-------------+ +----------+ +-------------+ +------------------+ +---------------+
ENTRADA DE PACOTES (respostas da requisio vindas de 200.198.129.162):
+-----------------+ +------------+ +------------+
|PREROUTING-mangle| => |INPUT-mangle| => |INPUT-filter|
+-----------------+ +------------+ +------------+
Captulo 10. Firewall iptables 155
A requisio ftp passa atravs dos chains especicados em SADA DOS PACOTES com o des-
tino 200.198.129.162 porta 21 (aps a resoluo DNS de www.debian.org.br) e retorna
por ENTRADA DE PACOTES para 200.217.29.67 porta 1407. Aps a conexo ser estabe-
lecida, o caminho de sada de pacotes :
+-------------+ +-------------+ +------------------+
|OUTPUT-mangle| => |OUTPUT-filter| => |POSTROUTING-mangle|
+-------------+ +-------------+ +------------------+
pois os dados no precisam de tratamento SNAT (os chains OUTPUT-nat e POSTROUTING-
nat so processado somente uma vez a procura de regras que conferem, principalmente para
fazer SNAT).
E aps a conexo estabelecida, o caminho de entrada de pacotes passa a ser:
+-----------------+ +------------+ +------------+
|PREROUTING-mangle| => |INPUT-mangle| => |INPUT-filter|
+-----------------+ +------------+ +------------+
pois os dados no precisam de tratamento DNAT (o chain PREROUTING-nat processado
somente uma vez a procura de regras que conferem, principalmente para fazer DNAT).
OBS: Para qualquer operao de entrada/sada de pacotes, os dois chains da tabela mangle so
sempre os primeiros a serem acessados. Isto necessrio para denir a prioridade e controlar
outros aspectos especiais dos pacotes que atravessam os ltros.
10.7.5 Ping de 192.168.1.4 para 192.168.1.1
Endereo de Origem: 192.168.1.4
Endereo de Destino: 192.168.1.1
Interface de Entrada: eth0
Interface de Sada: eth0
Protocolo: ICMP
Descrio: Ping de 192.168.1.4 para a mquina do firewall.
ENTRADA DE PACOTES (recebimento da requisio, vinda de 192.168.1.4):
+-----------------+ +--------------+ +------------+ +------------+
|PREROUTING-mangle| => |PREROUTING-nat| => |INPUT-mangle| => |INPUT-filter|
+-----------------+ +--------------+ +------------+ +------------+
SADA DE PACOTES (envio da resposta a 192.168.1.4)
+-------------+ +-------------+ +------------------+
|OUTPUT-mangle| => |OUTPUT-filter| => |POSTROUTING-mangle|
+-------------+ +-------------+ +------------------+
Captulo 10. Firewall iptables 156
Quando damos o ping (echo request) os pacotes seguemo caminho emENTRADADE PACOTES
percorrendo os chains na ordemespecicada e retornamvia SADADOS PACOTES (echo reply).
OBS1: Para qualquer operao de entrada/sada de pacotes, os dois chains da tabela man-
gle so sempre os primeiros a serem acessados. Isto necessrio para denir a prioridade e
controlar outros aspectos especiais dos pacotes que atravessam os ltros.
10.7.6 Conexo FTP de 192.168.1.4 para 192.168.1.1
Endereo de Origem: 192.168.1.4
Endereo de Destino: 192.168.1.1
Interface de Origem: eth0
Interface de Destino: eth0
Porta Origem: 1030
Porta Destino: 21
Protocolo: TCP
Descrio: Conexo ftp (at o prompt de login, sem transferncia de
dados).
ENTRADA DOS PACOTES (envio da requisio vindas de 192.168.1.4):
+-----------------+ +--------------+ +------------+ +------------+
|PREROUTING-mangle| => |PREROUTING-nat| => |INPUT-mangle| => |INPUT-filter|
+-----------------+ +--------------+ +------------+ +------------+
SADA DE PACOTES (respostas da requisio acima para 192.168.1.4):
+-------------+ +-------------+ +------------------+
|OUTPUT-mangle| => |OUTPUT-filter| => |POSTROUTING-mangle|
+-------------+ +-------------+ +------------------+
A requisio ftp passa atravs dos chains especicados em ENTRADA DOS PACOTES com o
destino 192.168.1.1 porta 21 e retorna por SADA DE PACOTES para 192.168.1.4 porta
1030. Aps a conexo ser estabelecida, o caminho de entrada de pacotes :
+-----------------+ +------------+ +------------+
|PREROUTING-mangle| => |INPUT-mangle| => |INPUT-filter|
+-----------------+ +------------+ +------------+
pois os dados no precisam de tratamento DNAT (o chain PREROUTING-nat processado
somente uma vez a procura de regras que conferem, principalmente para fazer DNAT).
OBS: O roteamento sempre realizado aps o processamento do chain PREROUTING da ta-
bela nat.
10.7.7 Conexo FTP de 192.168.1.4 para ftp.debian.org.br
Endereo de Origem: 192.168.1.4
Captulo 10. Firewall iptables 157
Endereo de Destino: 200.198.129.162
Interface de Origem: eth0
Interface de Destino: ppp0
Porta Origem: 1032
Porta Destino: 21
Protocolo: TCP
Descrio: Conexo ftp (at o prompt de login, sem transferncia de
dados).
SADA DOS PACOTES (requisio vindas de 192.168.1.4):
+-----------------+ +--------------+ +--------------+
|PREROUTING-mangle| => |PREROUTING-nat| => |FORWARD-mangle| => (continua abaixo)
+-----------------+ +--------------+ +--------------+
+--------------+ +------------------+ +---------------+
|FORWARD-filter| => |POSTROUTING-mangle| => |POSTROUTING-nat|
+--------------+ +------------------+ +---------------+
ENTRADA DE PACOTES (respostas da requisio acima, enviadas para 192.168.1.4):
+-----------------+ +--------------+ +--------------+ +------------------+
|PREROUTING-mangle| => |FORWARD-mangle| => |FORWARD-filter| => |POSTROUTING-mangle|
+-----------------+ +--------------+ +--------------+ +------------------+
A requisio ftp passa atravs dos chains especicados em SADA DOS PACOTES com o des-
tino 200.198.129.162 porta 21 (aps a resoluo DNS de ftp.debian.org.br) e retorna
por ENTRADA DE PACOTES para 192.168.1.4 porta 1032.
Note que o Masquerading regrava os pacotes; para a mquina 200.198.129.162 a
conexo est sendo feita para 200.217.29.67. As respostas de conexes vindas de
200.198.129.162 e indo para 200.217.29.67 so regravadas no rewall com o destino
192.168.1.4 e enviadas para a mquina correspondente. Aps a conexo ser estabelecida, o
caminho de sada de pacotes para 200.198.129.163 :
+-----------------+ +--------------+ +--------------+ +------------------+
|PREROUTING-mangle| => |FORWARD-mangle| => |FORWARD-filter| => |POSTROUTING-mangle|
+-----------------+ +--------------+ +--------------+ +------------------+
Aps a conexo estabelecida, o caminho da entrada de pacotes vindos de 200.198.129.163 :
+-----------------+ +--------------+ +--------------+ +------------------+
|PREROUTING-mangle| => |FORWARD-mangle| => |FORWARD-filter| => |POSTROUTING-mangle|
+-----------------+ +--------------+ +--------------+ +------------------+
Isto acontece porque aps feita a conexo Masquerading (via PREROUTING-nat), o rewall
j sabe como reescrever os pacotes para realizar a operao de Masquerading, reescrevendo
todos os pacotes que chegam de www.debian.org.br para 192.168.1.4.
Captulo 10. Firewall iptables 158
OBS: As conexes Masquerading feitas atravs da rede interna, so enviadas para
200.198.129.162 tem o endereo de origem ajustado para 200.217.29.67 que o IP de
nossa interface ppp0. Quando as respostas atravessam o rewall, os pacotes so checados pra
saber se so uma resposta a uma conexo masquerading e far a regravao dos pacotes substi-
tuindo o endereo de destino para 192.168.1.4. Caso uma operao de Masquerading falhe,
os pacotes sero Bloqueados.
10.7.8 Conexo FTP de 200.198.129.162 para 200.217.29.167
Endereo de Origem: 200.198.129.162
Endereo de Destino: 200.217.29.67
Interface de Origem: ppp0
Interface de Destino: ppp0
Porta Origem: 3716
Porta Destino: 21
Protocolo: TCP
Descrio: Conexo ao servio ftp do firewall
ENTRADA DOS PACOTES (requisio vinda de 200.198.129.162):
+-----------------+ +--------------+ +-------------+ +------------+
|PREROUTING-mangle| => |PREROUTING-nat| => |INPUT-mangle | => |INPUT-filter|
+-----------------+ +--------------+ +-------------+ +------------+
SADA DE PACOTES (respostas da requisio de 200.198.129.162):
+-------------+ +-------------+ +------------------+
|OUTPUT-mangle| => |OUTPUT-filter| => |POSTROUTING-mangle|
+-------------+ +-------------+ +------------------+
A requisio ftp passa atravs dos chains especicados em ENTRADA DOS PACOTES com
o destino 200.217.29.67 (nossa interface ppp0 local) porta 21 e retorna por SADA DE
PACOTES para 200.198.129.162 porta 3716 (tambm via ppp0). Aps a conexo ser esta-
belecida, o caminho de entrada de pacotes :
+-----------------+ +------------+ +------------+
|PREROUTING-mangle| => |INPUT-mangle| => |INPUT-filter|
+-----------------+ +------------+ +------------+
Isto acontece porque aps feita a anlise do chain PREROUTING (para necessidade de DNAT),
a mquina j saber tomar a deciso apropriada para gerenciar aquela conexo.
10.7.9 Grco geral da passagem dos pacotes
Este grco foi retirado do documento netfilter-hacking-HOWTO.txt e mostra a estru-
tura geral de passagem dos pacotes nas tabelas/chains. Os exemplos de passagem de pacotes
Captulo 10. Firewall iptables 159
acima podero ser facilmente comparados com as etapas abaixo para compreender a estrutura
do iptables.
E ---> PREROUTING ------> (ROTEAM.) ---> FORWARD ----------> POSTROUTING --> S
Mangle e | Mangle ^ Mangle
NAT (DNAT)) | Filter | NAT (SRC)
| (ROTEAM.)
v |
IN Mangle, OUT - Mangle,
| Filter ^ NAT (DNAT)
| | Filter
v |
+----------------------------------------+
| Processo Local |
+----------------------------------------+
10.8 Exemplos de conguraes do iptables
Exemplo de como bloquear todas as conexes para a mquina do rewall permitindo somente
conexes da mquina Linux para fora.
10.8.1 Bloqueando conexes de fora para sua mquina
As regras a seguir servem para bloquear tentativas de conexes da interface de Internet (ppp0)
a sua rede sem bloquear o trfego de conexes j iniciadas. O trfego de outras interfaces no
afetado com as regras a seguir:
iptables -A INPUT -i ppp0 -m state --state ! ESTABLISHED,RELATED -j DROP
Todas as conexes vindas de ppp0 de estado diferente de ESTABLISHED e RELATED (NEW e
INVALID) sero derrubadas. Veja Conferindo de acordo como estado da conexo on page 145
para detalhes.
iptables -A INPUT -i ppp0 --syn -j DROP
Este acima mais simples e possui o mesmo efeito: Pacotes SYN so usados para iniciar cone-
xes, derrubando pacotes deste tipo signica bloquear novas conexes. Pacotes de conexes j
estabelecidas ainda so permitidos.
Estas regras acima servem para quem no deseja NENHUM acesso indevido a sua mquina.
Existem outras formas de bloquear conexes de modo mais seletivo usando chains especcos,
endereos de origem/destino, portas, etc., este tipo de congurao muito usada caso precise
fornecer algum tipo de servio que seja acessvel externamente e protegendo outros.
Captulo 10. Firewall iptables 160
10.8.2 Monitorando tentativa de conexo de trojans em sua mquina
As regras abaixo alertam sobre a tentativa de conexo dos trojans For Win mais conhecidos.
Coloquei isto aqui por curiosidade de algumas pessoas, pois mquinas Linux so imunes a
este tipo de coisa:
#!/bin/sh
TROJAN_PORTS="12345 31336 31337 31338 3024 4092 5714 5742 2583 8787 5556 5557"
iptables -t filter -N trojans-in
for PORTA in ${TROJAN_PORTS};do
iptables -A trojans-in -p tcp --sport=1024: --dport=${PORTA} -j LOG \
--log-prefix "FIREWALL: Trojan ${PORTA} "
iptables -A trojans-in -p tcp --sport=1024: --dport=${PORTA} -j DROP
done
iptables -t filter -A INPUT -i ppp0 -j trojans-in
A primeira linha do iptables cria o chain trojans-in dentro da tabela lter que usaremos para
armazenar nossas regras de rewall. A segunda (dentro do lao for) faz uma regra de LOG
para registrar as tentativas de acesso de trojans em nosso sistema, a terceira rejeita o acesso. A
quarta regra do iptables cria de todo o trfego vindo da interface ppp0 pra o chain trojans-in
(queremos que s o trfego vindo da internet seja analisado pelo chain trojans-in).
Muitas das portas especicadas na varivel TROJAN_PORTS so antigas conhecidas de quem
j brincou ou sofreramcomo Back Orifice, Win Crack, NetBus (quemnunca passou pela
fase de ter uma lista com mais de 100 netmasks e conseguir encontrar centenas de mquinas
por dia infectadas pelo BO? :-).
No cdigo acima a nica coisa que precisa fazer para adicionar mais portas inseri-las na
varivel TROJAN_PORTS e executar o programa. O lao do for executar as 2 regras para
cada porta processada (economizando linhas e linhas de regras, me livrando de uma LER e
poupando muitos bytes neste guia ;-).
Dependendo do nmero de portas alvo, este cdigo pode ser muito simplicado usando o
recurso multiport do iptables (veja Especicando mltiplas portas de origem/destino on
page 147 para detalhes).
10.8.3 Conectando sua rede interna a Internet
Oseguinte exemplo permite ligar sua rede interna coma faixa de IPs 192.168.1.* a internet
(usando uma conexo discada do tipo ppp):
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp+ -j MASQUERADE
echo "1" >/proc/sys/net/ipv4/ip_forward
Captulo 10. Firewall iptables 161
10.8.4 Um exemplo de rewall simples
Esta seo possui um exemplo mais elaborado de rewall que servir para mquinas conec-
tadas via ppp com uma rede interna conectada via Masquerading. Este exemplo no to
complexo e cobre as expectativas mais comuns de pessoas que gostam de explorar os potenci-
ais de rede no Linux ou satisfazer sua curiosidade. Ele poder ser facilmente adaptado para
atender outro tipo de necessidade. A congurao assumida a seguinte:
1 Mquina do rewall com 2 interfaces de rede, uma eth0 com o IP 192.168.1.1 que
serve de ligao a sua rede Interna, a outra ppp0 que a interface Internet.
2 Qualquer acesso externo a mquinas da rede interna bloqueado.
3 Os usurios da rede local tem acesso livre ao servidor Linux.
4 Qualquer acesso externo a mquina do rewall bloqueado, exceto conexes para o ser-
vio Apache (httpd). Outras tentativas de conexes devem ser explicitamente registra-
das nos logs do sistema para conhecimento do administrador.
5 Todos os usurios possuem acesso livre a Internet via Masquerading, exceto que o acesso
para o servio www deve ser obrigatoriamente feito via squid, e o servidor smtp a ser
usado dever ser o do rewall Linux.
6 Prioridades sero estabelecidas para os servios de telnet, IRC,talk e DNS.
#!/bin/sh
# Modelo de configurao de firewall
# Autor: Gleydson M. Silva
# Data: 05/09/2001
# Descrio: Produzido para ser distribudo livremente, acompanha o guia
# Foca GNU/Linux. http://www.guiafoca.org
#
# assumido um sistema usando kmod para carga automtica dos mdulos usados por
# esta configurao do firewall:
# ipt_filter
# ipt_nat
# ipt_conntrack
# ipt_mangle
# ipt_TOS
# ipt_MASQUERADE
# ipt_LOG
# Se voc tem um kernel modularizado que no utiliza o kmod, ser necessrio
# carregar estes mdulos via modprobe, insmod ou iptables --modprobe=modulo
##### Definio de Policiamento #####
# Tabela filter
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT ACCEPT
iptables -t filter -P FORWARD DROP
# Tabela nat
Captulo 10. Firewall iptables 162
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P POSTROUTING DROP
# Tabela mangle
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
##### Proteo contra IP Spoofing #####
for i in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 1 >$i
done
##### Ativamos o redirecionamento de pacotes (requerido para NAT) #####
echo "1" >/proc/sys/net/ipv4/ip_forward
# O iptables define automaticamente o nmero mximo de conexes simultneas
# com base na memria do sistema. Para 32MB = 2048, 64MB = 4096, 128MB = 8192,
# sendo que so usados 350 bytes de memria residente para controlar
# cada conexo.
# Quando este limite excedido a seguinte mensagem mostrada:
# "ip_conntrack: maximum limit of XXX entries exceed"
#
# Como temos uma rede simples, vamos abaixar este limite. Por outro lado isto
# criar uma certa limitao de trfego para evitar a sobrecarga do servidor.
echo "2048" > /proc/sys/net/ipv4/ip_conntrack_max
###############################################################
# Tabela filter #
###############################################################
##### Chain INPUT #####
# Criamos um chain que ser usado para tratar o trfego vindo da Internet e
iptables -N ppp-input
# Aceita todo o trfego vindo do loopback e indo pro loopback
iptables -A INPUT -i lo -j ACCEPT
# Todo trfego vindo da rede interna tambm aceito
iptables -A INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT
# Conexes vindas da interface ppp0 so tratadas pelo chain ppp-input
iptables -A INPUT -i ppp+ -j ppp-input
# Qualquer outra conexo desconhecida imediatamente registrada e derrubada
iptables -A INPUT -j LOG --log-prefix "FIREWALL: INPUT "
Captulo 10. Firewall iptables 163
iptables -A INPUT -j DROP
##### Chain FORWARD ####
# Permite redirecionamento de conexes entre as interfaces locais
# especificadas abaixo. Qualquer trfego vindo/indo para outras
# interfaces ser bloqueado neste passo
iptables -A FORWARD -d 192.168.1.0/24 -i ppp+ -o eth0 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -o ppp+ -j ACCEPT
iptables -A FORWARD -j LOG --log-prefix "FIREWALL: FORWARD "
iptables -A FORWARD -j DROP
##### Chain ppp-input ####
# Aceitamos todas as mensagens icmp vindas de ppp0 com certa limitao
# O trfego de pacotes icmp que superar este limite ser bloqueado
# pela regra "...! ESTABLISHED,RELATED -j DROP" no final do
# chain ppp-input
#
iptables -A ppp-input -p icmp -m limit --limit 2/s -j ACCEPT
# Primeiro aceitamos o trfego vindo da Internet para o servio www (porta 80)
iptables -A ppp-input -p tcp --dport 80 -j ACCEPT
# A tentativa de acesso externo a estes servios sero registrados no syslog
# do sistema e sero bloqueados pela ltima regra abaixo.
iptables -A ppp-input -p tcp --dport 21 -j LOG --log-prefix "FIREWALL: ftp "
iptables -A ppp-input -p tcp --dport 25 -j LOG --log-prefix "FIREWALL: smtp "
iptables -A ppp-input -p udp --dport 53 -j LOG --log-prefix "FIREWALL: dns "
iptables -A ppp-input -p tcp --dport 110 -j LOG --log-prefix "FIREWALL: pop3 "
iptables -A ppp-input -p tcp --dport 113 -j LOG --log-prefix "FIREWALL: identd "
iptables -A ppp-input -p udp --dport 111 -j LOG --log-prefix "FIREWALL: rpc"
iptables -A ppp-input -p tcp --dport 111 -j LOG --log-prefix "FIREWALL: rpc"
iptables -A ppp-input -p tcp --dport 137:139 -j LOG --log-prefix "FIREWALL: samba "
iptables -A ppp-input -p udp --dport 137:139 -j LOG --log-prefix "FIREWALL: samba "
# Bloqueia qualquer tentativa de nova conexo de fora para esta mquina
iptables -A ppp-input -m state --state ! ESTABLISHED,RELATED -j LOG --log-prefix "FIREWALL: ppp-in "
iptables -A ppp-input -m state --state ! ESTABLISHED,RELATED -j DROP
# Qualquer outro tipo de trfego aceito
iptables -A ppp-input -j ACCEPT
#######################################################
# Tabela nat #
#######################################################
Captulo 10. Firewall iptables 164
##### Chain POSTROUTING #####
# Permite qualquer conexo vinda com destino a lo e rede local para eth0
iptables -t nat -A POSTROUTING -o lo -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j ACCEPT
# No queremos que usurios tenham acesso direto a www e smtp da rede externa, o
# squid e smtpd do firewall devem ser obrigatoriamente usados. Tambm registramos
# as tentativas para monitorarmos qual mquina est tentando conectar-se diretamente.
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp+ -p tcp --dport 80 -j LOG --log-prefix "FIREWALL: SNAT-www "
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp+ -p tcp --dport 25 -j LOG --log-prefix "FIREWALL: SNAT-smtp "
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp+ -p tcp --dport 25 -j DROP
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp+ -p tcp --dport 80 -j DROP
# feito masquerading dos outros servios da rede interna indo para a interface
# ppp0
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp+ -j MASQUERADE
# Qualquer outra origem de trfego desconhecida indo para eth0 (conexes vindas
# de ppp+) so bloqueadas aqui
iptables -t nat -A POSTROUTING -o eth0 -d 192.168.1.0/24 -j LOG --log-prefix "FIREWALL: SNAT unknown"
iptables -t nat -A POSTROUTING -o eth0 -d 192.168.1.0/24 -j DROP
# Quando iniciamos uma conexo ppp, obtermos um endereo classe A (10.x.x.x) e aps
# estabelecida a conexo real, este endereo modificado. O trfego indo para
# a interface ppp no dever ser bloqueado. Os bloqueios sero feitos no
# chain INPUT da tabela filter
iptables -t nat -A POSTROUTING -o ppp+ -j ACCEPT
# Registra e bloqueia qualquer outro tipo de trfego desconhecido
iptables -t nat -A POSTROUTING -j LOG --log-prefix "FIREWALL: SNAT "
iptables -t nat -A POSTROUTING -j DROP
###############################################
# Tabela mangle #
###############################################
##### Chain OUTPUT #####
# Define mnimo de espera para os servios ftp, telnet, irc e DNS, isto
# dar uma melhor sensao de conexo em tempo real e diminuir o tempo
# de espera para conexes que requerem resoluo de nomes.
iptables -t mangle -A OUTPUT -o ppp+ -p tcp --dport 21 -j TOS --set-tos 0x10
iptables -t mangle -A OUTPUT -o ppp+ -p tcp --dport 23 -j TOS --set-tos 0x10
iptables -t mangle -A OUTPUT -o ppp+ -p tcp --dport 6665:6668 -j TOS --set-tos 0x10
iptables -t mangle -A OUTPUT -o ppp+ -p udp --dport 53 -j TOS --set-tos 0x10
165
Captulo 11
Gerenciamento de contas e cuidados
para a proteo de senhas
Este captulo traz explicaes e comandos teis para o gerenciamento de contas e proteo de
senhas de usurios em sistemas Linux. Tambm explica os principais mtodos usados para
quebra de senha usando diversos mtodos como engenharia social, brute force, etc., bem como
dicas de como escolher boas senhas para voc e seus usurios e mtodos automatizados de
checagem de senhas vulnerveis.
Estes mtodos so explicados para que voc entenda, se previna destes tipos de ataques alm
de entender a importncia de polticas de proteo de senhas.
11.1 Introduo
A criao de uma conta em uma mquina Linux pode expor seu sistema (ou todas suas redes)
a crackers simplesmente coma falta de treinamento e polticas de segurana. Uma invasor com
um simples acesso a uma conta de usurio pode conseguir acesso a reas que contm dados
importantes expondo seu sistema a ataques ou roubo de dados.
Um rewall no pode fazer muito em uma situao dessas, um acesso atravs de uma conta
de sistema vlida difcil de ser auditado e descoberto, a no ser que o usurio monitore seus
acesso via lastlog e o administrador conhea os hbitos de seus usurios para notar o uso
estranho de contas em determinados dias/horrios. Evitar situaes como esta depende mais
de conscientizao e treinamento tanto do administrador como dos usurios das contas para
no expor o sistema a um ataque direto. Este captulo do guia explicar as situaes mais
comuns e alguns exemplos de como tais ataques acontecem.
ATENO: - Os dados aqui disponibilizados so puramente para ns didticos e compreen-
so de como tais situaes funcionam para se criar mecanismos de defesa personalizados de
acordo com o que deseja proteger.
Captulo 11. Gerenciamento de contas e cuidados para a proteo de senhas 166
11.2 Criao, monitoramento e segurana de contas
Para adicionar uma conta de usurio ao sistema simples, basta um comando adduser
[usurio] e alguns poucos segundos para responder as questes do programa. Quando
criamos contas para outros usurios temos 2 alternativas: deixarmos a senha em branco ou
escolher uma senha que ser passada ao usurio para que ele possa fazer a troca mais tarde.
A primeira alternativa muito perigosa, pois uma pessoa com acesso a /etc/passwd poder
facilmente descobrir sua lista de usurios (principalmente em uma grande empresa quando
conhecemos as polticas de criao de novas contas). Um funcionrio notaria a presena do
novato e poderia aproveitar esta oportunidade para tentar incriminar este usando a conta re-
cm criada ou tentar outras coisas para obter benefcio prprio atravs do descuido de outros.
O segundo mtodo de senha inicial um pouco mais seguro e de preferncia a senha deve ser
escolhida pelo usurio para que pessoas que conhecem o estilo de senhas iniciais escolhidas
pelo administrador no possam deduzir a nova senha criada. comum vermos senhas como
novo1234, 123456, abcdef, a1b3c3, o nome do usurio como senhas iniciais, pois
fcil de lembrar. Senhas deste tipo so as primeiras a ser tentadas por crackers e programas
especcos para este m. Mas se o o usurio esquecer de trocar sua senha provisria?
Oprograma chage e passwd possui recursos que permitemdenir limites mnimos e mximo
do tempo para troca de senha de acesso, nmero mximo de dias aps expirar o tempo de
troca da senha em que a conta ser permanentemente desabilitada (at que o administrador a
reative) e o perodo mnimo entre troca de senhas. Alguns exemplos:
passwd -x 10 -w 3 teste
A senha do usurio teste expirar aps 10 dias (-x 10) e ele ser avisado com 3 dias de antece-
dncia (-w 3) para trocar sua senha. Aps o perodo mximo o usurio ser obrigado a trocar
a senha.
Quando o usurio efetuar o login receber a seguinte mensagem: Warning: your
password will expire in 3 days.
passwd -x 10 -w 3 -i 2 teste
A senha do usurio teste expirar aps 10 dias (-x 10) e ele ser avisado com 3 dias de antece-
dncia (-w 3) para trocar sua senha, aps a expirao da senha, o usurio tem 2 dias antes da
conta ser desativada (-i 2). Se o perodo expirar e o usurio tentar umnovo login ser mostrada
a mensagem:
Your account has expired: Please contact your system administrator
Para reativar a conta acima, remova totalmente o bloqueio da conta do usurio teste com
passwd -x 0 teste, passwd -x 99999 -w 7 -i 0 teste ou especique um perodo
de dias maior em adio queles especicados para que ele possa trocar a senha.
Por exemplo, caso tenha passado 3 dias desde que a conta acima expirou e deseje dar mais 2
dias para o usurio trocar a conta: passwd -x 17 -i 0 teste A conta ser reativada por
Captulo 11. Gerenciamento de contas e cuidados para a proteo de senhas 167
mais 2 dias dando a oportunidade do usurio trocar a senha. Preste ateno neste exemplo
para entender bem a situao e prazos.
passwd -x 90 -n 60 -w 15 -i 0 teste
A senha do usurio teste expirar aps 90 dias (-x 90), ele ser avisado para trocar sua senha
com 15 dias antes do prazo nal (-w 15) e a conta ser imediatamente desativada caso o prazo
mximo para troca da senha expire (-i 0). O usurio tambm no poder trocar sua senha
durante os primeiros 60 dias desde a ltima troca de senha (-n 60).
Em sistemas onde precisa adicionar restries a muitos usurios na criao da conta, re-
comendvel seguir os mtodos descritos em Denindo valores padres de restrio on this
page.
OBS1: Em sistemas com senhas ocultas ativadas (veja Shadow Passwords on page 173) as
restries acima sero especicadas no arquivo /etc/shadow, isto garante que s o usurio
root tenha acesso aos detalhes fornecidos neste arquivo.
OBS2: A -d do passwd serve para remover a senha do usurio especicado ou seja somente
ser necessrio fornecer o nome de usurio para ter acesso ao sistema.
OBS3: Leve em considerao que o uso do recursos de senhas de grupo um risco de segu-
rana, pois a mesma senha ser compartilhada entre diversas pessoas.
OBS4: O programa useradd combina as funes do adduser e passwd para garantir que
a conta seja criada com as restries apropriadas. O nico inconveniente que o useradd
quebra o Debian Policy e precisa de todos todos os parmetros para a criao correta da conta
(como o diretrio home, senha criptografada, e UID numrico). Seu uso indicado em shell
scripts que cuidam automaticamente da tarefa de adicionar usurios ao sistema.
11.2.1 Denindo valores padres de restrio
Isto muito til quando precisa criar diversos usurios com as mesmas restries de contas,
isto tornar o gerenciamento do sistema muito mais prtico (tudo em Unix feito para ser
mais prtico, s devemos saber onde mexer). O arquivo /etc/defaults/useradd contm
valores padres que sero usados pelo useradd e adduser para denir valores de restries
de contas. Estes valores so gerados usando a opo -D em combinao com as seguintes
opes do useradd:
-b [home] - Especicar o diretrio home de usurio. O padro /home.
-e [data] - Data padro de expirao de contas, especicada no formato AnoMesDia.
Por exemplo, 20010920.
-f [dias] - Nmero mximo de dias que a conta permanece vlida aps a data de
expirao at ser desativada.
-g [gid/grupo] - ID do grupo ou nome do grupo que o usurio pertencer inicial-
mente.
-s [shell] - Shell do usurio. O padro /bin/bash.
OBS: Note que nem todas as opes acima tero efeito com o adduser (principalmente as
opes -f, -g e -s que so especicadas no seu arquivo de congurao /etc/adduser.conf).
Captulo 11. Gerenciamento de contas e cuidados para a proteo de senhas 168
11.2.2 Senhas fceis de adivinhar e escolha de boas senhas
A senha lhe identica como o verdadeiro dono de uma conta em um sistema para garantir
acesso a seus recursos. A senha de um sistema to importante quanto uma senha de sua
conta bancria, caso caia em mos erradas as conseqncias podero ser catastrcas, todo
cuidado pouco na hora de escolher uma senha.
Senhas fceis de adivinhar so o primeiro motivo de sucesso de crackers no acesso a sistemas
de computadores (veja Deduo on page 170 e Engenharia Social on page 170), o adminis-
trador pode forar o usurio a fazer trocas peridicas de senhas atravs dos recursos citados
em Criao, monitoramento e segurana de contas on page 166, mas quem vai garantir que
ele esteja escolhendo boas senhas para que ningum as descubra com facilidade? Abaixo uma
lista de senhas ruins (que dever evitar a todo custo usa-las) e boas:
Senhas Ruins
O uso da palavra senha como senha! Isto parece idiota mais existe. . .
Senhas com o mesmo nome do login (joao/joao).
Compostas por letras ou nmeros emseqencia crescente ou decrescente (abcdef, 123456,
654321, etc, etc). Este tipo de senha pode ser adivinhada por deduo e so uma das
primeiras combinaes que crackers usam para acertar senhas.
palavras relacionadas com o gosto pessoal. Por exemplo escort, vectra, subaru se
a pessoa amante de carros.
Nome da esposa, lhos, familiares, animal de estimao, time de futebol, dolo da
TV/lmes ou qualquer coisa relacionada a familiares ou indiretamente ao usurio.
Idade, data de aniversrio, data de casamento, nmero de identidade, ttulo de eleitor,
placa de carro ou qualquer coisa que seja caracterstica do usurio.
Palavras existentes. Um ataque de dicionrio poder descobrir facilmente sua senha.
Senhas com menos de 8 letras
Senhas apenas em minsculas ou MAISCULAS.
Senhas Boas
Uma boa senha nunca dever ser lida mas fcil de lembrar. Por exemplo pense em uma
frase importante para voc meu sistema operacional preferido o Linux e pegue a
primeira letra de cada palavra: msopeol. PRONTO esta escolhida uma boa senha que
fcil de se lembrar e difcil de ser quebrada por ataques de dicionrio!
Uma boa senha deve conter nmeros e letras. Asenha acima poderia ser modicada para
msopeol1
Conter letras maisculas e minsculas. msopeoL1.
Conter 8 caracteres sempre que possvel. Isto aumenta bastante o nmero de combina-
es necessrias para se quebrar uma senha em um ataque brute force (veja Brute Force
on page 172). Mesmo que a senha escolhida no chegue a 8 caracteres mnimos, voc
poder combina-la com nmeros.
Comas dicas acima, a possibilidade de algumconseguir quebrar uma senha criptografada em
seu sistema usando os ataques descritos em Tipos de ataques mais comuns para se conseguir
uma senha. on page 170 praticamente nula! Para os paranicos de planto, o utilitrio
makepasswd pode criar uma senha com caracteres completamente aleatrios:
makepasswd --chars 8
Captulo 11. Gerenciamento de contas e cuidados para a proteo de senhas 169
4y0sBdwM
Este comando retorna uma string com 8 caracteres (chars 8) 4y0sBdwM. Se voc entendeu
boa parte deste guia tenho certeza que 1 ou 2 dias de treino e se acostuma com uma senha
como esta ;-)
OBS: NUNCA NUNCA d pistas sobre sua senha! Para voc isto pode ser um desao lanado
a outras pessoas quase impossvel de ser resolvido, mas no se esquea que muita gente
especializada neste tipo de deduo.
11.2.3 Atualizao de senhas de mltiplas contas
O programa chpasswd usado para tal operao. Deve ser especicado um arquivo que
contm os campos usurio:senha por linha. Caso as senhas estejam encriptadas dever ser
especicada a opo -e ao programa.
chpasswd -e /localadmin/contas/contas.db
O comando acima atualiza a senha de todos os usurios especicados no arquivo contas.db
de uma s vez.
11.2.4 A senha do usurio root
Esta seo foi retirada do Manual de Instalao da Debian.
A conta root tambm chamada de super usurio, este um login que no possui restries
de segurana. A conta root somente deve ser usada para fazer a administrao do sistema, e
usada o menor tempo possvel.
Qualquer senha que criar dever conter de 6 a 8 caracteres, e tambm poder conter letras
maisculas e minsculas, e tambm caracteres de pontuao. Tenha um cuidado especial
quando escolher sua senha root, porque ela a conta mais poderosa. Evite palavras de di-
cionrio ou o uso de qualquer outros dados pessoais que podem ser adivinhados.
Se qualquer um lhe pedir senha root, seja extremamente cuidadoso. Voc normalmente nunca
deve distribuir sua conta root, a no ser que esteja administrando um computador com mais
de um administrador do sistema.
Utilize uma conta de usurio normal ao invs da conta root para operar seu sistema. Porque
no usar a conta root? Bem, uma razo para evitar usar privilgios root por causa da facili-
dade de se cometer danos irreparveis como root. Outra razo que voc pode ser enganado
e rodar um programa Cavalo de Tria que um programa que obtm poderes do super usurio
para comprometer a segurana do seu sistema sem que voc saiba.
Captulo 11. Gerenciamento de contas e cuidados para a proteo de senhas 170
11.3 Tipos de ataques mais comuns para se conseguir uma senha.
11.3.1 Deduo
Ocracker se aproveita da ingenuidade de usurios que deixamsenhas embranco, usamsenhas
simples como o prprio nome, abcdef, asdfg, 123456, e outros tipos de senhas comuns
para tentar obter acesso ao sistema. Senhas deduzidas so geralmente senhas muito simples
e muito usadas. . . Uma situao comum para a escolha de uma senha deste tipo o medo de
esquecer a senha (quando no se consegue pensar em algo mais difcil e ao mesmo tempo que
seja fcil de lembrar) e quando o usurio pego desprevenido e no se sabe o que usar como
senha (como na assinatura de um provedor Internet, muito comum essa situao).
Geralmente muito rpido e muito ecaz dependendo das habilidades do atacante dispe.
11.3.2 Engenharia Social
Ataques por engenharia social so feitos atravs de pesquisa de dados pessoais e outras carac-
tersticas relacionadas ao usurio (time de futebol, data de nascimento dele, da esposa, lhos,
nome da atriz predileta, etc) e usando estes dados coletados para auxiliar na descoberta da
senha. Este ataque requer uma pesquisa sobre os hbitos, gostos, etc. Mas existem outros tipos
de ataque baseados em engenharia social, inclusive com o cracker passando-se pelo usurio.
Para diminuir as possibilidades deste tipo de ataque entenda e siga os procedimentos da parte
Senhas Boas na Senhas fceis de adivinhar e escolha de boas senhas on page 168 e continue
lendo esta seo.
Outro detalhe importante para diminuir as possibilidades de um ataque deste tipo bem su-
cedido permitir somente o acesso do servio de finger a redes conveis (locais onde uns
conhecem os outros). Os detalhes fornecidos pelo nger podem ser sucientes para garantir
sucesso deste tipo de ataque:
#finger joao
Login: joao Name: Joao P. M.
Directory: /home/joao Shell: /bin/bash
Office: Sala 400 Andar 2, 123-4567 Home: 123-7654
Last login Fri Aug 25 21:20 (AMT) on tty3
No mail.
Grupo de cadastramento.
As ltimas linhas da sada do nger so os dados contidos nos arquivos .plan e .project
do diretrio de usurio. O cracker com base nos dados fornecidos acima pelo nger poderia
inventar uma situao em que necessitaria de troca de senha por algum motivo. Abaixo uma
situao onde o cracker sabe que no existe identicador de chamadas na empresa e conhece
as fragilidades:
Cracker: Disca para o CPD?
Vitima: CPD?
Captulo 11. Gerenciamento de contas e cuidados para a proteo de senhas 171
Cracker: Oi, eu sou o Joao P. M. do grupo de cadastramento aqui do segundo andar, estou
tentando entrar no sistema mas por algummotivo ele no aceita minha senha (fazendo-se
de ignorante no assunto).
Vitima: Por favor Sr. verique se o Caps Lock do seu teclado est ativado, letras em
maisculas/minsculas fazem diferena em nossos sistemas.
Cracker: Ok vou checar (espera um tempo). No, esta tudo Ok, voc poderia agilizar isto
de alguma maneira, preciso lanar algumas chas no sistema.
Vitima: Posso modicar sua senha para um nome qualquer, depois voc poder trocar
por si prprio.
Cracker: Ok, por mim tudo bem.
Vitima: Humm, modiquei para cad1234, basta voc usa-la e ter acesso ao sistema.
Aps isso execute o utilitrio passwd para troca-la para algo que desejar.
Cracker: Ok, muito obrigado. Tenha um bom dia.
Este um exemplo simples de ataque por engenharia social. Dependendo do objetivo, este
tipo de ataque pode levar semanas e as vezes requer contatos com diversas empresas criando
diversas situaes para obter detalhes necessrios para atingir o objetivo.
As polticas de segurana de senhas minimizam riscos deste tipo. Como este um caso que o
requisitante umfuncionrio prximo do departamento de informtica, o mais adequado seria
o administrador se deslocar ao setor (ou enviar um tcnico do setor treinado para tal situao)
para saber se quem diz ser quem est realmente no local enfrentando aquela situao. O
contato com o responsvel do setor (conhecido do tcnico) tambm pode ser uma alternativa
antes de entregar uma senha a um desconhecido.
Para casos externos (principalmente para empresas que mantm determinados servios em
funcionamento em nosso servidor, como servidores de pginas), o procedimento correto seria
passar uma nova senha por e-mail (de preferncia criptografado compgp) ao invs de telefone.
Isto garantir que a senha no caia nas mos erradas.
OBS1: Qualquer detalhe sobre a poltica de criao de senhas, trocas de senhas, etc. poder ter
muito valor para um cracker obter acesso ao seu sistema.
OBS2: Diculte as maneiras para se obter acesso root ao sistema via conta de usurio comum.
de extrema importncia utilizar conexes de dados criptografadas quando for necessrio
acesso externo ao seu sistema.
OBS3: Nunca use uma mesma senha para fazer tudo (banco, acessar seu sistema, conectar-se
ao seu provedor, senha de root). Voc estar em srios apuros caso algum tenha acesso a esta
senha. difcil lembrar de vrias senhas, mas voc pode aditar uma senha e criar modicaes
a partir dela para utilizao em outros locais, por exemplo: wekpdm => Bwekpdm1 =>
3wekpdmS, etc.
11.3.3 Ataques por dicionrio
De posse do arquivo de senhas /etc/passwd, o cracker utiliza um arquivo que contm di-
versas palavras que sero tentadas como senha. Este trabalho feito automaticamente por
ferramentas dedicadas a este tipo de tarefa e pode levar dias dependendo da lista de senhas
do cracker e quantidades de usurios existentes no arquivo de senha.
Captulo 11. Gerenciamento de contas e cuidados para a proteo de senhas 172
Note que o uso de criptograa md5 e senhas ocultas dicultam bastante ao arquivo de senhas e
o sucesso de um ataque bem sucedido (veja Shadow Passwords on the facing page e Senhas
MD5 on the next page).
11.3.4 Brute Force
De posse do arquivo de senhas /etc/passwd o cracker utiliza uma ferramenta que tenta
diversas combinaes de letras seqencialmente na tentativa de descobrir uma senha. Este
ataque geralmente usado como ltimo recurso aps um ataque por dicionrio, e leva muito
tempo para descobrir uma senha.
Dependendo se uma senha conter caracteres aleatrios, combinao de letras maiscu-
las/minsculas, nmeros, a senha ser praticamente impossvel de ser descoberta. Note que
o uso de criptograa md5 e senhas ocultas aumentam bastante a proteo das senhas (veja Sha-
dow Passwords on the facing page e Senhas MD5 on the next page).
11.3.5 Monitoramento de toques do teclado
Este ataque muito comum em sistemas DOS e Windows, um programa instalado sem o
conhecimento do usurio que grava todos os toques do teclado em um arquivo escondido pelo
cracker. Aps certo tempo o cracker obtm acesso ao arquivo e aos dados que ele contm. Este
tipo de ataque muito perigoso e pode capturar senhas no s do sistema como nmeros de
carto de crdito digitados (caso o usurio tenha feito compras on-line), conta bancria+senha
e tudo mais que for digitado pelo teclado.
11.3.6 Login falso
Esta uma forma rpida de se conseguir acesso a um sistema. criada uma tela de login
idntica a original do sistema, s que ao digitar nome e senha, estes so gravados em um
arquivo (que ser mais tarde recuperado pelo cracker para obter acesso ao sistema) e uma
mensagem de erro ser exibida pelo sistema.
Naturalmente o usurio pensar que digitou o nome/senha incorretamente e far uma nova
tentativa, a segunda ocorrer com sucesso (fazendo este pensar que errou *mesmo* a senha).
Sua ateno muito importante para evitar este tipo de ataque, caso descone de algo errado,
entra no sistema e d umfind --type f -cmin -3 para localizar os arquivos modicados
nos ltimos 3 minutos e localizar possveis bancos de dados de senhas.
Outra alternativa realmente digitar uma senha invlida intencionalmente (e diferente da cor-
reta) e na segunda tentativa lanar a senha vlida (normalmente sistemas deste tipo bem ela-
borados chamam o verdadeiro sistema de login na segunda tentativa).
Captulo 11. Gerenciamento de contas e cuidados para a proteo de senhas 173
11.4 Melhorando a segurana das senhas armazenadas em seu sis-
tema
11.4.1 Shadow Passwords
Senhas Ocultas (shadow passwords) aumentam consideravelmente a senha do seu sistema
pois as senhas sero armazenadas em um arquivo separado: /etc/shadow para senhas de
usurios e /etc/gshadow para senhas de grupos. Estes dois arquivos podero ser acessados
somente pelo usurio root. O armazenamento de senhas no arquivo /etc/passwd e /etc
/groups no seguro, estes arquivos devem ser lidos por todos os usurios porque muitos
programas mapeiam a UID do usurio com seu nome e vice versa.
O utilitrio shadowconfig usado para ativar/desativar o suporte a senhas ocultas (de
usurios e grupos) em seu sistema. Adicionalmente os utilitrios pwconv/grpconv po-
dem ser usados separadamente para ativar o suporte a senhas ocultas de usurios/grupos
e pwunconv/grpunconv para desativar este suporte.
ATENO: Caso voc inclua usurios em grupos manualmente no arquivo /etc/passwd,
tambm precisar fazer isto no arquivo /etc/shadow para que no tenha problemas. Esta ta-
refa feita automaticamente com o comando adduser usurio grupo. O programa vipw
e vigr tambm podem ser usados com a opo -s para editar os arquivos /etc/shadow e
/etc/gshadow respectivamente.
11.4.2 Senhas MD5
O sistema de criptograa usado pelas senhas MD5 mais seguro que o padro Crypto e per-
mitem o uso de senhas maiores do que 8 caracteres.
O uso de senhas MD5 recomendado para aumentar o nvel de proteo da senha. No use
caso estiver executando umservio de NIS. OBS: Caso utilize senhas MD5 emumsistema com
PAM, inclua a palavra md5 na linha de congurao do mtodo de autenticao password do
mdulo pam_unix.so:
password required pam_unix.so md5
Captulo 11. Gerenciamento de contas e cuidados para a proteo de senhas 174
175
Captulo 12
Apache
Esta captulo documenta a congurao, personalizao, introduo aos mecanismos de au-
tenticao e controle de acesso do Apache, sistema proxy, virtual hosting, e exemplos de con-
gurao do servidor httpd. Ele no tem como objetivo ser uma referncia completa de con-
gurao, mas sim abordar didaticamente o assunto.
12.1 Introduo
O servidor web um programa responsvel por disponibilizar pginas, fotos, ou qualquer
outro tipo de objeto ao navegador do cliente. Ele tambm pode operar recebendo dados do
cliente, processando e enviando o resultado para que o cliente possa tomar a ao desejada
(como em aplicaes CGIs, banco de dados web, preenchimento de formulrios, etc).
O Apache um servidor Web extremamente congurvel, robusto e de alta performance de-
senvolvido por uma equipe de voluntrios (conhecida como Apache Group) buscando criar
um servidor web com muitas caractersticas e com cdigo fonte disponvel gratuitamente via
Internet. Segundo a Netcraft (http://www.netcraft.com/), o Apache mais usado que
todos os outros servidores web do mundo juntos.
Este captulo no tenta ser um guia completo ao Apache, mas tentar mostrar como sua es-
trutura organizada, as diretivas principais de congurao, diretivas de segurana, virtual
hosting, proxy, o uso de utilitrios de gerenciamento do servidor, como personalizar algumas
partes do servidor e programas teis de terceiros para anlise e diagnstico do servidor web.
No deixe tambm de ver Exemplo comentado de um arquivo de congurao do Apache on
page 220 pois contm diretivas bsicas de congurao comentadas e explicaes interessante
e faz parte do aprendizado.
12.1.1 Verso
assumido que esteja usando a verso 1.3.22 do apache. As explicaes contidas aqui podem
funcionar para verses posteriores, mas recomendvel que leia a documentao sobre modi-
Captulo 12. Apache 176
caes no programa (changelog) em busca de mudanas que alterem o sentido das explicaes
fornecidas aqui.
12.1.2 Um resumo da Histria do Apache
OApache temcomo base o servidor web NCSA 1.3 (National Center of Supercomputing Applica-
tions), que foi desenvolvido por Rob McCool. Quando Rob deixou o NCSA, o desenvolvimento
foi interrompido, assim muitos desenvolvedores buscaram personalizar sua prpria verso do
NCSA ou adicionar mais caractersticas para atender as suas necessidades. Neste momento
comea a histria do Apache com Brian Behlendorf e Cliff Skolnick abrindo uma lista de discus-
so para interessados no desenvolvimento, conseguindo espao em um servidor doado pela
HotWired e trocando patches corrigindo problemas, adicionando recursos e discutindo idias
com outros desenvolvedores e hackers interessados neste projeto.
A primeira verso ocial do Apache foi a 0.6.2, lanada em Abril de 1995 (neste perodo a
NCSA retomava o desenvolvimento de seu servidor web, tendo como desenvolvedores Bran-
don Long e Beth Frank que tambm se tornaram membros especiais do grupo Apache, compar-
tilhando idias sobre seus projetos).
Nas verses 2.x do Apache, a escalabilidade do servidor foi ampliada suportando as platafor-
mas Win32 (no obtendo o mesmo desempenho que em plataformas UNIX mas sendo melho-
rado gradativamente).
12.1.3 Enviando Correes/Contribuindo com o projeto
Umformulrio est disponvel na Web para o envio de correes/sugestes emhttp://www.
apache.org/bug_report.html/. Uma lista de anuncio sobre o Apache est disponvel em
<apache-announce@apache.org> que divulgam correes, novas verses e realizao de
eventos.
Mais detalhes sobre o desenvolvimento do Apache podem ser visualizadas na URL http:
//dev.apache.org/.
12.1.4 Caractersticas do Apache
Abaixo esto algumas caractersticas que fazem esse servidor web o preferido entre os admi-
nistradores de sistemas:
Possui suporte a scripts cgi usando linguagens como Perl, PHP, Shell Script, ASP, etc.
Suporte a autorizao de acesso podendo ser especicadas restries de acesso separa-
damente para cada endereo/arquivo/diretrio acessado no servidor.
Autenticao requerendo um nome de usurio e senha vlidos para acesso a alguma
pgina/sub-diretrio/arquivo (suportando criptograa via Crypto e MD5).
Negociao de contedo, permitindo a exibio da pgina Web no idioma requisitado
pelo Cliente Navegador.
Suporte a tipos mime.
Captulo 12. Apache 177
Personalizao de logs.
Mensagens de erro.
Suporte a virtual hosting ( possvel servir 2 ou mais pginas com endereos/ portas
diferentes atravs do mesmo processo ou usar mais de um processo para controlar mais
de um endereo).
Suporte a IP virtual hosting.
Suporte a name virtual hosting.
Suporte a servidor Proxy ftp e http, com limite de acesso, caching (todas exivelmente
congurveis).
Suporte a proxy e redirecionamentos baseados em URLs para endereos Internos.
Suporte a criptograa via SSL,Certicados digitais
Mdulos DSO (Dynamic Shared Objects) permitem adicionar/remover funcionalidades
e recursos sem necessidade de recompilao do programa.
12.1.5 Ficha tcnica
Pacote: apache
Utilitrios:
apache - Servidor Web Principal
apachectl - Shell script que faz interface com o apache de forma mais amigvel
apacheconfig - Script em Perl para congurao interativa bsica do Apache
htpasswd - Cria/Gerencia senhas criptografadas Crypto/MD5
htdigest - Cria/Gerencia senhas criptografadas Crypto/MD5
dbmmanage - Cria/Gerencia senhas em formato DBM (Perl)
logresolve - Faz um DNS reverso dos arquivos de log do Apache para obter o ende-
reo de hosts com base nos endereos IPs.
ab - Apache Benchmarcking - Ferramenta de medida de desempenho do servidor Web
Apache.
Por padro, os arquivos de congurao do Apache residem no diretrio /etc/apache:
httpd.conf Arquivo de congurao principal do Apache, possui diretivas que controlam a
operao do daemon servidor. Um arquivo de congurao alternativo pode ser especi-
cado atravs da opo -f da linha de comando.
srm.conf Contm diretivas que controlam a especicao de documentos que o servidor ofe-
rece aos clientes. O nome desse arquivo pode ser substitudo atravs da diretiva Resour-
ceCong no arquivo principal de congurao.
access.conf Contm diretivas que controlam o acesso aos documentos. O nome desse arquivo
pode ser substitudo atravs da diretiva AccessCong no arquivo principal de congura-
o.
O servidor Web l os arquivos acima na ordem que esto especicados (httpd.conf,
srm.conf e access.conf). As conguraes tambm podem ser especicadas direta-
mente no arquivo httpd.conf. Note que no obrigatrio usar os arquivos srm.conf e
access.conf, mas isto proporciona uma melhor organizao das diretivas do servidor, prin-
cipalmente quando se tem um grande conjunto de diretivas. Um exemplo comentado destes
trs arquivos de congurao encontrado em Exemplo comentado de um arquivo de con-
gurao do Apache on page 220.
Captulo 12. Apache 178
12.1.6 Requerimentos
A mquina mnima para se rodar um servidor Apache para atender a uma rede padro
10MB/s um Pentium 90, 24MB de RAM, um HD com um bom desempenho e espao em
disco considervel de acordo com o tamanho projetado de seu servidor web (considerando
seu crescimento).
Uma congurao mais rpida para redes 100MB/s teria como processador um Cyrix MX ou
Intel Pentium MMX como plataforma mnima (Cyrix o recomendado pelo alto desempe-
nho no processamento de strings), barramento de HD SCSI com uma boa placa controladora
(Adaptec 19160 ou superior) com 64MB de RAM no mnimo.
12.1.7 Arquivos de log criados pelo Apache
O servidor httpd grava seus arquivos de log geralmente em /var/log/apache, no pos-
svel descrever os arquivos de logs usados porque tanto seus nomes como contedo podem
ser personalizados no arquivo httpd.conf. Mesmo assim, os arquivos de logs encontrados
na instalao padro do Apache so os seguintes:
access.log - Registra detalhes sobre o acesso as pginas do servidor httpd.
error.log - Registra detalhes saber erros de acesso as pginas ou erros internos do
servidor.
agent.log - Registra o nome do navegador do cliente (campo UserAgent do cabealho
http).
Mais referncias podemser encontradas emSistema de Log do Apache on page 203. Umbom
programa para gerao de estatsticas de acesso com grcos o Relatrio grco de acesso
ao sistema on page 208.
12.1.8 Instalao
apt-get install apache apache-doc
(o pacote apache-doc contm a documentao de referencia do Apache, recomendvel
instala-lo se estiver curioso e deseja entender melhor seu funcionamento ou consultar direti-
vas).
12.1.9 Iniciando o servidor/reiniciando/recarregando a congurao
O Apache pode ser executado tanto como um servidor Inetd ou como um Daemon. A inicia-
lizao de programas pelo Inetd uma boa estratgia quando voc precisa de um controle de
acesso bsico (o fornecido pelo tcpd), e o servio pouco usado na mquina.
A segurana de um servio iniciado pelo inetd pode ser substituda e melhorada por um
rewall bem congurado, garantindo facilidades extras como um relatrio de trfego para a
porta do servidor web, por exemplo. Mesmo assim se o servidor Apache estiver rodando
Captulo 12. Apache 179
como daemon e estiver ocioso, ele ser movido para swap liberando a memria RAM para a
execuo de outros programas.
Neste captulo ser assumido seu funcionamento do Apache como Daemon, que o mtodo
de funcionamento recomendado para sites de grande trfego onde ele freqentemente requi-
sitado e considerado um servio crtico.
O mtodo padro para iniciar programas como daemons na Debian atravs dos di-
retrios /etc/rc?.d. Cada diretrio deste contm os programas que sero executa-
dos/interrompidos no nvel de execuo ? (rc1.d/, rc2.d/ . . . ). O contedo destes di-
retrios so links para os scripts originais em /etc/init.d/programa, o nosso programa
alvo /etc/init.d/apache. O /etc/init.d/apache aceita os seguintes parmetros:
start - Inicia o Apache
stop - Finaliza o Apache
restart - Reinicia o Apache, efetuando uma pausa de 5 segundos entre a interrupo
do seu funcionamento e reinicio.
reload - Recarrega os arquivos de congurao do Apache, as alteraes entram em
funcionamento imediatamente.
reload-modules - Recarrega os mdulos. Basicamente feito um restart no servidor.
force-reload - Faz a mesma funo que o reload
Para reiniciar o Apache usando o /etc/init.d/apache, digite:
./etc/init.d/apache restart
ou
cd /etc/init.d;./apache restart
Na realidade, o que o /etc/init.d/apache faz interagir diretamente com o shell script
apachectl.
O apachectl recebe os parmetros enviados pelo usurio e converte para sinais que sero
enviados para o binrio apache. Da mesma forma ele verica os cdigos de sada do apache
e os transforma em mensagens de erro legveis para o usurio comum. Os seguintes comandos
so aceitos pelo apachectl:
httpd-server/start - Inicia o Apache
stop - Finaliza o Apache (enviando um sinal TERM)
restart - Reinicia o Apache (enviando um sinal HUP)
graceful - Recarrega os arquivos de congurao do Apache (enviando um sinal
USR1)
fullstatus - Mostra o status completo do servidor Apache (requer o lynx e o mdulo
mod_status carregado).
status - Mostra o status do processo do servidor Apache (requer o lynx e o mdulo
mod_status carregado).
configtest - Verica se a sintaxe dos arquivos de congurao est OK (executa um
apache -t).
12.1.10 Opes de linha de comando
-D nome - dene um nome que ser usado na diretiva <IfDene nome>.
Captulo 12. Apache 180
-d diretrio - especica o diretrio ServerRoot (substitui o do arquivo de congura-
o).
-f arquivo - especica um arquivo ServerCongFile alternativo.
-C diretiva - processa a diretiva antes de ler os arquivo de congurao.
-c diretiva - processa a diretiva depois de ler os arquivos de congurao.
-v - mostra a verso do programa.
-V - mostra opes usadas na compilao do Apache.
-h - Mostra o help on-line do programa
-l - lista mdulos compilados junto com o Apache (embutidos)
-L - lista diretivas de conguraes disponveis
-S - Mostra conguraes de Virtual Hosting
-t - executa a checagem de sintaxe nos arquivos de congurao do Apache (incluindo
a checagem da diretiva DocRoot).
-T - executa a checagem de sintaxe nos arquivos de congurao do Apache (menos da
diretiva DocRoot).
12.2 Congurando a porta padro do Apache
Use a diretiva Port para congurar a porta padro que o Apache receber requisies por pa-
dro. A diretiva Listen tambm usada para ajustar o endereo/portas alternativas (usadas
tambm em Virtual Hosts) e substituir as denies de Port(veja Especicando endere-
os/portas adicionais (a diretiva Listen) on page 182 para detalhes).
OBS:: Somente uma diretiva Port e um argumento podero ser especicados. Para mais con-
trole sobre as portas do sistema use a diretiva Listen.
12.3 Adicionando uma pgina no Apache
Existem dois tipos de pginas que podem ser adicionadas ao Apache: a pgina raz e sub-
pginas.
Pgina Raz A pgina raz especicada atravs da diretiva DocumentRoot e ser mostrada
quando se entrar no domnio principal, como http: //www.guiafoca.org. Na con-
gurao padro do Apache, DocumentRoot aponta para o diretrio /var/www. Este
diretrio ser assumido como raz caso os diretrios no sejam iniciados por uma /:
home/focalinux - Aponta para /var/www/home/focalinux
/home/focalinux - Aponta para /home/focalinux
Este diretrio deve conter um arquivo de ndice vlido (especicado pela diretiva Docu-
mentIndex no srm.conf) e permisses de acesso vlidas no arquivo access.conf para
autorizar o acesso as pginas em/var/www (veja Restries de Acesso on page 186 para
detalhes).
Sub-pginas Sub pginas so armazenadas abaixo do diretrio da Pgina raz, como http: /
/www.guiafoca.org/download. Elas podemser umsubdiretrio da pgina principal
Captulo 12. Apache 181
em /var/www ou serem criadas atravs da diretiva Alias no arquivo srm.conf. Caso
seja um sub-diretrio, as permisses de acesso de /var/www sero herdadas para este
subdiretrio, mas tambm podero ser modicadas com a especicao de uma nova
diretiva de acesso.
Atravs da diretiva Alias a pgina pode estar localizada em outro diretrio do disco (at
mesmo outro sistema de arquivos) e as permisses de acesso devero ser denidas para
aquela pgina. Para criar um endereo http: //www.guiafoca.org/iniciante
que aponta para o diretrio /home/focalinux/download/iniciante no disco lo-
cal, basta usar a seguinte diretiva no srm.conf:
Alias /iniciante /home/focalinux/download/iniciante
Pode ser necessrio permitir o acesso a nova pgina caso o servidor tenha uma con-
gurao restritiva por padro (veja Restries de Acesso on page 186 para detalhes).
Aps isto, faa o servidor httpd re-ler os arquivos de congurao ou reinicia-lo. Aps
isto, a pgina /home/focalinux/download/iniciante estar acessvel via http:
//www.guiafoca.org/iniciante.
OBS: Caso inclua uma / no diretrio que ser acessvel via URL, o endereo somente
estar disponvel caso voc entre com / no nal da URL:
Alias /doc/ /usr/doc/
O diretrio /doc somente poder ser acessado usando http: //www.guiafoca.org
/doc/, o uso de http: //www.guiafoca.org/doc retornar uma mensagem de
URL no encontrada.
12.4 Congurando as interfaces que o Apache atender
Adiretiva BindAddress usada para especicar endereos IP das interfaces ou endereos FQDN
que o Apache responder requisies. Mais de um endereo podem ser especicados separa-
dos por espaos. Caso no seja denido, o Apache assumir o valor * (atender requisies
vindas de qualquer interface).
OBS1: - permitido usar somente uma diretiva BindAddress. Adiretiva Listen dever ser usada
se desejar mais controle sobre as portas do servidor web. Veja Especicando endereos/portas
adicionais (a diretiva Listen) on the next page para detalhes.
OBS2: - As interfaces especicadas pela diretiva Listen substituir as especicadas em BindAd-
dress.
Exemplo:
BindAddress 192.168.1.1 - Especica que os usurios da faixa de rede
192.168.1.* tero acesso ao servidor httpd. Isto assume que a mquina possui o
endereo 192.168.1.1 em sua interface de rede interna.
BindAddress * - Atender requisies vindas de qualquer interface de rede.
Captulo 12. Apache 182
12.5 Especicando endereos/portas adicionais (a diretiva Listen)
A diretiva Listen usada para se ter um controle maior sobre a especicao de endere-
os/portas alternativas que o servidor web esperar por requisies externas. Esta diretiva
muito usada na construo de Virtual Hosts. Esta diretiva pode substituir completamente as di-
retivas Port e BindAddress. Podem ser usados o nmero da porta, ou o par endereo:porta:
Listen 192.168.1.1:80
Listen 192.168.7.1:81
Listen 60000
Oendereo que dever ser usado o da interface de rede (assimcomo na diretiva BindAddress).
No exemplo acima, o servidor httpd esperar por requisies vindas de 192.168.1.* na
porta 80 e tambm 60000, e requisies vindas de 192.168.7.1 na porta 81 e tambm 60000.
12.6 Especicando opes/permisses para as pginas
As opes de restrio podem tanto ser especicadas nas diretivas <Directory>, <Location>
ou <Files> quanto nos arquivos .htaccess (ou outro nome de arquivo de controle de acesso
especicado pela opo AccessFileName do arquivo de congurao do Apache). Cada diretiva
de acesso especicada entre <tags> e devem ser fechadas com </tag> (como na linguagem
HTML). As seguintes diretivas de acesso so vlidas no Apache:
Directory As restrio afetar o diretrio no disco especicado, conseqentemente a pgina
armazenada nele. Por exemplo:
<Directory /var/www>
Order deny,allow
deny from all
allow from 10.1.0.1
<Directory>
O acesso ao diretrio /var/www ser permitido somente ao computador com o endereo
IP 10.1.0.1.
DirectoryMatch Funciona como a diretiva <Directory> mas trabalha com expresses regula-
res como argumento. Por exemplo:
<DirectoryMatch "^/www/.*">
Order deny,allow
deny from all
<DirectoryMatch>
Captulo 12. Apache 183
Bloquear o acesso ao diretrio /www e sub-diretrios dentro dele.
Files As restries afetaro os arquivos do disco que conferem com o especicado. possvel
usar os coringas ? e * como no shell. Tambm podem ser usadas expresses regulares
especicando um ~ aps Files e antes da expresso. Por exemplo:
<Files *.txt>
Order deny,allow
deny from all
</Files>
Bloqueia o acesso a todos os arquivos com a extenso .txt
<Files ~ "\.(gif|jpe?g|bmp|png)$">
Order deny,allow
</Files>
Bloqueia o acesso a arquivos gif,jpg,jpeg,bmp,png (note que o ~ ativa o modo de
interpretao de expresses regulares).
FilesMatch Permite usar expresses regulares na especicao de arquivos (equivalente a di-
retiva <Files ~ expresso>). Por exemplo:
<FilesMatch "\.(gif|jpe?g|bmp|png)$">
Order deny,allow
</FilesMatch>
Bloqueia o acesso a arquivos gif,jpg,jpeg,bmp,png.
Location As restries afetaro o diretrio base especicado na URL e seus sub-diretrios. Por
exemplo:
<Location /security>
Order allow,deny
</Location>
Bloqueia o acesso de todos os usurios ao diretrio /security da URL (a explicao
porque o acesso bloqueado neste caso ser explicado em Autorizao on page 187).
LocationMatch Idntico a diretiva <Location> mas trabalha com expresses regulares. Por
exemplo:
<LocationMatch "/(extra|special)/data">
Order deny,allow
deny from all
</LocationMatch>
Captulo 12. Apache 184
Bloquear URLs que contm a substring /extra/data ou /special/data.
O uso das diretivas <Directory> e <Files> apropriada quando voc deseja trabalhar com
permisses a nvel de diretrios/arquivos no disco local (o controle do proxy tambm feito
via <Directory>), o uso da diretiva <Location> adequado para trabalhar com permisses a
nvel de URL. A ordem de processamento das diretivas de acesso so processadas a seguinte:
1 A diretiva <Directory> (com exceo de <DirectoryMatch>) e os arquivos .htaccess
so processados simultaneamente. As denies dos arquivos .htaccess substituem
as de <Directory>)
2 Expresses regulares de <DirectoryMatch>, <Directory>.
3 <Files> e <FilesMatch> so processados simultaneamente.
4 <Location> e <LocationMatch> so processados simultaneamente.
Normalmente encontrado a opo Options dentro de uma das diretivas acima, a funo desta
diretiva controlar os seguintes aspectos da listagem de diretrios:
All Todas as opes so usadas exceto a MultiViews. a padro caso a opo Options no
seja especicada.
ExecCGI Permite a execuo de scripts CGI.
FollowSymLinks O servidor seguir links simblicos neste diretrio (o caminho no modi-
cado). Esta opo ignorada caso aparea dentro das diretivas <Location>, <Location-
Match> e <DirectoryMatch>.
Includes permitido o uso de includes no lado do servidor.
IncludesNOEXEC permitido o uso de includes do lado do servidor, mas o comando #exec
e #include de um script CGI so desativados.
Indexes Se no existir um arquivo especicado pela diretiva <DirectoryIndex> no diretrio
especicado, o servidor formatar automaticamente a listagem ao invs de gerar uma
resposta de acesso negado.
MultiViews Permite o uso da Negociao de contedo naquele diretrio. A negociao de
contedo permite o envio de um documento no idioma requisitado pelo navegador do
cliente.
SymLinksIfOwnerMatch O servidor somente seguir links simblicos se o arquivo ou dire-
trio alvo tiver como dono o mesmo user ID do link. Esta opo ignorada caso aparea
dentro das diretivas <Location>, <LocationMatch> e <DirectoryMatch>.
Mltiplos parmetros para Options podem ser especicados atravs de espaos.
OBS1: A opo Options no tem efeito dentro da diretiva FILES.
OBS2: Tanto faz usar maisculas quanto minsculas nas diretivas de congurao, opes e
parmetros de congurao do Apache, a capitalizao apenas ajuda a leitura e interpretao:
SymLinksIfOwnerMatch (LinksSimblicosSeDonoConferir).
As opes especicadas para o diretrio afetam tambm seus sub-diretrios, a no ser que
sejam especicadas opes separadas para o sub-diretrio:
<Directory /var/www>
Options Indexes FollowSymLinks
</Directory>
Captulo 12. Apache 185
Ao acessar o diretrio /var/www/focalinux, as permisses usadas sero de /var/www, ao
menos que uma diretiva <Directory> ou <Location> seja especicada:
<Directory /var/www>
Options Indexes FollowSymLinks
</Directory>
<Directory /var/www/focalinux>
Options Includes
</Directory>
As opes e restries de acesso de /var/www/focalinux sero EXATAMENTE as especi-
cadas no bloco da diretiva <Directory /var/www/focalinux> e somente os includes sero
permitidos. Para adicionar ou remover uma opo individual denidas por diretivas anterio-
res, podem ser usado os sinais + ou -, por exemplo:
<Directory /var/www>
Options Indexes FollowSymLinks
</Directory>
<Directory /var/www/focalinux>
Options +Includes -Indexes
</Directory>
As opes Indexes e FollowSymLinks so denidas para o diretrio /var/www, ento as permis-
ses do diretrio /var/www/focalinux sero FollowSymLinks (do diretrio /web/docs) e
Includes (adicionada) e o parmetro Indexes no ter efeito neste diretrio.
permitido fazer um aninhamento das diretivas <Directory> e <Files>:
<Directory /var/www>
Order allow,deny
allow from all
<Files LEIAME-DONO.txt>
Order deny,allow
deny from all
</Files>
</Directory>
Neste caso, somente os arquivos LEIAME-DONO.txt existentes no diretrio /var/www e seus
sub-diretrios sero bloqueados.
Captulo 12. Apache 186
Se a diretiva <Files> for usada fora de uma estrutura <Directory>, ela ter efeito em todos os
arquivos disponibilizados pelo servidor. Este excelente mtodo para proteger os arquivos de
acesso, senhas e grupos, conforme ser explicado mais adiante.
Qualquer outro tipo de aninhamento de diretivas resultar em um erro de congurao ao se
tentar carregar/recarregar o Apache. Um exemplo de diretiva incorreta:
<Directory /var/www>
Options Indexes FollowSymLinks
<Directory /var/www/focalinux>
Options +Includes -Indexes
</Directory>
</Directory>
O correto :
<Directory /var/www>
Options Indexes FollowSymLinks
</Directory>
<Directory /var/www/focalinux>
Options +Includes -Indexes
</Directory>
Espero que tenha observado o erro no exemplo acima.
OBS1: Voc pode vericar se a congurao do apache est correta digitando apache -t
como usurio root, se tudo estiver correto com suas conguraes ele retornar a mensagem:
Syntax OK.
OBS2: Se Options no for especicado, o padro ser permitir tudo exceto MultiViews.
OBS3: Qualquer restrio afetar o diretrio atual e todos os seus sub-diretrios! Dena per-
misses de sub-diretrios especcos separadamente caso precise de um nvel de acesso dife-
rente. Veja tambm a seo sobre arquivos OverRide (.htaccess) para detalhes sobre este
tipo de arquivo.
OBS4: Adiretiva de acesso <Directory /> no afetar outros sistemas de arquivos montados
dentro de seus subdiretrios. Caso uma diretiva de acesso padro no seja especicada para
outros sistemas de arquivos, o acesso ser automaticamente negado.
12.7 Restries de Acesso
A restrio de acesso do Apache feita atravs de Autorizao (Autorizao on the next
page) e Autenticao (Autenticao on page 191). Atravs da autorizao, checado se o en-
dereo/rede especicada tem ou no permisso para acessar a pgina. A autenticao requer
Captulo 12. Apache 187
que seja passado nome e senha para garantir acesso a pgina. Os mtodos de Autorizao e
Autenticao podem ser combinados como veremos mais adiante.
12.7.1 Autorizao
A restrio de acesso por autorizao (controlado pelo mdulo mod_access), permite ou no
o acesso ao cliente de acordo com o endereo/rede especicada. As restries afetam tam-
bm os sub-diretrios do diretrio alvo. Abaixo um exemplo de restrio de acesso que blo-
queia o acesso de qualquer host que faz parte do domnio .spammers.com.br a URL http: /
/servidor/teste:
<Location /teste>
Option Indexes
Order allow,deny
allow from all
deny from .spammers.com.br
</Location>
A opo Option foi explicada acima, seguem as explicaes das outras diretivas:
Order Especica em que ordem as opes de acesso allow/deny sero pesquisadas. Caso no
seja especicada, o padro ser deny/allow. Note que a ordem de pesquisa de allow e deny
a inversa da especicada. A diretiva Order aceita os seguintes valores:
deny,allow - Esta a padro, signica umservidor mais restritivo; a diretiva allow
processada primeiro e somente depois a diretiva deny. Caso nenhuma diretiva al-
low e deny forem especicadas ou no conferirem, PERMITE TUDO como padro.
allow,deny - Signica um servidor mais permissivo, a opo deny processada
primeiro e somente depois a opo allow. Caso nenhuma diretiva allow e deny for
especicadas ou no conferirem, BLOQUEIA TUDO como padro.
mutual-failure - Somente permite o acesso se o usurio receber autorizao atra-
vs da opo allow e NO ser bloqueado pela opo deny, caso uma das checagens
falhe, o acesso imediatamente negado. uma opo interessante quando voc
quer somente pessoas de um determinado endereo/rede acessando o seu sistema
e no estejam em sua lista negra :-)
ATENO: importante saber se a pgina ser permissiva ou restritiva para escolher
a ordem mais adequada ao seu caso, tambm leve em considerao a possibilidade do
processamento cair na diretiva de acesso padro, caso nem a diretiva allow e deny con-
feriram e estiver usando a ordem de acesso allow,deny ou deny,allow. Um sistema
mal congurado neste aspecto poder trazer srias conseqncias. comum em pginas
permissivas se denir a seguinte congurao:
Order allow,deny
allow from all
Omotivo que emumgrande site, se foremadicionadas mais restries nesta pgina (de-
vido a alguns domnios que temusurios mal comportados, bloqueio de acesso a rede do
concorrente, potenciais atacantes, etc. . . ), estas devero ser lidas antes da diretiva allow
Captulo 12. Apache 188
from all e podem passar desapercebidas ao administrador e podem simplesmente no
funcionar caso a opo Order no esteja ajustada corretamente (lembre-se, voc o ad-
ministrador e a integridade do site depende de sua ateno na escolha da ordem correta
das diretivas de acesso).
allow from Especica o endereo que ter acesso ao recurso especicado. A diretiva allow
from aceita os seguintes valores:
all - O acesso permitido a todos.
um endereo de domnio completo (FQDN). Por exemplo www.debian.org.br.
um endereo de domnio parcial. Qualquer computador que conra com o inicio ou
m ter o acesso permitido. Por exemplo, .spammers.com.br, .debian.org.
um endereo IP completo, como 192.168.1.1
um endereo IP parcial como 192.168.1.
um par rede/mscara como 10.1.0.0/255.255.0.0 ou 10.1.0.0/16, uma
faixa de acesso a mquinas de uma mesma rede pode ser denida facilmente atravs
deste mtodo.
OBS1: necessrio reiniciar o Apache depois de qualquer modicao em seu arquivo
de congurao (executando apachectl restart), ou recarregar os arquivos de con-
gurao (apachectl graceful). OBS2: Mais de um host pode ser especicado se-
parando com um espao:
allow from 192.168. .debian.org.br
Permitir o acesso de qualquer mquina que o endereo IP conra com 192.168.*.*
e qualquer computador do domnio debian.org.br OBS3: Regras baseadas em no-
mes simples de hosts (como www) no conferiro! Dever ser usado o FQDN ou IP:
www.dominio.com.br OBS4: Caso Order no seja especicado, deny,allow ser usado
como padro (ou seja, permitir tudo como padro).
deny from Especica os endereos que NO tero acesso ao recurso especicado. As explica-
es referentes a esta diretiva de acesso so idntica as de allow from.
recomendvel o uso de endereos IP ao invs de endereos DNS e um mecanismo anti-
spoong no rewall ou cdigo de roteamento, pois car mais difcil um ataque baseado em
DNS spoong, aumentando consideravelmente a segurana de seu servidor web.
ATENO: Caso receba erros 403 (acesso negado) sembloquear a URL nas diretivas de acesso,
uma dos seguintes problemas pode ser a causa:
O servidor Web no tem permisses para acessar/abrir o diretrio da pgina. Certique-
se que o dono e grupo do processo Apache (especicado pela diretiva User e Group) pos-
suem permisses de acesso quele diretrio.
Quando quer fazer uma listagem de arquivos do diretrio e no especica a opo
Option Indexes como opo de listagem.
Quando no est usando Option Indexes para impedir a listagem de contedo do
diretrio e o no foi encontrado um arquivo de ndice vlido dentre os existentes na
diretiva DirectoryIndex no diretrio atual.
Abaixo alguns exemplos de permisses de acesso:
Captulo 12. Apache 189
<Directory /var/www>
Options SymLinksIfOwnerMatch Indexes MultiViews
Order allow,deny
allow from all
</Directory>
Permite o acesso a de qualquer usurio de qualquer lugar (allow from all), permite tambm a
visualizao da listagem formatada de arquivos caso nenhum arquivo especicado na diretiva
DirectoryIndex seja encontrado (Indexes), permite negociao de contedo (MultiViews) e seguir
links caso o dono do arquivo conra com o nome do link (SymLinksIfOwnerMatch).
<Directory /var/www>
Options SymLinksIfOwnerMatch Indexes MultiViews
</Directory>
Tem o mesmo signicado da diretiva acima por mtodos diferentes; quando nenhuma opo
Order especicada, deny,allow denido como padro, e como nenhuma opo de acesso al-
low/deny foi especicada, o padro Order deny,allow usado e permite TUDO como padro.
<Directory /var/www>
Options Indexes
Order deny,allow
deny from all
</Directory>
Esta regra acima no tem muita lgica pois restringe o acesso de todos os usurios ao diretrio
/var/www, ao menos se esta for sua inteno. . .
<Location /focalinux>
Options All
Order allow,deny
allow from all
</Location>
A regra acima permite o acesso a URL http: //www.servidor.org/focalinux de qual-
quer host na Internet
<Files .htaccess>
Order deny,allow
deny from all
</Files>
Bloqueia o acesso a qualquer arquivo .htaccess do sistema
Captulo 12. Apache 190
<Files ~ "leiame-(arm|alpha|m68k|sparc|powerpc)\.txt">
Order deny,allow
deny from all
</Files>
Bloqueia o acesso a qualquer arquivo leiame-arm.txt, leiame-alpha.txt,
leiame-m68k.txt, leiame-sparc.txt e leiame-powerpc.txt fazendo uso de
expresses regulares.
<Directory /var/www>
Options Indexes
Order mutual-failure
allow from .dominio.com.br
deny from lammer.dominio.com.br
</Directory>
A diretiva acima somente permite acesso ao diretrio /var/www de mquinas pertencentes ao
domnio .dominio.com.br desde que no seja lammer.dominio.com.br.
<Directory /var/www>
Options Indexes MultiViews
Order allow,deny
deny from .com .com.br
allow from all
</Directory>
Bloqueia o acesso ao diretrio /var/www de computadores pertencentes aos domnios .com e
.com.br.
<Directory /var/www>
Options None
Order deny,allow
allow from 192.168.1. .guiafoca.org .debian.org
deny from 200.200.123.
</Directory>
A regra acima permite o acesso de mquinas da rede 192.168.1.*, do domnio
*.guiafoca.org e *.debian.org, o acesso de mquinas da rede 200.200.123.* blo-
queado (nada contra, peguei nesse nmero ao acaso :-).
Note que a mquina 192.168.4.10 ter acesso LIVRE a regra acima, pois no conferir nem
com allow nem com deny, ento o processamento cair na diretiva padro de deny,allow, que
neste caso permite o acesso caso nem allow e deny conferiram com o padro.
Captulo 12. Apache 191
<Directory /var/www>
Options None
Order allow,deny
allow from 192.168.1. .cipsga.org.br .debian.org
deny from 200.200.123.
</Directory>
A regra acima idntica a anterior somente com a mudana da opo Order. Bloqueia o acesso
de mquinas da rede 200.200.123.* e permite o acesso de mquinas da rede 192.168.1.*,
do domnio *.cipsga.org.br e *.debian.org.
Note que a mquina 192.168.4.10 ter acesso BLOQUEADO a regra acima, pois no confe-
rir nemcomallownemcomdeny, ento o processamento cair na diretiva padro de allow,deny
que neste caso bloqueia o acesso.
12.7.2 Autenticao
Atravs da autenticao (controlado pelo mdulo mod_auth) possvel especicar um nome
e senha para acesso ao recurso solicitado. As senhas so gravadas em formato criptografado
usando Crypto ou MD5 (conforme desejado). O arquivo de senhas pode ser centralizado ou
especicado individualmente por usurio, diretrio ou at mesmo por arquivo acessado.
Criando um arquivo de Senhas
O arquivo de senhas pode ser criado e mantido atravs do uso de 3 utilitrios: htpasswd,
htdigest e dbmmanage:
htpasswd Este usado para criar o arquivo de senhas. Para criar um banco de dados com o
nome senhas para o usurio convidado, usada a seguinte sintaxe:
htpasswd -c -m senhas convidado
Voc ser perguntado por uma senha para o usurio convidado e para redigita-la. A opo -c
indica que dever ser criado um arquivo, a opo -m indica a utilizao de senhas criptogra-
fadas usando o algoritmo MD5, que garante maior segurana que o mtodo Crypto. A senha
pode ser especicada diretamente na linha de comando atravs da opo -b (isto um timo
recurso para utilizao em shell scripts ou programas CGI de integrao com o navegador).
htpasswd -b -d senhas chefe abcdef
No exemplo acima, uma senha de alta segurana ser introduzida no banco de dados senhas
tornando impossvel o acesso a pgina do usurio :-)
Note que esta senha foi cadastrada usando o algoritmo de criptograa Crypto (opo -d). O
algoritmo SHA tambm pode ser usado como alternativa, atravs da opo -s. Para modi-
car a senha do usurio convidado, basta usar a mesma sintaxe (sem a opo -c que usada
para criar um novo arquivo):
Captulo 12. Apache 192
htpasswd -m senhas convidado
ou
htpasswd -b -m senhas convidado nova_senha
Opcionalmente voc pode especicar a opo -d para atualizar tambm o formato da se-
nha para Crypto. Podem existir senhas de criptograas mistas (SHA, Crypto, MD5) no mesmo
arquivo sem nenhum problema.
A mudana do formato de senhas til quando se deseja aumentar o nvel de segurana ofere-
cido por um melhor sistema ou para manter a compatibilidade com alguns scripts/programas
que compartilhem o arquivo de senhas.
htdigest e dbmmanage Estes so idnticos ao htpasswd, a diferena que o htdigest
permite criar/manter um arquivo de senhas usando a autenticao Digest, enquanto o
dbmmanage permite manter o banco de dados de senhas em um arquivo DB,DBM,GDBM e
NDBM, formatos conhecidos pelo Perl.
Autenticao atravs de usurios
Atravs deste mtodo possvel especicar que usurios tero acesso ao recurso denido,
usando senhas de acesso individuais criptografadas usando um dos utilitrios da seo ante-
rior. Para restringir o acesso ao endereo http: //servidor.org/teste:
<Location /teste>
AuthName "Acesso a pgina do Foca Linux"
AuthType basic
AuthUserFile /home/gleydson/SenhaUsuario
# AuthGroupFile /home/users/SenhaGrupo
Require valid-user
</Location>
Ao tentar acessar o endereo http: //servidor/teste, ser aberta uma janela no navega-
dor com o ttulo Enter username for Acesso a pgina do Foca Linux at servidor.org, a diretiva Require
valid-user denem que o usurio e senha digitados devem existir no arquivo especicado por
AuthUserFile para que o acesso seja garantido. Uma explicao de cada opo de acesso usado
na autenticao:
AuthName Ser o nome que aparecer na janela de autenticao do seu navegador indicando
qual rea restrita est solicitando senha (podem existir vrias no servidor, bastando es-
pecicar vrias diretivas de restries).
AuthType Especica o mtodo de que o nome e senha sero passados ao servidor. Este m-
todo de autenticao pode ser Basic ou Digest
Basic - Utiliza a codicao base64 para encodicao de nome e senha, enviando o
resultado ao servidor. Este ummtodo muito usado e pouco seguro, pois qualquer
sniffer instalado em um roteador pode capturar e descobrir facilmente seu nome e
senha.
Captulo 12. Apache 193
Digest - Transmite os dados de uma maneira que no pode ser facilmente deco-
dicada, incluindo a codicao da rea protegida (especicada pela diretiva Auth-
Name) que possui a seqencia de login/senha vlida. A diferena deste mtodo
que voc precisar de arquivos de senhas diferentes para cada rea protegida espe-
cicada por AuthName (tambm chamada de Realm).
AuthUserFile o arquivo gerado pelo utilitrio htpasswd que contm a senha correspon-
dente ao usurio
AuthGroupFile um arquivo texto que contm o nome do grupo, dois pontos (:) e o nome
dos usurios que podem ter acesso ao recurso, separados por vrgulas. No exemplo
acima ele se encontra comentado, mas a seguir encontrar exemplos que explicam em
detalhes o funcionamento desta diretiva.
Require Especica que usurios podem ter acesso ao diretrio. Podem ser usadas uma das 3
sintaxes:
Require user usurio1 usurio2 usurio3 - Somente os usurios especi-
cados so considerados vlidos para ter acesso ao diretrio.
Require group grupo1 grupo2 grupo3 - Somente os usurios dos grupos es-
pecicados so considerados vlidos para terem acesso ao diretrio. Esta diretiva
til quando deseja que somente alguns usurios de determinado grupo tenham
acesso ao recurso (por exemplo, usurios do grupo admins).
Require valid-user - Qualquer usurio vlido no banco de dados de senhas
pode acessar o diretrio. bem til quando as opes de acesso especicadas por
Require user so muito longas. A opo Require deve ser acompanhado das direti-
vas AuthName, AuthType e as diretivas AuthUserFile e AuthGroupFile para funcionar
adequadamente.
OBS: necessrio reiniciar o Apache depois de qualquer modicao em seu arquivo de con-
gurao (apachectl restart), ou recarregar os arquivos de congurao (apachectl
graceful). Note que o apachectl somente um shell script para interao mais amigvel
com o servidor web apache, retornando mensagens indicando o sucesso/falha no comando
ao invs de cdigos de sada.
Alguns exemplos para melhor assimilao:
<Location /teste>
AuthName "Acesso a pgina do Foca Linux"
AuthType basic
AuthUserFile /home/gleydson/SenhaUsuario
Require user gleydson
</Location>
As explicaes so idnticas a anterior, mas somente permite o acesso do usurio gleydson a
URL http: //servidor.org/teste, bloqueando o acesso de outros usurios contidos no
arquivo AuthUserFile.
<Location /teste>
AuthName "Acesso a pgina do Foca Linux"
Captulo 12. Apache 194
AuthType basic
AuthUserFile /home/gleydson/SenhaUsuario
Require user gleydson usuario1 usuario2
</Location>
<Location /teste>
AuthName "Acesso a pgina do Foca Linux"
AuthType basic
AuthUserFile /home/gleydson/SenhaUsuario
Require user gleydson
Require user usuario1
Require user usuario2
</Location>
As 2 especicaes acima so equivalentes e permite o acesso aos usurios gleydson,
usuario1 e usuario2 a pgina http: //servidor.org/teste.
Autenticao usando grupos
H casos onde existem usurios de um arquivo de senhas que devem ter acesso a um diretrio
e outros no, neste caso a diretiva valid-user no pode ser especicada (porque permitiria o
acesso de todos os usurios do arquivo de senha ao diretrio) e uma grande lista de usurios
caria bastante complicada de ser gerenciada com vrios usurios na diretiva Require user.
Quando existe esta situao, recomendado o uso de grupos de usurios. Para fazer uso
desse recurso, primeiro dever ser criado um arquivo quer armazenar o nome do grupo e dos
usurios pertencente quele grupo usando a seguinte sintaxe (vamos chamar este arquivo de
SenhaGrupo):
admins: gleydson usuario2
usuarios: usuario1 usuario2 usuario3 gleydson
Agora adaptamos o exemplo anterior para que somente os usurios especicados no grupo
admins do arquivo criado acima:
<Location /teste>
AuthName "Acesso a pgina do Foca Linux"
AuthType basic
AuthUserFile /home/gleydson/SenhaUsuario
AuthGroupFile /home/gleydson/SenhaGrupo
Require group admins
</Location>
Captulo 12. Apache 195
Agora somente os usurios pertencentes ao grupo admins (gleydson e usuario2) podero ter
acesso ao diretrio /teste.
OBS1: Verique se o servidor Web possui acesso a leitura no arquivo de senhas de usurios e
grupos, caso contrrio ser retornado umcdigo 500 - Internal Server Error. Este tipo de erro
caracterizado por tudo estar OKna sintaxe dos arquivos de congurao aps checagemcom
apache -t e todas as diretivas de controle de acesso apontam para os diretrios e arquivos
corretos.
OBS2:: Sempre use espaos para separar os nomes de usurios pertencentes a um grupo.
OBS3: NUNCA coloque os arquivos que contm senhas e grupos em diretrios de acesso
pblico onde usurios podem ter acesso via o servidor Web. Tais localizaes so /var/www,
/home/"usuario"/public_html e qualquer outro diretrio de acesso pblico que dena
em seu sistema.
recomendvel tambm ocultar estes arquivos atravs da diretiva <Files> evitando possveis
riscos de segurana com usurios acessando os arquivos de senha e grupo.
Na distribuio Debian, qualquer arquivo iniciando com .ht* ser automaticamente ocul-
tado pelo sistema, pois j existe uma diretiva <Files ~ \.ht>. Tal diretiva pode tambm ser
especicada no arquivo de acesso .htaccess. Assimumarquivo .htsenha e .htgroup so
bons nomes se estiver desejando ocultar dados de olhos curiosos. . .
12.7.3 Usando autorizao e autenticao juntos
Os mtodos de autorizao e autenticao podem ser usados ao mesmo tempo dentro de qual-
quer uma das diretivas de controle de acesso. As diretivas de autorizao so processadas pri-
meiro (mod_access) e depois as diretivas de autenticao (mod_auth). Segue um exemplo:
<Directory /var/www>
Options Indexes
Order deny,allow
allow from .dominiolocal.com.br
deny from all
AuthName "Acesso ao diretrio do servidor Web"
AuthType basic
AuthUserFile /var/cache/apache/senhas
Require valid-user
</Directory>
Para ter acesso ao diretrio /var/www, primeiro o computador deve fazer parte do domnio
.dominiolocal.com.br, assim ela passa pelo teste de autorizao, depois disso ser neces-
srio fornecer o login e senha para acesso a pgina, digitando o login e senha corretos, o teste
de autenticao ser completado com sucesso e o acesso ao diretrio /var/www autorizado.
<Directory /var/www>
Captulo 12. Apache 196
Options Indexes
Order mutual-failure
allow from .dominiolocal.com.br
deny from lammer.dominiolocal.com.br
AuthName "Acesso ao diretrio do servidor Web"
AuthType basic
AuthUserFile /var/cache/apache/senhas
AuthGroupFile /var/cache/apache/grupos
Require group admins
</Directory>
No exemplo acima, usado o mtodo de autorizao com a opo Order mutual-failure
e o mtodo de autenticao atravs de grupos. Primeiro vericado se o usurio per-
tence ao domnio .dominiolocal.com.br e se ele no est acessando da mquina
lammer.dominiolocal.com.br, neste caso ele passa pelo teste de autorizao. Depois
disso ele precisar fornecer o nome e senha vlidos, com o login pertencente ao AuthGroup-
File, passando pelo processo de autenticao e obtendo acesso ao diretrio /var/www.
Acesso diferenciado em uma mesma diretiva
interessante permitir usurios fazendo conexes de locais conveis terem acesso direto sem
precisar fornecer nome e senha e de locais inseguros acessarem somente aps comprovarem
quem realmente so. Como o caso de permitir usurios de uma rede privada terem acesso
completo aos recursos e permitir o acesso externo ao mesmo recurso somente atravs de senha.
Isto pode ser feito como uso da diretiva Satisfy junto ao bloco de autorizao/autenticao. Vamos
tomar como base o exemplo anterior:
<Directory /var/www>
Options Indexes
Order mutual-failure
allow from .dominiolocal.com.br
deny from lammer.dominiolocal.com.br
AuthName "Acesso ao diretrio do servidor Web"
AuthType basic
AuthUserFile /var/cache/apache/senhas
AuthGroupFile /var/cache/apache/grupos
Require group admins
Satisfy any
</Directory>
Note que o exemplo o mesmo com a adio da diretiva Satisfy any no nal do bloco do
arquivo. Quando a opo Satisfy no especicada, ela assumir all como padro, ou seja, o
usurio dever passar no teste de autorizao e autenticao para ter acesso.
Captulo 12. Apache 197
A diferena do exemplo acima em relao ao da seo anterior se a mquina passar no teste
de autorizao ela j ter acesso garantido. Caso falhe no teste de autorizao, ainda ter a
chance de ter acesso a pgina passando na checagem de autenticao.
Isto garante acesso livre aos usurios do domnio .dominiolocal.com.br. J os outros
usurios, incluindo acessos vindos de lammer.dominiolocal.com.br que pode ser uma
mquina com muito uso, poder ter acesso ao recurso caso tenha fornecido um nome e senha
vlidos para passar pelo processo de autenticao. Tenha isto em mente. . . este tipo de pro-
blema comum e depende mais de uma poltica de segurana e conduta interna, o sistema de
segurana no pode fazer nada a no ser permitir acesso a um nome e senha vlidos.
Tenha cuidado com o uso da opo Satisfy em diretivas que especicam somente o mtodo de
autenticao:
<Directory /var/www>
Options Indexes
AuthName "Acesso ao diretrio do servidor Web"
AuthType basic
AuthUserFile /var/cache/apache/senhas
AuthGroupFile /var/cache/apache/grupos
Require group admins
Satisfy any
</Directory>
ATENO PARA O DESCUIDO ACIMA!: Como o mtodo de autorizao NO especi-
cado, assumido deny,allow como padro, que permite o acesso a TODOS os usurios. O
bloco acima NUNCA executar o mtodo de autenticao por este motivo. A melhor coisa
NO usar a opo Satisfy em casos que s requerem autenticao ou usar Satisfy all (que ter o
mesmo efeito de no usa-la, hehehe).
A falta de ateno nisto pode comprometer silenciosamente a segurana de seu sistema.
12.7.4 O arquivo .htaccess
O arquivo .htaccess deve ser colocado no diretrio da pgina que dever ter suas permis-
ses de acesso/listagem controladas. A vantagem em relao a incluso direta de diretivas de
acesso dentro do arquivo de congurao do Apache, que o controle de acesso poder ser
denido pelo prprio webmaster da pgina, sem precisar ter acesso direto a congurao do
Apache, que requerem privilgios de root.
Outro ponto fundamental que no h necessidade de reiniciar o servidor Web, pois este
arquivo lido no momento de cada acesso ao diretrio que controla. O nome do arquivo
OverRide pode ser denido atravs da diretiva AccessFileName no arquivo de congurao do
Apache, .htaccess usado como padro.
Ocontrole de que opes estaro disponveis no .htaccess so denidas na diretiva AllowO-
verride que pode conter o seguintes parmetros:
Captulo 12. Apache 198
None - O servidor no buscar o arquivo .htaccess nos diretrios
All - O servidor utilizar todas as opes abaixo no arquivo .htaccess
AuthConfig - Permite o uso de diretivas de autenticao (AuthDBMGroupFile, AuthDB-
MUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require, etc.).
FileInfo - Permite o uso de diretivas controlando o tipo de documento (AddEncoding,
AddLanguage, AddType, DefaultType, ErrorDocument, LanguagePriority, etc.).
Indexes - Permite o uso de diretivas controlando a indexao de diretrio (AddDescrip-
tion, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyInde-
xing, HeaderName, IndexIgnore, IndexOptions, ReadmeName, etc.).
Limit - Permite o uso de diretivas controlando o acesso ao computador (allow, deny e
order).
Options - Permite o uso de diretivas controlando caractersticas especcas do diretrio
(Options e XBitHack).
OBS: No tem sentido usar a opo AllowOverride dentro da diretiva <Location>, ela ser sim-
plesmente ignorada.
Para acesso ao arquivo .htaccess do diretrio /var/www/focalinux, o Apache bus-
car os arquivos .htaccess na seqencia: /.htaccess, /var/.htaccess, /var/www
/.htaccess, /var/www/focalinux/.htaccess, qualquer diretiva que no exista no
.htaccess do diretrio /var/www/focalinux ter seu valor denido pela diretiva dos ar-
quivos .htaccess dos diretrios anteriores. Somente aps esta seqencia de checagens o
acesso ao documento permitido (ou negado).
Por este motivo, muitos administradores decidem desativar completamente o uso de arqui-
vos .htaccess no diretrio raz e habilitar somente nos diretrios especicados pela diretiva
<Directory> no arquivo de congurao do Apache, evitando brechas de segurana na mani-
pulao destes arquivos (esta uma boa idia a no ser que se dedique 24 horas somente na
administrao do seu servidor Web e conhea toda sua estrutura hierrquica de segurana:
<Directory />
AllowOverride none
</Directory>
<Directory /var/www>
AllowOverride limit authconfig indexes
</Directory>
Na especicao acima, o arquivo .htaccess ser procurado no diretrio /var/www e seus
sub-diretrios, usando somente opes que controlam a autorizao de acesso (limit), autenti-
cao e opes (authcong) e de indexao de documentos (indexes).
Alguns exemplos do uso do arquivo .htaccess:
Para permitir o acesso direto de usurios da rede 192.168.1.* diretamente, e requerer senha
de acesso para outros usurios, o seguinte arquivo .htaccess deve ser criado no diretrio
/var/www:
Captulo 12. Apache 199
Order deny,allow
allow from 192.168.1.0/24
deny from all
AuthName "Acesso a pgina Web principal da Empresa"
AuthType basic
AuthUserFile /var/cache/apache/senhas
Require valid-user
Satisfy any
Note que a sintaxe exatamente a mesma das usadas na diretivas de acesso, por este motivo
vou dispensar explicaes detalhadas a respeito.
ATENO: A diretiva Options Indexes dever ser especicada no AllowOverRide e no no ar-
quivo .htaccess. Agora voc j sabe o que fazer se estiver recebendo erros 500 ao tentar
acessar a pgina (Erro interno no servidor). . .
12.7.5 Usando a diretiva SetEnvIf com Allow e Deny
possvel especicar o acesso baseado em variveis de ambiente usando a diretiva SetEnvIf,
isto lhe permite controlar o acesso de acordo com o contedo de cabealhos HTTP. A sintaxe
a seguinte:
SetEnvIf [atributo] [expresso] [varivel]
Isto poder ser facilmente interpretado como: Se o atributo especicado conter a expresso,
a varivel ser criada e armazenar o valor verdadeiro. Veja abaixo:
SetEnvIf User-Agent ".*MSIE*." EXPLODER
<Directory /var/www>
Order deny,allow
allow from all
deny from env=EXPLODER
</Directory>
Se o Navegador (campo User-Agent do cabealho http) usado para acessar a pgina for o
Internet Explorer, a varivel EXPLODER ser criada e ter o valor verdadeiro (porque
a expresso de SetEnvIf conferiu com a expresso).
Note o uso de deny from env=VARIVEL. Neste caso se o navegador for o Internet
Explorer, o acesso ser bloqueado (pois o navegador conferiu, assim a varivel EXPLODER
recebeu o valor verdadeiro).
permitido especicar as diretivas de acesso normais junto com especicao de variveis
de ambiente, basta separa-los com espaos. Uma descrio completa dos cabealhos HTTP,
contedo e parmetros aceitos por cada um so descritos na RFC 2068.
Captulo 12. Apache 200
12.7.6 A diretiva <Limit>
Esta diretiva semelhante a <Directory> mas trabalha com mtodos HTTP (como GET, PUT,
POST, etc) ao invs de diretrios. A diretiva <Limit> pode ser usada dentro da diretiva de
acesso <Directory>, <Location>, mas nenhuma diretiva de controle de acesso pode ser colo-
cada dentro de <Limit>.
Os mtodos HTTP vlidos so: GET, POST, PUT DELETE, CONNECT, OPTIONS, TRACE,
PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK e UNLOCK. Note que os
mtodos so case-sensitive. Por exemplo:
<Directory /var/www>
Option Indexes
<Limit POST PUT DELETE>
Order deny,allow
allow from 192.168.1.0/24
deny from all
</Limit>
</Directory>
Somente permitem o uso dos mtodos POST, PUT, DELETE de mquinas da rede interna.
OBS1: Se o mtodo GET bloqueado, o cabealho HTTP tambm ser bloqueado.
OBS2: A diretiva de acesso <Limit> somente ter efeito na diretiva <Location> se for espe-
cicada no arquivo de congurao do servidor web. A diretiva <Location> simplesmente
ignorada nos arquivos .htaccess. . .
Este abaixo usado por padro na distribuio Debian para restringir para somente leitura o
acesso aos diretrios de usurios acessados via mdulo mod_userdir:
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
<Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Order deny,allow
Deny from all
</Limit>
</Directory>
12.7.7 Diretiva <LimitExcept>
Esta diretiva semelhante a <Limit>, mas atinge todos os mtodos HTTP, menos os especi-
cados.
Captulo 12. Apache 201
12.8 Denindo documentos de erro personalizados
Documentos de erros personalizados so denidos atravs da diretiva ErrorDocument. pos-
svel especicar cdigos de erros que sero atendidos por certos documentos ou colocar esta
diretiva dentro de blocos de controle de acesso <Directory>, <Location> ou <VirtualHost>
para que tenham mensagens de erro personalizadas, ao invs da padro usada pelo servidor
httpd.
ErrorDocument [cdigo de erro] [documento]
Onde:
cdigo de erro Cdigo de erro da mensagem (veja Cdigos HTTP on page 242 como refern-
cia). O cdigo de erro 401 deve referir-se a um arquivo local.
documento Documento, mensagem de erro ou redirecionamento que ser usado no servidor
caso aquele cdigo de erro seja encontrado:
Para denir uma mensagem de erro padro para todo servidor web, basta colocar a diretiva
ErrorDocument fora das diretivas que controlam o acesso a diretrios e virtual hosts (o inicio
do arquivo httpd.conf ideal).
Exemplos:
ErrorDocument 404 /cgi-bin/erros404.pl - Direciona para um script em Perl
que manda um e-mail ao administrador falando sobre o link quebrado e envia o usurio
a uma pgina de erro padro.
ErrorDocument 404 /naoencontrada.html - Direciona o usurio para o arquivo
naoencontrada.html (dentro de DocumentRoot) quando ocorrer o erro 404. Note que
o diretrio / levado em considerao o especicado pela diretiva DocumentRoot.
ErrorDocument 500 Erro Interno no servidor - Mostra a mensagem na
tela quando ocorrer o erro 500.
ErrorDocument 401 /obtendoacesso.html - Direciona o usurio ao arquivo ex-
plicando como obter acesso ao sistema.
ErrorDocument 503 http://www.guiafoca.org/servicos.html - Redireci-
ona o usurio a URL especicada.
ErrorDocument 403 Acesso negado - Mostra a mensagem na tela no caso de
erros 403.
12.9 Mdulos DSO
Os mdulos DSO permitem adicionar/remover caractersticas do Apache sem necessidade
de recompilar todo o servidor web, assim interrompendo o servio para a atualizao dos
arquivos. Mdulos de programas terceiros tambm podem ser compilados e adicionado sem
problemas atravs deste recurso.
Os mdulos so carregados para a memria no momento que o apache iniciado atravs da
diretiva LoadModule no arquivo de congurao. Dessa forma, toda vez que um novo mdulo
for adicionado, removido ou alterado, ser necessrio reiniciar o servidor apache. A sintaxe
da linha para carregar mdulos .so a seguinte:
Captulo 12. Apache 202
LoadModule [nome_do_modulo] [caminho_do_arquivo_so]
nome_do_modulo Especica o nome do mdulo, no deve conter espaos.
caminho_do_arquivo_so Dene a localizao do arquivo que contm o mdulo especicado.
Por padro os mdulos esto localizados em /usr/lib/apache/[verso]
A posio em que os mdulos aparecem podem ter inuncia em seu funcionamento, alguns
requerem que sejam especicados antes de outros mdulos para funcionarem corretamente
(como o mdulo php3_module, que deve ser carregado antes de qualquer mdulo de controle
de CGIs). Leia a documentao especca sobe o mdulo em caso de dvidas, os mdulos que
acompanham o Apache so documentados em detalhes no manual do Apache.
Para usar uma caracterstica/diretiva/opo do Apache que dependa de um certo mdulo,
obviamente voc dever carregar o mdulo correspondente (em caso de dvidas, leia a docu-
mentao sobre o mdulo). Veja a httpd.conf on page 220 para exemplos do uso da diretiva
LoadModule.
Por exemplo, se voc quiser utilizar as diretivas de autorizao (allow, deny, order) dever ter
o mdulo mod_access carregado, para usar as diretivas de autorizao (authname, authuserle,
authtype, etc) dever ter o mdulo mod_auth carregado. Mais detalhes podem ser encontrados
em Autorizao on page 187. OBS1: O suporte a DSO atualmente s est disponvel para
plataforma UNIX e seus derivados, como o Linux.
Tambm possvel ativar certas diretivas vericando se o mdulo correspondente estiver ou
no carregado atravs da diretiva IfModule:
<IfModule mod_userdir.c>
UserDir disabled root
UserDir public_html
</IfModule>
Nas linhas acima, as diretivas UserDir somente sero executadas se o mdulo mod_userdir.c
estiver carregado atravs da diretiva LoadModule.
Segue abaixo uma lista de mdulos padres que acompanham do Apache, os mdulos mar-
cados com * so ativados por padro:
Criao de Ambiente * mod_env - Ajusta variveis de ambiente para scripts CGI/SSI
* mod_setenvif - Ajusta variveis de ambiente de acordo com cabealhos http
mod_unique_id - Gera identicadores nicos para requisies
Deciso de tipo de contedo de arquivos * mod_mime - Determinao de
tipo/encodicao do contedo (congurado)
mod_mime_magic - Determinao de tipo/encodicao do contedo (automtico)
* mod_negotiation - Seleo de contedo baseado nos cabealhos HTTP Ac-
cept*
Mapeamento de URL * mod_alias - Traduo e redirecionamento de URL simples
mod_rewrite - Traduo e redirecionamento de URL avanado
* mod_userdir - Seleo de diretrios de recursos por nome de usurio
mod_speling - Correo de URLs digitadas incorretamente
mod_vhost_alias - Suporte para virtual hosts dinamicamente congurados em
massa.
Captulo 12. Apache 203
Manipulao de Diretrios * mod_dir - Manipulao de Diretrio e arquivo padro de
diretrio
* mod_autoindex - Gerao de ndice automtico de diretrio
Controle de Acesso * mod_access - Controle de acesso por autorizao (usurio, en-
dereo, rede)
* mod_auth - Autenticao HTTP bsica (usurio, senha)
mod_auth_dbm - Autenticao HTTP bsica (atravs de arquivos NDBM do Unix)
mod_auth_db - Autenticao HTTP bsica (atravs de arquivos Berkeley-DB)
mod_auth_anon - Autenticao HTTP bsica para usurios no estilo annimo
mod_auth_digest - Autenticao MD5
mod_digest - Autenticao HTTP Digest
Respostas HTTP mod_headers - Cabealhos de respostas HTTP (congurado)
mod_cern_meta - Cabealhos de respostas HTTP (arquivos no estilo CERN)
mod_expires - Respostas de expirao HTTP
* mod_asis - Respostas HTTP em formato simples (raw)
Scripts * mod_include - Suporte a Includes no lado do servidor (SSI - Server Sides
Includes)
* mod_cgi - Suporte a CGI (Common Gateway Interface)
* mod_actions - Mapeia scripts CGI para funcionarem como handlers internos.
Manipuladores de contedo Interno * mod_status - Visualiza status do servidor em
tempo de execuo.
mod_info - Visualiza sumrio de congurao do servidor.
Registros de Requisies * mod_log_config - Registro de requisies personaliz-
veis
mod_log_agent - Registro especializado do User-Agent HTTP (depreciado)
mod_log_refer - Registro especializado do Referrer HTTP (depreciado)
mod_usertrack - Registro de cliques de usurios atravs de Cookies HTTP
Outros * mod_imap - Suporte a Mapeamento de Imagem no lado do servidor.
mod_proxy - Mdulo de Cache do Proxy (HTTP, HTTPS, FTP).
mod_so - Inicializao do Dynamic Shared Object (DSO)
Experimental mod_mmap_static - Cache de pginas freqentemente servidas via
mmap()
Desenvolvimento mod_example - Demonstrao da API do Apache (somente desen-
volvedores)
12.10 Sistema de Log do Apache
O Apache bem exvel na especicao do que ser registrado em seus arquivos de log,
possibilitando utilizar um arquivo de log nico, diversos arquivos de logs registrando cada
evento ocorrido no sistema (conexo, navegador, bloqueio de acesso, erros, etc) incluindo os
campos que deseja em cada arquivo e a ordem dos campos em cada um deles.
Enm qualquer coisa pode ser especicada de forma que atenda as suas necessidades particu-
lares de logging.
Captulo 12. Apache 204
12.10.1 AgentLog
AgentLog arquivo/pipe: Indica o nome do arquivo que registrar o nome do navegador
que est acessando a pgina (contedo do cabealho User-Agent). possvel usar o pipe |
para direcionar os erros para um programa de formatao ou processamento. ATENO: Se
um programa for usado como pipe, ele ser executado sob o usurio que iniciou o apache.
Revise o cdigo fonte do programa para ter certeza que no contm falhas que possam com-
prometer a segurana de seu sistema.
Exemplo: AgentLog /var/log/apache/agent.log
12.10.2 ErrorLog
ErrorLog arquivo/pipe - Especica o arquivo que registrar as mensagens de erro do
servidor Apache. possvel usar o pipe | para direcionar os erros para um programa de
formatao ou processamento.
Exemplo: ErrorLog /var/log/apache/errors.log
12.10.3 CustomLog
Permite especicar onde os logs sero gravados para os arquivos de logs personalizados. Esta
diretiva tambm aceita apelidos denidos pela diretiva LogFormat.
CustomLog [arquivo/pipe] [formato/nome]
Onde:
arquivo/pipe Arquivo de log personalizado ou pipe.
formato/nome Especica o formato do arquivo de log (da mesma forma que o especicado
na opo LogFormat). Dever ser especicado entre aspas caso tiver espaos. Veja
LogFormat on page 206 para detalhes.
Ao invs de especicar o formato, tambm possvel usar um apelido denido pela opo
LogFormat (LogFormat on page 206), neste caso os parmetros denidos pelo LogFormat para
nome sero atribudos a diretiva CustomLog.
Exemplos:
CustomLog /var/log/apache/common.log %h %l %u %t \%r\ %>s %b
CustomLog /var/log/apache/common.log common
12.10.4 RefererLog
RefererLog [arquivo/pipe]: Indica que arquivo/pipe registrar os campos Referer do
cabealho HTTP. Esta diretiva mantida por compatibilidade com o servidor web NCSA 1.4.
A congurao padro do Apache usa uma diretiva alternativa para a especicao do referer
que a seguinte:
Captulo 12. Apache 205
LogFormat "%{Referer}i -> %U" referer
CustomLog /var/log/apache/referer.log referer
Exemplo: RefererLog /var/log/apache/referer.log
12.10.5 RewriteLog
RewriteLog: [arquivo/pipe]: Indica o arquivo/pipe que registrar qualquer regrava-
o de URL feita pelo Apache.
OBS: No recomendvel direcionar o nome de arquivo para /dev/null como forma de de-
sativar este log, porque o mdulo de regravao no cria a sada para um arquivo de log, ele
cria a sada de log internamente. Isto somente deixar o servidor lento. Para desativar este re-
gistro, simplesmente remova/comente a diretiva RewriteLog ou use a opo RewriteLogLevel
0.
Exemplo: RewriteLog /usr/local/var/apache/logs/rewrite.log
12.10.6 RewriteLogLevel
RewriteLogLevel [num]: Especica os detalhes que sero includos no registro da opo
RewriteLog, os valores permitidos esto entre 0 e 9. Se for usado 0, o registro do RewriteLog
totalmente desativado (esta a padro). OBS: Qualquer valor acima de 2 deixa o servidor
Web cada vez mais lento devido ao processamento e a quantidade de detalhes registrados no
arquivo especicado por RewriteLog.
12.10.7 ScriptLog
ScriptLog [arquivo]: Especica o nome do arquivo de log que receber as mensagens de
erros gerados por scripts CGI executados no servidor. Esta opo controlada pelo mdulos
mod_cgi.
Os arquivos de log sero abertos por um sub-processo rodando com as permisses do usurio
especicado na diretiva user.
OBS: Esta opo somente recomendada como depuradora de scripts CGI, no para uso con-
tnuo em servidores ativos.
Exemplo: ScriptLog /var/log/apache/cgiscripts.log
12.10.8 ScriptLogBuffer
ScriptLogBuffer: Especica o tamanho do cabealho PUT ou POST gravado no arquivo
especicado por ScriptLog. O valor padro 1024 bytes. Esta opo controlada pelo mdulos
mod_cgi
Exemplo: ScriptLogBuffer 512
Captulo 12. Apache 206
12.10.9 ScriptLogLength
ScriptLogLength: [tamanho]: Especica o tamanho mximo do arquivo de log gerado
pela opo ScriptLog. O valor padro 10385760 bytes (10.3MB). Esta opo controlada pelo
mdulos mod_cgi
Exemplo: ScriptLogLength 1024480
12.10.10 LogFormat
LogFormat: Dene os campos padres do arquivo gerado pela opo TransferLog. O seu
formato o seguinte:
LogFormat [formato] [nome]
Quando o formato no especicado, assume o valor padro %h %l %u %t \%r\ %s
%b. A especicao do [nome] permite que voc utilize o formato especicado em uma opo
CustomLog ou outra diretiva LogFormat, facilitando a especicao do formato do log.
Os seguintes formatos so vlidos:
%b - Bytes enviados, excluindo cabealhos HTTP.
%f - Nome do arquivo.
%{FOOBAR}e - O contedo da varivel de ambiente FOOBAR.
%h - Mquina cliente.
%a - Endereo IP da mquina cliente.
%A - Endereo IP local. Muito til em virtual hostings.
%{Foobar}i - O contedo de Foobar: linhas de cabealho na requisio enviada ao
servidor.
%l - O nome de login remoto enviado pelo identd (se fornecido).
%{Foobar}n - O contedo de FooBar de outro mdulo.
%{Foobar}o: - O contedo de Foobar: linhas de cabealho na resposta.
%p - A porta do servidor servindo a requisio.
%P - A identicao do processo lho que serviu a requisio.
%r - A primeira linha da requisio.
%s - Status. Para requisies que foram redirecionadas. internamente. Este o status de
uma requisio *original*. Use %s para a ltima.
%t - Hora, no formato do arquivo de log (formato ingls padro).
%{format}t - Hora, no formato denido por strftime.
%T - O tempo necessrio para servir a requisio, em segundos.
%u - Usurio remoto (atravs do auth, pode ser falso se o status de retorno (%s) for 401).
%U - O caminho da URL requisitada.
%v - O nome cannico denido por ServerName que serviu a requisio.
%V - O nome do servidor de acordo com a congurao de UseCanonicalName.
Exemplos:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T %v" full
Captulo 12. Apache 207
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %P %T" debug
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
12.10.11 TransferLog
TransferLog [arquivo/pipe]: Indica o arquivo que armazenar as transferncias entre o
servidor http e o cliente. Ela cria o arquivo de log como formato denido pela opo LogFormat
mais recente (sem a especicao do nome associado a diretiva) ou o formato padro CLF do
log do Apache.
Se omitido, o arquivo no ser gerado
Exemplo: TransferLog /var/log/apache/transferncias.log
OBS: Se esta no uma opo muito utilizada na administrao de seus sistemas, reco-
mendvel o uso da diretiva CustomLog (veja CustomLog on page 204) para evitar confuses
futuras.
12.10.12 LogLevel
Dene o nvel de alerta das mensagens que sero gravadas no arquivo especicado pela di-
retiva ErrorLog. Quando no especicado, assume o nvel error como padro. Abaixo os
parmetros aceitos em sua respectiva ordem de importncia:
emerg - O sistema est inutilizvel.
alert - A ao deve ser tomada imediatamente.
crit - Condies crticas.
error - Condies de erro.
warn - Condies de alerta.
notice - Condio normal mas signicante.
info - Mensagens informativas.
debug - Mensagens do nvel de depurao.
Note que os nveis so os mesmos usados pelo syslog. Quando um nvel particular especi-
cado, as mensagens de todos os nveis de maior importncia tambm sero registrados. Por
exemplo, se o nvel info for especicado, as mensagens com os nveis de notice e warn
tambm sero registradas. recomendado o uso de um nvel de no mnimo crit.
12.10.13 Anonymous_LogEmail
Se estiver como on a senha digitada ser registrada no arquivo especicado por ErrorLog.
Esta diretiva ativada por padro.
Exemplo: Anonymous_LogEmail off
Captulo 12. Apache 208
12.10.14 CookieLog
Especica o arquivo que ser usado para registrar os cookies
OBS1: Caso o caminho do arquivo no for especicado nas diretivas, ser assumido Documen-
tRoot como diretrio padro.
OBS2: Caso esteja usando o pipe, o dono do processo ser o mesmo que iniciou o servidor
WEB Apache. Tenha certeza do funcionamento do programa para no comprometer o seu
sistema, e cuide para que ele no possa ser modicado indevidamente por outros usurios.
Exemplo: CookieLog /var/log/apache/cookies.log
12.10.15 Relatrio grco de acesso ao sistema
O programa webalizer poder ser instalado para gerar um relatrio grco com a estatsti-
cas de visitas por ano/mes/dia/hora usando os dados do access.log. Outra interessante
caracterstica so as estatsticas de cdigos http (veja Cdigos HTTP on page 242), onde pos-
svel saber a quantidade de links quebrados existentes em nosso servidor (estes podero ser
detectados usando o pacote de anlise de sites linbot). O webalizer tambm compatvel
com os formatos de log do squid e proftpd. Na distribuio Debian ele pode ser instalado
a partir do pacote webalizer e gera um relatrio geral quando executado sem opes.
12.11 Congurando o Apache como servidor proxy
O Apache pode ser congurado para funcionar como servidor proxy transparente para sua
rede interna, possibilitando inclusive o uso de cache de disco. possvel se fazer conexes
HTTP (incluindo SSL) e FTP. Atravs desta caracterstica tambm possvel usar uma das
caractersticas mais interessante desse servidor web: o redirecionamento de conexes para
uma determinada URL para uma outra mquina, que pode ser um outro host remoto ou uma
mquina da rede interna (no acessvel diretamente via Internet).
O primeiro passo ativar o mdulo de proxy no arquivo httpd.conf, basta descomentar a
linha:
# LoadModule proxy_module /usr/lib/apache/1.3/libproxy.so
O seguinte bloco pode ser colocado no nal do arquivo httpd.conf para congurar um ser-
vidor proxy para realizar conexes diretas (sem o uso de cache) e permitir o uso de servidores
proxy em sua rede:
# Suporte a Proxy
#
<IfModule mod_proxy.c>
Captulo 12. Apache 209
ProxyRequests off
ProxyRemote * http://debian:3128
ProxyBlock microsoft.com microsoft.com.br
NoProxy 192.168.1.0/24
ProxyDomain .gms.com.br
# Ativa/Desativa a manipulao de cabealhos HTTP/1.1 "Via:".
#
# ("Full" adiciona a verso do servidor Apache; "Block" remove todos os cabealhos
# de sada "Via:")
# Escolha uma das opes: Off | On | Full | Block
#
#ProxyVia On
#</IfModule>
Segue a explicao de cada uma das diretivas acima:
ProxyRequests [on/off ] Ativa (on) ou Desativa (off) o servio de proxy do servidor Apache.
Note que o mdulo libproxy.so deve estar carregado para que o bloco <IfModule
libproxy.c> seja processado. A desativao desta diretiva no afeta a diretiva ProxyPass.
ProxyRemote [origem [URL]] Esta opo til para fazer o Apache redirecionar suas requi-
sies para outro servidor proxy (como o squid ou o gateway da rede, caso o Apache
estiver sendo executado em uma mquina interna). A origem pode ser uma URL com-
pleta (como http://www.debian.org), uma URL parcial (como ftp, http) ou * para que
o redirecionamento seja sempre usado.
ProxyBlock [padro ] Permite bloquear o acesso a endereos que contenham o padro espe-
cicado. Podem ser especicadas palavras, mquinas, domnios, URLs separados por
espaos. O Apache far a resoluo DNS no caso de endereos IP e far o cache para
requisies futuras.
NoProxy [endereos ] Permite especicar endereos Internos que no sero redirecionados
para o servidor proxy especicado por ProxyRemote. Podem ser usados nomes de m-
quinas, endereos IP, subredes ou domnios separados por espaos.
ProxyDomain [endereo ] Especica o endereo que ser adicionado a URL caso seja recebida
uma requisio que contenha somente um nome de mquina. til em redes Internas.
Note que quando o suporte a proxy no est ativado no Apache, qualquer endereo de URL
externa levar a pgina denida pela diretiva DocumentRoot. Isto deixar de funcionar aps
congurar o servio de proxy.
O uso do cache interessante para acelerar as requisies http da rede interna para a rede
externa, desta forma, se uma requisio foi feita anteriormente, ser descarregado o arquivo
do disco rgido e assim evitar uma nova conexo externa (isto libera a rede para outras coi-
sas). Para congurar um cache no servio proxy, adicione as seguintes linhas no nal do bloco
anterior de proxy:
# As linhas abaixo ativam o cache do apache, o cache no funcionar ao menos que
# CacheRoot seja especificado
CacheRoot /var/spool/apache
Captulo 12. Apache 210
CacheForceCompletion 70
CacheSize 5
CacheGcInterval 3
CacheDefaultExpire 5
CacheMaxExpire 300
NoCache 192.168.1.0/24 a_domain.com outrodomnio.com.br outro.dominio.net
Cada diretiva acima possui o seguinte signicado:
CacheRoot Diretrio base onde sero criados os outros diretrios de cache. O cache s ser
ativado se esta diretiva for denida.
CacheForceCompletion [num ] Se uma transferncia for cancelada e passar de num%, o
Apache continuar a transferncia e armazenar o arquivo no cache. O valor padro
90.
CacheSize [num ] Dene o tamanho mximo do diretrio de cache do Apache, em KB. No
especique um valor que tome mais de 70% do espao em disco. O valor padro 5.
CacheGcInterval [num ] Dene o tempo que o cache ser checado em busca de arquivos mai-
ores que o total do cache. Arquivos que ultrapassem o tamanho do cache so automati-
camente eliminados.
CacheDefaultExpire [num ] Dene o tempo que os documentos caro no cache, se foram
transferidos atravs de protocolos que no suportam horas de expirao. O valor padro
1 hora.
CacheMaxExpire [num ] Dene o tempo que os documentos permanecero armazenados no
cache (em horas). Esta opo ignora a hora de expirao do documento (caso fornecida).
O valor padro 24 horas.
NoCache [endereos ] Permite especicar lista de palavras, mquinas, domnios, IPs que no
sero armazenados no cache do Apache. Caso seja usado NoCache * o cache ser de-
sativado completamente. Note que o cache tambm pode ser desativado comentando a
diretiva CacheRoot.
Se voc desejar um servidor cache mais exvel, rpido, dinmico, congurvel (com possibili-
dade de uso de restries baseadas em URL, tempo de acesso, autenticao), instale o squid e
congure o apache para fazer forward de conexes para ele (Redirecionamento de conexes
no Apache on the facing page).
12.11.1 Controlando o acesso ao servidor proxy
Incluir o bloco abaixo no arquivo access.conf para denir o acesso dos servios de proxy
nas redes desejadas (se a sua congurao for aberta como padro isto pode ser opcional):
# Acesso aos servios proxy do apache
<Directory proxy:*>
Order deny,allow
Deny from all
Allow from .seudominio.com.br
</Directory>
Captulo 12. Apache 211
Para explicaes sobre o processo de bloqueio acima, veja Autorizao on page 187.
12.11.2 Redirecionamento de conexes no Apache
Este recurso do Apache interessante para criar clusters de servidores em sua rede interna. O
que ele faz pegar uma requisio a um determinado endereo e redireciona-lo a outra m-
quina e as respostas so repassadas ao servidor web (para o cliente a mesma mquina esta
atendendo a requisio, para voc o processamento das requisies esta sendo distribudo in-
ternamente na rede).
As seguintes diretivas so usadas para realizar o redirecionamento de conexes: ProxyPass e
ProxyPassReverse
ProxyPass [diretrio_da_url [outro_servidor:/diretrio ] A ProxyPass permite que a URL seja
redirecionada para o servidor local e diretrio especicado. Por exemplo, assumindo que
o endereo principal de nosso servidor http: //www.guiafoca.org e desejamos
que a URL http: //www.guiafoca.org/download seja atendida por uma mquina
localizada na nossa rede privada com o endereo http: //192.168.1.54. Basta in-
cluir a linha:
ProxyPass /download http://192.168.1.54
Qualquer requisio externa a http: //www.guiafoca.org/download
/iniciante ser atendida por http: //192.168.1.54/iniciante.
ProxyPassRemote [diretrio_da_url [outro_servidor:/diretrio ] Esta diretiva permite modi-
car o cabealho Location nas mensagens de respostas de redirecionamento enviadas
pelo Apache. Isto permite que o endereo retornado seja o do servidor (que faz a inter-
face externa com o cliente) e no da mquina do redirecionamento.
ProxyPass /download http://192.168.1.54
ProxyPassReverse /download http://192.168.1.54
Se a mquina 192.168.1.54 redirecionar a URL para http: //192.168.1.54
/download/iniciante, a resposta ser modicada para http: /
/www.guiafoca.org/download/iniciante antes de ser retornada ao cliente.
\
12.12 Virtual Hosts
Virtual Hosts (sites virtuais) um recurso que permite servir mais de um site no mesmo ser-
vidor. Podem ser usadas diretivas especcas para o controle do site virtual, como nome do
administrador, erros de acesso a pgina, controle de acesso e outros dados teis para persona-
lizar e gerenciar o site. Existem 2 mtodos de virtual hosts:
Virtual Hosts baseados em IP - Requer um endereo IP diferente para cada site.
Este poder ser um IP real (da interface de rede) ou um apelido (veja IP Alias on
page 69), o que interessa que deve haver um endereo IP diferente para cada site. O
nmero de sites servidos estar limitado a quantidade de endereos IP disponveis em
sua classe de rede. Veja Virtual hosts baseados em IP on the next page para detalhes de
Captulo 12. Apache 212
como construir um virtual host deste tipo. O apache foi um dos primeiros servidores
web a incluir suporte a virtual hosts baseados em IP.
Virtual Hosts baseados em nome - Este utiliza nomes para identicar os sites ser-
vidos e requerem somente um endereo IP. Desta maneira possvel servir um nmero
ilimitado de sites virtuais. O navegador do cliente deve suportar os cabealhos neces-
srios para garantir o funcionamento deste recurso (praticamente todos os navegadores
atuais possuem este suporte). Veja Virtual hosts baseados em nome on the facing page
para detalhes de como construir um virtual host deste tipo.
As explicaes desta seo so baseadas na documentao do Apache.
12.12.1 Virtual hosts baseados em IP
Existem duas maneiras de rodar este tipo de host virtual: Atravs de daemons httpd separa-
dos ou em um nico daemon httpd usando a diretiva <VirtualHost>.
As vantagens do uso de daemons separados para servir requisies a proteo sob UIDe GIDdi-
ferente dos outros servidores, assim o administrador do site1 no ter acesso ao httpd.conf,
pgina do site2 (porque ele estar rodando sob uma UID e GID diferentes e o acesso res-
trito). Para usar este mtodo, especique a opo -f [arquivo_cfg] para utilizar um arquivo de
congurao personalizado e a diretiva Listen endereo:porta para dizer onde o servidor aguar-
dar as requisies.
As vantagens do uso de um mesmo daemon para servir as requisies so: quando no h pro-
blema se os administradores de outros sites tenham acesso ao mesmo arquivo de congurao
ou quando h a necessidade de servir muitas requisies de uma s vez (quanto menos servi-
dores web estiverem em execuo, melhor o desempenho do sistema). Abaixo um exemplo de
congurao de virtual hosts servindo os sites www.site1.com.br e www.site2.com.br:
ServerAdmin webmaster@site.com.br
<VirtualHost www.site1.com.br>
ServerName www.site1.com.br
ServerAdmin site1@site1.com.br
DocumentRoot /var/www/www_site1_com_br
TransferLog /var/log/apache/site1/access.log
ErrorLog /var/log/apache/site1/error.log
User www-data
Group www-data
</VirtualHost>
<VirtualHost www.site2.com.br>
ServerName www.site2.com.br
DocumentRoot /var/www/www_site2_com_br
CustomLog /var/log/apache/site2/access.log combined
ErrorLog /var/log/apache/site2/error.log
</VirtualHost>
Captulo 12. Apache 213
Qualquer diretiva dentro de <VirtualHost> controlaro tero efeito no site virtual especicado.
Quando uma diretiva no for especicada dentro de <VirtualHost>, sero usados os valores
padres especicados no arquivo de congurao do Apache (como a diretiva ServerAdmin
webmaster@site.com.br que ser usado como padro na congurao de www.site2.com.br).
Digite apache -S para ver suas conguraes de virtual hosts atual.
OBS1: Desative a diretiva UseCanonicalName off quando utilizar o recurso de mquinas
virtuais, esta diretiva faz que o nome do servidor retornado usando o valor em ServerName
quando o cliente digita um endereo qualquer.
OBS2: Utilize sempre que possvel endereos IP em conguraes crticas, assim os servios
no sero to vulnerveis a possveis falsicaes ou erros. Veja /etc/host.conf on page 56 e
Proteo contra IP spoong on page 147. Leia tambm a seo Segurana no uso de IPs em
Virtual Hosts on page 215.
OBS3: No permita que outros usurios a no ser o root e o dono do processo Apache (es-
pecicado pela diretiva User) tenham acesso de gravao aos logs gerados pelo servidor, pois
os dados podem ser apagados ou criados links simblicos para binrios do sistema que sero
destrudos quando o Apache gravar dados. Alguns binrios e bibliotecas so essenciais para
o funcionamento do sistema.
12.12.2 Virtual hosts baseados em nome
Este mtodo idntico ao baseado em IP, em especial adicionamos a diretiva NameVirtualHost
para dizer qual o endereo IP do servidor que est servindo os virtual hosts baseados em
nome. Veja o exemplo de congurao:
NameVirtualHost 200.200.200.10:80
<VirtualHost _default_:80 200.200.200.10:80>
ServerName www.site.com.br
ServerAdmin admin@site.com.br
DocumentRoot /var/www
TransferLog /var/log/apache/access.log
ErrorLog /var/log/apache/error.log
</VirtualHost>
<VirtualHost 200.200.200.10>
ServerName www.site1.com.br
ServerAdmin admin1@site1.com.br
DocumentRoot /var/www/www_site1_com_br
TransferLog /var/log/apache/site1/access.log
ErrorLog /var/log/apache/site1/error.log
</VirtualHost>
<VirtualHost 200.200.200.10>
Captulo 12. Apache 214
ServerName www.site2.com.br
ServerAdmin admin2@site2.com.br
DocumentRoot /var/www/www_site2_com_br
TransferLog /var/log/apache/site2/access.log
ErrorLog /var/log/apache/site2/error.log
</VirtualHost>
A diretiva NameVirtualHost diz que ser usado virtual hosts baseados em nome servidos pela
mquina com IP 200.200.200.10. Os parmetros dentro do bloco das diretivas <Virtua-
lHost > so especcas somente no site virtual especicado, caso contrrio os valores padres
denidos no arquivo de congurao sero usados. Caso nenhum virtual host conra com a
congurao, o virtualhost _default_ ser usado.
Digite apache -S para ver suas conguraes de virtual hosts atual. Se sua inteno criar
um grande nmero de virtual hosts que sero servidos pela mesma mquina, o uso da expan-
so %0 e diretivas VirtualDocumentRoot e VirtualScriptAlias so recomendados:
NameVirtualHost 200.200.200.10:80
<VirtualHost 200.200.200.10>
VirtualDocumentRoot /var/www/%0
VirtualScriptAlias /var/www/%0/cgi-bin
TransferLog log/apache/site1/access.log
ErrorLog log/apache/site1/error.log
</VirtualHost>
Agora crie os diretrios em /var/www correspondentes aos nomes de domnios
que sero servidos por sua mquina: mkdir /var/www/www.site1.com.br, mkdir
/var/www/www.site2.com.br. Note que sua mquina dever estar com o DNS congu-
rado para responder por estes domnios .
ATENO importante que os endereos especicados nas diretivas ServerName
(www.site1.com.br) resolvam o endereo IP da diretiva VirtualHost (200.200.200.10).
Isto deve ser feito via DNS ou nos arquivos /etc/hosts.
OBS1: Utilize sempre que possvel endereos IP em conguraes crticas, assim os servios
no sero to vulnerveis a possveis falsicaes ou erros. Veja /etc/host.conf on page 56 e
Proteo contra IP spoong on page 147. Leia tambm a seo Segurana no uso de IPs em
Virtual Hosts on the facing page.
OBS2: No permita que outros usurios a no ser o root e o dono do processo Apache (es-
pecicado pela diretiva User) tenha acesso de gravao aos logs gerados pelo servidor. Pois
os dados podem ser apagados ou criados links para binrios do sistema que sero destrudos
quando o apache gravar dados para os logs. Alguns binrios e bibliotecas so essenciais para
o funcionamento do sistema.
Captulo 12. Apache 215
12.12.3 Segurana no uso de IPs em Virtual Hosts
Quando voc est colocando um nome na diretiva de congurao do seu virtual hosts,
est assumindo que ele resolver o endereo IP corretamente (como www.site1.com.br =>
200.200.200.10). Se por algum motivo o servidor DNS for modicado (por outra pessoa
que tem acesso a isto), o endereo IP resolvido para o site www.site1.com.br poder ser
modicado para 200.200.200.20, isto redirecionar as requisies para outra mquina ao
invs da mquina correta. Este tipo de ataque chamado DNS Spoong e o uso de endereo
IP (ao invs de nomes) praticamente evita que isto acontea. Esta situao pode acontecer com
a diretiva abaixo:
<VirtualHost www.gms.com.br>
ServerName www.gms.com.br
ServerAdmin gleydson@guiafoca.org
DocumentRoot /var/www/www_gms_com_br
</VirtualHost>
Outra situao, que impede o funcionamento do servidor Web, quando o servidor DNS est
em manuteno ou por algum outro motivo no pode resolver o endereo IP de um nome
especicado (como www.site1.com.br). O apache precisa saber qual o seu endereo IP
para ser executado. Veja a prxima modicao:
<VirtualHost 192.168.1.1>
ServerName www.gms.com.br
ServerAdmin gleydson@guiafoca.org
DocumentRoot /var/www/www_gms_com_br
</VirtualHost>
Na congurao acima usamos o IP do servidor para especicar o virtual host. O apache
tentar fazer o DNS reverso para determinar qual nome servido por aquele endereo IP
(www.site1.com.br). Se ele falhar, somente a seo <VirtualHost> correspondente ser de-
sativada. Isto j uma melhoria sobre a primeira congurao. Onome do servidor na diretiva
ServerName garante que o servidor responda com o nome correto.
Para evitar ataques baseados em DNS siga os seguintes procedimentos de segurana:
1 Preferencialmente utilize o arquivo /etc/hosts para a resoluo de nomes em mqui-
nas locais (principalmente quando existe somente um administrador). um mtodo que
evita diversas consultas ao servidor DNS (que pode deixar o acesso lento) e este arquivo
gerenciado pelo usurio root, isto evita o acesso de qualquer usurio para a falsicao
de endereos. Este arquivo tambm til caso a pesquisa DNS falhe (quando a ordem
de pesquisa for do servidor DNS para o arquivo hosts no arquivo /etc/host.conf),
pois de qualquer forma o nome ser resolvido e o servidor Apache ser executado.
2 Evite dar poderes a outros administradores manipularem seu prprio domnio DNS, no
h nada que possa impedi-lo de modicar o endereo X para ser servido pelo IP Y
desviando o trfego para seu prprio servidor web. Se isto no for possvel, siga as dicas
abaixo para diminuir possveis problemas.
Captulo 12. Apache 216
3 Utilize endereos IP na diretiva <VirtualHost>.
4 Use endereos IP na diretiva Listen.
5 Use um endereo IP na diretiva BindAddress.
6 Sempre utilize o parmetro ServerName em todas as diretivas <VirtualHost>, isto evita o
retorno incorreto de nomes (que pode evitar/revelar fraudes).
7 Quando utilizar virtual hosts, crie uma diretiva <VirtualHost _default_L:*> usando uma
diretiva DocumentRoot que no aponte para lugar algum. Esta diretiva ser acessada
quando nenhuma diretiva VirtualHost servir a requisio, conferindo com o endereo/ip.
12.13 Uso de criptograa SSL
Esta seo uma referncia rpida para congurao e uso do mdulo apache-ssl com o
servidor Apache. Este mdulo realiza a comunicao segura de dados (criptografada) via
porta 443 (que usada como padro quando especicamos uma url iniciando com https:// ).
A transmisso criptografada de dados importante quanto temos dados condenciais que
precisamos transmitir como movimentao bancria, senhas, nmero de cartes de crdito,
fazer a administrao remota do servidor, etc. SSL signica Secure Sockets Layer (camada segura
de transferncia) e TLS Transport Layer Security (camada segura de Transporte).
A inteno aqui fornecer explicaes prticas para colocar um servidor Apache com suporte
a SSL funcionando no menor tempo possvel. Detalhes sobre funcionamento de certicados,
mtodos de criptograa, assinatura, etc. devero ser buscados na documentao deste mdulo
ou em sites especializados ( um assunto muito longo).
12.13.1 Servidor apache com suporte a ssl
Ao invs de utilizar o mdulo mod_ssl, voc poder usar o pacote apache-ssl, ele nada
mais que um servidor Apache com o suporte SSL j incluso e no interfere no servidor
Apache padro, porque executado somente na porta 443.
Se voc tem um grande site com conguraes de acesso personalizadas, ele trar mais tra-
balho de administrao, pois as conguraes e diretivas de restries de acesso devero ser
copiadas para este servidor web. No entanto, ele indicado para mquinas que sero ser-
vidores SSL dedicados ou quando no possui conguraes especiais em seu servidor web
principal.
Esta seo tem por objetivo a instalao do suporte ao mdulo SSL (mod_ssl) no servidor
Apache padro.
12.13.2 Instalando o suporte a mdulo SSL no Apache
Instale o pacote libapache-mod-ssl. Aps instala-lo, edite o arquivo /etc/apache
/httpd.conf adicionando a linha:
LoadModule ssl_module /usr/lib/apache/1.3/mod_ssl.so
Captulo 12. Apache 217
Depois, gere um certicado digital ssl com o programa mod-ssl-makecert. Ele ser arma-
zenado por padro nos diretrios em /etc/apache/ssl.??? e seu uso explicado no resto
desta seo.
12.13.3 Gerando um certicado digital
O certicado digital a pea que garante a transferncia segura de dados. Ele contm detalhes
sobre a empresa que far seu uso e quem o emitiu. Para gerar ou modicar um certicado
digital, execute o comando mod-ssl-makecert e siga as instrues. O mtodo de criptogra-
a usado pelo certicado digital baseado no conceito de chave pblica/privada, a descrio
sobre o funcionamento deste sistema de criptograa feito em Usando pgp (gpg)para cripto-
graa de arquivos on page 412.
OBS No utilize acentos nos dados de seu certicado.
12.13.4 Exemplo de congurao do mdulo mod-ssl
Abaixo uma congurao rpida para quem deseja ter um servidor com suporte a SSL funcio-
nando em menor tempo possvel (ela feita para operar em todas as instalaes e no leva em
considerao o projeto de segurana de sua congurao atual do Apache). Note que todas as
diretivas relacionadas com o mdulo mod_ssl comeam com o nome SSL:
# Somente processa as diretivas relacionadas a SSL caso o mdulo mod_ssl estiver
# carregado pela diretiva LoadModule
<IfModule mod_ssl.c>
# necessrio especificar as portas que o servidor Web aguardar conexes (normais e
# ssl).
Listen 80
Listen 443
# Ativa o tratamento de conexes com o destino na porta 443 pela diretiva
# VirtualHost abaixo
<VirtualHost _default_:443>
# Ativa ou desativa o mdulo SSL para este host virtual
SSLEngine on
# Certificado do servidor
SSLCertificateFile /etc/apache/ssl.crt/server.crt
# Chave privada de certificado do servidor.
SSLCertificateKeyFile /etc/apache/ssl.key/server.key
# A linha abaixo fora o fechamento de conexes quando a
Captulo 12. Apache 218
# conexo com o navegador Internet Explorer interrompida. Isto
# viola o padro SSL/TLS mas necessrio para este tipo de
# navegador. Alguns problemas de conexes de navegadores tambm
# so causados por no saberem lidar com pacotes keepalive.
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
</VirtualHost>
</IfModule>
#################################################################################
# Adicionalmente podero ser especificadas as seguintes opes para modificar #
# o comportamento da seo SSL (veja mais detalhes na documentao do mod-ssl) #
#################################################################################
# Formato e localizao do cache paralelo de processos da seo. O cache de seo
# feito internamente pelo mdulo mas esta diretiva acelera o processamento
# de requisies paralelas feitas por modernos clientes navegadores. Por padro
# nenhum cache usado ("none").
SSLSessionCache dbm:/var/run/ssl-cache
# Localizao do arquivo de lock que o mdulo SSL utiliza para
# sincronizao entre processos. O padro nenhum.
SSLMutex file:/var/run/ssl-mutex
# Especifica o mtodo de embaralhamento de dados que ser utilizado
# durante o inicio de uma seo SSL (startup) ou durante o processo
# de conexo (connect). Podem ser especificados "builtin" ( muito rpido
# pois consome poucos ciclos da CPU mas no gera tanta combinao aleatria), um
# programa que gera nmeros aleatrios (com "exec") ou os dispositivos aleatrios
# /dev/random e /dev/urandom (com "file"). Por padro nenhuma fonte
# adicional de nmeros aleatrios usada.
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
#SSLRandomSeed startup file:/dev/urandom 512
#SSLRandomSeed connect file:/dev/urandom 512
#SSLRandomSeed connect exec:/pub/bin/NumAleat
# Tipos MIME para download de certificados
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
# Tempo mximo de permanncia dos objetos do cache acima. O valor padro
# 300 segundos (5 minutos).
SSLSessionCacheTimeout 300
Captulo 12. Apache 219
# Verso do protocolo SSL que ser usada. Podem ser especificadas
# SSLv2, SSLv3 TLSv1 ou all. O mais compatvel com os navegadores atuais
# o "SSLv2". Por padro "all" usado.
#SSLProtocol all
#SSLProtocol -all +SSLv3
# Registra detalhes sobre o trfego neste arquivo. Mensagens de erro
# tambm so armazenadas no arquivo de registro padro do Apache
SSLLog /var/log/apache/ssl-mod.log
# Nvel das mensagens de log registradas por SSLLog
SSLLogLevel info
Algumas diretivas deste mdulo podem fazer parte tanto da congurao global do servidor
como diretivas de acesso (Directory, Location, .htaccess, veja a opo Context na
documentao do mod_ssl).
12.13.5 Autorizando acesso somente a conexes SSL
Existem casos que precisa restringir o uso de conexes normais e permitir somente conexes
via SSL (como por exemplo, dentro da diretiva de acesso que controla seu acesso a uma pgina
com listagem de clientes). A opo SSLRequereSSL usada para tal e deve ser usada dentro das
diretivas de controle acesso:
<Directory /var/www/secure/clientes>
Options Indexes
Order deny,allow
Deny from evil.cracker.com
SSLRequireSSL
</Directory>
A diretiva acima requer que sejam feitas conexes SSL (porta 443 - https://) para acesso ao
diretrio /var/www/secure/clientes, qualquer conexo padro no criptografada (feita
na porta 80) ser rejeitada com o erro 403.
OBS: A diretiva SSLRequireSSL podia ser colocada entre as condicionais IfModule mod_ssl.c
mas o servidor web permitiria conexes no criptografadas se por algum motivo esse mdulo
no estivesse carregado. Na congurao acima, ocorrer umerro e impedir o funcionamento
do servidor web caso ocorra algum problema com o mod_ssl.
12.13.6 Iniciando o servidor Web com suporte a SSL
Verique se a congurao do Apache est ok com apache -t. Caso positivo, reinicie o ser-
vidor usando um dos mtodos descritos em Iniciando o servidor/reiniciando/recarregando
Captulo 12. Apache 220
a congurao on page 178. O servidor web lhe pedir a FraseSenha para descriptografar a
chave privada SSL (esta senha foi escolhida durante o processo de criao do certicado).
Esta senha garante uma segurana adicional caso a chave privada do servidor seja copiada de
alguma forma. Somente quem tem conhecimento da FraseSenha poder iniciar o servidor com
suporte a transferncia segura de dados. Verique se o virtual host est servindo as requisies
na porta 443 com apache -S.
O nico mtodo para fazer o servidor web evitar de pedir a senha para descriptografar a chave
privada colocando uma senha em branco. Isto s recomendado em ambientes seguros e
o diretrio que contm a chave privada dever ter somente permisses para o dono/grupo
que executa o servidor Web. Qualquer outra permisso poder por em risco a segurana da
instalao caso a chave privada seja roubada. Depois disso, execute o comando:
# entre no diretrio que contm a chave privada
cd /etc/apache/ssl.key
# renomeie a chave privada para outro nome
ren server.key server.key-Csenha
openssl rsa -in server.key-Csenha -out server.key
Digite a senha quando pedido. A chave original (com senha) estar gravada no arquivo
server.key-Csenha e poder ser restaurada se necessrio. Reinicie o servidor Apache,
desta vez ele no pedir a senha.
OBS1: Tire uma cpia de segurana da chave privada original antes de executar esta operao.
OBS2: No se esquea de ajustar as permisses de acesso no diretrio /etc/apache
/ssl.key caso no utilize senha para proteger seu certicado digital.
12.14 Exemplo comentado de umarquivo de congurao do Apache
O exemplo abaixo foi retirado da distribuio Debian GNU/Linux, z sua traduo, modi-
caes e inclui alguns comentrios sobre as diretivas para deixa-lo mais de acordo com o
contedo abordado pelo guia e mais auto-explicativo.
A congurao do Apache est distribuda nos arquivos httpd.conf, srm.conf e
access.conf e podem ser usados como modelo para a construo da congurao de seu
servidor.
12.14.1 httpd.conf
##
## httpd.conf -- Arquivo de configurao do servidor httpd Apache
##
Captulo 12. Apache 221
#
# Baseado nos arquivos de configurao originais do servidor NCSA por Rob McCool.
# Modificado para distribuio junto ao guia Foca GNU/Linux Avanado
# http://focalinux.cipsga.org.br/ <gleydson@guiafoca.org>
#
# Este o arquivo de configurao principal do servidor Apache. Ele contm as
# diretivas de configurao que do ao servidor suas instrues.
# Veja <http://www.apache.org/docs/> para informaes detalhadas sobre as
# diretivas.
#
# NO leia simplesmente as instrues deste arquivo sem entender o que significam
# e o que fazem, se no tiver certeza do que est fazendo consulte a documentao
# on-line ou leia as sees apropriadas do guia. Voc foi avisado.
#
# Aps este arquivo ser processado, o servidor procurar e processar o arquivo
# /etc/apache/srm.conf e ento /etc/apache/access.conf
# a no ser que voc tenha modificado o nome dos arquivos acima atravs das
# diretivas ResourceConfig e/ou AccessConfig neste arquivo.
#
# Configurao e nomes de arquivos de log: Se os nomes de arquivos que
# especificar para os arquivos de controle do servidor iniciam com uma
# "/", o servidor usar aquele caminho explicitamente. Se os nomes *no*
# iniciarem com uma "/", o valor de ServerRoot adicionado -- assim
# "logs/foo.log" com ServerRoot ajustado para "/usr/local/apache" ser
# interpretado pelo servidor como "/usr/local/apache/logs/foo.log".
#
# Originalmente por Rob McCool
# modificado por Gleydson Mazioli da Silva para o guia Foca GNU/Linux
# Carga dos Mdulos de Objetos Compartilhados:
# Para voc ser capaz de usa a funcionalidade de um mdulo que foi construdo como
# um mdulo compartilhado, ser necessrio adicionar as linhas LoadModule
# correspondente a sua localizao, assim as diretivas que os mdulos contm
# estaro disponveis _antes_ de serem usadas.
# Exemplo:
#
# ServerType pode ser inetd, ou standalone. O modo Inetd somente suportado nas
# plataformas Unix. O modo standalone inicia o servidor como um daemon.
#
ServerType standalone
# Se estiver executando a partir do inetd, v at a diretiva "ServerAdmin".
# Port: A porta que o servidor standalone escutar. Para portas < 1023, ser
Captulo 12. Apache 222
# necessrio o servidor funcionando como root inicialmente.
Port 80
#
# HostnameLookups: Registra os nomes DNS dos clientes ou apenas seus endereos
# IPs
# ex., www.apache.org (on) ou 204.62.129.132 (off).
# O valor padro off porque permitir menos trfego na rede. Ativando
# esta opo significa que cada acesso de um cliente resultar em
# NO MNIMO uma requisio de procura ao servidor de nomes (DNS).
#
HostnameLookups off
# Caso desejar que o servidor http seja executado como um usurio ou grupo diferente
# voc deve executar o httpd inicialmente como root e ele modificar sua ID para a
# especificada.
# User/Group: O nome (ou #nmero) do usurio/grupo que executar o servidor httpd.
# No SCO (ODT 3) use "User nouser" e "Group nogroup"
# No HPUX voc pode no ser capaz de usar memria compartilhada como nobody, e
# sugerido que seja criado um usurio www e executar o servidor httpd como
# este usurio, adequando as permisses onde necessrias.
User www-data
Group www-data
# ServerAdmin: Seu endereo de e-mail, onde os problemas com o servidor devem ser
# enviadas. Este endereo aparecer nas mensagens de erro do servidor.
ServerAdmin gleydson@guiafoca.org
#
# ServerRoot: O topo da rvore de diretrios onde os arquivos de configurao do
# servidor, erros, e log so mantidos.
#
# NOTA: Se tiver a inteno de colocar isto em um sistema de arquivos montado
# em um servidor NFS (ou outra rede) ento por favor leia a documentao do
# LockFile
# (disponvel em <http://www.apache.org/docs/mod/core.html#lockfile>);
# e se salvar de vrios problemas.
#
# No adicione uma barra no fim do caminho do diretrio.
#
ServerRoot /etc/apache
Captulo 12. Apache 223
# BindAddress: Voc pode usar esta opo em virtual hosts. Esta
# opo usada para dizer ao servidor que endereo IP escutar. Ele pode
# conter ou "*", um endereo IP, ou um nome de domnio completamente qualificado
# (FQDN). Veja tambm a diretiva VirtualHost.
BindAddress *
#
# Suporte a Objetos Compartilhados Dinamicamente (DSO - Dynamic Shared Object)
#
# Para ser capaz de usar a funcionalidade de um mdulo que foi compilado como
# um mdulo DSO, voc ter que adicionar as linhas LoadModule correspondentes
# nesta localizao, assim as diretivas contidas nela estaro disponveis
# _antes_ de serem usadas. Por favor leia o arquivo README.DSO na distribuio
# 1.3 do Apache para mais detalhes sobre o mecanismo DSO e execute o comando
# "apache -l" para a lista de mdulos j compilados (estaticamente linkados e
# assim sempre disponveis) em seu binrio do Apache.
#
# Please keep this LoadModule: line here, it is needed for installation.
# LoadModule vhost_alias_module /usr/lib/apache/1.3/mod_vhost_alias.so
# LoadModule env_module /usr/lib/apache/1.3/mod_env.so
LoadModule config_log_module /usr/lib/apache/1.3/mod_log_config.so
# LoadModule mime_magic_module /usr/lib/apache/1.3/mod_mime_magic.so
LoadModule mime_module /usr/lib/apache/1.3/mod_mime.so
LoadModule negotiation_module /usr/lib/apache/1.3/mod_negotiation.so
LoadModule status_module /usr/lib/apache/1.3/mod_status.so
# LoadModule info_module /usr/lib/apache/1.3/mod_info.so
# LoadModule includes_module /usr/lib/apache/1.3/mod_include.so
LoadModule autoindex_module /usr/lib/apache/1.3/mod_autoindex.so
LoadModule dir_module /usr/lib/apache/1.3/mod_dir.so
LoadModule php3_module /usr/lib/apache/1.3/libphp3.so
LoadModule cgi_module /usr/lib/apache/1.3/mod_cgi.so
# LoadModule asis_module /usr/lib/apache/1.3/mod_asis.so
# LoadModule imap_module /usr/lib/apache/1.3/mod_imap.so
# LoadModule action_module /usr/lib/apache/1.3/mod_actions.so
# LoadModule speling_module /usr/lib/apache/1.3/mod_speling.so
LoadModule userdir_module /usr/lib/apache/1.3/mod_userdir.so
LoadModule alias_module /usr/lib/apache/1.3/mod_alias.so
LoadModule rewrite_module /usr/lib/apache/1.3/mod_rewrite.so
LoadModule access_module /usr/lib/apache/1.3/mod_access.so
LoadModule auth_module /usr/lib/apache/1.3/mod_auth.so
# LoadModule anon_auth_module /usr/lib/apache/1.3/mod_auth_anon.so
# LoadModule dbm_auth_module /usr/lib/apache/1.3/mod_auth_dbm.so
# LoadModule db_auth_module /usr/lib/apache/1.3/mod_auth_db.so
# LoadModule proxy_module /usr/lib/apache/1.3/libproxy.so
Captulo 12. Apache 224
# LoadModule digest_module /usr/lib/apache/1.3/mod_digest.so
# LoadModule cern_meta_module /usr/lib/apache/1.3/mod_cern_meta.so
LoadModule expires_module /usr/lib/apache/1.3/mod_expires.so
# LoadModule headers_module /usr/lib/apache/1.3/mod_headers.so
# LoadModule usertrack_module /usr/lib/apache/1.3/mod_usertrack.so
LoadModule unique_id_module /usr/lib/apache/1.3/mod_unique_id.so
LoadModule setenvif_module /usr/lib/apache/1.3/mod_setenvif.so
# LoadModule sys_auth_module /usr/lib/apache/1.3/mod_auth_sys.so
# LoadModule put_module /usr/lib/apache/1.3/mod_put.so
# LoadModule throttle_module /usr/lib/apache/1.3/mod_throttle.so
# LoadModule allowdev_module /usr/lib/apache/1.3/mod_allowdev.so
# LoadModule auth_mysql_module /usr/lib/apache/1.3/mod_auth_mysql.so
# LoadModule pgsql_auth_module /usr/lib/apache/1.3/mod_auth_pgsql.so
# LoadModule eaccess_module /usr/lib/apache/1.3/mod_eaccess.so
# LoadModule roaming_module /usr/lib/apache/1.3/mod_roaming.so
#
# ExtendedStatus: Controla de o Apache gerar detalhes completos de status
# (ExtendedStatus On) ou apenas detalhes bsicos (ExtendedStatus Off) quando o
# manipulador (handler) "server-status" for usado. O padro Off.
#
ExtendedStatus on
#
# ErrorLog: A localizao do arquivo de log de erros.
# Se no estiver especificando a diretiva ErrorLog dentro de <VirtualHost>,
# as mensagens de erros relativas aos hosts virtuais sero registradas neste
# arquivo. Se definir um arquivo de log de erros para <VirtualHost>, as
# mensagens relativas ao servidor controlados por ela sero registradas l e
# no neste arquivo.
#
ErrorLog /var/log/apache/error.log
#
# LogLevel: Controla o nmero de mensagens registradas no ErrorLog.
# Facilidades possveis incluem: debug, info, notice, warn, error, crit,
# alert, emerg.
# Veja as facilidades na seo do guia sobre o syslog para detalhes
#
LogLevel warn
# As seguintes diretivas definem alguns formatos de nomes que sero usadas com a
# diretiva CustomLog (veja abaixo).
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T %v" full
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %P %T" debug
Captulo 12. Apache 225
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
#
# A localizao e formato do arquivo de log de acesso (definida pela diretiva
# LogFormat acima).
# Se no definir quaisquer arquivos de log de acesso dentro de um
# <VirtualHost>, elas sero registradas aqui. Se for definida dentro
# de <VirtualHost> o arquivo de log de acesso ser registrado no
# arquivo especificado na diretiva e no aqui.
#
#CustomLog /var/log/apache/access.log common
# Se voc desejar ter um arquivo de log separado para o agent (navegador usado)
# e referer, descomente as seguintes diretivas.
#CustomLog /var/log/apache/referer.log referer
#CustomLog /var/log/apache/agent.log agent
# Se preferir um arquivo de log simples, com os detalhes de acesso, agent, e
# referer (usando o formato combined da diretiva LogFile acima), use a seguinte
# diretiva.
CustomLog /var/log/apache/access.log combined
#
# Incluir uma linha contendo a verso do servidor e um nome de host virtual
# para as pginas geradas pelo servidor (documentos de erro, listagens
# de diretrios FTP, sada dos mdulos mod_status e mod_info, etc., exceto
# para documentos gerados via CGI). Use o valor "EMail" para tambm incluir
# um link mailto: para o ServerAdmin. Escolha entre "On", "Off" ou "EMail".
#
ServerSignature On
#
# PidFile: O arquivo que o servidor gravar os detalhes sobre seu PID quando
# iniciar.
#
PidFile /var/run/apache.pid
#
# ScoreBoardFile: Arquivo usado para armazenar detalhes do processo interno do
# servidor. Nem todas as arquiteturas requerem esta diretiva, mas se a sua
# requerer (voc saber porque este arquivo ser criado quando executar o
Captulo 12. Apache 226
# Apache) ento voc *dever* ter certeza que dois processos do Apache no
# utilizam o mesmo arquivo ScoreBoardFile.
#
ScoreBoardFile /var/run/apache.scoreboard
#
# Na configurao padro, o servidor processar este arquivo, o
# srm.conf e o access.conf neste ordem. Voc pode fazer o servidor
# ignorar estes arquivos usando "/dev/null".
#
ResourceConfig /etc/apache/srm.conf
AccessConfig /etc/apache/access.conf
#
# A diretiva LockFile define o caminho do lockfile usado quando o servidor
# Apache for compilado com a opo USE_FCNTL_SERIALIZED_ACCEPT ou
# USE_FLOCK_SERIALIZED_ACCEPT. Esta diretiva normalmente deve ser deixada em seu
# valor padro. A razo principal de modifica-la no caso do diretrio de logs
# for montado via um servidor NFS< pois o arquivo especificado em LockFile
# DEVE SER ARMAZENADO EM UM DISCO LOCAL. O PID do processo do servidor principal
# automaticamente adicionado neste arquivo.
#
LockFile /var/run/apache.lock
# ServerName permite ajustar o nome de host que ser enviado
# aos clientes, caso for diferente do nome real (por exemplo, se desejar usar
# www ao invs do nome real de seu servidor).
#
# Nota: Voc no pode simplesmente inventar nomes e esperar que funcionem. O nome
# que definir dever ser um nome DNS vlido para sua mquina.
ServerName debian.meudominio.org
# UseCanonicalName: Com esta opo ligada, se o Apache precisar construir uma
# URL de referncia (uma url que um retorno do servidor a uma requisio) ele
# usar ServerName e Port para fazer o "nome cannico". Com esta opo desligada,
# o Apache usar computador:porta que o cliente forneceu, quando possvel.
# Isto tambm afeta SERVER_NAME e SERVER_PORT nos scripts CGIs.
#
# Dependendo de sua configurao, principalmente em virtual hosts, recomendvel
# deixa-la desativada ou com o valor DNS. O valor DNS obtm o nome do servidor
# atravs de uma requisio DNS reversa do endereo IP (muito til para virtual
# hosts baseados em IP).
UseCanonicalName off
# CacheNegotiatedDocs: Por padro, o Apache envia Pragma: no-cache com cada
Captulo 12. Apache 227
# documento que foi negociado na base do contedo. Isto permite dizer a
# servidores proxy para no fazerem cache do documento. Descomentando a
# seguinte linha desativa esta caracterstica, e os proxyes sero capazes
# de fazer cache dos documentos.
#CacheNegotiatedDocs
# Timeout: O nmero de segundos antes de receber e enviar um time out
Timeout 300
# KeepAlive: Se vai permitir ou no conexes persistentes (mais que uma requisio
# por conexo). Mude para "Off" para desativar.
KeepAlive On
# MaxKeepAliveRequests: O nmero mximo de requisies que sero permitidas
# durante uma conexo persistente. Mude para 0 para permitir uma quantidade
# ilimitada. Ns recomendamos deixar este nmero alto, para obter a mxima
# performance
MaxKeepAliveRequests 100
# KeepAliveTimeout: Nmero de segundos que aguardar a prxima requisio
KeepAliveTimeout 15
# Regulagem do tamanho de pool do servidor. Ao invs de fazer voc adivinhar
# quantos processos servidores precisar, o Apache adapta dinamicamente
# de acordo com a carga que ele v --- isto , ele tenta manter o nmero de
# processos o bastante para manipular a carga atual, mas alguns poucos
# servidores esparsos para manipular requisies transientes (ex. requisies
# simultneas mltiplas de um navegador Netscape simples).
# Ele faz isto verificando periodicamente quantos servidores esto
# aguardando por uma requisio. Se l existe menos que MinSpareServers,
# ele cria um novo processo. Se existe mais que MaxSpareServers, ele
# fecha alguns processos. Os valores abaixo esto adequados para muitos
# sites
MinSpareServers 5
MaxSpareServers 10
# Nmero de servidores que sero iniciados --- deve conter um valor razovel.
StartServers 5
Captulo 12. Apache 228
# Limita o nmero total de servidores rodando, i.e., limita o nmero de clientes
# que podem conectar simultaneamente --- se este limite sempre atingido,
# os clientes podem sero BARRADOS, assim este valor NO DEVE SER MUITO PEQUENO.
# Ele tem a inteno principal de ser um freio para manter um em execuo com
# uma performance aceitvel de acordo com os requerimentos de construo e
# carga calculada no servidor.
MaxClients 150
#
# MaxRequestsPerChild: O nmero de requisies que cada processo tem permisso
# de processar antes do processo filho ser finalizado. O filho ser finalizado
# para evitar problemas aps uso prolongado quando o Apache (e talvez as
# bibliotecas que utiliza) tomar memria e outros recursos. Na maioria dos
# sistemas, isto realmente no necessrio, exceto para alguns (como o
# Solaris) que possuem ponteiros notveis em suas bibliotecas. Para estas
# plataformas, ajuste para algo em torno de 10000 ou algo assim; uma
# configurao de 0 significa ilimitado.
#
# NOTA: Este valor no inclui requisies keepalive aps a requisio
# inicial por conexo. Por exemplo, se um processo filho manipula
# uma requisio inicial e 10 requisies "keptalive" subseqentes,
# ele somente contar 1 requisio neste limite.
#
MaxRequestsPerChild 30
# Listen: Permite fazer o Apache escutar um IP determinado e/ou porta, em
# adio a padro. Veja tambm o comando VirtualHost
#Listen 3000
#Listen 12.34.56.78:80
# VirtualHost: Permite o daemon responder a requisies para mais que um
# endereo IP do servidor, se sua mquina estiver configurada para aceitar pacotes
# para mltiplos endereos de rede. Isto pode ser feito com a opo de aliasing
# do ifconfig ou atravs de patches do kernel como o de VIF.
# Qualquer diretiva httpd.conf ou srm.conf pode ir no comando VirtualHost.
# Veja tambm a entrada BindAddress.
#<VirtualHost host.some_domain.com>
#ServerAdmin webmaster@host.some_domain.com
#DocumentRoot /var/www/host.some_domain.com
#ServerName host.some_domain.com
#ErrorLog /var/log/apache/host.some_domain.com-error.log
Captulo 12. Apache 229
#TransferLog /var/log/apache/host.some_domain.com-access.log
#</VirtualHost>
# VirtualHost: Se voc quiser manter mltiplos domnios/nomes de mquinas em sua
# mquina voc pode ajustar o contedo de VirtualHost para eles.
# Por favor veja a documentao em <http://www.apache.org/docs/vhosts/>
# para mais detalhes antes de tentar configurar seus hosts virtuais.
# Voc pode usar a opo de linha de comando -S para verificar sua configurao
# de hosts virtuais.
#
# Se desejar usar hosts virtuais baseados em nome, ser necessrio definir no
# mnimo um endereo IP (e nmero de porta) para eles.
#
#NameVirtualHost 12.34.56.78:80
#NameVirtualHost 12.34.56.78
#
# Exemplo de um Host Virtual:
# Praticamente qualquer diretiva do Apache pode entrar na condicional
# VirtualHost.
#
#<VirtualHost ip.address.of.host.some_domain.com>
# ServerAdmin webmaster@host.some_domain.com
# DocumentRoot /www/docs/host.some_domain.com
# ServerName host.some_domain.com
# ErrorLog logs/host.some_domain.com-error.log
# CustomLog logs/host.some_domain.com-access.log common
#</VirtualHost>
#<VirtualHost _default_:*>
#</VirtualHost>
12.14.2 srm.conf
# Neste arquivo so definidos o espao de nomes que os usurios visualizaro no
# seu servidor http. Este arquivo tambm define configuraes do servidor que
# afetam como as requisies so servidas e como os resultados devero ser
# formatados.
# Veja os tutoriais em http://www.apache.org/ para mais detalhes
# DocumentRoot: O diretrio principal onde voc servira seus documentos.
# Por padro, todas as requisies so tomadas atravs deste diretrio,
Captulo 12. Apache 230
# exceto links simblicos e aliases que podem ser usados para apontar para
# outras localizaes no sistema de arquivos.
DocumentRoot /var/www
#
# UserDir: O nome do diretrio que ser adicionado ao diretrio home do usurio
# caso uma requisio ~usurio for recebida.
#
<IfModule mod_userdir.c>
# Linha abaixo por recomendao de segurana do manual do Apache
UserDir disabled root
UserDir public_html
</IfModule>
#
# DirectoryIndex: Nome do arquivo ou arquivos que sero usados como ndice do
# diretrio. Especifique mais de um arquivos separados por espaos ao invs
# de um s um nome (como "index") para aumentar a performance do servidor.
#
<IfModule mod_dir.c>
DirectoryIndex index.html index.htm index.shtml index.cgi
</IfModule>
#
# Diretivas que controlam a exibio de listagem de diretrios geradas pelo servidor.
#
<IfModule mod_autoindex.c>
#
# FancyIndexing: se voc deseja o padro fancy index ou padro para a indexao
# de arquivos no diretrio. Usando FancyIndexing o servidor
# apache gerar uma listagem de arquivos que poder ser
# ordenada, usar tipos de cones e encoding, etc. Veja as
# prximas opes
IndexOptions FancyIndexing
#
# As diretivas AddIcon* dizem ao servidor que cone mostrar para um determinado
# arquivo ou extenso de arquivos. Estes somente so mostrados para os
# diretrios classificados atravs da opo FancyIndexing.
#
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
AddIconByType (TXT,/icons/text.gif) text/*
Captulo 12. Apache 231
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*
AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif */core
AddIcon /icons/deb.gif .deb Debian
AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^
# DefaultIcon o cone que ser mostrado para aplicativos que no tiverem um
# cone explicitamente definido.
DefaultIcon /icons/unknown.gif
#
# AddDescription: isto lhe permite colocar uma curta descrio aps um arquivo
# nos ndices gerados pelo servidor. Estes somente so mostrados para diretrios
# com ndices organizados usando a opo FancyIndexing.
# Formato: AddDescription "descrio" extenso
#
#AddDescription "GZIP compressed document" .gz
#AddDescription "tar archive" .tar
#AddDescription "GZIP compressed tar archive" .tgz
# ReadmeName o nome do arquivo LEIAME que o servidor procurar como
# padro. Estes sero inseridos no fim da listagem de diretrios.
Formato: ReadmeName nome
Captulo 12. Apache 232
#
# O servidor procurar primeiro por nome.html, includo se ele for encontrado,
# e ento procurar pelo nome e incluir ele como texto plano se encontrado..
ReadmeName README
# HeaderName o nome do arquivo que deve ser colocado no topo do ndice
# de diretrios. As regras de procura de nome so as mesmas do arquivo
# README
HeaderName HEADER
#
# IndexIgnore: um conjunto de nomes de arquivos que a listagem de diretrios
# deve ignorar e no incluir na listagem. permitido o uso de coringas
# como no interpretador de comandos.
#
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
</IfModule>
# AccessFileName: O nome do arquivo que ser procurado em cada diretrio
# que contm detalhes sobre as permisses de acesso a um determinado
# diretrio e opes de listagem. Tenha cuidado ao modificar o nome
# deste arquivo, muitas definies que trabalham em cima do nome
# .htaccess nos arquivos de configurao devero ser modificados para
# no comprometer a segurana de seu servidor.
# Uma falta de ateno neste ponto poder deixar este arquivo visvel
# em qualquer listagem de diretrios facilmente...
AccessFileName .htaccess
# TypesConfig especifica o arquivo de configurao que contm os tipos
# usados pelo servidor
TypesConfig /etc/mime.types
#
# DefaultType o tipo MIME padro que o servidor utilizar para um documento
# caso ele no possa determinar seu contedo, como atravs de extenses
# de arquivos. Se o servidor contm em sua maioria texto ou documentos em HTML,
# "text/plain" um bom valor. Caso a maioria do contedo seja binrios, tal
# como aplicativos ou fotos, o tipo mais adequado ao seu caso poder ser
# "application/octet-stream" para evitar que navegadores tentem exibir
# aplicativos binrios como se fossem texto.
# Se desejar uma referncia rpida sobre tipos mime, consulte o arquivo
# /etc/mime.types
#
Captulo 12. Apache 233
DefaultType text/plain
#
# Document types.
#
<IfModule mod_mime.c>
# AddEncoding permite que alguns navegadores (Mosaic/X 2.1+, Netscape, etc)
# descompactem dados durante sua abertura. N
# Nota: Nem todos os navegadores suportam isto. Esquea os nomes parecidos,
# as seguintes diretivas Add* no tem nada a ver com personalizaes
# da opo FancyIndexing usada nas diretivas acima.
AddEncoding x-compress Z
AddEncoding x-gzip gz tgz
#
# AddLanguage: permite especificar o idioma do documento. Voc pode
# ento usar a negociao de contedo para dar ao navegador um
# arquivo no idioma solicitado.
#
# Nota 1: O sufixo no precisa ser o mesmo da palavra chave do
# idioma --- estes com o documento em Polons (no qual o
# cdigo padro da rede pl) pode desejar usar "AddLanguage pl .po"
# para evitar confuso de nomes com a extenso comum de scripts
# scripts em linguagem Perl.
#
# Nota 2: As entradas de exemplos abaixo mostram que em alguns casos
# as duas letras de abreviao do Idioma no idntico as duas letras
# do Pas para seu pas, como Danmark/dk versus Danish/da.
#
# Nota 3: No caso de ltz ns violamos a RFC usando uma especificao de
# trs caracteres. Mas existe um trabalho em progresso para corrigir isto
# e obter os dados de referncia para limpar a RFC1766.
#
# Danish (da) - Dutch (nl) - English (en) - Estonian (ee)
# French (fr) - German (de) - Greek-Modern (el)
# Italian (it) - Portugese (pt) - Luxembourgeois* (ltz)
# Spanish (es) - Swedish (sv) - Catalan (ca) - Czech(cz)
# Polish (pl) - Brazilian Portuguese (pt-br) - Japanese (ja)
#
AddLanguage da .dk
AddLanguage nl .nl
AddLanguage en .en
AddLanguage et .ee
AddLanguage fr .fr
Captulo 12. Apache 234
AddLanguage de .de
AddLanguage el .el
AddLanguage it .it
AddLanguage ja .ja
# AddCharset ISO-2022-JP .jis
AddLanguage pl .po
# AddCharset ISO-8859-2 .iso-pl
AddLanguage pt .pt
AddLanguage pt-br .pt-br
AddLanguage ltz .lu
AddLanguage ca .ca
AddLanguage es .es
AddLanguage sv .se
AddLanguage cz .cz
# LanguagePriority: permite definir a prioridade para a exibio de
# documentos caso nenhum documento confira durante a negociao de
# contedo.
#
# Para fazer isto, especifique os idiomas em ordem de preferncia de exibio
# de idiomas.
#
<IfModule mod_negotiation.c>
LanguagePriority pt-br pt es en da nl et fr de el it ja pl ltz ca sv
</IfModule>
#
# AddType permite modificar o mime.types sem editar o arquivo, ou fazer
# a associao de arquivos a certos tipos de contedo.
#
# Por exemplo, o mdulo PHP 3.x (que no faz parte da distribuio do
# Apache - veja http://www.php.net) tipicamente utiliza isto:
#
#AddType application/x-httpd-php3 .php3
#AddType application/x-httpd-php3-source .phps
#
# E para arquivos PHP 4.x use:
#
#AddType application/x-httpd-php .php
#AddType application/x-httpd-php-source .phps
AddType application/x-tar .tgz
AddType image/bmp .bmp
# hdml
AddType text/x-hdml .hdml
Captulo 12. Apache 235
#
# AddHandler permite mapear certas extenses de arquivos a programas
# "manipuladores" adequados a seu contedo. Estes podem ser construdos
# no servidor ou adicionados com o comando Action (veja abaixo).
#
# Se desejar usar includes no lado do servidor, ou servir diretrios
# com scripts CGI para fora, descomente as seguintes linhas.
#
# Para usar scripts CGI:
#
#AddHandler cgi-script .cgi .sh .pl
#
# Para usar arquivos html gerados atravs do servidor
#
#AddType text/html .shtml
#AddHandler server-parsed .shtml
#
# Descomente as seguintes linhas para ativar a caractersticas de arquivos
# send-asis HTTP do servidor Apache
#
#AddHandler send-as-is asis
#
# Se desejar usar arquivos de mapas de imagens processadas no servidor, use
#
#AddHandler imap-file map
#
# Para ativar tipo de mapas, voc poder usar
#
#AddHandler type-map var
</IfModule>
# Fim dos tipos de documentos
# Preferncias padres de exibio de caracteres (veja http://www.apache.org/info/css-security/).
AddDefaultCharset on
AddDefaultCharsetName iso-8859-1
# Redirect permite dizer aos clientes que documentos no existem mais no seu servidor
# e a nova localizao do documento.
# Format: Redirect nomeurl url
Captulo 12. Apache 236
# "nomeurl" o caminho especificado na url e "url" a nova localizao do
# documento
# Aliases: Inclua aqui quantos apelidos voc desejar (sem limite) o formato :
# Alias nomeurl nomereal
# "nomeurl" o caminho especificado na url e "nomereal" a localizao
# do documento no sistema de arquivos local
# Note que se voc incluir uma / no fim de "nomeurl", ento o servidor
# requisitar que tambm esteja presente na URL.
Alias /icons/ /usr/share/apache/icons/
Alias /doc/ /usr/doc/
Alias /focalinux /var/www/focalinux
Alias /debian-br /var/www/debian-br/htdocs
Alias /debian /pub/mirror/debian
# ScriptAlias: Esta diretiva controla que diretrios contm scripts do servidor.
# Format: ScriptAlias fakename realname
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
#
# Action: permite definir os tipos de mdia que executaro um script quando um
# arquivo que conferir for chamado. Isto elimina a necessidade de caminhos de URLs
# repetidas para processadores de arquivos CGI freqentemente usados.
# Format: Action media/type /cgi-script/location
# Format: Action handler-name /cgi-script/location
#
#
# MetaDir: especifica o nome do diretrio no qual o apache procurar arquivos de
# detalhes do mdulo mod_cern_meta. Os mdulos meta contm cabealhos HTTP
# adicionais que sero includos durante o envio do documento.
#
#MetaDir .web
#
# Resposta de erros personalizada (no estilo do Apache)
# estas podem ser 3 tipos:
#
# 1) texto plano
#ErrorDocument 500 "O servidor fez boo boo.
# n.b. a aspa (") marca como texto, ela no ser exibida
#
# 2) redirecionamentos locais
Captulo 12. Apache 237
#ErrorDocument 404 /missing.html
# para redirecionar para a URL local /missing.html
#ErrorDocument 404 /cgi-bin/missing_handler.pl
# N.B.: tambm possvel redirecionar a um script o documento usando includes
# do lado do servidor (server-side-includes).
#
# 3) redirecionamentos externos
#ErrorDocument 402 http://algum.outro_servidor.com/inscricao.html
# N.B.: Muitas das variveis de ambientes associada com a requisio atual *no*
# estaro disponveis para tal script.
#
# O mdulo mod_mime_magic permite o servidor usar vrias dicas atravs do contedo
# do arquivo para determinar o seu tipo. A diretiva MIMEMagicFile diz ao mdulo
# onde as definies de dicas esto localizadas. O mdulo mod_mime_magic no
# parte do servidor padro Apache (voc precisar adiciona-lo manualmente com
# uma linha LoadModule (veja o pargrafo DSO na seo Ambiente Global no
# arquivo httpd.conf), ou recompile o servidor e inclua mod_mime_magic como
# parte de sua configurao), por este motivo ele est entre as condicionais
# <IfModule>. Isto significa que a diretiva MIMEMagicFile somente ser processada
# caso o mdulo estiver ativo no servidor.
#
<IfModule mod_mime_magic.c>
MIMEMagicFile conf/magic
</IfModule>
<IfModule mod_setenvif.c>
#
# As seguintes diretivas modificam o funcionamento da resposta normal do
# servidor HTTP.
# A primeira diretiva desativa o keepalive para o Netscape 2.x e navegadores que
# as falsificam. Existem problemas conhecidos com estas implementaes de
# navegadores. A segunda diretiva para o MS IE 4.0b2 que tem uma implementao
# defeituosa do HTTP/1.1 e no suporta adequadamente o keepalive quando ele
# utiliza as respostas de redirecionamento 301 e 302.
#
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
#
# As seguintes diretivas desativam as respostas HTTP/1.1 para navegadores que
# violam a especificao HTTP/1.0 no sendo capaz de enviar uma resposta
# 1.1 bsica.
#
BrowserMatch "RealPlayer 4\.0" force-response-1.0
Captulo 12. Apache 238
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0
</IfModule>
# Se o mdulo Perl est instalado, isto ser ativado.
<IfModule mod_perl.c>
Alias /perl/ /var/www/perl/
<Location /perl>
Options +ExecCGI
SetHandler perl-script
PerlHandler Apache::Registry
</Location>
</IfModule>
12.14.3 access.conf
# access.conf: Configurao de acesso Global
# Documentos on-line em http://www.apache.org/
# Este arquivo define as configuraes do servidor que afetam que tipos de
# servios so permitidos e em quais circunstncias.
# Cada diretrio que o Apache possui acesso, pode ser configurado respectivamente
# com quais servios e caractersticas que podem ser permitidas e/ou bloqueadas
# no diretrio (e seus subdiretrios).
#
# Primeiro a configurao restringe uma srie de permisses
<Directory />
Options SymLinksIfOwnerMatch
AllowOverride None
# Order deny,allow
# Deny from all
</Directory>
# Desse ponto em diante, necessrio especificar o que ser permitido
# caso contrrio ser bloqueado pelo bloco acima
# Esta parte deve ser modificada para a localizao do documento raz do servidor.
<Directory /var/www>
# A opo Options pode conter os valores "None", "All", ou quaisquer combinao
# de "Indexes", "Includes", "FollowSymLinks", "ExecCGI", ou "MultiViews".
#
# Note que "MultiViews" deve ser *explicitamente* especificada --- "Options All"
Captulo 12. Apache 239
# no a ativa (pelo menos no ainda).
Options Indexes FollowSymLinks Includes MultiViews
# Esta opo controla que opes os arquivos .htaccess nos diretrios podem ser
# substitudas. Pode tambm conter "All", ou qualquer combinao de "Options",
# "FileInfo", "AuthConfig", e "Limit"
AllowOverride None
# Controla quem pode obter materiais deste servidor. Leia a seo adequada no
# guia para mais explicaes sobre a ordem de acesso, padres e valores permitidos.
order allow,deny
allow from all
</Directory>
#
# O diretrio "/usr/lib/cgi-bin" deve ser modificado para o diretrio que
# possuem seus scripts CGI, caso tenha configurado o suporte a CGIs no
# servidor.
#
<Directory /usr/lib/cgi-bin/>
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
#
# Permite ver relatrios de status e funcionamento do servidor web e
# processos filhos, atravs da URL http://servidor/server-status
# isto requer o mdulo status_module (mod_status.c) carregado no arquivo
# httpd.conf
#
#<Location /server-status>
# SetHandler server-status
# Order deny,allow
# Deny from all
# Allow from .meudominio.org
#</Location>
#
# Permite relatrio de configurao remota do servidor, atravs da URL
# http://servername/server-info
Captulo 12. Apache 240
# Isto requer o mdulo info_module (mod_info.c) carregado no arquivo
# httpd.conf
#
#<Location /server-info>
# SetHandler server-info
# Order deny,allow
# Deny from all
# Allow from .meudominio.org
#</Location>
# Visualizao do diretrio de cones
<Directory /usr/share/apache/icons>
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
# O Debian Policy assume que /usr/doc "/doc/" e linkado com /usr/share/doc,
# pelo menos para localhost.
<Directory /usr/doc>
Options Indexes FollowSymLinks
order deny,allow
deny from all
allow from 192.168.1.10/24
</Directory>
# Esta define a localizao visualizvel do monitor de status mod_throttle
#
<location /throttle-info>
SetHandler throttle-info
</location>
#
# As seguintes linhas previnem os arquivos .htaccess de serem mostrados nos
# clientes Web. Pois os arquivos .htaccess freqentemente contm detalhes
# de autorizao, o acesso desabilitado por razes de segurana. Comente
# estas linhas se desejar que seus visitantes vejam o contedo dos arquivos
# .htaccess. Se modificar a diretiva AccessFileName acima, tenha certeza de
# fazer as modificaes correspondentes aqui.
#
# As pessoas tambm tendem a usar nomes como .htpasswd nos arquivos de senhas
# a diretiva abaixo os proteger tambm.
#
Captulo 12. Apache 241
<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>
#
# Controla o acesso a diretrios UserDir. As seguintes diretivas so um exemplo
# para um site onde estes diretrios esto restritos a somente-leitura. Veja
# detalhes sobre as opes de acesso, e limites na seo sobre controle
# de acesso do guia
#
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
<Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Order deny,allow
Deny from all
</Limit>
</Directory>
#
# As vezes ocorrem relatos de pessoas tentando abusar de uma falha antiga nos
# dias do Apache 1.1 (muitas pginas na Net documentam isso). Esta falha envolve
# um script CGI distribudo como parte do Apache. Descomentando estas linhas voc
# poder redirecionar estes ataques a um script de registro em phf.apache.org. Ou
# poder gravar em sua prpria mquina, usando o script support/phf_abuse_log.cgi.
#
#<Location /cgi-bin/phf*>
# Deny from all
# ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi
#</Location>
# Acesso aos servios proxy do apache
#<Directory proxy:*>
# Order deny,allow
# Deny from all
# Allow from .your_domain.com
#</Directory>
# a seguinte diretiva permite o acesso a todos os usurios ao contedo da pgina
# do guia Foca GNU/Linux exceto os que possuem navegadores MSIE ;-)
Captulo 12. Apache 242
# Veja a seo sobre restries de acesso para detalhes sobre a diretiva de
# controle de acesso baseado no user-agent
SetEnvIf User-Agent MSIE EXPLODER
<Directory /var/www/focalinux>
Options Indexes
Order allow,deny
allow from all
deny from env=EXPLODER
ErrorDocument 403 "Explorer no entra, pgina com o contedo potencialmente perigoso ao Windows, use um navegador seguro para ter acesso a esta pgina ;-)
</Directory>
# A diretiva abaixo somente permite acesso a leitura do arquivo
# h-supor-fonte.txt a pessoas que fornecerem o nome/senha corretos
# que constam no arquivo passwd1
# Este bloco contm um erro que a localizao do arquivo da senha em um
# diretrio pblico, voc dever adapta-lo se no quiser se ver em apuros.
#
# A permisso do diretrio de nvel superior prevalece sobre seus
# sub-diretrios no caso as permisses de /focalinux, a menos que
# sejam definidas opes de acesso especficas ao arquivo abaixo
<Location /focalinux/humor/h-supor-fonte.txt>
AuthName "Piada de fonte de alimentao"
AuthType basic
AuthUserFile /home/gleydson/public_html/passwd1
Require valid-user
# Satisfy all
</Location>
# Libera o acesso a localizao /debian (acessada atravs de /pub/mirror/debian,
# definida no Alias acima)
<Location /debian>
Options Indexes
Order deny,allow
allow from all
deny from all
</Location>
12.15 Cdigos HTTP
Esta seo pode ser uma interessante referncia para a programao e congurao da diretiva
ErrorDocument, etc.
2xx - Sucesso 200 OK
201 Criado
202 Aceito
Captulo 12. Apache 243
203 Informao no-autoritativa *
204 Nenhum contedo
205 Contedo resetado *
206 Contedo parcial *
3xx - Redirecionamento 300 Mltiplas escolhas
301 Movido Permanentemente
302 Movido Temporariamente
303 Veja outra *
304 No modicada
305 Use o Proxy (redirecionamento proxy) *
4xx - Erros no Cliente 400 Requisio incorreta
401 No autorizado
402 Pagamento Requerido *
403 Bloqueado
404 No encontrada
405 Mtodo no permitido *
406 No aceitvel *
407 Autenticao via proxy requerida *
408 Tempo limite da requisio expirado *
409 Conito *
410 Gone *
411 Tamanho requerido *
412 Falha na pr-condio *
413 A requisio parece ser grande *
414 A URL requisitada muito longa *
415 Tipo de mdia no suportado
5xx - Erros no Servidor 500 Erro Interno no Servidor
501 No implementado
502 Gateway incorreto
503 Servio no disponvel
504 Tempo limite no gateway *
505 Verso HTTP no suportada *
Os cdigos de erros marcados com um * pertencem ao padro HTTP 1.1
Captulo 12. Apache 244
245
Captulo 13
Servidor ident
Este captulo documenta o uso, benefcios, congurao, utilizao e exemplos do servidor
identd. Tambm so explicados alguns pontos positivos/negativos de sua utilizao para au-
mentar a segurana quando usado junto com o mecanismo de controle de acesso.
O servidor identd escolhido para ser descrito nesta seo do guia foi o oidentd.
13.1 Introduo
Oident (identidade) umservidor que permite identicar qual o usurio efetuou determinada
conexo e o sistema operacional usado. Ele opera na porta 113 por padro e retorna nomes
de usurios localmente vlidos, e consultado por servios conhecidos como IRC, alguns ser-
vidores ftp, smtp e outros. Outro benefcio a utilizao de mecanismos de restries de
acesso baseadas em usurios/endereoIP (o tcpd um exemplo de servio que permite esta
caracterstica). A sintaxe usada para fazer tal restrio universal: usurio@endereoIP onde
normalmente aparece o endereoIP que usado para bloquear/permitir o acesso.
No momento da conexo, o endereo IP checado pra ver se confere, e o servidor Ident da
mquina que est efetuando a conexo consultado para checar se o usurio que tem acesso
o mesmo especicado no controle de acesso. Isso aumenta um pouco a segurana do sistema,
mas existemalgumas implicaes e pontos frgeis do identd que sero explicados no decorrer
deste captulo.
13.1.1 Verso
assumido que esteja usando a verso 1.7 do oidentd. As explicaes contidas aqui podem
funcionar para verses posteriores, mas recomendvel que leia a documentao sobre modi-
caes no programa (changelog) em busca de mudanas que alterem o sentido das explicaes
fornecidas aqui.
Captulo 13. Servidor ident 246
13.1.2 Contribuindo
A Home page do projeto oidentd http: //ojnk.sourceforge.net Sugestes, crticas,
comentrios, etc., podem ser enviados para <odin@numb.org>.
13.1.3 Caractersticas
Caractersticas do oidentd:
Pode ser executado tanto como daemon quanto via inetd (este ltimo indicado para sis-
temas com pouca memria onde o servio pouco solicitado).
Pode mapear identicaes de usurio via IP Masquerading, tornando este servidor
muito verstil podendo ser usado tanto em mquina individuais como em servidores
proxy/roteadores.
Pode fazer forwarding de conexes para outras mquinas da rede local, quando no
executado no proxy/roteador.
Spoong de nomes: possvel mapear um nome de usurio para outra identicao;
por exemplo, o usurio root poder ser mapeado para outra conta de usurio antes da
identicao ser enviada.
13.1.4 Ficha tcnica
Pacote: oidentd
Utilitrios:
oidentd - Servidor identd
Arquivos de congurao do oidentd:
identd.spoof Controla o spoof (falsicao) de nomes de usurios. O formato deste arquivo
so dois campos separados por :, o primeiro contendo a identicao original do usu-
rio e o segundo o nome que ser enviado pelo identd. O segundo campo pode ser omi-
tido, neste caso a resposta de identicao lida atravs do arquivo ~/.ispoof. Este
arquivo deve ter como dono o usurio do primeiro campo do identd.spoof e a iden-
ticao retornada ser a contida no arquivo. Esteja certo que o daemon oidentd tem
permisses para acessar este arquivo, caso contrrio nenhumspoof de identidade ser re-
alizado. Para o spoof ser habilitado, o servio oidentd dever ser iniciado com a opo
-s ou -S (veja mais detalhes Opes de linha de comando on page 248). OBS: Certique-
se de colocar as permisses adequadas para que somente o daemon oidentd tenha acesso
a este arquivo (de acordo com o usurio e grupo usado para executar o oidentd), os
detalhes de mapeamento de nomes podem ser perigosos em mos erradas, e garantir o
sucesso de uma conexo indesejvel.
oidentd.users Mapeamento de nomes de usurios efetuando conexes via Masquerading. O
formato deste arquivo o seguinte:
#EndereoIP/mscara Usurio Sistema
192.168.1.1 john WINDOWS
192.168.1.2 usuario1 WINDOWS
192.168.1.1/32 usuario2 UNIX
Captulo 13. Servidor ident 247
192.168.1.0/24 usuario3 UNIX
192.168.1.0/16 usuario4 UNIX
As conexes vindas dos endereos da primeira coluna so mapeados para o
nome/sistema da segunda/terceira coluna e enviados a mquina que requisitou a iden-
ticao. Para o suporta a mapeamento de usurios via Masquerading funcionar, o dae-
mon oidentd dever ser iniciado com a opo -m.
13.1.5 Requerimentos de Hardware
O oidentd requer pouca memria e pode ser executado sem problemas em um sistema com
o mnimo de memria necessria para rodar o kernel do Linux (2 MB para 2.2 e 4MB para
as sries 2.4 do kernel). Mesmo assim interessante considerar 1 MB a mais que o mnimo
requerido pelo kernel para uma folga na execuo do servio de identicao junto a outros
do sistema.
13.1.6 Arquivos de log criados pelo Ident
Mensagens informativas, erros, e outras sobre execues do servio oidentd so enviadas ao
syslog do sistema.
13.1.7 Instalao
Para instalar o daemon do oidentd digite:
apt-get install oidentd
Por padro o servio instalado para ser executado como daemon, para executa-lo atravs
do inetd siga os passos em Instalao via Inetd on this page. O servio ser executado sob
o usurio nobody e grupo nogroup por motivos de segurana, alteraes de nome/grupo
que executar o oidentd podem ser feitas no arquivo /etc/defaults/oidentd ou /etc
/init.d/oidentd.
13.1.8 Instalao via Inetd
Siga os procedimentos de instalao em Instalao on the current page e os seguintes passos:
1 Edite o arquivo /etc/inetd.conf e adicione a seguinte linha:
#:INFO: Info services
auth stream tcp nowait.40 nobody.nogroup
/usr/sbin/oidentd oidentd -q -i -t 40
A opo -i permite o oidentd aceitar requisies via inetd (sem ela ele ser executado
no modo daemon). As opes -s e -m devem tambm ser especicadas caso desejar os
recursos de falsicao de identicao (mapeamento de nomes) e masquerading (veja
Captulo 13. Servidor ident 248
Opes de linha de comando on this page). Aqui foi denido um parmetro mximo
de 40 requisies por minuto (tpico de um servio poucos usado no sistema), caso este
limite seja ultrapassado o servio ser desativado na seo atual do inetd). Os outros
campos so descritos em /etc/inetd.conf on page 59.
2 Interrompa a execuo do daemon do oidentd atual dando um
./etc/init.d/oidentd stop.
3 Remova os links dos runlevels em /etc/rc?.d que iniciam/interrompem a execuo
do daemon com o comando: update-rc.d -f oidentd remove. Neste ponto o da-
emon oidentd no ser mais iniciado. Para reverter esta ao, execute o comando:
udpate-rc.d oidentd defaults.
4 De um comando killall -HUP inetd para fazer o servio inetd recarregar o ar-
quivo de congurao /etc/inetd.conf. O servio de identd j estar funcionando.
OBS: A congurao da distribuio Debian permite detectar quando o servio ident (auth)
est sendo executado no /etc/inetd.conf atravs de seus scripts de inicializao. Voc
poder fazer as coisas manualmente baseado nisso se desejar.
13.1.9 Usando tcpwrappers com oidentd
Especique a opo -W para fazer o oidentd utilizar o mecanismo de acesso em
hosts.allow e hosts.deny para garantir/bloquear ao servio de acordo com endere-
os/hosts especicados.
OBS Ooidentd somente executado aps a conferncia de todos os parmetros de endereos
nestes arquivos de acesso, no utilize a sintaxe usurio@endereo como endereo na linha
de acesso do servio oidentd (por motivos bvios).
13.1.10 Iniciando o servidor/reiniciando/recarregando a congurao
O arquivo que controla o funcionamento do daemon do oidentd controlado pelo arquivo
/etc/init.d/oidentd.
A execuo do oidentd atravs de inetd automtica quando feita uma requisio para a
porta 113.
13.1.11 Opes de linha de comando
Opes de linha de comando do oidentd:
-a [endereoIP] - Espera por requisies somente no nome ou endereo IP da inter-
face especicada.
-A Quando o spoong esta ativado, permite os usurios falsicaramo ident emconexes
para portas privilegiadas.
-c [pginacodigo] - Especica uma pgina de cdigo alternativa. O padro US-
ASCII.
-d - Ativa o modo de depurao, mais detalhes sero exibidos.
Captulo 13. Servidor ident 249
-e - Retorna UNKNOWN-ERROR (erro desconhecido) para qualquer tipo de erro.
-f [porta] - Redireciona requisies de mquinas usando MASQUERADE para o
computador na porta especicada.
-F - O mesmo que -f, mas usa a porta 113 como padro.
-g [gid] - Executa o daemon do oidentd no grupo especicado.
-i - Permite ser executado atravs do inetd.
-m - Ativa o suporta a IP Masquerading.
-n - Retorna nmeros UID ao invs de nomes de usurios.
-N - Permite ocultar a identicao de determinados usurios atravs de arquivos ~
/.noident.
-o - Retorna OTHER (outro qualquer) ao invs do sistema operacional especicado.
-p [porta] - Espera por conexes na porta especicadas (a padro a 113 - servio
auth).
-q - Oculta o logging normal.
-P [proxy] - O proxy especicado (endereo IP) faz redirecionamento de conexes
para a mquina executando o oidentd.
-r - Retorna respostas aleatrias de identd. As opes -n e -r no podem ser usadas
juntas.
-s - Permite utilizar os mecanismos de spoong (falsicao) do oidentd.
-S - Omesmo que -s mas permitemtodos os usurios EXCETOos especicados em/etc
/identd.spoof falsicarem suas respostas.
-t [segundos] - Espera o tempo especicado antes de ser encerrado.
-T [segundos] - O oidentd permanecer aceitando conexes quando executado
com a opo -w pelo nmero de segundos especicado.
-u [uid] - Executa o servidor oidentd com a uid especicada.
-v/-V - Mostra detalhes sobre a verso do servidor.
-w - Modo de espera de conexes.
-x [texto] - Se uma requisio falha, o texto especicado retornado.
-W - Utiliza os mecanismos de acesso hosts.allow e hosts.deny do tcpd.
-h - Mostra as opes de linha de comando do oidentd.
13.1.12 Exemplos
No faz muito sentido exemplos de arquivo de congurao do oidentd por estes serem
muito simples e estarem bem explicados em Ficha tcnica on page 246. No entanto acho inte-
ressante mostrar alguns exemplos de conguraes do hosts.allow e hosts.deny fazendo
uso dos recursos de restries baseadas em usurio@endereo :
# Arquivo hosts.allow
#
# Permite requisies talk de qualquer lugar
in.ntalkd: ALL
in.talkd: ALL
#
# Permite que o usurio john acesse os servios de ftp de qualquer mquina da
Captulo 13. Servidor ident 250
# rede 191.168.1.*
in.ftpd: john@192.168.1.
#
# O servio telnet est permitido somente para john conectando de 192.168.1.1
in.telnetd: john@192.168.1.1
# Todos podem acessar os servios samba (nomes e compartilhamentos) exceto
# o usurio evil conectando de qualquer host com o endereo cracker.com.*
smbd, nmbd: ALL EXCEPT evil@cracker.com.
# Arquivo hosts.deny
# Qualquer finger bloqueado exceto vindos do usurio admin feitos em qualquer
# mquina da rede 192.168.1.*
in.fingerd: ALL EXCEPT admin@192.168.1.
# Qualquer outra coisa bloqueada
ALL: ALL
251
Captulo 14
Servidor telnet
Este captulo ensina como instalar, congurar, usar e fazer restries de acesso ao servidor
telnet. Tambm explicada a utilizao do cliente telnet e o suporte a criptograa (ssl).
14.1 Introduo
O servio telnet oferece o login remoto em seu computador, que lhe permite trabalhar co-
nectado a distncia como se estivesse em frente a ela. Ele substitui o rlogin e possui muitas
melhorias em relao a ele, como o controle de acesso, personalizao de seo e controle de
terminal.
14.1.1 Verso
assumido que esteja usando a verso 0.17.16 do telnet. As explicaes contidas aqui po-
dem funcionar para verses posteriores, mas recomendvel que leia a documentao sobre
modicaes no programa (changelog) em busca de mudanas que alterem o sentido das ex-
plicaes fornecidas aqui.
14.1.2 Caractersticas
Conexo rpida (no utiliza transmisso de dados criptografada), recomendado para am-
bientes seguros.
Possui uma verso com suporte a criptograa via ssl.
Possui controle de acesso tcpd (usando /etc/hosts.allow e /etc/hosts.deny).
A maioria dos sistemas operacionais trazem este utilitrio por padro como sistema de
acesso remoto a mquinas UNIX.
Suporte a terminais ANSI (cores e cdigos de escape especiais para o console) e uma
grande variedade de outros terminais.
Captulo 14. Servidor telnet 252
14.1.3 Ficha tcnica
Pacotes:
telnet - Cliente telnet com suporte a autenticao.
telnetd - Servidor telnet com suporte a autenticao.
telnet-ssl - Cliente telnet com suporte a autenticao e ssl. Tambm suporta conexo
a servidores telnet padro quando o servidor no suporta ssl. Por padro tentada a
conexo usando ssl, se esta falhar ser assumida a transmisso em texto plano.
telnetd-ssl - Servidor telnet com suporte a autenticao e ssl. Tambm suporta cone-
xo de clientes telnet padro (sem suporte a ssl).
Utilitrios:
in.telnetd - Servidor telnet
telnet - Cliente telnet padro (quando o pacote telnet-ssl est instalado, simples-
mente um link para telnet-ssl).
telnet-ssl - Cliente telnet com suporte a ssl.
14.1.4 Requerimentos de Hardware
Normalmente o servidor telnet carregado via inetd, o que permite sua utilizao em uma
mquina com a quantidade mnima de memria RAM requerida para o funcionamento do
kernel: 2 MB para kernels da srie 2.2 e 4MB para kernels da srie 2.4.
14.1.5 Arquivos de log criados pelo servidor telnet
Mensagens do servidor telnet relacionadas com sees so enviadas para /var/log
/daemon.log. Adicionalmente, as mensagens sobre autenticao (servios de login) so re-
gistradas pelos mdulos PAM em /var/log/auth.log.
14.1.6 Instalao
apt-get install telnet telnetd ou apt-get install telnet-ssl
telnetd-ssl.
Os pacotes com o -ssl no nal possuem suporte a criptograa ssl. Por padro a porta usada
para executar o servio telnet a 23 (ou outro nmero de porta denido no /etc/services).
A instalao do servidor telnet feita via inetd (no arquivo /etc/inetd.conf) e o controle
de acesso ao servio feito atravs dos arquivos /etc/hosts.allow e /etc/hosts.deny
(veja Servios iniciados atravs do inetd on page 58 e O mecanismo de controle de acessos
tcpd on page 62).
O servidor tem o nome in.telnetd e este dever ser usado para ajustar o controle de acesso
nos arquivos acima.
Captulo 14. Servidor telnet 253
14.1.7 Iniciando o servidor/reiniciando/recarregando a congurao
O arquivo que controla o funcionamento do servidor telnet o /etc/inetd.conf e o
controle de acesso sendo feito pelos arquivos /etc/hosts.allow e /etc/hosts.deny.
Ser necessrio reiniciar o servidor inetd caso algum destes trs arquivos seja modicado:
killall -HUP inetd. A porta de operao padro a 23 e pode ser modicada no arquivo
/etc/services.
14.1.8 Opes de linha de comando
Opes de linha de comando do servidor telnetd:
-D nvel_de_depurao - Permite especicar o que ser registrado pelo servidor du-
rante a conexo dos clientes telnet. As seguintes opes so suportadas:
options - Mostra detalhes sobre a negociao das opes de conexo.
report - Mostra detalhe de opes e o que est sendo feito.
netdata - Mostra os dados transferidos na conexo telnetd.
ptydata - Mostra os dados mostrados na pty.
-edebug - Ativa a depurao do cdigo de criptograa apenas para o servidor telnet
com suporte a ssl.
-h - Somente mostra os detalhes de congurao do seu PC aps o usurio fornecer um
nome/senha vlidos.
-L [programa] - Utiliza o programa especicado para fazer o login do usurio (/usr
/sbin/telnetlogin o padro).
-n - No envia pacotes keep alive para vericar o estado da conexo. Desativando esta
opo poder fazer o servidor car rodando constantemente caso acontea algum pro-
blema e o usurio no consiga se desconectar normalmente.
-S TOS - Ajusta o tipo de servio usado na conexo para o valor especicado (veja Es-
pecicando o tipo de servio on page 143 para maiores detalhes sobre esta opo e os
valores aceitos).
Estas opes devero ser especicadas aps o servidor in.telnetd no arquivo /etc
/inetd.conf.
14.2 Controle de acesso
feito pelos arquivos hosts.allow e hosts.deny. Veja O mecanismo de controle de aces-
sos tcpd on page 62.
14.3 Recomendaes
O servio telnet utiliza texto plano para seo (exceto nas verses cliente/servidor -ssl). Os
dados transmitidos por servios que utilizam texto plano podem ser capturados por sniffers e
trazer perigo ao seu sistema (veja Sniffer on page 407).
Captulo 14. Servidor telnet 254
recomendvel somente executar o servidor telnet padro em ambientes seguros (como em
uma rede interna) e a verso com suporte a ssl para fazer conexes via redes inseguras (como
a Internet). O servio ssh (Servidor ssh on the facing page) uma excelente alternativa ao
telnet, alm de possuir outras caractersticas adicionais que justiquem seu uso, alm de pro-
gramas cliente para Linux e Windows.
14.4 Fazendo conexes ao servidor telnet
Use o comando: telnet [endereo] [porta] para realizar conexes com uma mquina
rodando o servidor telnet.
Adicionalmente as seguintes opes podem ser usadas:
-l [usuario] - Envia o nome de usurio ao computador remoto. Muito til com o
telnet-ssl.
-E - Desativa o caracter de escape
-a - Tenta fazer o login automtico usando o nome de usurio local. Se o login falhar, ser
solicitado o nome de usurio. Esta opo usada por padro como cliente telnet-ssl.
-r - Emula o comportamento do programa rlogin.
Exemplos:
# Conecta-se ao servidor telnet rodando na porta 23 de sua prpria mquina
telnet localhost
# Conecta-se ao servidor telnet 200.200.200.200 operando na porta 53454 usando o
# nome de usurio john
telnet -l john 200.200.200.200 53454
255
Captulo 15
Servidor ssh
Este captulo documenta a instalao, congurao e personalizao do servidor de shell se-
guro sshd, alm de explicar as vantagens da utilizao dos servios criptogrcos. A utiliza-
o do programa cliente ssh tambm explicada, alm de utilitrios usados para gerao de
chaves pblica/privada para o ssh (autenticao RSA/DAS - o que , vantagens), cpia de
arquivos e mtodos de autenticao usando o mtodo de chave pblica/privada RSA.
Ambas as verses 1 e 2 do ssh so documentadas neste captulo. Opes especcas do proto-
colo 1 ou 2 do ssh sero destacadas.
15.1 Introduo
O servio de ssh permite fazer o acesso remoto ao console de sua mquina, em outras pala-
vras, voc poder acessar sua mquina como se estivesse conectado localmente ao seu console
(substituindo o rlogin e rsh). A principal diferena com relao ao servio telnet padro,
rlogin e rsh que toda a comunicao entre cliente/servidor feita de forma encriptada
usando chaves pblicas/privadas RSA para criptograa garantindo uma transferncia segura
de dados.
A velocidade do console remoto conectado via Internet excelente (melhor que a obtida pelo
telnet e servios r*) dando a impresso de uma conexo em tempo real (mesmo em links
discados de 9.600 KB/s), a compactao dos dados tambm pode ser ativada para elevar ainda
mais a velocidade entre cliente-servidor ssh. Alm do servio de acesso remoto, o scp possi-
bilita a transferncia/recepo segura de arquivos (substituindo o rcp).
Em conexes sem criptograa (rsh, rlogin) os dados trafegam de forma desprotegida e caso
exista algum sniffer instalado em sua rota com a mquina destino, todo o que zer poder ser
capturado (incluindo senhas).
Captulo 15. Servidor ssh 256
15.1.1 Verso
assumido que esteja usando a verso 2.0 do ssh. As explicaes contidas aqui podemfuncio-
nar para verses posteriores, mas recomendvel que leia a documentao sobre modicaes
no programa (changelog) em busca de mudanas que alterem o sentido das explicaes forne-
cidas aqui.
15.1.2 Histria
O openSSH (explicado neste captulo) baseado na ltima verso livre do implementao de
Tatu Ylonen com todos os algoritmos patenteados (para bibliotecas externas) removidos, todos
as falhas de segurana corrigidas, novas caractersticas e muitas outras melhorias. O openSSH
foi criado por Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo de Raadt e Dug
Song.
15.1.3 Contribuindo
A Home page principal http://www.unixuser.org/~haruyama/security/
openssh/index.html. Falhas, correes e sugestes podem ser enviadas para a lista
de discusso <openssh-unix-dev@mindrot.org> (aberta a postagens de usurios no
inscritos).
15.1.4 Caractersticas
Abaixo as principais caractersticas do servio ssh (Openssh).
Conexo de dados criptografada entre cliente/servidor.
Cpia de arquivos usando conexo criptografada.
Suporte a ftp criptografado (sftp).
Suporte a compactao de dados entre cliente/servidor.
Controle de acesso das interfaces servidas pelo servidor ssh.
Suporte a controle de acesso tcp wrappers.
Autenticao usando um par de chaves pblica/privada RSA ou DSA.
Algoritmo de criptograa livre de patentes.
Suporte a PAM.
Suporte a caracteres ANSI (cores e cdigos de escape especiais no console).
15.1.5 Ficha tcnica
Pacote: ssh
Utilitrios:
ssh - Cliente ssh (console remoto).
slogin - Link simblico para o programa ssh.
Captulo 15. Servidor ssh 257
sshd - Servidor de shell seguro ssh.
scp - Programa para transferncia de arquivos entre cliente/servidor
ssh-keygen - Gera chaves de autenticao para o ssh
sftp - Cliente ftp com suporte a comunicao segura.
sftp-server - Servidor ftp com suporte a comunicao segura.
ssh-add - Adiciona chaves de autenticao DSA ou RSA ao programa de autenticao.
ssh-agent - Agente de autenticao, sua funo armazenar a chave privada para
autenticao via chave pblica (DSA ou RSA).
ssh-keyscan - Scaneia por chaves pblicas de autenticao de hosts especicados. O
principal objetivo ajudar na construo do arquivo local know_hosts.
ssh-copy-id - Usado para instalao do arquivo identity.pub em uma mquina
remota.
Arquivos de congurao:
/etc/ssh/sshd_config - Arquivo de congurao do servidor ssh.
/etc/ssh/ssh_config - Arquivo de congurao do cliente ssh.
~/.ssh/config - Arquivo de congurao pessoal do cliente ssh.
15.1.6 Requerimentos de Hardware
recomendado no mnimo 6MB de memria RAM para a execuo do servio ssh mais o ker-
nel do Linux. Este limite deve ser redimensionado para servidores de acesso dedicado, uma
quantidade de 64MB deve ser confortvel para centenas de usurios conectados simultanea-
mente (o que raramente acontece).
Veja tambm Restries de acesso, recursos e servios on page 379 para congurao de res-
tries usando PAM. O ssh que acompanha a distribuio Debian vem com o suporte a tcp
wrappers compilado por padro.
15.1.7 Arquivos de log criados pelo servidor ssh
Detalhes sobre a execuo do servidor sshd (como inicio, autenticao e trmino) so enviadas
ao syslog do sistema. Aprioridade e nvel so denidos no arquivo de congurao /etc/ssh
/sshd_config (veja Exemplo de sshd_config comexplicaes das diretivas on page 268).
15.1.8 Instalao do servidor openSSH
apt-get install ssh.
Por padro o servidor sshd instalado como daemon, tambm possvel executa-lo via
inetd mas isto no aconselhvel porque o servidor gera uma chave aleatria de seo toda
vez que iniciado, isto podendo levar vrios segundos (quando usada a verso 1 do proto-
colo ssh, veja Diferenas nas verses do protocolo on page 267).
Captulo 15. Servidor ssh 258
15.1.9 Iniciando o servidor/reiniciando/recarregando a congurao
O arquivo que controla o funcionamento do daemon do ssh controlado pelo arquivo /etc
/init.d/ssh.
A execuo do ssh atravs de inetd automtica quando feita uma requisio para a porta
22.
15.1.10 Opes de linha de comando
Opes de linha de comando do servidor sshd:
-b bits - Especica o nmero de bits da chave do servidor (768 por padro).
-d - Modo de depurao - O servidor envia detalhes sobre seu funcionamento aos logs
do sistema e no executado em segundo plano. Ele tambm responder conexes pelo
mesmo processo. Podem ser usadas no mximo 3 opes -d para aumentar os detalhes
de depurao.
-f arquivo_configurao Indica um arquivo de congurao alternativo (por pa-
dro usado /etc/ssh/sshd_config). Ossh pode ser congurado atravs de opes
de linha de comando mas requer um arquivo de congurao para ser executado. Op-
es de linha de comando substituem as especicadas no arquivo de congurao.
-g segundos - Especica o tempo mximo para a digitao de senha de acesso. Aps
o tempo especicado o servidor encerra a conexo. O valor padro 600 segundos e 0
desativa este recurso.
-h arquivo_chave - Diz qual arquivo contm a chave privada local. O padro /etc
/ssh/ssh_host_key e somente o usurio root deve ter permisses de leitura neste
arquivo. Ser necessrio especicar esta opo caso o sshd no esteja sendo executado
como usurio root. possvel ter mltiplos arquivos de chaves para os protocolos 1 e 2
do ssh.
-i - Indica que o servidor sshd ser executado pelo inetd. Isto no aconselhvel
porque o servidor gerar a chave aleatria de seo toda vez que for iniciado e isto pode
levar alguns segundos. Esta opo pode se tornar vivel com o uso do protocolo 2 ou cri-
ando chaves pequenas como 512 bytes (no ssh 1), mas a segurana criptogrca tambm
ser diminuda. Veja as diferenas entre os dois protocolos em Diferenas nas verses
do protocolo on page 267.
-k segundos - Especica a freqncia da gerao de novas chaves do daemon sshd.
O valor padro 3600 segundos e 0 desativa este recurso. ATENO: NO desative
este recurso!!! Esta opo traz a segurana que uma nova chave gerada de servidor ser
gerada constantemente (esta chave enviada junto com a chave pblica quando o cliente
conecta e ca residente na memria voltil), assimmesmo que umcracker consiga obt-la
interceptando as conexes, ser praticamente impossvel tentar qualquer coisa. Valores
menores tendem a aumentar ainda mais a segurana.
-p porta - Especica a porta que o daemon sshd atender as requisies. Por padro
usada a porta 22.
-q - Nenhuma mensagem ser enviada ao syslog do sistema.
-u tam - Especica o tamanho do campo de nome do computador que ser armazenado
no arquivo utmp. A opo u0 faz somente endereos IP serem gravados.
Captulo 15. Servidor ssh 259
-D - Quando usada no faz o sshd iniciar em segundo plano.
-V verso_cliente - Assume que o cliente possui a verso ssh especicada (1 ou 2) e
no faz os testes de identicao de protocolo.
-4 - Fora o uso do protocolo IP tradicional (IPv4).
-6 - Fora o uso da nova gerao do protocolo IP (IPv6).
A maioria das opes so realmente teis para modicar o comportamento do servidor ssh
sem mexer em seu arquivo de congurao (para ns de testes) ou para executar um servidor
ssh pessoal, que dever ter arquivos de congurao especcos.
15.2 Usando aplicativos clientes
Esta seo explicar o uso dos utilitrios ssh, scp e sftp.
15.2.1 ssh
Esta a ferramenta usada para sees de console remotos. O arquivo de congurao de
usurios ~/.ssh/config e o arquivo global /etc/ssh/ssh_config. Para conectar a um
servidor ssh remoto:
ssh usuario@ip/nome_do_servidor_ssh
Caso o nome do usurio seja omitido, seu login atual do sistema ser usado. O uso da opo
-C recomendado para ativar o modo de compactao dos dados (til em conexes lentas). A
opo -l usurio pode ser usada para alterar a identicao de usurio (quando no usada, o
login local usado como nome de usurio remoto). Uma porta alternativa pode ser especi-
cada usando a opo -p porta (a 22 usada por padro).
Na primeira conexo, a chave pblica do servidor remoto ser gravada em ~/.ssh
/know_hosts ou ~/.ssh/know_hosts2 (dependendo da verso do servidor ssh remoto,
veja Diferenas nas verses do protocolo on page 267), e vericada a cada conexo como
checagem de segurana para se certicar que o servidor no foi alvo de qualquer ataque ou
modicao no autorizada das chaves. Por padro, o cliente utilizar o protocolo ssh verso
1, a opo -2 permite usar o protocolo verso 2.
Variveis de ambiente personalizadas para o ssh podero ser denidas no arquivo ~/.ssh
/environment. Comandos que sero executados somente na conexo ssh em ~/.ssh/rc e
/etc/ssh/sshrc caso contrrio ser executado o xauth por padro.
OBS: Para utilizar autenticao Rhosts/Rhosts+RSA (arquivos ~/.rhosts/~/.shosts) o
programa ssh dever ter permisses SUID root e conectar usando portas baixas (menores
que 1024).
Exemplos:
# Conecta-se ao servidor remoto usando o login do usurio atual
Captulo 15. Servidor ssh 260
ssh ftp.sshserver.org
# Conecta-se ao servidor remoto usando o login john (via ssh verso 2)
ssh -2 ftp.sshserver.org -l john
# Conecta-se ao servidor remoto usando compactao e o login john
ssh ftp.sshserver.org -C -l john
# Semelhante ao exemplo acima, usando o formato "login@ip"
ssh john@ftp.sshserver.org -C
# Conecta-se ao servidor remoto usando compactao, o login john,
# ativa o redirecionamento do agente de autenticao (-A) e redirecionamento
# de conexes X11 (-X). Veja a prxima seo para entender como o
# suporte a redirecionamento de conexes do X funciona.
ssh ftp.sshserver.org -C -A -X -l john
Redirecionamento de conexes do X
O redirecionamento de conexes do X Window poder ser habilitado em ~/.ssh/config
ou /etc/ssh/ssh_config ou usando as opes -A -X na linha de comando do ssh (as op-
es -a e -x desativam as opes acima respectivamente). Uma varivel $DISPLAY criada
automaticamente para fazer o redirecionamento ao servidor X local.
Ao executar umaplicativo remoto, a conexo redirecionada a umDISPLAY proxy criado pelo
ssh (a partir de :10, por padro) que faz a conexo com o display real do X (:0), ou seja, ele
pular os mtodos de autenticao xhost e cookies. Por medidas de segurana recomend-
vel habilitar o redirecionamento individualmente somente se voc cona no administrador do
sistema remoto.
# Exemplo de configurao do ssh_config
# Permite Redirecionamento de conexes para o prprio computador (nomes de
# mquinas podem ser especificadas).
Host 127.0.0.1
ForwardAgent yes
ForwardX11 yes
# Opes especficas do cliente para conexes realizadas a 192.168.1.4 usando
# somente o protocolo 2
Host 192.168.1.4
# As 2 linhas abaixo ativam o redirecionamento de conexes do X
ForwardAgent yes
ForwardX11 yes
PasswordAuthentication yes
Captulo 15. Servidor ssh 261
Port 22
Protocol 2
Cipher blowfish
# Opes especficas do cliente para conexes realizadas a 192.168.1.5 usando
# somente o protocolo 1
Host 192.168.1.5
# As 2 linhas abaixo desativam o redirecionamento de conexes do X
ForwardAgent no
ForwardX11 no
PasswordAuthentication yes
Port 22
Protocol 1
Cipher blowfish
# CheckHostIP yes
# RhostsAuthentication no
# RhostsRSAAuthentication yes
# RSAAuthentication yes
# FallBackToRsh no
# UseRsh no
# BatchMode no
# StrictHostKeyChecking yes
# IdentityFile ~/.ssh/identity
# IdentityFile ~/.ssh/id_dsa
# IdentityFile ~/.ssh/id_rsa1
# IdentityFile ~/.ssh/id_rsa2
# EscapeChar ~
Cliente ssh para Windows
O putty um cliente ssh Win32 que possui suporte aos protocolos verso 1 e 2 do ssh,
aceita compactao alm de funcionar tambm como cliente telnet. Seu tamanho pe-
queno, apenas um executvel e requer 220KB de espao em disco. Ele pode ser baixado de
http://www.chiark.greenend.org.uk/~sgtatham/putty/.
Outra alternativa o MindTerm, este baseado em Java e pode inclusive ser executado como
umapplet emuma pgina web. Este programa encontrado emhttp://www.mindbright.
se/mindterm/.
15.2.2 scp
Permite a cpia de arquivos entre o cliente/servidor ssh. A sintaxe usada por este comando
a seguinte:
Captulo 15. Servidor ssh 262
scp [origem] [destino]
Os parmetros de origem e destino so semelhantes ao do comando cp mas possui um formato
especial quando especicado uma mquina remota:
Um caminho padro - Quando for especicado umarquivo local. Por exemplo: /usr
/src/arquivo.tar.gz.
usuario@host_remoto:/diretrio/arquivo - Quando desejar copiar o ar-
quivo de/para um servidor remoto usando sua conta de usurio. Por exemplo:
gleydson@ftp.debian.org:~/arqs.
A opo -C recomendvel para aumentar a taxa de transferncia de dados usando compac-
tao. Caso a porta remota do servidor sshd seja diferente de 22, a opo -P porta dever ser
especicada ( P maiscula mesmo, pois a -p usada para preservar permisses/data/horas
dos arquivos transferidos).
Exemplos:
# Para copiar um arquivo local chamado /pub/teste/script.sh para
# meu diretrio pessoal em ftp.sshserver.org
scp -C /pub/teste/script.sh gleydson@ftp.sshserver.org:~/
# Para fazer a operao inversa a acima (copiando do servidor remoto para o local)
# s inverter os parmetros origem/destino:
scp -C gleydson@ftp.sshserver.org:~/script.sh /pub/teste
# Para copiar o arquivo local chamado /pub/teste/script.sh para
# o diretrio /scripts dentro do meu diretrio pessoal em ftp.sshserver.org
# com o nome teste.sh
scp -C /pub/teste/script.sh gleydson@ftp.sshserver.org:~/scripts/teste.sh
# O exemplo abaixo faz a transferncia de arquivos entre 2 computadores remotos:
# O arquivo teste.sh lido do servidor server1.ssh.org e copiado para
# server2.ssh.org (ambos usando o login gleydson)
scp -C gleydson@server1.ssh.org:~/teste.sh gleydson@server2.ssh.org:~/
Cliente scp para Windows
O pscp faz a tarefa equivalente ao scp no windows, e pode ser baixado de http://www.
chiark.greenend.org.uk/~sgtatham/putty/.
15.2.3 sftp
Permite realizar transferncia de arquivos seguras atravs do protocolo ssh. Aconexo e trans-
ferncias so realizadas atravs da porta 22 (ainda no possvel modicar a porta padro). A
sintaxe para uso deste comando a seguinte:
sftp usuario@host_remoto
Captulo 15. Servidor ssh 263
Compactao pode ser especicada atravs da opo -C. Um arquivo contendo os comandos
usados na seo sftp poder se especicado atravs da opo -b arquivo para automatizar
tarefas.
OBS1: Para desativar o servidor sftp, remova a linha SubSystem sftp
/usr/lib/sftp-server (que inicializa o sub-sistema ftp) do arquivo /etc/ssh
/sshd_config e reinicie o servidor sshd.
OBS2: O suporte ao programa sftp somente est disponvel ao protocolo ssh verso 2 e su-
periores.
OBS3: Algumas opes comuns do cliente ftp padro (como mget) ainda no esto dispon-
veis ao sftp. Veja a pgina de manual para detalhe sobre as opes disponveis.
15.3 Servidor ssh
15.3.1 sshd
Este o daemon de controle da conexo encriptada via protocolo ssh, transferncia de arquivos
e shell interativo. As opes de linha de comando esto disponveis em Opes de linha de
comando on page 258. Seu arquivo de congurao principal /etc/ssh/sshd_config,
umexemplo e descrio das opes deste arquivo encontrada emExemplo de sshd_config
com explicaes das diretivas on page 268.
OBS1: recomendvel que o arquivo /etc/ssh/sshd_config seja lido somente pelo
dono/grupo, por conter detalhes de acesso de usurios, grupos e intervalo entre a gerao
de chave de seo.
OBS2: Se estiver ocorrendo falhas no acesso ao servidor ssh, verique as permisses nos ar-
quivos /etc/hosts.allow e /etc/hosts.deny (o nome do servio sshd). Mesmo ope-
rando como daemon, o servidor utiliza estes arquivos para fazer um controle de acesso adici-
onal.
15.3.2 Controle de acesso
denido pelas opes ListenAddress, AllowUsers, DenyUsers, AllowGroups,
DenyGroups e PermitRootLogin do arquivo de congurao sshd_config (veja Exem-
plo de sshd_config com explicaes das diretivas on page 268) e via tcpd (arquivos
hosts.allow e hosts.deny). Veja O mecanismo de controle de acessos tcpd on page 62.
15.3.3 Usando autenticao RSA/DSA - chave pblica/privada
Este mtodo de autenticao utiliza o par de chaves pblica (que ser distribudo nas mquinas
que voc conecta) e outra privada (que car em seu diretrio pessoal) para autenticao. A
encriptao e decriptao so feitas usando chaves separadas e no possvel conseguir a
Captulo 15. Servidor ssh 264
chave de decriptao usando a chave de encriptao. possvel inclusive gerar uma chave sem
senha para efetuar o logon em um sistema ou execuo de comandos remotos (este esquema
um pouco mais seguro que os arquivos ~/.rhosts e ~/.shosts).
Siga os seguintes passos para se autenticar usando RSA 1 - usada na verso 1 do ssh:
1 Gere um par de chaves pblica/privada usando o comando:
ssh-keygen
Um par de chaves RSA verso 1 ser gerado com o tamanho de 1024 bits por padro,
garantindo uma boa segurana/performance, e salvas no diretrio ~/.ssh com o nome
identity e identity.pub. Para alterar o tamanho da chave use a opo -b tamanho.
Depois de gerar a chave, o ssh-keygen pedir uma frase-senha ( recomendvel
ter um tamanho maior que 10 caracteres e podem ser includos espaos). Se no qui-
ser digitar uma senha para acesso ao sistema remoto, tecle <Enter> quando perguntado.
Mude as permisses do diretrio ~/.ssh para 750. A opo -f especica o diretrio e
nome das chaves. A chave pblica ter a extenso .pub adicionada ao nome especi-
cado. ATENO Nunca distribua sua chave privada, nem armazene-a em servidores de
acesso pblicos ou outros mtodos que permitem outros terem acesso a ela. Se precisar
de uma cpia de segurana, faa em disquetes e guarde-a em um lugar seguro.
2 Instale a chave pblica no servidor remoto que deseja se conectar, por exemplo,
www.sshserver.org:
ssh-copy-id -i ~/.ssh/identity gleydson@www.servidorssh.org
A funo do utilitrio acima entrar no sistema remoto e adicionar a chave pblica local
~/.ssh/identity.pub no arquivo /home/gleydson/.ssh/authorized_keys do
sistema remoto www.sshserver.org. O mesmo processo poder ser feito manu-
almente usando os mtodos tradicionais (ssh/scp). Caso o arquivo remoto /home
/gleydson/.ssh/authorized_keys no existe, ele ser criado. Seu formato idn-
tico ao ~/.ssh/know_hosts e contm uma chave pblica por linha.
3 Agora utilize o ssh para entrar no sistema remoto usando o mtodo de chave p-
blica/privada. Entre com a senha que usou para gerar o par de chaves pblico/privado
(ele entrar diretamente caso no tenha digitado uma senha).
Para autenticar em uma verso 2 do ssh (usando chave RSA 2 ou DSA):
1 Gere um par de chaves pblica/privada usando o comando:
ssh-keygen -t rsa -f ~/.ssh/id_rsa
ou
ssh-keygen -t dsa -f ~/.ssh/id_rsa
Um par de chaves RSA 2/DSA ser gerado. Para alterar o tamanho da chave use a
opo -b tamanho. Depois de gerar a chave, o ssh-keygen pedir uma frase-senha (
recomendvel ter um tamanho maior que 10 caracteres e podem ser includos espaos).
Se no quiser digitar uma senha para acesso ao sistema remoto, tecle <Enter> quando
perguntado. Mude as permisses do diretrio ~/.ssh para 750. ATENO Nunca
distribua sua chave privada, nemarmazene-a emservidores de acesso pblicos ou outros
mtodos que permitemoutros teremacesso a ela. Se precisar de uma cpia de segurana,
faa em disquetes e guarde-a em um lugar seguro.
2 Instale a chave pblica no servidor remoto que deseja se conectar copiando o arquivo
Captulo 15. Servidor ssh 265
com:
scp ~/.ssh/id_rsa.pub usuario@servidorremoto:~/.ssh/authorized_keys2
ou
scp ~/.ssh/id_dsa.pub usuario@servidorremoto:~/.ssh/authorized_keys2
(caso tenha gerado a chave com a opo -t dsa)
Caso o arquivo remoto /home/gleydson/.ssh/authorized_keys2 no existe, ele
ser criado. Seu formato idntico ao ~/.ssh/know_hosts2 e contm uma chave
pblica por linha.
3 Agora utilize o ssh para entrar no sistema remoto usando o mtodo de chave p-
blica/privada. Entre com a senha que usou para gerar o par de chaves pblico/privado
(ele entrar diretamente caso no tenha digitado uma senha).
OBS: Dever ser levado em considerao a possibilidade de acesso fsico ao seu diretrio pes-
soal, qualquer um que tenha posse de sua chave privada poder ter acesso ao sistema remoto.
O tipo de chave criada por padro a rsa1 (compatvel com as verses 1 e 2 do ssh). A opo
-t [chave] poder ser usada (ao gerar a chave) para selecionar o mtodo de criptograa:
rsa1 - Cria uma chave rsa compatvel com a verso 1 e 2 do ssh (esta a padro).
rsa - Cria uma chave rsa compatvel somente com a verso 2 do ssh.
dsa - Cria uma chave dsa compatvel somente com a verso 2 do ssh.
Para trocar a senha utilize o comando: ssh-keygen -p -t tipo_chave -f
~/.ssh/identity - ser pedida sua senha antiga e a nova senha (no mesmo es-
tilo do passwd). Opcionalmente voc pode utilizar a sintaxe: ssh-keygen -p -f
~/.ssh/identity -P senha_antiga -N senha_nova, que troca a senha em um nico
comando (til para ser usado em scripts junto com a opo -q para evitar a exibio de
mensagens de sada do ssh-keygen).
15.3.4 Execuo de comandos especcos usando chaves
Com o uso de chaves tambm possvel o uso do ssh para execuo de comandos especcos
em mquinas remotas, isto possvel com os novos recursos da verso 3 do ssh. Para fazer
isto, siga os passos Usando autenticao RSA/DSA- chave pblica/privada on page 263 para
gerar um par de chaves DSA (o par RSA no aceita execuo de comandos especcos) e copiar
para authorized_keys2. Aps isto, entre no servidor remoto e edite a chave, inserindo o
comando que dever ser executado antes da linha dds, por exemplo:
command="ls / -la" ssh-dss ABCAB3NzaC5555MAAACBAL3...
Comeste mtodo possvel restringir a execuo de alguns comandos/servios almde outras
possibilidades como a mudana de variveis especcas para o comando:
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,command="ls / -la" ssh-dss ABCAB3NzaC1kc55355MAADBBYLp...
15.3.5 Criando um gateway ssh
Imagine quando voc deseja ter acesso a uma mquina de sua rede interna que esteja atrs
de um gateway, isto possvel usando os recursos explicados em Execuo de comandos
Captulo 15. Servidor ssh 266
especcos usando chaves on the page before fazendo um redirecionamento de acesso para
seu usurio da seguinte forma:
command="ssh -t usuario@maquina.interna" ssh-dss DAK874CKLDSAUE83da9x...
Isto o acesso do usurio ser redirecionado automaticamente quando efetuar o logon. Caso
tenha denido uma senha para a chave DSA, o usurio dever fornecer a senha para entrar no
gateway e outra para acessar sua estao de trabalho.
OBS: No estou levando emconta as consideraes de segurana que este exemplo tememsua
rede, bem como o que pode ou no ser redirecionado. A inteno foi manter a simplicidade
para entender sem diculdades como isto feito.
15.3.6 Criando um tunel proxy
Aplicaes remotas podem ser abertas localmente com o uso desta tcnica. Voc poder usar
para acessar portas que estariam disponveis somente atravs do endereo remoto, realizar
conexes criptografadas ou com compactao (garantindo uma boa taxa de transferncia para
protocolos que usem mais texto).
Por exemplo, para redirecionar o trfego da porta 80 do servidor remoto para a porta 2003
local:
ssh -l seu_login servidor -L2003:servidor_remoto:80 -f sleep 60
O sleep 60 tem a funo de apenas deixar o tunel aberto por 60 segundos, tempo suciente
para realizarmos nossa conexo. Agora, entre no seu navegador local e acesse a porta 2003:
http://localhost:2003
A opo -C tambm pode ser especicada junto ao ssh para usar compactao dos dados
da conexo. Como notou, este recurso tambm til para fazer a administrao remota de
mquinas, porque o que est realizando a conexo ser o IP do servidor remoto, no o seu. Da
mesma forma, voc poder ter problemas caso no tenha uma boa poltica de distribuio de
contas de mquinas em sua rede. Veja Gerenciamento de contas e cuidados para a proteo
de senhas on page 165 para detalhes .
15.3.7 Diferenas nas verses do protocolo
Retirada da pgina de manual do sshd:
Protocolo SSH verso 1 Cada servidor possui uma chave RSA especca (1024 bits por pa-
dro) usada para identica-lo. Quando o sshd inicia, ele gera uma chave RSAdo servidor
Captulo 15. Servidor ssh 267
(768 bits por padro, valor denido por ServerKeyBits) que recriada a cada hora (mo-
dicado por KeyRegenerationInterval no sshd_config) e permanece sempre residente
na RAM.
Quando um cliente se conecta o sshd responde com sua chave pblica da mquina e
chaves do servidor. O cliente ssh compara a chave RSA com seu banco de dados (em ~
/.ssh/know_hosts) para vericar se no foi modicada.
Estando tudo OK, o cliente gera um nmero aleatrio de 256 bits, o encripta usando am-
bas as chaves de mquina e chave do servidor e envia este nmero ao servidor. Ambos os
lados ento usam este nmero aleatrio como chave de seo que usado para encriptar
todas as comunicaes seguintes na seo.
O resto da seo usa um mtodo de embaralhamento de dados convencional, atualmente
Blowsh ou 3DES (usado como padro). O cliente seleciona o algoritmo de criptograa
que ser usado de um destes oferecidos pelo servidor. Aps isto o servidor e cliente
entram em um dilogo de autenticao. O cliente tenta se autenticar usando um dos
seguintes mtodos de autenticao:
~/.rhosts ou ~/.shosts (normalmente desativada).
~/.rhosts ou ~/.shosts combinado com autenticao RSA (normalmente desa-
tivada).
Autenticao RSA por resposta de desao.
Autenticao baseada em senha.
A autenticao usando Rhosts normalmente desativada por ser muito insegura mas
pode ser ativada no arquivo de congurao do servidor se realmente necessrio. A
segurana do sistema no melhorada a no ser que os servios rshd, rlogind, rexecd
e rexd estejam desativados (assim, o rlogin e rsh sero completamente desativados
na mquina).
Protocolo SSH verso 2 Averso 2 funciona de forma parecida coma 1: Cada mquina possui
uma chave RSA/DSA especca usada para se identicar. A diferena que quando o
sshd inicia, ele no gera uma chave de servidor. A segurana de redirecionamento ofe-
recida atravs da concordncia do uso de uma chave Dife-Hellman. Esta concordncia
de chave resulta em uma seo com chave compartilhada. O resto da seo encriptada
usando um algoritmo simtrico, como Blowsh, 3DES, CAST128, Arcfour, 128 bit AES,
ou 256 bit AES.
O cliente que seleciona o algoritmo de criptograa que ser usado entre os oferecidos
pelo servidor. A verso 2 tambm possui integridade de seo feita atravs de um c-
digo de autenticao de mensagem criptogrca (hmac-sha1 ou hmac-md5). A verso
2 do protocolo oferece um mtodo de autenticao baseado em chave pblica (Pub-
keyAuthentication) e o mtodo de autenticao convencional usando senhas.
15.3.8 Exemplo de sshd_config com explicaes das diretivas
Abaixo segue um exemplo deste arquivo que poder ser adaptado ao seu sistema. O objetivo
ser ao mesmo tempo til para sua congurao e didtico:
Captulo 15. Servidor ssh 268
# Modelo personalizado para o guia Foca GNU/Linux baseado na configurao
# original do FreeBSD.
# Autor: Gleydson Mazioli da Silva
# Data: 20/09/2001.
# Porta padro usada pelo servidor sshd. Mltiplas portas podem ser
# especificadas separadas por espaos.
Port 22
# Especifica o endereo IP das interfaces de rede que o servidor sshd
# servir requisies. Mltiplos endereos podem ser especificados
# separados por espaos. A opo Port deve vir antes desta opo
ListenAddress 0.0.0.0
# Protocolos aceitos pelo servidor, primeiro ser verificado se o cliente
# compatvel com a verso 2 e depois a verso 1. Caso seja especificado
# somente a verso 2 e o cliente seja verso 1, a conexo ser descartada.
# Quando no especificada, o protocolo ssh 1 usado como padro.
Protocol 2,1
# As 4 opes abaixo controlam o acesso de usurios/grupos no sistema.
# Por padro o acesso a todos garantido (exceto o acesso root se
# PermitRootLogin for "no"). AllowUsers e AllowGroups definem uma lista
# de usurios/grupos que podero ter acesso ao sistema. Os coringas
# "*" e "?" podem ser especificados. Note que somente NOMES so vlidos,
# UID e GID no podem ser especificados.
#
# As diretivas Allow so processadas primeiro e depois Deny. O mtodo que
# estas diretivas so processadas idntico a diretiva
# "Order mutual-failure" do controle de acesso do Apache:
# O usurio dever TER acesso via AllowUsers e AllowGroups e NO ser bloqueado
# por DenyUsers e DenyGroups para ter acesso ao sistema. Se uma das diretivas
# no for especificada, "*" assumido como padro.
# Estas permisses so checadas aps a autenticao do usurio, porque
# dados a ele pelo /etc/passwd e PAM so obtidos aps o processo de
# autenticao.
#AllowUsers gleydson teste?
#DenyUsers root adm
#AllowGroups users
#DenyGroups root adm bin
# Permite (yes) ou no (no) o login do usurio root
PermitRootLogin no
# Chaves privadas do servidor (as chaves pblicas possuem um ".pub" adicionado
# no final do arquivo.
Captulo 15. Servidor ssh 269
HostKey /etc/ssh/ssh_host_key
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
# Tamanho da chave. 768 bits o padro
ServerKeyBits 768
# Tempo mximo para login no sistema antes da conexo ser fechada
LoginGraceTime 600
# Tempo para gerao de nova chave do servidor (segundos). O padro
# 3600 segundos (1 hora).
KeyRegenerationInterval 3600
# Ignora os arquivos ~/.rhosts e ~/.shosts
IgnoreRhosts yes
# Ignora (yes) ou no (no) os arquivos ~/.ssh/known_hosts quando for usado
# para a opo RhostsRSAAuthentication. Se voc no confia neste mecanismo
# ajuste esta opo para yes.
IgnoreUserKnownHosts no
# Checa por permisses de dono dos arquivos e diretrio de usurio antes de
# fazer o login. muito recomendvel para evitar riscos de segurana
# com arquivos lidos por todos os usurios.
StrictModes yes
# Permite (yes) ou no (no) o redirecionamento de conexes X11. A segurana
# do sistema no aumentada com a desativao desta opo, outros mtodos
# de redirecionamento podem ser usados
X11Forwarding yes
# Especifica o nmero do primeiro display que ser usado para o redirecionamento
# X11 do ssh. Por padro usado o display 10 como inicial para evitar conflito
# com display X locais
X11DisplayOffset 10
# Mostra (yes) ou no (no) a mensagem em /etc/motd no login. O padro "no".
PrintMotd no
# Mostra (yes) ou no (no) a mensagem de ltimo login do usurio. O padro "no".
PrintLastLog no
# Permite (yes) ou no (no) o envio de pacotes keepalive (para verificar se o
# cliente responde. Isto bom para fechar conexes que no respondem mas
# tambm podem fechar conexes caso no existam rotas para o cliente
Captulo 15. Servidor ssh 270
# naquele momento ( um problema temporrio). Colocando esta opo como
# "no" por outro lado pode deixar usurios que no tiveram a oportunidade
# de efetuar o logout do servidor dados como "permanentemente conectados"
# no sistema. Esta opo deve ser ativada/desativada aqui e no programa
# cliente para funcionar.
KeepAlive yes
# Facilidade e nvel das mensagens do sshd que aparecero no syslogd
SyslogFacility AUTH
LogLevel INFO
# Especifica se somente a autenticao via arquivos ~/.rhosts e /etc/hosts.equiv
# suficiente para entrar no sistema. No muito bom usar "yes" aqui.
RhostsAuthentication no
# Mesmo que o acima com o acrscimo que o arquivo /etc/ssh/ssh_known_hosts tambm
# verificado. Tambm evite usar "yes" aqui.
RhostsRSAAuthentication no
# Especifica se a autenticao via RSA permitida (s usado na verso 1 do
# protocolo ssh). Por padro "yes".
RSAAuthentication yes
# Permite autenticao usando senhas (serve para ambas as verses 1 e 2 do ssh).
# O padro "yes".
PasswordAuthentication yes
# Se a PasswordAuthentication for usada, permite (yes) ou no (no) login
# sem senha. O padro "no".
PermitEmptyPasswords no
# Ativa senhas s/key ou autenticao PAM NB interativa. Nenhum destes
# compilado por padro junto com o sshd. Leia a pgina de manual do
# sshd antes de ativar esta opo em um sistema que usa PAM.
ChallengeResponseAuthentication no
# Verifica se o usurio possui emails ao entrar no sistema. O padro "no".
# Este mdulo tambm pode estar sendo habilitado usando PAM (neste caso
# cheque a configurao em /etc/pam.d/ssh).
CheckMail no
# Especifica se o programa login usado para controlar a sees de shell
# interativo. O padro "no".
UseLogin no
# Especifica o nmero mximo de conexes de autenticao simultneas feitas
Captulo 15. Servidor ssh 271
# pelo daemon sshd. O valor padro 10. Valores aleatrios podem ser
# especificados usando os campos "inicio:taxa:mximo". Por exemplo,
# 5:40:15 rejeita at 40% das tentativas de autenticao que excedam o
# limite de 5 at atingir o limite mximo de 15 conexes, quando
# nenhuma nova autenticao permitida.
MaxStartups 10
#MaxStartups 10:30:60
# Mostra uma mensagem antes do nome de usurio/senha
Banner /etc/issue.net
# Especifica se o servidor sshd far um DNS reverso para verificar se o
# endereo confere com a origem (isto til para bloquear conexes
# falsificadas - spoofing). O padro "no".
ReverseMappingCheck yes
# Ativa o subsistema de ftp seguro. Para desabilitar comente a linha
# abaixo
Subsystem sftp /usr/lib/sftp-server
Captulo 15. Servidor ssh 272
273
Captulo 16
Servidor pop3
Este captulo descreve a instalao, congurao, criao de contas e controle de acesso ao
servidor pop3. Este captulo baseado no servidor qpopper da Qualcomm.
16.1 Introduo
o servidor para recebimento de mensagens eletrnicas (e-mails) para o cliente de e-mails. O
servidor pop3 documentado o qpopper (da Qualcomm), umdos mais usados emambiente
Linux, simples de congurar e distribudo livremente. O que este programa faz ler os e-
mails de usurios em /var/mail e os envia via porta 110 ao programa cliente (Netscape,
sylpheed, mutt, balsa, Pegasus, Outlook, ou qualquer outro que suporte o protocolo
pop3).
16.1.1 Verso
assumido que esteja usando a verso 4.0.3 do qpopper. As explicaes contidas aqui podem
funcionar para verses posteriores, mas recomendvel que leia a documentao sobre modi-
caes no programa (changelog) em busca de mudanas que alterem o sentido das explicaes
fornecidas aqui.
16.1.2 Contribuindo
O site do qpopper http://www.eudora.com/qpopper/, anncios de novas ver-
ses, bugs e correes so enviados para <qpopper-announce@rohan.qualcomm.com>
(inscreva-se enviando uma mensagem com o assunto subscribe para o nome da lista acres-
centando -request). A lista de suporte aos usurios <qpopper@lists.pensive.org>
(o mtodo de inscrio idntico a lista announce).
Captulo 16. Servidor pop3 274
16.1.3 Caractersticas
Simples de congurar.
Possui um timeout padro de 30 segundos ao invs de 10 minutos do protocolo pop3
padro.
O protocolo pop3 mais simples e consome menos recursos no servidor que o IMAP.
Suporte a envio de boletins aos usurios do sistema.
Inclui suporte a TLS/SSL.
Suporte a senhas ocultas (shadow passwords).
Suporta PAM.
Suporte a autenticao via APOP.
Alta performance.
16.1.4 Ficha tcnica
Pacote: qpopper.
Utilitrios:
in.qpopper - Servidor pop3.
popauth - Manipula os bancos de dados de autorizao quando usado o mtodo de
autenticao APOP.
Arquivos de congurao:
/etc/popper.allow - Contm a lista de usurios autorizados a usar o servio pop3.
/etc/popper.deny - Contm uma lista de usurios NO autorizados a usar o servio
pop3.
/etc/pop.auth - Contm dados de autenticao criados pelo programa popauth.
16.1.5 Requerimentos de Hardware
O servidor qpopper requer no mnimo 6MB de memria para rodar e espao em disco suci-
ente para acomodar os e-mails de usurios.
16.1.6 Arquivos de log criados pelo qpopper
Mensagens sobre a execuo do qpopper so enviadas aos seguintes arquivos em/var/log:
mail.info - Detalhes sobre autenticao de usurios e mensagens.
mail.warn - Erros e avisos diversos ocorridos na seo pop3.
syslog e daemon.log - Mensagens sobre a execuo do servidor qpopper.
auth.log - Mensagens de autenticao gerados pelo PAM.
16.1.7 Instalao
apt-get install qpopper
Por padro o servidor qpopper instalado via inetd:
Captulo 16. Servidor pop3 275
pop-3 stream tcp nowait.60 root /usr/sbin/tcpd
/usr/sbin/in.qpopper -s
Se estiver congurando um servidor pop3 com um grande nmero de conexes, recomend-
vel aumentar o nmero de execues do servio pop3 por minuto (no inetd.conf) ou rodar
o servidor qpopper como daemon (preferido). Para fazer isto, remova a linha que inicia o
qpopper no inetd.conf e construa um script que inicie o servio como daemon usando a
opo -S (veja outras opes em Opes de linha de comando on the current page).
16.1.8 Iniciando o servidor/reiniciando/recarregando a congurao
O servio executado por padro via inetd e utiliza o controle de acesso tcpd (veja O meca-
nismo de controle de acessos tcpd on page 62). Adicionalmente voc pode denir que usurios
tero/no acesso ao servio pop3 nos arquivos /etc/popper.allow e popper.deny. Por
padro, o acesso garantido para qualquer usurio.
Aps instalar o servidor pop3 instalado, resta congurar o cliente para conectar ao servidor
pop3 do servidor. O nome de usurio e senha so os usados no arquivo /etc/passwd.
16.1.9 Teste de acesso no pop3
Um simples teste consiste em usar o telnet conectando a porta pop3 (110): telnet
127.0.0.1 110:
Connected to 127.0.0.1.
Escape character is ^].
+OK Qpopper (version 4.0.3) at server.org starting. <2122.11132222@server.org>
A resposta acima indica que o servidor pop3 est funcionando corretamente.
16.1.10 Opes de linha de comando
Opes de linha de comando do servidor in.qpopper:
endereo:porta Quando est operando em modo daemon (iniciado com -S), espera por co-
nexes no endereo e opcionalmente na porta especicada. O endereo dever ser o da
interface de rede local do servidor (como 192.168.1.1) caso no seja especicado, o
servidor qpopper monitorar todos os endereos. A porta padro 110 caso no seja
especicada.
-b [diretrio ] Ativa o sistema de envio de boletins. O diretrio especicado o que contm os
boletins que sero enviados (na distribuio Debian, o /var/spool/popbull o indi-
cado). Veja Enviando boletins de mensagens on page 277 para instrues de utilizao
deste recurso.
Captulo 16. Servidor pop3 276
-c Modica a senha para caracteres minsculos antes de autenticar, permitindo que clientes
conectem com a senha em MAISCULAS ou caracteres mIsTurados.
-f [arquivo ] Especica um arquivo de congurao para o servidor qpopper. Veja a pgina
de manual para detalhes sobre as opes. Recomendo usar as opes de linha de co-
mando exceto se for requerida conguraes especiais para modicar o comportamento
do servidor pop3.
-l [num ] Modica as opes de criptograa TLS/SSL usada no transporta da seo. Os se-
guintes valores so aceitos:
0 - Desativa TLS/SSL. o padro.
1 - Ativa o suporte a TLS/SSL. Se o cliente no suportar criptograa, os dados sero
transmitidos usando a forma padro.
2 - Tenta ativar uma conexo TLS quando o cliente conecta ao servidor usando uma
porta alternativa.
-p [num ] Seleciona como a senha em texto plano ser manipulada. O servidor dever estar
compilado com suporte a outras formas de autenticao (como APOP) ao invs de texto
plano. As seguintes opes so suportadas.
0 - Senhas em texto plano podem ser usadas para usurios no cadastrados no ar-
quivo /etc/pop.auth (gerenciado pelo popauth. Este o padro.
1 - Somente permite acesso de usurios cadastrados no arquivo /etc/pop.auth.
Qualquer acesso usando texto plano negado.
2 - Permite autenticao usando texto plano como preferncia, at mesmo para
usurios que estejam no /etc/pop.auth). til para clientes que no suportam
autenticao usando texto plano.
3 - Somente usurios conectando da mesma mquina (127.0.0.1) podem usar auten-
ticao em texto plano.
4 - Permite autenticao usando texto plano somente se uma conexo criptogrca
foi estabelecida usando TLS ou SSL.
-R Desativa a resoluo reversa de endereos IP de clientes.
-s Registra dados de inicio da seo, nome de usurio, nmero de bytes/mensagens apagadas,
nmero de mensagens deixadas no servidor e mda seo. Estes detalhes so registrados
pelo syslogd. Seu uso recomendvel para ter controle sobre o que est acontecendo
em seu servidor.
-S Ativa o modo daemon. til para servidores pop3 com grande nmero de acessos.
-T [num ] Tempo mximo em segundos para nalizao da seo quando o cliente no envia
nenhuma resposta ou comando. Valores pequenos (como 20) podem ser especicados
para servidores que possuem poucos usurios e um link rpido. Para grande quantidade
de usurios ou conexo feita via links lentos (como ppp, slip, plip, etc.) use valores como
600 (10 minutos) ou mais. O valor padro 120 segundos (2 minutos).
-u L o arquivo ~/.qpopper.options no diretrio do usurio em busca de opes adicio-
nais para o servidor. Este arquivo lido aps o processo de autenticao e deve ter per-
misses leitura/gravao para o dono. Isto no recomendvel em servidores seguros,
a criptograa ou mtodo de autenticao podem ser desativados sem o conhecimento do
administrador comprometendo a segurana dos dados.
-U Idntica a opo acima, mas o arquivo deve residir no diretrio de spool (/var/spool
/pop) e ter o formato:
.usuario.qpopper-options
Captulo 16. Servidor pop3 277
Este arquivo deve ter como dono o administrador ou dono do servidor pop3. Esta alter-
nativa mais segura que a anterior porque o usurio no ter acesso ou desativar opes
especcas.
-y [facilidade ] Permite modicar o nvel facilidade que as mensagens so registradas no
syslogd (veja Arquivo de congurao syslog.conf on page 82).
16.1.11 Enviando boletins de mensagens
Este recurso muito til para enviar alertas ou avisos para todos os usurios em seu sistema
de uma s vez. A mensagem escrita no diretrio /var/spool/popbull seguindo um for-
mato especial e quando o usurio pop3 se conecta para pegar seus e-mails receber tambm
uma cpia do boletim. O controle de boletins j recebido pelo usurio feito no arquivo ~
/.popbull. Siga os passos a seguir para congurar este sistema:
1 Ative o suporte a envio de boletins no servidor qpopper, adicionando a opo -b
/var/spool/popbull a linha de comando.
2 Os nmeros de boletins so controlados seqencialmente pelos arquivos ~/.popbull,
portanto importante comear com o nome do boletim com pelo menos 5 dgitos (00001,
00002, 00003, etc). Vamos usar 00001-teste em nosso exemplo.
3 A primeira linha do boletim deve conter a palavra From e um espao e deve ser com-
pletada com um nome e data, seguido de campos essenciais para o envio da mensagem:
From teste Sex Set 29 21:40:00 2001
To: user@localhost
From: Administrador do Sistema <root@localhost>
Date: Fri, 29 Sep 2001 21:40:00 -0800 (PST)
Subject: Teste do sistema de boletins
Este apenas um teste para o sistema de boletins. Se tudo estiver OK
voc receber esta mensagem quando pegar seus e-mails no cliente pop3
e este boletim ser registrado no arquivo ~/.popbull para que no seja
novamente recebido.
Deve haver uma linha em branco para separar o cabealho da mensagem.
OBS: Quando incluir novos usurios no sistema, somente os ltimos 10 boletins sero envia-
dos.
16.1.12 Especicando quotas para as caixas de correio
Crie o diretrio de spool /var/mail em uma partio separada e ative o sistema de quota do
Linux nela. Leia as instrues em Limitando o uso de espao em disco (quotas) on page 396.
Captulo 16. Servidor pop3 278
16.1.13 Restringindo acesso ao servidor pop3
Ocontrole de acesso de conexes feito via mtodo tcpd usando o daemon in.qpopper (veja
O mecanismo de controle de acessos tcpd on page 62). O controle de acesso dos usurios
feito atravs do arquivos /etc/popper.allow e /etc/popper.deny, respectivamente
contm os nomes de usurios que podem e no podem ter acesso ao servidor qpopper. Por
motivos de segurana recomendvel redirecionar os e-mails do usurio root para outra
conta (no arquivo /etc/aliases e bloquear o acesso do usurio root ao pop3 no arquivo
/etc/popper.deny.
Se a mquina servidora pop3 no for utilizada para acesso remoto, recomendvel desativar
os servios de login (veja Desabilitando servios de shell para usurios on page 381).
279
Captulo 17
CVS
Este captulo explica os requerimentos, instalao, congurao, segurana e diversos modelos
de congurao de acesso para trabalho em grupo utilizados pelo CVS.
No tome-o como uma referncia completa ao uso e congurao do cvs, a pesquisa de sua
info page muito importante.
17.1 Introduo ao CVS
O CVS (Concurrent Version Software) permite que se organizem grupos de trabalho para de-
senvolvimento de projetos colaborativos. Um projeto pode ser desde um programa em C,
documentao em equipe, etc. O uso do CVS recomendado para qualquer desenvolvimento
de projeto que tenha vrios envolvidos trabalhando ao mesmo tempo.
Para cada mudana feita no programa, pedido uma descrio dos trabalhos realizados e o
sistema registra todas as modicaes realizadas ao longo do desenvolvimento, permitindo
voltar a uma verso anterior ou ver as mudanas entre elas facilmente.
Imagine uma situao onde voc est desenvolvendo um programa de computador e aps a
ltima modicao ele para de funcionar. Com o CVS possvel ver o que foi modicado e
voltar at a verso que estava funcionando para consertar o problema. No desenvolvimento
de documentao e traduo o CVS tambm desempenha um papel importante, pois com ele
o tradutor pode ver o que foi modicado entre a verso do documento original que ele usou
para traduo e uma verso recente, traduzindo apenas as diferenas.
Uma seo de cvs feita de modo interativo atravs do comando cvs. Por exemplo:
logar no sistema - cvs login
baixar um projeto - cvs checkout projeto
Cada comando do cvs ser explicado em detalhes no decorrer deste captulo.
Captulo 17. CVS 280
17.1.1 Verso
A verso do CVS documentada no guia a 1.11.1. As explicaes aqui certamente sero com-
patveis com verses posteriores deste programa.
17.1.2 Histria
O CVS uma substituio do sistema RCS (Revision Control System) ele possui mais recursos
e foi criado sendo compatvel com o RCS.
A histria do CVS (extrada de sua info page) que ele foi iniciado a partir de um con-
junto de scripts shell escritos por Dick Grune que foram postados ao grupo de notcias
comp.sources.unix no volume 6 de Dezembro de 1986. Na verso atual no esto mais
presentes shell scripts porque muitos dos conitos de resoluo de algortmos vem deles.
Em Abril de 1989, Brian Berliner fez o design e programou o CVS. Mais tarde, Jeff Polk ajudou
Brian com o design do mdulo CVS.
17.1.3 Contribuindo com o CVS
Atravs da lista de discusso info-cvs. Para se inscrever envie uma mensagemcomo subject
subscribe para info-cvs-request@gnu.org. Outra alternativa atravs do grupo de
noticias (newsgroup) da Usenet comp.software.config-mgm.
17.1.4 Caractersticas
Abaixo uma lista de caractersticas que tornam o CVS til no gerenciamento de trabalhos em
grupo:
Gerenciamento de projeto em equipe
Log de todas as alteraes realizadas
Lock de arquivos, permitindo que somente uma determinada pessoa modique o ar-
quivo durante o desenvolvimento do projeto.
Histrico de todas as mudanas feitas, isto permite voltar a uma verso anterior em caso
de problemas, e ver o que houve de errado com o cdigo.
Os projetos podem ser hospedados em repositrios.
Podem ser criados diversas equipes de trabalho para cada repositrios, e denidos quem
ter ou no acesso ao repositrio individualmente. O desenvolvedor gleydson, por
exemplo, podem ter acesso ao projeto x_beta e no ter acesso a projeto secret_y.
Permisses de acesso individuais de leitura/gravao.
Captulo 17. CVS 281
possvel criar um usurio com acesso annimo sem dar uma conta no sistema.
Pode tanto utilizar o banco de dados de contas/senhas do sistema como um banco de
dados de autenticao do prprio CVS.
Permite utilizar diversos mtodos de acesso ao servidor: local, pserver, ext, etc. Cada
um destes mtodos ser descrito a seguir.
Permite o acesso via ssh para usurios que j possuam conta na mquina servidora. Este
mtodo garante segurana no envio da senha criptografada (veja Sniffer on page 407
para detalhes).
Permite visualizar facilmente o que foi modicado entre duas verses de um arquivo.
OBS: O CVS possui algumas limitaes e falhas, uma delas que mais me faz falta um suporte
a protocolo pserver via ssh que resolveria o problema de trfego em texto plano e gerencia-
mento de grupos com permisses diferenciadas.
17.1.5 Ficha tcnica
Pacote: cvs
Utilitrios:
cvs - Servidor/ferramenta cliente.
cvsbug - Envia um bug sobre o CVS para a equipe de suporte.
rcs2log - Converte arquivos de log do formato usado pelo RCS para o CVS. Utilizado
na migrao desta ferramenta para o CVS.
cvsconfig - Usado pela Debian para ativar/desativar o servidor pserver. Pode tam-
bm ser usado o dpkg-reconfigure cvs para desativar o servidor pserver e suas
caractersticas.
cvs-makerepos - Script da Debian que l a lista de repositrios de /etc
/cvs-pserver.conf, cria os repositrios no local apropriado, corrige as permisses
do diretrio e adiciona os repositrios no servidor pserver.
cvs-pserver - Script da Debian responsvel por fazer uma inicializao mais inte-
ligente do servidor de CVS via pserver, leitura e processamento de repositrios, etc.
Normalmente ele chamado a partir do arquivo /etc/inetd.conf.
17.1.6 Requerimentos de Hardware
Para executar o CVS requerido pelo menos 3 vezes mais memria que o tamanho do maior ar-
quivo usado pelo projeto (para realizao de diffs entre as atualizaes) e uma boa quantidade
de espao em disco.
Na realidade os requerimentos sobre o CVS dependem muito da aplicao que ser desenvol-
vida. recomendvel que a mquina tenha memria suciente para evitar o uso de swap, que
degrada bastante a performance do sistema.
Captulo 17. CVS 282
17.1.7 Arquivos de log criados pelo CVS
Problemas na inicializao do CVS so registrados no arquivo /var/log/daemon.log. Os
logs de modicaes feitas nos arquivos de um projeto no CVS so armazenadas no formato
arquivo.extenso,v ( adicionado o ,v ao nal do arquivo para indicar que umarquivo
de controle de modicaes do CVS).
17.1.8 Instalao
O CVS pode ser baixado de http://www.cvshome.org/.
Para pacotes Debian basta apenas executar o comando: apt-get install cvs e seguir
as telas de congurao para ter o pacote CVS instalado e (opcionalmente) com o servi-
dor sendo executado. Voc poder a qualquer momento recongurar o CVS executando:
dpkg-reconfigure cvs.
Uma boa documentao de referncia encontrada no pacote cvs-doc.
17.1.9 Iniciando o servidor/reiniciando/recarregando a congurao
A nica congurao requerida quando o CVS executado via pserver. Para isto, neces-
sria a seguinte linha no arquivo /etc/inetd.conf
cvspserver stream tcp nowait.200 root /usr/sbin/tcpd /usr/sbin/cvs-pserver
Note que o parmetro 200 indica quantas vezes o processo CVS poder ser executado por mi-
nuto no sistema. Caso esse nmero seja excedido, o servio ser desabilitado e ser necessrio
reiniciar o servidor inetd com o comando killall -HUP inetd para reativar o servidor
CVS pserver (veja /etc/inetd.conf on page 59 captulo do inetd para detalhes). Ajuste este
valor de forma adequada ao seu servidor!
Veja o script cvs-pserver sendo executado no nal da linha. Ele foi desenvolvido para lidar
de forma mais inteligente com a congurao do servidor CVS pserver.
17.1.10 Opes de linha de comando
As seguintes opes so aceitas pelo CVS.
-z [num ] Utiliza o gzip para fazer a transferncia compactada dos arquivos. O valor especi-
cado pode ser de 0 a 9, quanto maior o nmero maior o nvel de compactao e uso da
CPU. Exemplo: cvs -z 3 checkout teste
-q Oculta mensagens sobre recurso de diretrio durante os comandos do CVS.
-d [repositrio ] Permite especicar o repositrio atravs da linha de comando.
-e [editor ] Dene qual o editor de textos usado para registrar o texto de commits.
-n Executa o cvs em modo simulao no modicando qualquer arquivo do repositrio.
Captulo 17. CVS 283
-t Mostra mensagens mostrando o processo de execuo de comandos do CVS. bastante til
para aprendizado do cvs usado junto com a opo -n.
-r Torna os novos arquivos criados somente para leitura. a mesma coisa que especicar a
varivel CVSREAD.
-w Torna os novos arquivos criados leitura/gravao que o padro.
-x Utiliza criptograa para a transferncia dos arquivos quando utilizado em conjunto com
o Kerberos.
Voc pode obter detalhes sobre opes sobre um comando em especial do CVS (commit, chec-
kout, etc) digitando: cvs comando --help. Veja Criando projetos para serem usados no
CVS on page 289 para exemplos sobre cada uma delas.
17.2 Servidor de CVS - congurando mtodos de acesso ao reposit-
rio
O CVS uma aplicao cliente/servidor, possuindo diversas maneiras de fazer o acesso seu
repositrio (veja Repositrio on page 289 repositrios). Estes mtodos so os seguintes:
local (local on this page).
ext (ext on the next page).
pserver (pserver (password server) on page 285).
fork (fork on the next page).
GSSAPI (gssapi on page 289).
Eles so explicados em detalhes nas sub-sees a seguir.
17.2.1 local
Acessa o diretrio do repositrio diretamente no disco local. A vantagem deste mtodo que
no requerido nem nome nem senha para acesso (voc precisa apenas ter permisses para
acesso aos arquivos que deseja trabalhar) e tambm no preciso nenhuma conexo de rede.
Este mtodo ideal para trabalhar na mquina local ou com os arquivos administrativos do
CVS existentes no diretrio CVSROOT do repositrio. muito til tambm para congurar
outros mtodos de acesso, como o pserver.
Para criar seu repositrio, veja Criando um repositrio on page 290.
Congurando o mtodo local
Para utilizar o mtodo de acesso local, basta denir a varivel CVSROOT da seguinte forma
(assumindo que o repositrio esteja instalado em /var/lib/cvs):
export CVSROOT=/var/lib/cvs
ou
Captulo 17. CVS 284
export CVSROOT=local:/var/lib/cvs
Depois disso, basta utilizar os comandos normais do cvs semprecisar se autenticar no sistema.
Veja os detalhes de utilizao dos comandos de CVS aps o login na seo Clientes de CVS
on page 297.
17.2.2 fork
Este mtodo semelhante ao local, mas ele simula uma conexo de rede com o servidor.
muito usado para ns de testes.
Congurando o mtodo fork
Para utilizar o mtodo de acesso fork, basta denir a varivel CVSROOT da seguinte forma
(assumindo que o repositrio esteja instalado em /var/lib/cvs):
export CVSROOT=fork:/var/lib/cvs
Depois disso, basta utilizar os comandos normais do cvs, sem precisar se autenticar no sis-
tema. Veja os detalhes de utilizao dos comandos do CVS aps o login em Clientes de CVS
on page 297.
17.2.3 ext
Este mtodo de acesso lhe permite especicar um programa externo que ser usado para fazer
uma conexo remota com o servidor cvs.Este programa denido na varivel CVS_RSH e
caso no ela seja especicada o padro rsh.
Este mtodo requer que o usurio possua um login/senha no banco de dados de autenticao
/etc/passwd do servidor de destino. Suas permisses de acesso ao CVS (leitura/gravao)
sero as mesmas denidas neste arquivo.
O uso do acesso criptografado via ssh possvel denindo o programa ssh na varivel
CVS_RSH. Veja os exemplos a seguir em Congurando o mtodo ext on this page.
Para criar seu repositrio, veja Criando um repositrio on page 290.
Congurando o mtodo ext
Dena a varivel CVSROOT da seguinte forma para utilizar este mtodo de acesso (assumindo
/var/lib/cvs como repositrio):
Captulo 17. CVS 285
export CVSROOT=:ext:conta@servidor.org.br:/var/lib/cvs
cvs login
A conta uma conta de usurio existente no servidor remoto (por exemplo, gleydson)
seguido do nome do servidor remoto (separado por uma @). Por exemplo para acessar o
servidor cvs.cipsga.org.br usando a conta michelle:
export CVSROOT=:ext:michelle@cvs.cipsga.org.br:/var/lib/cvs
cvs checkout
OBS: A senha via mtodo de acesso ext ser pedida somente uma vez quando for necessrio
o primeiro acesso ao servidor remoto. Veja os detalhes de utilizao dos comandos de CVS
aps o login na seo Clientes de CVS on page 297. O uso mais freqente do ext para
conexes seguras feitas via ssh, feita da seguinte forma:
export CVS_RSH=ssh
export CVSROOT=:ext:michelle@cvs.cipsga.org.br:/var/lib/cvs
cvs checkout
Oacesso de leitura/gravao do usurio, denido de acordo comas permisses deste usurio
no sistema. Uma maneira recomendada denir um grupo que ter acesso a gravao no CVS
e adicionar usurios que possam fazer gravao neste grupo.
OBS1: Oacesso via ssh traz a vantagemde que as senhas trafegaro de forma segura via rede,
no sendo facilmente capturadas por sniffers e outros programas de monitorao que possam
estar instalados na rota entre voc e o servidor.
OBS2: possvel especicar a senha na varivel CVSROOT usando a sintaxe semelhante a
usada no ftp:
export CVSROOT=:ext:michelle:senha@cvs.cipsga.org.br:/var/lib/cvs
Entretanto isto no recomendado, pois os processos da mquina podero capturar facilmente
a senha (incluindo usurios normais, caso a mquina no esteja com patches de restries de
acesso a processos congurada, que o padro em quase todas as distribuies de Linux).
17.2.4 pserver (password server)
Este um mtodo de acesso remoto que utiliza um banco de dados de usurios senhas para
acesso ao repositrio. A diferena em relao ao mtodo de acesso ext que o pserver roda atra-
vs de um servidor prprio na porta 2401. O acesso dos usurios (leitura/gravao) no repo-
sitrio pode ser feita tanto atravs do banco de dados de usurios do sistema (/etc/passwd)
como atravs de um banco de dados separado por repositrio.
Captulo 17. CVS 286
Agrande vantagemdeste segundo mtodo que cada projeto poder ter membros comacessos
diferenciados; o membro x poder ter acesso ao projeto sgml mas no ao projeto focalinux;
ou o usurio y poder ter acesso de gravao (para trabalhar no projeto focalinux) mas
somente acesso de leitura ao projeto sgml.
Este o mtodo de acesso preferido para a criao de usurios annimos (uma vez que o
administrador de um servidor que hospede muitos projetos no vai querer abrir um acesso
annimo via ext para todos os projetos).
Tambm existe a vantagem que novos membros do projeto e tarefas administrativas so feitas
por qualquer pessoa que possua acesso de gravao aos arquivos do repositrio.
17.2.5 Congurando um servidor pserver
Ativando o servidor pserver
Para ativar o pserver (caso ainda no o tenha feito). Execute o comando dpkg-reconfigure
cvs e selecione a opo Ativar o servidor pserver. Uma maneira de fazer isso auto-
maticamente modicando o arquivo /etc/inetd.conf adicionando a seguinte linha:
# na Debian
cvspserver stream tcp nowait.400 root /usr/sbin/tcpd /usr/sbin/cvs-pserver
# em outras Distribuies
cvspserver stream tcp nowait root /usr/bin/cvs cvs -f --allow-root=/var/lib/cvs pserver
Na Debian, o cvs iniciado atravs do script /usr/sbin/cvs-pserver que checa
os binrios e executa o cvs para todos os repositrios especicados no arquivo /etc
/cvs-pserver.conf.
Caso precise adicionar mais repositrios para acesso via pserver ou outro mtodo de acesso,
veja Criando um repositrio on page 290.
Voc tambm poder executar o mtodo pserver sob um usurio que no seja o root, para
isto, modique a entreada refernte ao usurio.grupo no inetd.conf e tenha certeza que o
daemon consegue fazer as operaes de suid/sgid no diretrio onde o repositrio se encontra.
Servidor pserver usando autenticao do sistema
Para usar o banco de dados de autenticao do sistema (/etc/passwd) para autenticar os
usurios remotos, primeiro tenha certeza que o servidor pserver est ativado (como descrito em
Ativando o servidor pserver on this page. Repetindo o exemplo anterior, a usuria Michelle
dever ter uma conta em /etc/passwd para fazer acesso ao cvs:
export CVSROOT=:pserver:michelle@cvs.cipsga.org.br:/var/lib/cvs
cvs login
Captulo 17. CVS 287
Ser pedido a senha da usuria michelle. Entrando com a senha correta, o sistema retornar
para o aviso de comando. Uma mensagem ser mostrada caso a senha entrada seja incor-
reta. Daqui em diante, o resto da seo CVS normal e voc ter as permisses de acesso ao
repositrio de acordo com as suas permisses de acesso naquele diretrio.
OBS1: A senha poder ser passada junto com o login da mesma forma como o ftp. Veja a
observao em Congurando o mtodo ext on page 284.
OBS2: A desvantagem do mtodo pserver padro que a seo feita em texto plano, desta
forma, alguns cuidados podem ser tomados para tornar o sistema um pouco mais seguro. Um
deles dar /bin/false como shell de usurio (para desativar o login no sistema) ou usar o
mtodo de acesso descrito em Servidor pserver usando autenticao do sistema on the facing
page em combinao com este. Tenha conciencia das inuncias disso se a mquina for usada
para outras tarefas, como um servidor pop3 por exemplo.
Servidor pserver com autenticao prpria
Esta forma de acesso armazena os usurios em um banco de dados prprio, no requerendo a
criao de contas locais no arquivo /etc/passwd. Para criar um servidor deste tipo siga os
seguintes procedimentos:
1 Exporte a varivel CVSROOT apontando para o repositrio que deseja congu-
rar o acesso. Como isto uma congurao administrativa, assumo o mtodo
de acesso local sendo usada pelo usurio administrador do servidor: export
CVSROOT=/var/lib/cvs.
2 Crie um diretrio para trabalhar nos arquivos administrativos do repositrio: mkdir
/tmp/repos
3 Entre no diretrio criado acima e execute o comando: cvs checkout .
4 Quando terminar de baixar os arquivos, entre no subdiretrio CVSROOT, os arquivos de
congurao do repositrio se encontram l (para detalhes sobre cada um destes arqui-
vos, veja Arquivos administrativos em CVSROOT on page 296.
5 Edite o arquivo config e mude a varivel SystemAuth para no. Isto diz ao servidor
pserver no usar os arquivos de autenticao do sistema, mas a invs disso usar seu banco
de dados prprio. Em algumas instalaes, caso exista o arquivo passwd no repositrio,
o pserver automaticamente o utiliza ao invs do /etc/passwd.
6 Crie um arquivo passwd no diretrio CVSROOT o formato deste arquivo :
usuario:senha:usuario_local
Onde:
usuario Nome da conta de usurio que far acesso ao CVS.
senha Senha que ser usada pelo usurio. Ela dever ser criptografada usando o al-
goritmo crypt. O comando mkpasswd senha pode ser usado para gerar a senha
criptografada. Caso este campo seja deixado em branco, nenhuma senha de usurio
ser utilizada. O utilitrio mkpasswd est presente no pacote whois na Debian.
usuario_local Usurio local que ter suas permisses mapeadas ao usurio do CVS.
Como a conta de usurio do cvs no existe no sistema, necessrio que o sistema
tenha uma maneira de saber que nvel de acesso este usurio ter. Caso no crie este
usurio ou ele seja invlido, voc ter erros do tipo : no such user no momento
Captulo 17. CVS 288
que zer o cvs login. Uma forma segura de se fazer isto, criar uma conta de
usurio *somente* com acesso aos arquivos do CVS, sem shell e senha. Isto permi-
tir mapear a UID/GID do usurio criado com o acesso do CVS sem comprometer a
segurana do sistema de arquivos. Isto pode ser feito atravs do seguinte comando:
adduser --disabled-password --disabled-login usuario
necessrio especicar um diretrio home do usurio, pois o servidor cvs precisa
ter acesso ao arquivo /home/do/cvs/.cvsignore. OBS1: Mais uma vez: Leve
sempre em conta a forma que os outros servios em sua mquina esto congu-
rados (como eles fazem acesso, permisses de acesso, diretrios onde gravam ar-
quivos, so algumas delas) antes de escolher como um servio novo na mquina
funcionar. Isto poder modicar ou deixar vulnervel a segurana de sua instala-
o. OBS2: Permita que os usurios somente tenham acesso a mquina via CVS.
OBS3: Certique-se sempre que o dono/grupo do repositrio seja root.src (ou
outro grupo que tenha criado) adicione somente usurios de conana no grupo
src para criar novos projetos. Exemplos:
gleydsonm:K32dk1234k:cvsuser
anonymous::pooruser
O usurio cvs gleydsonm quando logar no cvs, ter as permisses de acesso do usu-
rio cvsuser do sistema. OBS1: Certique-se que o usurio local possui permisses de
gravao no diretrio do CVS, caso contrrio ele no poder fazer commits. Lembre-
se que as permisses de leitura/gravao do usurio sero controladas atravs de
arquivos do prprio pserver, mas tambm necessria a permisso de gravao do
usurio no repositrio. Isto poder ser feito atravs de grupos de sistema e garante
uma dupla camada de segurana. OBS2: Caso tenha preferido usar o pserver
sob um usurio diferente de root e esteja obtendo a mensagem setgid failed:
Operation not permitted, signica que o servidor CVS no consegue mudar
para o grupo referente ao usado no diretrio do repositrio. Verique se as permis-
ses esto adequadas e se o grupo do usurio CVS no /etc/passwd o mesmo
que especicou para acesso ao repositrio.
7 Para dar direito de leitura ao repositrio, crie um arquivo chamado readers e adicione
os nomes de usurios que tero acesso ao repositrio (um por linha). O nome que dever
ser usado o nome do usurio de CVS e no do sistema (usurio gleydsonm, segundo
o exemplo). Exemplo:
gleydsonm
anonymous
8 Para dar direito de gravao ao repositrio, crie um arquivo chamado writers. Seu
formato idntico ao arquivo readers. Exemplo:
gleydsonm
macan
otavio
hmh
kov
9 Pronto, o acesso a CVS usando um banco de dados prprio est pronto! basta dar o
commit nos arquivos, adicionar os arquivos readers, writers e passwd no reposi-
trio (veja Adicionando um arquivo ao mdulo CVS do servidor on page 293) para o
servidor de CVS para te-lo funcionando. Note que em verses mais novas do CVS, no
Captulo 17. CVS 289
possvel transferir o arquivo passwd via rede, ento ser necessrio cria-lo manual-
mente dentro do repositrio do servidor. OBS: O arquivo passwd no transferido pelo
commit por motivos de segurana, pois ele contm senhas que podem ser capturadas e
usada por pessoas maliciosas. Ser necessrio transferi-lo manualmente para o reposit-
rio do servidor remoto (voc ter que ser o usurio root ou ter permisses adequadas). O
recomendvel utilizar o scp (scp on page 261) para realizar transferncias seguras. .
O mtodo de acesso do CVS aos arquivos readers e writers restritiva, portanto se um
nome de usurio existir no arquivo readers e writers o que valer ser o menor nvel de
acesso. Vendo os exemplos acima, os usurios gleydsonm e anonymous tero somente acesso a
leitura do repositrio e macan, otavio, hmh, kov acesso de leitura e gravao.
17.2.6 gssapi
Quando o CVS compilado com o suporte a Kerberos 5, ele tenta estabelecer automaticamente
uma conexo segura usando este mtodo. Este mtodo funciona somente se o CVS estiver
compilado com o suporte a Kerberos (opo --with-gssapi).
17.3 Criando projetos para serem usados no CVS
Esta seo descreve todos os passos necessrios para colocao de um projeto para ser desen-
volvido atravs do CVS, os comandos do cvs, consideraes a respeito dos comandos e sua
utilizao atravs de exemplos didticos.
17.3.1 Repositrio
Um repositrio CVS o local que armazena mdulos e tambm os arquivos administrativos
(que contm permisses, etc) so armazenados em um subdiretrio chamado CVSROOT.
O acesso a um repositrio feito atravs de parmetros especicados na varivel CVSROOT
ou pela opo -d repositrio do cvs. Veja Servidor de CVS - congurando mtodos de acesso ao
repositrio on page 283 para ver exemplos de mtodos de acesso.
O Repositrio pode conter um ou mais mdulos, cada mdulo representa um projeto no servi-
dor, criado aps o uso do comando import. Segue umexemplo da estrutura de umrepositrio
CVS:
var/lib
|
+- cvs
|- CVSROOT
|- projeto1
+- projeto2
Captulo 17. CVS 290
O subdiretrio cvs o repositrio (veja o subdiretrio CVSROOT dentro dele) e os diretrios
dentro dele projeto1 e projeto2 so os mdulos criados atravs do comando cvs import
...(veja Adicionando um novo projeto on page 292).
Para acessar o projeto do CVS, ento denido o repositrio que tem permisses de acesso
na varivel CVSROOT e ento executado um comando (checkout, update, commit, etc) no
mdulo que desejamos utilizar:
export CVSROOT=:ext:anonymous@servidor.org.br:/var/lib/cvs (<- Repositrio "cvs")
cvs checkout projeto1 (<- mdulo que desejamos pegar do servidor)
Nas sees seguintes sero explicados cada um dos comandos usados para trabalhar com um
projeto no cvs.
17.3.2 Criando um repositrio
Para adicionar um novo repositrio no sistema, edite o arquivo /etc/cvs-pserver.conf e
dena o nome de cada repositrio na varivel CVS_PSERV_REPOS separados por : (exem-
plo: CVS_PSERV_REPOS=/var/lib/cvs:/var/lib/cvs2).
Feito isso execute o comando cvs-makerepos para que os diretrios especicados no arquivo
/etc/cvs-pserver.conf sejam criados com as devidas permisses.
Para adicionar manualmente um repositrio (/var/lib/cvs), execute os seguintes passos:
1 Execute o comando cvs -d /var/lib/cvs init (para criar o repositrio e os arqui-
vos administrativos que cam armazenados dentro de CVSROOT.
2 Mude as permisses do diretrio para sgid com: chmod 2775 /var/lib/cvs.
3 Mude o dono/grupo com o comando: chown root.src /var/lib/cvs
4 Opcional: caso utilize o mtodo de acesso pserver ser necessrio adicionar a opo
--allow-root=/var/lib/cvs na linha que inicia o servidor pserver. Este parme-
tro deve ser usada para cada repositrio adicionado no servidor.
A partir de agora, seu repositrio j est pronto para ser utilizado.
17.3.3 Logando no servidor de CVS via pserver
Quando usado o mtodo de acesso pserver (pserver (password server) on page 285), ne-
cessrio fazer para ter acesso ao repositrio. Por exemplo, para acessar o repositrio /var
/lib/cvs no servidor servidor.org.br:
export CVSROOT=:pserver:anonymous@servidor.org.br:/var/lib/cvs
cvs login
ou
cvs -d :pserver:anonymous@servidor.org.br:/var/lib/cvs login
Captulo 17. CVS 291
Ento ser solicitada a senha para ter acesso ao sistema. Note que toda a seo de cvs ocorre
por comandos interativos que logo aps concludos retornam para o interpretador de coman-
dos. O restante desta seo descrever estes comandos e como utiliza-los de maneira eciente.
OBS: O uso da varivel CVSROOT torna a utilizao bastante prtica, assim no precisamos
especicar o repositrio, mtodo de acesso, etc. toda vez que usar um comando do cvs.
17.3.4 Encerrando uma seo de CVS
Embora que no seja necessrio, aps o uso do cvs recomendvel executar o logout do servi-
dor para encerrar sua conexo com a mquina remota.
# (assumindo que a varivel CVSROOT est definida)
cvs logout
ou
cvs -d :pserver:anonymous@servidor.org.br:/var/lib/cvs logout
OBS: Para os paranicos importante encerrar uma seo de CVS, pois ele possui alguns bugs
e um spoong pode tornar possvel o uso de uma seo deixada aberta.
17.3.5 Baixando arquivos
O comando checkout (ou co) usado para fazer isto. Para utiliz-lo seguindo os exemplos
anteriores:
mkdir /tmp/cvs
cd /tmp/cvs
cvs checkout modulo
cvs -d :pserver:anonymous@servidor.org.br:/var/lib/cvs
Ser criado um subdiretrio chamado modulo que contm todos os arquivos do servidor de
CVS remoto. necessrio apenas que tenha acesso de leitura ao servidor de CVS para executar
este comando. Voc pode usar a opo -z [num] para ativar a compactao na transferncia
dos arquivos, isso acelera bastante a transferncia em conexes lentas: cvs -z 3 checkout
modulo.
Tambm possvel especicar apenas subdiretrios de um mdulo para baixa-lo via CVS e a
estrutura de diretrios criada localmente ser idntica ao do servidor remoto.
Captulo 17. CVS 292
17.3.6 Adicionando um novo projeto
Use o comando cvs import para adicionar um novo projeto ao CVS. As entradas nos arqui-
vos administrativos sero criadas e o projeto estar disponvel para utilizao dos usurios. A
sintaxe bsica do comando import a seguinte:
cvs import [opes] [dir_modulo] [tag] start
Para adicionar o projeto focalinux que reside em /usr/src/focalinux ao cvs:
# Primeiro exportamos o CVSROOT para dizer onde e qual repositrio acessar
export CVSROOT=:ext:usuario@servidor.com.br:2401/var/lib/cvs
cd /usr/src/focalinux
cvs import documentos/focalinux tag_modulo start
Por padro o import sempre utiliza a mscara * para fazer a importao dos ar-
quivos do diretrio atual. O projeto focalinux ser acessado atravs de $CVS-
ROOT/documentos/focalinux (cvs checkout documentos/focalinux), ou seja, /var
/lib/cvs/documentos/focalinux no servidor CVS ter a cpia do focalinux.
tag_modulo dene o nome que ser usado como identicador nas operaes comos arquivos
do CVS (pode ser usado focalinux em nosso exemplo). O parmetro start diz para criar o
mdulo.
OBS: Por segurana, o diretrio que contm os arquivos dever ser sempre um caminho re-
lativo na estrutura de diretrios, ou seja, voc precisar entrar no diretrio pai (como /usr
/src/projeto) para executar o cvs import. No permitido usar / ou .., isto probe a
descida em diretrios de nvel mais altos e srios incidentes de segurana em servidores CVS
mal congurados pelo Administrador.
17.3.7 Sincronizando a cpia remota com a cpia local
Este comando sincroniza a cpia remota do CVS (ou arquivo) com a cpia local que est traba-
lhando em sua mquina. Quando se trabalha nativamente no CVS em equipe recomendado
a utilizao deste comando pois algum pode ter modicado o arquivo antes de voc, ento
uma incompatibilidade entre sua verso e a nova poderia causar problemas.
Supondo que tenha acabado de modicar o arquivo main.c do mdulo cvsproj, ento antes
de fazer o commit (Enviando as mudanas para o servidor remoto on the next page) use o
update:
cvs update main.c
ou
cvs -d :ext:usuario@servidor.com.br:2401/var/lib/cvs update main.c
Captulo 17. CVS 293
Aps alguns segundos, sua cpia local car sincronizada coma cpia remota. Caso ele mostre
alguma mensagem de sada, verique o arquivo para solucionar qualquer conito e ento
envie o arquivo para o servidor remoto (Enviando as mudanas para o servidor remoto on
this page).
Voc pode fazer o update de mais arquivos usando referncias globais (*, ? ou []).
17.3.8 Enviando as mudanas para o servidor remoto
O comando commit (ou ci), envia as mudanas feitas nos arquivos locais para o servidor
remoto. Um exemplo de commit no arquivo main.c:
cvs commit main.c
cvs commit main.?
cvs commit *
O editor padro do sistema ser aberto e pedir uma descrio das modicaes para o com-
mit. Esta descrio ser usada como referncia sobre as atualizaes feitas em cada etapa do
desenvolvimento. A mensagem tambm pode ser especicada usando a opo -m mensa-
gem, principalmente quando o texto explicando as alteraes pequeno.
Para mudar o editor de texto padro que ser usado pelo cvs, altere a varivel de ambiente
EDITOR ou especique o editor que deseja usar na linha de comando com a opo -e editor:
cvs commit -e vi main.c
17.3.9 Adicionando um arquivo ao mdulo CVS do servidor
Aps criar/copiar o arquivo para seu diretrio de trabalho, use o comando add para fazer isto.
O arquivo ser enviado ao servidor, bastando apenas executa o commit para salvar o arquivo:
cvs add main.h
cvs commit main.h
17.3.10 Adicionando um diretrio ao mdulo CVS do servidor
O mtodo para adicionar um diretrio com arquivos semelhante ao de adicionar apenas
arquivos ao cvs. O nico ponto que deve se seguido que primeiro deve ser adicionado o
diretrio (com o cvs add) salvar no servidor remoto (cvs commit) e depois adicionar os
arquivos existentes dentro dele (assim como descrito em Adicionando um arquivo ao mdulo
CVS do servidor on the current page). Para adicionar o diretrio teste e seus arquivos no
servidor cvs remoto:
Captulo 17. CVS 294
cvs add teste
cvs commit -m "Adicionado" teste
cvs add teste/*
cd teste
cvs commit -m "Adicionados" .
Os dois primeiros comandos agendam o diretrio teste e fazem o commit no diretrio re-
moto. Os dois ltimos, enviam os arquivos existentes dentro deste diretrio para o servidor
remoto.
17.3.11 Removendo um arquivo do mdulo CVS remoto
O comando para fazer isto o remove. Primeiro use o rm para remover o arquivo/diretrio
de sua cpia local, depois execute o remove seguido de commit para conrmar a remoo do
arquivo:
cvs remove main.h
cvs commit main.h
17.3.12 Removendo um diretrio do mdulo CVS remoto
Para remover um diretrio, primeiro remova todos os arquivos existentes dentro dele com
o comando rm e salve para o servidor (seguindo os mtodos descritos em Removendo um
arquivo do mdulo CVS remoto on this page). O CVS no remove diretamente diretrios
vazios, uma maneira de contornar isto usar o update ou commit seguido da opo -P para
ignorar diretrios vazios. Ento a cpia remota do diretrio ser removida do servidor:
rm -f teste/*
cvs remove teste/.
cvs commit teste/.
cd ..
cvs checkout modulo
Depois do checkout, o subdiretrio teste ter sido removido.
17.3.13 Dizendo que o mdulo atual no est mais em uso
O comando release faz esta funo. Ele no requerido, mas caso voc tenha feito modi-
caes que ainda no foram salvas no servidor de cvs (commit), ele alertar de arquivos
modicados e perguntar se deseja continuar. Registrando tambm o abandono das modica-
es no histrico do cvs. O comando pode ser acompanhado de -d para remover o mdulo
anteriormente baixado com o commit:
Captulo 17. CVS 295
cvs release modulo
cvs release -d modulo
O release retorna os seguintes cdigos quando verica que as duas cpias (local e remota)
no esto sincronizadas:
U ou P Existe uma verso nova do arquivo no repositrio. Para corrigir isso, execute o co-
mando update.
A O arquivo no foi adicionado ainda ao repositrio remoto. Se apagar o repositrio local,
este arquivo no ser adicionado. Para corrigir isto, executa o comando add do cvs.
R O arquivo foi removido localmente, mas no foi removido do servidor remoto. Use os pro-
cedimentos em Removendo um arquivo do mdulo CVS remoto on the preceding page
para corrigir a situao.
M O arquivo est modicado localmente e no foi salvo ainda no servidor. Use os procedi-
mentos em Sincronizando a cpia remota com a cpia local on page 292 e Enviando as
mudanas para o servidor remoto on page 293 para salvar o arquivo.
? O arquivo est em seu diretrio de trabalho mas no tem referncias no repositrio remoto
e tambm no est na lista de arquivos ignorados do CVS.
17.3.14 Visualizando diferenas entre verses de um arquivo
Com o comando diff possvel visualizar que diferenas o arquivo que est sendo editado
possui em relao ao arquivo do repositrio remoto. Outra funcionalidade til do diff
comparar 2 verses de arquivos do mesmo repositrio CVS. Exemplos:
cvs diff main.c Verica as diferenas entre o arquivo main.c local e remoto.
cvs diff -u -r 1.1 -r 1.2 main.c Mostra as diferenas em formato unicado para mostrar as dife-
renas entre as verses 1.1 e 1.2 do arquivo main.c.
17.3.15 Visualizando o status de verso de arquivos
O comando status permite vericar que verses do arquivo especicado est disponvel lo-
calmente, remotamente, qual a verso inicial do arquivo no repositrio, sticky tag. Exemplos:
cvs status main.c Verica o status do arquivo main.c.
cvs status -v main.c Mostra o status do arquivo main.c, adicionalmente mostra tambm as
tags existentes no arquivo (verso inicial, verso do repositrio).
17.3.16 Outros utilitrios para trabalho no repositrio
Alm dos comandos do cvs descritos aqui, existem comandos no pacote cvsutils que au-
xiliam desde quem est aprendendo a utilizar o CVS (com o comando cvsdo para simular
algumas operaes de adio/remoo de arquivos) at prossionais que usam o programa
no dia a dia (cvsu, cvsco, cvschroot).
Captulo 17. CVS 296
17.4 Arquivos administrativos em CVSROOT
Esta seo descreve a funo de cada um dos arquivos administrativos, isto pode ser til na
congurao e personalizao do CVS e de seu repositrio.
Para no alongar muito o captulo, procurei colocar uma breve descrio da funo de cada
um deles, o comentrios e exemplos existentes nos arquivos oferecem uma boa compreenso
do seu contedo.
17.4.1 config
Este arquivo segue os padres do arquivos de congurao e possui alguns parmetros que
controlam o comportamento do CVS. Segue uma lista deles:
SystemAuth Dene se ser utilizado a autenticao via /etc/passwd quando o mtodo pser-
ver for utilizado. Note que se o arquivo passwd for criado no CVSROOT, o SystemAuth
ser denido automaticamente para no. Exemplo: SystemAuth=yes.
LockDir Especica o diretrio onde sero gravados os arquivos de lock. Caso no seja especi-
cado, ser usado o diretrio do CVS. Exemplo: LockDir=/var/lock/cvs
TopLevelAdmin Permite criar ou no um diretrio chamado CVS no root do diretrio de tra-
balho durante o cvs checkout.
LogHistory Utiliza opes para especicar o que ser registrado nos arquivos de log do CVS.
TOFEWGCMAR ou all Registra todas as operaes nos logs do cvs.
TMAR Registra todas as operaes que modicam os arquivos ",v"
17.4.2 modules
Especica opes e programas externos que sero usados durante a execuo de comandos no
repositrio CVS.
17.4.3 cvswrappers
Este arquivo dene aes de controle de caractersticas de arquivos, de acordo com seu nome.
Pode ser tambm denidas aes atravs de arquivos .cvswrappers.
17.4.4 commitinfo
Dene programas para fazer uma checagem baseada no diretrio e dizer se o commit permi-
tido.
17.4.5 verifymsg
Especica o programa usado para vericar as mensagens de log.
Captulo 17. CVS 297
17.4.6 loginfo
Programa que executado aps o commit. Ele pode ser usado para tratar a mensagem de log
e denir onde ela ser gravada/enviada, etc.
17.4.7 cvsignore
Tudo que constar neste arquivo no ser gravado (commit) no cvs. Referncias globais podem
ser usadas para especicar estes arquivos. Veja a info page do cvs para detalhes sober seu
formato.
Pode tambm ser especicado atravs de arquivos .cvsignore.
17.4.8 checkoutlist
Especica os arquivos que deseja manter sobre o controle do CVS que se encontram em
CVSROOT. Se adicionar um script adicional, ou qualquer outro arquivo no diretrio CVSROOT
ele dever constar neste arquivo.
17.4.9 history
usado para registrar detalhes do comando history do CVS.
17.5 Clientes de CVS
Esta seo traz alguns programas cliente em modo texto/grco e visualizadores de reposit-
rios via web. Eles facilitam o trabalho de controle de reviso por parte de iniciantes e exibili-
dade para pessoas mais experientes, alm de ter uma interface de navegao disponvel para
todos os interessados em fazer pesquisas no repositrio.
17.5.1 cvs
Este o cliente Unix padro, bastante poderoso e que opera em modo texto. As explicaes
neste captulo do guia assumem este cliente de cvs, ento as explicaes sobre sua utilizao
se encontra em Criando projetos para serem usados no CVS on page 289 e os parmetros de
linha de comando em Opes de linha de comando on page 282
altamente recomendvel a leitura caso deseje utilizar um cliente de cvs grco, pois os
conceitos so os mesmos.
Captulo 17. CVS 298
17.5.2 gcvs - Linux
Este um cliente CVS em GTK+Python para Linux que interage externamente com o cliente
cvs externo, todas as opes do cvs esto disponveis atravs de checkboxes nas telas de co-
mando, incluindo suporte a compactao, visualizador grco da rvore de releases, histrico,
diffs, etc.
Sua instalao bastante fcil, instale o programa com apt-get install gcvs e execute
o programa atravs do menu do sistema ou do terminal. Utilize os seguintes procedimentos
para congurar e utilizar o programa:
1 Dena o repositrio CVSROOT atravs do menu Admin/Preferences. Selecione o mtodo
de acesso, entre com o login, servidor e repositrio.
Exemplo: :pserver:anonymous@servidor:/var/lib/cvs
O formato deve ser EXATAMENTE como o usado na varivel CVSROOT no shell, in-
cluindo os :. Caso tenha erros de login, verique o valor de CVSROOT cuidadosamente
antes de contactar o administrador de sistemas!
2 Agora faa o login no sistema em: Admin, Login. Note que o status de todas as operaes
do cvs so mostradas na janela de status que ca na parte inferior da tela.
3 Crie um diretrio que ser usado para armazenar os fontes baixados do CVS, por exem-
plo: mkdir ~/projetos
4 Acesse o menu Create, Checkout Module para baixar o projeto do CVS para sua mquina
local. Ele ir te pedir o nome de diretrio para onde o cdigo fonte do servidor CVS ser
baixado. Digite ~/projetos ou outro diretrio que foi criado no passo anterior. OBS:
No utilize o nome "cvs" para o diretrio local, pois o gcvs oculta automaticamente
pois os arquivos administrativos de controle cam neste local.
5 Altere o diretrio padro do gcvs para o diretrio onde baixou o projeto (~
/projetos)clicando no boto set no topo da coluna esquerda do gcvs.
6 Para enviar um arquivo modicado de volta ao servidor, selecione os arquivos, clique
em Modify, Commit Selection, entre com a mensagem descrevendo as alteraes e clique
em OK. Note que os arquivos modicados sero identicados por um cone vermelho
e seu status ser Mod. File (arquivo modicado).
7 Se desejar adicionar um novo projeto no CVS, entre em Create, Import Module, entre no
diretrio que deseja adicionar como um projeto no servidor de CVS. Aps isto ser feita
uma checagem e mostrada uma tela de possveis problemas que podem ocorrer durante
a importao do novo projeto. Na prxima tela, digite o nome do mdulo e caminho no
servidor remoto no primeiro campo, no segundo campo a mensagem de log para adici-
onar o projeto ao servidor. Em Vendor tag especique o nome do projeto e sua verso
logo abaixo. Clique em OK e aguarde a transferncia dos arquivos para o servidor.
Para maiores detalhes sobre a criao de novos projetos no servidor de CVS, veja Adi-
cionando um novo projeto on page 292. OBS: Voc dever ter permisso de gravao
para criar um novo projeto no servidor CVS.
8 A partir de agora voc poder explorar as funes do programa e fazer uso das funes
habituais do CVS. Todas as funes de operao e opes extras do CVS esto disponveis
na interface grca, basta se acostumar com sua utilizao.
Aps isto, explore bastante as opes do programa. Todas as funcionalidades do CVS esto
organizadas entre os menus do programa. Caso no entenda bem as funes do programa,
Captulo 17. CVS 299
leia atentamente Criando projetos para serem usados no CVS on page 289 e tambm no
deixe de consultar detalhes na info page do cvs.
17.5.3 WinCVS - Windows
Este um cliente CVS em Python para Windows equivalente ao gcvs para Linux.
Suas funcionalidades e recomendaes so idnticas aos do gcvs. Este cliente
pode ser baixado de: http://telia.dl.sourceforge.net/sourceforge/cvsgui/
WinCvs13b13.zip e o Python para Windows de http://starship.python.net/crew/
mhammond/downloads/win32all-153.exe.
Para sua utilizao, as explicaes em gcvs - Linux on the facing page so totalmente vlidas.
17.5.4 MacCVS - Macintosh (PPC)
Idntico ao gcvs, pode ser baixado de http://telia.dl.sourceforge.net/
sourceforge/cvsgui/MacCvsX-3.3a1-1.dmg.
17.5.5 viewcvs
Este um visualizador de repositrios CVS via web, ele precisa apenas de um servidor web
instalado com suporte a CGI. Para instalar, execute o comando apt-get install viewcvs
e siga os passos para congurar programa. Para adequar melhor o viewcvs ao seu sistema,
edite o arquivo /etc/viewcvs/viewcvs.conf.
Oviewcvs possui uma interface que se parece com a navegao de um diretrio de ftp, recur-
sos como a extrao de diffs coloridos entre verses de um arquivo selecionado, visualizao
de commits (com data, log do commit, usurio, etc.), classicao da listagem exibida.
OBS:Leve em considerao as implicaes de segurana impostas por aplicativos cgi sendo
executados em seu sistema. Veja Apache on page 175 para entender melhor o assunto.
17.6 Exemplo de uma seo CVS
Nota: este exemplo apenas didtico, no foi feita nenhuma modicao real no contedo do
repositrio do dillo :-)
# Definir o CVSROOT
export CVSROOT=:pserver:gleydson@ima.cipsga.org.br:/var/lib/cvs
# entrar no servidor
gleydson@host:/tmp/teste$ cvs login
Logging in to :pserver:gleydson@ima.cipsga.org.br:2401/var/lib/cvs
Captulo 17. CVS 300
CVS password: <password>
gleydson@oberon:/tmp/teste$
# Pegar o mdulo "dillo do cvs"
cvs -z 3 co dillo
cvs server: Updating dillo
cvs server: Updating dillo/CVSROOT
U dillo/CVSROOT/checkoutlist
U dillo/CVSROOT/commitinfo
U dillo/CVSROOT/config
U dillo/CVSROOT/cvswrappers
U dillo/CVSROOT/editinfo
U dillo/CVSROOT/loginfo
U dillo/CVSROOT/modules
U dillo/CVSROOT/notify
U dillo/CVSROOT/rcsinfo
U dillo/CVSROOT/taginfo
U dillo/CVSROOT/verifymsg
cvs server: Updating dillo/CVSROOT/Emptydir
cvs server: Updating dillo/dillo
U dillo/dillo/AUTHORS
U dillo/dillo/COPYING
U dillo/dillo/ChangeLog
U dillo/dillo/ChangeLog.old
U dillo/dillo/INSTALL
U dillo/dillo/Makefile.am
U dillo/dillo/Makefile.in
U dillo/dillo/NEWS
U dillo/dillo/README
U dillo/dillo/aclocal.m4
U dillo/dillo/config.h.in
U dillo/dillo/configure
U dillo/dillo/configure.in
U dillo/dillo/depcomp
U dillo/dillo/dillorc
U dillo/dillo/install-sh
U dillo/dillo/missing
U dillo/dillo/mkinstalldirs
U dillo/dillo/stamp-h.in
cvs server: Updating dillo/dillo/doc
U dillo/dillo/doc/Cache.txt
U dillo/dillo/doc/Cookies.txt
U dillo/dillo/doc/Dillo.txt
U dillo/dillo/doc/Dw.txt
Captulo 17. CVS 301
U dillo/dillo/doc/DwImage.txt
U dillo/dillo/doc/DwPage.txt
...
# Modifica o arquivo do projeto
cd /dillo/dillo/doc
vi Cache.txt
# Update no arquivo para atualizar a cpia local com a remota
cvs update Cache.txt
M Cache.txt
gleydson@host:/tmp/teste
# Damos o commit no arquivo
cvs commit Cache.txt
# Saimos do sistema
cvs logout
Captulo 17. CVS 302
303
Captulo 18
SAMBA
Este captulo descreve a congurao, utilizao, aplicao, integrao de redes Windows e
Linux atravs do SAMBA. Entre as explicaes de cada opo, so passados detalhes impor-
tantes relacionados com seu funcionamento, performance e impactos de segurana sobre o
servidor como um todo.
Uma seo foi especialmente separada para os mais paranicos (como eu) conhecerem, combi-
nar e aplicar as restries de forma mais adequada a congurao da mquina.
18.1 Introduo
O SAMBA um servidor e conjunto de ferramentas que permite que mquinas Linux e
Windows se comuniquem entre si, compartilhando servios (arquivos, diretrio, impresso)
atravs do protocolo SMB (Server Message Block)/CIFS (Common Internet File System), equi-
valentes a implementao NetBEUI no Windows. O SAMBA uma das solues em ambiente
UNIX capaz de interligar redes heterognea.
Na lgica da rede Windows o NetBEUI o protocolo e o NETBIOS dene a forma com que
os dados so transportados. No correto dizer que o NetBIOS o protocolo, como muitos
fazem.
Com o SAMBA, possvel construir domnios completos, fazer controle de acesso a nvel de
usurio, compartilhamento, montar um servidor WINS, servidor de domnio, impresso, etc.
Na maioria dos casos o controle de acesso e exibio de diretrios no samba mais minucioso
e personalizvel que no prprio Windows.
O guia Foca GNU/Linux documentar como instalar e ter as mquinas Windows de dife-
rentes verses (Win3.11, Win95, Win95OSR/2, Win98, XP, WinNT, W2K) acessando
e comunicando-se entre si em uma rede NetBEUI. Estas explicaes lhe podero ser indis-
pensveis para solucionar problemas, at mesmo se voc for um tcnico especialista em redes
Windows e no tem ainda planos de implementar um servidor SAMBA em sua rede.
Captulo 18. SAMBA 304
18.1.1 Verso documentada
A verso do servidor samba documentada neste captulo do guia a 2.2.
18.1.2 Histria
Andrew Tridgell - Desenvolveu o samba porque precisava montar um volume Unix em sua
mquina DOS. Inicialmente ele utilizava o NFS, mas um aplicativo precisava de suporte Net-
BIOS. Andrew ento utilizou um mtodo muito avanado usado por administradores para
detectar problemas: escreveu um sniffer de pacotes que atendesse aos requerimentos para ter
uma nica funo: analisar e auxilia-lo a interpretar todo o trfego NetBIOS da rede.
Ele escreveu o primeiro cdigo que fez o servidor Unix aparecer como umservidor de arquivos
Windows para sua mquina DOS que foi publicado mais ou menos emmeados de 1992 quando
tambm comeou a receber patches. Satisfeito com o funcionamento de seu trabalho, deixou
seu trabalho de lado por quase 2 anos. Um dia, ele resolveu testar a mquina Windows de
sua esposa com sua mquina Linux, e cou maravilhado com o funcionamento do programa
que criou e veio a descobrir que o protocolo era documentado e resolveu levar este trabalho a
fundo melhorando e implementando novas funes.
OSAMBAatualmente umservidor fundamental para a migrao de pequenos grupos de tra-
balho grandes domnios com clientes mixtos. Nenhum servidor de rede NetBEUI conhecido
proporciona tanta exibilidade de acesso a clientes como o SAMBA para compartilhamento de
arquivos/impresso emrede. As funes de segurana que foramadicionadas ao SAMBAhoje
garantem um controle mais rigoroso que a prpria implementao usada no Windows NT, in-
cluindo o servios de diretrios, mapeamento entre IDs de usurios Windows comLinux, PDC,
pers mveis e uma coisa que inclusive apresenta problemas no Windows: compatibilidade
total entre as diferentes implementaes de verses do Windows.
Sua congurao pode receber ajustes nos pelo administrador nos soquetes TCP de transmis-
so, recepo, cache por compartilhamento, conguraes fsicas que afetam a performance
de rede. Seu cdigo vem sendo melhorado constantemente por hackers, obtendo excelente
performance com hardwares mais obsoletos. O guia tem por objetivo abordar estes temas e
permitir que voc congure seu sistema com uma performance batendo a mesma alcanada
em um servidor NT dedicado.
18.1.3 Contribuindo
Para contribuir com o desenvolvimento do samba, veja os detalhes na pgina:
http://us1.samba.org/samba/devel/
Caso encontre um bug no programa, ele poder ser relatado se inscrevendo na lista de discus-
so samba-technical-request@lists.samba.org. Aps responder a mensagem de conrmao,
envie um relato detalhado do problema encontrado no programa.
Captulo 18. SAMBA 305
18.1.4 Caractersticas
Segue abaixo algumas funcionalidades importantes de aplicaes do samba e seu conjunto de
ferramentas:
Compartilhamento de arquivos entre mquinas Windows e Linux ou de mquinas
Linux (sendo o servidor SAMBA) com outro SO que tenha um cliente NetBEUI (Ma-
cintosh, OS/2, LanManager, etc).
Montar um servidor de compartilhamento de impresso no Linux que receber a im-
presso de outras mquinas Windows da rede.
Controle de acesso aos recursos compartilhados no servidor atravs de diversos mtodos
(compartilhamento, usurio, domnio, servidor).
Controle de acesso leitura/gravao por compartilhamento.
Controle de acesso de leitura/gravao por usurio autenticado.
Possibilidade de denir contas de Convidados, que podem se conectar sem fornecer
senha.
Possibilidade de uso do banco de dados de senha do sistema (/etc/passwd), autentica-
o usando o arquivo de dados criptografados do samba, LDAP, PAM, etc.
Controle de cache e opes de tunning por compartilhamento.
Permite ocultar o contedo de determinados diretrios que no quer que sejam exibidos
ao usurio de forma fcil.
Possui congurao bastante exvel com relao ao mapeamento de nomes DOS =>
UNIX e vice versa, pgina de cdigo, acentuao, etc.
Permite o uso de aliases na rede para identicar uma mquina com outro nome e simular
uma rede NetBIOS virtual.
O samba possibilita ajuste no nas conguraes de transmisso e recepo dos pacotes
TCP/IP, como forma de garantir a melhor performance possvel de acordo com suas
instalaes.
Permite o uso do gerenciador de mensagem do Linux (Linpopup) para a troca de men-
sagens com estaes Windows via NetBios. Com a exibilidade do samba possvel
at redirecionar a mensagem recebida via e-mail ou pager.
Possui suporte completo a servidor WINS (tambm chamado de NBNS - NetBios Name
Service) de rede. A congurao bastante fcil.
Faz auditoria tanto dos acessos a pesquisa de nomes na rede como acesso a compartilha-
mentos. Entre os detalhes salvos esto a data de acesso, IP de origem, etc.
Suporte completo a controlador de domnio Windows (PDC).
Suporte quase completo a backup do controlador de domnio (BDC). At a verso 2.2 do
samba, o suporte a BDC parcial. Este cdigo provavelmente estar estvel at a verso
3.0.
Permite montar unidades mapeadas de sistemas Windows ou outros servidores Linux
como um diretrio no Linux.
Permite a congurao de recursos simples atravs de programas de congurao gr-
cos, tanto via sistema, como via web.
Permite executar comandos no acesso ao compartilhamento ou quando o acesso ao com-
partilhamento nalizado.
Com um pouco de conhecimento e habilidade de administrao de sistemas Linux,
possvel criar ambientes de auditoria e monitorao at monitorao de acesso a com-
Captulo 18. SAMBA 306
partilhamento em tempo real.
Entre outras possibilidades.
18.1.5 Ficha tcnica
Pacote samba
Outros utilitrios importantes para a operao do clientes samba.
smbclient - Ferramenta para navegao e gerenciamento de arquivos, diretrios e im-
pressoras compartilhados por servidores Windows ou samba.
smbfs - Pacote que possui ferramentas para o mapeamento de arquivos e diretrios com-
partilhados por servidores Windows ou samba em um diretrio local.
winbind - Daemon que resolve nomes de usurios e grupo atravs de um servidor
NT/SAMBA e mapeia os UIDs/GIDs deste servidor como usurios locais.
18.1.6 Requerimentos de Hardware
Processador 386 ou superior, 15 MB de espao em disco (no levando em conta os logs gerados
e espao para arquivos de usurios, aplicativos, etc.), 8 MB de memria RAM.
18.1.7 Arquivos de log criados
O daemon nmbd salva seus logs em /var/log/daemon.log (dependendo da diretiva de con-
gurao syslog do arquivo smb.conf) e em /var/log/samba/log.nmbd. Os detalhes de
acesso a compartilhamento so gravados no arquivo /var/log/samba/log.smbd (que pode
ser modicado de acordo com a diretiva log le no smb.conf, Log de acessos/servios on
page 314).
18.1.8 Instalao
Digite apt-get install samba smbclient smbfs para instalar o conjunto de aplicati-
vos samba. O pacote samba o servidor samba e os pacotes smbclient e smbfs fazem parte
dos aplicativos cliente. Caso deseje apenas mapear compartilhamentos remotos na mquina
Linux, instale somente os 2 ltimos pacotes.
18.1.9 Iniciando o servidor/reiniciando/recarregando a congurao
O servidor samba pode ser executado tanto via inetd como daemon:
inetd No modo inetd, o servidor de nomes nmbd ser carregado assim que for feita a primeira
requisio de pesquisa e car residente na memria. No caso de acesso a um compar-
tilhamento, o smbd ser carregado e ler a congurao em smb.conf a cada acesso do
cliente a um compartilhamento. Quando o samba opera via inetd, ele no usa o controle
Captulo 18. SAMBA 307
de acesso dos arquivos hosts.allow e hosts.deny. Veja Restringindo o acesso por
IP/rede on page 348 e Restringindo o acesso por interface de rede on page 349 para de-
talhes de como fazer o controle de acesso. Para reiniciar o samba digite killall -HUP
nmbd. No necessrio reiniciar o servio smbd, conforme foi explicado acima.
daemon Quando opera no modo daemon, ambos os daemons nmbd e smbd so carregados.
No caso de um acesso a compartilhamento, criado um processo lho do smbd que
nalizado assim que o compartilhamento no for mais usado. Para iniciar o samba
em modo daemon digite: /etc/init.d/samba start, para interromper o samba:
/etc/init.d/samba stop e para reiniciar: /etc/init.d/samba restart.
Se desejar mudar do modo daemon para inetd ou vice versa, edite o arquivo /etc/default
/samba e modique o valor da linha RUN_MODE= para daemons ou inetd. Uma forma de
fazer isso automaticamente executando o dpkg-reconfigure samba.
OBS: Como praticamente no existe diferena entre os modos de operao inetd e daemon para
o SAMBA, aconselhvel que execute sempre que possvel via inetd, pois isto garantir uma
disponibilidade maior do servio caso algo acontea com um dos processos.
18.1.10 Opes de linha de comando
Opes de linha de comando usadas pelo nmbd:
-H [arquivo_lmhosts ] Quando especicado, o servidor samba far a procura de nomes pri-
meiro neste arquivo e depois usando a rede.
-s [arquivo_cfg ] Especica uma nova localizao para o arquivo de congurao do samba.
Por padro o /etc/samba/smb.conf usado.
-d [num ] Especica o nvel de depurao do nmbd, que podem ir de 0 a 10. O valor padro
0.
-l [diretrio ] Especica a localizao do diretrio onde o nmbd gravar o arquivo de log
log.nmbd. O valor padro /var/log/samba
-n [nomeNetBIOS ] Permite utilizar o nome NetBIOS especicado a invs do especicado no
arquivo smb.conf para identicar o computador na rede.
18.2 Conceitos gerais para a congurao do SAMBA
Este captulo documenta como congurar o seu servidor SAMBA permitindo o acesso a com-
partilhamento de arquivos e impresso no sistema.
18.2.1 Nome de mquina (nome NetBios)
Toda a mquina em uma rede NetBEUI identicada por um nome, este nome deve ser nico
na rede e permite que outras mquinas acessem os recursos disponibilizados ou que sejam
enviadas mensagens para a mquina. Este nome composto de 16 caracteres, sendo 15 que
identicam a mquina e o ltimo o tipo de servio que ela disponibiliza. O tipo de servio as-
sociado como nome da mquina e registrado emservidores de nomes conrme a congurao
da mquina (voc ver isto mais adiante).
Captulo 18. SAMBA 308
O nome de mquina especicado nas diretivas netbios name e netbios aliases (veja Nomes e
grupos de trabalho on page 311) para detalhes.
18.2.2 Grupo de trabalho
O grupo de trabalho organiza a estrutura de mquinas da rede em forma de rvore, facilitando
sua pesquisa e localizao. Tomemos como exemplo uma empresa grande com os departa-
mentos comunicao, redes, web, rh, as mquinas que pertencemao grupo de redes sero
agrupadas no programa de navegao:
redes
gleydson
tecnico
marcelo
henrique
michelle
rh
mrpaoduro
web
web1
web2
web3
comunicacao
comunic1
comunic2
comunic3
A segurana no acesso a arquivos e diretrios na congurao de grupo de trabalho controlada
pela prpria mquina, normalmente usando segurana a nvel de compartilhamento. Esta
segurana funciona denindo um usurio/senha para acessar cada compartilhamento que a
mquina possui. O Lan Manager, Windows for Workgroups, Windows 95, Windows
98, XP Home Edition usam este nvel de acesso por padro. Se deseja congurar uma
rede usando o nvel de grupo de trabalho, veja Congurao em Grupo de Trabalho on
page 323 para detalhes passo a passo e exemplos prticos.
Os programas para navegao na rede NetBIOS so mostrados em smbclient on page 364,
nmblookup on page 364 e Programas de navegao grcos on page 370.
18.2.3 Domnio
O funcionamento semelhante ao grupo de trabalho, com a diferena que a segurana con-
trolada pela mquina central (PDC) usando diretivas de acesso e grupos. O PDC (Primary
Captulo 18. SAMBA 309
Domain Controller) dever ter todas as contas de acesso que sero utilizadas pelo usurio para
acessar os recursos existentes em outras mquinas, script de logon que poder ser executado
em cada mquina para fazer ajustes, sincronismo, manuteno ou qualquer outra tarefa pro-
gramada pelo administrador do sistema.
Estas caractersticas para congurao de mquinas em domnio so documentadas passo a
passo em Uma breve introduo a um Domnio de rede on page 329.
18.2.4 Compartilhamento
Um compartilhamento um recurso da mquina local que disponibilizado para acesso via
rede, que poder ser mapeada (veja Mapeamento on the current page) por outra mquina. O
compartilhamento pode ser um diretrio, arquivo, impressora. Alm de permitir o acesso do
usurio, o compartilhamento pode ser protegido por senha, e ter controle de acesso de lei-
tura/gravao, monitorao de acessos, diretrios ocultos, autenticao via PDC (domnio) e
outras formas para restringir e garantir segurana na disponibilizao dos dados (veja Con-
trole de acesso ao servidor SAMBA on page 347 para aprender os mtodos de como fazer
isto).
Um compartilhamento no SAMBA pode ser acessvel publicamente (sem senha) ou estar rigi-
damente protegido tendo que passar por diversas barreiras para chegar ao seu contedo, como
senhas, endereo de origem, interfaces, usurio autorizados, permisses de visualizao, etc.
O guia Foca Linux abordar estes assuntos com detalhes e explicar didaticamente como tornar
seguro seu servidor samba e garantir um minucioso controle de acesso a seus compartilha-
mentos.
18.2.5 Mapeamento
Mapear signica pegar umdiretrio/arquivo/impressora compartilhado por alguma mquina
da rede para ser acessada pela mquina local. Para mapear algumrecurso de rede, necessrio
que ele seja compartilhado na outra mquina (veja Compartilhamento on the current page).
Por exemplo, o diretrio /usr compartilhado com o nome usr, pode ser mapeado por uma
mquina Windows como a unidade F:, ou mapeado por uma mquina Linux no diretrio
/mnt/samba.
O programa responsvel por mapear unidades compartilhadas no Linux o smbmount e
smbclient (veja Linux on page 363).
18.2.6 Navegao na Rede e controle de domnio
Esta funo controlada pelo nmbd que ca ativo o tempo todo disponibilizando os recursos
da mquina na rede, participando de eleies NetBIOS (Nveis de sistema para eleio de rede
on page 318), fazer logon de mquinas no domnio (Uma breve introduo a um Domnio de
rede on page 329), etc.
Captulo 18. SAMBA 310
A funo de navegao na rede feita utilizando o compartilhamento IPC$. Este comparti-
lhamento possui acesso pblico somente leitura e utiliza o usurio guest para disponibili-
zao de seus. Como deve ter percebido, necessrio especicar esta ID de usurio atravs
do parmetro guest account (Descrio de parmetros usados em compartilhamento on
page 321), ou a navegao de recursos no sistema (ou na rede, dependendo da congurao
do SAMBA) no funcionar.
OBS: A funo de navegao (browsing) poder no funcionar corretamente caso a mquina
no consiga resolver nomes NetBIOS para endereos IP.
18.2.7 Arquivo de congurao do samba
Toda a congurao relacionada com nomes, grupo de trabalho, tipo de servidor, log, compar-
tilhamento de arquivos e impresso do samba colocada no arquivo de congurao /etc
/samba/smb.conf. Este arquivo dividido em sees e parmetros.
Uma seo no arquivo de congurao do samba (smb.conf) denido por um nome entre
[ ]. As sees tem o objetivo de organizar os parmetros pra que tenham efeito somente
em algumas conguraes de compartilhamento do servidor (exceto os da seo [global]
que no especicam compartilhamentos, mas suas diretivas podem ser vlidas para todas os
compartilhamentos do arquivo de congurao). Alguns nomes de sees foram reservados
para conguraes especcas do samba, eles so os seguintes:
[global] Dene conguraes que afetam o servidor samba como um todo, fazendo efeito
em todos os compartilhamentos existentes na mquina. Por exemplo, o grupo de traba-
lho, nome do servidor, pgina de cdigo, restries de acesso por nome, etc. Veja Seo
[global] on the facing page.
[homes] Especica opes de acesso a diretrios homes de usurios. O diretrio home
disponibilizado somente para seu dono, aps se autenticar no sistema. Veja Seo
[homes] on page 316.
[printers] Dene opes gerais para controle das impressoras do sistema. Este comparti-
lhamento mapeia os nomes de todas as impressoras encontradas no /etc/printcap.
Conguraes especiais podem ser feitas separadamente. Veja Seo [printers] on
page 317.
[profile] Dene um perl quando o servidor samba usado como PDC de domnio. Veja
Congurando pers de usurios on page 336.
Qualquer outro nome de [seo] no arquivo smb.conf que no sejam as acima, so tratadas
como um compartilhamento ou impressora.
Um parmetro denido no formato nome = valor. Para um exemplo prtico, veja um exemplo
de arquivo smb.conf em Exemplos de congurao do servidor SAMBA on page 371. Na
congurao de booleanos, a seguinte sintaxe pode ser usada:
0 ou 1
yes ou no
true ou false
Assim, as seguintes conguraes so equivalentes
master browse = 0
Captulo 18. SAMBA 311
master browse = no
master browse = false
Todos signicam NO ser o navegador principal de domnio. A escolha ca a gosto do
administrador. Durante a congurao, voc notar o poder da exibilidade oferecida pelo
samba na congurao de um servidor SMB :-)
Linhas iniciadas por # ou ; so tratadas como comentrio. Quebras de linha pode ser especi-
cadas com uma \ no nal da linha.
18.2.8 Seo [global]
Os parmetros especicados nesta seo tem efeito em todo o servidor samba incluindo os
compartilhamentos. Caso o parmetro seja novamente especicado para o compartilhamento,
o valor que valer o do compartilhamento.
Por exemplo, se guest user = nobody for usado na seo [global] e o guest user =
foca for usado no compartilhamento [focalinux], o usurio que far acesso pblico a
todos os compartilhamentos do servidor ser o nobody, exceto para o compartilhamento
[focalinux], que ser feito pelo usurio foca. Veja Compartilhamento de arquivos e dire-
trios on page 320 para obter uma lista e descrio dos principais parmetros de compartilha-
mentos existentes. Uma lista completa pode ser obtida na pgina de manual do smb.conf.
Irei descrever alguns parmetros utilizados nesta seo, organizado de forma didtica e sim-
plicada.
Nomes e grupos de trabalho
netbios name = [nome do servidor ] Especica o nome NetBIOS primrio do servidor samba.
Caso no seja ajustado, ele usar o hostname de sua mquina como valor padro. Ex.:
netbios name = focasamba.
workgroup = [grupo de trabalho/domnio ] Diz qual o nome do grupo de trabalho/domnio
que a mquina samba pertencer. Ex.: workgroup = focalinux.
netbios aliases = [nomes alternativos ao sistema ] Permite o uso de nomes alternativos ao
servidor, separados por espaos. Ex.: teste1 teste2.
server string = [identicao ] Identicao enviada do servidor samba para o ambiente de
rede. A string padro Samba %v (%v substituda pela verso do samba, para mai-
ores detalhes, veja Variveis de substituio on page 319). Ex: server string =
Servidor Samba verso %v.
name resolve order = [ordem ] Dene a ordem de pesquisa para a resoluo de nomes no
samba. A ordem padro : lmhosts host wins bcast, que a melhor para resolu-
o rpida e que tente gerar menos trfego broadcast possvel. Veja Resoluo de nomes
de mquinas no samba on page 325 para uma explicao mais detalhada.
Captulo 18. SAMBA 312
Caracteres e pgina de cdigo
Uma das partes essenciais aps colocar o SAMBA em funcionamento, congurar a pgina de
cdigo para que os caracteres sejam gravados e exibidos corretamente no cliente. A primeira
coisa que precisa vericar se seu kernel possui o suporte a pgina de cdigo local. Caso no
tenha, baixe o fonte do kernel e siga os seguintes passos na congurao:
Dentro da opo File Systems, Network File Systems dena como Default Remote
NLS Option a iso8859-1. Esta opo permite ao smbmount montar os volumes locais
usando os caracteres corretos.
Entre na opo File Systems, Native Language Support. Na opo Default NLS
Option coloque iso8859-1. Ative tambm o suporte as pginas de cdigo 437, 850 e
860 e tambm ao conjunto de caracteres iso8859-1 e UTF8.
Note que esta ordem pode variar dependendo da verso do seu kernel, basta que as entenda
para fazer as modicaes apropriadas.
character set = [conjunto_caracteres ] Seleciona o conjunto de caracteres dos arquivos exibi-
dos pelo servidor samba. Para os idiomas de lngua latina, sempre utilize iso8859-1. Ex.:
character set = iso8859-1.
client code page = [pagina_de_codigo ] Seleciona a pgina de cdigo do servidor samba para
tratar os caracteres. Para os idiomas de lngua latina, sempre utilize 850. Ex.: client
code page = 850.
preserve case = Seleciona se arquivos com nomes extensos criados sero criados com os ca-
racteres em maisculas/minsculas denidos pelo cliente (no) ou se ser usado o valor
de default case (caso seja especicado yes).
short preserve case = Seleciona se os arquivos com nomes curtos (formato 8.3) sero criados
com os caracteres mixtos enviados pelo cliente (no) ou se ser usando o valor de default
case (caso seja especicado yes).
default case = [lower/upper ] Dene se os arquivos criados tero seus nomes todos em mi-
nsculas (lower) ou maisculas (upper).
valid chars = [caracteres ] Dene caracteres vlidos nos nomes de arquivos: valid chars
=: : : : : : : : : : : :. Este parmetro DE-
VER ser sempre especicado depois do client code page, pois caso contrrio, eles
sero substitudos por estes.
Restries de acesso/mapeamento de usurios
guest account = [conta] Dene a conta local de usurio que ser mapeada quando um
usurio se conectar sem senha (usurio guest). Veja mais detalhes em Descrio de pa-
rmetros usados em compartilhamento on page 321.
invalid users Dene uma lista de usurios que no tero acesso aos recursos do servidor
ou compartilhamento. seguro restringir o acesso samba a usurios com grande poder
no sistema (como o root). Veja mais detalhes em Restringindo o acesso por usurios
on page 350.
valid users Semelhante a opo invalid users mas permite que somente os usurios
especicados tenham acesso ao sistema. Veja mais detalhes em Restringindo o acesso
por usurios on page 350.
Captulo 18. SAMBA 313
default service = nome Caso o servio que o usurio deseja se conectar no for encon-
trado no servidor, o SAMBA mapear o servio especicado nesta diretiva como alterna-
tiva. A varivel %S e o caracter _ podem ser interessantes em algumas alternativas
de congurao. A opo default um sinnimo para esta opo. Caso utilize esta
opo, crie o compartilhamento em modo somente leitura e com acesso pblico, caso
contrrio (dependendo do planejamento de parties e segurana do sistema de arqui-
vos) a mquina poder ser derrubada sem diculdades.
username map = [arquivo] Especica um arquivo que faz o mapeamento entre nomes
fornecidos por clientes e nomes de contas Unix locais. Veja Mapeamento de nomes de
usurios on page 358 para mais detalhes de como congurar este recurso.
obey pam restrictions = yes Indica se as restries do usurio nos mdulos PAM tero efeito
tambm no SAMBA.
Nveis de autenticao
(esta seo contmalgumas explicaes que dependem do resto do contedo do guia, caso no
entenda de imediato a fundo as explicaes, recomendo que a leia novamente mais tarde).
Dene o nvel de segurana do servidor. Os seguintes valores so vlidos:
share - Usada principalmente quando apenas a senha enviada por compartilha-
mento acessado para o servidor, caso muito tpico em sistemas Lan Manager e
Windows for Workgroups. Mesmo assim o samba tenta mapear para um UID
de usurio local do sistema usando os seguintes mtodos (retirado da pgina de
manual do samba):
1 Se o parmetro guest only usado no compartilhamento junto com o guest
ok, o acesso imediatamente permitido, sem vericar inclusive a senha.
2 Caso um nome de usurio seja enviado junto com a senha, ele utilizado para
mapear o UID e aplicar as permisses deste usurio (como acontece no nvel de
segurana user).
3 Se ele usou um nome para fazer o logon no Windows este nome ser usado
como usurio local do SAMBA. Caso ele seja diferente, voc dever usar o ma-
peamento de nomes para associar o nome remoto do nome local (veja Mapea-
mento de nomes de usurios on page 358)
4 O nome do servio tentado como nome de usurio.
5 O nome da mquina NetBios tentada como nome de usurio
6 Os usurios especicados na opo user do compartilhamentos so utilizados
(veja Descrio de parmetros usados em compartilhamento on page 321).
7 Caso nenhum destes mtodos acima for satisfeito, o acesso NEGADO.
Hoje em dia, o uso do nvel de acesso share raramente usado, porque todos os
sistemas a partir do Windows 95 e acima enviam o nome de usurio ao acessar um
compartilhamento (caindo na segunda checagem do nvel share), sendo equivalente
a usar o nvel user. Entretanto, o nvel de segurana share recomendado para servi-
dores onde TODO o contedo deve ter acesso pblico (seja leitura ou gravao) e o
parmetro guest shares tambm funciona nativamente. As senhas criptografa-
das (encrypt passwords = 1) NO funcionaro no nvel share, lembre-se deste
detalhe.
Captulo 18. SAMBA 314
user - Este o padro. O usurio precisa ter uma conta de usurio no Linux
para acessar seus compartilhamentos. A mesma conta de usurio/senha dever ser
usada no Windows para acessar seus recursos ou realizado um mapeamento de no-
mes de usurios (veja Mapeamento de nomes de usurios on page 358). Este o
padro do SAMBA. No nvel de acesso user o usurio precisa ser autenticado de
qualquer forma, inclusive se for usado o parmetro guest only ou user. Os se-
guintes passos so usados para autorizar uma conexo usando o nvel user (retirado
da documentao do SAMBA):
tentada a validao usando o nome/senha passados pelo cliente. Se tudo
estiver OK, a conexo permitida.
Caso j tenha se autenticado anteriormente para acessar o recurso e forneceu a
senha correta, o acesso permitido.
O nome NetBIOS da mquina do cliente e qualquer nome de usurio que foi
usado novamente tentado junto com a senha para tentar permitir o acesso ao
recurso compartilhado.
Caso o cliente tenha validado o nome/senha com o servidor e o cliente enviou
novamente o token de validao, este nome de usurio usado.
tentada a checagem com o parmetro user no compartilhamento (veja Descri-
o de parmetros usados em compartilhamento on page 321.
vericado se o servio pblico, ento a conexo feita usando o usurio
guest account e ignorando a senha (veja Criando um compartilhamento
para acesso sem senha on page 351).
domain - Neste nvel, o acesso s ser permitido quando a mquina for adicionada
ao domnio com o smbpasswd (Linux on page 368). Neste nvel de acesso, a conta
de usurio ser validada em um servidor PDC (controlador de domnio) e o acesso
aos recursos das mquinas que fazem parte do domnio ser feito a partir do PDC.
Veja Linux on page 368 para detalhes.
server - A mquina samba tentara autenticar o usurio em outro servidor NT (ou
samba). No caso da autenticao falhar, ser usado o nvel de acesso user na base
de usurios local (ser necessrio o arquivo de senhas criptografado do samba para
que a autenticao local funcione, veja Ativando o suporte a senhas criptografadas
on page 338). Este nvel bastante usado quando conguramos um servidor de
pers de usurios ou logon separado do PDC.
Log de acessos/servios
log le= [arquivo ] Dene a localizao e nome do arquivo de log gerado pelo samba. As
variveis de expanso podem ser usadas caso o administrador queira ter um me-
lhor controle dos logs gerados (veja Variveis de substituio on page 319). Ex.:
/var/log/samba/samba-log-%m. OBS: Se possvel coloque uma extenso no ar-
quivo de log gerado pelo SAMBA (como .log). O motivo disto porque se estes logs
forem rotacionados pelo logrotate voc ter problemas de recompactao mltiplas
caso utilize um coringa samba-log-*, gerando arquivos como .gz.gz.gz.., lotando
a tabela de arquivos do diretrio e deixando sua mquina em um loop de compactao.
max log size = [tamanho ] Especica o tamanho mximo em Kb do arquivo de log gerado
Captulo 18. SAMBA 315
pelo samba. O valor padro 5000Kb (5MB).
debug pid = [valor ] Este processo adiciona a pid aos logs gerados pelo processo smbd Isto
til para depurao caso existam mltiplos processos rodando. O valor padro no e a
opo debug timestamp deve ser yes para esta opo ter efeito.
debug timestamp = [valor ] Ativa ou desativa a gravao de data/hora nos arquivos de log
gerados pelo samba. O valor padro yes.
debug level = [valor ] Aumenta o nvel de depurao dos daemons do SAMBA de 0 a 9. Um
nvel de depurao interessante e que produz uma quantidade razovel de dados para
congurao de um logrotate s para o SAMBA o 2, produzindo a lista de todos
os compartilhamentos acessados, quem acessou, data/hora (dependendo das outras op-
es de depurao). Isto permite ao administrador saber exatamente o que est sendo
acessado e por quem, quais as tentativas de acesso. Assim ter certeza que o contedo
no est sendo acessado indevidamente. O nvel de depurao 0 o padro.
debug uid = [valor ] Este parmetro inclui o euid, egid, uid, gid nos arquivos de log. O valor
padro no.
lock directory = [diretrio ] Dene onde sero gravados os arquivos de lock gerados pelo
samba.
Navegao no servidor/tipo de servidor
os level=[num ] Especica o nvel do sistema operacional. Este nmero usado para as elei-
es netbios para denir o navegador de grupo local e controlador de domnio (veja
Nveis de sistema para eleio de rede on page 318 para detalhes). O valor pode ser de
0 a 255, o padro 32.
announce as = [sistema ] Selecione o nome que o samba (nmbd) se anunciar na lista de pes-
quisa de rede. Os seguintes nomes podem ser usados:
NT Server (ou NT) - Anuncia como Windows NT Server. Este o padro.
NT Workstation - Anuncia-se como um NT Workstation.
Win95 ou WfW - Anuncia-se na rede como uma estao Windows 9x, Windows for
Workgroups, Windows NT Server e Windows NT Workstation de uma s vez.
domain master = [valor ] Diz se o servidor tentar se tornar o navegador principal de dom-
nio. Os valores que podem ser especicados so: yes, no e auto. O valor padro
auto. Veja Domain Master Browser on page 330.
local master = [valor ] Diz se o servidor participar ou no das eleies para navegador local
do grupo de trabalho (workgroup). Os valores que podem ser especicados so: yes,
no. Ovalor padro yes. Para vencer a eleio, o samba precisa ter o valor de os level
maior que os demais. Note tambm que o Windows NT no aceita perder as eleies e
convoca uma nova eleio caso ele perca. Como esta eleio feita via broadcasting,
isso gera um trfego grande na rede. Desta forma, se tiver um computador NT na rede
congure este valor para no. Veja Local Master Browser on page 330.
preferred master = [valor ] Diz se o servidor samba ter ou no vantagens de ganhar uma
eleio local. Se estiver congurado para yes, o servidor samba pedir uma eleio
e ter vantagens para ganha-la. O servidor poder se tornar garantidamente o navega-
dor principal do domnio se esta opo for usada em conjunto com domain master = 1. Os
valores especicados podem ser yes, no e auto, o padro auto. Antes de ajustar
Captulo 18. SAMBA 316
este valor para yes, verique se existem outros servidores NetBIOS em sua rede que
tem preferncia para se tornar o master principal, pois poder ocorrer um trfego alto de
broadcasting causado pelas eleies solicitadas pelas outras mquinas.
Outros parmetros de congurao
include Inclui um outro arquivo de congurao na poro atual do arquivo de congura-
o. Voc pode utilizar variveis de substituio, exceto %u, %P e %S (veja Variveis de
substituio on page 319).
18.2.9 Seo [homes]
Esta seo tem a funo especial de disponibilizar o diretrio home do usurio. Quando
o usurio envia seu nome de login como compartilhamento feita uma busca no arquivo
smb.conf procurando por um nome de compartilhamento que conra. Caso nenhum seja
encontrado, feita uma busca por um nome de usurio correspondente no arquivo /etc
/passwd, se um nome conferir e a senha enviada tambm, o diretrio de usurio disponibi-
lizado como um compartilhamento com o mesmo nome do usurio local. O diretrio home do
usurio poder ser modicado como uso de mapeamento de nomes, veja Mapeamento de no-
mes de usurios on page 358. Quando o caminho do compartilhamento no for especicado,
o SAMBA utilizar o diretrio home do usurio (no /etc/passwd).
Para maior segurana da instalao, principalmente porque o diretrio home do usurio no
um requerimento para a autenticao de usurio, recomendo usar a varivel de substituio
%S apontando para um diretrio com as permisses apropriadas conguradas em seu sistema,
por exemplo:
[homes]
comment = Diretrios de Usurios
path=/pub/usuarios/%S
Voc apenas ter o trabalho extra de criar os diretrios de usurios que faro acesso ao sistema.
Isto no ser nenhum problema aps voc programar um shell script simples que verique os
nomes de contas em /etc/passwd e crie os diretrios com as permisses/grupos adequados
(isso no ser abordado por este captulo do guia, embora no seja complicado). Se deseja,
existem exemplos em Exemplos de congurao do servidor SAMBA on page 371 sobre a
seo [homes] no arquivo de congurao.
Os parmetros aceitos em[homes] aqui so os mesmos usados para compartilhamentos normais
(veja Descrio de parmetros usados emcompartilhamento on page 321). Abaixo segue mais
um exemplo de seo [homes]:
[homes]
comment = Diretrio home de usurios
writable = yes
Captulo 18. SAMBA 317
public = no
invalid users = root nobody @adm
follow symlinks = no
create mode = 0640
directory mode = 0750
A explicao de cada um dos parmetros podem ser encontradas em Descrio de parmetros
usados em compartilhamento on page 321. O guia est com os parmetros bem organizados
em sees especcas, apenas de uma olhada para entender com o captulo do SAMBA foi
organizado e no ter diculdades de se localizar.
OBS1:Caso nenhumcaminho de compartilhamento seja utilizado, o diretrio home do usurio
ser compartilhado.
OBS2:No utilize o parmetro public yes na seo guest, caso contrrio todos os diretrios de
usurios sero lidos por todos. Veja Consideraes de segurana com o uso do parmetro
public = yes on page 357 para maiores detalhes.
18.2.10 Seo [printers]
Esta seo tem a funo de disponibilizar as impressoras existentes no sistema (lp, lp1, lp2,
etc) existentes no /etc/printcap como compartilhamento de sistemas Windows. O mtodo
que os nomes de impressoras so pesquisados idntico a forma feita para a seo [homes]:
Primeiro o nome do compartilhamento pesquisado como um nome de servio, depois se ele
um nome de usurio (tentando mapear o servio disponibilizado em [homes]), depois ser
vericado a seo [printers].
Ao invs de usar este recurso, se preferir voc poder compartilhar as impressoras individual-
mente. Para detalhes, veja Congurando o Linux como um servidor de impresso Windows
on page 347.
OBS: importante lembrar que a seo [printers] DEVE ser denida como printable usando
o parmetro printable = yes para funcionar. O utilitrio testparm poder ser usado para ve-
ricar problemas no arquivo cd congurao do SAMBA (veja Buscando problemas na con-
gurao on the current page).
18.2.11 Buscando problemas na congurao
Durante o processo de congurao do SAMBA, comum cometer erros de digitao, usar
parmetros em lugares indevidos, etc. recomendvel o uso do testparm para checar a
congurao do SAMBA sempre que houver modicaes para ter certeza nada comprometa
o funcionamento que planejou para sua mquina.
Para usar o testparm s digitar testparm. Logo aps executa-lo, analise se existem er-
ros nas sees de congurao e te pedir para pressionar <ENTER> para ver um dump do
arquivo:
Captulo 18. SAMBA 318
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[tmp]"
Processing section "[cdrom]"
Loaded services file OK.
Press enter to see a dump of your service definitions
Asada acima indica que est tudo OKcomtodas as conguraes que foramrealizadas no ser-
vidor. possvel especicar um outro arquivo de congurao do SAMBA usando testparm
/etc/samba/smb2.conf.
Tambm permitido simular o nome NetBIOS que far acesso a mquina usando o parmetro
-L nome (que ser substitudo na varivel %L).
18.2.12 Nveis de sistema para eleio de rede
Para selecionar qual sistema NetBIOS ser o local master browse ou domain master browse,
usado um mtodo bastante interessante: o de eleies.
Quando uma nova mquina entra na rede NetBIOS, ela solicita quem o Local Master Browser,
caso nenhuma responda, ela fora uma eleio na rede atravs de uma requisio Broadcasting
especial. Vence a eleio quem tiver o ***maior nmero***, chamado de OS Level (nvel de sis-
tema operacional). Caso duas mquinas empatem, o desempate feito usando outros critrios.
Se voc for a nica mquina de um workgroup, automaticamente voc ser o Local Master
Browser. De meia em meia hora uma nova eleio feita, forando mais trfego broadcasting
na rede. Durante este novo processo de eleio, a lista de computadores atualizada; as novas
mquinas so adicionadas e as desligadas saem da lista aps 36 minutos. Este o motivo
porque as mquinas Windows continuam aparecendo no ambiente de rede por algum tempo
mesmo depois que desligadas ou porque elas no aparecem de imediato.
OOS Level umnmero que caracterstico de cada sistema operacional cando entre 0 (mais
baixo) e 255. Os nveis de acessos dos sistemas operacionais so os seguintes:
Windows for Workgroups 1
Windows 95 1
Windows 98 2
Windows 98 Second Edition 2
Windows 2000 Server (standalone) 16
Windows 2000 Professional 16
Windows NT 4.0 Wks 17
Windows NT 3.51 Wks 16
Captulo 18. SAMBA 319
Windows NT 3.51 Server 32
Windows NT 4.0 Server 33
Windows 2000 Server (Domain Controller) 32
SAMBA 32
O valor padro do OS Level do SAMBA 32, entretanto ele bastante exvel para permitir
sua mudana atravs do parmetro os level (veja Navegao no servidor/tipo de servidor
on page 315), isto garante que o SAMBAsempre vena as eleies da rede sobre qualquer outro
sistema operacional.
No caso de um servidor que estiver congurado para ser o navegador de rede, assim que for
iniciado ele solicitar uma eleio de rede. As regras so as mesmas, vence o que tiver o *maior*
nmero. Este nmero pode ser congurado facilmente no SAMBA para que ele sempre vena
as eleies de rede, tomando conta da lista de mquinas. Isto especialmente interessante por
causa da estabilidade do servidor Linux, quando migramos de servidor NT ou para fornecer
mais servios de navegao, como servidor WINS.
OBS: Nunca deixe um servidor NT congurado para ser o Local Browser ou Domain Master
Browser competir com o SAMBA. Mesmo que o SAMBA ganhe, o NT um pssimo perdedor
e convoca uma nova eleio para tentar novamente se eleger, gerando um *extremo* trfego
broadcasting em redes grandes.
18.2.13 Variveis de substituio
Esta seo foi baseada nos dados da pgina de manual do samba, comadies que no estavam
presentes na verso original e exemplos. Existem variveis especiais que podem ser usadas no
arquivo de congurao do samba e so substitudas por parmetros especiais no momento
da conexo do usurio. Um exemplo de utilizao de variveis de substituio seria mudar a
localizao do diretrio home do usurio:
[homes]
comment = Diretrio home do usurio
path = /home/usuarios/%u
Cada uma das variveis so descritas em detalhes abaixo:
%S O nome do servio atual, se existir. Seu uso interessante, principalmente no uso de
diretrios homes.
%P O diretrio raz do servio atual, se existir.
%u O nome de usurio do servio atual, se aplicvel. Esta varivel bastante til para pro-
gramao de scripts e tambm para criar arquivos de log personalizados, etc.
Captulo 18. SAMBA 320
%g O grupo primrio do usurio %u.
%U O nome de usurio da seo (o nome de usurio solicitado pelo cliente, no uma regra
que ele ser sempre o mesmo que ele recebeu).
%G O nome do grupo primrio de %U.
%H O diretrio home do usurio, de acordo com %u.
%v A verso do Samba.
%h O nome DNS da mquina que est executando o Samba.
%m O nome NetBIOS da mquina do cliente. Isto muito til para log de conexes persona-
lizados e outras coisas teis.
%L O nome NetBIOS do servidor. Como o servidor pode usar mais de um nome no samba
(aliases), voc poder saber com qual nome o seu servidor est sendo acessado e possi-
velmente torna-lo o nome primrio de sua mquina.
%M O nome DNS da mquina cliente.
%N O nome do seu servidor de diretrios home NIS. Este parmetro obtido de uma
entrada no seu arquivo auto.map. Se no tiver compilado o SAMBA com a opo
--with-automount ento este valor ser o mesmo de %L.
%p O caminho do diretrio home do servio, obtido de uma entrada mapeada no arquivo
auto.map do NIS. A entrada NIS do arquivo auto.map dividida na forma %N:%p.
%R O nvel de protocolo selecionado aps a negociao. O valor retornado pode ser CORE,
COREPLUS, LANMAN1, LANMAN2 ou NT1.
%d A identicao de processo do processo atual do servidor.
%a A arquitetura da mquina remota. Somente algumas so reconhecidas e a resposta pode
no ser totalmente convel. O samba atualmente reconhece Samba, Windows for Work-
groups, Windows 95, Windows NT e Windows 2000. Qualquer outra coisa ser mostrado
como UNKNOWN (desconhecido).
%I O endereo IP da mquina do cliente.
%T A data e hora atual.
%$(var_ambiente) Retorna o valor da varivel de ambiente especicada.
18.3 Compartilhamento de arquivos e diretrios
Esta seo documenta como disponibilizar arquivos e impressoras com o SAMBA e os par-
metros usados para realizar restries de compartilhamento, modo que os dados sero dispo-
nibilizados e tens de performance. A maior parte destes parmetros so empregados em ser-
vios do SAMBA, mas nada impede que tambm sejam colocado na seo [global] do arquivo
Captulo 18. SAMBA 321
de congurao, principalmente quando isto vlido para diversos servios compartilhados
(veja Seo [global] on page 311).
18.3.1 Descrio de parmetros usados em compartilhamento
Abaixo o guia traz algumas das opes que podemser usadas para controlar o comportamento
do compartilhamento de arquivos por servios no servidor SAMBA:
path Indica o diretrio que ser compartilhado. Lembre-se que o usurio ter as permisses
de acesso que ele teria caso estivesse logado no sistema como um usurio UNIX normal,
exceto se estiver fazendo mapeamento para outros nomes de usurios (veja Mapeamento
de nomes de usurios on page 358). Ex: path=/pub - Compartilha o diretrio local
/pub. OBS: Quando no denido um path, o diretrio /tmp usado como padro.
comment Descrio do compartilhamento que ser mostrada na janela de procura de rede
ou no smbclient -L maquina. Ex: comment=Pasta de contedo pblico do
sistema.
browseable Dene se o compartilhamento ser ou no exibido na janela de procura de rede.
Mesmo no sendo exibido, o compartilhamento poder ser acessado. Veja Criando
um compartilhamento invisvel on page 355 para uma explicao mais detalhada. Ex:
browseable=yes - Lista o compartilhamento na janela de pesquisa de servidores.
guest account Conta que ser usada para fazer acesso sem senha (convidado) quando o par-
metro guest ok ou public forem usados em um compartilhamento. Por padro ela
mapeada para o usurio nobody. importante especicar uma nome de usurio guest
(convidado), principalmente porque seu UID ser usado para fazer vrias operaes no
SAMBA, como exibir os recursos disponveis na mquina para a rede. Por motivos cla-
ros, recomendvel que este usurio no tenha acesso login ao sistema. Caso no tenha a
inteno de ocultar o SAMBAna lista de mquinas da rede (fazendo apenas acesso direto
aos recursos), especique umvalor para esta opo. Ex: guest account = sambausr
- Mapeia os usurio se conectando sem senha para o usurio sambausr, desde que o
acesso guest seja permitido pela opo public.
public Permitemaos usurios usurios se conectaremao compartilhamento semfornecer uma
senha usando o usurio guest. O UID que o usurio guest ser mapeado especicado
pelo parmetro guest account). Veja Criando umcompartilhamento para acesso sem
senha on page 351. O parmetro guest ok equivalente a public. Ex: public = no
- No permite
guest only Permite somente conexes guest ao recurso. O UID do usurio mapeado para
guest, mesmo que fornea uma senha correta. O valor padro no. Ex: guest only =
no.
write list Lista de usurios separados por espao ou vrgula que podero ler e gravar no com-
partilhamento. Caso o nome for iniciado por @, o nome especicado ser tratado
como um grupo UNIX (/etc/group) e todos os usurios daquele grupo tero acesso
de gravao. O uso deste parmetro ignora o read only = yes. Veja Excesso de
acesso na permisso padro de compartilhamento on page 354 para mais detalhes. Ex:
write list = gleydson, @usuarios - Permite acesso gravao somente do usu-
rio gleydson e todos os usurios pertencentes ao grupo @usuarios. OBS: - O signi-
cado de @ nos parmetros invalid users/valid users diferente das opes write
Captulo 18. SAMBA 322
list e read list.
read list Lista de usurios separados por espao ou vrgula que podero apenas ler o compar-
tilhamento. O caracter @ pode ser especicado para fazer referncia a grupos, como
no write list. O uso deste parmetro ignora o read only = no. Veja Excesso
de acesso na permisso padro de compartilhamento on page 354 para mais detalhes.
Ex: read list = nobody, system, operador, @usuarios - Permite acesso de
leitura somente do usurio nobody, system, operador e todos os usurios perten-
centes ao grupo @usuarios.
user Especica um ou mais nomes de usurios ou grupos (caso o nome seja seguido de @)
para checagemde senha. Quando o cliente somente fornece uma senha (especialmente na
rede Lan Manager, Windows for Workgroups e primeira verso do Windows 95)
ela ser validada no banco de dados de senhas usando o usurio especicado nesta op-
o. Ex: user = john @usuariosrede
only user Especica se somente sero permitidas conexes vindas de usurios da diretiva
user. O padro no. Caso deseje restringir o acesso a determinados usurios, o certo
faze-lo usando valid users e invalid users (veja Restringindo o acesso por usu-
rios on page 350). O uso de only user apropriado quando necessrio um controle
especco de acesso sobre a diretiva user. Ex: only user = no.
locking Permite ao SAMBA fazer um lock real de arquivo ou apenas simular. Caso seja es-
pecicado como 0, o arquivo no bloqueado para acesso exclusivo no servidor mas
uma resposta positiva de lock retornada ao cliente. Se denido como 1, um lock real
feito. O padro yes. Ex: locking = yes
available Faz o SAMBA ignorar o compartilhamento (como se tivesse retirado do servidor).
O valor padro no.
follow symlinks Permite o uso de links simblicos no compartilhamento (veja tambm a op-
o wide links). A desativao desta opo diminui um pouco a performance de
acesso aos arquivos. Como restrita a compartilhamento, o impacto de segurana de-
pende dos dados sendo compartilhados. O valor padro desta opo YES. Ex:
follow symlinks = yes
wide links Permite apontar para links simblicos para fora do compartilhamento exportada
pelo SAMBA. O valor padro esta opo YES. Ex: wide links = yes. OBS: - A
desativao desta opo causa um aumento na performance do servidor SAMBA, evi-
tando a chamada de funes do sistema para resolver os links. Entretanto, diminui a
segurana do seu servidor, pois facilita a ocorrncia de ataques usando links simbli-
cos. Lembre-se mais uma vez que a segurana do seu sistema comea pela poltica e
uma instalao bem congurada, isso j implica desde a escolha de sua distribuio at
o conhecimento de permisses e planejamento na implantao do servidor de arquivos.
dont descend No mostra o contedo de diretrios especicados. Ex: dont descend
= /root, /proc, /win/windows, /win/Arquivos de Programas,
/win/program files.
printable Especica se o compartilhamento uma impressora (yes) ou um compartilhamento
de arquivo/diretrio (no). O padro no.
read only Especica se o compartilhamento somente para leitura (yes) ou no (no) para to-
dos os usurios. O parmetro writable um antnimo equivalente a este parmetro,
s que utiliza as opes invertidas. Por segurana, o valor padro somente leitura. Veja
uma explicao mais detalhada em Criando um compartilhamento com acesso somente
Captulo 18. SAMBA 323
leitura on page 352. Ex: read only = yes.
create mask Modo padro para criao de arquivos no compartilhamento. O parmetro cre-
ate mode um sinnimo para este. O modo de arquivos deve ser especicado em for-
mato octal. Ex: create mask = 0600.
directory mask Modo padro para a criao de diretrios no compartilhamento. O parmetro
directory mode um sinnimo para este. O modo de diretrio deve ser especicado
em formato octal. Ex: directory mask = 0700.
getwd cache Permite utilizar um cache para acesso as requisies getwd, diminuindo o n-
mero de ciclos de processamento para acesso a arquivos/diretrios. O valor padro
Yes.
write cache size Tamanho do cache de leitura/gravao do compartilhamento. Este valor
especicado em bytes e o padro 0. Veja Melhorando a performance do comparti-
lhamento/servidor on page 359 para detalhes sobre seu uso. Ex: write cache size
= 384000.
inherit permissions Permite herdar permisses de arquivos/diretrios do diretrio pai
quando novos arquivos/diretrios so criados, isto inclui bits SGID (set group ID). O
padro NO herdar permisses. O uso desta opo substitui as opes fornecidas
por create mask, directory mask, force create mask e force directory
mask. Ex: inherit permissions.
preexec Executa um comando antes a abertura de um compartilhamento. O parmetro exec
um sinnimo para este. Veja Executando comandos antes e aps o acesso ao comparti-
lhamento on page 356.
postexec Executa um comando depois da utilizao do compartilhamento. Veja Executando
comandos antes e aps o acesso ao compartilhamento on page 356.
preexec close Fecha imediatamente o compartilhamento caso o valor do comando executado
pela opo preexec seja diferente de 0. O uso desta opo s faz sentido em conjunto
compreexec. O valor padro no. Veja Executando comandos antes e aps o acesso
ao compartilhamento on page 356. Exemplo: preexec close = yes.
volume = nome Retorna o nome de volume especicado quando feito o acesso ao compar-
tilhamento. Isto muito til para instalaes onde o serial do CD, disquete ou HD
vericado durante o acesso. Isto acontece com freqncia em produtos de fabricantes
proprietrios como forma de evitar a execuo ilegal do programa.
18.4 Congurao em Grupo de Trabalho
A congurao grupo de trabalho o mtodo mais simples para compartilhar recursos em uma
rede e tambm indicado quando se possui uma rede pequena (at 30 mquinas) pois o ge-
renciamento no to complicado. Acima deste nmero, recomendada a utilizao da con-
gurao de domnio para denio de polticas de acesso mais precisas pelo administrador
e para manter o controle sobre os recursos da rede (veja Congurando um servidor PDC no
SAMBA on page 330).
A congurao do nvel de acesso por grupo de trabalho tem como caractersticas principais
essa simplicidade na congurao e o controle de acesso aos recursos sendo feito pela mquina
local atravs de senhas e controle de IP.
Captulo 18. SAMBA 324
Quanto ao mtodo de senhas, voc pode optar tanto por usar senhas criptografadas (Ativando
o suporte a senhas criptografadas on page 338) ou senhas emtexto limpo (Ativando o suporte
a senhas em texto plano on page 342).
Veja abaixo um exemplo explicado de congurao do SAMBA para grupo de trabalho:
[global]
netbios name = servidor
workgroup = focalinux
security = user
obey pam restrictions = yes
encrypt passwords = no
os level = 30
guest account = nobody
server string = servidor da rede
local master = true
domain master = false
[homes]
comment = Diretrios de usurios
create mask= 0700
directory mask = 0700
browseable = no
[tmp]
path = /tmp
comment = Diretrio temporrio do sistema
read only = yes
valid users = gleydson
public = no
Agora, verique se existem erros na congurao com o comando testparm (Bus-
cando problemas na congurao on page 317) e reinicie o SAMBA (Iniciando o servi-
dor/reiniciando/recarregando a congurao on page 306). Onome do grupo de trabalho que
a mquina pertencer focalinux (workgroup = focalinux). O nvel de acesso usado
neste exemplo de usurio (security = user), para mais detalhes sobre este mtodo, veja
Nveis de autenticao on page 313. O parmetro local master foi denido para yes para
o SAMBA tentar ser o navegador local do grupo de trabalho (veja Local Master Browser on
page 330).
Para testar se o servidor est funcionando, digite o seguinte comando:
smbclient -L servidor -U usuario
Digite a senha de usurio quando solicitado. O comando dever listar os recuros da mquina,
indicando que a congurao est funcionando corretamente. Se voc paranico e est preo-
Captulo 18. SAMBA 325
cupado coma segurana da mquina, recomendo ler a Controle de acesso ao servidor SAMBA
on page 347.
18.5 Resoluo de nomes de mquinas no samba
O Samba pode utiliza os seguintes mtodos para resoluo de nomes de mquinas na rede
(Nome de mquina (nome NetBios) on page 307). Eles esto listados em ordem de prioridade
do mais para o menos recomendvel:
lmhosts - Pesquisa primeiro o arquivo /etc/samba/lmhosts (veja Arquivo /etc
/samba/lmhosts on this page para detalhes sobre este arquivo).
host - Faz a pesquisa no arquivo /etc/hosts e no DNS embusca do nome da mquina.
wins - Pesquisa no servidor WINS especicado pelo parmetro wins server do smb.conf
(veja WINS on page 327).
bcast - Envia umpacote para o endereo de broadcast de sua congurao de rede. Este
geralmente deve ser o ltimo mtodo por gerar trfego excessivo em uma rede com um
considervel nmero de computadores.
A ordem que a resoluo de nomes feita pelo samba, pode ser modicada usando o parme-
tro name resolve order = [ordem] no arquivo de congurao do samba (ex. name resolve
order = lmhosts host wins bcast).
18.5.1 Arquivo /etc/samba/lmhosts
Este arquivo umbanco de dados que mapeia o endereo IP como nome NetBIOS de uma m-
quina, semelhante ao formato do /etc/hosts. Este arquivo til quando temos servidores
que so acessados com freqncia, quando servidores de rede esto em segmentos separados
e no temos um servidor WINS entre os dois pontos para resoluo de nomes, para denir
mquinas WINS que sero acessados pela internet, etc. Para ter certeza da localizao do ar-
quivo lmhosts emsua mquina, digite smbclient -d 3 -L localhost e veja o diretrio
de pesquisa deste arquivo. Veja um exemplo de arquivo lmhosts em Exemplo de lmhosts
do UNIX on the following page.
O uso do arquivo lmhosts evita o excesso de broadcasting na rede, pois a ordem padro
usada para a resoluo de nomes do samba, procura primeiro resolver o nome procurando em
arquivos lmhosts, depois usando dns, wins e broadcast. Dependendo do projeto de sua rede e
como as mquinas resolvem os nomes, ele pode ser uma camada a mais de segurana contra
um simples hijacking de servidor atravs de NetBEUI ou WINS (isso evitado com o uso de
domnios, veja Congurando um servidor PDC no SAMBA on page 330).
OBS: Note que em clientes Windows que estejam em outra subrede, necessrio o arquivo
\windows\lmhosts apontando para um servidor PDC mesmo que ele esteja apontando para
o servidor WINS, caso contrrio, a mquina no efetuar o logon.
O formato do arquivo lmhosts do Windows mais complexo do que o do Linux pois o
sistema precisa de mais detalhes para resolver os nomes e tipos de mquinas no domnio. Veja
o modelo lmhosts.sam em seu sistema Windows para compreender seu funcionamento.
Captulo 18. SAMBA 326
Exemplo de lmhosts do UNIX
O exemplo abaixo mapeia o endereo IP das mquinas (primeira coluna) com o respectivo
nome de mquina (segunda coluna):
172.16.0.34 servarq
172.16.0.30 serverdom
192.168.5.2 servwins
172.16.0.3 servpdc
172.16.0.1 gateway
Exemplo de lmhosts do Windows
O arquivo possui uma sintaxe idntica a do lmhosts do UNIX, mas alguns parmetros es-
peciais so especicados para ajudar o Windows resolver algumas coisas que no consegue
fazer sozinho (principalmente com relao a identicao de funo de mquinas em redes
segmentadas):
192.168.0.5 servarq
192.168.0.1 serverpdc #PRE #DOM:dominio
192.168.0.2 "serverwins \0x1e" #PRE
#INCLUDE \\serverpdc\lmhosts
A primeira entrada do arquivo a tradicional, onde o nome da mquina NetBIOS associada
ao IP. A segunda utiliza dois parmetros adicionais:
#PRE - Faz a entrada ser carregada logo na inicializao e se tornando uma entrada per-
manente no cache NetBIOS.
#DOM - Especica que a mquina um controlador de domnio. A mquina dever ter
sido congurada para a funo de domnio, pois caso contrrio isso simplesmente no
funcionar.
Note que ambos #PRE e #DOM devem ser especicados em maisculas. O terceiro exemplo
faz uma referncia permanente (#PRE) a mquina servidora WINS serverwins. Neste exemplo
usada uma caracterstica especial para especicar a ID hexadecimal da mquina na rede
1e. O quarto utiliza um include para associar outro arquivo ao atual, til quando temos um
compartilhamento que distribui um arquivo lmhosts para diversas mquinas na rede. De
preferncia, utilize sempre uma diretiva #PRE para todas as mquinas especicadas na diretiva
#INCLUDE em seu arquivo de congurao.
Para a especicao de ID de servio manual, necessrio manter os 15 caracteres no nome
da mquina (preenchendo os restantes com espaos, caso seja preciso). O ltimo caracter o
cdigo hexadecimal que identica o servio de rede (veja nmblookup on page 364 para ver a
lista de servios e sua respectiva funo).
OBS: Caso crie este arquivo em um editor de textos do Linux, no se esquea de converter o
arquivo para que contenha o CR+LF no nal das linhas.
Captulo 18. SAMBA 327
18.5.2 WINS
Este um servio de resoluo de nomes que funciona de forma semelhante ao DNS, s que
voltado para o NetBIOS. Quando uma mquina cliente NetBIOS entra na rede, o servidor
WINS pega seu nome e IP e inclui em uma tabela para futura consulta pelos clientes da rede.
Esta tabela consultada toda vez que um cliente NetBIOS solicita um nome de mquina, com-
ponentes do grupo de trabalho ou domnio na rede. Uma outra aplicao importante de um
servidor WINS permitir a resoluo de nomes em pontos de redes que requerem roteamento,
a simplicidade de um protocolo no rotevel como o NetBIOS ca limitada a simplicidade
das instalaes de rede. Um servidor WINS pode ser instalado em cada ponta da rede e eles
trocarem dados entre si e atualizar suas tabelas de nomes/grupos de trabalhos/IPs.
A resoluo de nomes de mquinas ser feita consultando diretamente a mquina WINS ao
invs de broadcasting (que geram um trfego alto na rede).
Congurando o servidor WINS
Para ativar o servidor WINS no samba, inclua as seguinte linha na seo [global] do seu
arquivo /etc/samba/smb.conf:
[global]
wins support = yes
wins proxy = no
dns proxy = no
max wins ttl = 518400
O parmetro wins proxy pode ser necessrio para alguns clientes antigos que tenham pro-
blemas no envio de suas requisies WINS. O dns proxy permite que o servidor WINS faa
a pesquisa no DNS para localizao de nomes de mquinas caso no exista no cache. Ambas
as opes wins support, wins proxy e dns proxy tem como valor padro no. Pronto,
seu servidor samba agora suporta WINS. Fcil, prtico e rpido :-)
Se estiver congurando uma subrede com masquerade para acesso a um PDC ou um servidor
WINS, voc ter que mexer no gateway central para apontar uma rota para o gateway masque-
rade. O motivo disto porque o masquerade do Linux atua somente nos cabealhos, mas o
IP da estao enviada e processada pelo PDC para retornar uma resposta. Da mesma forma,
este IP registrado no servidor WINS para uso das estaes de trabalho. Isto s vai ser resol-
vido quando for escrito um mdulo de conntrack para conexes SAMBA (at o lanamento do
kernel 2.4.22, isso ainda no ocorreu).
OBS1: NUNCA congure mais de um servidor WINS em uma mesma rede.
OBS2: NO especique o parmetro wins server caso esteja usando o suporte a WINS.
Captulo 18. SAMBA 328
Congurando o Cliente WINS
Para os clientes da rede (Linux, Windows, OS/2, etc.) fazer uso das vantagens da reso-
luo de nomes usando o WINS, necessrio congurar para que eles o utilizem para resolver
os nomes de mquinas. Isto feito da seguinte forma em cada um dos sistemas operacionais:
Linux Adicione a linha wins server = ip_do_servidor_WINS na seo global do ar-
quivo /etc/samba/smb.conf:
[global]
wins server = 192.168.1.1
Aps isto, reinicie o servidor samba. Caso esteja executando o servidor via inetd, digite:
killall -HUP nmbd. Se estiver rodando atravs de daemons: /etc/init.d/samba
restart. No necessrio reiniciar o computador!
Windows 9x Clique com o boto direito sobre o cone Ambiente de Rede e selecione proprieda-
des. Na janela de congurao de rede clique na aba Congurao. Na lista que aparece
selecione o protocolo TCP/IP equivalente a sua placa de rede local e clique em Propri-
edades. Na tela de Propriedades TCP/IP clique em Conguraes WINS e marque a opo
Ativar resoluo WINS. Digite o endereo do servidor WINS e clique em Adicionar. OBS:
Se utilizar um servidor DHCP em sua rede local e o endereo do servidor WINS tambm
oferecido atravs dele, voc poder marcar a opo Usar DHCP para resoluo WINS.
Note que esta opo somente estar disponvel se escolher a opo Obter um endereo
IP automaticamente na tab Endereos IP. Clique em OK at fechar todas as telas e reinicie
quando o computador perguntar :-)
18.6 Servidor de data/hora
O samba pode atuar como um servidor de data/hora ajustando o horrio de suas estaes de
trabalho com o servidor da rede.
As estaes clientes podero executar o comando net para sincronizar seu relgio durante a
inicializao do Windows, ou durante o logon da rede atravs do script de logon, caso tenha
congurado o servidor samba para logon em domnios NT.
18.6.1 Congurao do servio de data/hora no SAMBA
Para congurar o samba para atuar como servidor de data/hora de sua rede, adicione o se-
guinte parmetro na seo global do arquivo de congurao /etc/samba/smb.conf:
[global]
time server = yes
Para sincronizar a data/hora das estaes de trabalho usando o servidor samba, veja Sincro-
nizando a data/hora no Cliente on the next page. Caso o seu servidor SAMBA tambm seja
o servidor de autenticao PDC da rede, a melhor forma de se fazer isto colocar o comando
net time \\servidor_SAMBA /set /yes em um script que ser executado pela estao.
Captulo 18. SAMBA 329
OBS recomendvel instalar um cliente ntp para manter o relgio do servidor sempre atuali-
zado, conseqentemente mantendo a data/hora das estaes tambm em sincronismo . .
18.6.2 Sincronizando a data/hora no Cliente
Na estao cliente Windows, use o seguinte comando:
NET TIME \\SERVIDOR /WORKGROUP:GRUPO /SET /YES
Um local interessante para colocao deste comando na pasta Iniciar da estao Windows,
pois todos os comandos que estejam nesta pasta so executados quando o sistema iniciado.
Exemplos:
net time \\linux /set /yes - Sincroniza a hora com o servidor \\linux e no
pede conrmao (/yes).
net time \\linux /WORKGROUP:pinguim /set /yes - Sincroniza a hora com o
servidor \\linux do grupo de trabalho pinguim (/WORKGROUP:pinguim) e no
pede conrmao (/yes).
18.7 Congurao em Domnio
Esta seo descreve todos os passos necessrios para congurar um servidor de domnio PDC
(Primary Domain Control) com pers mveis e outros recursos que tornam teis e seguras a
administrao de uma rede NetBEUI.
18.7.1 Uma breve introduo a um Domnio de rede
Um domnio de rede consiste em uma mquina central chamada de PDC, que mantm o con-
trole de todas as contas de usurios/grupos e permisses para acesso a rede NetBEUI. Oacesso
desta forma centralizado, como vantagemdisto voc pode usar o nvel de acesso por usurios
nas mquinas, denindo quais usurios ou grupos tero acesso de leitura/gravao.
permitido criar scripts de logon, assim comandos programados pelo administrador sero
executados nas mquinas clientes durante o logon no domnio (veja Criando Scripts de logon
on page 334).
O nome da mquina protegido contra hijacking atravs de contas de mquinas que fazem
parte do domnio (veja Contas de mquinas de domnio on page 332). Isto s possvel em
clientes Linux, Windows NT, Windows 2000 e Windows XP.
Voc poder usar pers mveis, copiando todas as personalizaes do seu desktop para qual-
quer mquina na rede que voc faa o logon. Para o administrador, ele poder denir po-
lticas com o Poledit e outros programas que sero salvas junto com o perl do usurio,
valendo para qualquer mquina que ele se autentique na rede (veja Criando Scripts de logon
on page 334).
Captulo 18. SAMBA 330
Se voc deseja iniciar logo a congurao do seu domnio, siga at Congurando um servidor
PDC no SAMBA on the current page.
18.7.2 Local Master Browser
a mquina que ganhou a eleio no segmento local de rede (veja Nveis de sistema para
eleio de rede on page 318). Logo que declarada o local master browser, ela comea a rece-
ber via broadcasting a lista de recursos compartilhados por cada mquina para montar a lista
principal que ser retornada para outras mquinas do grupo de trabalho ou outras subredes
que solicite os recursos compartilhados por aquele grupo.
Uma nova eleio feita a cada 36 minutos ou quando a mquina escolhida desligada.
18.7.3 Domain Master Browser
Quando o local master browse eleito no segmento de rede, uma consulta feita ao servidor
WINS para saber quem o Domain Master Browse da rede para enviar a lista de compartilha-
mentos. A mquina escolhida como Local Master Browse envia pacotes para a porta UDP 138
do Domain Master e este responde pedindo a lista de todos os nomes de mquinas que o local
master conhece, e tambm o registra como local master para aquele segmento de rede.
Caso tenha congurado sua mquina para ser o domain master browser da rede (tambm
chamado de controlador principal de domnio ou PDC), ela tentar se tornar a mquina que ter
a lista completa de recursos enviados pelos locais master browsers de cada segmento de rede.
Um PDC tambm o local master browse de seu prprio segmento de rede.
possvel ter mais de um domain master browse, desde que cada um controle seu prprio
domnio, mas no possvel ter 2 domain master browsers em um mesmo domnio. Caso
utilize um servidor WINS em sua rede, o PDC far consultas constantes em sua base de dados
para obter a lista de domnios registrados. O domnio identicado pelo caracter 1b na rede
(veja nmblookup on page 364).
OBS: OWindows NT congurado como PDC sempre tenta se tornar o domain master browser
em seu grupo de trabalho. No sendo possvel retirar o Windows NT congurado como PDC
do domnio (por alguma outra razo), a nica forma ser deixar ele ser o domain master brow-
ser. Se este for o caso, voc poder continuar lendo este documento para aprender mais sobre
NetBIOS e talvez ainda mudar de idia sobre manter o NT na rede aps ver as caractersticas
do SAMBA ;-)
18.7.4 Congurando um servidor PDC no SAMBA
Esta a parte interessante do guia, a prtica. Para os administradores que conhecem atravs
da experincia prpria os problemas e denies do SAMBA, grande parte do guia foi apenas
uma reviso (por favor, se faltou algo que acha interessante, me notiquem que incluirei na
prxima verso e colocarei uma nota no lanamento e na pgina com os devidos crditos :-))
Captulo 18. SAMBA 331
Para congurar uma mquina para ser o PDC (Controladora Principal de Domnio ou Primary
Domain Control), siga esta seqncia:
Habilite o suporte a senhas criptografadas. Caso ainda no tenha feito isso, leia a seo
Ativando o suporte a senhas criptografadas on page 338.
Na seo [global], insira/modique os seguintes parmetros:
; Identificao da mquina e domnio
netbios name = gleydson
workgroup = focalinux
;nveis de acesso e funes do servidor
security = user
domain master = yes
prefered master = yes
local master = yes
; senhas criptografadas
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd.db
Onde os parmetros signicam:
netbios name = gleydson - Nome do computador. Este tambm ser o nome
usado pelas outras mquinas clientes quando for congurar o PDC (controlador de
domnio).
workgroup = focalinux - Nome do domnio que est criando. Todas as m-
quinas que pertencerem a este domnio, tero o nvel de acesso denido pelo PDC.
Note que o parmetro workgroup tambm usado ao especicar o nome do grupo
de trabalho quando se usado a congurao grupo de trabalho (Congurao em
Grupo de Trabalho on page 323).
security = user - Requerido para controle de acesso por domnio, j que uti-
lizado o controle de acesso local usando usurios e grupos locais.
domain master = yes - Especica se est mquina est sendo congurada para
ser o PDC da rede. OBS: Por favor, certique-se que no existe outro PDC no do-
mnio. Veja Domain Master Browser on the facing page. prefered master =
yes - Fora uma eleio com algumas vantagens para seu servidor ser eleito sempre
como o controlador de domnio. Isto garante que a mquina SAMBA sempre seja o
PDC. Veja Navegao no servidor/tipo de servidor on page 315. local master
= yes - Dene se a mquina ser o controlador principal do grupo de trabalho local
que ela pertence.
Pronto, agora teste se existem erros em sua congurao executando o comando testparm
(Buscando problemas na congurao on page 317) e corrija-os se existir. Resta agora reiniciar
o servidor nmbd para que todas as suas alteraes tenham efeito. Para adicionar seus clientes a
um domnio, veja Contas de mquinas de domnio on the next page e Congurando clientes
em Domnio on page 365.
Captulo 18. SAMBA 332
18.7.5 Contas de mquinas de domnio
Uma conta de mquina de domnio garante que nenhum outro computador possa utilizar o
mesmo nome de uma mquina convel e assim utilizar os compartilhamentos que ela tem
permisso. Os clientes Windows NT, Windows XP e Windows 2000 precisam de uma conta
de mquina para ter acesso ao domnio e seus recursos. A criao de uma conta de mquina
bastante semelhante a criao da conta de um usurio normal no domnio.
Existe uma coisa que precisa sempre ter em mente quando estiver congurando uma conta de
mquina de domnio: Quando voc cria uma conta para a mquina, ela entra e altera sua senha
no prximo logon usando um segredo entre ela e o PDC, este segredo a identica sempre
como dona daquele nome NetBIOS, ou seja, at o primeiro logon no NT, outra mquina com
o mesmo nome NetBIOS poder ser a dona do netbios naquele domnio caso faa o logon no
domnio. Anica forma de se evitar isto logar imediatamente no domnio NT assimque criar
as contas de mquinas.
Existem duas formas para criao de contas de mquinas: manual e automtica.
Criando contas de mquinas manualmente
Para criar uma conta de domnio para a mquina master, siga estes 2 passos:
1 Crie uma conta de mquina no arquivo /etc/passwd:
useradd -g domainmac -c "Maquina de Dominio" -s /bin/false -d /dev/null master$
O comando acima cria uma conta para a mquina master$ e torna ela parte do grupo
domainmac. necessrio especicar o caracter $ aps o nome da mquina para criar
uma conta de mquina no domnio, caso contrrio o prximo passo ir falhar. Acredito
que nas prximas verses do SAMBAseja desnecessrio o uso do arquivo /etc/passwd
para a criao de contas de mquina.
2 Crie uma conta de mquina no arquivo /etc/samba/smbpasswd:
smbpasswd -m -a master
Isto cria uma conta de mquina para o computador master no arquivo /etc/samba
/smbpasswd. Note que a criao de uma conta de mquina muito semelhante a cria-
o de um usurio apenas precisa adicionar a opo -m. Quando for criar uma conta com
o smbpasswd No necessrio especicar $ no nal do nome da mquina. O mais im-
portante: Entre IMEDIATAMENTE no domnio aps criar a conta de mquina usando
a conta de administrador de domnio criada no SAMBA (veja Criando uma conta de
administrador de domnio on the next page)! como a mquina ainda no se autenticou
pela primeira vez, qualquer mquina que tenha o mesmo nome e entre no domnio, po-
der alocar o nome recm criado. A nica forma de resolver este problema, apagando
a conta de mquina e criando-a novamente no domnio. Siga os passos de acordo com
o sistema operacional em Congurando clientes em Domnio on page 365 para colocar
seus clientes em domnio.
OBS1: Como segurana, recomendo desativar a conta de mquina no /etc/passwd usando
o comando passwd -l conta. Esta conta NUNCA dever ser usada para login, isto deixa
nossa congurao um pouco mais restrita.
Captulo 18. SAMBA 333
OBS2: A localizao do arquivo de senhas criptografadas do SAMBA pode ser modicado
atravs da opo smb passwd file na seo [global] do arquivo smb.conf.
OBS3: Os que tem experincia com NT e Windows 2000 devem ter notado que este mtodo
semelhante ao do Server Manager das ferramentas de gerenciamentos de servidores existentes
no Windows.
Criando contas de mquinas automaticamente
Atravs deste mtodo, as mquinas clientes tero sua conta criada automaticamente assim que
seja feita a entrada no domnio usando a conta do administrador de domnio no SAMBA. Este
o mtodo recomendvel de colocao de mquinas no domnio por ser mais prtica ao invs
do mtodo manual. Note que normalmente isto funciona para o WinXP e Win2000 mas no
funciona em redes com o NT4, devendo ser criadas contas de mquinas usando o mtodo
manual.
Para fazer a congurao automtica, coloque a seguinte linha no arquivo smb.conf na seo
[global]:
add user script = useradd -g domainmac -c "Maquina de Dominio" -s /bin/false -d /dev/null %u
Assim, a conta de mquina ser automaticamente criada quando o administrador zer sua
congurao no domnio (veja Criando uma conta de administrador de domnio on the cur-
rent page). No SAMBA 3.0, a opo add machine script dever ser usada no lugar de add
user script para adicionar uma mquina no domnio.
18.7.6 Criando uma conta de administrador de domnio
A conta de administrador do domnio a conta que tem permisses para realizar operaes
de manuteno e administrao de mquinas que compem o domnio de rede. Com ela
possvel, entre outras coisas, adicionar e remover mquina que compem o domnio. Para es-
pecicar que contas de usurios do arquivo /etc/samba/smbpasswd que tero poderes ad-
ministrativos, utilize a opo domain admin group ou admin users na seo [global]
do arquivo /etc/samba/smb.conf.
O parmetro admin users permite que todas as operaes realizadas pelo usurio sejam fei-
tas com poderes de usurio root. Isto necessrio porque o arquivo smbpasswd (usado para
ajustar as contas de mquinas) normalmente tem permisses de leitura/gravao somente
para root. O domain admin group permite que usurios especcos ou usurios do grupo es-
pecicado sejam parte do grupo de administradores do domnio para adicionar mquinas,
etc. Por exemplo, para tornar o usurio gleydson com privilgios para adicionar/remover
mquinas no domnio:
[global]
...
Captulo 18. SAMBA 334
admin users = gleydson
ou
domain admin group = @admins gleydson
Isto permite que o usurio gleydson possa adicionar/remover mquinas do domnio NT
(veja Congurando clientes em Domnio on page 365) entre outras tarefas. Por segurana,
recomendo que coloque esta conta no invalid users de cada compartilhamento para que
seja utilizada somente para ns de gerenciamento de mquinas no domnio, a menos que de-
seje ter acesso total aos compartilhamentos do servidor (nesse caso, tenha conscincia do nvel
de acesso que esta conta possui e dos problemas que pode causar caso caia em mos erradas).
OBS1: Tenha SEMPRE bastante cuidado com quem dar poderes de administrador de dom-
nio, pois toda sua rede poder car vulnervel caso os cuidados de administrao no estejam
em boas mos.
OBS2: Em verses antigas do SAMBA, somente o usurio root tem poderes para adicionar
mquinas no domnio usando o parmetro domain admins group, devendo ser tambm adicio-
nado no arquivo smbpasswd para que possa fazer isto e obviamente no dever estar listado
eminvalid users. Mesmo assim, existemoutras formas explicadas no guia de se contornar
o risco causado pela liberao de acesso do usurio root.
18.7.7 Criando Scripts de logon
Uma dos recursos mais teis em um domnio a possibilidade de se executar comandos nas
mquinas cliente quando fazem o logon no domnio. Desta forma, possvel instalar pro-
gramas, executar anti-vrus, mapear compartilhamentos automaticamente no clientes, etc. A
programao de scripts de logon feita usando a linguagem em lote do DOS, com possibili-
dades de usar variveis de ambiente, cpia de arquivos entre servidores, etc. O guia no ir
abordar a programao em linguagem de lote, mas isto simples de se encontrar na internet e
mesmo a documentao que acompanha o prprio Windows til.
Para habilitar o recurso de scripts de logon na mquina, adicione os seguintes parmetros no
arquivo smb.conf:
[global]
domain logons = yes
logon script = logon.cmd
[netlogon]
path = /pub/samba/netlogon
read only = yes
write list = ntadmin
Segue a descrio de cada parmetro com detalhes importantes para a congurao e funcio-
namento do recurso de logon:
Captulo 18. SAMBA 335
domain logons - Deve ser denido para yes para ativar o recurso de logon scripts do
SAMBA.
logon drive a unidade de disco que ter o homedir do usurio mapeado. Isto so-
mente usado por mquinas NT/2000/XP.
logon script - Dene qual o script que ser executado na mquina cliente quando
zer o logon. Ele deve ser gravado no diretrio especicado pela opo path do com-
partilhamento [netlogon] (/pub/samba/netlogon no exemplo). Os scripts de lo-
gon podem ser tanto em formato .bat ou .cmd. Se for programar um script universal,
recomendvel o uso do formato .bat por ser compatvel tanto com Win9X e WinNT.
Um detalhe que deve ser lembrado durante a programao do script de logon que ele DEVE
seguir o formato DOS, ou seja, ter os caracteres CR+LF como nalizador de linhas. Para utilizar
editores do UNIX para escrever este script, ser necessrio executar o programa flip (flip
-m -b arquivo) ou unix2dos no arquivo para converte-lo em formato compatvel com o
DOS.
Segue abaixo um exemplo de script de logon que detecta quando o cliente Windows 95/NT,
ajusta a hora com o servidor e mapeia 2 unidades de disco:
@echo off
cls
rem Logon Script desenvolvido por Gleydson Mazioli
rem da Silva como modelo para o guia Foca GNU/Linux
rem
rem Este script pode ser utilizado para fins didticos
rem e distribudo livremente de acordo com os termos
rem da GPL
rem
echo "Aguarde enquanto sua mquina efetua"
echo "o logon na rede do domnio focalinux."
rem
if %OS%==Windows_NT goto NT-2000
rem
echo "--------------------------------"
echo "SO: %OS%"
echo "Usurio: %USERNAME%"
echo "Grupo de Trabalho: %LANGROUP%"
echo "Servidor: %DOMINIO%"
echo "--------------------------------"
echo "Recuperando compartilhamentos"
rem mapeia o compartilhamento publico definido no servidor
net use e: \\gleydson\publico
echo "Sincronizando data/hora"
rem sincroniza a data/hora com o servidor
Captulo 18. SAMBA 336
net time \\gleydson /set /yes
goto fim
rem
rem
:NT-2000
echo "--------------------------------"
echo "SO: %OS%"
echo "Usurio: %USERNAME%"
echo "Windows: %windir%"
echo "Logon de domnio: %LOGONSERVER%"
echo "--------------------------------"
echo "Recuperando compartilhamentos"
net use e: \\gleydson\publico /persistent:yes
echo "Sincronizando data/hora"
net time \\gleydson /set /yes
rem
rem
goto fim
rem
:fim
Note no exemplo acima que no podem haver linhas em branco, voc dever utilizar a pala-
vra rem (comentrio em arquivos em lote) em seu lugar. Note que existem diferenas entre
o comando net do Windows 9x/ME e do NT, as variveis tambm possuem um signicado
diferente entre estes 2 sistemas, isto explica a necessidade de se incluir um bloco separado
detectando a existncia de qual sistema est sendo efetuado o logon.
A lista completa de variveis disponveis para cada sistema operacional pode ser obtida
colocando-se set >c:\vars.txt que gravar uma lista de variveis disponveis durante
o logon no arquivo c:\vars.txt da mquina cliente.
OBS: Caso especique um computador que contm o script de login, lembre-se de faze-lo
sempre com \ ao invs de / para no ter incompatibilidade com o Windows 95/3.11.
ATENO: Lembre-se que copiar e colar pode no funcionar para este script. Leia novamente
esta seo do guia se estiver em dvidas.
18.7.8 Congurando pers de usurios
Os proles permitem que os clientes utilizem o mesmo perl em qualquer mquina que ele
se autentique na rede. Isto feito aps a autenticao copiando os arquivos que contm os
dados de personalizao de usurios (user.dat, NTuser.dat) para a mquina local. Este
processo tambm inclui a cpia de papis de parede, links da rea de trabalho, cache do IE,
etc. Para congurar o recurso de pers mveis no domnio, necessrio adicionar os seguintes
parmetros no seu arquivo smb.conf:
[global]
Captulo 18. SAMBA 337
security = user
encrypt passwords = yes
domain logons = yes
logon drive = H:
logon path = \\%N\profilesNT\%u
logon home = \\%N\profiles\%u
preserve case = yes
short preserve case = yes
case sensitive = no
[profiles]
path = /pub/profiles
read only = no
create mask = 0600
directory mask = 0700
[profilesNT]
path = /pub/profilesNT
read only = no
create mask = 0600
directory mask = 0700
Segue a descrio dos parmetros de detalhes para seu funcionamento:
O parmetro domain logons = yes especica que o servidor ser usado para fazer
logons no domnio. Quando este parmetro denido para yes, a mquina automatica-
mente tentar ser o PDC.
logon path e logon home denem (respectivamente) o diretrio de logon do /pub
/profilesNT/usuario (NT) e /pub/profiles/usuario (Win95) respectivamente.
Durante o logon, a varivel %N ser substituda pelo nome do servidor (ou servidor de
diretrios, se for o caso) e a varivel %u pelo nome do usurio. O sistema operacional
de origem detectado no momento da conexo. Isto signica que o usurio poder ter
2 proles diferentes, de acordo com o tipo de sistema operacional cliente que estiver
conectando.
O diretrio home do usurio ser mapeado para a unidade H: (logon drive = h:).
O parmetro logon drive somente usado pelo NT/2000/XP.
As opes preserve case, short preserve case e case sensitive permite
que os nomes dos arquivos/diretrios tenham as letras maisculas/minsculas man-
tidas, isto requerido para os proles.
O compartilhamento dos 2 proles pode ser feito sem tantos traumas, mas isto no ser ex-
plicado profundamente no guia pois o procedimento segue o mesmo padro do NT sendo
bastante documentado na internet.
Note que possvel denir um servidor separado para servir os proles para um domnio mo-
dicando a varivel %N para apontar direto para a mquina. Na mquina que armazenar os
proles, basta denir o nvel de segurana por servidor (security = server) e o ende-
reo IP do servidor de senhas (password server = IP).
Captulo 18. SAMBA 338
OBS1: Os pers s funcionam caso o servidor de proles contenha a opo security =
user e encrypt passwords = yes ou security = server e password server =
endereo_IP. Caso tenha problemas, verique se uma destas alternativas est correta.
OBS2: Quando utiliza o SAMBA com o Windows 2000 SP2, necessrio adicionar a opo nt
acl support = no no compartilhamento [profiles], caso contrrio, ele retornar um
erro de acesso ao compartilhamento.
18.7.9 Modicaes de permisses de acesso pelos clientes do domnio
Um usurio do Windows NT (ou verses baseadas neste) pode modicar as permisses dos
arquivos/diretrios que tem acesso atravs da caixa de dilogo de listas de acesso do NT,
lembrando que estas permisses nunca substituiro as denidas pelo administrador local.
A opo nt acl support dever estar denida para yes na seo [global] do arquivo de
congurao, caso contrrio voc no ter acesso para mudar as permisses atravs de caixas
de dilogo do NT. \
18.8 Ativando o suporte a senhas criptografadas
O uso de senhas criptografadas um requisito quando voc deseja congurar o SAMBA para
ser umservidor PDCou umcliente de umdomnio. Quando utiliza senhas criptografadas, elas
trafegam em formato seguro atravs da rede, dicultando a captura por outras pessoas. Em
verses mais recentes do Windows (a partir da OSR/2 e NT 4 service pack3) o suporte a senhas
criptografadas vem habilitado como padro para login e utilizao de servios da rede. No
recomendvel desativar o uso de senhas criptografadas, mas se mesmo assim for necessrio
veja Senhas criptografadas ou em texto puro? on page 357.
Quando usamos senhas criptografadas, elas so armazenadas no arquivo /etc/samba
/smbpasswd ao invs do /etc/passwd, isto permite que possamos controlar as permisses
de usurios separadamente das do sistema e diferenciar os logins do domnio dos logins do
sistema (usurios que possuem shell). Caso tenha um servidor que j possua muitas contas
de usurios acessando em texto plano, recomendo ler Migrando de senhas texto plano para
criptografadas on page 340 para facilitar o processo de migrao de contas.
O utilitrio smbpasswd o programa utilizado para gerenciar este arquivo de senhas e tam-
bm o status de contas de usurios/mquinas do domnio. Siga estes passos para ativar o uso
de senhas criptografadas no SAMBA:
1 Edite o arquivo /etc/samba/smb.conf e altere as seguintes linhas na seo [global]
para adicionar o suporte a senhas criptografadas:
[global]
encrypt passwords = true
smb passwd file =/etc/samba/smbpasswd
A linha encrypt passwords = true diz para usar senhas criptografadas e
que o arquivo /etc/samba/smbpasswd contm as senhas (smb passwd file
=/etc/samba/smbpasswd). Caso sua mquina seja apenas um cliente de rede (e no
Captulo 18. SAMBA 339
um PDC), voc pode pular para o passo onde o SAMBA reiniciado (no nal dessa lista),
no necessria a criao do arquivo de senhas para autenticao pois os usurios sero
validados no servidor.
2 Execute o comando mksmbpasswd </etc/passwd >/etc/samba/smbpasswd. Ele
pega toda a base de usurios do /etc/passwd e gera um arquivo /etc/samba
/smbpasswd contendo as contas destes usurios. Por padro, todas as contas so DE-
SATIVADAS por segurana quando este novo arquivo criado. O novo arquivo ter o
seguinte formato:
gleydson:1020:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:[U ]:LCT-00000000:Gleydson Mazioli da Silva,,,
geovani:1004:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:[U ]:LCT-00000000:Geovani Mazioli da Silva,,,
Os campos so separados por : e cada campo possui o seguinte signicado:
1 O primeiro o nome de usurio
2 UID do usurio no sistema UNIX que a conta ser mapeada.
3 Senha Lan Manager codicada em hex 32 criado usando criptograa DES usada
pelo Windows 95/98/ME.
4 Senha hash criada em formato do NT codicada em hex 32. Esta senha criada
pegando a senha do usurio, convertendo-a para maisculas, adicionados 5 bytes
de caracteres nulos e aplicando o algoritmo md4.
5 Opes da conta criada no smbpasswd:
U - Especica que a conta uma conta de usurio normal (veja Adicionando
usurios no smbpasswd on the next page)
D - Signica que a conta foi desativada coma opo -d (veja Desabilitando uma
conta no smbpasswd on page 341).
W - Especica que a conta uma conta de mquina criada com a opo -m (veja
Contas de mquinas de domnio on page 332).
N - A conta no possui senha (veja Denindo acesso sem senha para o usurio
on page 342).
Os caracteres XXXXXXXXXXXXXXX no campo da senha, indica que a conta foi recm
criada, e portanto est desativada. O prximo passo ativar a conta para ser usada pelo
SAMBA. ATENO: O mtodo de criptograa usado neste arquivo no totalmente
seguro. Recomendo manter o arquivo de senhas smbpasswd em um diretrio com a
permisso de leitura somente pelo root.
3 Para ativar a conta do usurio gleydson, usamos o comando:
smbpasswd -U gleydson
Digite a senha do usurio e repita para conrmar. Assimque a senha for denida, a conta
do usurio ativada. Voc tambmpode especicar a opo -s para entrar coma senha
pela entrada padro (muito til em scripts). Apenas tenha cuidado para que esta senha
no seja divulgada em seus arquivos/processos.
4 Reinicie o processo do SAMBA (veja Iniciando o servidor/reiniciando/recarregando a
congurao on page 306).
5 Verique se o suporte a senhas criptografadas est funcionando com o comando:
smbclient -L localhost -U gleydson
Substitua localhost pelo IP do servidor e gleydson pelo usurio. Caso obtenha a
mensagem session setup failed: NT_STATUS_LOGON_FAILURE signica que
a senha informada est incorreta.
Captulo 18. SAMBA 340
18.8.1 Migrando de senhas texto plano para criptografadas
No SAMBA, possvel fazer um processo de migrao de senhas em texto plano de usurios
para criptografadas sem que eles deixem de acessar o servidor durante esta mudana. Caso
este seja seu caso, insira o parmetro
update encrypted = yes
na seo [global] do seu arquivo de congurao smb.conf. A senha criptografada de-
nida assim que o usurio se logar usando sua senha em texto plano. No se esquea de
desativar esta opo ou remove-la aps o prazo necessrio para que todas as senhas sejam
trocadas.
18.8.2 Adicionando usurios no smbpasswd
A adio de um usurio no smbpasswd segue duas etapas: primeiro necessrio adiciona-lo
no sistema com o adduser e depois no samba com o smbpasswd. Voc deve estar se pergun-
tando qual a vantagem de se ter um arquivo separado de usurios se ainda preciso criar o
login nos dois arquivos; OSAMBA para fazer o controle de acesso aos arquivos utiliza alm dos
mecanismos tradicionais do NT, o controle de permisses a nvel UNIX para manter os arqui-
vos ainda mais restritos. Alm disso, ser necessrio usurios e grupos para criao e acesso
ao sistema.
1 Adicione um usurio no sistema com o comando:
useradd -g grupo-dominio -c "Usurio de Domnio" -s /bin/false -d /dev/null joao
Este comando adiciona o usurio joao no grupo grupo-dominio e no dene hem
uma shell, diretrio home nem senha para este usurio. Isto mantm o sistema mais se-
guro e no interfere no funcionamento do SAMBA, pois somente necessrio para fazer
o mapeamento de UID/GID de usurios com as permisses do sistema UNIX. interes-
sante padronizar os usurios criados no domnio para um mesmo grupo para pesquisa e
outras coisas.
2 Crie o usurio joao no SAMBA:
smbpasswd -a joao
Ser solicitada a senha do usurio.
18.8.3 Removendo usurios do smbpasswd
Utilize o comando smbpasswd -x usuario para remover um usurio do arquivo
smbpasswd. Se desejar, voc pode manter o usurio no /etc/passwd ou remove-lo com
o userdel.
OBS: Removendo um usurio deste arquivo far que ele no tenha mais acesso ao SAMBA.
Utilize o comando smbpasswd -a teste
Captulo 18. SAMBA 341
18.8.4 Desabilitando uma conta no smbpasswd
Como administrador, pode ser necessrio que precise desativar temporariamente uma conta
de usurio por alguma situao qualquer (m utilizao de recursos, dvida se a conta est
sendo usada, para que ele ligue reclamando de autenticao para ter aquela desejada conversa
(hehe), etc.). Remover uma conta e novamente adiciona-la ento no uma situao muito
prtica. Utilize ento o seguinte comando para desativar uma conta de usurio:
smbpasswd -d usuario
Quando a conta de usurio desativada, uma ag D adicionada s opes do usurio
(junto com as opes UX). Veja Habilitando uma conta no smbpasswd on this page para
reativar a conta.
18.8.5 Habilitando uma conta no smbpasswd
Uma conta desativada com o uso do comando smbpasswd -d pode ser novamente ativada
usando:
smbpasswd -e usuario
18.8.6 Alterando a senha de um usurio
O utilitrio smbpasswd pode ser usado tanto para alterar a senha de usurios locais do SAMBA
ou de uma conta em um servidor remoto (seja SAMBA, NT, W2K). Para alterar a senha de um
usurio local, digite:
smbpasswd -U usuario
Lhe ser pedida a antiga senha, a nova senha e a conrmao. Caso seja o usurio root,
somente a nova senha e a conrmao. Isto mecanismo de proteo para usurios que esque-
cem a senha ;-)
Para alterar a senha de um usurio remoto, utilize:
smbpasswd -r servidor -U usuario
Note que apenas foi adicionada a opo -r servidor comparado com a opo anterior. A
diferena que a senha antiga do usurio sempre ser solicitada para troca (pois o root das 2
mquinas pode no ser o mesmo).
Captulo 18. SAMBA 342
18.8.7 Denindo acesso sem senha para o usurio
Para fazer um usurio acessar sem senha, use o comando:
smbpasswd -n usuario
Isto completamente desencorajado e necessita que a opo null passwords da seo
[global] no arquivo smb.conf esteja ajustada para yes (que NO o padro).
18.9 Ativando o suporte a senhas em texto plano
Esta forma de autenticao enviada por implementaes NetBIOS antigas, como a encontrada
no Lan Manager, Windows for Workgroups e Windows 95 OSR1. As verses mais no-
vas destas implementaes enviam a senha em formato criptografado, sendo necessrio tam-
bm usar o formato criptografado no SAMBA para que possa se autenticar (veja Ativando o
suporte a senhas criptografadas on page 338).
Em Senhas criptografadas ou em texto puro? on page 357 feita uma comparao entre
o uso de autenticao usando senhas em texto plano e senhas criptografadas. Em geral, o
administrador prefere a utilizao da autenticao usando texto plano quando deseja usar o
/etc/passwd para autenticao e est usando grupos de trabalho necessrio usar senhas
criptografadas para autenticao).
Para congurar o SAMBA para utilizar senhas em texto, modique o parmetro encrypt
passwords para no:
[global]
encrypt passwords = no
Reinicie o SAMBA (Iniciando o servidor/reiniciando/recarregando a congurao on
page 306) e a partir de agora, ele usar o /etc/passwd para autenticao.
OBS: Tenha certeza de no estar participando de um domnio ou que sua mquina seja o PDC
antes de fazer esta modicao.
18.9.1 Congurando o acesso de clientes para uso de senhas em texto plano
Esta seo descreve como congurar clientes para acessar o servidor SAMBA usando autentica-
o em texto plano. Atualmente o guia cobre os seguintes clientes:
Lan Manager on the facing page
Windows for Workgroups on the next page
Windows 95 / Windows 95A on the facing page
Windows 95B on the next page
Windows 98/98SE on the facing page
Captulo 18. SAMBA 343
Windows ME on the next page
Windows NT Server/WorkStation on the following page
Windows 2000 on the next page
Linux on the following page
Em cada seo, tambm explicado como habilitar novamente a autenticao usando senhas
criptografadas (se suportado pelo cliente).
Lan Manager
Cliente NetBIOS para DOS. Ele trabalha somente com senhas em texto plano.
Windows for Workgroups
Este o padro de autenticao do Windows for Workgroups caso no tenha feito ne-
nhuma alterao especca (mas desconheo algo que faa-o trabalhar com senhas criptogra-
fadas).
Windows 95 / Windows 95A
OWindows 95 at a release A, utiliza texto plano como padro para autenticao (veja qual
a release clicando com o boto direito em Meu Computador e Propriedades.
Windows 95B
Copie o seguinte contedo para um arquivo chamado win95-textoplano.reg:
REGEDIT4
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]
"EnablePlainTextPassword"=dword:00000001
Aps isto, execute no Windows 95 o seguinte comando: regedit
win95-textoplano.reg e reinicie o computador para fazer efeito.
Para voltar a utilizar criptograa, apenas altere o valor dword para 00000000 no arquivo e
executa novamente o regedit.
Windows 98/98SE
O procedimento idntico ao Windows 95B on the current page.
Captulo 18. SAMBA 344
Windows ME
O procedimento idntico ao Windows 95B on the preceding page.
Windows NT Server/WorkStation
Copie o seguinte contedo para um arquivo chamado winNT-textoplano.reg:
REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Rdr\Parameters]
"EnablePlainTextPassword"=dword:00000001
Aps isto, execute no Windows NT o seguinte comando: regedit
winNT-textoplano.reg e reinicie o computador para fazer efeito.
Para voltar a utilizar criptograa, apenas altere o valor dword para 00000000 no arquivo e
execute novamente o regedit.
Windows 2000
Copie o seguinte contedo para um arquivo chamado win2000-textoplano.reg:
REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkStation\Parameters]
"EnablePlainTextPassword"=dword:00000001
Aps isto, execute no Windows 2000 o seguinte comando: regedit
win2000-textoplano.reg e reinicie o computador para fazer efeito.
Para voltar a utilizar criptograa, apenas altere o valor dword para 00000000 no arquivo e
execute novamente o regedit.
Linux
Inclua/modique a linha encrypt passwords = no no arquivo smb.conf e reinicie o
SAMBA. Para voltar a utilizar criptograa, veja Ativando o suporte a senhas criptografadas
on page 338.
Captulo 18. SAMBA 345
18.10 Mapeamento de usurios/grupos em clientes
O mapeamento de usurios do servidor remoto com a mquina local usado quando voc
deseja controlar o acesso aos arquivos/diretrios a nvel de usurio. No Windows isto per-
mite que cada arquivo/diretrio tenha o acesso leitura/gravao somente para os usurios
denidos e autenticados no controlador de domnio. No Linux as permisses de arquivos e
diretrios podem ser denidas para o usurio do PDC, garantindo o mesmo nvel de controle
de acesso.
Esta seo explica como congurar o mapeamento de UID/GID entre o servidor PDC SAMBA
e seus clientes NetBIOS Windows e Linux.
18.10.1 Mapeamento de usurios/grupos domnio em Windows
Para o Windows utilizar os usurios remotos do servidor para fazer seu controle de acesso por
nvel de usurio, siga os seguintes passos:
Windows 9X Entre no Painel de Controle/Propriedades de Rede e clique na tab Controle de Acesso.
Marque a opo Controle de acesso a nvel de usurio e coloque o nome da mquina PDC na
caixa de dilogo de onde os usurios/grupos sero obtidos. Voc tambm pode colocar
o nome do grupo de trabalho, neste caso a mquina far uma busca pelo PDC ou outra
mquina de onde pode obter os nomes de usurios/grupos. OBS: Para fazer isto, voc
dever estar autenticado no domnio.
18.10.2 Mapeamento de usurios/grupos domnio em Linux
A associao de UIDs de usurios de um domnio com usurios locais no Linux feita pelo
programa winbind. Ele utiliza o mecanismo nsswitch para obter outras fontes de dados de
usurios e os associa nas ferramentas de gerenciamento de contas existentes no sistema. Siga
estes passos para fazer sua instalao e congurao do Winbind em um servidor Linux:
Instale o programa winbind: apt-get install winbind.
Modique o arquivo smb.conf adicionando as seguintes linhas na seo [global]:
winbind separator = +
winbind cache time = 30
winbind uid = 10000-15000
winbind gid = 10000-12000
winbind enum users = yes
winbind enum groups = yes
template homedir = /home/winbind/%D/%U
template shell = /bin/false
Onde
winbind separator Separador usado para separar o nome dos grupos do nome de do-
mnio. Este parmetro somente tem sentido quando usado em conjunto com um
PDC Windows ou quando os mdulos pam_winbind.so e nss_winbind.so es-
to sendo utilizados.
Captulo 18. SAMBA 346
winbind cache time Dene a quantidade de tempo em segundos que um nome/grupo
permanecer no cache local para no ser feita uma nova consulta no servidor PDC.
winbind uid Especica o intervalo que ser usado para mapear os nomes de usurios
remotos como UIDs locais. Voc precisar ter certeza que nenhum UID nesse inter-
valo usado no sistema, como pelo LDAP, NIS ou usurios normais. Por padro,
os IDS de usurios normais na maioria dos sistemas Linux, comeam por 1000. No
exemplo sero usados os UIDs de 10000 a 15000 para mapeamento e UIDs dos usu-
rios do domnio para usurios locais.
winbind gid Especica o intervalo de GIDs que ser usado para mapear os nomes de
grupos remotos do domnio como GIDs locais. Como no parmetro winbind uid,
voc dever ter certeza que esta faixa de GIDs no est sendo usada em seu sistema.
OBS: Atualmente SAMBA no possui suporte a grupos globais, apenas para usu-
rios globais, desta forma os grupos da mquina remota no sero trazidos para o
sistema. Uma forma de contornar isto, utilizando o LDAP ou o NIS no PDC e nos
clientes Linux.
winbind enum users Permite enumerar usurios do winbind para retornarem dados
quando solicitados. A no ser que possua uma instalao parecida em todas as
mquinas (como com o uso de LDAP e NIS) responda yes para no ter proble-
mas.
winbind enum groups Permite enumerar grupos do winbind para retornarem dados
quando solicitados. A no ser que possua uma instalao parecida em todas as
mquinas (como como uso de LDAP e NIS) responda yes para no ter problemas.
template homedir Quando o sistema cliente for um Windows NT ou baseado, este dire-
trio ser retornado como diretrio de usurio para o sistema. Oparmetro %Dser
substitudo pelo nome do domnio e %U pelo nome de usurio durante a conexo.
template shell Este ser o shell enviado para mquinas NT ou baseadas nele como shell
usado para login. O valor usado foi /bin/false pois desabilita os logons, mas
voc poder usar /bin/sh (ou algum outro shell) para efetuar conexes do co-
mando net ou outras ferramentas NetBEUI ao servidor.
Reinicie o servidor SAMBA
Edite o arquivo /etc/nsswitch.conf alterando a ordem de pesquisa de nomes de
usurios e grupos do sistema local para a seguinte:
passwd: files winbind
group: files winbind
shadow: compat
Agora, inicie o daemon winbind local com o comando: /etc/init.d/winbind
restart.
Entre no domnio com o comando: smbpasswd -j domnio -r nome_do_PDC -U
usuario (veja Linux on page 368 para aprender como entrar no domnio em caso de
dvidas).
Agora faa o teste para obter a listagem dos grupos e usurios do domnio do PDC digi-
tando:
wbinfo -u
wbinfo -g
getent passwd
getent group
Captulo 18. SAMBA 347
Caso isto no acontea, revise suas conguraes e veja os logs procurando por erros
quando o winbind tenta obter a lista de usurios/grupos do domnio.
Agora voc deve ser capaz de criar diretrios/arquivos locais usando os nomes de usu-
rios/grupos do domnio. Lembre-se de reiniciar sempre o winbind quando reiniciar o
SAMBA por alguma modicao for feita (ao mesmo que saiba que no afeta o winbind),
assim como entrar novamente no domnio, caso contrrio o mapeamento deixar de funcio-
nar.
OBS: Atualmente, o winbind no oferece suporte a restries por data/hora de logon para
estaes de trabalho. Isto dever ser implementado em uma futura verso
18.11 Compartilhamento de impresso no servidor SAMBA
Este captulo documenta como congurar o seu servidor samba para permitir o acesso a com-
partilhamento de arquivos e impresso no sistema.
18.11.1 Congurando o Linux como um servidor de impresso Windows
Ser necessrio ter o pacote samba instalado e adicionar as seguintes linhas no seu arquivo
/etc/samba/smb.conf:
[hp-printer]
path = /tmp
printer name=HP DeskJet 690C
printable = yes
print command = lpr -r -h -P %p %s
valid users = winuser winuser2
create mode = 0700
O compartilhamento acima tornar disponvel a impressora local lp as mquinas Windows
com o nome HP DeskJet 690C. Uma impressora alternativa pode ser especicada modi-
cando a opo -P da linha de comando do lpr. Note que somente os usurios winuser e
winuser2 podero usar esta impressora. Os arquivos de spool (para gerenciar a la de im-
presso) sero gravador em/tmp (path = /tmp) e o compartilhamento [hp-printer] ser
mostrado como uma impressora (printable = yes).
Agora ser necessrio instalar o driver desta impressora no Windows (HP 690C) e escolher
impressora instalada via rede e seguir os demais passos de congurao.
18.12 Controle de acesso ao servidor SAMBA
Este captulo documenta o controle de acesso ao servidor samba e restries.
Captulo 18. SAMBA 348
18.12.1 Nvel de acesso de usurios conectados ao SAMBA
Quando acessa um compartilhamento, o usurio do samba mapeado com o UID respectivo
de usurio do sistema ou o usurio guest (especicado pela opo guest account) no caso de
um acesso pblico. Quando isto ocorre, um processo lho do smbd executado sobre o UID e
GID deste usurio. Isto signica que em nenhuma ocasio o SAMBA dar mais permisses que
as necessrias para o usurio (com excesso de quando usado o parmetro admin users,
veja Criando uma conta de administrador de domnio on page 333).
18.12.2 Restringindo o acesso por IP/rede
Esta restrio pode ser feita pelos parmetros allow hosts e deny hosts tanto em servios indivi-
duais ou em todo o servidor. Os parmetros hosts allow e hosts deny so equivalentes a estes
acima. O allow hosts permite o acesso a mquina especicadas como argumento. So permiti-
dos os seguintes mtodos para permitir o acesso a uma mquina/rede:
192.168.1.1 - IP da mquina
servidor - Nome da mquina
192.168.1.0/255.255.255.0 - IP com mscara de rede
192.168.1.0/24 - IP com mscara de rede octal
192.168.1. - Poro de rede sem o host (como no hosts.allow e hosts.deny.
@nome - Pesquisa por mquinas no grupo NIS.
permitido usar mais de um endereo IP separando-os por vrgulas ou espaos. A palavra
chave EXCEPT pode ser usada para fazer excesso de umou mais endereos IPs, por exemplo:
hosts allow = 192.168.1. EXCEPT 192.168.1.20
Que permite o acesso a toda as mquinas da faixa de rede 192.168.1.0/24 exceto para a
192.168.1.20.
O deny hosts possui a mesma sintaxe do allow hosts mas bloqueia o acesso das mquinas espe-
cicadas como argumento. Quando o allow hosts e deny hosts so usados juntos, as mquinas
em allow hosts tero prioridade (processa primeiro as diretivas em allow hosts e depois em deny
hosts).
OBS: O endereo de loopback (127.0.0.1) nunca bloqueado pelas diretivas de acesso. Prova-
velmente deve ter notado porque o endereo de loopback no pode ser bloqueado e as con-
seqncias disto para o SAMBA.
Se voc est executando o SAMBA via inetd, os arquivos hosts.allow e hosts.deny so
vericados antes do controle e acesso allow hosts e deny hosts para controle de acesso ao smbd.
Caso estiver usando o SAMBA viainetd e deseja restringir o acesso usando TCP Wrappers, veja
O mecanismo de controle de acessos tcpd on page 62.
OBS: Lembre-se de usar o testparm para vericar a sintaxe do arquivo smb.conf sempre
que desconar de problemas (veja Buscando problemas na congurao on page 317).
Captulo 18. SAMBA 349
Testando a restrio de Acesso por IP/Redes
Um mtodo interessante e til para testar se a nossa congurao vai bloquear o acesso a
servios usando o testparm da seguinte forma:
testparm /etc/samba/smb.conf IP/host
Voc precisar dizer para o testparm qual o arquivo de congurao que est usando e
o endereo IP/nome de host que far a simulao de acesso. Este mtodo no falsica o
endereo IP para testes, apenas usa os valores em allow hosts e deny hosts para checagem. Por
exemplo, para vericar o acesso vindo do IP 192.168.1.50:
testparm /etc/samba/smb.conf 192.168.1.50
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[tmp]"
Processing section "[cdrom]"
Loaded services file OK.
Allow connection from /etc/samba/smb.conf (focalinux) to homes
Allow connection from /etc/samba/smb.conf (focalinux) to printers
Allow connection from /etc/samba/smb.conf (focalinux) to tmp
Allow connection from /etc/samba/smb.conf (focalinux) to cdrom
18.12.3 Restringindo o acesso por interface de rede
Esta restrio de acesso permite que faamos o SAMBA responder requisies somente para a
interfaces indicadas. O mtodo de segurana descrito em Restringindo o acesso por IP/rede
on the facing page sero analisadas logo aps esta checagem.
Para restringir o servio SAMBAa interfaces, primeiro ser necessrio ativar o parmetro bind
interfaces only usando 1, yes ou true (o padro desativado). Depois, denir que
interfaces sero servidas pelo samba com o parmetro interfaces. Os seguintes formatos de
interfaces so permitidos:
eth0, sl0, plip0, etc - Um nome de interface local. permitido o uso de * para
fazer o SAMBA monitorar todas as interfaces que iniciam com aquele nome (por exem-
plo, eth*).
192.168.1.1, 192.168.1.2, etc - Um endereo IP de interface local.
192.168.1.2/24, 192.168.1.2/255.255.255.0 - Um par de endereo/mscara
de rede.
Mais de uma interface pode ser usada separando-as com vrgula ou espaos. A escolha do
uso de nome da interface ou do IP feita de acordo com a congurao da mquina. Em
uma mquina DHCP por exemplo, recomendado o uso do nome da interface. Quando bind
interfaces only estiver ativado, o padro esperar conexes emtodas as interfaces que permitem
broadcast exceto a loopback.
Captulo 18. SAMBA 350
Exemplo:
bind interfaces only = 1
interfaces = loopback eth0
Permite o recebimento de requisies de acesso ao SAMBA somente da interface loopback
(desnecessrio, pois como notou durante a leitura, sempre permitida a conexo) e eth0.
18.12.4 Restringindo o acesso por usurios
Permite que voc controle quem poder ou no acessar o compartilhamento da mquina. Este
controle feito pelos parmetros valid users e invalid users.
O invalid users lista de usurio que NO tero acesso ao compartilhamento. Se o nome for
iniciado por + o parmetro ser tratado como um nome de grupo UNIX (/etc/group). O
caracter & faz ele pesquisar o nome de grupo no banco de dados NIS. Ocaracter @ permite
fazer a busca do grupo primeiro no banco de dados NIS e caso ele no seja encontrado, no
arquivo de grupos do sistema (/etc/group).
possvel usar a combinao de caracteres +& e &+ para alternar a ordem de busca enter
o /etc/group e o NIS.
Exemplos:
invalid users = junior, marcio, +badusers No permite que os usurios especicados e os
usurios do grupo +badusers tenham acesso ao compartilhamento.
invalid users = &;semacesso Bloqueia o acesso de todos os usurios NIS que pertenam ao
grupo semacesso.
invalid users = bruno, henrique, +@users, Bloqueia o acesso dos usurios bruno, henrique e
de todos os usurios que pertenam ao grupo users. A pesquisa de grupo feita pri-
meiro no /etc/group e em seguida no NIS.
invalid users = @semacesso Bloqueia o acesso dos usurios que pertencem ao grupo sema-
cesso. A pesquisa feita primeiro no NIS e depois no /etc/group (equivalente ao uso
de &+).
O valid users possui a mesma sintaxe de funcionamento do invalid users, mas permite
somente o acesso para os usurios/grupos listados. Caso a opo valid users no seja
especicada ou a lista esteja vazia, o acesso permitido. Se um mesmo nome de usurio
estiver na lista valid users e invalid users, o padro ser mais restritivo, negando o
acesso.
valid users = gleydson, michelle, geo
Asegurana deste mtodo de acesso depende muito da forma de autenticao dos nomes antes
de passar o controle para o SAMBA, pois uma autenticao fraca pe em risco a segurana da
sua mquina.
Captulo 18. SAMBA 351
18.12.5 Evite o uso do parmetro hosts equiv!
Este parmetro permite que mquinas tenham acesso sem senha a um servidor. Isto pode se
tornar um *ENORME* buraco na segurana do seu sistema, pois mesmo usando uma senha
invlida, a mquina poder ter acesso a todos os recursos do compartilhamento e no com-
plicado fazer um ataque usando DNS spoong.
Se realmente deseja fazer isto, tenha em mente os dados que podero ser acessados daquela
mquina, se realmente no existe nenhuma outra forma de disponibilizar o acesso de forma
que mantenha o controle de restries (usando todos os outros mtodos), restrinja o acesso
usando MAC Address com o iptables ou o arp (veja Restries por MAC Address/IP on
page 392). O padro no usar nenhum arquivo hosts.equiv.
18.12.6 Evite o uso de senhas em branco!
O parmetro null passwords usado na seo [global] permitindo que contas de usurios
sem senha tenham acesso permitido ao servidor. ISTO TOTALMENTE INSEGURO e deve
ser sempre evitado. Caso voc tenha feito uma bela restrio em sua mquina e deseja que o
seu shell script de cpia de arquivos funcione usando este mtodo, voc est jogando toda a
segurana do seu sistema por ralo abaixo.
No existe motivo para usar senhas em branco em um controle de acesso por usurio, a no
ser que precise testar algo realmente temporrio e que depurando algo no SAMBA.
18.12.7 Criando um compartilhamento para acesso sem senha
Em algumas situaes (mesmo em instalaes seguras) preciso tornar um compartilhamento
acessvel publicamente, exemplos disto incluem um diretrio que contm drivers de impres-
soras, arquivos comuns, um diretrio temporrio, etc.
Para congurar um acesso pblico utilizamos a opo public = yes ou guest ok = yes
(que umsinnimo para o ltimo comando). OUIDutilizado no acesso pblico especicado
pelo parmetro guest account, portanto ele dever ser um usurio vlido do sistema. Caso
voc queira somente denir acesso guest a um compartilhamento, especique a opo guest
only para o servio, desta forma, mesmo que o usurio tenha acesso, ele ser mapeado para o
usurio guest.
Uma boa medida de segurana usar o usurio nobody pois a maioria das distribuies de
Linux seguras adotam-o como padro como usurio que no dono de quaisquer arqui-
vos/diretrios no sistema, no possui login, senha ou sequer um diretrio home.
Veja umexemplo disponibilizando o compartilhamento [download] para acesso pblico com
acesso a gravao:
[global]
guest account = nobody
Captulo 18. SAMBA 352
..
..
[download]
path = /downloads
comment = Espao pblico para abrigar downloads de Usurios
guest ok = yes (aqui poder ser tambm "public = yes").
writable = yes
follow symlinks = false
O parmetro guest account tambm poder ser especicado no compartilhamento, isto
til quando no quiser que o usurio que acesse o compartilhamento no seja o mesmo usado
na diretiva [global].
Caso seu servidor somente disponibiliza compartilhamentos para acesso pblico, mais reco-
mendado utilizar o nvel security = share pra diminuir a carga mquina, pois o usurio
guest ser o primeiro a ser checado pelas regras de acesso (ao contrrio do nvel user, onde o
acesso guest o ltimo checado).
OBS: Lembre-se que o compartilhamento funciona de modo recursivo, ou seja, todos os ar-
quivos e subdiretrios dentro do diretrio que compartilhou sero disponibilizados, portanto
tenha certeza da importncia dos dados que existem no diretrio, verique se existem links
simblicos que apontam para ele, etc. Recomendo dar uma olhada rpida em Consideraes
de segurana com o uso do parmetro public = yes on page 357.
18.12.8 Criando um compartilhamento com acesso somente leitura
Esta proteo til quando no desejamos que pessoas alterem o contedo de um comparti-
lhamento. Isto pode ser feito de duas formas: negando o acesso de gravao para todo o com-
partilhamento ou permitindo leitura somente para algumas pessoas. O parmetro usado para
fazer a restrio de acesso somente leitura o read only = yes ou seu antnimo writable
= no. Abaixo seguem os dois exemplos comentados:
[teste]
comment = Acesso a leitura para todos
path = /tmp
read only = yes
public = yes
No exemplo acima, o diretrio /tmp (path = /tmp) foi compartilhado com o nome teste
([teste]), de forma pblica (acesso sem senha - public = yes), e todos podem apenas ler seu
contedo read only = yes).
[teste]
comment = Acesso a gravao para todos com excesses
Captulo 18. SAMBA 353
path = /tmp
read only = no
read list = @users, gleydson
invalid users = root
Neste, o mesmo compartilhamento teste ([teste]) foi denido como acesso leitura/gravao
para todos (read only = no), mas os usurios do grupo @users e o usurio gleydson tero sempre
acesso leitura (read list = @users, gleydson). Adicionalmente foi colocada uma proteo para que
o superusurio no tenha acesso a ele (invalid users = root). Esta forma de restrio explicada
melhor em Excesso de acesso na permisso padro de compartilhamento on the next page).
18.12.9 Criando um compartilhamento com acesso leitura/gravao
Esta forma de compartilhamento permite a alterao do contedo do compartilhamento dos
usurios que possuem as permisses de acesso apropriadas. Este controle pode ser feito de
duas formas: Acesso total de gravao para os usurios e acesso de gravao apenas para
determinados usurios. Este controle feito pela opo read only = no e seu antnimo
equivalente writable = yes. Abaixo dois exemplos:
[teste]
comment = Acesso de gravao para todos.
path = /tmp
writable = yes
public = yes
No exemplo acima, o diretrio /tmp (path = /tmp) foi compartilhado com o nome teste
([teste]), de forma pblica (acesso sem senha - public = yes) e todos podem ler/gravar dentro
dele (writable = yes).
[teste]
comment = Acesso a leitura para todos com excesses
path = /tmp
writable = no
write list = @users, gleydson
Neste, o mesmo compartilhamento teste ([teste]) foi denido como acesso de leitura para
todos (writable = no), mas os usurios do grupo @users e o usurio gleydson sero os nicos
que tero tambm acesso a gravao (write list = @users, gleydson). Esta forma de restrio
explicada melhor em Excesso de acesso na permisso padro de compartilhamento on the
following page).
Captulo 18. SAMBA 354
18.12.10 Excesso de acesso na permisso padro de compartilhamento
possvel alterar o nvel de acesso para determinados usurios/grupos em um comparti-
lhamento, para entender melhor: Caso tenha criado um compartilhamento somente leitura
e queira permitir que apenas alguns usurios ou grupos tenham acesso a gravao, isto pos-
svel e ser explicado nesta seo. Este comportamento controlado por duas opes: read
list e write list. Veja alguns exemplos:
[temporario]
comment = Diretrio temporrio
path = /tmp
writable = yes
read list = gleydson, root
browseable = no
available = yes
Neste exemplo, disponibilizamos o diretrio /tmp (path = /tmp) como compartilhamento de
nome temporario ([temporario]), seu acesso padro leitura/gravao para todos (writable =
yes), exceto para os usurios root e gleydson (read list = root, gleydson). Em adio, tornamos
o compartilhamento invisvel (veja Criando um compartilhamento invisvel on the next page)
no Ambiente de Rede do Windows (browseable = no) e ele ser lido e disponibilizado pelo
SAMBA (available = yes).
[temporario]
comment = Diretrio temporrio
path = /tmp
writable = no
write list = gleydson, @operadores
browseable = yes
Neste exemplo, disponibilizamos o diretrio /tmp (path = /tmp) como compartilhamento de
nome temporario ([temporario]), seu acesso padro apenas leitura para todos (writable =
no), exceto para o usurio gleydson e usurios do grupo Unix operadores, que tem acesso
a leitura/gravao (write list = gleydson, @operadores). Tornamos o compartilhamento visvel no
Ambiente de Rede do Windows (browseable = yes - que o padro).
18.12.11 Restringindo o IPC$ e ADMIN$
seguro restringir os servios IPC$ e ADMIN$ para acesso somente pelas faixas de rede de
conana. Isto pode ser feito atravs da mesma forma que a restrio em outros compartilha-
mentos. Os efeitos desta restrio sero que somente as redes autorizadas possam obter a lista
de mquinas, se autenticar no domnio e realizar tarefas administrativas gerais:
Captulo 18. SAMBA 355
[IPC$]
read only = yes
allow from 192.168.1.0/24
[ADMIN$]
read only = yes
allow from 192.168.1.0/24
O exemplo acima permite que os servios IPC$ e ADMIN$ sejam acessados de qualquer m-
quina na faixa de rede 192.168.1.0/24. Para forar a autenticao para acesso a estes servi-
os:
[IPC$]
invalid users = nobody
valid users = gleydson michelle
read only = yes
allow from 192.168.1.0/24
[ADMIN$]
invalid users = nobody
valid users = gleydson michelle
read only = yes
allow from 192.168.1.0/24
Os exemplos acima so similares ao de antes, mas o acesso a listagem dos compartilhamentos
restringida (invalid users = nobody), pois o usurio nobody (usado para mostrar o comparti-
lhamento) tem o acesso negado. Somente os usurios gleydson e michelle (valid users =
gleydson michelle) podem listar seu contedo.
OBS: Mesmo que estejam restritos, os servios IPC$ e ADMIN$ sempre podero ser acessados
de 127.0.0.1, ou teramos problemas com o funcionamento do SAMBA. Assim no necessrio
colocar 127.0.0.1 na lista de IPs autorizados.
18.12.12 Criando um compartilhamento invisvel
Para no exibir um compartilhamento da lista de compartilhamentos das mquinas, utilize o
parmetro browseable = no. Por exemplo:
[teste]
path = /tmp
comment = Diretrio temporrio
read only = yes
browseable = no
Captulo 18. SAMBA 356
Neste exemplo, o diretrio /tmp (path = /tmp) foi compartilhado atravs de teste ([teste]) com
acesso somente leitura (read only = yes) e ele no ser mostrado na listagemde compartilhamen-
tos do ambiente de rede do Windows (browseable = no).
Note que o compartilhamento continua disponvel, porm ele poder ser acessado da estao
Windows, especicando a \\maquina\compartilhamento. Para acessar o compartilhamento
do exemplo acima:
# Clique em Iniciar/Executar e digite:
\\nome_do_servidor_samba\teste
Ao contrrio das mquinas Windows onde necessrio adicionar um $ do nome de compar-
tilhamento para criar um compartilhamento oculto (como teste$) o SAMBA cria um com-
partilhamento realmente oculto, no aparecendo mesmo na listagem do smbclient.
18.12.13 Executando comandos antes e aps o acesso ao compartilhamento
Este recurso oferece uma innidade de solues que podem resolver desde problemas de pra-
ticidade at segurana usando as opes preexec e postexec. Por exemplo, imagine que
esteja compartilhando 4 unidades de CD-Rom de um servidor na rede, e deseje que estes CDs
estejam sempre disponveis mesmo que algum operador engraadinho tenha ejetado as gave-
tas de propsito, podemos fazer a seguinte congurao:
[cdrom]
path = /cdrom
comment = Unidade de CD-ROM 1
read only = yes
preexec = /bin/mount /cdrom
preexec close = yes
postexec = /bin/umount /cdrom
Na congurao acima, o CD-ROMser compartilhado como cdrom ([cdrom]), somente leitura
(red only = yes), quando o usurio acessar o compartilhamento ele fechar a gaveta do CD
(preexec = /bin/mount /cdrom) e desmontar o drive de CD assim que o compartilhamento for
fechado (postexec = /bin/umount /cdrom). Adicionalmente, caso o comando mount da opo
preexec tenha retornado um valor diferente de 0, a conexo do compartilhamento fechada
(preexec close = yes).
A UID do processo do preexec e postexec ser o mesmo do usurio que est acessando o
compartilhamento, por este motivo ele dever ter permisses para montar/desmontar o CD-
ROM no sistema. Caso precise executar comandos como usurio root, utilize a variante root
preexec e root postexec. Apenas tenha conscincia que os programas sendo executados
so seguros o bastante para no comprometer o seu sistema.
Captulo 18. SAMBA 357
Usando a mesma tcnica, possvel que o sistema lhe envie e-mails alertando sobre acesso a
compartilhamentos que em conjunto com um debug level 2 e logs congurados independen-
tes por mquina, voc possa ver o que a mquina tentou acessar (e foi negado) e o que ela
conseguiu acesso.
Como bom administrador, voc poder criar scripts que faam uma checagem de segurana
no compartilhamento e encerre automaticamente a conexo caso seja necessrio, montar um
honney pot para trojans, etc.
Como deve estar notando, as possibilidades do SAMBAse extendemalmdo simples compar-
tilhamento de arquivos, se integrando com o potencial dos recursos do sistema UNIX.
18.12.14 Consideraes de segurana com o uso do parmetro public = yes
Este parmetro permite que voc acesso um compartilhamento sem fornecer uma senha, ou
seja, que o usurio no esteja autenticado. NO utilize o parmetro public = yes (ou um de
seus sinnimos) no compartilhamento [homes], pois abrir brechas para que possa acessar o
diretrio home de qualquer usurio e com acesso a gravao (que o padro adotado pelos
administradores para permitir o acesso ao seu diretrio home remoto).
Recomendo utilizar o parmetro public = yes somente em compartilhamentos onde real-
mente necessrio, como o [netlogon] ou outras reas de acesso pblico onde as permisses do
sistema de arquivos local estejam devidamente restritas. Outra medida no utilizar a opo
follow symlinks, que poder lhe causar problemas com usurios mal intencionados que
tenham acesso shell.
OBS: Tenha em mente todas as consideraes de segurana abordadas neste captulo, bem
como as permisses de acesso ao sistema Unix e como elas funcionam. A disponibilidade de
arquivos em uma rede simples, simples tambm pode ser o acesso indevido a eles caso no
saiba o que est fazendo.
18.12.15 Senhas criptografadas ou em texto puro?
Como regra geral, prera sempre utilizar senhas criptografadas. Aqui alguns motivos:
A senha enviada de uma forma que diculta sua captura por pessoas maliciosas.
O NT no permite que voc navegue no ambiente de rede em um sistema SAMBA com
nvel de acesso por usurio autenticando usando senhas em texto plano.
Ser solicitada sempre a senha para reconexo em cada compartilhamento da mquina.
Todas as verses de Windows NT 4 a partir SP3 e Windows 95 OSR/2 utilizam senhas
criptografadas como padro. possvel faze-lo utilizar senhas em texto plano modi-
cando chaves no registro das mquinas clientes (veja Ativando o suporte a senhas em
texto plano on page 342 para detalhes).
As vantagens da utilizao da autenticao usando texto plano:
A senha utilizada ser a mesma do /etc/passwd (servindo para ftp, login, etc)
O servidor PDC pode ser usado para logon desde que os clientes estejam usando senhas
em texto plano.
Captulo 18. SAMBA 358
Elas no so armazenadas no disco da estao cliente.
Voc no ser perguntado por uma senha durante cada reconexo de recurso.
Antes de optar por utilizar um sistema de senhas em texto plano, leve em considerao estes
pontos. Se voc j utiliza telnet ou ftp, provavelmente a utilizao de autenticao usando
texto plano no SAMBA no trar problemas mais graves para voc.
OBS: Caso seu NT ou verso derivada no navegue no ambiente de rede (s aceitando co-
nexes especicando diretamente o \\servidor\compartilhamento) modique sua congu-
rao do SAMBA para autenticar usando senhas criptografadas (veja Ativando o suporte a
senhas criptografadas on page 338) para detalhes de como fazer isto.
18.12.16 Mapeamento de nomes de usurios
Este recurso faz a mapeamento (traduo) de nomes de usurios usados no momento do acesso
para contas de acesso locais, bastante til quando o nome de usurio enviado pela mquina
no confere com NENHUMA conta local do sistema (um exemplo quando o login do usurio
no Windows diferente de seu Login no Linux). Outro vantagem de seu uso permitir que
uma categoria de usurios utilizem um mesmo nvel de acesso no sistema.
Seu formato o seguinte: username map = arquivo.
As seguintes regras so usadas para construir o arquivo de mapeamento de nomes:
Um arquivo de mltiplas linhas onde o sinal de = separa os dois parmetros princi-
pais. O arquivo processado linha por linha da forma tradicional, a diferena o que
o processamento do arquivo continua mesmo que uma condio conra. Para que o
processamento do resto do arquivo seja interrompido quando um mapeamento conra,
coloque o sinal na frente do nome local.
O parmetro da esquerda a conta Unix local que ser usada para fazer acesso ao com-
partilhamento. Somente uma conta Unix poder ser utilizada.
O parmetro da direita do sinal de = pode conter um ou mais nomes de usurios sepa-
rados por espaos que sero mapeados para a conta Unix local. O parmetro @grupo
permite que usurios pertencentes ao grupo Unix local sejam mapeados para a conta de
usurio do lado esquerdo. Outro caracter especial o * e indica que qualquer usurio
ser mapeado.
Voc pode utilizar comentrios na mesma forma que no arquivo de congurao smb.conf.
Alguns exemplos:
# Mapeia o usurio "gleydson mazioli" com o usurio local gleydson
gleydson = gleydson mazioli
# Mapeia o usurio root e adm para o usurio nobody
nobody = root adm
# Mapeia qualquer nome de usurio que pertena ao grupo smb-users para o usurio
# samba.
samba = @smb-users
Captulo 18. SAMBA 359
# Utiliza todos os exemplos anteriores, se nenhum usurio conferir, ele ser
# mapeado para o usurio nobody (como o usurio root e adm j so mapeados
# para "nobody", este exemplo ter o mesmo efeito).
!gleydson = gleydson mazioli
!samba = @smb-users
nobody = *
18.13 Melhorando a performance do compartilhamento/servidor
Esta seo trar algumas formas de otimizao do servidor SAMBA que fazem diferena
quando os valores adequados so utilizados: A primeira a ativao de um cache de gra-
vao/leitura de arquivos. Este cache feito pela opo write cache size e funciona fa-
zendo o cache dos arquivos que sero lidos/gravados. Ele esvaziado assim que o arquivo for
fechado ou quando estiver cheio. O valor especicado nesta opo em bytes e o padro 0
para no causar impacto em sistemas com pouca memria (ou centenas de compartilhamen-
tos). Exemplo:
[publico]
path = /pub
comment = Diretrio de acesso pblico
read only = yes
public = yes
write cache size = 384000
Compartilha o diretrio /pub (path = /pub) como compartilhamento de nome publico ([pu-
blico]), seu acesso ser feito como somente leitura (read only = yes) e o tamanho do cache de
leitura/gravao reservado de 384Kb (write cache size = 384000).
Deixar a opo para seguir links simblicos ativada (follow symlinks) garante mais per-
formance de acesso a arquivos no compartilhamento. A desativao da opo wide links
em conjunto com o uso de cache nas chamadas getwd (getwd cache) permite aumentar a
segurana e tem um impacto perceptvel na performance dos dados.
A desativao da opo global nt smb support tambm melhora a performance de acesso dos
compartilhamentos. Esta uma opo til para detectar problemas de negociao de protocolo
e por padro, ela ativada.
Caso utiliza um valor de depurao de log muito alto (debug level), o sistema car mais lento
pois o servidor sincroniza o arquivo aps cada operao. Em uso excessivo do servidor de
arquivos, isso apresenta uma degradao perceptvel de performance.
A opo prediction permite que o SAMBA faa uma leitura adiante no arquivo abertos
como somente-leitura enquanto aguarda por prximos comandos. Esta opo associada com
bons valores de write cache size pode fazer alguma diferena. Note que o valor de leitura nunca
ultrapassa o valor de read size.
Captulo 18. SAMBA 360
A opo read size permite obter um sincronismo no entre a leitura e gravao do disco com o
envio/recebimento de dados da rede. O valor dependente da instalao local, levando em
considerao a velocidade de disco rgido, rede, etc. O valor padro 16384.
Em casos onde um NFS montado ou at mesmo leitura em discos locais compartilhada, o
parmetro strict locking denido para yes pode fazer alguma diferena de performance. Note
que nem todos os sistemas ganham performance com o uso desta opo e no deve ser usada
em aplicativos que no requisitam o estado do lock de arquivo ao servidor.
Caso voc possua aplicativos que fazem o lock corretamente de arquivos, voc poder usar
o share modes = no, isto signica que futuras aberturas de arquivo podem ser feitas em em
modo leitura/gravao. Caso utiliza um aplicativo muito bem programado que implementa
de forma eciente de lock, voc poder desativar esta opo.
O uso de oplocks yes em compartilhamentos aumenta a performance de acesso a arquivos em
at 30%, pois utiliza um cdigo de cache no cliente. Tenha certeza do que est fazendo antes
de sair usando oplocks em tudo que lugar. A desativao de kernel oplocks necessria para
que isto funcione.
A opo read raw e write raw devem ter seus valores experimentados para ver se faz diferena
na performance da sua rede, pois diretamente dependente do tipo de cliente que sua rede
possui. Alguns clientes podem car mais lentos em modo de leitura raw.
O tipo de sistema de arquivos adotado na mquina e suas opes de montagem tem um im-
pacto direto na performance do servidor, principalmente com relao a atualizao de status
dos arquivos no sistema de arquivos (hora de acesso, data, etc).
O cache de leitura adiante de abertura de arquivos em modo somente leitura aumenta a per-
formance com o uso do oplocks nvel 2. Para isto, ajuste a opo level2 oplocks para yes.
A recomendao deste tipo de oplock o mesmo do nvel 1.
Como o SAMBA faz o transporte NetBEUI via TCP/IP, ajustes no socket fazem diferena nos
dados que trafegam na rede. Como isso dependente de rede voc precisar usar tcnicas
de leitura/gravao para determinar quais so as melhores que se encaixam em seu caso. A
opo socket options usada para fazer tais ajustes, por exemplo:
socket options = SO_SNDBUF=2048 IPTOS_THROUGHPUT=1
Em especial, a opo TCP_NODELAY apresenta uma perceptvel melhoria de performance no
acesso a arquivos locais.
OBS:: No use espaos entre o sinal de = quando especicar as opes do parmetro socket
options.
18.14 Congurao de Clientes NetBEUI
Este captulo documenta a congurao de mquinas clientes NetBEUI, requerimentos de cada
congurao e documenta os passos necessrios para ter o cliente se comunicando perfeita-
mente com o seu servidor. Sero explicadas tanto a congurao de grupo de trabalho como
Captulo 18. SAMBA 361
de domnio e como a congurao compatvel entre Linux e Windows, estas explicaes so
perfeitamente vlidas para congurar clientes que acessem servidores Windows.
18.14.1 Consideraes sobre o Windows for Workgroups e LanManager
Sistemas com implementaes NetBIOS mais antigos, como o Windows for Workgroups
(Windows 3.11) e o Lan Manager (DOS), enviam somente a senha para acesso ao compar-
tilhamento, desta forma, para o acesso ser autorizado pelo samba, voc dever especicar a
diretiva user = usuario para que a senha conra com o usurio local do sistema. A senha envi-
ada tambm em formato texto plano. Este problema no ocorre no Windows 95 e superiores,
que enviam o nome de usurio que efetuou o logon junto com a respectiva senha.
Se a segurana do seu samba depende de senhas criptografadas, ser necessrio utilizar a dire-
tiva include = outro_arquivo_de_configurao.%m para denir conguraes es-
peccas de acesso para estas mquinas.
Outro detalhe que deve ser lembrado que o Windows for Workgroups envia sempre
a senha em MAISCULAS, ento preciso congurar o SAMBA para tentar combinaes
de maisculas/minsculas usando o parmetro mangle case e default case na seo global do
smb.conf.
18.14.2 Congurando clientes em Grupo de Trabalho
Para congurar o cliente para fazer parte de um grupo de trabalho, necessrio apenas que
tenha em mos o nome do grupo de trabalho (workgroup) que os clientes faro parte e
o nome de uma outra mquina que faz parte do mesmo grupo (para testes iniciais). Com estes
dados em mos, selecione na lista abaixo o nome do cliente que deseja congurar para incluir
no grupo de trabalho:
Windows 9X on this page
Windows XP Home Edition on the next page
Windows XP Professional Edition on the following page
Windows XP Server Edition on the next page
Windows NT WorkStation on page 363
Windows NT Server on page 363
Windows 2000 Professional on page 363
Windows 2000 Server on page 363
Linux on page 363
Windows 9X
Estas conguraes so vlidas para clientes Windows 95, Windows 95OSR/2, Windows 98.
Caso utilize o Windows 95 (qualquer uma das sries) aconselhvel atualizar a stack TCP/IP
e NetBEUI para corrigir alguns problemas que podem deixar sua mquina vulnervel na ver-
so que acompanha o WinSock do Windows 95.
Para tornar uma mquina parte do grupo de trabalho, siga os seguintes passos:
Captulo 18. SAMBA 362
Entre nas propriedades de rede no Painel de Controle
Instale o Cliente para redes Microsoft (caso no esteja instalado).
Instale o Protocolo TCP/IP. Voc tambm pode instalar o protocolo NetBIOS, mas uti-
lizaremos o suporte NetBIOS sobre TCP/IP que o usado pelo SAMBA alm de ter um
melhor desempenho, permitir integrao com servidores WINS, etc.
Clique em Protocolo TCP/IP e em Propriedades. Clique na tab NetBIOS e marque
a opo Desejo ativar o NetBIOS atravs do TCP/IP. Caso esta caixa esteja em cinza,
ento est tudo certo tambm.
Clique na tab Identicao e coloque l o nome que identicar o computador (at 15
caracteres) e o nome do grupo de trabalho que ele far parte(por exemplo workgroup,
suporte, etc) . No campo Descrio do Computador, coloque algo que identique a
mquina na rede (por exemplo, Computador da rea de suporte).
Clique na tab Controle de Acesso e marque o Controle de acesso a nvel de comparti-
lhamento (a no ser que tenha congurado um servidor que mantenha um controle de
nvel de usurio na rede para as mquinas fora do domnio).
Clique em OK at reiniciar o computador.
A mquina cliente agora faz parte do grupo de trabalho! Tente acessar um outro computador
da rede e navegar atravs do ambiente de rede. Caso a lista de mquinas demore em aparecer,
tente acessar diretamente pelo nome do computador, usando o seguinte formato: \\compu-
tador
Windows XP Home Edition
Siga as instrues de Windows XP Professional Edition on the current page.
Windows XP Professional Edition
Logue como administrador do sistemas local.
Entre no item Sistema dentro do painel de controle. A tela propriedades de sistema ser
aberta.
No campo Descrio do Computador, coloque algo que descreva a mquina (opcional).
Clique na TAB Nome do Computador e no boto Alterar na parte de baixo da janela.
No campo nome do computador, coloque um nome de no mximo 15 caracteres para iden-
ticar a mquina na rede.
Clique em grupo de trabalho e digite o nome do grupo de trabalho na caixa de dilogo.
Clique em OK e aguarde a mensagem conrmando sua entrada no grupo de trabalho.
Ser necessrio reiniciar a mquina.
Windows XP Server Edition
Siga as instrues de Windows XP Professional Edition on this page.
Captulo 18. SAMBA 363
Windows NT WorkStation
Veja Windows NT Server on page 367.
Windows NT Server
Clique no item Rede do painel de controle.
Na tab Servios, conra se os servios Estao de trabalho, Interface de
NetBIOS e Servios TCP/IP simples esto instalados. Caso no estejam, faa sua
instalao usando o boto Adicionar nesta mesma janela.
Na tab Protocolos, verique se os protocolos NetBEUI e TCP/IP esto instalados. Caso
no estejam, faa sua instalao clicando no boto Adicionar nesta mesma janela.
Na tab identicao, clique no boto Alterar
Na janela que se abrir, coloque o nome do computador no campo Nome do
Computador
Clique em Grupo de trabalho e escreva o nome do grupo de trabalho em frente.
Clique em OK at voltar.
Pronto, seu computador agora faz parte do grupo de trabalho.
Windows 2000 Professional
Logue como administrador do sistemas local.
Entre no item Sistema dentro do painel de controle. A tela propriedades de sistema ser
aberta. Clique em Computador e ento no boto Propriedades.
No campo nome do computador, coloque um nome de no mximo 15 caracteres para iden-
ticar a mquina na rede.
Clique em grupo de trabalho e digite o nome do grupo de trabalho na caixa de dilogo.
Clique em OK e aguarde a mensagem conrmando sua entrada no grupo de trabalho.
Ser necessrio reiniciar a mquina.
Windows 2000 Server
Logue como administrador do sistemas local.
Entre no item Sistema dentro do painel de controle. A tela propriedades de sistema ser
aberta. Clique em Descrio de rede e ento no boto Propriedades.
No campo nome do computador, coloque um nome de no mximo 15 caracteres para iden-
ticar a mquina na rede.
Clique em grupo de trabalho e digite o nome do grupo de trabalho na caixa de dilogo.
Clique em OK e aguarde a mensagem conrmando sua entrada no grupo de trabalho.
Ser necessrio reiniciar a mquina.
Linux
Os aplicativos smbclient e smbmount so usados para navegao e montagem dos discos e
impressoras compartilhadas em mquinas Linux. Se voc procura programas de navegao
Captulo 18. SAMBA 364
grcos, como o Ambiente de Rede do Windows ou mais poderosos, veja Programas de navega-
o grcos on page 370. Como complemento, tambm explicado o programa nmblookup
para resoluo de endereos NetBIOS em IP e vice-versa e a forma que as funes de mquinas
so denidas em uma rede NetBEUI.
smbmount O smbmount uma ferramenta que permite a montagem de um disco comparti-
lhado por uma mquina NetBEUI remota como uma partio. Veja alguns exemplos:
smbmount //servidor/discoc /mnt/discoc Monta o compartilhamento de //servidor/discoc em
/mnt/discoc usando o nome de usurio atual. Ser pedido uma senha para acessar
o contedo do compartilhamento, caso ele seja pblico, voc pode digitar qualquer se-
nha ou simplesmente pressionar enter.
smbmount //servidor/discoc /mnt/discoc -N Semelhante ao comando cima, com a diferena
que o parmetro -N no pergunta por uma senha. Isto ideal para acessar compartilha-
mentos annimos.
smbmount //servidor/discoc /mnt/discoc -o username=gleydson,workgroup=teste
Semelhante aos anteriores, mas acessa o compartilhamento usando gleydson como
nome de usurio e teste como grupo de trabalho. Este mtodo ideal para redes que tem
o nvel de acesso por usurio ou para acessar recursos compartilhados em um domnio.
smbclient O smbclient uma ferramenta de navegao em servidores SAMBA. Ao invs
dela montar o compartilhamento como um disco local, voc poder navegar na estrutura do
servidor de forma semelhante a um cliente FTP e executar comandos como ls, get, put para
fazer a transferncia de arquivos entre a mquina remota e a mquina local. Tambm atravs
dele que feita a interface com impressoras compartilhadas remotamente. Veja exemplos do
uso do smbclient:
smbclient -L samba1 Lista todos os compartilhamentos existentes (-L) no servidor samba1.
smbclient //samba1/discoc Acessa o contedo do compartilhamento discoc no servidor
samba1.
smbclient //samba1/discoc -N Idntico ao acima, mas no utiliza senha (ideal para comparti-
lhamentos com acesso annimo).
smbclient //samba1/discoc -I 192.168.1.2 Se conecta ao compartilhamento usando o endereo
IP 192.168.1.2 ao invs da resoluo de nomes.
smbclient //samba1/discoc -U gleydson -W teste Se conecta ao compartilhamento como
usurio gleydson usando o grupo de trabalho teste.
smbclient //samba1/discoc -U gleydson%teste1 -W teste Idntico ao acima, mas tambm en-
via a senha teste1 para fazer a conexo diretamente.
Caso receba a mensagemNT Status Access Denied, isto quer dizer que no possui direi-
tos de acesso adequados para listas ou acessar os compartilhamentos da mquina. Nesse caso,
utilize as opes -U usurio e -W grupo/domnio para fazer acesso comuma conta vlida
de usurio existente na mquina.
OBS:Note que a ordem das opes faz diferena no smbmount.
Captulo 18. SAMBA 365
nmblookup Esta uma ferramenta usada para procurar nomes de cliente usando o ende-
reo IP, procurar um IP usando o nome e listar as caractersticas de cada cliente. Veja alguns
exemplos:
nmblookup -A 127.0.0.1 Lista o nome e as opes usadas pelo servidor 127.0.0.1
nmblookup servidor Resolve o endereo IP da mquina servidor.
A listagem exibida pela procura de IP do nmblookup possui cdigos hexadecimais e cada um
deles possui um signicado especial no protocolo NetBEUI. Segue a explicao de cada um:
Identicao da mquina COMPUTADOR<00>= O servio NetBEUI est sendo execu-
tado na mquina.
COMPUTADOR<03> = Nome genrico da mquina (nome NetBIOS).
COMPUTADOR<20> = Servio LanManager est sendo executado na mquina.
Identicao de grupos/domnio GRUPO_TRABALHO<1d> - <GRUPO> = Navegador
Local de Domnio/Grupo.
GRUPO_TRABALHO<1b> = Navegador Principal de Domnio.
GRUPO_TRABALHO<03> - <GRUPO> = Nome Genrico registrado por todos os
membros do grupo de trabalho.
GRUPO_TRABALHO<1c> - <GRUPO> = Controladores de Domnio / Servidores
de logon na rede.
GRUPO_TRABALHO<1e> - <GRUPO> = Resolvedores de Nomes Internet (WINS).
Estes cdigos podem lhe ser teis para localizar problemas mais complicados que possam
ocorrer durante a congurao de um servidor.
18.14.3 Congurando clientes em Domnio
Para congurar qualquer um dos cliente abaixo para fazer parte de um domnio de rede,
necessrio apenas que tenha em mos os seguintes dados:
Nome do controlador de domnio PDC
Nome do domnio
Nome de usurio e senha que foram cadastrados no servidor.
Acesso administrador no SERVIDOR PDC (SAMBA, NT, etc).
Cria uma conta de mquina no domnio (no caso da mquina ser um Windows NT, Win-
dows XP, Windows 2k ou Linux). Veja Contas de mquinas de domnio on page 332
para maiores detalhes.
Como o Windows 3.11, Windows 95, Windows 98, Windows ME no possuem uma conta de
mquina, eles nunca sero ummembro real de umdomnio, podendo sofrer umname spoong
e terem a identidade roubada. Mesmo assim, eles tero pleno acesso aos recursos do domnio
e uma congurao mais fcil que os demais clientes. Com estes dados em mos, selecione na
lista abaixo o nome do cliente que deseja integrar no grupo de trabalho:
Windows 9X on page 361
Windows XP Home Edition on page 362
Windows XP Professional Edition on page 362
Windows XP Server Edition on page 362
Windows NT WorkStation on page 363
Windows NT Server on page 363
Windows 2000 Professional on page 363
Captulo 18. SAMBA 366
Windows 2000 Server on page 363
Linux on page 363
OBS: O Windows 2000 apresenta algumas diculdades em entrar na rede do SAMBA 2.2,
sendo necessrio o uso do SAMBA TNG 2.2.x para aceitar o logon de estaes Windows 2000.
Windows 9X
Estas conguraes so vlidas para clientes Windows 95, Windows 95OSR/2, Windows 98.
Caso utilize o Windows 95 (qualquer uma das sries) aconselhvel atualizar a stack TCP/IP
e NetBEUI para corrigir alguns problemas que podem deixar sua mquina vulnervel na ver-
so que acompanha o WinSock do Windows 95.
Para tornar uma mquina parte do domnio, siga os seguintes passos:
Entre nas propriedades de rede no Painel de Controle
Instale o Cliente para redes Microsoft (caso no esteja instalado).
Instale o Protocolo TCP/IP. Voc tambm pode instalar o protocolo NetBIOS, mas uti-
lizaremos o suporte NetBIOS sobre TCP/IP que o usado pelo SAMBA alm de ter um
melhor desempenho, permitir integrao com servidores WINS, etc.
Clique emCliente para redes Microsoft, marque a opo Efetuar logon no domnio do
Windows NT. Coloque o nome do domnio que ir congurar o cliente para fazer parte
na caixa Domnio do Windows NT (por exemplo, suporte). Na parte de baixo da
caixa de dilogo, voc poder escolher como ser o mtodo para restaurar as conexes
de rede. Inicialmente, recomendo que utilize a Efetuar logon e restaurar as conexes
de rede que mais til para depurar problemas (possveis erros sero mostrados logo
que zer o logon no domnio). Adeque esta congurao as suas necessidades quando
estiver funcionando :)
Clique em Protocolo TCP/IP e em Propriedades. Clique na tab NetBIOS e marque
a opo Desejo ativar o NetBIOS atravs do TCP/IP. Caso esta caixa esteja em cinza,
ento est tudo certo tambm.
Clique na tab Identicao e coloque l o nome que identicar o computador (at 15
caracteres).
Digite o nome de um grupo de trabalho que a mquina far parte no campo Grupo de
Trabalho (por exemplo workgroup, suporte, etc). Este campo somente ser usado
caso o logon no domnio NT no seja feito com sucesso. No campo Descrio do Com-
putador, coloque algo que identique a mquina na rede (por exemplo, Computador
da rea de suporte).
Clique na tab Controle de Acesso e marque o Controle de acesso a nvel de usurio
e especique o nome da mquina que serve a lista de usurios, que normalmente a
mesma do PDC.
Clique em OK at reiniciar o computador.
Quando for mostrada a tela pedindo o nome/senha, preencha com os dados da conta de usu-
rio que criou no servidor. No campo domnio, coloque o domnio que esta conta de usurio
pertence e tecle <Enter>. Voc ver o script de logon em ao (caso esteja congurado) e a
mquina cliente agora faz parte do domnio! Tente acessar um outro computador da rede e
navegar atravs do ambiente de rede. Caso a lista de mquinas demore em aparecer, tente
Captulo 18. SAMBA 367
acessar diretamente pelo nome do computador, usando o seguinte formato: \\computador
Windows XP Home Edition
No possvel fazer o Windows XP Home Edition ser parte de um domnio, por causa de
limitaes desta verso.
Windows XP Professional Edition
Primeiro, siga todos os passos para ingressar a mquina em um grupo de trabalho como
documentado em Windows XP Professional Edition on page 362.
Atualize o registro para permitir a entrada no domnio:
1 Copie o seguinte contedo para o arquivo WinXP-Dom.reg:
REGEDIT4
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\netlogon\parameters
"RequireSignOrSeal"=dword:00000000
"SignSecureChannel"=dword:00000000
2 Execute o comando regedit WinXP-Dom.reg no cliente XP.
Entre nos tens (emseqencia) Painel de controle/Ferramentas Administrativas/ Poltica
de segurana local/polticas locais e depois em opes de segurana. Na janela de
opes de segurana, desative as opes Encriptar digitalmente ou assinar um canal
seguro (sempre), Desativar modicaes de senha na conta de mquina e Requer
chave de seo forte (Windows 2000 ou superior).
Reinicie a mquina.
Aps reiniciar a mquina, volte na tela de alterao de identicao de mquina na rede.
Clique com o mouse em Domnio e digite o nome do domnio na caixa de dilogo.
Na tela seguinte, ser lhe pedido o nome de usurio e senha compoderes administrativos
que podem inserir/remover mquinas do domnio.
Clique em OK e aguarde a mensagem conrmando sua entrada no domnio. Ser neces-
srio reiniciar a mquina aps concluir este passo.
Windows XP Server Edition
Siga os procedimentos documentados em Windows XP Professional Edition on this page
Windows NT WorkStation
Veja os passos em Windows NT Server on the current page.
Windows NT Server
Clique no item Rede do painel de controle.
Captulo 18. SAMBA 368
Na tab Servios, conra se os servios Estao de trabalho, Interface de
NetBIOS e Servios TCP/IP simples esto instalados. Caso no estejam, faa sua
instalao usando o boto Adicionar nesta mesma janela.
Na tab Protocolos, verique se os protocolos NetBEUI e TCP/IP esto instalados. Caso
no estejam, faa sua instalao clicando no boto Adicionar nesta mesma janela.
Na tab identicao, clique no boto Alterar
Na janela que se abrir, coloque o nome do computador no campo Nome do
Computador
Clique em Dominio e escreva o nome do domnio que deseja entrar.
Para criar uma conta de mquina no domnio, clique em criar uma conta de
computador no domnio e coloque na parte de baixo o nome do usurio sua senha.
O usurio dever ter poderes para adicionar mquinas no domnio. Caso a conta de
mquina no seja criada, o Windows NT ser como um Windows 95/98 na rede, sem a
segurana que seu nome NetBIOS no seja usado por outros (veja Contas de mquinas
de domnio on page 332).
Clique em OK at voltar.
Pronto, seu computador agora faz parte do domnio.
Windows 2000 Professional
Siga os passos descritos em Windows 2000 Server on the current page.
Windows 2000 Server
Primeiro, siga todos os passos para ingressar a mquina em um grupo de trabalho como
documentado em Windows 2000 Server on page 363.
Aps reiniciar a mquina, volte na tela de alterao de identicao de mquina na rede.
Clique com o mouse em Domnio e digite o nome do domnio na caixa de dilogo.
Na tela seguinte, ser lhe pedido o nome de usurio e senha compoderes administrativos
que podem inserir/remover mquinas do domnio.
Clique em OK e aguarde a mensagem conrmando sua entrada no domnio. Ser neces-
srio reiniciar a mquina aps concluir este passo.
Caso no consiga trocar a senha do Windows 2000 no servidor PDC, desative a opo unix
password sync.
Linux
Entre no sistema como usurio root.
Instale o SAMBA caso no esteja ainda instalado.
Edite o arquivo de congurao do samba /etc/samba/smb.conf, ser necessrio mo-
dicar as seguintes linhas na seo [global]:
[global]
workgroup = nome_domnio
security = domain
Captulo 18. SAMBA 369
password server = nome_pdc nome_bdc
encrypt passwords = true
Onde:
workgroup - Nome do domnio que deseja fazer parte.
security - Nvel de segurana. Nesta congurao, utilize domain.
password server - Nome da mquina PDC, BDC. Tambm poder ser usado *,
assimo SAMBA tentar descobrir o servidor PDCe BDCautomaticamente, da mesma
forma usada pelo Windows.
encrypt passwords - Diz se as senhas sero encriptadas ou no. Sempre utilize
senhas criptografadas para colocar uma mquina em um domnio.
Reinicie o servidor SAMBA aps estas modicaes.
Execute o comando: smbpasswd -j domnio -r PDC/BDC -U usuario_admin.
Onde:
domnio - Domnio que deseja fazer o logon
PDC/BDC - Nome da mquina PDC/BDC do domnio. Em alguns casos, pode ser
omitido.
usuario_admin - Usurio compoderes administrativos para ingressara a mquina
no domnio.
Se tudo der certo, aps executar este comando, voc ver a mensagem:
Joined domain "domnio".
Se sua congurao no funcionou, revise com ateno todos os tens acima. Verique se a
conta de mquina foi criada no servidor e se o SAMBA na mquina cliente foi reiniciado. De
tambm uma olhada em Erros conhecidos durante o logon do cliente on the current page.
OBS:O SAMBA envia primeiramente um usurio/senha falso para vericar se o servidor re-
jeita o acesso antes de enviar o par de nome/senha corretos. Por este motivo, seu usurio
pode ser bloqueado aps um determinado nmero de tentativas em alguns servidores mais
restritivos. Para acessar os recursos compartilhados, veja Linux on page 363. Note que no
obrigatrio realizar as conguraes acima para acessar os recursos de uma mquina em do-
mnio, basta apenas que autentique com seu nome de usurio/senha no domnio e que ela seja
autorizada pelo PDC.
18.14.4 Erros conhecidos durante o logon do cliente
Esta seo contm os erros mais comuns e a forma de correo da maioria dos problemas que
ocorrem quando um cliente SAMBA tenta entrar em domnio.
error creating domain user: NT_STATUS_ACCESS_DENIED - A conta de m-
quina no domnio no foi criada. Veja Contas de mquinas de domnio on page 332 para
mais detalhes.
NT_STATUS_NO_TRUST_SAM_ACCOUNT - No existe conta de mquina no Windows NT
para autenticar uma mquina no domnio. Esta mensagem mostrada quando a m-
quina SAMBA cliente de um domnio NT.
error setting trust account password: NT_STATUS_ACCESS_DENIED - A
senha para criao de conta na mquina est incorreta ou a conta utilizada no tem per-
misses para ingressar uma mquina no domnio (veja Criando uma conta de adminis-
trador de domnio on page 333). Caso esteja usando um cliente SAMBA, verique se o
Captulo 18. SAMBA 370
parmetro encrypt passwords est ativado.
A senha informada no est correta ou o acesso ao seu servidor
de logon foi negado - Verique primeiro os logs de acessos do sistema. Caso
o SAMBA esteja sendo executado via inetd, verique se a congurao padro
restritiva e se o acesso est sendo negado pelos arquivos do tcp wrappers hosts.allow
e hosts.deny.
no existem servidores de logon no domnio - Verique se o parmetro
domain logons = yes foi usado para permitir o logon em domnio.
18.14.5 Programas de navegao grcos
Osmbclient, nmblookup e smbmount so ferramentas extremamente poderosas auxiliando
bastante o administrador na tarefa de congurao de sua rede e resolver problemas. Para o
uso no dia a dia ou quando no necessria a operao via console, voc pode utilizar uma das
alternativas abaixo que so front-ends a estas ferramentas e facilitam o trabalho de navegao
na rede.
linneighborhood
Cliente SAMBA baseado em GTK, muito leve e possibilita a navegao entre os grupos m-
quinas em forma de rvore. Ele tambm permite a montagem de compartilhamentos remotos.
Caso precise de recursos mais complexos e autenticao, recomendo o TkSmb on the current
page.
TkSmb
Cliente SAMBA baseado em TCL/TK. Seu ponto forte a navegao nos recursos da mquina
ao invs da rede completa, possibilitando autenticao em domnio/grupo de trabalho, mon-
tagem de recursos, etc.
18.14.6 Cliente de congurao grcos
So ferramentas que permitem a congurao do samba usando a interface grca. Isto faci-
lita bastante o processo, principalmente se estiver em dvidas em algumas conguraes, mas
como todo bom administrador UNIX sabe, isto no substitui o conhecimento sobre o funcio-
namento de cada opo e ajustes e organizao feita diretamente no arquivo de congurao.
gnosamba
Ferramenta de congurao grca usando o GNOME. Com ele possvel denir congura-
es localmente. Ele ocupa pouco espao em disco, e se voc gosta de GTK, este o recomen-
dado.
As opes do SAMBA so divididas em categorias facilitando sua localizao e uso.
Captulo 18. SAMBA 371
swat
Ferramenta de administrao via web do samba. Este um daemon que opera na porta 901 da
mquina onde o servidor samba foi instalado. A congurao feita atravs de qualquer na-
vegador acessando http://ip_do_servidor:901 e logando-se como usurio root (o nico
com poderes para escrever no arquivo de congurao).
Esta ferramenta vem evoluindo bastante ao decorrer dos meses e a recomendada para a
congurao do servidor SAMBA remotamente. Seu modo de operao divide-se em bsico e
avanado. No modo bsico, voc ter disponvel as opes mais comuns e necessrias para
compartilhar recursos na rede. O modo avanado apresenta praticamente todos os parme-
tros aceitos pelo servidor samba (restries, controle de acesso, otimizaes, etc.).
18.15 Exemplos de congurao do servidor SAMBA
Os exemplos existentes nesta seo cobrem diferentes tipos de congurao do servidor, tanto
em modo de compartilhamento com acesso pblico ou um domnio restrito de rede. Todos os
exemplos esto bem comentados e explicativos, apenas pegue o que se enquadre mais em sua
situao para uso prprio e adaptaes.
18.15.1 Grupo de Trabalho com acesso pblico
Este exemplo pode ser usado de modelo para construir uma congurao baseada no controle
de acesso usando o nvel de segurana share e quando possui compartilhamentos de acesso
pblico. Esta congurao indicada quando necessita de compatibilidade com softwares
NetBIOS antigos.
# Arquivo de configurao do SAMBA criado por
# Gleydson Mazioli da Silva <gleydson@debian.org>
# para o guia Foca GNU/Linux Avanado - Captulo SAMBA
# Este script pode ser copiado e distribudo livremente de
# acordo com os termos da GPL. Ele no tem a inteno de
# atender uma determinada finalidade, sendo usado apenas
# para fins didticos, portanto fica a inteira responsabilidade
# do usurio sua utilizao.
[global]
# nome da mquina na rede
netbios name = teste
# nome do grupo de trabalho que a mquina pertencer
workgroup = focalinux
# nvel de segurana share permite que clientes antigos mantenham a compatibilidade
# enviando somente a senha para acesso ao recurso, determinando o nome de usurio
# de outras formas
Captulo 18. SAMBA 372
security = share
# O recurso de senhas criptografadas no funciona quando usamos o nvel share
# de segurana. O motivo disto porque automaticamente assumido que voc
# est selecionando este nvel por manter compatibilidade com sistemas antigos
# ou para disponibilizar compartilhamentos pblicos, onde
encrypt passwords = false
# Conta que ser mapeada para o usurio guest
guest account = nobody
# Como todos os compartilhamentos desta configurao so de acesso pblico
# coloquei este parmetro na seo [global], assim esta opo afetar todos
# os compartilhamentos.
guest ok = 1
# Conjunto de caracteres utilizados para acessar os compartilhamentos. O padro
# para o Brasil e pases de lngua latina o ISO 8859-1
character set = ISO8859-1
# Compartilha o diretrio /tmp (path = /tmp) com o nome "temporario" ([temporario]),
# adicionada a descrio "Diretrio temporrio" com acesso leitura/gravao
# (read only = no) e exibido na janela de navegao da rede (browseable = yes).
[temporario]
path = /tmp
comment = Diretrio temporrio
read only = no
browseable = yes
# Compartilha o diretrio /pub (path = /pub) com o nome "publico" ([publico]).
# A descrio "Diretrio de acesso pblico" associada ao compartilhamento
# com acesso somente leitura (read only = yes) e exibido na janela de navegao
# da rede (browseable = yes).
[publico]
path =/pub
comment = Diretrio de acesso pblico
read only = yes
browseable = yes
# Compartilha todas as impressoras encontradas no /etc/printcap do sistema
# Uma descrio melhor do tipo especial de compartilhamento "[printers]"
# explicado no inicio do guia Foca Linux
[printers]
comment = All Printers
path = /tmp
create mask = 0700
printable = Yes
browseable = No
Captulo 18. SAMBA 373
18.15.2 Grupo de Trabalho com acesso por usurio
O exemplo abaixo descreve uma congurao a nvel de segurana por usurio onde existem
compartilhamentos que requerem login e usurios especcos, e restries de IPs e interface
onde o servidor opera. Esta congurao utiliza senhas em texto claro para acesso dos usu-
rios, mas pode ser facilmente modicada para suportar senhas criptografadas.
# Arquivo de configurao do SAMBA criado por
# Gleydson Mazioli da Silva >gleydson@debian.org>
# para o guia Foca GNU/Linux Avanado - Captulo SAMBA
# Este script pode ser copiado e distribudo livremente de
# acordo com os termos da GPL. Ele no tem a inteno de
# atender uma determinada finalidade, sendo usado apenas
# para fins didticos, portanto fica a inteira responsabilidade
# do usurio sua utilizao.
[global]
# nome da mquina na rede
netbios name = teste
# nome do grupo de trabalho que a mquina pertencer
workgroup = focalinux
# nvel de segurana user somente aceita usurios autenticados aps o envio
# de login/senha
security = user
# utilizada senhas em texto claro nesta configurao
encrypt passwords = false
# Conta que ser mapeada para o usurio guest
guest account = nobody
# Permite restringir quais interfaces o SAMBA responder
bind interfaces only = yes
# Faz o samba s responder requisies vindo de eth0
interfaces = eth0
# Supondo que nossa interface eth0 receba conexes roteadas de diversas
# outras redes, permite somente as conexes vindas da rede 192.168.1.0/24
hosts allow = 192.168.1.0/24
# A mquina 192.168.1.57 possui gateway para acesso interno, como medida
# de segurana, bloqueamos o acesso desta mquina.
hosts deny = 192.168.1.57/32
# Conjunto de caracteres utilizados para acessar os compartilhamentos. O padro
# para o Brasil e pases de lngua latina o ISO 8859-1
character set = ISO8859-1
# As restries do PAM tero efeito sobre os usurios e recursos usados do SAMBA
obey pam restriction = yes
Captulo 18. SAMBA 374
# Mapeia o diretrio home do usurio autenticado. Este compartilhamento especial
# descrito em mais detalhes no inicio do captulo sobre o SAMBA no Foca Linux.
[homes]
comment = Diretrio do Usurio
create mask = 0700
directory mask = 0700
browseable = No
# Compartilha o diretrio win (path = /win) com o nome "win" ([win]).
# A descrio associada ao compartilhamento ser "Disco do Windows",
# o nome de volume precisa ser especificado pois usamos programas
# que a proteo anti cpia o serial. Ainda fazemos uma proteo
# onde qualquer usurio existente no grupo @adm automaticamente
# rejeitado e o usurio "baduser" somente possui permisso de leitura
# (read list = baduser).
#
[win]
path = /win
comment = Disco do Windows
volume = 3CF434C
invalid users = @adm
browseable = yes
read list = baduser
# Compartilha o diretrio /pub (path = /pub) com o nome "publico" ([publico]).
# A descrio "Diretrio de acesso pblico" associada ao compartilhamento
# com acesso somente leitura (read only = yes) e exibido na janela de navegao
# da rede (browseable = yes). O parmetro public = yes permite que este
# compartilhamento seja acessado usando o usurio "nobody" sem o fornecimento
# de senha.
[publico]
path =/pub
comment = Diretrio de acesso pblico
read only = yes
browseable = yes
public = yes
18.15.3 Domnio
# Arquivo de configurao do SAMBA criado por
# Gleydson Mazioli da Silva <gleydson@debian.org>
# para o guia Foca GNU/Linux Avanado - Captulo SAMBA
# Este script pode ser copiado e distribudo livremente de
# acordo com os termos da GPL. Ele no tem a inteno de
# atender uma determinada finalidade, sendo usado apenas
Captulo 18. SAMBA 375
# para fins didticos, portanto fica a inteira responsabilidade
# do usurio sua utilizao.
[global]
# nome da mquina na rede
netbios name = teste
# nome do grupo de trabalho que a mquina pertencer
workgroup = focalinux
# String que ser mostrada junto com a descrio do servidor
server string = servidor PDC principal de testes
# nvel de segurana user somente aceita usurios autenticados aps o envio
# de login/senha
security = user
# Utilizamos senhas criptografadas nesta configurao
encrypt passwords = true
smb passwd file = /etc/samba/smbpasswd
# Conta que ser mapeada para o usurio guest
guest account = nobody
# Permite restringir quais interfaces o SAMBA responder
bind interfaces only = yes
# Faz o samba s responder requisies vindo de eth0
interfaces = eth0
# como estamos planejando ter um grande nmero de usurios na rede, dividimos
# os arquivos de log do servidor por mquina.
log file = /var/log/samba/samba-%m-%I.log
# O tamanho de CADA arquivo de log criado dever ser 1MB (1024Kb).
max log size = 1000
# Escolhemos um nvel de OS com uma boa folga para vencer as eleies de
# controlador de domnio local
os level = 80
# Dizemos que queremos ser o Domain Master Browse (o padro auto)
domain master = yes
# Damos algumas vantagens para o servidor ganhar a eleio caso
# acontea desempate por critrios
preferred master = yes
# Tambm queremos ser o local master browser para nosso segmento de rede
local master = yes
# Este servidor suportar logon de usurios
domain logons = yes
# Usurios que possuem poderes para adicionar/remover mquinas no domnio
# (tero seu nvel de acesso igual a root)
admin users = gleydson
# Unidade que ser mapeada para o usurio local durante o logon (apenas
# sistemas baseados no NT).
logon drive = m:
Captulo 18. SAMBA 376
# Nome do script que ser executado pelas mquinas clientes
logon script = logon.bat
# Ao que ser tomada durante o recebimento de mensagens do
# Winpopup.
message command = /bin/sh -c /usr/bin/linpopup "%f" "%m" %s; rm %s &
# Conjunto de caracteres utilizados para acessar os compartilhamentos. O padro
# para o Brasil e pases de lngua latina o ISO 8859-1
character set = ISO8859-1
# As restries do PAM tero efeito sobre os usurios e recursos usados do SAMBA
obey pam restriction = yes
# Mapeia o diretrio home do usurio autenticado. Este compartilhamento especial
# descrito em mais detalhes no inicio do captulo sobre o SAMBA no Foca Linux.
[homes]
comment = Diretrio do Usurio
create mask = 0700
directory mask = 0700
browseable = No
# Compartilha o diretrio win (path = /win) com o nome "win" ([win]).
# A descrio associada ao compartilhamento ser "Disco do Windows",
# o nome de volume precisa ser especificado pois usamos programas
# que a proteo anti cpia o serial. Ainda fazemos uma proteo
# onde qualquer usurio existente no grupo @adm automaticamente
# rejeitado e o usurio "baduser" somente possui permisso de leitura
# (read list = baduser).
#
[win]
path = /win
comment = Disco do Windows
volume = 3CF434C
invalid users = @adm
browseable = yes
read list = baduser
# Compartilha o diretrio /pub (path = /pub) com o nome "publico" ([publico]).
# A descrio "Diretrio de acesso pblico" associada ao compartilhamento
# com acesso somente leitura (read only = yes) e exibido na janela de navegao
# da rede (browseable = yes). O parmetro public = yes permite que este
# compartilhamento seja acessado usando o usurio "nobody" sem o fornecimento
# de senha.
[publico]
path =/pub
Captulo 18. SAMBA 377
comment = Diretrio de acesso pblico
read only = yes
browseable = yes
public = yes
# Compartilhamento especial utilizado para o logon de mquinas na rede
[netlogon]
path=/pub/samba/netlogon/logon.bat
read only = yes
Captulo 18. SAMBA 378
379
Captulo 19
Restries de acesso, recursos e servios
Este captulo documenta diversos mtodos de fazer restries de contas, limitao de acesso
interno/externo, de recursos por usurios/grupos, login, tempo mximo ocioso, e outros mo-
dos para limitar o uso de recursos do sistema. Tambm so descritos mtodos para aumentar a
segurana do acesso fsico a seu servidor e maneiras de restringir o uso de servios disponveis
no sistema.
Se voc deseja restringir o acesso de mquinas na rede ou portas especcas em sua mquina ,
veja tambm Firewall iptables on page 113 .
19.1 Limitando recursos no bash
19.1.1 Uso do comando readonly para exportar variveis
Variveis exportadas na forma comumpodemser modicadas a qualquer momento pelo usu-
rio, e isso pode trazer problemas de acordo com o tipo de sistema que administramos. A de-
nio da varivel como somente leitura (readonly) evita a maioria destes problemas:
readonly TESTE="123"
A varivel TESTE no poder ser modicada ou excluda. Com isto o administrador pode
bloquear a modicao de variveis que controlam o funcionamento de determinados re-
cursos do interpretador de comandos (alguns deles sero vistos ainda nesta seo).
OBS1: Algumas variveis de controle de ambientes ambiente do interpretador de comandos
j so iniciadas com valores somente leitura (como as variveis EUID e PPID)
OBS2: Variveis exportadas como somente leitura em shell scripts so mantidas at a naliza-
o do script e depois liberadas.
Captulo 19. Restries de acesso, recursos e servios 380
19.1.2 Restries nos diretrios de usurios e root
O controle de acesso a diretrios de usurios importante quando desejamos que outras pes-
soas no tenham acesso ao diretrio de outros usurios, violando a privacidade do mesmo e
obtendo acesso a partes indesejveis, principalmente do usurio root. recomendado res-
tringir o acesso somente ao dono e grupo do usurio, bloqueando o acesso a outros tipos de
usurios:
chmod 2750 /root
chmod 2750 /home/usuario
O exemplo acima permitir o acesso do diretrio /root e /home/usuario somente ao usu-
rio e grupo que pertencem. Este processo pode ser facilitado na criao dos diretrios de usu-
rios em/home especicando a varivel: DIR_MODE=0750 no arquivo /etc/adduser.conf.
OBS: Algumas distribuies de Linux garantem o acesso livre a diretrios de usurios por
padro pois alguns daemons que requerem acesso a diretrio de usurios rodam sob outros
usurios ao invs do root. Um bom exemplo a utilizao do recurso UserDir do Apache
para servir requisies como http: //servidor.org/~usuario.
A restrio de diretrio home neste caso bloquear o acesso do servidor web Apache ao dire-
trio /home/usuario/public_html. Mesmo assim, uma alternativa para garantir a utiliza-
o da restrio incluir o usurio do servidor web Apache (www-data) no grupo usuario
(que possui acesso ao diretrio /home/usuario):
adduser www-data usuario
Isto garantir que o servidor Apache continue servindo as requisies dentro do diretrio
/home/usuario, com acesso garantido via grupo. O mesmo principio pode ser aplicado em
outros programas, apenas leve em considerao que se um cracker tomar conta do processo
que tem acesso ao seu diretrio home restrito, ele certamente tambm ter acesso.
19.1.3 Restries bsicas do shell bash com bash -r/restricted, rbash
Quando o bash iniciado com o parmetro -r, --restricted ou como rbash, o shell res-
tringe o uso dos seguintes recursos em sua seo:
Usar o comando cd para mudar de diretrio.
Denindo, modicar ou apagar a variveis SHELL, PATH, ENV, BASH_ENV.
Nomes de comandos que contm /
Especicar um nome de arquivo contendo uma / como argumento para o comando
builtin (embutido no interpretador de comandos).
Especicar uma / como argumento a opo -p no comando hash (embutido no interpre-
tador de comandos).
Importar a denio de funes do ambiente do shell atual.
Analisar o valor da varivel SHELLOPTS do ambiente do shell atual.
Captulo 19. Restries de acesso, recursos e servios 381
Redirecionando a sada padro usando os operadores de redirecionamento >, >|, <>, >&,
&>; e >>.
Usando o comando embutido exec para substituir o shell por outro comando.
Usar as opes -f ou -d com o comando enable (embutido no interpretador de coman-
dos).
Especicar a opo -p ao comando interno command.
Desativar o modo restrito com set +r ou set +o restricted *
Estas restries so ativadas aps a leitura dos arquivos de inicializao do interpretador de
comandos. O shell restrito desliga as restries quando um shell script executado.
19.1.4 Finalizando consoles inativos
Avarivel TMOUT determina o tempo de inatividade de umshell para que ele seja terminado.
export TMOUT=600
Terminar o bash caso nenhum comando seja executado no perodo de 600 segundos (5 minu-
tos). Veja Uso do comando readonly para exportar variveis on page 379 como complemento.
19.1.5 Desabilitando o registro de comandos digitados
Todos os comandos que digitamos em uma seo do shell so registrados no arquivo ~
/.bash_history, as seguintes variveis fazem seu controle:
HISTFILE - Nome do arquivo que armazenar o histrico de comandos. O padro ~
/.bash_history. Caso no seja especicado, os comandos no sero gravados aps
nalizar o shell.
HISTSIZE - Dene o nmero de comandos que o arquivo de histrico poder armazenar,
o padro 500.
HISTFILESIZE - Dene o nmero mximo de linhas no arquivo de histrico.
Se voc possui muitos usurios em seu sistema, recomendado ajustar estas variveis como
somente leitura para que o usurio no desative o logging por qualquer motivo (veja Uso do
comando readonly para exportar variveis on page 379).
19.1.6 Desabilitando servios de shell para usurios
Existem casos onde o usurio precisa estar cadastrado no sistema mas no precisa ter acesso
a uma conta de login vlida (como um sistema servidor de e-mail ou outros servios). Neste
caso a desabilitao dos servios de shell aumentar umpouco a segurana do sistema, mesmo
conseguindo acesso a conta/senha estar impedido de entrar no sistema (pelo menos ter um
pouco mais diculdade para conseguir isso).
Um programa que muito usado para desabilitar o shell exibindo uma mensagem ao usurio
que fez a tentativa o falselogin. Ele deve ser colocado como o shell padro no arquivo
Captulo 19. Restries de acesso, recursos e servios 382
/etc/passwd e exibir a mensagem contida no arquivo /etc/falselogin.conf quando
o login para aquele usurio for tentado. Esta operao pode ser facilitada usando a varivel
DSHELL=/usr/bin/falselogin no arquivo /etc/adduser.conf.
Uma forma alternativa de desativar o servio de login de TODOS os usurios (exceto o root
e os j logados no sistema) criar um arquivo chamado /etc/nologin e colocando uma
mensagem dentro dele, que ser exibida quando tentarem efetuar o login no sistema.
OBS: Tome cuidado ao usar esta alternativa, este mtodo deve ser usado somente em caso de
EMERGNCIA, as distribuies Linux usam este mtodo para bloquear o login de outros
usurios durante o processo de inicializao, removendo assim que o processo terminado.
Esteja consciente disso.
Em alguns casos, o uso do PAM pra desabilitar os servios de login pode ser mais adequado
(veja Restringindo/Bloqueando o login on the next page).
19.2 Limitao de recursos usando PAM
Plugglable Autentication Modules (Mdulos de autenticao plugveis) so um conjunto de
bibliotecas usadas para fazer autenticao, gerenciamento de contas, controle de recursos dos
usurios no sistema, em adio ao tradicional sistema de acesso baseado em usurios/grupos.
Este recurso permite modicar a forma que um aplicativo autentica e dene recursos para
o usurio sem necessidade de recompilar o aplicativo principal. Os recursos que desejamos
controlar restries via PAM so especicados individualmente por servios nos arquivos cor-
respondentes em /etc/pam.d e ento os arquivos correspondentes em /etc/security so
usados para controlar tais restries.
Nesta seo assumirei explicaes dirigidas aos recursos controlados pelos arquivos em /etc
/security A maioria das explicaes so baseadas em testes e nos prprios exemplos dos
arquivos de congurao do PAM.
19.2.1 Descobrindo se um determinado programa tem suporte a PAM
Um mtodo simples de se determinar se um programa binrio possui suporte a PAM execu-
tando o comando:
ldd [programa]
Por exemplo:
ldd /bin/login
libcrypt.so.1 => /lib/libcrypt.so.1 (0x4001c000)
libpam.so.0 => /lib/libpam.so.0 (0x40049000)
libpam_misc.so.0 => /lib/libpam_misc.so.0 (0x40051000)
Captulo 19. Restries de acesso, recursos e servios 383
libdl.so.2 => /lib/libdl.so.2 (0x40054000)
libc.so.6 => /lib/libc.so.6 (0x40058000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
Caso a biblioteca libpam for listada, o programa tem suporte a PAM compilado. Programas
que no possuem suporte a PAM devero ter o cdigo fonte modicado inserindo as funes
para tratamento dos mdulos de autenticao.
19.2.2 Denindo um policiamento padro restritivo
O Policiamento padro do PAM especicado em /etc/pam.d/other e dene o que acon-
tecer caso nenhum dos arquivos de controle de servio em /etc/pam.d conram com o ser-
vio em questo. Normalmente o mdulo pam_unix.so usado para fazer o policiamento
padro, para deixar o sistema mais seguro, utilize a seguinte congurao no arquivo /etc
/pam.d/other:
auth required /usr/lib/security/pam_warn.so
auth required /usr/lib/security/pam_deny.so
account required /usr/lib/security/pam_deny.so
password required /usr/lib/security/pam_warn.so
password required /usr/lib/security/pam_deny.so
session required /usr/lib/security/pam_deny.so
O mdulo pam_deny.so responsvel por fazer o bloqueio, e o pam_warn envia avisos ao
syslog (facilidade auth nvel notice) caso servios mdulos PAM que necessitem do servio de
autenticao sejam bloqueados (isto no feito automaticamente pelo pam_deny.so).
OBS: Esta congurao poder causar bloqueio em muitas coisas caso possua mdulos de
autenticao mau congurados. Esteja certo de utilizar o mdulo pam_warn.so (antes do
pam_deny.so) nas diretivas restritivas para entender qual o problema atravs da anlise
dos arquivos de logs.
Mais detalhes sobre a congurao de mdulos de autenticao podero ser encontrados
no endereo ftp://ftp.us.kernel.org/pub/linux/libs/pam/Linux-PAM-html/
pam.html e http://www.kernel.org/pub/linux/libs/pam/pre/doc/rfc86.0.
txt.gz.
19.2.3 Restringindo/Bloqueando o login
Isto controlado pelo arquivo /etc/security/access.conf. O formato deste arquivo
consistem em trs campos separados por ::
Primeiro campo - Garante (+) ou bloqueia (-) o acesso caso as condies nos ou-
tros campos conram.
Captulo 19. Restries de acesso, recursos e servios 384
Segundo campo - Contm o login, grupo. O formato usurio@computador pode ser
usado para conferir com usurios que acessam de determinadas mquinas. Caso exis-
tam mais de um parmetro, estes devem ser separados usando espaos. As palavras
chave ALL (todos) e EXCEPT (exceo) e console tambm podem ser usadas.
Terceiro campo - Lista de terminais (tty - na forma listada pelo ttyname), nomes de
mquinas, nomes de domnios (comeando com .), endereos IP ou FQDN, poro de
rede (nalizando com um .). As palavras chave ALL (todos) e LOCAL (mquinas na
mesma rede) tambm podem ser usadas.
OBS1: - A congurao padro do access.conf garantir o acesso a todos os usurios,
atravs de qualquer lugar (permissiva).
OBS2:: Mesmo se existir uma regra autorizando o acesso ao usurio, as restantes sero ve-
ricadas em busca de uma que bloqueie o acesso do usurio. Se nenhuma regra conferir, o
usurio ter acesso garantido.
OBS3: - O nome de grupo somente checado quando nenhum nome de usurio confere com
nenhum usurio logado no sistema.
OBS4: - Grupos/usurios NIS podem ser especicados precedendo o nome do usurio ou
grupo por uma @.
Abaixo uma congurao restrita de /etc/security/access.conf:
#
# Desabilita o login de todos os usurios EXCETO o root no terminal tty1
-:ALL EXCEPT root:tty1
# Permite o login no console de todos os usurios especificados.
+:gleydson root:console
# Conexes vindas da rede *.debian.org e *.debian.org.br de usurios pertencendo
# ao grupo operadores so consideradas seguras (exceto para o usurio root).
+:operadores EXCEPT root: .debian.org .debian.org.br
# Qualquer outra tentativa de acesso no definida acima bloqueada imediatamente.
-: ALL: ALL
19.2.4 Restringindo o acesso a root no su
Arestrio de acesso a usurio root pelo PAMfunciona permitindo que somente alguns usu-
rios que pertenam a um grupo criado pelo administrador possam se tornar o superusurio
usando o comando su. Esta restrio funciona at mesmo para os usurios que possuem a
senha correta de root, retornando uma mensagem de login ou senha incorretos. Isto extre-
mamente til para restries de acesso.
Um outro ponto positivo caso ocorra um possvel acesso no autorizado em seu sistema ou
um daemon seja corrompido e o atacante cair em um shell, ele no poder obter root na
Captulo 19. Restries de acesso, recursos e servios 385
mquina pois o UID do daemon provavelmente no ter autorizao. A distribuio Debian,
em especial, possui grupos e nomes de usurios organizados de forma a permitir segurana e
separao total caso utilize este mecanismo.
Este recurso se mostra bem eciente para proteger a integridade da mquina at mesmo no
comprometimento de mquinas que possui a senha semelhante, somente se usado emconjunto
com as restries de acesso de outros servios remotos (como o ssh, ftp, etc). O guia Foca
documenta as formas de restrio e seu impacto na segurana da mquina nos captulos do
nvel Avanado (veja o ndice para buscar o captulo correspondente ao que deseja proteger).
Para congurar esta restrio, siga os seguintes passos:
Crie um grupo onde os usurios cadastrados tero acesso root. Por exemplo,
usuarios-su (ou algo mais discreto).
Edite o arquivo /etc/pam.d/su. Insira a seguinte linha (caso no existir) no arquivo de
congurao:
auth required pam_wheel.so group=usuarios-su
O que ela faz usar o mdulo pam_wheel.so requerendo que os usurios pertenam
ao grupo usuarios-su. Salve e saia do editor.
Ainda como usurio root, adicione os usurios que tero acesso a root no grupo
usuarios-su. Recomendo que adicione seu usurio primeiro, principalmente se es-
tiver fazendo acesso remoto, pois se acontecer uma queda no link no car sem acesso
root por cair na restrio :-)
Tente pegar o root com outros usurios que no pertenam ao grupo usuarios-su
estes simplesmente tero o acesso negado.
19.2.5 Restries de servios PAM baseados em dia/hora
Estas restries so controladas pelo arquivo /etc/security/time.conf, a sintaxe deste
arquivo quatro campos separados por ;:
Primeiro campo - Nome do servio PAM que ser controlado (um dos servios conti-
dos em /etc/pam.d).
Segundo campo - Lista de nomes de terminais que a regra que aplicar. O sinal &
tem a funo and, | tem a funo or e especica uma exceo.
Terceiro campo - Nome de usurios afetados pela regra. O sinal & tem a funo
and, | tem a funo or e especica uma exceo.
OBS: O * poder ser usado somente no primeiro, segundo ou terceiro campo em uma
mesma regra.
Quarto campo - DiaSemana/faixa-de-horas que a restrio se aplicar. O dia da se-
mana especicado em duas letras:
Mo - Segunda-feira
Tu - Tera-feira
We - Quarta-feira
Captulo 19. Restries de acesso, recursos e servios 386
Th - Quinta-feira
Fr - Sexta-feira
Sa - Sbado
Su - Domingo
Wk - Todos os dias da semana
Wd - Somente sbado e domingo (m de semana)
Al - Todos os dias
O sinal especica uma exceo. A faixa de horas especicada aps o dia no formato
HHMM-HHMM. Por exemplo:
MoTuWe0000-2400 - Segundas, teras e quartas
MoFrSu0800-1900- - Segundas, sextas e domingo das 08:00 da manha as 19:00 da noite.
FrFr0500-0600 - No ser realizada na sexta (especificaes repetidas so anuladas)
de 05:00 as 06:00.
WkWe0731-1456 - Todos os dias da semana a partir de Quarta de 07:31 da manh as
14:56 da tarde.
AlMo0000-2400 - Todos os dias da semana, exceto segunda-feira.
Por padro o acesso garantido a todos os usurios. Abaixo um exemplo de restries usando
o /etc/security/time.conf:
# Bloqueia o login do usurio user1 ou user2 em qualquer tty, a restrio
# durante todos os dias de 00:00 as 06:30
login;tty*;user1|user2;!Al0000-0630
# Bloqueia o acesso do usurio root ao servio login nos terminais tty*
# (e no nos terminais ttyp*) nos finais de semana.
login;tty* & !ttyp*;root;!Wd0000-2400
# O usurio 1 no poder efetuar o login as teras feiras de 00:00 as 06:00
login;!tty*;user1;Tu0000-0600
OBS1: Mesmo se existir uma regra autorizando o acesso ao usurio, as restantes sero verica-
das em busca de uma que bloqueie o acesso do usurio. Se nenhuma regra conferir, o usurio
ter acesso garantido.
OBS2: Quando as restries de tempo so ativadas no /etc/security/time.conf, o da-
emon logoutd poder ser ativado manualmente (atravs de /etc/init.d/logoutd) para
monitora as restries neste arquivo, forando o logout de usurio de acordo com as congu-
raes do /etc/security/time.conf. Isto ocorrer automaticamente na prxima vez que
iniciar o sistema (a distribuio detecta a presena de restries de tempo no arquivo /etc
/security/time.conf para decidir se deve ou no carregar este daemon).
Quando no est em execuo, os limites de tempo so vericados somente no login do usu-
rio, ele poder ultrapassar este tempo sem ser desconectado do sistema.
Captulo 19. Restries de acesso, recursos e servios 387
19.2.6 Permitindo acesso a grupos extras
Este recurso controlado pelo arquivo /etc/security/group.conf. Este arquivo com-
posto por 5 campos separados por ; (os 4 primeiros so os mesmos explicados em Restries
de servios PAM baseados em dia/hora on page 385. O 5o campo contm um ou mais grupos
(separados por espaos ou vrgulas) que sero adicionados aos grupos do usurio quando as
condies dos campos anteriores conferirem.
OBS: Se o usurio escrever um programa que chama um interpretador de comandos e der
a permisso SGID (chmod g+s programa), ele ter acesso quele grupo na hora que quiser.
Restrinja o uso de grupos somente a usurios de conana ou crie grupos especcos para
evitar problemas.
Exemplo de congurao do arquivo /etc/security/group.conf:
# Permite que o usurio gleydson tenha acesso ao grupo floppy efetuando o login
# entre 08:00 da manha e 19:00 da noite
login;tty*;gleydson;Al0800-1900;floppy
# Todos os usurios podem ter acesso ao grupo games e sound aos sbados e domingos
login;tty*;*;SaSu0000-2400;sound games
# Todos os usurios podem ter acesso ao grupo games e sound todos os dias
# de 18:00 as 05:00 da manh (fora do horrio de expediente ;-)
login;tty*;*;Al1800-0500;sound,games
# Backups so permitidos fora do horrio de expediente (para no sobrecarregar
# a CPU e evitar o uso excessivo de disco).
login;tty*;gleydson;Al1830-2400;backup
OBS1: Mesmo que uma regra conra com o usurio, as outras tambm sero vericadas para
garantir acesso grupos extras.
OBS2: Opadro na maioria das distribuies limitar o nmero mximo de grupos do usurio
para 32. Caso precise aumentar este limite, ser necessrio recompilar o kernel (e tambm a
glibc, se necessrio) para aceitar um nmero maior modicando a varivel ngroup.
19.2.7 Limitao de recursos do shell
Estas restries so especicadas no arquivo /etc/security/limits.conf. Seu formato
consiste em 4 campos separados por ou ou mais espaos:
Primeiro campo - Especica o nome de usurio, um nome de grupo (@grupo) ou um
* especicando que as restries nos outros campos se aplicam a todos os grupos e
todos os usurios.
Captulo 19. Restries de acesso, recursos e servios 388
Segundo campo - Tipo de restrio:
soft - Limite suave de bloqueio.
hard - Limite rgido de bloqueio.
- - Quando o tipo de restrio no se aplica ao tem que deseja restringir o acesso.
Quando somente o limite hard (rgido) especicado, o limite suave assume o mesmo
valor.
Terceiro campo - tem que deseja restringir o acesso:
core - Limita o tamanho do arquivo core (KB)
data - Tamanho mximo de arquivo de dados (KB)
fsize - Tamanho mximo de arquivo (KB)
memlock - Tamanho mximo do espao de endereos bloqueado na memria (KB)
nofile - Nmero mximo de arquivos abertos
rss - Tamanho mximo residente (KB)
stack - Tamanho mximo da pilha (KB)
cpu - Tempo mximo de uso da CPU (MIN)
nproc - Nmero mximo de processos
as - Limite de espao de endereos
maxlogins - Nmero mximo de logins
priority - Prioridade de execuo de processos de usurios
Quarto campo - Especica o valor do campo anterior
Os limites aplicados ao usurio podem ser visualizados atravs do comando ulimit -S -a
(para listar limites suaves - soft) e ulimit -H -a (para listar limites rgidos - hard). Caso o
parmetro -S ou -H sejam omitidos, os limites listados sero os suaves (soft). Um exemplo de
/etc/security/limits.conf (retirado da distribuio Debian GNU/Linux:
* soft core 0
* hard rss 10000
@student hard nproc 20
@faculty soft nproc 20
@faculty hard nproc 50
ftp hard nproc 0
@student - maxlogins 4
gleydson - maxlogins 2
OBS: Estas permisses passam a ter efeito no momento que o usurio se conecta ao sistema, e
no quando elas so modicadas no arquivo /etc/security/limits.conf.
19.3 Restries de acesso a programas/diretrios/arquivos usando
grupos
Usurios podem ter o acesso liberado a diretrios/arquivos execuo de programas de acordo
com o grupo que pertencem. Este um recurso valioso na administrao de sistemas Unix
Captulo 19. Restries de acesso, recursos e servios 389
que se bem usado, aumenta as restries de acesso e segurana no acesso/utilizao de pro-
gramas em um ambiente de trabalho. Usurios de sistema tendem a usar o usurio root para
fazer tarefas como conexo com internet, utilizao da placa de som, modem, etc. e as vezes
nem sabem que isso pode ser feito atravs do mesmo usurio adicionando este a um grupo
especco.
Esta tarefa pode ser feita com o comando adduser usurio grupo ou editando manual-
mente os arquivos /etc/group e /etc/gshadow. Podemos ter as seguintes situaes facili-
tadas com o uso de grupos:
Usar a placa de som. Os dispositivos usados pela placa de som como /dev/audio,
/dev/dsp, /dev/sndstat, etc. normalmente tem permisso leitura/gravao para o
usurio root e grupo audio (cheque com o comando ls -la /dev/audio). Para
autorizar determinados usurios usar a placa de som basta adiciona-los neste grupo:
adduser usuario audio.
Conectar a Internet. Normalmente o utilitrio ppp temas permisses SUIDroot e grupo
dip. Adicionamos o usurio a este grupo: adduser usuario dip. Agora ele poder
conectar/desconectar a internet sem a interveno do usurio root. OBS Certamente
o usurio ter acesso aos arquivos de congurao da discagem do ppp e conseqente-
mente a senha de conexo internet, e esta senha a mesma usada no e-mail primrio
do provedor (com o mesmo nome da conta). Esta mesma situao pode acontecer com
outros programas que autorize o acesso a grupos, importante que conhea bem as per-
misses do programa e entender se existem riscos.
Utilizar o modem. Um bom grupo para permitir a utilizao do modem dialout. O
dispositivo utilizado pelo modem (no seu link) deve ter permisses leitura/gravao
para o usurio root e grupo dialout. Cadastrando o usurio neste grupo autorizar a
utilizao do modem: adduser usuario dialout.
Permitir que diversos usurios compartilhem um mesmo diretrio. Isto til quando
muitas pessoas esto desenvolvendo um mesmo projeto. Siga estes passos:
Crie um novo grupo no sistema: groupadd gp1, a opo -g permite selecionar
manualmente a GID. Opcionalmente voc poder usar um grupo j existente no
sistema (veja o arquivo /etc/group).
Crie o diretrio que ser usado para armazenar os arquivos deste grupo de usurios:
mkdirprojeto1).
Mude o dono/grupo do diretrio: chown root.gp1 projeto1/
De permisses de leitura/gravao para o dono/grupo do diretrio, vamos tambm
incluir a permisso SGID para que todos os arquivos criados dentro deste diretrio
pertenam ao mesmo grupo e no ao grupo primrio do usurio, assim todos os
usurios tero acesso: chmod 2770 projeto1
Agora cadastre os usurios que devero ter acesso ao diretrio projeto1/ no
grupo gp1, somente estes usurios e o root tero acesso ao diretrio (permisses
2770).
interessante tambm mudar a umask do usurio de 022 para 002 (ou equiva-
lente) para que os novos arquivos criados tenham permisso de leitura/gravao
para o grupo gp1. Caso contrrio, lembre-se de modicar as permisses de seus
arquivos manualmente. Um timo comando para fazer isso (sem afetar diretrios)
: find . -type f -user usuario1 -exec chmod 0660 \{\} \;. Este
Captulo 19. Restries de acesso, recursos e servios 390
comando parece estranho mas excelente! um chmod -R 0660 afetaria at os di-
retrios, imagine o caos.
A maioria das distribuies Linux vem com uma boa poltica de grupos para permitir um
controle ecaz de recurso. Se voc quer saber quais arquivos em seu sistema pertencem a
determinado grupo (til para saber o que o usurio ter acesso se adiciona-lo quele grupo)
execute o comando:
find / -group nome_do_grupo
19.4 Dando poderes de root para executar determinados programas
A ferramenta ideal para isto o sudo. Atravs dela possvel permitir um usurio comum
executar um comando como root e registrar quando isto foi feito. possvel selecionar os
usurios/grupos que tero acesso e quais aplicativos que podero ser usados, estas congura-
es so feitas no arquivo /etc/sudoers.
Por exemplo, para o usurio john usar o comando shutdown para desligar o computador:
sudo shutdown -h now.
Osudo um programa muito completo, tomaria muitos Kilobytes neste guia. Recomendo dar
uma lida na pgina de manual para entender como as variveis do arquivo de congurao
funcionam. Mesmo assimaqui vai umexemplo simples deste arquivo para iniciar rapidamente
o uso do sudo:
# arquivo sudoers.
#
# Edite este arquivo com o comando visudo como root
#
#
# Especificao de mquinas. O primeiro campo (Host_Alias) diz que a varivel
# LOCALSERVER ser um nome/endereo de mquina
Host_Alias LOCALSERVER=192.168.0.1
# Especificao de usurios. O primeiro campo (User_Alias) diz que a varivel
# NETMASTERS armazenar nomes de usurios
User_Alias NETMASTERS=gleydson, goodboy
# Comandos. O primeiro campo (Cmnd_Alias) diz que a varivel
# C_REDE contm comandos do sistema. Mais de um parmetro
# deve ser separado por vrgulas
Cmnd_Alias C_REDE=/sbin/ipchains, /sbin/iptables
# Padres que se aplicam aos usurios da varivel NETMASTERS. O parmetro
# mail_always sempre envia um e-mail ao root avisando sobre o uso do
Captulo 19. Restries de acesso, recursos e servios 391
# sudo
Defaults:NETMASTERS mail_always
# As linha que comeam com o nome de usurio ou varivel "User_Alias"
# definem o acesso aos recursos. O primeiro campo o usurio, o segundo
# o endereo de acesso (opcionalmente seguido de um sinal "=" para
# especificar opes adicionais) o terceiro o comando ou lista de comandos
#
# O usurio root no tem restries
root ALL=(ALL) ALL
# Permite que os usurios especificados na varivel NETMASTERS
# acessando dos locais em LOCALSERVER utilizem os comandos
# em C_REDE (sem fornecer senha).
NETMASTERS LOCALSERVER=NOPASSWD: C_REDE
Edite este arquivo como comando visudo, ele faz algumas checagens para detectar problemas
de congurao. Para listar os comandos disponveis para o usurio no sudo, utilize a opo
-l, ex: sudo -l.
19.5 Restringindo o comando su
Restries de acesso atravs de grupos, bloqueio de acesso, acesso direto sem senha, etc. po-
dem ser aplicados ao sudo via seu arquivo de congurao PAM /etc/pam.d/su. Abaixo
um exemplo explicativo deste arquivo:
# A configurao abaixo requer que o usurio seja membro do
# grupo adm para usar o su.
# auth required pam_wheel.so group=adm
# Membros do grupo acima no precisam fornecer senha, temos confiana neles.
# auth sufficient pam_wheel.so trust
# Usurio que pertencem ao grupo "nosu" nunca devero ter acesso ao su
# auth required pam_wheel.so deny group=nosu
# O root no precisa fornecer senha ao su
auth sufficient pam_rootok.so
# Ativa as restries PAM de /etc/security/limits.conf
session required pam_limits.so
# Isto ativa as restries PAM de /etc/security/time.conf no
# comando su
Captulo 19. Restries de acesso, recursos e servios 392
account requisite pam_time.so
# Mdulos padres de autenticao Unix
auth required pam_unix.so
account required pam_unix.so
session required pam_unix.so
19.6 Restries baseadas em usurio/IP
O servio identd permite identicar os usurios que esto realizando conexes TCP, adi-
cionalmente esta caracterstica usada por programas para fazer restries para usurios
em adio ao endereo de origem/destino. A sintaxe usada nas diretivas de acesso es-
pecicada na forma usurio@endereo. O Servidor ident on page 245 explica a congura-
o/utilizao/vulnerabilidades e recomendaes sobre este servio.
Diversos programas que possuem controle de acesso baseado em IPs/hosts aceitam esta es-
pecicao, como o exim, ircd, e o conhecido tcpd.
Segue um exemplo da utilizao do identd com o arquivo hosts.allow:
# Permite o acesso ao servio de telnet somente ao usurio gleydson conectando
# a partir da mquina com IP 192.168.1.1
in.telnetd: gleydson@192.168.1.1
# Permite o acesso ao servio ftp somente ao usurio gleydson conectando de
# qualquer mquina da rede 192.168.1.*
in.ftpd: gleydson@192.168.1.
Note que a utilizao do identd torna a utilizao do servio umpouco mais restrita, somente
conhecendo os logins de quem tem acesso ao servio, um cracker conseguir ter acesso ao
mesmo servio naquele sistema (este um dos motivos que recomendado sempre divulgar o
mnimo detalhes possveis sobre o sistema para minimizar riscos de ataques).
Veja mais detalhes sobre o uso do identd em Servidor ident on page 245.
19.7 Restries por MAC Address/IP
Esta proteo oferece uma barreira maior se segurana contra IPs spoong evitando que pes-
soas mal intencionadas faamumIP spoong da mquina para obter acessos privilegiados que
somente o detentor original do MAC/IP teria. Recomendo no levar em considerao que isto
seja a soluo denitiva contra IP spoong, pois possvel falsicar o MAC address de uma
interface para tomar outra identidade.
Captulo 19. Restries de acesso, recursos e servios 393
Este mtodo poder ser aplicado para fornecer um maior lao de conana por hardware entre
as mquinas que compem uma rede de servidores. Ele tambm evita mesmo que uma m-
quina congurada de forma errnea tenha acesso indevido ao servidor ou em uma situao
extrema, se torne o gateway da rede.
Para restringir as conexes para uma mquina Linux por MAC address, utilize o rewall
iptables. Com ele ser permitido fazer a restrio por servios, criando uma barreira bas-
tante chata para crackers tentarem se conectar a um servio. Como referncia, leia a seo
Especicando o endereo MAC da interface on page 148.
Outra situao a restrio por par MAC/IP usando o prprio cache arp da mquina, usando
entradas estticas de endereos. Um exemplo deste uso quando voc extremamente pa-
ranico ou quando uma rede que utiliza algum mtodo de autenticao baseado no rhosts
(como o caso do sistema de backup do Amanda), ento importante dizer para as mquinas
servidoras, qual o MAC address/IP privilegiado que ter o acesso ao usurio para conexo
sem senha.
O local padronizado para denir um MAC esttico (e bastante desconhecido da maioria dos
administradores de sistemas) o /etc/ethers. O formato deste arquivo o MAC Address e
IP separados por espao, cada linha comuma nova entrada de MAC Address. Veja o exemplo:
00:03:47:AA:AA:AB www.focalinux.org.br
00:03:47:BB:AA:BA www2.focalinux.org.br
00:03:47:BB:AA:BB 192.168.0.1
Caso no conhea o formato do endereo de MACAddress, os trs primeiros 3 campos denem
o fabricante da placa de rede, e os 3 ltimos uma identicao nica do fabricante para a
Placa, ou seja, NENHUMA placa de rede fabricada tem o mesmo MAC Address fsico.
Para que o comando arp crie as entradas estticas no seu cache ARP, ser necessrio executar
o comando arp -f /etc/ethers. Este comando poder ser colocado em algum script ou
diretrio de inicializao de sua distribuio para que seja executado automaticamente (como
por exemplo, no /etc/rc.boot da Debian). Digitando arp voc ver as linhas denidas no
arquivo /etc/ethers marcadas com as opo (ag) M (manual/permanente). Outra forma
de vericar, usando o arp -a mquina ou somente arp -a. As mquinas especicadas
estaticamente (manualmente) tero o nome PERM listados (cache arp permanente).
OBS: Como deve ter notado, a restrio por MAC Address implica em um aumento no tra-
balho de gerenciamento das conguraes. Assim, planeje-se para que esta tarefa no seja
desgastante, crie programas para realizar atualizaes dinmicas estudando a estrutura de sua
rede e como suas mquinas se comunicam para no ter problemas obscuros quando tiver que
fazer uma simples modicao em uma interface de rede :)
Uma boa congurao restritiva requer anlise sobre os impactos na rede.
Captulo 19. Restries de acesso, recursos e servios 394
19.8 Desabilitando servios no usados no Inetd
Desative todos os servios que no sero utilizados no arquivo /etc/inetd.conf, isto di-
minui bastante as possibilidades de ataques em seu sistema. Os nomes de servios so os
parmetros especicados na primeira coluna do arquivo /etc/inetd.conf (por exemplo,
talk, ircd, pop3, auth, smtp).
Para desativar servios neste arquivo, ponha o smbolo # no inicio das linhas que deseja co-
mentar e execute um killall -HUP inetd. Alternativamente, o comando update-inetd
pode ser usado para facilitar esta tarefa:
update-inetd --disable finger,talk,time,daytime
update-inetd --disable
Este comando envia automaticamente o sinal de reinicio (HUP) ao inetd. Oservio poder ser
novamente ativado substituindo a opo disable por enable ou retirando o trecho #<off>#
no comeo da linha do servio do /etc/inetd.conf.
19.9 Evitando o uso de hosts.equiv e .rhosts
O arquivo hosts.equiv contm uma lista de usurios autorizados/desautorizados que po-
dem fazer uso dos servios r* sem fornecer uma senha (como rsh, rcp, rexec, etc) , veja
/etc/hosts.equiv e /etc/shosts.equiv on page 64. muito fcil falsicar um nome de usurio
para obter acesso aos privilgios de outro usurio usando este recurso.
Os arquivos ~/.rhosts, ~/.shosts tem o funcionamento parecido com o hosts.equiv
mas contm somente dois campos, o primeiro especicando o nome do computador (FQDN) e
o segundo o nome do usurio que tem permisso de acesso sem fornecer senha. Ele garantir
este acesso ao usurio e mquina remota especicada neste arquivo. Se for denido somente
o nome do computador, o nome de usurio dever ser o mesmo do local para que o acesso
sem senha seja garantido. recomendvel restringir o acesso a estes arquivos somente ao
usurio/grupo quando for realmente necessrio. Um exemplo de ~/.rhosts:
maquina1.dominio.com.br usuario1
maquina2.dominio.com.br usuario2
Ouso destes dois mecanismos e dos servios r* so desencorajados! (o ltimo por usar trans-
ferncia de dados no criptografadas). Veja Servidor ssh on page 255 para uma alternativa
melhor. Utilize estes dois mecanismos somente se deseja facilidade no gerenciamento e se sua
rede seja absolutamente convel e a segurana de dados no seja prioridade pra voc. . .
Captulo 19. Restries de acesso, recursos e servios 395
19.10 Restringindo o uso do shutdown
Por padro todos que tem acesso ao console do sistema podem efetuar o reinicio do computa-
dor pressionando CTRL+ALT+DEL. Estas teclas de combinao so denidas pela linha
ca:12345:ctrlaltdel:/sbin/shutdown -r now
do arquivo /etc/inittab. A opo -a (access) do shutdown restringe isto, permi-
tindo somente o reinicio do sistema caso um dos usurios cadastrados no arquivo /etc
/shutdown.allow estejam logados no console. Caso nenhum usurio autorizado esteja lo-
gado, a mensagemshutdown: no authorized users logged in exibida no console
local.
O arquivo /etc/shutdown.allow deve conter um usurio por linha e 32 no mximo.
A mesma linha do /etc/inittab pode ser modicada para a seguinte:
ca:12345:ctrlaltdel:/sbin/shutdown -a -t5 -r now
OBS: Se a opo -a seja especicada e o arquivo /etc/shutdown.allow no existe, a opo
-a ignorada.
19.11 Restringindo o acesso ao sistema de arquivos /proc
O patch restricted proc fs um dos melhores para realizar esta tarefa. Restringindo o acesso ao
sistema de arquivos /proc evita que o usurio normal tenha acesso aos detalhes sobre proces-
sos de outros (com ps aux) ou acesso a detalhes de processos de outros usurios existentes
nos subdiretrios numricos (equivalentes a PID) em /proc. Abaixo algumas caractersticas
do patch restricted proc fs:
pequeno, rpido e faz poucas modicaes no fonte do kernel.
Seu mtodo de funcionamento baseado nas restries de dono/grupo (nativas de am-
biente Unix).
Restringe a visualizao de processos s dos usurios. Adicionalmente ser especicada
uma GID para o diretrio /proc, qualquer usurio que pertena ao grupo especicado
poder visualizar todos os processos e entrar em qualquer diretrio do kernel (sem res-
tries, como se no tivesse o patch).
Muito estvel e convel.
Este patch deve ser baixado de http://noc.res.cmu.edu/proc, existem verses para os
kernels da srie 2.2 e 2.4, baixe e aplique o patch, na congurao do kernel ative a opo
Restricted Proc fs support. Compile e instale seu kernel.
No arquivo /etc/fstab inclua um grupo para a montagem do sistema de arquivos /proc
(vamos usar o grupo adm com a GID 4):
Captulo 19. Restries de acesso, recursos e servios 396
# /etc/fstab: informaes estticas do sistemas de arquivos.
#
# <Sist. Arq.> <Ponto Mont.> <tipo> <opes> <dump> <passo>
proc /proc proc defaults,gid=4 0 0
Aps reiniciar o sistema, execute o comando ls -lad /proc note que o grupo do diret-
rio /proc ser modicado para adm. Agora entre como um usurio e execute um ps aux,
somente seus processos sero listados. Para autorizar um usurio especco ver todos os pro-
cessos (ter acesso novamente ao diretrio /proc), inclua este no grupo que usou no arquivo
/etc/fstab:
adduser usuario adm
Aps efetuar o usurio j estar pertencendo ao grupo adm (conra digitando groups), e po-
der ver novamente os processos de todos os usurios com o comando ps aux.
OBS1: Incluir um usurio no grupo adm PERIGOSO, porque este usurio poder ter acesso
a arquivo/diretrios que pertenam a este grupo, como os arquivos/diretrios em/var/log.
Se esta no sua inteno, crie umgrupo independente como restrproc para controlar quem
ter acesso ao diretrio /proc: addgroup restrproc.
OBS2: Se a opo gid no for especicada para a montagem de /proc no /etc/fstab, o
grupo root ser usado como padro. NUNCA adicione usurios ao grupo root, use o m-
todo da observao acima para permitir outros usurios ver todos os processos em execuo.
OBS3 Caso o servidor identd esteja sendo usado na mquina servidora, ser necessrio roda-
lo com a mesma GID do diretrio /proc para que continue funcionando. Se ele executado
como daemon, adicione a opo -g GRUPO no script que inicia o servio em /etc/init.d
e reinicie o daemon. Caso ele seja iniciado via inetd, faa a seguinte modicao no arquivo
/etc/inetd.conf (assumindo o uso do oidentd):
#:INFO: Info services
auth stream tcp nowait.40 nobody.adm /usr/sbin/oidentd oidend -q -i -t 40
Veja Servidor ident on page 245 para detalhes sobre este servio.
19.12 Limitando o uso de espao em disco (quotas)
O sistema de quotas usado para limitar o espao em disco disponvel a usurios/grupo. O
uso de parties independentes para o diretrio /home e outros montados separadamente no
muito ecaz porque muitos usurios sero prejudicados se a partio for totalmente ocupada
e alguns possuem requerimentos de uso maior do que outros.
O suporte a Quotas deve estar compilado no kernel (seo FileSystems) e o sistema de arquivos
dever ser do tipo ext2 ou XFS para funcionar.
Captulo 19. Restries de acesso, recursos e servios 397
19.12.1 Instalando o sistema de quotas
Abaixo o passo a passo para a instalao de quotas em seu sistema:
1 Recompile seu kernel com suporte a quota. Habilite a opo Quota support na seo
FileSystems na congurao de recursos do seu kernel.
2 Instale o pacote quota no sistema (apt-get install quota).
3 Habilite a quota para os sistemas de arquivos que deseja restringir no arquivo /etc
/fstab:
/dev/hda1 /boot ext2 defaults 1 1
/dev/hda3 / ext2 defaults,usrquota 1 2
/dev/hda4 /usr ext2 defaults,grpquota 1 3
/dev/hda5 /pub ext2 defaults,usrquota,grpquota 1 4
O sistema de arquivos /dev/hda1 no ter suporte a quota, /dev/hda3 ter suporte a
quotas de usurios (usrquota), /dev/hda4 ter suporte a quotas de grupos (grpquota) e
/dev/hda5 ter suporte a ambos. Por padro assumido que os arquivos de controle de
quota esto localizados no ponto de montagem da partio com os nomes quota.user
e quota.group.
4 Agora ser necessrio criar os arquivos quota.user e quota.group no ponto de
montagem de cada partio ext2 acima que utilizar o recurso de quotas. O arquivo
quota.user controla as quotas de usurios e quota.group controla as quotas de gru-
pos.
Crie um arquivo vazio quota.user em / (ter suporte somente a quota de usu-
rios, veja a opo de montagem no /etc/fstab): touch /quota.user ou echo
-n >/quota.user.
Crie um arquivo vazio quota.group em /usr (ter suporte somente a quota de
grupos): touch /usr/quota.group ou echo -n >/usr/quota.group.
Crie um arquivo vazio quota.user e quota.group em /pub (este sistema de
arquivos tem suporte a ambos os tipos de quota): touch /pub/quota.user
/pub/quota.group.
Por motivos de segurana, as permisses dos arquivos de controle de quota quota.user
e quota.group devem ser leitura/gravao ao usurio root e sem permisses para
grupo/outros usurios: chmod 0600 /quota.user /quota.group. OBS: Se de-
seja utilizar o quota verso 1, certique-se que no existem os arquivos chamados
aquota.user e aquota.group no diretrio raz de sua partio. Se eles estiverem dis-
ponveis, os utilitrios de quota utilizaro esta verso como padro, atualmente o kernel
2.4 possui somente suporte a quota verso 1. A verso 2 do quota checa corrompimento
dos arquivos de dados de quota e trabalha mais rpido em parties grandes. So neces-
srios patches da srie ac (Alan Cox) para usar a verso 2 do quota.
5 Entre em modo monousurio init 1, desmonte os sistemas de arquivos que utilizaro
a quota e monte-os novamente (isto serve para ativar as opes de quota). Alternativa-
mente, execute umount -a (para desmontar todos os sistemas de arquivos) e mount -a
para remontar todos. Se voc ativou as quotas para o sistema de arquivos / (como em
nosso exemplo) ser necessrio reiniciar o sistema.
6 O prximo passo scanear o disco para criar os dados para as parties com suporte a
quota (ativadas no /etc/fstab):
quotacheck -augv
Captulo 19. Restries de acesso, recursos e servios 398
O parmetro -a diz para checar todas as parties com suporte a quota no arquivo /etc
/mtab, -u para checar quotas de usurios, -g para checar grupos e -v para mostrar o pro-
gresso da checagem da partio. Na primeira execuo mostrado uma mensagem de
erro de arquivo quota.user/quota.group corrompido, mas isto normal porque o
arquivo anterior tem tamanho zero. Estes nomes tambm servem para o quotacheck
auto-detectar a verso do sistema de quota usada no sistema de arquivos. OBS: Certa-
mente ser necessrio forar a remontagem como somente leitura do sistema de arqui-
vos / coma opo -mpara o quotacheck criar as conguraes de quota nesta partio.
7 Agora resta ativar o suporte as quotas de disco em todas as parties (-a) com recurso de
quota especicado (no /etc/mtab):
quotaon -augv
As opes possuem o mesmo signicado do comando quotacheck. O utilitrio
quotaoff serve para desativar quotas de usurios e usa as mesmas opes do quotaon.
Estes trs utilitrios somente podem ser usados pelo usurio root. As opes de quota
podem ser especicadas independente para cada sistema de arquivos:
# Ativa o suporte a quota em /pub (somente grupos de usurios no momento).
quotaon -gv /pub
# Ativa as quotas de usurios em /pub
quotaon -uv /pub
# Desativa as quotas de grupos em /pub (deixando somente a de usurios ativa)
quotaoff -gv /pub
A atualizao de quotas durante a gravao/excluso de arquivos feita automaticamente. O
utilitrio quotacheck dever ser executado sempre que o sistema de quotas for desativado
(por no haver atualizao automtica dos dados de uso de disco) ou quando ocorrerem falhas
de disco.
Na distribuio Debian o quotacheck disparado sempre que necessrio aps as situaes
de checagem de disco. As quotas de todas as parties tambm so ativadas automaticamente
pelo script /etc/init.d/quota e /etc/init.d/quotarpc.
Em sistemas que utilizam NFS e possuem sistemas de arquivos exportados em /etc
/exports, o daemon rpc.rquotad dever ser carregado. Sua funo fornecer os detalhes
de quota dos sistemas de arquivos locais exportados para as mquinas clientes.
19.12.2 Editando quotas de usurios/grupos
O programa edquota usado pelo root para editar as quotas de usurios/grupos. Por pa-
dro, todos os usurios/grupos do sistema no possuem quotas. Sua sintaxe a seguinte
edquota [opes] [usurio/grupo]
As opes podem ser:
-u Edita a quota do usurio especicado (esta a padro).
Captulo 19. Restries de acesso, recursos e servios 399
-g Edita a quota de grupo especicado.
-r Permite editar a quota de sistemas de arquivos remotos atravs do daemon rpc.rquotad.
-p [usurio/grupo ] Usa os valores especicados para o usurio/grupo para denir a nova
quota, sem necessidade de entrar no modo de edio.
-t Permite modicar o valor de tolerncia dos limites que ultrapassam soft at que sejam blo-
queados. Durante o tempo de tolerncia, sero enviados somente avisos sobre a quota
ultrapassada sem bloquear totalmente a gravao de arquivos (at que o limite hard seja
atingido ou o tempo de tolerncia seja ultrapassado).
Quando a quota soft do usurio/grupo estourada, a mensagem warning: user disk quota
excedeed ser exibida. Quando a quota hard ultrapassada, a gravao atual interrompida
e a mensagem write failed, user disk limit reatched mostrada ao usurio. Nenhuma nova
gravao que ultrapasse a quota hard permitida Por exemplo, para modicar a quota do
usurio gleydson: edquota gleydson
Disk quotas for user gleydson (uid 1000):
Filesystem blocks soft hard inodes soft
hard
/dev/hda5 504944 500100 600000 10868 15000
20000
O editor de textos usado poder ser modicado atravs da varivel $EDITOR. Abaixo a expli-
cao destes campos:
Filesystem - Sistema de arquivos que ter a quota do usurio/grupo editada. As res-
tries se aplicam individualmente de acordo com o sistema de arquivos.
blocks - Nmero mximo de blocos (especicado em Kbytes) que o usurio possui
atualmente. O usurio gleydson est usando atualmente 504944 Kbytes.
soft - Restrio mnima de espao em disco usado. Atualmente 500100 Kb.
hard - Limite mximo aceitvel de uso em disco para o usurio/grupo sendo edi-
tado. 600000 Kb atualmente. O sistema de quotas nunca deixar este limite ser
ultrapassado.
inodes - Nmero mximo de arquivos que o usurio possui atualmente na partio
especicada. O usurio gleydson possui atualmente 10868 arquivos na partio /pub.
soft - Restrio mnima de nmero de arquivos que o usurio/grupo possui no
disco. Atualmente em 15.000.
hard - Restrio mxima de nmero de arquivos que o usurio/grupo possui no
disco. Atualmente em 20.000.
Para desativar as restries coloque 0 no campo soft ou hard. Quando o limite soft atingido,
o usurio alertado por ter ultrapassado sua quota com a mensagem warning: user quota ex-
cedeed (quota do usurio excedida). O programa setquota uma programa no-interativo
para edio de quotas para ser usado diretamente na linha de comando ou em shell scripts.
Aps ultrapassar o limite soft, comea a contagem do tempo para que este passe a valer como
limite hard (o mximo aceitvel e que nunca poder ser ultrapassado). O comando edquota
-t serve para modicar estes valores na partio especicada:
Captulo 19. Restries de acesso, recursos e servios 400
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/hda5 2days 7days
Abaixo a explicao destes campos:
Filesystem - Sistema de arquivos que ter o perodo de tolerncia modicado.
Block grade period - Tempo mximo de tolerncia para usurios/grupos que ul-
trapassaram sua quota soft de espao em disco antes de passar a valer como hard. No
exemplo, o usurio tem 2 dias para excluir possveis arquivos ou contactar o administra-
dor para redimensionar o tamanho de quota. O valor padro 7 dias.
Inode grade period - Tempo mximo de tolerncia para usurios/grupos que ultra-
passaram sua quota soft de nmero de arquivos gravados antes de passar a valer como
hard. No exemplo, o usurio tem 7 dias para excluir possveis arquivos ou contactar o
administrador para analisar seu tamanho de quota. O valor padro 7 dias.
OBS1: - O comando quotacheck dever ser executado na partio sempre que novas res-
tries/limites forem editados com o edquota. Isto atualiza os arquivos quota.user e
quota.group. Lembre-se de desativar o sistema de quotas (quotaoff -ugv /partio)
antes de executar este comando (para liberar totalmente a partio, quotacheck remonta a
partio somente para leitura quando executado). Por este motivo recomendvel fazer isso
em modo monousurio.
OBS2: Quando o limite soft (suave) excedido, o sistema comear a lhe mostrar mensagens
alertando a passagem do limite (para lhe dar tempo de eliminar arquivos ou no ser pego
desprevenido com o bloqueio de gravao) porque o limite hard (rgido) nunca poder ser
ultrapassado.
OBS3: - O tempo de tolerncia restante ao usurio/grupo quando a quota ultrapassada
poder ser visualizada com o comando quota (veja Vericando a quota disponvel ao usurio
on the next page).
OBS4: - Quando o usurio exclui seus arquivos e volta a car abaixo dos limites soft da quota,
o tempo de tolerncia resetado aos valores padres (especicados por edquota -t.
OBS5: - As quotas de espao em disco podem ser denidas automaticamente para os no-
vos usurios adicionados ao sistema colocando o espao em disco na varivel QUOTAU-
SER=numero do arquivo /etc/adduser.conf. Isto ser equivalente a digitar o comando
edquota -q QUOTA novo_usurio.
19.12.3 Modicando a quota de todos os usurios de uma vez
Editar manualmente a quota de cada usurio uma tarefa trabalhosa quando se est instalando
quotas e possui muitos usurios, existe uma maneira mais fcil de fazer isso usando o prprio
edquota e um usurio com a quota j denida. Por exemplo, instalamos quota em nosso
sistema e queremos que todos os 300 usurios tenham a quota de usurio de 10MB e de grupo
de 15MB:
Captulo 19. Restries de acesso, recursos e servios 401
1 Criamos um usurio com esta quota usando o edquota (como descrito em Edi-
tando quotas de usurios/grupos on page 398). Como exemplo usaremos o usurio
teste_user. Use o comando quota teste_user para vericar se as quotas para este
usurio est correta.
2 Criamos um script que modique a quota padro de todos os usurios do sistema de
uma s vez:
#!/bin/sh
cd /home
for USUARIO in *
do
edquota -u ${USUARIO} -p teste_user
done
Pronto, verique a quota de todos os usurios com o comando repquota -a.
19.12.4 Vericando a quota disponvel ao usurio
Execute o comando quota mostra os limites de usurios/grupos e a tolerncia restante antes
do limite soft se tornar rgido. Abaixo alguns exemplos descritivos deste comando:
quota
Disk quotas for user gleydson (uid 1234):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda5 504944* 500100 600000 00:05 10868 0 0
Os campos tem o seguinte signicado:
Filesystem - Sistema de arquivos.
blocks - Nmero de blocos usados atualmente na partio (em Kb). O * indica que o
limite foi ultrapassado. Atualmente em 504944.
quota - Limite suave (soft) de espao na partio que o usurio/grupo possui. Atu-
almente 500100. O valor 0 indica que o usurio/grupo no possui restries.
limit - Limite mximo (hard) de espao na partio que o usurio/grupo possui.
Atualmente em 600000. O valor 0 indica que o usurio/grupo no possui restries.
grace - Tolerncia antes que o limite soft passe a valer como hard quando o espao
em disco ultrapassado. Este usurio tem 5 minutos restantes para que isto ocorra.
Quando o valor soft volta a car abaixo da quota, a tolerncia resetada. O par-
metro none indica que o tempo de tolerncia expirou (caso existam limitaes de
quota que foram ultrapassadas) ou que o usurio/grupo no possui restries. Veja
se existe um * no campo blocks.
files - Nmero mximo de arquivos que usurio/grupo possui atualmente na partio.
Um * indica que o limite foi ultrapassado. Atualmente em 10868.
quota - Limite suave (soft) de nmero de arquivos na partio que o usurio/grupo
possui. Atualmente ilimitado.
Captulo 19. Restries de acesso, recursos e servios 402
limit - Limite mximo (hard) de nmero de arquivos na partio que o usu-
rio/grupo possui. Atualmente ilimitado.
grace - Tolerncia antes que o limite soft passe a valer como hard para o nmero
de arquivos ultrapassados. Como no existe quota para nmero de arquivos, no
existe tolerncia. A tolerncia resetada aos valores padres quando o valor soft
volta a car abaixo da quota.
A quota de outros usurios/grupos podem ser visualizadas especicando as opes -u (pa-
dro) e -g na linha de comando respectivamente. A opo -v permite visualizar quotas em
sistemas de arquivos no alocados e -q mostra somente uma mensagem dizendo se o usurio
est ou no dentro de sua quota:
quota -u usuario
quota -uq usuario
quota -g users
Por motivos de segurana, voc no poder visualizar as quotas de outros usurios e grupos
que no pertence (exceto para o usurio root).
19.12.5 Vericando a quota de todos os usurios/grupos do sistema
Quando precisamos vericar o uso de quotas de todos os usurios/grupos do sistema o quota
se torna incmodo e pouco prtico. O comando repquota lista est disponvel ao administra-
dor para facilitar esta tarefa. Sua listagem organizada por parties listando dados adicionais
como grace time e aceita as mesmas opes dos utilitrios quotaon e quotaoff. Primeiro
so listados as restries de usurios e depois de grupos para a partio. (tolerncia) As opes
aceitas por este utilitrio tem o mesmo signicado das opes do quotaon e quotaoff:
repquota -aug
*** Report for user quotas on device /dev/hda3
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 29160 0 0 none 9970 0 0 none
daemon -- 64 0 0 22 0 0
man -- 944 0 0 65 0 0
mail -- 4960 0 0 823 0 0
news -- 4 0 0 1 0 0
gleydson -- 31032 0 0 6956 0 0
testuser -- 16 0 0 4 0 0
anotheruser -- 16 0 0 4 0 0
Captulo 19. Restries de acesso, recursos e servios 403
nobody -- 2344 0 0 2 0 0
*** Report for user quotas on device /dev/hda5
Block grace time: 2days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 16052 0 0 none 6443 0 0 none
gleydson +- 4944 500100 600000 none 10868 0 0
*** Report for group quotas on device /dev/hda5
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
Group used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 20308 0 0 none 636 0 0 none
src -- 11404 0 0 660 0 0
users -- 1756 0 0 6561 0 0
gleydson -- 3452 0 0 9307 0 0
Um sinal de +- no segundo campo indica quota ultrapassada ou no espao em disco, -
+ em nmero de arquivos e ++ em ambos. Como vimos acima, o este comando tambm
lista o nmero de arquivos e bytes pertencentes a cada usurio na partio (mesmo no sendo
monitorado pelas restries de quota), isto ajuda a monitorar aes suspeitas com a excedncia
de espao em disco de determinados usurios/grupos do sistema. Um exemplo algum que
esteja fora da quota e abusando de seu usurio/grupo para uso excessivo de espao em disco
sem seu conhecimento.
OBS: Este utilitrio pode ser executado por qualquer usurio no sistema e mostrar o uso de
quotas de usurios/grupos que no deveria ter acesso. recomendado deve ter permisses de
leitura/gravao somente para o usurio root e sem permisses para grupo/outros usurios.
19.12.6 Avisando usurios sobre o estouro de quota
Avisos sobre quota ultrapassada podem ser enviadas automaticamente a todos os usurios
pelo utilitrio warnquota. Ele poder ser executado periodicamente atravs do cron (por pa-
dro isto feito diariamente na distribuio Debian pelo script /etc/cron.daily/quota).
Dados adicionais sobre o envio das mensagens devem ser especicados no arquivo /etc
/warnquota.conf seu formato o seguinte:
# Programa usado para enviar as mensagens
MAIL_CMD = "/usr/sbin/sendmail -t"
# Campo de origem da mensagem
FROM = "root@localhost"
# but they dont have to be:
Captulo 19. Restries de acesso, recursos e servios 404
SUBJECT = Quota excedida
CC_TO = "root@localhost"
SUPPORT = "root@localhost"
PHONE = "5555-2525"
#
O e-mail enviado aos usurios (e usurios que pertencem a grupos com a quota excedida)
com o seguinte formato:
From: root@localhost
To: gleydson@debian.gms.com.br
Cc: root@localhost
Reply-To: root@localhost
Subject: Quota Excedida
Date: Sat, 22 Sep 2001 14:27:38 -0400
Hi,
We noticed that you are in violation with the quotasystem
used on this system. We have found the following violations:
Block limits File limits
Filesystem used soft hard grace used soft hard grace
/dev/hda5 +- 504944 500100 600000 none 10868 0 0
We hope that you will cleanup before your grace period expires.
Basically, this means that the system thinks you are using more disk space
on the above partition(s) than you are allowed. If you do not delete files
and get below your quota before the grace period expires, the system will
prevent you from creating new files.
For additional assistance, please contact us at root@localhost
or via phone at 5555-2525.
19.13 Suporte a senhas ocultas
Veja Shadow Passwords on page 173.
Captulo 19. Restries de acesso, recursos e servios 405
19.14 Suporte a senhas md5
Veja Senhas MD5 on page 173.
19.15 Restries no hardware do sistema
As restries descritas aqui so teis para diminuir as chances de um ataque por acesso fsico
ser realizado com sucesso no sistema que desejamos proteger.
Ter um sistema totalmente seguro praticamente impossvel, mas existem diversas maneiras
de se dicultar as coisas.
19.15.1 BIOS do sistema
Algumas restries podem ser conguradas na para diminuir as chances de se obter acesso
root (usando mtodos conhecidos de recuperao via disquete/CD inicializvel) ou simples-
mente aumentar nossa conana no sistema:
Coloque uma senha para entrada no Setup da mquina, compartilhe esta senha somente
com as pessoas que tem poder de root (ou seja, pessoal de conana que administra a
mquina).
Mude a seqencia de partida para somente sua unidade de disco rgido que contm o
sistema operacional. As BIOS trazem convenes de DOS para especicar o mtodo de
partida, ento Only C quer dizer somente o primeiro disco rgido, SCSI tentar dispositi-
vos SCSI primeiro, etc. Isso pode variar de acordo com o modelo de sua BIOS.
Com os dois tens acima qualquer um car impedido de inicializar o sistema a partir de um
disco de recuperao ou entrar no Setup para modicar a ordem de procura do sistema opera-
cional para dar a partida via disquetes.
19.15.2 Retirada da unidade de disquetes
Como no seguro conar nas restries de senha da BIOS (qualquer um com conhecimentos
de hardware e acesso fsico a mquina pode abrir o gabinete e dar um curto na bateria que
mantm os dados na CMOS ou aterrar o pino de sinal da CMOS), a retirada da unidade de
disquetes recomendada, isso dicultar bastante as coisas.
19.15.3 Placas de rede com eprom de boot
Evite a utilizao de placas de rede com recursos de boot via EPROM no servidor, um servidor
dhcp/bootp/tftp poder ser congurado sem problemas por um cracker na rede (caso a BIOS
esteja coma ordeminadequada de procura de discos) e o ataque se dar commais sosticao
e rapidez.
Captulo 19. Restries de acesso, recursos e servios 406
19.15.4 Protegendo o LILO
A opo passwd=senha e restricted podero ser usadas na seo da imagem que desejamos pro-
teger. Respectivamente pedem uma senha para a inicializao do sistema e caso argumentos
como root=single sejam usados para conseguir acesso root sem fornecer senha.
E deixe somente as permisses de acesso ao usurio root (caso contrrio sua senha poder
ser vista por qualquer usurio) e modique os atributos deste arquivo para imutvel para que
nem mesmo o root possa modica-lo: chattr +i /etc/lilo.conf.
19.15.5 Disco rgido
O disco rgido do servidor poder se retirado como alternativa para se ter acesso aos dados
armazenados. Isto poder ser dicultado com o uso de lacres de disco ou outras maneiras de
dicultar mais esta tarefa (mais parafusos, armazenamento em partes de difcil manipulao
do HD, etc) qualquer coisa que possa lhe fazer ganhar tempo e despertar suspeitas para evitar
o sucesso desta alternativa (ousada).
Dados importantes ou condenciais podero ser armazenados em um sistema de arquivos
criptografados e serem montados somente pelos administradores que possuem acesso fsico
ao sistema. O algoritmo Serpent muito forte na proteo de dados alm de possuir um timo
desempenho. Patches de criptograa podero ser aplicados no kernel para ativao deste re-
curso (veja Sistemas de arquivos criptogrco on page 410) para detalhes.
Sensores podem ser ligados na carcaa do HD como forma de disparar um pequeno alarme
embutido no gabinete do servidor, se voc gosta de eletrnica poder montar um destes facil-
mente para chamar a ateno alimentado por fonte/baterias em um circuito de emergncia, e
poder acomodar sua caixa emuma segunda carcaa de fonte apenas para desviar suspeitas.
Um circuito interno de cmeras tambm uma boa alternativa para monitorar a movimenta-
o.
Esquemas de segurana dependendo do porte da organizao e dos dados que se desejam
proteger devero ser elaborados e postos em prtica. Todos os mtodos imaginveis devero
ser considerados de acordo com as possibilidades do ambiente.
407
Captulo 20
Introduo ao uso de criptograa para
transmisso/armazenamento de dados
Este captulo explica como dados transmitidos em uma rede pode ser capturados, isto ajudar
a entender a vulnerabilidade de servios comuns que no utilizamcriptograa para a transmis-
so de dados e alternativas/programas equivalentes que fazem transmisso de dados usando
mtodos criptogrcos para deixar a mensagem somente legvel para origem e destino.
20.1 Introduo
Quando enviamos um trfego de nossa mquina para outra (e-mails, mensagens de ICQ, na-
vegao, ftp, etc) os dados passam por vrias mquinas at atingir o seu destino (isto se chama
roteamento). Se algum cracker instalou algum capturador de pacotes (sniffer) em alguma das
mquinas de nossa rota os dados podero facilmente visualizados.
Crackers normalmente conguram estes programas a procura de campos como passwd e
outras expresses que sejam teis para acesso ao seu sistema ou espionagem. Quem gosta
de ter sua privacidade violada? A internet denitivamente uma rede insegura e nem todos
os administradores de servidores so responsveis o suciente para fazer uma congurao
restrita para evitar acesso de pessoas mal intencionadas.
Este captulo mostra (na prtica) como um sniffer funciona para captura de pacotes, isto aju-
dar a entender como servios que enviam seus dados em forma texto plano so vulnerveis a
isto e alternativas para transmisso segura de dados. Este captulo tem a inteno de mostrar
alternativas seguras de proteo dos dados que trafegam em sua rede e a segurana de suas
instalaes.
20.2 Sniffer
O sniffer (farejador) um programa que monitoram/registram a passagem de dados entre as
interfaces de rede instaladas no computador. Os dados coletados por sniffers so usados para
Captulo 20. Introduo ao uso de criptograa para transmisso/armazenamento de dados408
obteno de detalhes teis para soluo de problemas em rede (quando usado com boas inten-
es pelo administrador do sistema) ou para ataques ao sistema (quando usado pelo cracker
para obter nomes/senhas e outros detalhes teis para espionagem).
Os sniffers mais conhecidos para sistemas Linux so tcpdump, ethereal. Este ltimo apre-
senta uma interface grca GTK para fcil operao em mquinas que executam o servidor
X. Para explicar o funcionamento de um sniffer, vou assumir o ethereal instalado (ele no
requer modicaes no sistema alm de ser fcil de executar e fazer pesquisa de expresses
especcas). Instale o ethereal com o comando apt-get install ethereal.
Agora vamos a prtica para entender como o sniffer funciona e a importncia da criptograa
de dados (s assim mesmo, no da para entender falando muita teoria :-):
1 Conecte-se a Internet
2 Execute o ethereal como usurio root.
3 Pressione CTRL+K para abrir a tela de captura de pacotes. Em Interface selecione sua
interface de internet. Nesta tela clique no boto FILE e coloque um nome de arquivo
que a captura ser gravada. Opcionalmente marque a opo Update list of packets in
real time para monitorar a passagem de pacotes em tempo real.
4 Clique em OK. A captura de pacotes ser iniciada
5 Conecte-se a um site ftp qualquer (digamos ftp.debian.org.br). Entre com o usurio
anonymous e senha minhasenha@segura.com.br
6 Finalize a captura de pacotes clicando no boto STOP
Agora v emFile/Open e abra o arquivo capturado. Ele est no formato usado pelo sniffer
tcpdump como padro. Procure no campo INFO a linha Request: USER anonymous, logo
abaixo voc ver a senha digitada pelo usurio. Entendeu agora a importncia da criptograa
na transferncia segura de dados? no s o nome/senha pode ser capturado mas toda a sees
feitas pelo usurio. Scanners como o tcpdump e ethereal so exivelmente congurveis
para procurar por dados especcos nas conexes e salva-los para posterior recuperao.
20.2.1 Detectando a presena de sniffers
Uma caracterstica comumde sniffers mudar o modo de operao das interfaces monitoradas
para o Modo Promscuo com o objetivo de analisar todo o trfego que passa por aquele
segmento de rede (mesmo no sendo destinados para aquela mquina).
A entrada/sada de interfaces no modo promscuo monitorada nos logs do sistema:
Sep 25 16:53:37 myserver kernel: device eth0 left promiscuous mode
Sep 25 16:53:56 myserver kernel: device eth0 entered promiscuous mode
Sep 25 16:54:18 myserver kernel: device eth0 left promiscuous mode
Sep 25 16:54:31 myserver kernel: device eth0 entered promiscuous mode
O logcheck monitora estas atividades e classicam esta mensagem como prioridade Viola-
o (dependendo da congurao dos seus ltros em /etc/logcheck. Veja logcheck on
page 87 para detalhes sobre este programa.
OBS: A utilizao de switches diculta a captura de pacotes em redes distribudas porque
somente os dados destinados a mquina onde o sniffer est instalado podero ser capturados.
Captulo 20. Introduo ao uso de criptograa para transmisso/armazenamento de dados409
20.3 Alternativas seguras a servios sem criptograa
20.3.1 http
O uso de alternativas seguras indispensvel em servidores que servem pginas de comrcio
eletrnico, banco de dados, sistemas bancrios, administrao via web ou que tenham dados
que oferecem risco, se capturados.
Existem duas alternativas: instalar o servidor Apache-ssl (pacote apache-ssl ou adicionar o
mdulo mod-ssl na instalao padro do Apache. Esta segunda a preferida por ser mais
rpida e simples de se administrar, por usar o servidor Web Apache padro e sua congurao.
Veja Uso de criptograa SSL on page 216 para detalhes de como congurar um servidor Web
para transmisso de dados criptografados.
20.3.2 Transmisso segura de e-mails
A codicao padro usada para o envio de mensagens em muitos clientes de e-mail o
MIME/base64. Isto no oferece muita segurana porque os dados podem ser facilmente des-
criptografados se pegos por sniffers (veja Sniffer on page 407) ou abertos por administradores
no conveis no diretrio de spool do servidor.
Existem uma diversidade de servidores SMTP, POP, IMAP do Linux que j implementam o
protocolo de autenticao SSL/TLS, exigindo login/senha para o envio/recepo de mensa-
gens, cabealhos de autenticao (aumentando um pouco mais a conana sobre quem enviou
a mensagem). Em especial, a autenticao til quando desejamos abrir nossas contas de e-
mail para a Internet, por algum motivo, e no queremos que outros faam relay sem nossa
autorizao.
Outra forma de garantir a segurana da mensagem/arquivos atravs do correio eletrnico
usando o PGP (veja Usando pgp (gpg)para criptograa de arquivos on page 412) em con-
junto com um MUA (Mail User Agent - cliente de e-mails) que suporte o envio de mensagens
criptografadas/assinadas usando PGP. A vantagem do GPG em cima da autenticao SSL
que voc tem garantidas da autenticidade da mensagem e voc pode vericar sua integridade.
Os dois programas mais usados em sistemas Unix so o mutt e o sylpheed. O mutt um
MUA para modo texto e o sylpheed para modo grco. Ambos so muito exveis, permi-
tem uma grande variedade de conguraes, personalizaes, possuem agenda de endereos
e gerenciam diversas contas de e-mails em um s programa.
Para encriptar/assinar uma mensagem no mutt escreva/responda seu e-mail normalmente,
quando aparecer a tela onde voc tecla y para enviar a mensagem, tecle p e selecione uma
das opes para criptografar/assinar uma mensagem.
Para fazer a mesma operao no sylpheed, escreva/responda seu e-mail normalmente e cli-
que no menu Mensagem e marque assinar, criptografar ou ambos. A chave pblica
dever estar disponvel para tal operao (veja Adicionando chaves pblicas ao seu chaveiro
pessoal on page 415 e Extraindo sua chave pblica do chaveiro on page 415).
Captulo 20. Introduo ao uso de criptograa para transmisso/armazenamento de dados410
20.3.3 Servidor pop3
A alternativa mais segura a utilizao do protocolo IMAP com suporte a ssl. Nem todos os
clientes de e-mail suportam este protocolo.
20.3.4 Transferncia de arquivos
Ao invs do ftp, use o scp ou o sftp para transferncia segura de arquivos. Veja scp on
page 261 e sftp on page 262. Uma outra alternativa a congurao de uma VPN entre redes
para garantir no s a transferncia de arquivos, mas uma seo em cima de um tunel seguro
entre duas pontas.
20.3.5 login remoto
Ao invs do uso do rlogin, telnet e rsh utilize o ssh (veja ssh on page 259) ou o telnet
com suporte a ssl (veja Instalao on page 252).
20.3.6 Bate papo via IRC
O programa SILC (Secure Internet Live Conference) realiza a criptograa de dados durante o
bate papo entre diversos usurios conectados via rede.
20.3.7 Transmisso de mensagens via ICQ
O protocolo ICQ trabalha de forma plana para transmisso de suas mensagens, inclusive as
senhas. Clientes anteriores ainda usavam o UDP (at a verso 7) para envio de mensagens,
piorando um pouco mais a situao e deixando o cliente mais vulnervel a falsicaes de
pacotes. Outro ponto fraco que se alguma coisa acontecer com os pacotes UDP, eles sero
simplesmente descartados perdendo a mensagem.
Ao invs do ICQ, voc poder usar algum cliente do protocolo Jabber (como o gaim, gaber
ou gossip) ou o LICQ mais atual com suporte a ssl compilado. O problema do LICQ com ssh,
que as duas pontas devero ter este suporte compilado e funcionando.
20.4 Sistemas de arquivos criptogrco
Esta uma forma excelente para armazenamento seguro de seus dados, pois estaro cripto-
grafados e sero somente acessados aps fornecer uma senha que s voc conhece. O sistema
usado a montagem de um arquivo comum como um sistema de arquivos via loopback voc
pode escolher um nome de arquivo discreto para dicultar sua localizao (use a imaginao)
e poder ser armazenado at mesmo em parties no-ext2. Siga estes passos para criar seu
sistema de arquivos criptografado (baseado no Loopback-Encripted-Filesystem):
Captulo 20. Introduo ao uso de criptograa para transmisso/armazenamento de dados411
Suporte no kernel Baixe o patch criptogrco de ftp://ftp.kernel.org/pub/linux/
kernel/crypto de acordo com a sua verso do kernel e aplique os patches. Este su-
porte no pode ser includo nativamente no kernel devido a restries de uso e impor-
tao de criptograa impostas pelos EUA e outros pases, com este suporte embutido o
kernel no poderia ser distribudo livremente.
Se o patch para seu kernel no existir, pegue a verso anterior mais prxima (se no
existir o patch para seu kernel 2.2.19, pegue a verso 2.2.18 do patch internacional).
Isto certamente funcionar.
Opes de compilao do kernel Na seo Crypto Support ative Crypto Ciphers e
ative o suporte aos ciphers Twofish, blowfish, cast128, e serpent (estes so dis-
tribudos livremente e sem restries). Todos possuem cifragem de 128 bits, exceto
o blowfish que 64 bits. Tambm recomendado ativar os mdulos em Digest
algorithms.
Na seo Block Devices: ative o suporte a loopback (necessrio para montar arqui-
vos como dispositivos de bloco) e Use relative block numbers as basis for
transfer functions (isto permite que um backup do sistema de arquivos criptogra-
fado seja restaurado corretamente em outros blocos ao invs dos originais). Ative tam-
bmo suporte para General encription support e o suporte aos cyphers cast128
e twofish.
No ative as opes de criptograa para a seo Networking (a no ser que saiba o que
est fazendo). Recompile e instale seu kernel .
Crie um arquivo usando os nmeros aleatrios de /dev/urandom: dd
if=/dev/urandom of=/pub/swap-fs bs=1M count=15
Ser criado um arquivo chamado swap-fs (um arquivo de troca tem caractersticas que
ajudam a esconder um sistema de arquivos criptografado que o tamanho e no poder
ser montado pelo usurio comum, evitando desconanas).
O processo de criao deste arquivo lento, em mdia de 1MB a cada 10 segundos em
um Pentium MMX.
Monte o arquivo como um sistema de arquivos loop losetup -e twofish
/dev/loop0 /pub/swap-fs
O algoritmo de criptograa selecionado pela opo -e. Algoritmos recomendados so o
serpent e twofish (ambos possuemcifragemde 128 bits), sendo o serpent o preferido.
O gerenciamento do sistema loop encriptado feito atravs do mdulo loop_gen.
Quando executado pela primeira vez, ser lhe pedida uma senha que ser usada para
montagens futuras de seu sistema de arquivos. Digite-a com ateno pois ela ser lhe
pedida apenas uma vez. Para desativar o sistema de arquivos loop, execute o comando:
losetup -d /dev/loop0
OBS: Se errou a senha ser necessrio desmontar, apagar o arquivo criado e repetir o
procedimento.
Crie um sistema de arquivos ext2 para armazenamento de dados mkfs -t ext2
/dev/loop0 ou mkfs.ext2 /dev/loop0
Captulo 20. Introduo ao uso de criptograa para transmisso/armazenamento de dados412
Monte o sistema de arquivos Crie um diretrio que ser usado para montagem do seu sis-
tema de arquivos, se preferir monta-lo dentro de seu diretrio pessoal para armazenar
seus arquivos, crie um diretrio com as permisses 0700.
mount /pub/swap-fs /pub/criptofs -t ext2 -o loop
Agora poder gravar seus arquivos dentro deste diretrio normalmente como qualquer
outro. O comando df -hT listar a partio loop como uma partio do tipo ext2 co-
mum.
Desmontando/Protegendo os dados Aps usar o sistema de arquivos criptogrco,
desmonte-o e desative o dispositivo loopback:
umount /pub/criptofs
losetup -d /dev/loop0
Remontando o sistema de arquivos criptografado Execute novamente os comandos:
losetup -e twofish /dev/loop0 /pub/swap-fs
mount /pub/swap-fs /pub/criptofs -t ext2 -o loop
Ser pedida a senha que escolheu e seu sistema de arquivos ser montado em /pub
/swap-fs.
Com este sistema, seus dados estaro protegidos mesmo do usurio root.
20.5 Usando pgp (gpg)para criptograa de arquivos
O gpg (GNU pgp, verso livre da ferramenta pgp) permite encriptar dados, assim somente
o destinatrio ter acesso aos dados, adicionalmente poder vericar se a origem dos da-
dos convel (atravs da assinatura de arquivos). O sistema PGP se baseia no conceito
de chave pblica e privada: Sua chave pblica distribuda para as pessoas que deseja trocar
dados/mensagens e a chave privada ca em sua mquina (ela no pode ser distribuda). As
chaves pblicas e privadas so armazenadas nos arquivos pubring.gpg e secring.gpg
respectivamente, dentro do subdiretrio ~/.gnupg. Veja Criando um par de chaves p-
blica/privada on the facing page para criar este par de chaves.
Os dados que recebe de outra pessoa so criptografados usando sua chave pblica e somente
voc (de posse da chave privada) poder desencriptar os dados. Quando assina um arquivo
usando o pgp, ele faz isto usando sua chave privada, o destinatrio de posse da chave pblica
poder ento conrmar que a origem dos dados convel.
O gpg vem largamente sendo usado para transmisso segura de dados via internet. Mui-
tos programas de e-mails como o mutt e sylpheed incluem o suporte a pgp embutido para
envio de mensagens assinadas/encriptadas (MIME no tem uma codicao segura e no ga-
rante que a mensagem vem de quem realmente diz ser). Um servidor de e-mail no Linux
congurado como as mesmas conguraes/endereos do provedor da vtima pode enganar
com sucesso um usurio passando-se por outro.
Captulo 20. Introduo ao uso de criptograa para transmisso/armazenamento de dados413
20.5.1 Instalando o PGP
apt-get install gnupg
Aps instalar o gnupg, execute o comando gpg para criar o diretrio ~/.gnupg que armaze-
nar as chaves pblica e privada.
20.5.2 Criando um par de chaves pblica/privada
Para gerar um par de chaves pessoais use o comando gpg --gen-key. Ele executar os
seguintes passos:
1 Chave criptogrfica - Selecione DSA e ELGamal a no ser que tenha necessidades
especcas.
2 Tamanho da chave - 1024 bits traz uma boa combinao de proteo/velocidade.
3 Validade da chave - 0 a chave no expira. Um nmero positivo tem o valor de dias,
que pode ser seguido das letras w (semanas), m (meses) ou y (anos). Por exemplo, 7m,
2y, 60. Aps a validade, a chave ser considerada invlida.
4 Nome de usurio - Nome para identicar a chave
5 E-mail - E-mail do dono da chave
6 comentrio - Uma descrio sobre a chave do usurio.
7 Confirmao - Tecle O para conrmar os dados ou uma das outras letras para modi-
car os dados de sua chave.
8 Digite a FraseSenha - Senha que ir identic-lo(a) como proprietrio da chave pri-
vada. chamada de FraseSenha pois pode conter espaos e no h limite de caracte-
res. Para alter-la posteriormente, siga as instrues em Mudando sua FraseSenha on
page 416.
9 Confirme e aguarde a gerao da chave pblica/privada.
20.5.3 Encriptando dados
Use o comando gpg -e arquivo faz a encriptao de dados:
gpg -e arquivo.txt
Ser pedida a identicao de usurio, digite o nome que usou para criar a chave. O arquivo
criado ser encriptado usando a chave pblica do usurio (~/.gnupg/pubring.gpg) e ter a
extenso .gpg adicionada (arquivo.txt.gpg). Alm de criptografado, este arquivo com-
pactado (recomendvel para grande quantidade de textos). A opo -a usada para criar um
arquivo criptografado com sada ASCII 7 bits:
gpg -e -a arquivo.txt
O arquivo gerado ter a extenso .asc acrescentada (arquivo.txt.asc) e no ser compac-
tado. A opo -a muito usada para o envio de e-mails.
Captulo 20. Introduo ao uso de criptograa para transmisso/armazenamento de dados414
Para criptografar o arquivo para ser enviado a outro usurio, voc dever ter a chave pblica
do usurio cadastrado no seu chaveiro (veja Adicionando chaves pblicas ao seu chaveiro
pessoal on the facing page) e especicar a opo -r seguida do nome/e-mail/ID da chave
pblica:
gpg -r kov -e arquivo.txt
O exemplo acima utiliza a chave pblica de kov para encriptar o arquivo arquivo.txt (so-
mente ele poder decriptar a mensagem usando sua chave privada).
OBS: recomendvel especicar o nome de arquivo sempre como ltimo argumento.
20.5.4 Decriptando dados com o gpg
Agora vamos fazer a operao reversa da acima, a opo -d usada para decriptar os dados
usando a chave privada:
gpg -d arquivo.txt.asc >arquivo.txt
gpg -d arquivo.txt.gpg >arquivo.txt
Descriptografa os arquivos arquivo.txt.asc e arquivo.txt.gpg recuperando seu con-
tedo original. A sua FraseSenha ser pedida para descriptografar os dados usando a chave
privada (~/.gnupg/secring.gpg).
20.5.5 Assinando arquivos
Assinar um arquivo garantir que voc a pessoa que realmente enviou aquele arquivo. Use
a opo -s para assinar arquivos usando sua chave privada:
gpg -s arquivo.txt
A FraseSenha ser pedida para assinar os dados usando sua chave privada. Ser gerado
um arquivo arquivo.txt.gpg (assinado e compactado). Adicionalmente a opo clearsign
poder ser usada para fazer uma assinatura em um texto plano, este um recurso muito usado
por programas de e-mails com suporte ao gpg:
gpg -s --clearsign arquivo.txt
Ser criado umarquivo chamado arquivo.txt.asc contendo o arquivo assinado e semcom-
pactao.
Captulo 20. Introduo ao uso de criptograa para transmisso/armazenamento de dados415
20.5.6 Checando assinaturas
A checagem de assinatura consiste em vericar que quem nos enviou o arquivo realmente
quem diz ser e se os dados foram de alguma forma alterados. Voc dever ter a chave pblica
do usurio no seu chaveiro para fazer esta checagem (veja Adicionando chaves pblicas ao
seu chaveiro pessoal on the current page). Para vericar os dados assinados acima usamos a
opo verify:
gpg --verify arquivo.txt.asc
Se a sada for Assinatura Correta, signica que a origem do arquivo segura e que ele no
foi de qualquer forma modicado.
gpg --verify arquivo.txt.gpg
Se a sada for Assinatura INCORRETA signica que ou o usurio que enviou o arquivo no
confere ou o arquivo enviado foi de alguma forma modicado.
20.5.7 Extraindo sua chave pblica do chaveiro
Sua chave pblica deve ser distribuda a outros usurios para que possamenviar dados cripto-
grafados ou checar a autenticidade de seus arquivos. Para exportar sua chave pblica em um
arquivo que ser distribudo a outras pessoas ou servidores de chaves na Internet, use a opo
export:
gpg --export -a usuario >chave-pub.txt
Ao invs do nome do usurio, poder ser usado seu e-mail, ID da chave, etc. A opo -a
permite que os dados sejam gerados usando bits ASCII 7.
20.5.8 Adicionando chaves pblicas ao seu chaveiro pessoal
Isto necessrio para o envio de dados criptografados e checagem de assinatura do usurio,
use a opo import:
gpg --import chave-pub-usuario.txt
Assumindo que o arquivo chave-pub-usuario.txt contm a chave pblica do usurio cri-
ada em Extraindo sua chave pblica do chaveiro on this page. O gpg detecta chaves pblicas
dentro de textos e faz a extrao corretamente. Minha chave pblica pode ser encontrada em
Chave Pblica PGP on page 426 ou http://pgp.ai.mit.edu.
Captulo 20. Introduo ao uso de criptograa para transmisso/armazenamento de dados416
20.5.9 Listando chaves de seu chaveiro
Use o comando gpg --list-keys para listar as chaves pblica do seu chaveiro. O comando
gpg --list-secret-keys lista suas chaves privadas.
20.5.10 Apagando chaves de seu chaveiro
Quando uma chave pblica modicada ou por qualquer outro motivo deseja retira-la do seu
chaveiro pblico, utilize a opo delete-key:
gpg --delete-key usuario
Pode ser especicado o nome de usurio, e-mail IDchave ou qualquer outro detalhe que conra
com a chave pblica do usurio. Ser pedida a conrmao para excluir a chave pblica.
OBS: Achave privada pode ser excluda coma opo delete-secret-key. Utilize-a como mximo
de ateno para excluir chaves secretas que no utiliza (caso use mais de uma), a excluso
acidental de sua chave secreta signica como perder a chave de um cofre de banco: voc no
poder descriptografar os arquivos enviados a voc e no poder enviar arquivos assinados.
Mesmo assim se isto acontecer acidentalmente, voc poder recuperar o ltimo backup da
chave privada em ~/.gnupg/secring.gpg~.
20.5.11 Mudando sua FraseSenha
Execute o comando gpg --edit-key usurio, quando o programa entrar em modo de
comandos, digite passwd. Ser lhe pedida a Frase Senha atual e a nova Frase Senha.
Digite save para sair e salvar as alteraes ou quit para sair e abandonar o que foi feito.
O gpg --edit-key permite gerenciar diversos aspectos de suas chaves interessante
explora-lo digitando para exibir todas as opes disponveis.
20.5.12 Assinando uma chave digital
A assinatura de chaves um meio de criar laos de conana entre usurios PGP. Assinar uma
chave de algum algo srio, voc deve ter noo do que isto signica e das conseqncias
que isto pode trazer antes de sair assinando chaves de qualquer um.
O prprio teste para desenvolvedor da distribuio Debian requer como primeiro passo a
identicao do candidato, caso sua chave pgp seja assinada por algum desenvolvedor desta
distribuio, imediatamente o teste de identicao completado. A partir disso voc deve ter
uma noo bsica do que isto signica. Para assinar uma chave siga os seguintes passos:
1 Importe a chave pblica do usurio (veja Adicionando chaves pblicas ao seu chaveiro
pessoal on the preceding page).
Captulo 20. Introduo ao uso de criptograa para transmisso/armazenamento de dados417
2 Execute o comando gpg --edit-key usuario (onde usuario o nome do usurio/e-
mail/IDchave da chave pblica importada).
3 Digite list, e selecione a chave pblica (pub) do usurio com o comando uid
[numero_chave]. Para assinar todas as chaves pblicas do usurio, no selecione qual-
quer chave com o comando uid.
4 Para assinar a chave pblica do usurio digite sign, ser perguntado se deseja realmente
assinar a chave do usurio e ento pedida a FraseSenha de sua chave privada.
5 Digite list, repare que existe um campo chamado trust: n/q no lado direito. O
primeiro parmetro do trust indica o valor de conana do dono e o segundo (aps a
/) o valor de conana calculado automaticamente na chave. As seguintes possuem o
seguinte signicado:
- - Nenhum dono encontrado/conana no calculada.
e - Chave expirada/falha na checagem de conana.
q - Quando no conhece o usurio.
n - Quando no cona no usurio ( o padro).
m - Pouca conana no usurio.
f - Totalmente convel.
u - Indiscutivelmente convel. Somente usado para especicar a chave pblica do
prprio usurio.
O valor de conana da chave pode ser modicado com o comando trust e seleci-
onando uma das opes de conana. Os valores de conana para a chave pblica
pessoal -/u (no necessrio calcular a conana/indiscutivelmente convel).
20.5.13 Listando assinaturas digitais
Execute o comando gpg --list-sigs para listas todas as assinaturas existentes no seu cha-
veiro. Opcionalmente pode ser especicado um parmetro para fazer referncia a assinatura
de um usurio:gpg --list-sigs usuario.
O comando gpg --check-sigs adicionalmente faz a checagem de assinaturas.
20.5.14 Recomendaes para a assinatura de chaves gpg
Este texto foi divulgado por uma pessoa que pediu para permanecer annima na lista
<debian-user-portuguese@lists.debian.org> explicando os procedimentos de se-
gurana para a troca de chaves pblicas individuais e em grupo de usurios. Ele um pouco
longo mas a pessoa especializada no assunto, e seu foco a segurana na troca de chaves
e o que isto signica. Aps consulta ao autor do texto, o texto foi reproduzido na ntegra,
mantendo os padres de formatao da mensagem.
Trocando assinaturas de chaves digitais
Direitos de republicao cedidos ao domnio pblico, contanto que o texto
seja reproduzido em sua ntegra, sem modificaes de quaisquer espcie, e
Captulo 20. Introduo ao uso de criptograa para transmisso/armazenamento de dados418
incluindo o ttulo e nome do autor.
1. Assinaturas digitais
2. Chaves digitais e a teia de confiana
3. Trocando assinaturas de chaves digitais com um grupo de pessoas
1. Assinaturas digitais
Uma assinatura digital um nmero de tamanho razovel (costuma ter de 128 a
160 bits) que representa um bloco bem maior de informao, como um e-mail.
Pense numa assinatura como se ela fosse uma verso super-comprimida de um
texto. Se voc muda alguma coisa (por menor que seja) no texto que uma
assinatura "assina", essa assinatura se torna invlida: ela no mais
representa aquele texto.
Existe uma relao direta entre uma assinatura e informao que ela assina.
Se uma das duas for modificada, elas passam a no mais "combinar" uma com a
a outra. Um programa de computador pode detectar isso, e avisar que a
assinatura "invlida".
Os algoritmos mais usados para criar e verificar assinaturas digitais so o
SHA-1, RIPEM160 e MD5. O MD5 no considerado to bom quanto os outros
dois.
Assinaturas digitais tambm funcionam com arquivos "binrios", ou seja:
imagens, som, planilhas de clculo... e chaves digitais.
2. Chaves digitais e a teia de confiana
Chaves digitais so fceis de falsificar, voc s precisa criar uma chave
nova no nome de sicrano, por um endereo de e-mail novinho em folha daqueles
que voc consegue nesses webmail da vida, e pronto. Agora s espalhar
essa chave por a que os bestas vo us-la pensando que de sicrano.
A menos que os "bestas" no sejam to bestas assim, tenham lido o manual do
seu software de criptografia, e saibam usar assinaturas e a teia de
confiana para verificar se a tal chave de sicrano mesmo.
Programas de criptografia (os bons, tipo PGP e GNUpg) usam um sistema de
assinaturas nas chaves digitais para detectar e impedir esse tipo de
problema: Ao usurio dado o poder de "assinar" uma chave digital, dizendo
"sim, eu tenho certeza que essa chave de fulano, e que o e-mail de fulano
Captulo 20. Introduo ao uso de criptograa para transmisso/armazenamento de dados419
esse que est na chave".
Note bem as palavras "certeza", e "e-mail". Ao assinar uma chave digital,
voc est empenhando sua palavra de honra que o _nome_ do dono de verdade
daquela chave o nome _que est na chave_, e que o endereo de e-mail
daquela chave da pessoa (o "nome") que tambm est na chave.
Se todo mundo fizer isso direitinho (ou seja, no sair assinando a chave de
qualquer um, s porque a outra pessoa pediu por e-mail, ou numa sala de
chat), cria-se a chamada teia de confiana.
Numa teia de confiana, voc confia na palavra de honra dos outros para
tentar verificar se uma chave digital legtima, ou se uma "pega-bobo".
Suponha que Marcelo tenha assinado a chave de Cludia, e que Roberto, que
conhece Marcelo pessoalmente e assinou a chave de Marcelo, queira falar com
Cludia.
Roberto sabe que Marcelo leu o manual do programa de criptografia, e que ele
no irresponsvel. Assim, ele pode confiar na palavra de honra de Marcelo
que aquela chave digital da Cludia da Cludia mesmo, e usar a chave pra
combinar um encontro com Cludia.
Por outro lado, Roberto no conhece Cludia (ainda), e no sabe que tipo de
pessoa ela . Assim, rapaz prevenido, ele no confia que Cludia seja uma
pessoa responsvel que verifica direitinho antes de assinar chaves.
Note que Roberto s confiou na assinatura de Marcelo porque, como ele j
tinha assinado a chave de Marcelo, ele sabe que foi Marcelo mesmo quem
assinou a chave de Cludia.
Enrolado? Sim, um pouco complicado, mas desenhe num papel as flechinhas de
quem confia em quem, que voc entende rapidinho como funciona.
O uso da assinatura feita por algum cuja chave voc assinou, para validar
a chave digital de um terceiro, um exemplo de uma pequena teia de
confiana.
3. Trocando assinaturas de chaves digitais com um grupo de pessoas
Lembre-se: ao assinar uma chave digital, voc est empenhando sua palavra de
honra que toda a informao que voc assinou naquela chave verdadeira at
onde voc pode verificar, _e_ que voc tentou verificar direitinho.
Pense nisso como um juramento: "Eu juro, em nome da minha reputao
Captulo 20. Introduo ao uso de criptograa para transmisso/armazenamento de dados420
profissional e pessoal, que o nome e endereos de e-mail nessa chave so
realmente verdadeiros at onde posso verificar, e que fiz uma tentativa real
e razovel de verificar essa informao."
Sim, srio desse jeito mesmo. Voc pode ficar muito "queimado" em certos
crculos se voc assinar uma chave falsa, pensando que verdadeira: a sua
assinatura mal-verificada pode vir a prejudicar outros que confiaram em
voc.
Bom, j que o assunto srio, como juntar um grupo de pessoas numa sala, e
trocar assinaturas de chaves entre si? Particularmente se so pessoas que
voc nunca viu antes? Siga o protocolo abaixo, passo a passo, e sem pular ou
violar nenhum dos passos.
1 - Rena todos em uma sala, ou outro local no tumultuado, pressa e
baguna so inimigas da segurana.
2 - Cada um dos presentes deve, ento, ir de um em um e:
2.1 - Apresentar-se, mostrando _calmamente_ documentao original
(nada de fotocpia) comprovando sua identidade. RG, CPF,
passaporte, certido de nascimento ou casamento, carteira de
motorista, carto de crdito so todos bons exemplos. S o RG
sozinho no -- tem muito RG falsificado por a -- mas o RG
junto com o carto de banco j seria suficiente. Se nenhum
documento tiver foto, tambm no o bastante.
* Se algum pedir o documento na mo, para verificar
direitinho, no leve pro lado pessoal. Deixe a pessoa
verificar at estar satisfeita (mas no descuide do
documento). Isso s significa que ela leva muito a srio a
responsabilidade de assinar chaves.
2.2 - Entregar um papel com as informaes da chave: Nome
(QUE OBRIGATORIAMENTE PRECISA SER O MESMO NOME CONSTANTE NOS
DOCUMENTOS APRESENTADOS EM 2.1), e-mail, nmero da chave
(keyID), e fingerprint da chave (assinatura digital da chave)
RECIPIENTE DO PAPEL: Se voc achar que os documentos que te
apresentaram no so prova suficiente, talvez porque o nome
no bate com o da chave, ou porque uma foto nos documentos no
est parecida com quem mostrou os documentos, marque
discretamente no papel, porque voc NO deve assinar essa
chave. Se achar que o outro vai engrossar, no diga para ele
que no vai assinar a chave dele.
Captulo 20. Introduo ao uso de criptograa para transmisso/armazenamento de dados421
3 - Pronto. Podem ir embora, porque o resto dos passos deve ser feito com
calma, em casa. Lembre-se que voc no vai estar efetuando nenhum
julgamento moral a respeito de quem voc assinar a chave. Voc s ir
afirmar que a chave de sicrano realmente aquela, e mais nada.
4 - Para cada uma das chaves que voc marcou no papel que "posso assinar":
4.1 - Pea para o seu programa de criptografia mostrar a chave e sua
assinatura (fingerprint).
SE: O nome no papel for exatamente igual ao nome na chave
(user ID/UID da chave). E: A assinatura no papel for
exatamente igual assinatura na chave (fingerprint). ENTO:
V para o passo 4.3.
4.2 - As informaes no bateram, por isso voc no deve assinar a
chave. Se quiser, envie um e-mail avisando que no poder
assinar a chave. No aceite tentativas de retificao por
e-mail ou telefone. Um outro encontro face--face, refazendo
todos os passos 2.1 e 2.2 o nico jeito de retificar
o problema.
4.3 - As informaes bateram, o que garante que o *nome* est
correto. Agora preciso ter certeza do endereo de e-mail.
Para isso, envie uma e-mail *CIFRADA* pela chave que voc est
testando, para o endereo de e-mail constante na chave. Nessa
e-mail, coloque uma palavra secreta qualquer e pea para o
destinatrio te responder dizendo qual a palavra secreta que
voc escreveu. Use uma palavra diferente para cada chave que
estiver testando, e anote no papel daquela chave qual palavra
voc usou.
4.4 - Se voc receber a resposta contendo a palavra secreta correta,
voc pode assinar a chave. Caso contrrio, no assine a chave --
o endereo de e-mail pode ser falso.
Comandos do gpg (GNUpg) correspondentes a cada passo:
2.2 - gpg --fingerprint <seu nome ou 0xSuaKEYID>
(retorna as informaes que devem estar no papel a ser
entregue no passo 2.2)
4.1 - gpg --receive-key <0xKEYID>
(procura a chave especificada nos keyservers)
gpg --sign-key <0xKEYID>
Captulo 20. Introduo ao uso de criptograa para transmisso/armazenamento de dados422
(assina uma chave)
Assume-se que voc sabe cifrar e decifrar mensagens. Caso
no saiba, ainda no hora de querer sair assinando chaves.
423
Captulo 21
Apndice
Este captulo contm consideraes sobre o guia Foca GNU/Linux.
21.1 Sobre este guia
Esta guia foi criado com a inteno de servir como referncia a usurios Avanados que j do-
minam grande parte do sistema operacional e procuram aprender mais sobre os seus detalhes
e conguraes especiais ou com referncia de consulta rpida.
A verso que esta lendo agora foi gerada com as seguintes opes:
Descrio detalhada de comandos
Opes usadas em comandos e programas
Observaes
Exemplos para a melhor compreenso do assunto discutido.
e contm o(s) nvel(is) de aprendizado (Iniciante, Intermedirio e Avanado):
Avanado
O Foca GNU/Linux atualizado freqentemente, por este motivo recomendo que preencha a
cha do aviso de atualizaes na pgina web em Pgina Ocial do guia Foca GNU/Linux
(http://www.guiafoca.org) no m da pgina principal. Aps preencher a cha do aviso
de atualizaes, eu te enviarei um e-mail sobre o lanamento de novas verses do guia e o
que foi modicado, desta forma voc poder decidir em copia-la caso a nova verso contm
modicaes que considera importantes.
Verses diferentes deste guia podem ser geradas a partir do cdigo fonte SGML ou obtidas
atravs da home page principal (para detalhes veja Onde encontrar a verso mais nova do
guia? on page 425).
21.2 Sobre o Autor
Gleydson Mazili da Silva Capixaba, nascido em Vila Velha, tem 25 anos. Amante de eletr-
nica desde criana, foi atraido para a informtica atravs da curiosidade em hardware, no
Captulo 21. Apndice 424
demorando muito para recupera-los ou especicar corretamente dimensionamento e outras
caractersticas.
Se dedica ao sistema Linux desde 1997. Curioso por natureza e determinado a testar ferra-
mentas a fundo avaliando pontos fortes e fracos de cada uma. Logo que iniciou em Linux
passou a estudar exaustivamente aspectos tcnicos de distribuies e rede em Linux/BSD e
largando de vez o Windows (que s usava para rodar mais de uma seo DOS e ter rede na
mquina).
Entre coisas que gosta de fazer/implementar em Linux: possibilidade de pesquisa e atua-
lizao de conhecimento constante, nveis de segurana da informao (tanto fsico e lgico),
rewalls, redes virtuais, integrao de sistemas, forense computacional, documentao de pro-
cessos, desenvolvimento de ferramentas GPL para a comunidade, depurao, hacks baseados
em snifng para facilitar a vida dos outros, desenvolvimento de documentaes, etc.
Um dos desenvolvedores da distribuio Liberdade, CAETECT, Debian-BR e desenvolvedor o-
cial da distribuio Debian. Atuou como tradutor do LDP-BR, traduzindo vrios HOW-TOs im-
portantes para a comunidade Linux Brasileira. um dos administradores do projeto CIPSGA,
cuidando de uma innidade de servios que o projeto oferece a comunidade que deseja estru-
tura para hospedar, fortalecer e manter projetos em software livre.
Trabalhou para algumas empresas do Esprito Santo na implantao de sistemas em software
livre e seu ltimo trabalho foi atuando como consultor em servidores GNU/Linux para a com-
pania e processamento de dados de Campinas (IMA), sediada no CPQD.
No concorda totalmente com certicaes, acreditando que a pessoa deva tem em mente pro-
curar pontos fracos quando notar diculdade na avaliao e melhora-los. Mesmo assim possui
certicao LPI nvel 2 e um ISO9001 internacional, obtendo 2o lugar no ranking Brasileiro.
21.3 Referncias de auxlio ao desenvolvimento do guia
As sees sobre comandos/programas foram construdas aps uso, teste e observao
das opes dos comandos/programas, help on line, pginas de manual, info pages e
documentao tcnica do sistema.
How-tos do Linux (principalmente o Networking Howto, Security-Howto) ajudaram a for-
mar a base de desenvolvimento do guia e desenvolver algumas sees (verses Interme-
dirio e Avanado somente).
Todos os exemplos e sees descritivas do guia so de minha autoria. Quanto a exemplos
de conguraes e utilizao de programas, ser citada a origemque forambaseados no
desmerecendo o trabalho de seus autores.
Uso de programas e macetes aprendidos no dia a dia para gerenciar mquinas, controlar
redes e automatizar sistemas.
As sees do nvel avanado construdas com base em outras documentaes, tero as
referncias explicitamente citadas em seus respectivos captulos.
Manual de Instalao da Debian GNU/Linux - Os captulos contendo materiais extrados
do manual de instalao da Debian so muito teis e explicativos, seria desnecessrio
reescrever um material como este. O texto claro e didaticamente organizado, o docu-
Captulo 21. Apndice 425
mento aborda detalhes tcnicos teis sobre hardwares em geral e o Linux ausentes nos
manuais de outras distribuies Linux.
21.4 Onde encontrar a verso mais nova do guia?
Novas verses deste guia, avisos de lanamento, outros nveis de aprendizado (Iniciante, In-
termedirio e Avanado), verses para outras distribuies Linux podem ser encontradas em:
Pgina Ocial do guia Foca GNU/Linux (http://www.guiafoca.org).
Se quiser receber noticaes de novas verses por E-Mail, envie uma mensagem para
<gleydson@guiafoca.org> pedindo para ser includo na lista de atualizaes do guia ou
preencha o formulrio encontrado no nal da Home Page do guia (recomendado).
21.5 Colaboradores do Guia
Entre as principais colaboraes at a verso atual, posso citar as seguintes:
Djalma Valois <djalma@cipsga.org.br> - Pela recente hospedagem do Foca
GNU/Linux. Estou muito feliz vendo o Foca GNU/Linux fazendo parte de um pro-
jeto to positivo como o CIPSGA para o crescimento e desenvolvimento do software
livre nacional.
Bakurih <bakurih@yahoo.com> - Reviso inicial do documento.
Eduardo Marcel Maan <macan@debian.org> - Pela antiga hospedagem na p-
gina do metainfo.
Michelle Ribeiro <michelle@cipsga.org.br> - Por dispensar parte de seu
atencioso tempo enviando revises e sugestes que esto melhorando bastante a qua-
lidade do guia. Entre eles detalhes que passaram despercebidos durante muito tempo no
guia e pgina principal.
E tambm por cuidar do fonte do guia ;-)
Augusto Campos <brain@matrix.com.br> - Descrio sobre a distribuio Suse .
Paulo Henrique Baptista de Oliveira <baptista@linuxsolutions.
com.br> - Pelo apoio moral oferecido durante os freqentes lanamentos do guia,
acompanhamento e divulgao.
Diego Abadan <diego@hipernet.ufsc.br> - Envio de correes signicativas,
novos endereos de listas de discusso.
Alexandre Costa <alebyte@bol.com.br> - Envio de centenas de patches ortogr-
cos nas verses Iniciante e Intermedirio do guia que passaram desapercebidas durante
vrias verses do guia. . .
Captulo 21. Apndice 426
Christoph Simon <ciccio@prestonet.com.br> - Pela pesquisa e a gigantesca
coletnea de textos sobre o Linux enviada. Eles esto sendo muito teis tanto para mim
quanto no desenvolvimento do guia.
Gustavo Noronha <dockov@zaz.com.br> - Vem enviando freqentes correes,
contribuies construtivas ao desenvolvimento alm de apoio ao desenvolvimento do
guia . Vale a pena destaca-lo por sua atual dedicao junto a distribuio Debian/GNU,
sua traduo e a comunidade Open Source.
Pedro Zorzenon Neto <pzn@debian.org> - Envio de diversas atualizaes para o
nvel Avanado, principalmente sobre o rewall iptables.
21.6 Marcas Registradas
Todas as marcas registradas citadas neste guia so propriedades de seus respectivos autores.
21.7 Futuras verses
Estes so os materiais que pretendo adicionar em futuras verses do guia:
Acrescentar mais detalhes sobre o sistema grco X-Window.
Entre outros tens que venho estudando para vericar se encaixam no perl do guia.
Esta uma futura implementao que venho estudando para acompanhar o crescimento do
guia. Sugestes so bem vindas e podem ser enviadas para <gleydson@guiafoca.org>.
21.8 Chave Pblica PGP
Chaves PGP so usadas para criptografar arquivos, e-mails ou qualquer outra coisa que deseja-
mos que somente uma pessoa tenha acesso. O PGP segue o padro de chave pblica/privada;
a chave pblica distribuda a todos e a chave privada permanece na posse do criador para que
ele seja o nico a ter acesso aos dados criptografados aps digitar a frase de acesso correta.
Minha chave PGP segue abaixo, ela tambm pode ser encontrada em http://pgp.ai.mit.
edu. Se voc deseja saber mais sobre o PGP, recomendo um excelente documento encontrado
na seo Apostilas em http://www.cipsga.org.br/
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org
Captulo 21. Apndice 427
mQGiBDl7WYgRBACsQNtIozvf8XId+xEpF2D1x7nqgFdJyn1QA2VzXg0/OZ9DewXj
qr7ChEIoyyzAmxBSubE/jdtkAb9+2LsE9+OXgzJvBc4luYpv+HG2IXlMPujI9drO
ubLlK6xqPiakBgqBTS74rp/ZEEAGQsr0sug7b8nsXHMk+spyGkjsU8pPWwCgltai
4vfmBDMZMqBYvUoksVxbaKcD/ApAMghgE53KAAKFtwXI0o7K1DJmdZBufCvGDbEB
Y3MVS4BI+aXxoP5zQpEmQ5+lYOZ8RjPL9pNUJa9nOQtjf7Kiw/41BPDtlZXCeRR5
OcQTit0lYRCLGam7FZ22uliwh0h/3lpf4olMff3qeLqv1DECbo8Qsdn6yxynLihE
OA9kA/9K1sqiIl/+gXM3/Sjz8EcrwQNklV3MoaETbDmukbXcOEUjdqfFr1xARM5W
8SKoVrWO5y1oa1e9XcQuK6g8c7KeJsK/GEWYiRwX2X2AqdBC2ZzVfJSmgpguZJHn
ltMdYZhPwZaCsNPdQSlem3UrGupL0pbpT7PqkvyAHBH2itB9X7RKR2xleWRzb24g
TWF6aW9saSBkYSBTaWx2YSAoQ2hhdmUgUEdQIFBlc3NvYWwpIDxnbGV5ZHNvbkBl
c2NlbHNhbmV0LmNvbS5icj6IVgQTEQIAFgUCOXtZiAQLCgQDAxUDAgMWAgECF4AA
CgkQpWvD35hbooFdwgCfQijPTW5VH+Cep1HIBvyuw9uMg7wAoI/RYW0tkjjnhrgH
8+Zqx6AgGlQ/iEYEEBECAAYFAjnlrPAACgkQoUSye+uc2tWZPgCfVgR4lbd8XPBm
bjPupLzB3EYAPI8AoJomkfsgz+NuUZy1mD6pI1Ptc/fDiEYEEBECAAYFAjm4FfUA
CgkQco65AkzGCoF34gCgsVcH4b3s6kfCtjD7iMMhkubnDnUAoL2UiorB3Z/m3f9A
RZiRMhQUclMRiEYEEBECAAYFAjm4ITAACgkQt1anjIgqbEupXgCg1/NjvT562Hgt
/ft5JETOf3yOFywAn1SmK3unyhMU5GU9d49MNM3fNgBtiEYEEBECAAYFAjnFWrYA
CgkQORwuc54x+1t8VQCeMZTCla98rrI60EnlkAvb9AaScm4AnA4V795vcVlr3ix9
f6fcl5YGamKciEYEEBECAAYFAjvSF6sACgkQUZATEoypqPVQ7wCbBTRiSGGMzMTd
KJotfRKf5aoUAr0AoIAX0oE5XEEFm7Ea0IQqG91T9TvXtDtHbGV5ZHNvbiBNYXpp
b2xpIGRhIFNpbHZhIChEZXZlbG9wZXIpIDxnbGV5ZHNvbkBkZWJpYW4ub3JnPohX
BBMRAgAXBQI7BR7fBQsHCgMEAxUDAgMWAgECF4AACgkQpWvD35hbooESRACcCliY
yxR02KEBYs8cxKav9L0wlzwAn2Z9DWAbqi9Mv4fqPqZ7mViSMRbeiEYEEBECAAYF
AjsauX0ACgkQt1anjIgqbEvBEACffJxYfK22YPQ8ZkcjIc85BCiPLuUAnRq1EE9i
ukdUHPUo0vzHBeiN355miEYEEBECAAYFAjxEY28ACgkQGERS+iaKCE2fgwCeNGNV
Mpa1EWgXF+Hj15gidVjaVCAAn187X6eATJAVzspveNSf/Ny1iuFnuQENBDl7WasQ
BACxhBiSFOGa8tv7MOn0XVa6WCViBuQs9QJx2ZnMrx/KssRHMsNXnps+i+zVENqr
1Lz5zPpP7eWgrUy6B7/V9R4LV8nwHC1lZrR/1xyJ6G5j9RLSbYInZCLIAFUMlAar
iTThMhvXM+Pf7SXPj+ivrP9EYPSLxqTs1K/dWAbrDK/QiwADBQP9Hgc3EOw+7luB
/bXWssQp70bF9yvZLCGOgIE/rZIbOXumXkPlV7FTDgv+h47Bgcj2KDPEM98LUyxG
GcJAmrC9gWH7mYEUFNn1bGD+qHRwJ7+xj45NXBJDOBbHzTDS8QhacCRGW1CvRVgP
8ycPDOv/hmGfAJEzqzUkSO1uBcPmmXSIRgQYEQIABgUCOXtZqwAKCRCla8PfmFui
gQHnAJ4kDKHKvG9s9OjGV6RvszTDGE51igCcCZn0rO/Si0ek97bTCIusQzJF/pA=
=bvnT
-----END PGP PUBLIC KEY BLOCK-----

Você também pode gostar