Você está na página 1de 446

Guia Foca GNU/Linux

Gleydson Mazioli da Silva <gleydson@guiafoca.org>

Verso 6.43 - domingo, 05 de setembro de 2010

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 verso 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 receber avisos de novos lanamentos deste guia preenchendo um formulrio na pgina Web.

Nota de Copyright
Copyright 1999-2010 - 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.2 published by the Free Software Foundation; A copy of the license is included in the section entitled GNU Free Documentation License.

Sumrio
1 Introduo 1.1 1.2 1.3 Consideraes sobre o nvel Avanado . . . . . . . . . . . . . . . . . . . . . . . . . Pr-requisitos para a utilizao deste guia . . . . . . . . . . . . . . . . . . . . . . . O Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.1 2 Algumas Caractersticas do Linux . . . . . . . . . . . . . . . . . . . . . . . 1 3 4 4 5 9 9 9

Explicaes Bsicas 2.1 Monitorando os logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 2.2 Destruindo arquivos/parties de forma segura . . . . . . . . . . . . . . .

Curingas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 13

Hardware 3.1 3.2 3.3

Placa de expanso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Nomes de dispositivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Congurao de Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.3.1 3.3.2 3.3.3 IRQ - Requisio de Interrupo . . . . . . . . . . . . . . . . . . . . . . . . 15 DMA - Acesso Direto a Memria . . . . . . . . . . . . . . . . . . . . . . . . 17 I/O - Porta de Entrada/Sada . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.4

Hardwares congurveis por jumpers, dip-switches, jumperless e Plug-and-Play. 19 3.4.1 3.4.2 3.4.3 3.4.4 Jumpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Dip-Switches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Jumperless (sem jumper) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Plug-and-Play . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.5

Listando as placas e outros hardwares em um computador . . . . . . . . . . . . . 21

SUMRIO

ii

3.6 3.7 3.8 3.9

Conitos de hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Barramento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Placas on-board / off-board . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Hardwares especcos ou For Windows . . . . . . . . . . . . . . . . . . . . . . . 24

3.10 Dispositivos especcos para GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . 25 3.11 Conguraes de Dispositivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.11.1 Congurando uma placa de rede . . . . . . . . . . . . . . . . . . . . . . . . 25 3.11.2 Congurando uma placa de SOM no Linux . . . . . . . . . . . . . . . . . . 26 3.11.3 Congurando um gravador de CD/DVD no Linux . . . . . . . . . . . . . 27 3.11.4 Congurando o gerenciamento de energia usando o APM . . . . . . . . . 29 3.11.5 Congurando o gerenciamento de energia usando ACPI . . . . . . . . . . 30 3.11.6 Ativando WakeUP on Lan . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.12 Aterramento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.12.1 Condutores de eletricidade . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.13 Tomadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.14 Descargas estticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.15 Melhoria de performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.15.1 Particionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.15.2 Spindles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.15.3 Fazendo ajustes nos de performance do disco . . . . . . . . . . . . . . . . 34 3.15.4 Data de acesso a arquivos/diretrios . . . . . . . . . . . . . . . . . . . . . 37 3.16 Perifricos SATA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.17 Perifricos SCSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.17.1 Congurando uma SCSI ID e terminao . . . . . . . . . . . . . . . . . . . 39 4 Rede 4.1 4.2 4.3 41

O que uma rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Protocolo de Rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Endereo IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.3.1 4.3.2 Classes de Rede IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Referncia rpida de mscara de redes . . . . . . . . . . . . . . . . . . . . . 43

SUMRIO

iii

4.3.3 4.3.4 4.4

Para instalar uma mquina usando o Linux em uma rede existente . . . . 44 Endereos reservados para uso em uma rede Privada . . . . . . . . . . . . 44

Interface de rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.4.1 4.4.2 A interface loopback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Atribuindo um endereo de rede a uma interface (ifcong) . . . . . . . . . 46

4.5

Roteamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.5.1 Congurando uma rota no Linux . . . . . . . . . . . . . . . . . . . . . . . . 47

4.6

Resolvedor de nomes (DNS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.6.1 4.6.2 4.6.3 O que um nome? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Arquivos de congurao usados na resoluo de nomes . . . . . . . . . . 49 Executando um servidor de nomes . . . . . . . . . . . . . . . . . . . . . . . 52

4.7

Servios de Rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.7.1 4.7.2 Servios iniciados como Daemons de rede . . . . . . . . . . . . . . . . . . 52 Servios iniciados atravs do inetd . . . . . . . . . . . . . . . . . . . . . . . 52

4.8

Segurana da Rede e controle de Acesso . . . . . . . . . . . . . . . . . . . . . . . . 55 4.8.1 4.8.2 4.8.3 4.8.4 /etc/ftpusers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 /etc/securetty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 O mecanismo de controle de acessos tcpd . . . . . . . . . . . . . . . . . . . 56 Firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

4.9

Outros arquivos de congurao relacionados com a rede . . . . . . . . . . . . . . 61 4.9.1 4.9.2 /etc/services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 /etc/protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

4.10 Camadas de Rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 4.11 RFCs de referncia sobre protocolos de rede . . . . . . . . . . . . . . . . . . . . . . 62 5 Conguraes especiais de Rede 5.1 5.2 63

IP Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Bridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 5.2.1 5.2.2 5.2.3 Requerimentos para a Instalao . . . . . . . . . . . . . . . . . . . . . . . . 65 Congurao da bridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Conguraes mais avanadas de bridge . . . . . . . . . . . . . . . . . . . 66

SUMRIO

iv

5.2.4 5.2.5 5.2.6 5.3

Congurao manual da bridge . . . . . . . . . . . . . . . . . . . . . . . . 67 Usando o iptables para construir um rewall na mquina da bridge . . . 68 Filtrando pacotes no IP na bridge . . . . . . . . . . . . . . . . . . . . . . . 68

Conectando dois computadores usando a porta paralela . . . . . . . . . . . . . . 68 5.3.1 Construindo um cabo LapLink Paralelo . . . . . . . . . . . . . . . . . . . . 70

5.4

Conectando dois computadores usando a porta serial . . . . . . . . . . . . . . . . 71 5.4.1 Construindo um cabo LapLink Serial . . . . . . . . . . . . . . . . . . . . . 72 75

Arquivos e daemons de Log 6.1 6.2

Formato do arquivo de log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Daemons de log do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 6.2.1 6.2.2 syslogd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 klogd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

6.3 6.4

logger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Programas teis para monitorao e gerenciamento de arquivos de logs . . . . . 81 6.4.1 6.4.2 logcheck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 logrotate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

6.5 7

Congurando um servidor de logs . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 87

A distribuio Debian GNU/Linux 7.1 7.2 7.3 7.4

Como obter a Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Programas de congurao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Arquivos de inicializao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Nveis de Execuo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 7.4.1 Entendendo o funcionamento dos nveis de execuo do sistema (runlevels) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

7.5 7.6 7.7 8

Rede no sistema Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Bug tracking system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Onde encontrar a Debian para Download? . . . . . . . . . . . . . . . . . . . . . . 91 93

Personalizao do Sistema 8.1 8.2

Variveis de Ambientes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Modicando o Idioma usado em seu sistema . . . . . . . . . . . . . . . . . . . . . 93

SUMRIO

8.3 8.4 8.5 8.6 8.7 8.8 8.9 9

alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Arquivo /etc/profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Arquivo .bash_profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Arquivo .bashrc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Arquivo .hushlogin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Arquivo /etc/environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Diretrio /etc/skel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 99

Impresso 9.1 9.2 9.3 9.4

Portas de impressora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Imprimindo diretamente para a porta de impressora . . . . . . . . . . . . . . . . . 99 Imprimindo via spool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Impresso em modo grco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 9.4.1 Ghost Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

9.5

Magic Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 9.5.1 9.5.2 Instalao e congurao do Magic Filter . . . . . . . . . . . . . . . . . . . 103 Outros detalhes tcnicos sobre o Magic Filter . . . . . . . . . . . . . . . . . 104

9.6

Impresso remota . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 9.6.1 9.6.2 9.6.3 Dando permisso para impreso remota via lpd/lprng . . . . . . . . . . . 105 Impresso via rlpr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Impresso via printcap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 109

10 Firewall iptables

10.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 10.1.1 Verso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 10.1.2 Um resumo da histria do iptables . . . . . . . . . . . . . . . . . . . . . . . 110 10.1.3 Caractersticas do rewall iptables . . . . . . . . . . . . . . . . . . . . . . . 110 10.1.4 Ficha tcnica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 10.1.5 Requerimentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 10.1.6 Arquivos de logs criados pelo iptables . . . . . . . . . . . . . . . . . . . . . 112 10.1.7 Instalao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 10.1.8 Enviando Correes/Contribuindo com o projeto . . . . . . . . . . . . . . 112

SUMRIO

vi

10.1.9 O que aconteceu com o ipchains e ipfwadm? . . . . . . . . . . . . . . . 112 10.1.10 Tipos de rewalls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 10.1.11 O que proteger? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 10.1.12 O que so regras? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 10.1.13 O que so chains? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 10.1.14 O que so tabelas? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 10.1.15 Habilitando o suporte ao iptables no kernel . . . . . . . . . . . . . . . . . . 115 10.1.16 Ligando sua rede interna a Internet . . . . . . . . . . . . . . . . . . . . . . 116 10.2 Manipulando chains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 10.2.1 Adicionando regras - A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 10.2.2 Listando regras - L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 10.2.3 Apagando uma regra - D . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 10.2.4 Inserindo uma regra - I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 10.2.5 Substituindo uma regra - R . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 10.2.6 Criando um novo chain - N . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 10.2.7 Renomeando um chain criado pelo usurio - E . . . . . . . . . . . . . . . . 122 10.2.8 Listando os nomes de todas as tabelas atuais . . . . . . . . . . . . . . . . . 122 10.2.9 Limpando as regras de um chain - F . . . . . . . . . . . . . . . . . . . . . . 122 10.2.10 Apagando um chain criado pelo usurio - X . . . . . . . . . . . . . . . . . 123 10.2.11 Zerando contador de bytes dos chains - Z . . . . . . . . . . . . . . . . . . . 123 10.2.12 Especicando a poltica padro de um chain - P . . . . . . . . . . . . . . . 123 10.3 Outras opes do iptables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 10.3.1 Especicando um endereo de origem/destino . . . . . . . . . . . . . . . . 124 10.3.2 Especicando a interface de origem/destino . . . . . . . . . . . . . . . . . 125 10.3.3 Especicando um protocolo . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 10.3.4 Especicando fragmentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 10.3.5 Especicando uma exceo . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 10.3.6 Especicando um alvo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 10.3.7 Salvando e Restaurando regras . . . . . . . . . . . . . . . . . . . . . . . . . 134 10.4 A tabela nat (Network Address Translation) - fazendo nat . . . . . . . . . . . . . . 134 10.4.1 Criando um novo chain na tabela NAT . . . . . . . . . . . . . . . . . . . . 135

SUMRIO

vii

10.4.2 Fazendo IP masquerading (para os apressados) . . . . . . . . . . . . . . . 135 10.4.3 Fazendo SNAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 10.4.4 Fazendo DNAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 10.4.5 Monitorando conexes feitas na tabela nat . . . . . . . . . . . . . . . . . . 139 10.5 A tabela mangle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 10.5.1 Especicando o tipo de servio . . . . . . . . . . . . . . . . . . . . . . . . . 139 10.6 Outros mdulos do iptables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 10.6.1 Conferindo de acordo com o estado da conexo . . . . . . . . . . . . . . . 141 10.6.2 Limitando o nmero de vezes que a regra confere . . . . . . . . . . . . . . 141 10.6.3 Proteo contra ping da morte . . . . . . . . . . . . . . . . . . . . . . . . . 142 10.6.4 Proteo contra syn ood . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 10.6.5 Proteo contra IP spoong . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 10.6.6 Especicando mltiplas portas de origem/destino . . . . . . . . . . . . . . 143 10.6.7 Especicando o endereo MAC da interface . . . . . . . . . . . . . . . . . 144 10.6.8 Conferindo com quem criou o pacote . . . . . . . . . . . . . . . . . . . . . 144 10.6.9 Conferindo com o contedo do pacote . . . . . . . . . . . . . . . . . . . . . 145 10.6.10 Conferindo com o tempo de vida do pacote . . . . . . . . . . . . . . . . . . 145 10.6.11 Conferindo com nmeros RPC . . . . . . . . . . . . . . . . . . . . . . . . . 146 10.6.12 Conferindo com tipo de pacote . . . . . . . . . . . . . . . . . . . . . . . . . 146 10.6.13 Conferindo com o tamanho do pacote . . . . . . . . . . . . . . . . . . . . . 147 10.7 Caminho percorrido pelos pacotes nas tabelas e chains . . . . . . . . . . . . . . . 147 10.7.1 Ping de 192.168.1.1 para 192.168.1.1 . . . . . . . . . . . . . . . . . . . . . . 147 10.7.2 Conexo FTP de 192.168.1.1 para 192.168.1.1 . . . . . . . . . . . . . . . . . 148 10.7.3 Conexo FTP de 192.168.1.1 para 192.168.1.4 . . . . . . . . . . . . . . . . . 149 10.7.4 Conexo FTP de 200.217.29.67 para a mquina ftp.debian.org.br . . . . . . 150 10.7.5 Ping de 192.168.1.4 para 192.168.1.1 . . . . . . . . . . . . . . . . . . . . . . 151 10.7.6 Conexo FTP de 192.168.1.4 para 192.168.1.1 . . . . . . . . . . . . . . . . . 152 10.7.7 Conexo FTP de 192.168.1.4 para ftp.debian.org.br . . . . . . . . . . . . . . 152 10.7.8 Conexo FTP de 200.198.129.162 para 200.217.29.167 . . . . . . . . . . . . . 154 10.7.9 Grco geral da passagem dos pacotes . . . . . . . . . . . . . . . . . . . . 154 10.8 Exemplos de conguraes do iptables . . . . . . . . . . . . . . . . . . . . . . . . . 155

SUMRIO

viii

10.8.1 Bloqueando conexes de fora para sua mquina . . . . . . . . . . . . . . . 155 10.8.2 Monitorando tentativa de conexo de trojans em sua mquina . . . . . . . 156 10.8.3 Conectando sua rede interna a Internet . . . . . . . . . . . . . . . . . . . . 156 10.8.4 Um exemplo de rewall simples . . . . . . . . . . . . . . . . . . . . . . . . 157 11 Gerenciamento de contas e cuidados para a proteo de senhas 161

11.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 11.2 Criao, monitoramento e segurana de contas . . . . . . . . . . . . . . . . . . . . 162 11.2.1 Denindo valores padres de restrio . . . . . . . . . . . . . . . . . . . . 163 11.2.2 Senhas fceis de adivinhar e escolha de boas senhas . . . . . . . . . . . . . 164 11.2.3 Atualizao de senhas de mltiplas contas . . . . . . . . . . . . . . . . . . 165 11.2.4 A senha do usurio root . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 11.3 Tipos de ataques mais comuns para se conseguir uma senha. . . . . . . . . . . . . 166 11.3.1 Deduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 11.3.2 Engenharia Social . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 11.3.3 Ataques por dicionrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 11.3.4 Brute Force . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 11.3.5 Monitoramento de toques do teclado . . . . . . . . . . . . . . . . . . . . . 168 11.3.6 Login falso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 11.4 Melhorando a segurana das senhas armazenadas em seu sistema . . . . . . . . . 169 11.4.1 Shadow Passwords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 11.4.2 Senhas MD5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 12 Apache 171

12.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 12.1.1 Verso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 12.1.2 Um resumo da Histria do Apache . . . . . . . . . . . . . . . . . . . . . . . 172 12.1.3 Enviando Correes/Contribuindo com o projeto . . . . . . . . . . . . . . 172 12.1.4 Caractersticas do Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 12.1.5 Ficha tcnica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 12.1.6 Requerimentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 12.1.7 Arquivos de log criados pelo Apache . . . . . . . . . . . . . . . . . . . . . 174

SUMRIO

ix

12.1.8 Instalao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 12.1.9 Iniciando o servidor/reiniciando/recarregando a congurao . . . . . . 174 12.1.10 Opes de linha de comando . . . . . . . . . . . . . . . . . . . . . . . . . . 175 12.2 Congurando a porta padro do Apache . . . . . . . . . . . . . . . . . . . . . . . 176 12.3 Adicionando uma pgina no Apache . . . . . . . . . . . . . . . . . . . . . . . . . . 176 12.4 Congurando as interfaces que o Apache atender . . . . . . . . . . . . . . . . . . 177 12.5 Especicando endereos/portas adicionais (a diretiva Listen) . . . . . . . . . . . . 178 12.6 Especicando opes/permisses para as pginas . . . . . . . . . . . . . . . . . . 178 12.7 Restries de Acesso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 12.7.1 Autorizao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 12.7.2 Autenticao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 12.7.3 Usando autorizao e autenticao juntos . . . . . . . . . . . . . . . . . . . 191 12.7.4 O arquivo .htaccess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 12.7.5 Usando a diretiva SetEnvIf com Allow e Deny . . . . . . . . . . . . . . . . 195 12.7.6 A diretiva <Limit> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 12.7.7 Diretiva <LimitExcept> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 12.8 Denindo documentos de erro personalizados . . . . . . . . . . . . . . . . . . . . 197 12.9 Mdulos DSO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 12.10Sistema de Log do Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 12.10.1 AgentLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 12.10.2 ErrorLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 12.10.3 CustomLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 12.10.4 RefererLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 12.10.5 RewriteLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 12.10.6 RewriteLogLevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 12.10.7 ScriptLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 12.10.8 ScriptLogBuffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 12.10.9 ScriptLogLength . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 12.10.10 LogFormat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 12.10.11 TransferLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 12.10.12 LogLevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

SUMRIO

12.10.13 Anonymous_LogEmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 12.10.14 CookieLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 12.10.15 Relatrio grco de acesso ao sistema . . . . . . . . . . . . . . . . . . . . . 204 12.11Congurando o Apache como servidor proxy . . . . . . . . . . . . . . . . . . . . . 204 12.11.1 Controlando o acesso ao servidor proxy . . . . . . . . . . . . . . . . . . . . 206 12.11.2 Redirecionamento de conexes no Apache . . . . . . . . . . . . . . . . . . 207 12.12Virtual Hosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 12.12.1 Virtual hosts baseados em IP . . . . . . . . . . . . . . . . . . . . . . . . . . 208 12.12.2 Virtual hosts baseados em nome . . . . . . . . . . . . . . . . . . . . . . . . 209 12.12.3 Segurana no uso de IPs em Virtual Hosts . . . . . . . . . . . . . . . . . . 211 12.13Uso de criptograa SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 12.13.1 Servidor apache com suporte a ssl . . . . . . . . . . . . . . . . . . . . . . . 212 12.13.2 Instalando o suporte a mdulo SSL no Apache . . . . . . . . . . . . . . . . 212 12.13.3 Gerando um certicado digital . . . . . . . . . . . . . . . . . . . . . . . . . 213 12.13.4 Exemplo de congurao do mdulo mod-ssl . . . . . . . . . . . . . . . . 213 12.13.5 Autorizando acesso somente a conexes SSL . . . . . . . . . . . . . . . . . 215 12.13.6 Iniciando o servidor Web com suporte a SSL . . . . . . . . . . . . . . . . . 215 12.14Exemplo comentado de um arquivo de congurao do Apache . . . . . . . . . . 216 12.14.1 httpd.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 12.14.2 srm.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 12.14.3 access.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 12.15Cdigos HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 13 Servidor ident 241

13.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 13.1.1 Verso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 13.1.2 Contribuindo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 13.1.3 Caractersticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 13.1.4 Ficha tcnica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 13.1.5 Requerimentos de Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . 243 13.1.6 Arquivos de log criados pelo Ident . . . . . . . . . . . . . . . . . . . . . . . 243

SUMRIO

xi

13.1.7 Instalao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 13.1.8 Instalao via Inetd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 13.1.9 Usando tcpwrappers com oidentd . . . . . . . . . . . . . . . . . . . . . . . 244 13.1.10 Iniciando o servidor/reiniciando/recarregando a congurao . . . . . . 244 13.1.11 Opes de linha de comando . . . . . . . . . . . . . . . . . . . . . . . . . . 244 13.1.12 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 14 Servidor telnet 247

14.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 14.1.1 Verso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 14.1.2 Caractersticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 14.1.3 Ficha tcnica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 14.1.4 Requerimentos de Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . 248 14.1.5 Arquivos de log criados pelo servidor telnet . . . . . . . . . . . . . . . . . 248 14.1.6 Instalao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 14.1.7 Iniciando o servidor/reiniciando/recarregando a congurao . . . . . . 249 14.1.8 Opes de linha de comando . . . . . . . . . . . . . . . . . . . . . . . . . . 249 14.2 Controle de acesso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 14.3 Recomendaes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 14.4 Fazendo conexes ao servidor telnet . . . . . . . . . . . . . . . . . . . . . . . . . . 250 15 Servidor ssh 251

15.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 15.1.1 Verso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 15.1.2 Histria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 15.1.3 Contribuindo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 15.1.4 Caractersticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 15.1.5 Ficha tcnica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 15.1.6 Requerimentos de Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . 253 15.1.7 Arquivos de log criados pelo servidor ssh . . . . . . . . . . . . . . . . . . . 253 15.1.8 Instalao do servidor openSSH . . . . . . . . . . . . . . . . . . . . . . . . 253 15.1.9 Iniciando o servidor/reiniciando/recarregando a congurao . . . . . . 254

SUMRIO

xii

15.1.10 Opes de linha de comando . . . . . . . . . . . . . . . . . . . . . . . . . . 254 15.2 Usando aplicativos clientes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 15.2.1 ssh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 15.2.2 scp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 15.2.3 sftp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 15.3 Servidor ssh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 15.3.1 sshd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 15.3.2 Controle de acesso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 15.3.3 Usando autenticao RSA/DSA - chave pblica/privada . . . . . . . . . . 259 15.3.4 Execuo de comandos especcos usando chaves . . . . . . . . . . . . . . 261 15.3.5 Criando um gateway ssh . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 15.3.6 Criando um tunel proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 15.3.7 Diferenas nas verses do protocolo . . . . . . . . . . . . . . . . . . . . . . 262 15.3.8 Exemplo de sshd_config com explicaes das diretivas . . . . . . . . . 263 16 Servidor pop3 269

16.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 16.1.1 Verso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 16.1.2 Contribuindo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 16.1.3 Caractersticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 16.1.4 Ficha tcnica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 16.1.5 Requerimentos de Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . 270 16.1.6 Arquivos de log criados pelo qpopper . . . . . . . . . . . . . . . . . . . . . 270 16.1.7 Instalao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 16.1.8 Iniciando o servidor/reiniciando/recarregando a congurao . . . . . . 271 16.1.9 Teste de acesso no pop3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 16.1.10 Opes de linha de comando . . . . . . . . . . . . . . . . . . . . . . . . . . 271 16.1.11 Enviando boletins de mensagens . . . . . . . . . . . . . . . . . . . . . . . . 273 16.1.12 Especicando quotas para as caixas de correio . . . . . . . . . . . . . . . . 273 16.1.13 Restringindo acesso ao servidor pop3 . . . . . . . . . . . . . . . . . . . . . 274

SUMRIO

xiii

17 CVS

275

17.1 Introduo ao CVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 17.1.1 Verso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 17.1.2 Histria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 17.1.3 Contribuindo com o CVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 17.1.4 Caractersticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 17.1.5 Ficha tcnica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 17.1.6 Requerimentos de Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . 277 17.1.7 Arquivos de log criados pelo CVS . . . . . . . . . . . . . . . . . . . . . . . 278 17.1.8 Instalao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 17.1.9 Iniciando o servidor/reiniciando/recarregando a congurao . . . . . . 278 17.1.10 Opes de linha de comando . . . . . . . . . . . . . . . . . . . . . . . . . . 278 17.2 Servidor de CVS - congurando mtodos de acesso ao repositrio . . . . . . . . . 279 17.2.1 local . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 17.2.2 fork . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 17.2.3 ext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 17.2.4 pserver (password server) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 17.2.5 Congurando um servidor pserver . . . . . . . . . . . . . . . . . . . . . . 282 17.2.6 gssapi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 17.3 Criando projetos para serem usados no CVS . . . . . . . . . . . . . . . . . . . . . 285 17.3.1 Repositrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 17.3.2 Criando um repositrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 17.3.3 Logando no servidor de CVS via pserver . . . . . . . . . . . . . . . . . . . 286 17.3.4 Encerrando uma seo de CVS . . . . . . . . . . . . . . . . . . . . . . . . . 287 17.3.5 Baixando arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 17.3.6 Adicionando um novo projeto . . . . . . . . . . . . . . . . . . . . . . . . . 288 17.3.7 Sincronizando a cpia remota com a cpia local . . . . . . . . . . . . . . . 288 17.3.8 Enviando as mudanas para o servidor remoto . . . . . . . . . . . . . . . . 289 17.3.9 Adicionando um arquivo ao mdulo CVS do servidor . . . . . . . . . . . 289 17.3.10 Adicionando um diretrio ao mdulo CVS do servidor . . . . . . . . . . . 289 17.3.11 Removendo um arquivo do mdulo CVS remoto . . . . . . . . . . . . . . 290

SUMRIO

xiv

17.3.12 Removendo um diretrio do mdulo CVS remoto . . . . . . . . . . . . . . 290 17.3.13 Dizendo que o mdulo atual no est mais em uso . . . . . . . . . . . . . 290 17.3.14 Visualizando diferenas entre verses de um arquivo . . . . . . . . . . . . 291 17.3.15 Visualizando o status de verso de arquivos . . . . . . . . . . . . . . . . . 291 17.3.16 Outros utilitrios para trabalho no repositrio . . . . . . . . . . . . . . . . 291 17.4 Arquivos administrativos em CVSROOT . . . . . . . . . . . . . . . . . . . . . . . 292 17.4.1 config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 17.4.2 modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 17.4.3 cvswrappers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 17.4.4 commitinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 17.4.5 verifymsg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 17.4.6 loginfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 17.4.7 cvsignore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 17.4.8 checkoutlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 17.4.9 history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 17.5 Clientes de CVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 17.5.1 cvs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 17.5.2 gcvs - Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 17.5.3 WinCVS - Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 17.5.4 MacCVS - Macintosh (PPC) . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 17.5.5 viewcvs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 17.6 Exemplo de uma seo CVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 18 SAMBA 299

18.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 18.1.1 Verso documentada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 18.1.2 Histria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 18.1.3 Contribuindo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 18.1.4 Caractersticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 18.1.5 Ficha tcnica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 18.1.6 Requerimentos de Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . 302

SUMRIO

xv

18.1.7 Arquivos de log criados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 18.1.8 Instalao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 18.1.9 Iniciando o servidor/reiniciando/recarregando a congurao . . . . . . 302 18.1.10 Opes de linha de comando . . . . . . . . . . . . . . . . . . . . . . . . . . 303 18.2 Conceitos gerais para a congurao do SAMBA . . . . . . . . . . . . . . . . . . . 303 18.2.1 Nome de mquina (nome NetBios) . . . . . . . . . . . . . . . . . . . . . . . 303 18.2.2 Grupo de trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 18.2.3 Domnio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 18.2.4 Compartilhamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 18.2.5 Mapeamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 18.2.6 Navegao na Rede e controle de domnio . . . . . . . . . . . . . . . . . . 305 18.2.7 Arquivo de congurao do samba . . . . . . . . . . . . . . . . . . . . . . 306 18.2.8 Seo [global] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 18.2.9 Seo [homes] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312 18.2.10 Seo [printers] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 18.2.11 Buscando problemas na congurao . . . . . . . . . . . . . . . . . . . . . 313 18.2.12 Nveis de sistema para eleio de rede . . . . . . . . . . . . . . . . . . . . . 314 18.2.13 Variveis de substituio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 18.3 Compartilhamento de arquivos e diretrios . . . . . . . . . . . . . . . . . . . . . . 316 18.3.1 Descrio de parmetros usados em compartilhamento . . . . . . . . . . . 317 18.4 Congurao em Grupo de Trabalho . . . . . . . . . . . . . . . . . . . . . . . 319 18.5 Resoluo de nomes de mquinas no samba . . . . . . . . . . . . . . . . . . . . . . 321 18.5.1 Arquivo /etc/samba/lmhosts . . . . . . . . . . . . . . . . . . . . . . . 321 18.5.2 WINS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 18.6 Servidor de data/hora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324 18.6.1 Congurao do servio de data/hora no SAMBA . . . . . . . . . . . . . . 324 18.6.2 Sincronizando a data/hora no Cliente . . . . . . . . . . . . . . . . . . . . . 325 18.7 Congurao em Domnio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 18.7.1 Uma breve introduo a um Domnio de rede . . . . . . . . . . . . . . . . 325 18.7.2 Local Master Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 18.7.3 Domain Master Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326

SUMRIO

xvi

18.7.4 Congurando um servidor PDC no SAMBA . . . . . . . . . . . . . . . . . 327 18.7.5 Contas de mquinas de domnio . . . . . . . . . . . . . . . . . . . . . . . . 328 18.7.6 Criando uma conta de administrador de domnio . . . . . . . . . . . . . . 329 18.7.7 Criando Scripts de logon . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 18.7.8 Congurando pers de usurios . . . . . . . . . . . . . . . . . . . . . . . . 332 18.7.9 Modicaes de permisses de acesso pelos clientes do domnio . . . . . 334 18.8 Ativando o suporte a senhas criptografadas . . . . . . . . . . . . . . . . . . . . . . 334 18.8.1 Migrando de senhas texto plano para criptografadas . . . . . . . . . . . . 336 18.8.2 Adicionando usurios no smbpasswd . . . . . . . . . . . . . . . . . . . . . 336 18.8.3 Removendo usurios do smbpasswd . . . . . . . . . . . . . . . . . . . . . 336 18.8.4 Desabilitando uma conta no smbpasswd . . . . . . . . . . . . . . . . . . . 337 18.8.5 Habilitando uma conta no smbpasswd . . . . . . . . . . . . . . . . . . . . 337 18.8.6 Alterando a senha de um usurio . . . . . . . . . . . . . . . . . . . . . . . 337 18.8.7 Denindo acesso sem senha para o usurio . . . . . . . . . . . . . . . . . . 338 18.9 Ativando o suporte a senhas em texto plano . . . . . . . . . . . . . . . . . . . . . . 338 18.9.1 Congurando o acesso de clientes para uso de senhas em texto plano . . . 338 18.10Mapeamento de usurios/grupos em clientes . . . . . . . . . . . . . . . . . . . . . 341 18.10.1 Mapeamento de usurios/grupos domnio em Windows . . . . . . . . . . 341 18.10.2 Mapeamento de usurios/grupos domnio em Linux . . . . . . . . . . . . 341 18.11Compartilhamento de impresso no servidor SAMBA . . . . . . . . . . . . . . . . 343 18.11.1 Congurando o Linux como um servidor de impresso Windows . . . . . 343 18.12Controle de acesso ao servidor SAMBA . . . . . . . . . . . . . . . . . . . . . . . . 343 18.12.1 Nvel de acesso de usurios conectados ao SAMBA . . . . . . . . . . . . . 344 18.12.2 Restringindo o acesso por IP/rede . . . . . . . . . . . . . . . . . . . . . . . 344 18.12.3 Restringindo o acesso por interface de rede . . . . . . . . . . . . . . . . . . 345 18.12.4 Restringindo o acesso por usurios . . . . . . . . . . . . . . . . . . . . . . . 346 18.12.5 Evite o uso do parmetro hosts equiv! . . . . . . . . . . . . . . . . . . . . . . 347 18.12.6 Evite o uso de senhas em branco! . . . . . . . . . . . . . . . . . . . . . . . . 347 18.12.7 Criando um compartilhamento para acesso sem senha . . . . . . . . . . . 347 18.12.8 Criando um compartilhamento com acesso somente leitura . . . . . . . . 348 18.12.9 Criando um compartilhamento com acesso leitura/gravao . . . . . . . . 349

SUMRIO

xvii

18.12.10 Excesso de acesso na permisso padro de compartilhamento . . . . . . 350 18.12.11 Restringindo o IPC$ e ADMIN$ . . . . . . . . . . . . . . . . . . . . . . . . 350 18.12.12 Criando um compartilhamento invisvel . . . . . . . . . . . . . . . . . . . 351 18.12.13 Executando comandos antes e aps o acesso ao compartilhamento . . . . 352 18.12.14 Consideraes de segurana com o uso do parmetro public = yes . . . 353 18.12.15 Senhas criptografadas ou em texto puro? . . . . . . . . . . . . . . . . . . . 353 18.12.16 Mapeamento de nomes de usurios . . . . . . . . . . . . . . . . . . . . . . 354 18.13Melhorando a performance do compartilhamento/servidor . . . . . . . . . . . . 355 18.14Congurao de Clientes NetBEUI . . . . . . . . . . . . . . . . . . . . . . . . . . . 356 18.14.1 Consideraes sobre o Windows for Workgroups e LanManager . . . . . 357 18.14.2 Congurando clientes em Grupo de Trabalho . . . . . . . . . . . . . . . . 357 18.14.3 Congurando clientes em Domnio . . . . . . . . . . . . . . . . . . . . . . 361 18.14.4 Erros conhecidos durante o logon do cliente . . . . . . . . . . . . . . . . . 365 18.14.5 Programas de navegao grcos . . . . . . . . . . . . . . . . . . . . . . . 366 18.14.6 Cliente de congurao grcos . . . . . . . . . . . . . . . . . . . . . . . . 366 18.15Exemplos de congurao do servidor SAMBA . . . . . . . . . . . . . . . . . . . . 367 18.15.1 Grupo de Trabalho com acesso pblico . . . . . . . . . . . . . . . . . . . . 367 18.15.2 Grupo de Trabalho com acesso por usurio . . . . . . . . . . . . . . . . . . 369 18.15.3 Domnio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 19 Restries de acesso, recursos e servios 375

19.1 Limitando recursos no bash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 19.1.1 Uso do comando readonly para exportar variveis . . . . . . . . . . . . . . 375 19.1.2 Restries nos diretrios de usurios e root . . . . . . . . . . . . . . . . . . 376 19.1.3 Restries bsicas do shell bash com bash -r/restricted, rbash . . . . . . 376 19.1.4 Finalizando consoles inativos . . . . . . . . . . . . . . . . . . . . . . . . . . 377 19.1.5 Desabilitando o registro de comandos digitados . . . . . . . . . . . . . . . 377 19.1.6 Desabilitando servios de shell para usurios . . . . . . . . . . . . . . . . . 377 19.2 Limitao de recursos usando PAM . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 19.2.1 Descobrindo se um determinado programa tem suporte a PAM . . . . . . 378 19.2.2 Denindo uma poltica padro restritiva . . . . . . . . . . . . . . . . . . . 379

SUMRIO

xviii

19.2.3 Restringindo/Bloqueando o login . . . . . . . . . . . . . . . . . . . . . . . 379 19.2.4 Restringindo o acesso a root no su . . . . . . . . . . . . . . . . . . . . . . . 380 19.2.5 Restries de servios PAM baseados em dia/hora . . . . . . . . . . . . . 381 19.2.6 Permitindo acesso a grupos extras . . . . . . . . . . . . . . . . . . . . . . . 382 19.2.7 Limitao de recursos do shell . . . . . . . . . . . . . . . . . . . . . . . . . 383 19.3 Restries de acesso a programas/diretrios/arquivos usando grupos . . . . . . 384 19.4 Dando poderes de root para executar determinados programas . . . . . . . . . . 386 19.5 Restringindo o comando su . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387 19.6 Restries baseadas em usurio/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . 388 19.7 Restries por MAC Address/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388 19.8 Desabilitando servios no usados no Inetd . . . . . . . . . . . . . . . . . . . . . . 389 19.9 Evitando o uso de hosts.equiv e .rhosts . . . . . . . . . . . . . . . . . . . . . 390 19.10Restringindo o uso do shutdown . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 19.11Restringindo o acesso ao sistema de arquivos /proc . . . . . . . . . . . . . . . . . 391 19.12Limitando o uso de espao em disco (quotas) . . . . . . . . . . . . . . . . . . . . . 392 19.12.1 Instalando o sistema de quotas . . . . . . . . . . . . . . . . . . . . . . . . . 392 19.12.2 Editando quotas de usurios/grupos . . . . . . . . . . . . . . . . . . . . . 394 19.12.3 Modicando a quota de todos os usurios de uma vez . . . . . . . . . . . 396 19.12.4 Vericando a quota disponvel ao usurio . . . . . . . . . . . . . . . . . . . 397 19.12.5 Vericando a quota de todos os usurios/grupos do sistema . . . . . . . . 398 19.12.6 Avisando usurios sobre o estouro de quota . . . . . . . . . . . . . . . . . 399 19.13Suporte a senhas ocultas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400 19.14Suporte a senhas md5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400 19.15Restries no hardware do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . 401 19.15.1 BIOS do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401 19.15.2 Retirada da unidade de disquetes . . . . . . . . . . . . . . . . . . . . . . . 401 19.15.3 Placas de rede com eprom de boot . . . . . . . . . . . . . . . . . . . . . . . 401 19.15.4 Protegendo o LILO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402 19.15.5 Disco rgido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402

SUMRIO

xix

20 Introduo ao uso de criptograa para transmisso/armazenamento de dados

403

20.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 20.2 Sniffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 20.2.1 Detectando a presena de sniffers . . . . . . . . . . . . . . . . . . . . . . . 404 20.3 Alternativas seguras a servios sem criptograa . . . . . . . . . . . . . . . . . . . 405 20.3.1 http . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405 20.3.2 Transmisso segura de e-mails . . . . . . . . . . . . . . . . . . . . . . . . . 405 20.3.3 Servidor pop3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 20.3.4 Transferncia de arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 20.3.5 login remoto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 20.3.6 Bate papo via IRC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 20.3.7 Transmisso de mensagens via ICQ . . . . . . . . . . . . . . . . . . . . . . 406 20.4 Sistemas de arquivos criptogrco . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 20.5 Usando pgp (gpg)para criptograa de arquivos . . . . . . . . . . . . . . . . . . . 408 20.5.1 Instalando o PGP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 20.5.2 Criando um par de chaves pblica/privada . . . . . . . . . . . . . . . . . 409 20.5.3 Encriptando dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 20.5.4 Decriptando dados com o gpg . . . . . . . . . . . . . . . . . . . . . . . . . 410 20.5.5 Assinando arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 20.5.6 Checando assinaturas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 20.5.7 Extraindo sua chave pblica do chaveiro . . . . . . . . . . . . . . . . . . . 411 20.5.8 Adicionando chaves pblicas ao seu chaveiro pessoal . . . . . . . . . . . . 411 20.5.9 Listando chaves de seu chaveiro . . . . . . . . . . . . . . . . . . . . . . . . 412 20.5.10 Apagando chaves de seu chaveiro . . . . . . . . . . . . . . . . . . . . . . . 412 20.5.11 Mudando sua FraseSenha . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 20.5.12 Assinando uma chave digital . . . . . . . . . . . . . . . . . . . . . . . . . . 412 20.5.13 Listando assinaturas digitais . . . . . . . . . . . . . . . . . . . . . . . . . . 413 20.5.14 Recomendaes para a assinatura de chaves gpg . . . . . . . . . . . . . . . 413 21 Apndice 419

21.1 Sobre este guia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419

SUMRIO

xx

21.2 Sobre o Autor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420 21.3 Referncias de auxlio ao desenvolvimento do guia . . . . . . . . . . . . . . . . . 420 21.4 Onde encontrar a verso mais nova do guia? . . . . . . . . . . . . . . . . . . . . . 421 21.5 Colaboradores do Guia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421 21.6 Marcas Registradas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422 21.7 Futuras verses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422 21.8 Chave Pblica PGP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423

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: Avanado Entre o contedo do guia, voc encontrar: Anlise de logs do sistema GNU/Linux e aplicao para a soluo de problemas (Arquivos e daemons de Log on page 75). 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 161). Principais tipos de ataques para descoberta de senhas e alguns mtodos de como evitalas (Senhas fceis de adivinhar e escolha de boas senhas on page 164). Integrar mquinas Windows e Linux em uma mesma rede compartilhando dados entre si e impresso (SAMBA on page 299). Sistemas de proteo de senhas do sistema (Melhorando a segurana das senhas armazenadas em seu sistema on page 169). 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 403). Uso de servios alternativos criptogrcos (Alternativas seguras a servios sem criptograa on page 405). Criptograa usando gnupgp (Usando pgp (gpg)para criptograa de arquivos on page 408).

Captulo 1. Introduo

Uso de sistema de arquivos criptogrcos para armazenamento de dados (Sistemas de arquivos criptogrco on page 406). Otimizao de performance na transferncia de dados do disco rgido atravs de particionamento e hdparm, uso de spindles para criao de swap (Melhoria de performance on page 33). O que so descargas estticas e a importncia do aterramento da instalao eltrica do computador (dirigido a usurios domsticos e de pequenas instalaes) (Descargas estticas on page 33). 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 de publicao Web usando o Apache (Apache on page 171). Montagem de um rewall avanado para proteo do sistema (ltragem de pacotes) usando o iptables, redirecionamento de pacotes, nat, bloqueio de trfego P2P, masquerading, balanceamento de carga, marcao de pacotes, log, proteo contra port scans (Firewall iptables on page 109). Servidor de acesso para permitir o acesso a distncia ao seu computador usando o telnetd (Servidor telnet on page 247). Servidor de acesso para permitir o acesso a distncia a seu computador com criptograa usando o ssh (Servidor ssh on page 251). Servidor de identicao usando o oidentd (Servidor ident on page 241). 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 269). 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 375). Restries de espao usado em disco por usurios/grupos usando o sistema de quotas (Limitando o uso de espao em disco (quotas) on page 392). Uso de grupos dos sistema para restries de acesso (Restries de acesso a programas/diretrios/arquivos usando grupos on page 384). Restries de acesso via hardware: BIOS, disquete, placa com boot via rede, LILO, disco rgido (Restries no hardware do sistema on page 401). 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 376).

Captulo 1. Introduo

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 386).

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. Tenho recebido 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, empacotamento, 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 focar na congurao de servios, servidores, aplicativos, nem garantia que ele atender a determinada nalidade especca do usurio (principalmente 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, abordando consideraes 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

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 documentao para complementar o que vem aprendendo. Enm, requer que se tiver interesse em se aprofundar em determinada rea, que utilize os mtodos de busca de documentao sugeridos no guia para complementao do aprendizado. O guia no contm todos os materiais para que a pessoa se torne um expert 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 documentao que acompanha sua distribuio GNU/Linux.

1.3

O Linux

O Linux um sistema operacional criado em 1991 por Linus Torvalds na universidade de Helsinki na Finlndia. um sistema Operacional de cdigo aberto distribudo gratuitamente pela Internet. Seu cdigo fonte liberado como Free Software (software livre), sob licena GPL, 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 em que novos recursos so adicionados ao sistema. O requisito mnimo para rodar o Linux depende do kernel que ser usado: 2.2.x - Computador 386 SX com 2 MB de memria 2.4.x - Computador 386 SX com 4MB de memria 2.6.x - Computador 486 DX com no mnimo 8MB Para espao em disco requerido 500MB para uma instalao bsica usando modo texto com suporte a rede. Claro que no considerada a execuo de ambiente grco ou servios de rede em produo, que neste caso exigido mais memria RAM e espao em disco para armazenamento de dados de programas e usurios. 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), corrigir algum problema ou fazer 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/DVD-RWs, BluRay e outros tipos de dispositivos de ltima gerao e mais antigos (a maioria deles j ultrapassados

Captulo 1. Introduo

e sendo completamente 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. O Linux desenvolvido por milhares de pessoas espalhadas pelo mundo, cada uma fazendo sua contribuio ou mantendo alguma parte do kernel gratuitamente. Linus Torvalds ainda trabalha em seu desenvolvimento e na coordenao dos grupos de trabalho do kernel. O suporte ao sistema tambm se destaca como sendo o mais eciente e rpido do que qualquer programa comercial disponvel no mercado. Existem milhares de consultores e empresas especializadas no suporte e treinamento espalhados ao redor do mundo. Outra opo de suporte atravs da comunidade Linux; 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 contribuidores 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 Tambm recebe apoio de grandes empresas como IBM, Sun, HP, etc. para seu desenvolvimento 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. Utiliza permisses de acesso a arquivos, diretrios e programas em execuo na memria RAM. Proteo entre processos executados na memria RAM Suporte a mais de 63 terminais virtuais (consoles) Modularizao - O 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 carregados 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) Suporte nativo a rede e tecnologias avanadas como: balanceamento de carga, ips alias, failover, vlans, bridge, trunking, OSPF, BGP. No h a necessidade de se reiniciar o sistema aps a modicar a congurao de qualquer perifrico ou parmetros de rede. Somente necessrio reiniciar o sistema no caso

Captulo 1. Introduo

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 computadores 386Sx 25 com 4MB de memria RAM (sem rodar o sistema grco X, que recomendado 32MB de RAM). J pensou no seu desempenho em um Pentium, Xeon, ou Athlon? ;-) Suporte nativo a mltiplas CPUs, assim processadores como Dual Core, Core Duo, Athlon Duo, Quad Core tem seu poder de processamento integralmente aproveitado, tanto em 32 ou 64 bits. Suporte nativo a dispositivos SATA, PATA, Fiber Channel Suporte nativo a virtualizao, onde o Linux se destaca como plataforma preferida para execuo de mltiplos sistemas operacionais com performance e segurana. 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, da 2.2.x para a 2.4.x e da 2.4.x para a 2.6.x). O GNU/Linux distribuido livremente e licenciado de acordo com os termos da GPL. Acessa corretamente discos formatados pelo DOS, Windows, Novell, OS/2, NTFS, SunOS, Amiga, Atari, Mac, etc. O LINUX NO VULNERVEL A VRUS! Devido a separao de privilgios entre processos 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. 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). Frequentemente so criados exploits que tentam se aproveitar de falhas existentes em sistemas desatualizados e usa-las para causar danos. 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 eciente sistema de atualizao e bem congurado, voc ter 99.9% de sua tranquilidade. 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 intermediria como o WinSock. Em acessos via modem a Internet, a velocidade de transmisso 10% maior. Executa outros sistemas operacionais como Windows, MacOS, DOS ou outro sistema Linux atravs de consagrados sistemas de virtualizao como Xen, vmware, ou emulao como o DOSEMU, QEMU, WINE. Suporte completo e nativo a diversos dispositivos de comunicao via infravermelho, Bluetooth, Firewire, USB. Basta conectar e o seu dispositivo automaticamente reconhecido. Raramente so necessrios drivers externos, exceto no caso de dispositivos muito novos que no tenham o suporte ainda adicionado no sistema. Suporte a rede via rdio amador. Suporte a dispositivos Plug-and-Play. Suporte nativo a pen drivers, dispositivos de armazenamento e cartes de memria. Suporte nativo a dispositivos I2C Integrao com gerenciamento de energia ACPI e APM

Captulo 1. Introduo

Dispositivos de rede Wireless. Tanto com criptograa WEB e WPA PSK Vrios tipos de rewalls avanados de alta qualidade na deteco de trfego indesejvel, dando ao administrador uma excelente ferramenta de proteo e controle de sua rede. Roteamento esttico e dinmico de pacotes. Ponte entre Redes, proxy arp 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 mltiplos computadores. 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. Os sistemas de arquivos usados pelo GNU/Linux (Ext2, Ext3, reiserfs, xfs, jfs) 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 de publicao Web, E-mail, News, etc. com um baixo custo e alta performance. O melhor servidor Web do mercado, o Apache, distribudo gratuitamente junto com a maioria das distribuies Linux. O mesmo acontece com o Sendmail. 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 16 arquiteturas diferentes (Intel, Macintosh, Alpha, Arm, etc.) e diversas outras sub-arquiteturas. Empresas especializadas e consultores especializados no suporte ao sistema espalhados por todo o mundo. Entre muitas outras caractersticas que voc descobrir durante o uso do sistema (alm de poder criar outras, caso seja um administrador avanado ou desenvolvedor). TODOS OS TENS DESCRITOS ACIMA SO VERDADEIROS E TESTADOS PARA QUE TIVESSE PLENA CERTEZA DE SEU FUNCIONAMENTO.

Captulo 1. Introduo

Captulo 2

Explicaes Bsicas
Este captulo traz explicaes sobre os principais componentes existentes no computador e do sistema operacional Linux.

2.1

Monitorando os logs

Os arquivos e diretrios 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. comum programas como o servidor web, e-mail, mensagens instantaneas, rewall, irc, banco de dados, gravarem os arquivos de log em diretrios prprios dentro de /var/log /programa, desta forma evitam misturar seus arquivos com os de log do sistema residentes em /var/log. Acostume-se a olhar constantemente os arquivos de log em seu sistema, isto pode ser importante para encontrar possveis falhas de segurana, tentativa de acesso ao sistema e, principalmente, solucionar problemas (principalmente os mais complicados). Leia Arquivos e daemons de Log on page 75 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 um pouco mais 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 acontece 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

Captulo 2. Explicaes Bsicas

10

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 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, EXT4, 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, cryptoloop, 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.

Captulo 2. Explicaes Bsicas

11

[a-z,1,0] - Faz referncia a intervalo de caracteres de a at z ou 1 ou 0 naquela posio. 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 tivssemos 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 comeam com teste, contenham qualquer 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

Captulo 2. Explicaes Bsicas

12

de curingas ser til ao copiar arquivos, apagar, mover, renomear, e nas mais diversas partes 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, dispositivos for Windows, etc.

3.1

Placa de expanso

um circuito eletrnico encaixado na placa me que tem por objetivo adicionar novas funcionalidades ao computador. Esta placa pode ser uma: placa de som - para fazer o computador emitir sons, msicas, ligar um joystick, etc. Placa de vdeo 3D - Para obter imagens mais rpidas para jogos e ambientes de desktop 3 dimenses Placa de captura - Para assistir televiso/rdio e gravar a programao de TV em seu micro. fax-modem - para enviar/receber fax, conectar-se a internet, 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.

Captulo 3. Hardware

14

3.2

Nomes de dispositivos

Seria terrvel se ao congurar CADA programa que utilize o mouse ou o modem precisssemos nos se referir a ele pela IRQ, I/O, etc. . . para evitar isso so usados os nomes de dispositivos. 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 automaticamente 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. Linux ttyS0 ttyS1 ttyS2 ttyS3 lp0 lp1 /dev/hda1 /dev/hda2 /dev/hdb1 Dispos. DOS COM1 COM2 COM3 COM4 LPT1 LPT2 C: D: * D: *

IRQ 4 3 4 3 7 5 14 14 15

DMA 3(ECP) 3(ECP) -

I/O 0x3F8 0x2F8 0x3E8 0x2E8 0x378 0x278 0x1F0,0x3F6 0x1F0,0x3F6 0x170,0x376

* A designao de letras de unidade do DOS no segue o padro do 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 bem como a congurao do software correspondente para fazer acesso ao hardware. Um sistema bem congurado consiste em cada dispositivo 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.

Captulo 3. Hardware

15

Dispositivos PCI, PCI Express, AMR, CNR possuem congurao automtica de recursos de hardware, podendo apenas ser ligados na mquina para serem reconhecidos pela placa me. Aps isso dever ser feita a congurao do mdulo do kernel para que o hardware funcione corretamente. Os parmetros dos mdulos do kernel usados para congurar dispositivos de hardware so a IRQ, DMA e I/O. Para dispositivos plug and play, como hardwares PCI, basta carregar o mdulo para ter o hardware funcionando.

3.3.1

IRQ - Requisio de Interrupo

Existem dois tipos bsicos de interrupes: as usadas por dispositivos (para a comunicao com a 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 operando 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. No kernel 2.4 e superiores do Linux, a funo APIC (Advanced Programmable Interruption Controller) permite gerenciar de forma avanada mais de 15 interrupes no sistema operacional. 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 hardware: 0 01 02 Timer do Sistema Teclado - Fixa 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. Normalmente usado por /dev/ttyS1 mas seu uso depende dos dispositivos instalados em seu sistema (como fax-modem, placas de rede 8 bits, etc). Normalmente usado por /dev/ttyS0 e quase sempre usada pelo mouse serial a no ser que um mouse PS2 esteja instalado no sistema. - Fixa

03

04

Captulo 3. Hardware

16

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. Controlador de Disquete - Esta interrupo pode ser compartilhada com placas aceleradoras de disquete usadas em tapes (unidades de fita). Primeira porta de impressora. Pessoas tiveram sucesso compartilhando esta porta de impressora com a segunda porta de impressora. Muitas impressoras no usam IRQs. Relgio em tempo real do CMOS - No pode ser usado por nenhum outro dispositivo. Esta uma ponte para IRQ2 e deve ser a ltima IRQ a ser utilizada. No entanto pode ser usada por dispositivos. Interrupo normalmente livre para dispositivos. O controlador USB utiliza essa interrupo quando presente, mas no regra. Interrupo livre para dispositivos Interrupo normalmente livre para dispositivos. O mouse PS/2, quando presente, utiliza esta interrupo. Processador de dados numricos - No pode ser usada ou compartilhada Esta interrupo usada pela primeira controladora de discos rgidos e no pode ser compartilhada. Esta a interrupo usada pela segunda controladora de discos e no pode ser compartilhada. Pode ser usada caso a segunda controladora esteja desativada.

06

07

08

09

10

11 12

13 14

15

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 IRQ ocorriam nesse tipo de hardware acima ocasionando 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 dispositivos (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, PCI Express so projetados para permitir o compartilhamento de inter-

Captulo 3. Hardware

17

rupes. 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) ou usando APIC (se estiver congurado). Prioridade das Interrupes Cada IRQ no sistema tem um nmero que identica a prioridade que ser atendida pelo processador. 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 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 PRI 1 1 2 2 3 (9 4 10 5 11 6 12 7 13 8 14 9 15) 3 4 5 6 7 8 10 11 12 13 14 15 16

Note que a prioridade segue em seqncia atravs da ponte da IRQ 2 para IRQ 9. Os dispositivos 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

A DMA usada para permitir a transferncia de dados entre dispositivos I/O e a memria sem precisar do processador para faz-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 oferece 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.

Captulo 3. Hardware

18

DMA 0 1

Barram. 8/16 bits

2 3

8/16 bits 8/6 bits

4 5

16 bits

6 7

16 bits 16 bits

Uso Usada pelo circuito de refresh da memria DRAM Normalmente usado por placas de som (canal 8 bits), porta paralela ECP, adaptadoras SCSI, placas de rede ou controladora de scanner. Normalmente usado pela controladora de disquetes ou controladoras de tapes. Usado pela porta paralela ECP, placa de som, controladoras de tapes, controladoras SCSI ou controladora de scanner antiga. Usada como ponte para a outra controladora de DMA (0-3) Normalmente usada pela placa de som (canal 16 bits), placas controladoras SCSI, placas de rede ou controladora de scanner. Placa de som (canal 16 bits), controladora de scanner ou placa de rede. 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 controlador 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 aterramento para evitar interferncias de rudos externos).

Conitos de DMA Um canal de DMA no 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 com Scanners paralelos que compartilham a 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 estranhas 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

Captulo 3. Hardware

19

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 transferem grandes quantidades de dados, assim ocupam uma faixa de endereos. Uma 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

3.4

Hardwares congurveis por jumpers, dip-switches, jumperless e Plug-and-Play.


Jumpers

3.4.1

Hardwares congurveis por jumpers (pinos metlicos protegidos por uma capa plstica) tem sua congurao alterada atravs da colocao, retirada ou mudana de posio fsica do pino. Este tipo de hardware, antigamente presente em placas ISA e VESA, no mais usado atualmente devido a congurao Plug and Play de dispositivos PCI, PCI express, etc. 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 necessrio fazer um mapeamento manual da placa, mas para isto voc precisar conhecer detalhadamente a congurao de portas I/O, DMA, IRQ usadas na mquina que ser usada 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,

Captulo 3. Hardware

20

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 apresentam 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 dipswitches no lugar de jumpers. O dip-switches um conjunto de chaves numeradas que podem 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 dispositivo.

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/O e 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 muitas 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 permitem que o usurio possa especicar facilmente qual ser sua IRQ, DMA, I/O. Hardwares PCI possuem congurao Plug-and-Play nativa, registrando suas interrupes, portas e dma na tabela de hardwares PCI do sistema. A diferena em relao ao modo jumperless que toda a congurao do hardware (IRQ, DMA e I/O) feita pelo kernel do Linux, onde ele passa a congurao detectada durante a inicializao do sistema para os mdulos carregados, garantindo o perfeito funcionamento do dispositivos e evitando conitos. Na poca de hardwares ISA e VESA, o programa isapnp era a preferencia para a congurao de placas ISA Plug and Play. Veja a prxima seo para entender como funciona o arquivo de congurao isapnp.conf e assim poder ativar seu dispositivo Plug-and-Play.

Captulo 3. Hardware

21

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 diversas, 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 constantes, mal funcionamento de um ou mais dispositivos e at mesmo, em casos mais graves, a perda de dados. Conitos geralmente ocorriam em placas ISA, VESA onde era necessrio conhecer e usar uma tabela de valores padres para a congurao de perifricos (como a mostrada no inicio desse captulo). Para resolver conitos de hardware necessrio conhecer a congurao de cada dispositivo em seu sistema. Os comandos cat /proc/interrupts, cat /proc/dma e cat /proc/ioports podem ser teis para se vericar as conguraes usadas.

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. 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 encaixe extra no nal. Sua taxa de transferncia pode chegar a 132MB/s.

Captulo 3. Hardware

22

EISA Enhanced Industry Standard Architecture - um barramento mais encontrado 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. PCI Express Peripheral Component Interconnect Express - Identico ao barramento PCI, funcionando nativamente no clock de 64 bits. 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 plstico) 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 som e modem. Placas de som e modem AMR usam o 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 facing page e Hardwares especcos ou For Windows on page 24. 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 detalhes em Placas on-board / off-board on the facing page e Hardwares especcos ou For Windows on page 24.

Captulo 3. Hardware

23

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 controladora 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 controladora embutida conseguem ter um desempenho muito maior do que em placas conectadas externamente, sem causar nenhum tipo de problema. 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 somente 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 128 mais cara que uma de modelo genrico. . . Geralmente dispositivos on-board trazem problemas caso tal dispositivo queime e geralmente colocado um hardware de baixa qualidade para baratear o custo de placas me, que na maioria das vezes tambm oferece grande diculdade para ser congurada no Linux. Outro perifrico que traz problemas e carga para o processador o fax-modem for Windows, HSP, AMR, micromodem, etc. utilizando o processador do sistema para realizar seu trabalho e algumas vezes no trazem nem mesmo o chip UART. Isso resulta em perda de qualidade na conexo e maior consumo telefnico. 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) no tero o desempenho comprometido. 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 sabem

Captulo 3. Hardware

24

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 hardware 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 no passado para o usurio e este hardware pode at mesmo ser mais caro quanto dispositivos 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 removidos, 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. 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 simplesmente no note a carga de trabalho que este hardware pe naquela CPU. No entanto, qualquer sistema operacional de multi-processamento, at mesmo Windows 9X, XP e Vista, 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 documentao 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 listado 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.

Captulo 3. Hardware

25

3.10

Dispositivos especcos para GNU/Linux

Esta seo foi retirada do manual de instalao da Debian GNU/Linux. Existem diversos vendedores, 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 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 licena que acompanha o Windows; voc pode rejeitar a licena e obter um desconto de seu vendedor. Se no estiver comprando um computador com GNU/Linux instalado, ou at mesmo um computador 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 procuram bons 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 funcionamento 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 (normalmente 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

Captulo 3. Hardware

26

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: 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 adicionado. 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 arquivo /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 46.

3.11.2

Congurando uma placa de SOM no Linux

A congurao de dispositivos de audio no Linux simples, bastando carregar o mdulo da placa 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 foi o primeiro padro adotado em sistemas Linux, que tinha como grande limitao a diculdade em usar diversas placas e a impossibilidade dos programas utilizaram ao mesmo tempo a placa de som. O ALSA mais novo, suporta full duplex e outros recursos adicionais, alm de manter a compatibilidade com OSS. O ALSA um padro mais moderno e garante mais performance para a CPU da mquina, principalmente para a exibio de vdeos, etc.

Congurando uma placa de som usando o padro OSS 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. 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:

Captulo 3. Hardware

27

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 21). 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 21) 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 arquivos 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 som como /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, tonalidade 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 inicializao (isso evita que tenha que ajustar o volume toda vez que iniciar o sistema). Caso o aumix aparea na tela, sua placa de som j 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/DVD no 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 Caso tenha um gravador IDE e use um kernel 2.6 ou superior, no necessrio fazer qualquer congurao, pois seu gravador j est pronto para ser usado, sendo acessado atravs de seu dispositivo tradicional (/dev/hdc, /dev/hdd, etc). De qualquer forma, voc poder

Captulo 3. Hardware

28

realizar a congurao da unidade IDE com emulao SCSI, assim como utilizava no kernel 2.4 e inferiores seguindo as instrues abaixo. Para congurar seu gravador de CD/DVD IDE para ser usado no Linux usando o mtodo para o kernel 2.4 e inferiores, 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 determinada 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) automaticamente 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/DVD. 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. 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 next page.

Congurando o suporte a um gravador SCSI Caso tenha um autentico gravador SCSI, no ser preciso fazer qualquer congurao de emulao, 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:

Captulo 3. Hardware

29

Depois * SCSI M SCSI M SCSI

em "SCSI support" marque as opes: support CD-ROM Support 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 wodim e execute o comando: wodim -scanbus para vericar se sua unidade de CD-ROM detectada. Voc dever ver uma linha como: scsibus0: 0,0,0 0,1,0 0,2,0

0) CREATIVE CD-RW RWXXXX 1) * 2) *

1.00 Removable CD-ROM

O que signica que sua unidade foi reconhecida perfeitamente pelo sistema e j pode ser usada para gravao. Note que gravadores IDE nativos, no so listados com esse comando.

3.11.4

Congurando o gerenciamento de energia usando o APM

O APM (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.). 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 next 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

Captulo 3. Hardware

30

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). Quanto mais nova a verso do kernel, maiores as chances do seu hardware ser suportado plenamente pelo ACPI, principalmente no caso de notebooks. Para compilar estaticamente, 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 carregueos. 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 em run-level 0, fechando todos os processos e desligando sua mquina. O suporte a ACPI pode ser desativado de 3 formas: Removendo seu suporte do kernel, passando 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 daemon acpid do seu sistema.

3.11.6

Ativando WakeUP on Lan

Algumas placas me ATX possuem suporte a este interessante recurso, que permite sua mquina ser ligada atravs de uma rede. Isto feito enviando-se uma seqncia especial de pacotes diretamente para o MAC (endereo fsico) da placa de rede usando um programa especial.

Captulo 3. Hardware

31

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 menos 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. Depois 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 microcomputador (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 eltrica, 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 corrente eltrica) e a corrente acumulada poder queimar componentes internos sensveis (placa me, HD, memrias, placas expansoras). 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 em cada 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 the following 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. Com a estaca enterrada, prenda um cabo eltrico em sua extremidade.

Captulo 3. Hardware

32

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 extremidade 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. Ligue 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 eletricidade (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

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

Captulo 3. Hardware

33

Terra

Fase

+-----------+ +-----------+ ---+----(_) | Terra ---+----(_) | | _ _ | | _ _ | | _| | | |_ | | _| | | |_ | ---+(_ | | _)+--- 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 choque, 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 um aterramento (veja Aterramento on page 31) 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 fazendo 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 qualquer placa e porque aquele seu amigo disse que a placa dele queimou depois que resolveu limpar seus contatos.

3.15
3.15.1

Melhoria de performance
Particionamento

Para um melhor desempenho, os dados que so solicitados constantemente devero ser armazenados 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

Captulo 3. Hardware

34

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 R S U /boot Raz / Swap /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.

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

Captulo 3. Hardware

35

simultnea de setores, hibernao, etc. Por padro as transferncias de dados entre a controladora do HD (a plaquinha que ca embaixo 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 I/O support unmaskirq using_dma keepsettings nowerr readonly readahead

= = = = = = = =

0 0 0 1 0 0 0 8

(off) (16-bit) (off) (off) (off) (off) (off) (on)

Imediatamente podemos modicar os seguintes campos para melhorar sensivelmente o desempenho 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 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 sincronismo (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 aceitam esta operao. Esta usada em conjunto com a opo -X oferece um excelente ganho de performance pelo uso correto de sua controladora. A ativao de dma tambm

Captulo 3. Hardware

36

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 transferncia 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 SUPORTA, 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 interrupes 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 placas 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 partio com a opo ro no /etc/fstab preferida. readahead Modicado com -a[num]. Congura o nmero de blocos que sero lidos antecipadamente 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 padro) 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 selecionado 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 utilize o comando hdparm -t /dev/hd?, para fazer testes com o uso de cache, use o comando hdparm -T /dev/hd?.

Captulo 3. Hardware

37

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 par # 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 transfern # 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 um arquivo ou diretrio da mquina Linux a data/hora atualizada. Em mquinas normais isto OK mas em servidores onde o acesso a arquivos constante (como no diretrio /var/spool em servidores de e-mail ou /usr/ em servidores diskless) recomendvel 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: /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 principalmente 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.

Captulo 3. Hardware

38

3.16

Perifricos SATA

Hardwares SATA (Serial ATA) representam a prxima gerao em tecnologia usada para a transferncia de dados em alta velocidade a baixo custo. Hoje est se tornando o padro de indstria a utilizao de dispositivos SATA em micros em substituio a dispositivos IDE. Dispositivos IDE tradicionais so chamados de PATA (parallel ATA, ou ATA paralelo). Estes dispositivos so classicados em 2 tipos: SATA I - Esta se tornando alternativa a discos IDE (PATA). Possui taxa de transferncia de at 150Mb/s SATA II - Esta se tornando alternativa a discos IDE (PATA). Possui taxa de transferncia de at 300Mb/s Um cabo SATA tende a ter o mesmo comprimento de um cabo IDE, raramente excedendo 50 centimetros.

3.17

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 transferncia 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. SATA I - Esta se tornando alternativa a discos IDE (PATA). Possui taxa de transferncia de at 150Mb/s SATA II - Esta se tornando alternativa a discos IDE (PATA). Possui taxa de transferncia de at 300Mb/s 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 setup 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

Captulo 3. Hardware

39

uso muito recomendado em servidores 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.

3.17.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

40

41

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, roteamento. 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 usurios. Os outros usurios podero acessar o disco como se estivesse instalado na prpria mquina). Tambm chamado de servidor de arquivos. Compartilhamento de uma impressora com outros 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 Com os 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 segurana do sistema, rewalls, pontes, etc. Entre outras ilimitadas possibilidades que dependem do conhecimento do indivduo no ambiente GNU/Linux, j que ele permite muita exibilidade para fazer qualquer coisa funcionar em rede.

Captulo 4. Rede

42

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. Existem vrios 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 endereos 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 compartilhados 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 Mscara da Rede Poro da Rede Poro do Host ----------------Endereo da Rede Endereo Broadcast ------------------------------192.168.110.23 255.255.255.0 192.168.110. .23 --------------192.168.110.0 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

43

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 computador na rede pode recebe-las simultaneamente. Existe dois padres normalmente usados para especicar o endereo de broadcast. O mais amplamente 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 conveno 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 alguns 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 (Forma octal) Mscara (Forma 32 bits) Nmero Mximo de Mquinas

Classe A: /8 /255.0.0.0

16,777,215

Captulo 4. Rede

44

Classe B: /16 /255.255.0.0 /17 /255.255.128.0 /18 /255.255.192.0 /19 /255.255.224.0 /20 /255.255.240.0 /21 /255.255.248.0 /22 /255.255.252.0 /23 /255.255.254.0 Classe C /24 /255.255.255.0 /25 /255.255.255.128 /26 /255.255.255.192 /27 /255.255.255.224 /28 /255.255.255.240 /29 /255.255.255.248 /30 /255.255.255.252 /32 /255.255.255.255

65,535 32,767 16,383 8,191 4,095 2,047 1,023 511

255 127 63 31 15 7 3 1

Qualquer outra mscara fora desta tabela (principalmente para a classe A), dever ser redimensionada com uma calculadora de IP para chegar a um nmero 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

45

+---------------------------------------------------------+ | 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 existem 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

46

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 com as interfaces locais, tendo problemas at mesmo com o 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 com outros computadores, alm de 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

47

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 roteador 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 interface 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 contm 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 O processo de roteamento muito simples: um datagrama (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 computador 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 42?)) 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 argumento. 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 roteamento, utiliza-se o gateway padro da rede. Atravs do gateway padro possvel especicar um

Captulo 4. Rede

48

computador (normalmente outro gateway) que os pacotes de rede sero enviados caso o endereo 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 resposta 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 programa) que converte automaticamente os nomes em endereos IP ou atravs de servidores DNS que fazem a busca em um banco de dados na Internet e retornam o 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

49

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 subdomnio. Um domnio principal um domnio que no um sub-domnio. Os domnios principais 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 regra 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 departamental 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 Internet 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

50

/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 computador, 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. hostnames sem o domnio) maths.wu.edu.au e que se o computador no for encontrado naquele 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

51

/etc/hosts O arquivo /etc/hosts faz o relacionamento entre um nome de computador e endereo IP local. 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 um servidor de nomes para obter um endereo 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 192.168.0.1

localhost loopback 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 aplicativos (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 localnet amprnet 127.0.0.0 192.168.1.0 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

52

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 em sua 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 utilizadas o /etc/services (para detalhes sobre o seu formato, veja a /etc/services on page 61).

4.7.1

Servios iniciados como Daemons de rede

Servios de rede iniciados como daemons cam residente 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

53

arquivo /etc/inetd.conf. Um daemon chamado inetd l as conguraes deste arquivo e permanece residente na memria, 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 em particular. 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 permitidos so: stream, dgram, raw, rdm, ou seqpacket. Isto um pouco 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 apropriado 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 servidores 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 . opcional e dene a quantidade mxima de vezes que o servio poder ser executado durante 1 minuto. Se o servio for executado mais vezes do que este valor, ele ser

Captulo 4. Rede

54

automaticamente 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 executado. 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 servidor quando for iniciado. Uma dica que pode aumentar signicativamente a segurana de seu sistema comentar (colocar 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> # #: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 #:PADRES: Estes so servios padres.

Captulo 4. Rede

55

#:BSD: Shell, login, exec e #shell stream tcp #login stream tcp #exec stream tcp talk dgram udp ntalk dgram udp

talk so protocolos BSD. nowait root /usr/sbin/tcpd /usr/sbin/in.rshd nowait root /usr/sbin/tcpd /usr/sbin/in.rlog nowait root /usr/sbin/tcpd /usr/sbin/in.rexe wait.10 nobody.tty /usr/sbin/tcpd /usr/sbin/i wait.10 nobody.tty /usr/sbin/tcpd /usr/sbin/i

#: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 # 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 automaticamente. 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 linhas que contm servios que no utiliza. Bons candidatos so servios tais como: shell, login, exec, uucp, ftp e servios de informao 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

56

# /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 apropriada (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

57

# /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 incluem: gw.vk2ktj.ampr.org para conferir com um endereo de computador especco, .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, alguns 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 permite 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 comando para tentar identicar quem esta conectado pelo host remoto, ou gerar uma mensagem 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 um servio 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 daemon 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

58

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 servios e permitindo computadores que voc deseja no arquivo /etc/hosts.allow a congurao mais segura. Qualquer modicao no arquivo /etc/hosts.deny entrar em ao aps reiniciar o daemon 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 usurios 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 maquina2.dominio.com.br maquina4.dominio.com.br maquina1.dominio.com.br Usurio usuario2 usuario2 +@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

59

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 simulando 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 algum desejar conversar) e a terceira somente permite enviar dados do finger para computadores dentro de nossa rede privada (exceto 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: server: matched: access: address 127.0.0.1 process in.fingerd /etc/hosts.allow line 1 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

60

client: server: matched: access:

address 192.168.1.29 process in.fingerd /etc/hosts.allow line 3 granted

O acesso foi permitido atravs da linha 3 do hosts.allow. Agora tcpdmatch in.ngerd 192.168.1.29: client: server: matched: access: address 192.168.1.30 process in.fingerd /etc/hosts.deny line 1 denied

O que aconteceu? como a linha 2 do hosts.allow permite o acesso a todos os computadores 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: server: matched: access: address www.debian.org process in.talkd /etc/hosts.allow line 2 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 determinados 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 controlar 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 (protocolos, roteamento, interfaces, endereamento, masquerade, etc), da rede local, e sistema em

Captulo 4. Rede

61

geral do Administrador de redes, a segurana de sua rede e seus dados dependem da escolha 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 simplesmente 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
4.9.1

Outros arquivos de congurao relacionados com a rede


/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 tratado 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 permitilos especicar protocolos por nomes em seus programas e tambm por alguns programas tal

Captulo 4. Rede

62

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 implementao pelos desenvolvedores. Um padro TCP o conjunto de regras que devem ser seguidas para garantir a homogeneidade 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 mquinas, 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 condies 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 camadas.

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

63

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 (principalmente 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 adicionar 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

64

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 inet end.: 192.168.1.1 Bcast:192.168.1.255 Masc:255.255.255 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: inet end.: 192.168.1.10 Bcast:192.168.1.255 Masc:255.255.25 UP BROADCASTRUNNING MULTICAST MTU:1500 Mtrica:1 IRQ:10 Endereo de E/S:0x300 Note que o MAC Address 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 com o comando route (veja Congurando uma rota no Linux on page 47). 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 idntica 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 mquina.

Captulo 5. Conguraes especiais de Rede

65

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 62). 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

66

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 vlidos 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. O sistema poder demorar um pouco 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 interfaces 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 funcionalidades 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

67

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 (eth2, eth3 e eth4 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 executar 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] segundos. 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

68

brctl brctl brctl brctl

addif br0 eth1 setportprio br0 eth0 50 setportprio br0 eth1 80 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 interface 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 tambm a 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:0 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 mquinas 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 identicada 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 aparentemente 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

69

til para fazer instalao de Linux em mquinas sem CD-ROM. No momento da instalao 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 Paralelo on the following page. Voc poder fazer qualquer coisa que faria em uma rede normal (incluindo MASQUERADING, 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 cmeras. 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 recomendvel 2,5 metros. Quando toda a banda do cabo utilizada, algumas CPUs se tornam extremamente 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 conexes 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 ativada 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, precisamos 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 com a outra usando o comando ping 192.168.1.x. Se ocorrer um erro de timeout na transmisso, leia atentamente os passos 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

70

O nmero mximo de interfaces plip? est limitado ao nmero mximo suportado pela mquina. 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 namorada 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

71

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 68. O mtodo que irei descrever bastante simples e utiliza o slattach e o protocolo slip para comunicao 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 disponvel. 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 console, 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 primeira 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 suporte 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

72

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, precisamos 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 com o 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 com a 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 mquina. 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 LapLink 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 aproveitar 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

73

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

74

75

Captulo 6

Arquivos e daemons de Log


A atividade dos programas so registradas em arquivos localizados em /var/log . Estes arquivos 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 campos. Enm, muitos detalhes teis ao administrador tanto para acompanhar o funcionamento do seu sistema, comportamento dos programas ou ajudar na soluo e preveno de problemas. 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 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 81.

Captulo 6. Arquivos e daemons de Log

76

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, incluindo 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 um servidor 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 necessria 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

Captulo 6. Arquivos e daemons de Log

77

A facilidade e nvel so separadas por um . e contm parmetros que denem o que ser registrado nos arquivos de log do sistema: facilidade - usada para especicar que tipo de programa est enviando a mensagem. Os seguintes nveis so permitidos (em ordem alfabtica): auth - Mensagens de segurana/autorizao ( recomendvel usar authpriv ao invs 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 sistema (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 ;.

Captulo 6. Arquivos e daemons de Log

78

OBS1: Sempre use TABS ao invs de espaos para separar os parmetros do syslog.conf. 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.* *.*;auth,authpriv.none cron.* daemon.* kern.* lpr.* mail.* user.* uucp.* /var/log/auth.log -/var/log/syslog /var/log/cron.log -/var/log/daemon.log -/var/log/kern.log -/var/log/lpr.log /var/log/mail.log -/var/log/user.log -/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

Captulo 6. Arquivos e daemons de Log

79

# exemplo, "auth,authpriv.none") e ";" para especificar mais de uma # facilidade.nvel que ser gravada naquele arquivo. # 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. Ist # 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;\ # /dev/tty8 *.=notice;*.=warn # 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;\ |/dev/xconsole *.=notice;*.=warn # 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

80

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 com que 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. recomendvel 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 76. O valor padro prioridade.nvel user.notice

Captulo 6. Arquivos e daemons de Log

81

-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 76 Exemplos: logger -i -t focalinux Teste teste teste, /tmp/mensagem -p security.emerg logger -i -f

6.4

Programas teis para monitorao e gerenciamento de arquivos de logs


logcheck

6.4.1

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 ocorreram 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 daemons 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 expresses 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. Opcionalmente 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 proporciona 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

82

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 arq # 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 arqui # 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

83

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/mir # a falta desses arquivos no precisa ser notificada ao administrador (missing # mesmo assim o parmetro "nomail" evitar isto de qualquer forma. Os logs # rodados no sero compactados (nocompress) e sero mantidas as ltimas 7 cp # dos logs. /var/log/mirror/* { montly nomail missingok nocompress

Captulo 6. Arquivos e daemons de Log

84

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 denies 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 um loop 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 aceitar 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 servio usando ./sysklogd restart. Adicionalmente podero ser usadas as opes -l mquina ( um L minsculo no uma letra I) para registrar o nome FQDN da mquina e -h para redirecionar conexes a outros servidores de logs (veja syslogd on page 76). Congurando mquinas cliente Modique o arquivo /etc/syslogd.conf (veja Arquivo de congurao syslog.conf on page 76 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

Captulo 6. Arquivos e daemons de Log

85

user.* -/var/log/user.log 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: Em uma grande rede, recomendvel congurar um computador dedicado como servidor 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

86

87

Captulo 7

A distribuio Debian GNU/Linux


Este captulo traz algumas caractersticas sobre a distribuio Debian GNU/Linux, programas de congurao e particularidades. A maioria dos trechos aqui descritos, tambm se aplicam a distribuies baseadas na Debian, como o Kurumin e o Ubuntu. 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 diversos esto disponveis em ftp://ftp.debian.org//debian/dists/stable/main/ binary-i386.

7.2

Programas de congurao

aptitude - Seleciona pacote para instalao/desinstalao pppconfig - Congura o computador para se conectar a Internet usando conexo discada. Aps isto, use pon para se conectar a Internet, poff para se desconectar e plog para monitorar a conexo. pppoeconf - Congura o computador para conectar a internet usando ADSL

Captulo 7. A distribuio Debian GNU/Linux

88

modconf - Permite selecionar os mdulos que sero automaticamente carregados na inicializao do sistema. Se requerido pelos mdulos os parmetros I/O, IRQ e DMA tambm podem ser especicados. shadowconfig - Permite ativar ou desativar o suporte a senhas ocultas (shadow password). Com as senhas ocultas ativadas, as senhas criptografadas dos usurios e grupos so armazenadas nos arquivos shadow e gshadow respectivamente, que somente podem 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 usurios 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 conta com o sistema de congurao baseado no dpkg-reconfigure que permite congurar de forma fcil e rpida aspecto de pacotes: dpkg-reconfigure xserver-xorg.

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 sim atravs 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 anteriormente (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 seguintes comandos: cd /etc/init.d ./networking restart

Captulo 7. A distribuio Debian GNU/Linux

89

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 arquivos 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. O que 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 executados 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

90

S89cron S99xdm Note que os arquivos que iniciam com o mesmo nmero (S20*) so executados alfabeticamente. 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 sistema 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 vericar 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

91

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 relatado. 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. A distribuio Etch (4.0) completa, com 18830 pacotes ocupa em torno de 10 GB. 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

92

93

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 utilizado 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 consoles 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 96). Todas as variveis especicadas 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 ambiente. 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

94

pode usar o comando locale para listar as variveis de localizao do sistema e seus respectivos 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 identicada 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 arquivos potfiles (arquivos com a extenso .po ou .pot e so gerados catlogos de mensagens .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 em seu 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 4.0 Acrescente a linha pt_BR ISO-8859-1 no arquivo /etc/locale.gen, rode o utilitrio locale-gen para gerar os locales. Agora acrescente as variveis de localizao no arquivo /etc/locale.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 4.0. 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 completo 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). export LANG=pt_BR:pt_PT:es_ES:C - Usa o idioma Portugus do Brasil como padro, caso no esteja disponvel usa o Portugus de Portugal, se no estiver disponvel usa o Espanhol e por m o Ingls. LANG=es_ES ls --help - Executa apenas o comando ls --help usando o idioma

Captulo 8. Personalizao do Sistema

95

es_ES (sem alterar o locale do sistema). 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 following page e Arquivo .bashrc on the next page.

8.4

Arquivo /etc/profile

Este arquivo contm comandos que so executados para todos os usurios do sistema no momento 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 interrompe 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, 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

Captulo 8. Personalizao do Sistema

96

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 LC_ALL=pt_BR LC_MESSAGES=pt_BR

Captulo 8. Personalizao do Sistema

97

8.9

Diretrio /etc/skel

Este diretrio contm os 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

98

99

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 com o suporte a impressora USB e/ou 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 paralela identicada como lp0,lp1,lp2 no diretrio /dev, caso a impressora seja USB, o dispositivo ser o mesmo, mas estar disponvel no diretrio /dev/usb. Os dispositivos lp0,lp1elp2 correspondem 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/usb/lp0, voc pode usar os seguintes comandos: cat trabalho.txt >/dev/usb/lp0 - Direciona a sada do comando cat para a impressora USB conectada em lp0. cat <trabalho.txt >/dev/usb/lp0. Faz a mesma coisa que o acima. cat -n trabalho.txt >/dev/usb/lp0 - Numera as linhas durante a impresso. head -n 30 trabalho.txt >/dev/usb/lp0 - Imprime as 30 linhas iniciais do arquivo.

Captulo 9. Impresso

100

cat trabalho.txt|tee /dev/usb/lp0 - Mostra o contedo do cat na tela e envia tambm para a impressora USB. Os mtodos acima servem somente para imprimir em modo texto (letras, nmeros e caracteres semi-grcos). OBS: Note que a impressora somente imprimir diretamente a partir da porta, caso ela seja uma impressora com rmware interna (impressora inteligente). Algumas impressoras mais recentes (principalmente os modelos mais baratos) somente imprimem caso estejam conguradas com o respectivo driver (Win Printers ou impressoras via software), e nunca aceitaro o comando diretamente para a porta de impresso. Para Win Printers, a melhor alternativa de congurao de funcionamento ser atravs do CUPS (Common Unix Print System).

9.3

Imprimindo via spool

A impresso via spool (la de impresso) tem por objetivo liberar logo o programa do servio que est fazendo a impresso deixando 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 temporrio (normalmente localizado em /var/spool/lpd) que ser colocado em la para a impresso (um trabalho ser impresso aps o outro, em seqncia). O arquivo 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.

Captulo 9. Impresso

101

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 impressora 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 Debian, use o programa modconf para congurar os valores permanentemente para o mdulo 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 com sua distribuio Linux) e suas dependncias. A distribuio Debian vem com vrios exemplos Pos Script no diretrio /usr/share/doc/gs/example que so teis para o aprendizado e testes com o Ghost Script. Hora da diverso:

Captulo 9. Impresso

102

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 Monocromtico) . 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 desenho de um tigre e (talvez) letras do alfabeto. Se o comando gs alphabet.ps mostrou somente uma tela em branco, voc se esqueceu de instalar as fontes do Ghost Script (esto localizadas no pacote gsfonts na distribuio Debian). Para imprimir o arquivo alphabet.ps use o comando: gs -q -dSAFER -dNOPAUSE -sDEVICE=epson -r240x72 -sPAPERSIZE=legal -sOut alphabet.ps O arquivo alphabet.ps deve ser impresso. Caso aparecerem mensagens como Error: /invalidfont in findfont no lugar das letras, voc se esqueceu de instalar ou congurar 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 mudana 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 formato de arquivo diferente (como pcxmono, bmp256) para que o arquivo .ps seja convertido para o formato designado. Para detalhes sobre os dispositivos disponveis 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, stcolor 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 Vertical. 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 medidas. -sOutputFile=dispositivo - Dispositivo que receber a sada de processamento do gs. Voc pode especicar * arquivo.epson - Nome do arquivo que receber todo o resultado do processamento. O arquivo.epson ter toda a impresso codicada no formato

Captulo 9. Impresso

103

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 impressos 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 deixar a impresso mais rpida. Se voc curioso ou no esta satisfeito com as 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 impresso (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,

Captulo 9. Impresso

104

executar o Ghost Script e retornar o resultado do processamento para o daemon de impresso. 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 (lembrese 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 No tenho nenhum contrato de divulgao com a epson :-) estou usando esta marca de impressora 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 -sOutputF 0 \004%! filter /usr/bin/gs -q -dSAFER -dNOPAUSE -r120x72 -sDEVICE=epson -sOut

# PDF 0 %PDF fpipe /usr/bin/gs -q -dSAFER -dNOPAUSE -r120x72 -sDEVICE=epson -sOutput # TeX DVI 0 \367\002 fpipe /usr/bin/dvips -X 120 # compressd data 0 \037\235 pipe /bin/gzip

-Y 72

-R -q -f

-cdq

Captulo 9. Impresso

105

# 0 0 0 0

packed, gzipped, frozen and SCO LZH data \037\036 pipe /bin/gzip -cdq \037\213 pipe /bin/gzip -cdq \037\236 pipe /bin/gzip -cdq \037\240 pipe /bin/gzip -cdq -cdq

0 BZh pipe /usr/bin/bzip2 # 0 0 0 0 0

troff documents .\?\?\040 fpipe /usr/bin/grog -Tps $FILE .\\\" fpipe /usr/bin/grog -Tps $FILE \\\" fpipe /usr/bin/grog -Tps $FILE .\\\" fpipe /usr/bin/grog -Tps $FILE \\\" fpipe /usr/bin/grog -Tps $FILE

Voc deve ter notado que para cada tipo de arquivo existe o respectivo programa que executado, 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 arquivo /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.

Captulo 9. Impresso

106

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 diretamente ao daemon lpd na na porta 515 (a mquina deve estar congurada para aceitar conexes, veja Dando permisso para impreso remota via lpd/lprng on the preceding page). Para enviar o arquivo impr.meudominio.org: listagem.txt para a impressora hp no servidor

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.

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 enviar 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 remota, 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:\

Captulo 9. Impresso

107

: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 opo -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.

Captulo 9. Impresso

108

109

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 passagem 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 exibilidade 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 (masquerading, source nat, destination nat), redirecionamento de pacotes, marcao de pacotes, modicar a prioridade de pacotes que chegam/saem do seu sistema, contagem de bytes, dividir 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 dependem de sua imaginao, pois ele garante uma grande exibilidade na manipulao das regras de acesso ao sistema, precisando

Captulo 10. Firewall iptables

110

apenas conhecer 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 um rewall que tem possibilidades de gerenciar tanto a segurana em mquinas 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) em busca de mudanas que alterem o 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 Junho/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

111

Tratamento de trfego dividido em chains (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 Habilitando o suporte ao iptables no kernel on page 115. O requerimento mnimo de memria necessria para a execuo do iptables o mesmo do kernel 2.4 (4MB). Dependendo do trfego 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

112

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 O pacote iptables contm o 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 suporte 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 removido 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 115. 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 tomar 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 contedo 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

113

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 parmetros do pacote. O rewall 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 autenticao em texto plano e potencialmente inseguros como rlogin, telnet, ftp, NFS, DNS, LDAP, SMTP RCP, X-Window so servios que devem ser ter acesso garantido somente para mquinas/redes que voc cona. Estes servios podem no ser s usados para tentativa de acesso ao seu sistema, mas tambm como 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 impedido. 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 cpia 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 251) 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 balancear 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 implementao, prazo de desenvolvimento e tempo de maturidade do cdigo para implementao. Existem 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 segurana de sua rede.

Captulo 10. Firewall iptables

114

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 origem/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 determinada 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 138). OUTPUT - Consultado quando os pacotes gerados localmente precisam ser modicados antes de serem roteados. Este chain somente consultado para conexes que se originam de IPs de interfaces locais.

Captulo 10. Firewall iptables

115

POSTROUTING - Consultado quando os pacotes precisam ser modicados aps o tratamento de roteamento. o chain ideal para realizao de SNAT e IP Masquerading (Fazendo SNAT on page 136). 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 139 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 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

116

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 cdigos 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 ltering/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 contrrio 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 135 ou Fazendo SNAT on page 136. Um exemplo prtico de congurao de Masquerading deste tipo encontrado em Conectando sua rede interna a Internet on page 156. Aps congurar o masquerading, voc s precisar especicar o endereo IP da mquina masquerading (servidor) como Gateway da rede. No Windows 9x/NT/2000 isto feito no Painel de Controle/Rede/Propriedades de Tcp/IP. No Linux pode ser feito com route add default gw IP_do_Servidor.

Captulo 10. Firewall iptables

117

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) depender das regras seguintes. As opes passadas ao iptables usadas para manipular os chains so SEMPRE em maisculas. 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 130). 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

118

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 114 para detalhes. chain Um dos chains disponveis na tabela acima (veja O que so tabelas? on page 114) ou criado pelo usurio (Criando um novo chain - N on page 120). 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 resoluo DNS e consulta ao /etc/services. A resoluo de nomes pode tomar muito tempo dependendo da quantidade de regras que suas tabelas possuem e 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 DROP all -- anywhere

destination 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 DROP all -- 0.0.0.0/0

destination 127.0.0.1

#iptables -L INPUT -n --line-numbers

Captulo 10. Firewall iptables

119

Chain INPUT (policy ACCEPT) num target prot opt source 1 DROP all -- 0.0.0.0/0

destination 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 2 194 DROP icmp -- * 0.0.0.0/0 * Os campos assim possuem o seguinte signicado: Chain INPUT Nome do chain listado (policy ACCEPT 78 packets, 5820 bytes) poltica padro do chain (veja Especicando a poltica padro de um chain - P on page 123). pkts Quantidade de pacotes que atravessaram a regra (veja Zerando contador de bytes dos chains - Z on page 123). bytes Quantidade de bytes que atravessaram a regra. Pode ser referenciado com K (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 130 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 126 para detalhes. opt Opes extras passadas a regra. Normalmente ! (veja Especicando uma exceo on page 129) ou f (veja Especicando fragmentos on page 129). in Interface de entrada (de onde os dados chegam). Veja Especicando a interface de origem/destino on page 125. out Interface de sada (para onde os dados vo). Veja Especicando a interface de origem/destino on page 125. source Endereo de origem. Veja Especicando um endereo de origem/destino on page 124. destination Endereo de destino. Veja Especicando um endereo de origem/destino on page 124. 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 REJECT naquela regra (veja Alvo REJECT on page 130).

destinatio 127.0.0.1

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) podemos 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

120

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 individuais 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 causar 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

121

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 consultar as seguintes regras: INPUT ---------------------------| Regra1: -s 192.168.1.15 | |--------------------------| | Regra2: -s 192.168.1.1 | |--------------------------| | Regra3: -j DROP | ---------------------------internet ----------------------------| Regra1: -s 200.200.200.200| |---------------------------| | Regra2: -d 192.168.1.1 | -----------------------------

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 confe | Regra4: -j DROP | com o endereo de origem 200.200.200.200 \---------------------------/ o pacote bloqueado.

Se uma mquina com o endereo de origem 200.200.200.201 tentar acessar a mqui ento as regra consultadas sero as seguintes:

O pacote tem o endereo de origem

Captulo 10. Firewall iptables

122

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 algum motivo precisar renomear um chain 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

123

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 denidos 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 114. 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 pacotes. 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 a poltica padro de um chain - P

A poltica padro determina o que acontecer com um pacote quando ele chegar ao nal das regras contidas em um chain. A poltica padro do iptables ACCEPT mas isto pode ser alterado com o comando:

Captulo 10. Firewall iptables

124

iptables [-t tabela] [-P chain] [ACCEPT/DROP ] Onde: tabela Tabela que contm o chain que desejamos modicar a poltica padro. chain Dene o chain que ter a poltica modicada. 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 conferir (usado em regras restritivas). A poltica padro de um chain mostrada com o comando iptables -L: # iptables -L INPUT Chain INPUT (policy ACCEPT) target prot opt source DROP icmp -- anywhere

destination localhost

No exemplo acima, a poltica padro de INPUT ACCEPT (policy ACCEPT), o que signica que qualquer pacote que no seja rejeitado pela regra do chain, ser aceito. Para alterar a poltica padro deste chain usamos o comando: iptables -t filter -P INPUT DROP NOTA: As polticas de acesso PERMISSIVASS (ACCEPT) normalmente so usadas em conjunto com regras restritivas no chain correspondentes (tudo bloqueado e o que sobrar liberado) e polticas RESTRITIVAS (DROP) so usadas em conjunto com regras permissivas no chain correspondente (tudo liberado e o que sobrar bloqueado pela poltica padro).

10.3
10.3.1

Outras opes do iptables


Especicando um endereo de origem/destino

As opes -s (ou src/source)e -d (ou dst/destination) servem para especicar endereos 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

125

# 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 origem/destino de pacotes. Nem todos as chains aceitam as interfaces de origem/destino simultaneamente, 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

126

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 especicados 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 devem ser especicadas aps o protocolo e podem ser 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 destino. 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

127

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 especicar diversas regras que envolvam o tratamento de portas diferentes, recomendo da uma olhada em Especicando mltiplas portas de origem/destino on page 143, 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+ A regra acima rejeitar mensagens ICMP do tipo time-exceeded (tempo de requisio excedido) que venham do endereo 200.123.123.10 atravs da interface ppp+. Alguns tipos de mensagens ICMP so classicados por categoria (como o prprio timeexceeded), caso a categoria time-exceeded seja especicada, todas as mensagens daquela categoria (como ttl-zero-during-transit, ttl-zero-during-reassembly) conferiro na regra especicada.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

128

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 srios 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 lentamente.

Especicando pacotes syn Pacotes syn so usados para iniciarem uma 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 congurao, 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 tornarem ativas (usando a opo pre-up comando_rewall no arquivo de congurao /etc /network/interfaces em sistemas Debian.

Captulo 10. Firewall iptables

129

10.3.4

Especicando fragmentos

A opo -f (ou fragment) permite especicar regras que conram com fragmentos. Fragmentos 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 possuem alguns 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 enviados 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 remontados 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

130

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), redirecionar 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 na poltica padro das regras do rewall (veja Especicando a poltica padro de um chain - P on page 123). 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 na poltica padro das regras do rewall (veja Especicando a poltica padro de um chain - P on page 123). 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 hostunreachable (ICMP) retornada para a mquina de origem. Pode ser usado como alvo somente nos chains da tabela (no como poltica 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-portunreachable 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

131

OBS: REJECT pode ser usado somente como alvo na tabela lter e no possvel especica-lo como poltica padro do chain lter (como acontecia no ipchains. Uma forma alternativa 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 a poltica 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 passagem de pacotes no syslog do sistema. um alvo 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 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 a poltica padro do seu rewall for restritiva (-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: 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

132

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 139 para mais detalhes. PREC=0x00 Prioridade do cabealho TOS (Precedncia). Veja a seo Especicando o tipo de servio on page 139 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 fragmentos 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 opo, 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 142). 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 141.

# Complementando o exemplo anterior: # Para registrar o bloqueio de pacotes vindos de 200.200.200.1 pela interface iptables -A INPUT -s 200.200.200.1 -i ppp+ -j LOG --log-prefix "FIREWALL: Derr

Captulo 10. Firewall iptables

133

# 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:4 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 podem servir 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 relao 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 tornarem mais 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-) 2-) 3-) 4-) 5-) 6-) 7-) 8-) iptables iptables iptables iptables iptables iptables iptables iptables -t -t -t -t -t -t -t -t filter filter filter filter filter filter filter filter -A -j -N -A -A -A -A -A INPUT -i ACCEPT internet internet internet internet internet internet ppp0 -j internet

-s -p -p -p -p

www.debian.org tcp --dport 21 tcp --dport 23 tcp --dport 25 tcp --dport 80

-p -j -j -j -j

tcp --dport 80 -j RETU DROP DROP DROP DROP

Captulo 10. Firewall iptables

134

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 necessrio 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. O iptables-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 roteamento da mquina Linux. Existem 3 chains na tabela nat: PREROUTING, OUTPUT e POSTROUTING (veja O que so tabelas? on page 114 para maiores detalhes).

Captulo 10. Firewall iptables

135

A traduo de endereos tem inmeras utilidades, uma delas o Masquerading, onde mquinas de uma rede interna podem acessar a Internet atravs de uma mquina Linux, redirecionamento 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 this page ou Fazendo IP Masquerading on page 137). Voc tem uma conexo que lhe oferece um endereo IP permanente (ADSL, por exemplo) ento o SNAT o que precisa (veja Fazendo SNAT on the following 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 120 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 necessrio especicar a opo -t nat.

10.4.2

Fazendo IP masquerading (para os apressados)

Voc precisar de um kernel com suporte ao iptables (veja Habilitando o suporte ao iptables no kernel on page 115 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 congurados para usar o endereo IP do servidor Linux como gateway. recomendvel instalar um servidor proxy e DNS na mquina Linux para acelerar o desempenho das requisies/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 139).

Captulo 10. Firewall iptables

136

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 fragmentos 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 fazer 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 mquina 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 intermitentes como PPP, veja Fazendo IP Masquerading on the facing 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 operao de SNAT realizada atravs do chain POSTROUTING:

# Modifica o endereo IP dos pacotes vindos da mquina 192.168.1.2 da rede int # que tem como destino a interface eth1 para 200.200.217.40 (que o nosso end # IP da interface ligada a Internet). iptables -t nat -A POSTROUTING -s 192.168.1.2 -o eth1 -j SNAT --to 200.200.217 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 operao 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 comando echo 1 >/proc/sys/net/ipv4/ip_forward para habilitar o suporte a redirecionamento 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. Modica o endereo IP de origem de todas as mquinas da rede 192.168.1.0/24 que tem o destino a interface eth0 para 200.241.200.40 a 200.241.200.50. O endereo IP selecionado escolhido de acordo com o ltimo IP alocado.

Captulo 10. Firewall iptables

137

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 200.200. 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. 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 preceding 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 pacotes no kernel.

Captulo 10. Firewall iptables

138

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 interf # para 192.168.1.2. iptables -t nat -A PREROUTING -s 200.200.217.40 -i eth0 -j DNAT --to 192.168.1 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.2 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.2 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 com o 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 this 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 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

139

10.4.5

Monitorando conexes feitas na tabela nat

Use o comando cat /proc/net/ip_conntrack para listar todas as conexes atuais tratadas pelo mdulo nat.

10.5

A tabela mangle

A tabela mangle serve para especicar aes especiais para o tratamento do trfego que atravessa os chains. Nesta tabela existem cincos chains: PREROUTING, POSTROUTING, INPUT, OUTPUT e FORWARD (veja O que so tabelas? on page 114 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 considerados em tempo real. Mesmo aps o trfego ser estabelecido, os chains da tabela mangle continuam 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 147).

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 algoritmo 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 desempenho 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

140

Os pacotes vem por padro com o valor TOS ajustado como prioridade normal (bits tos ajustados 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 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 anlise de cada servio da rede pelo administrador. OBS: - Os pacotes que atravessam o alvo TOS somente tem os 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 internet/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 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 atravessam o alvo TOS somente tem os bits tipo do servio modicados, eles no sero de qualquer forma rejeitados. \

Captulo 10. Firewall iptables

141

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 OPES 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 mensagens 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. O parmetro num especica um nmero e tempo pode ser s - Segundo m - Minuto

Captulo 10. Firewall iptables

142

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 --l 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 lim 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: O exemplo acima somente para a criao de suas prprias regras com limitaes, 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. Outra 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

143

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 com limitaes, caso um pacote no conra com a 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 Especicando uma exceo on page 129. O kernel 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 50).

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

144

--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 destino esteja presente no parmetro. Este mdulo pode eliminar muitas regras de rewall que fazem o mesmo tratamento de pacotes para diversas portas diferentes.

iptables -A INPUT -p tcp -i ppp0 -m multiport --destination-port 21,23,25,80,1 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 com o 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 especicado. At o momento somente UID numricos so aceitos. --gid-owner GID - Confere se o pacote foi criado por um usurio 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 especicado. --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 conferiro!

Captulo 10. Firewall iptables

145

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 um IDS externo usando o alvo QUEUE e deixando o trabalho 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, analise 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 sobrecarregam 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: dad 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

146

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 pontas 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 exemplo, 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 um procedimento RPC pode ser especicado como nome ou nmero separandoos 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), broadcast (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

147

# Como deve ter notado, possvel fazer a associao com diversas especifica # 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 -

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

MUITO importante entender a funo de cada ltro e a ordem de 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

148

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|=>|PO +-------------+ +----------+ +-------------+ +------------------+ +-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

149

|OUTPUT-mangle| => |OUTPUT-nat| => |OUTPUT-filter| => +POSTROUTING-mangle| => +-------------+ +----------+ +-------------+ +------------------+ ENTRADA DE PACOTES (respostas da requisio vindas de 192.168.1.1): +-----------------+ +------------+ +------------+ |PREROUTING-mangle| => |INPUT-mangle| => |INPUT-filter| +-----------------+ +------------+ +------------+ A requisio ftp passa atravs dos chains especicados em SADA DOS 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 vem da 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 fazer SNAT). Note novamente que mesmo no sendo necessrio NAT, o chain POSTROUTINGmangle 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: 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.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| => +-------------+ +----------+ +-------------+ +------------------+

Captulo 10. Firewall iptables

150

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 destino 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 POSTROUTINGnat 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| => +-------------+ +----------+ +-------------+ +------------------+ ENTRADA DE PACOTES (respostas da requisio vindas de 200.198.129.162): +-----------------+ +------------+ +------------+ |PREROUTING-mangle| => |INPUT-mangle| => |INPUT-filter| +-----------------+ +------------+ +------------+

Captulo 10. Firewall iptables

151

A requisio ftp passa atravs dos chains especicados em SADA DOS PACOTES com o destino 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 estabelecida, 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 POSTROUTINGnat 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 +-------------+ +-------------+ |OUTPUT-mangle| => |OUTPUT-filter| => +-------------+ +-------------+ 192.168.1.4) +------------------+ |POSTROUTING-mangle| +------------------+

Captulo 10. Firewall iptables

152

Quando damos o ping (echo request) os pacotes seguem o caminho em ENTRADA DE PACOTES percorrendo os chains na ordem especicada e retornam via SADA DOS PACOTES (echo reply). OBS1: 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.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 tabela 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

153

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 abaix +-----------------+ +--------------+ +--------------+ +--------------+ +------------------+ +---------------+ |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-ma +-----------------+ +--------------+ +--------------+ +-------------A requisio ftp passa atravs dos chains especicados em SADA DOS PACOTES com o destino 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-ma +-----------------+ +--------------+ +--------------+ +-------------Aps a conexo estabelecida, o caminho da entrada de pacotes vindos de 200.198.129.163 :

+-----------------+ +--------------+ +--------------+ +-------------|PREROUTING-mangle| => |FORWARD-mangle| => |FORWARD-filter| => |POSTROUTING-ma +-----------------+ +--------------+ +--------------+ +-------------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

154

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 substituindo 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 estabelecida, 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 estrutura geral de passagem dos pacotes nas tabelas/chains. Os exemplos de passagem de pacotes

Captulo 10. Firewall iptables

155

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 com o estado da conexo on page 141 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 conexes, 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

156

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 sofreram com o Back Orifice, Win Crack, NetBus (quem nunca 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 143 para detalhes).

10.8.3

Conectando sua rede interna a Internet

O seguinte exemplo permite ligar sua rede interna com a 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

157

10.8.4

Um exemplo de rewall simples

Esta seo possui um exemplo mais elaborado de rewall que servir para mquinas conectadas 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 potenciais 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 servio Apache (httpd). Outras tentativas de conexes devem ser explicitamente registradas 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 p 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 # Tabela filter iptables -t filter iptables -t filter iptables -t filter # Tabela nat poltica padro do firewall ##### -P INPUT DROP -P OUTPUT ACCEPT -P FORWARD DROP

Captulo 10. Firewall iptables

158

iptables iptables iptables # Tabela iptables iptables

-t nat -P -t nat -P -t nat -P mangle -t mangle -t mangle

PREROUTING ACCEPT OUTPUT ACCEPT POSTROUTING DROP -P PREROUTING ACCEPT -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

159

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: sa iptables -A ppp-input -p udp --dport 137:139 -j LOG --log-prefix "FIREWALL: sa # Bloqueia qualquer tentativa de nova conexo de fora para esta mquina iptables -A ppp-input -m state --state ! ESTABLISHED,RELATED -j LOG --log-pref 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

160

##### 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, # squid e smtpd do firewall devem ser obrigatoriamente usados. Tambm registra # as tentativas para monitorarmos qual mquina est tentando conectar-se diret iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp+ -p tcp --dport 80 -j iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp+ -p tcp --dport 25 -j iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp+ -p tcp --dport 25 -j iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp+ -p tcp --dport 80 -j # feito masquerading dos outros servios da rede interna indo para a interfa # 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 vinda # de ppp+) so bloqueadas aqui iptables -t nat -A POSTROUTING -o eth0 -d 192.168.1.0/24 -j LOG --log-prefix " 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 # 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 iptables -t mangle -A OUTPUT -o ppp+ -p udp --dport 53 -j TOS --set-tos 0x10

161

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 com a 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 compreenso 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

162

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 recm 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? O programa chage e passwd possui recursos que permitem denir 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 antecedncia (-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: 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 antecedncia (-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 um novo login ser mostrada a mensagem: Your account has expired: Please contact your system administrator Warning: your

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

163

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, recomendvel seguir os mtodos descritos em Denindo valores padres de restrio on the current page. OBS1: Em sistemas com senhas ocultas ativadas (veja Shadow Passwords on page 169) 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 segurana, 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 inicialmente. -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

164

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 166 e Engenharia Social on page 166), o administrador pode forar o usurio a fazer trocas peridicas de senhas atravs dos recursos citados em Criao, monitoramento e segurana de contas on page 162, 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 em seqencia 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. A senha acima poderia ser modicada para msopeol1 Conter letras maisculas e minsculas. msopeoL1. Conter 8 caracteres sempre que possvel. Isto aumenta bastante o nmero de combinaes necessrias para se quebrar uma senha em um ataque brute force (veja Brute Force on page 168). Mesmo que a senha escolhida no chegue a 8 caracteres mnimos, voc poder combina-la com nmeros. Com as dicas acima, a possibilidade de algum conseguir quebrar uma senha criptografada em seu sistema usando os ataques descritos em Tipos de ataques mais comuns para se conseguir uma senha. on page 166 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

165

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 dicionrio 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 facilidade 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

166

11.3
11.3.1

Tipos de ataques mais comuns para se conseguir uma senha.


Deduo

O cracker se aproveita da ingenuidade de usurios que deixam senhas em branco, usam senhas 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 caractersticas 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 164 e continue lendo esta seo. Outro detalhe importante para diminuir as possibilidades de um ataque deste tipo bem sucedido 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

167

Cracker: Oi, eu sou o Joao P. M. do grupo de cadastramento aqui do segundo andar, estou tentando entrar no sistema mas por algum motivo 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 um funcionrio 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 com pgp) 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 diversas 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

168

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 next page e Senhas MD5 on the facing 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 maisculas/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 Shadow Passwords on the next page e Senhas MD5 on the facing 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 um find --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 correta) e na segunda tentativa lanar a senha vlida (normalmente sistemas deste tipo bem elaborados chamam o verdadeiro sistema de login na segunda tentativa).

Captulo 11. Gerenciamento de contas e cuidados para a proteo de senhas

169

11.4

Melhorando a segurana das senhas armazenadas em seu sistema


Shadow Passwords

11.4.1

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 podem 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 tarefa 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 permitem 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 um servio de NIS. OBS: Caso utilize senhas MD5 em um sistema 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

170

171

Captulo 12

Apache
Esta captulo documenta a congurao, personalizao, introduo aos mecanismos de autenticao e controle de acesso do Apache, sistema proxy, virtual hosting, e exemplos de congurao do servidor httpd. Ele no tem como objetivo ser uma referncia completa de congurao, 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 desenvolvido 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 estrutura 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 216 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

172

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

O Apache tem como base o servidor web NCSA 1.3 (National Center of Supercomputing Applications), 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 discusso 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 Brandon Long e Beth Frank que tambm se tornaram membros especiais do grupo Apache, compartilhando idias sobre seus projetos). Nas verses 2.x do Apache, a escalabilidade do servidor foi ampliada suportando as plataformas Win32 (no obtendo o mesmo desempenho que em plataformas UNIX mas sendo melhorado gradativamente).

12.1.3

Enviando Correes/Contribuindo com o projeto

Um formulrio est disponvel na Web para o envio de correes/sugestes em http://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 administradores 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 separadamente 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

173

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 endereo 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 especicado atravs da opo -f da linha de comando. srm.conf Contm diretivas que controlam a especicao de documentos que o servidor oferece aos clientes. O nome desse arquivo pode ser substitudo atravs da diretiva ResourceCong 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 congurao. 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 diretamente 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, principalmente quando se tem um grande conjunto de diretivas. Um exemplo comentado destes trs arquivos de congurao encontrado em Exemplo comentado de um arquivo de congurao do Apache on page 216.

Captulo 12. Apache

174

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 desempenho 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 possvel 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 podem ser encontradas em Sistema de Log do Apache on page 199. Um bom programa para gerao de estatsticas de acesso com grcos o Relatrio grco de acesso ao sistema on page 204.

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 diretivas).

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 inicializao 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

175

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 requisitado e considerado um servio crtico. O mtodo padro para iniciar programas como daemons na Debian atravs dos diretrios /etc/rc?.d. Cada diretrio deste contm os programas que sero executados/interrompidos no nvel de execuo ? (rc1.d/, rc2.d/ . . . ). O contedo destes diretrios 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

176

-d diretrio - especica o diretrio ServerRoot (substitui o do arquivo de congurao). -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 padro. A diretiva Listen tambm usada para ajustar o endereo/portas alternativas (usadas tambm em Virtual Hosts) e substituir as denies de Port(veja Especicando endereos/portas adicionais (a diretiva Listen) on page 178 para detalhes). OBS:: Somente uma diretiva Port e um argumento podero ser especicados. Para mais controle 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 subpginas. 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 congurao 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 DocumentIndex 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 182 para detalhes). Sub-pginas Sub pginas so armazenadas abaixo do diretrio da Pgina raz, como http: / /www.guiafoca.org/download. Elas podem ser um subdiretrio da pgina principal

Captulo 12. Apache

177

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 local, 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 congurao restritiva por padro (veja Restries de Acesso on page 182 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

A diretiva BindAddress usada para especicar endereos IP das interfaces ou endereos FQDN que o Apache responder requisies. Mais de um endereo podem ser especicados separados por espaos. Caso no seja denido, o Apache assumir o valor * (atender requisies vindas de qualquer interface). OBS1: - permitido usar somente uma diretiva BindAddress. A diretiva Listen dever ser usada se desejar mais controle sobre as portas do servidor web. Veja Especicando endereos/portas adicionais (a diretiva Listen) on the following page para detalhes. OBS2: - As interfaces especicadas pela diretiva Listen substituir as especicadas em BindAddress. 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

178

12.5

Especicando endereos/portas adicionais (a diretiva Listen)

A diretiva Listen usada para se ter um controle maior sobre a especicao de endereos/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 diretivas 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 O endereo que dever ser usado o da interface de rede (assim como 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 regulares como argumento. Por exemplo: <DirectoryMatch "^/www/.*"> Order deny,allow deny from all <DirectoryMatch>

Captulo 12. Apache

179

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 diretiva <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 183). 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

180

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 modicado). Esta opo ignorada caso aparea dentro das diretivas <Location>, <LocationMatch> 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 diretrio 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

181

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 especicadas no bloco da diretiva <Directory /var/www/focalinux> e somente os includes sero permitidos. Para adicionar ou remover uma opo individual denidas por diretivas anteriores, 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 permisses 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

182

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 permisses de sub-diretrios especcos separadamente caso precise de um nvel de acesso diferente. Veja tambm a seo sobre arquivos OverRide (.htaccess) para detalhes sobre este tipo de arquivo. OBS4: A diretiva 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 facing page) e Autenticao (Autenticao on page 187). Atravs da autorizao, checado se o endereo/rede especicada tem ou no permisso para acessar a pgina. A autenticao requer

Captulo 12. Apache

183

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 tambm os sub-diretrios do diretrio alvo. Abaixo um exemplo de restrio de acesso que bloqueia 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 um servidor mais restritivo; a diretiva allow processada primeiro e somente depois a diretiva deny. Caso nenhuma diretiva allow 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 atravs 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 conferiram 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 O motivo que em um grande site, se forem adicionadas mais restries nesta pgina (devido a alguns domnios que tem usurios mal comportados, bloqueio de acesso a rede do concorrente, potenciais atacantes, etc. . . ), estas devero ser lidas antes da diretiva allow

Captulo 12. Apache

184

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 administrador 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 congurao (apachectl graceful). OBS2: Mais de um host pode ser especicado separando 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 nomes 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 explicaes 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 antispoong 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) sem bloquear 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. Certiquese que o dono e grupo do processo Apache (especicado pela diretiva User e Group) possuem 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

185

<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 allow/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 qualquer host na Internet <Files .htaccess> Order deny,allow deny from all </Files> Bloqueia o acesso a qualquer arquivo .htaccess do sistema

Captulo 12. Apache

186

<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.* bloqueado (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

187

<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 conferir nem com allow nem com deny, 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 criptografadas 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 modicar a senha do usurio convidado, basta usar a mesma sintaxe (sem a opo -c que usada para criar um novo arquivo):

Captulo 12. Apache

188

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 senha 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 oferecido 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 anterior. 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 navegador 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 especicar vrias diretivas de restries). AuthType Especica o mtodo de que o nome e senha sero passados ao servidor. Este mtodo de autenticao pode ser Basic ou Digest Basic - Utiliza a codicao base64 para encodicao de nome e senha, enviando o resultado ao servidor. Este um mtodo muito usado e pouco seguro, pois qualquer sniffer instalado em um roteador pode capturar e descobrir facilmente seu nome e senha.

Captulo 12. Apache

189

Digest - Transmite os dados de uma maneira que no pode ser facilmente decodicada, incluindo a codicao da rea protegida (especicada pela diretiva AuthName) que possui a seqencia de login/senha vlida. A diferena deste mtodo que voc precisar de arquivos de senhas diferentes para cada rea protegida especicada por AuthName (tambm chamada de Realm). AuthUserFile o arquivo gerado pelo utilitrio htpasswd que contm a senha correspondente 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 especicados so considerados vlidos para ter acesso ao diretrio. Require group grupo1 grupo2 grupo3 - Somente os usurios dos grupos especicados 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 diretivas AuthName, AuthType e as diretivas AuthUserFile e AuthGroupFile para funcionar adequadamente. OBS: necessrio reiniciar o Apache depois de qualquer modicao em seu arquivo de congurao (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

190

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

191

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 um cdigo 500 - Internal Server Error. Este tipo de erro caracterizado por tudo estar OK na sintaxe dos arquivos de congurao aps checagem com 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 ocultado pelo sistema, pois j existe uma diretiva <Files ~ \.ht>. Tal diretiva pode tambm ser especicada no arquivo de acesso .htaccess. Assim um arquivo .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 qualquer uma das diretivas de controle de acesso. As diretivas de autorizao so processadas primeiro (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 necessrio 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.

Captulo 12. Apache

192

<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 </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 pertence 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 AuthGroupFile, 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 com o 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

193

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 problema 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 especicado, 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 permisses 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. O controle de que opes estaro disponveis no .htaccess so denidas na diretiva AllowOverride que pode conter o seguintes parmetros:

Captulo 12. Apache

194

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, AuthDBMUserFile, 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 (AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, 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 simplesmente ignorada. Para acesso ao arquivo .htaccess do diretrio /var/www/focalinux, o Apache buscar 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 arquivos .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 arquivos .htaccess no diretrio raz e habilitar somente nos diretrios especicados pela diretiva <Directory> no arquivo de congurao do Apache, evitando brechas de segurana na manipulao 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), autenticao 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

195

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 arquivo .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

196

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 colocada 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 especicada 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 especicados.

Captulo 12. Apache

197

12.8

Denindo documentos de erro personalizados

Documentos de erros personalizados so denidos atravs da diretiva ErrorDocument. possvel 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 238 como referncia). 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 explicando como obter acesso ao sistema. ErrorDocument 503 http://www.guiafoca.org/servicos.html - Redireciona 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

198

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 documentao sobre o mdulo). Veja a httpd.conf on page 216 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 183. 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 marcados 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 Accept* 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

199

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, endereo, 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 personalizveis 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 desenvolvedores)

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 particulares de logging.

Captulo 12. Apache

200

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 comprometer 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 202 para detalhes. Ao invs de especicar o formato, tambm possvel usar um apelido denido pela opo LogFormat (LogFormat on page 202), 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

201

LogFormat "%{Referer}i -> %U" referer CustomLog /var/log/apache/referer.log referer Exemplo: RefererLog /var/log/apache/referer.log

12.10.5

RewriteLog
Indica o arquivo/pipe que registrar qualquer re-

RewriteLog: [arquivo/pipe]: gravao de URL feita pelo Apache.

OBS: No recomendvel direcionar o nome de arquivo para /dev/null como forma de desativar 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 registro, 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 contnuo 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

202

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

Captulo 12. Apache

203

LogFormat LogFormat LogFormat LogFormat LogFormat

"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %P %T "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" comb "%h %l %u %t \"%r\" %>s %b" common "%{Referer}i -> %U" referer "%{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 com o 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, recomendvel o uso da diretiva CustomLog (veja CustomLog on page 200) para evitar confuses futuras.

12.10.12

LogLevel

Dene o nvel de alerta das mensagens que sero gravadas no arquivo especicado pela diretiva 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 especicado, 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

204

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 DocumentRoot 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 estatsticas 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 238), onde possvel 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 servidor 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

205

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 cabea # 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 requisies 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 completa (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 especicado. 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 mquinas, 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 coisas). 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 # CacheRoot seja especificado CacheRoot /var/spool/apache

Captulo 12. Apache

206

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 maiores que o total do cache. Arquivos que ultrapassem o tamanho do cache so automaticamente 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 desativado 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 possibilidade 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 next 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

207

Para explicaes sobre o processo de bloqueio acima, veja Autorizao on page 183.

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 mquina 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 internamente 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 incluir 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 modicar 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 interface 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 servidor. 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 personalizar 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 63), 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 following page para detalhes de como construir um virtual host deste tipo. O apache foi um dos primeiros

Captulo 12. Apache

208

servidores web a incluir suporte a virtual hosts baseados em IP. Virtual Hosts baseados em nome - Este utiliza nomes para identicar os sites servidos e requerem somente um endereo IP. Desta maneira possvel servir um nmero ilimitado de sites virtuais. O navegador do cliente deve suportar os cabealhos necessrios para garantir o funcionamento deste recurso (praticamente todos os navegadores atuais possuem este suporte). Veja Virtual hosts baseados em nome on the next 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 separados ou em um nico daemon httpd usando a diretiva <VirtualHost>. As vantagens do uso de daemons separados para servir requisies a proteo sob UID e GID diferente 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 restrito). 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 aguardar as requisies. As vantagens do uso de um mesmo daemon para servir as requisies so: quando no h problema 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 servidores 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

209

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 50 e Proteo contra IP spoong on page 143. Leia tambm a seo Segurana no uso de IPs em Virtual Hosts on page 211. OBS3: No permita que outros usurios a no ser o root e o dono do processo Apache (especicado 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

210

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 <VirtualHost > 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 expanso %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 congurado 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 50 e Proteo contra IP spoong on page 143. Leia tambm a seo Segurana no uso de IPs em Virtual Hosts on the next page. OBS2: No permita que outros usurios a no ser o root e o dono do processo Apache (especicado 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

211

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 desativada. Isto j uma melhoria sobre a primeira congurao. O nome 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 mquinas 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

Captulo 12. Apache

212

3 4 5 6 7

desviando o trfego para seu prprio servidor web. Se isto no for possvel, siga as dicas abaixo para diminuir possveis problemas. Utilize endereos IP na diretiva <VirtualHost>. Use endereos IP na diretiva Listen. Use um endereo IP na diretiva BindAddress. Sempre utilize o parmetro ServerName em todas as diretivas <VirtualHost>, isto evita o retorno incorreto de nomes (que pode evitar/revelar fraudes). 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 trabalho 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 servidores 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


Aps instala-lo, edite o arquivo /etc/apache

Instale o pacote libapache-mod-ssl. /httpd.conf adicionando a linha:

Captulo 12. Apache

213

LoadModule ssl_module /usr/lib/apache/1.3/mod_ssl.so Depois, gere um certicado digital ssl com o programa mod-ssl-makecert. Ele ser armazenado 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 criptograa 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 criptograa de arquivos on page 408. 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 funcionando 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 estiv # carregado pela diretiva LoadModule <IfModule mod_ssl.c> # necessrio especificar as portas que o servidor Web aguardar conexes (no # 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

Captulo 12. Apache

214

# A linha abaixo fora o fechamento de conexes quando a # 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 se # feito internamente pelo mdulo mas esta diretiva acelera o processamento # de requisies paralelas feitas por modernos clientes navegadores. Por padr # 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), # programa que gera nmeros aleatrios (com "exec") ou os dispositivos aleatr # /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).

Captulo 12. Apache

215

SSLSessionCacheTimeout

300

# 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 um erro 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 servidor usando um dos mtodos descritos em Iniciando o servidor/reiniciando/recarregando a

Captulo 12. Apache

216

congurao on page 174. 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 um arquivo de congurao do Apache

O exemplo abaixo foi retirado da distribuio Debian GNU/Linux, z sua traduo, modicaes 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

217

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

Baseado nos arquivos de configurao originais do servidor NCSA por Rob McCo 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 signifi e o que fazem, se no tiver certeza do que est fazendo consulte a documenta on-line ou leia as sees apropriadas do guia. Voc foi avisado.

Aps este arquivo ser processado, o servidor procurar e processar o arquiv /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 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 # 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

218

# 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 dif # voc deve executar o httpd inicialmente como root e ele modificar sua ID pa # especificada. # # # # #

User/Group: O nome (ou #nmero) do usurio/grupo que executar o servidor ht No SCO (ODT 3) use "User nouser" e "Group nogroup" No HPUX voc pode no ser capaz de usar memria compartilhada como nobody, 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 # 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 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

219

# # # #

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 qualifica (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 correspondente # 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

220

# 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 # diretiva CustomLog (veja abaixo).

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T %v" LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %P %T"

Captulo 12. Apache

221

LogFormat LogFormat LogFormat LogFormat

"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combi "%h %l %u %t \"%r\" %>s %b" common "%{Referer}i -> %U" referer "%{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 seguint # 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

222

# 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 s # valor padro. A razo principal de modifica-la no caso do diretrio de log # 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 princip # 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 n 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) el # usar ServerName e Port para fazer o "nome cannico". Com esta opo desliga # 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, recomend # 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 virtua # hosts baseados em IP). UseCanonicalName off # CacheNegotiatedDocs: Por padro, o Apache envia Pragma: no-cache com cada

Captulo 12. Apache

223

# # # #

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 requis # 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

224

# # # # # #

Limita o nmero total de servidores rodando, i.e., limita o nmero de client que podem conectar simultaneamente --- se este limite sempre atingido, os clientes podem sero BARRADOS, assim este valor NO DEVE SER MUITO PEQUEN 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 pac para mltiplos endereos de rede. Isto pode ser feito com a opo de aliasin 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

225

#TransferLog /var/log/apache/host.some_domain.com-access.log #</VirtualHost>

# # # # # #

VirtualHost: Se voc quiser manter mltiplos domnios/nomes de mquinas em s 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 configura 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 n 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

226

# 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 usuri # 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 se # <IfModule mod_autoindex.c>

# # FancyIndexing: se voc deseja o padro fancy index ou padro para a inde # 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 determ # 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

227

AddIconByType (IMG,/icons/image2.gif) image/* AddIconByType (SND,/icons/sound2.gif) audio/* AddIconByType (VID,/icons/movie.gif) video/* AddIcon AddIcon AddIcon AddIcon AddIcon AddIcon AddIcon AddIcon AddIcon AddIcon AddIcon AddIcon AddIcon AddIcon AddIcon AddIcon AddIcon AddIcon AddIcon AddIcon AddIcon /icons/binary.gif .bin .exe /icons/binhex.gif .hqx /icons/tar.gif .tar /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv /icons/compressed.gif .Z .z .tgz .gz .zip /icons/a.gif .ps .ai .eps /icons/layout.gif .html .shtml .htm .pdf /icons/text.gif .txt /icons/c.gif .c /icons/p.gif .pl .py /icons/f.gif .for /icons/dvi.gif .dvi /icons/uuencoded.gif .uu /icons/script.gif .conf .sh .shar .csh .ksh .tcl /icons/tex.gif .tex /icons/bomb.gif */core /icons/deb.gif .deb Debian /icons/back.gif .. /icons/hand.right.gif README /icons/folder.gif ^^DIRECTORY^^ /icons/blank.gif ^^BLANKICON^^

# DefaultIcon o cone que ser mostrado para aplicativos que no tiverem # cone explicitamente definido. DefaultIcon /icons/unknown.gif

# # AddDescription: isto lhe permite colocar uma curta descrio aps um arq # nos ndices gerados pelo servidor. Estes somente so mostrados para dire # 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

228

# # O servidor procurar primeiro por nome.html, includo se ele for encontr # e ento procurar pelo nome e incluir ele como texto plano se encontrad 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 diretri # 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

229

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 ist # 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

230

# #

AddLanguage AddLanguage AddLanguage AddLanguage AddCharset AddLanguage AddCharset AddLanguage AddLanguage AddLanguage AddLanguage AddLanguage AddLanguage AddLanguage

de .de el .el it .it ja .ja ISO-2022-JP .jis pl .po ISO-8859-2 .iso-pl pt .pt pt-br .pt-br ltz .lu ca .ca es .es sv .se 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 exibi # 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

231

# # 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, us # #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/i AddDefaultCharset on AddDefaultCharsetName iso-8859-1

# Redirect permite dizer aos clientes que documentos no existem mais no seu s # e a nova localizao do documento. # Format: Redirect nomeurl url

Captulo 12. Apache

232

# "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 Alias Alias Alias Alias /icons/ /usr/share/apache/icons/ /doc/ /usr/doc/ /focalinux /var/www/focalinux /debian-br /var/www/debian-br/htdocs /debian /pub/mirror/debian

# ScriptAlias: Esta diretiva controla que diretrios contm scripts do servido # 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 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 # 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

233

#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 include # 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 *n # estaro disponveis para tal script.

# # O mdulo mod_mime_magic permite o servidor usar vrias dicas atravs do cont # do arquivo para determinar o seu tipo. A diretiva MIMEMagicFile diz ao mdul # 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 process # 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 navegador # as falsificam. Existem problemas conhecidos com estas implementaes de # navegadores. A segunda diretiva para o MS IE 4.0b2 que tem uma impleme # defeituosa do HTTP/1.1 e no suporta adequadamente o keepalive quando el # 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 # 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

234

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 respectivame # com quais servios e caractersticas que podem ser permitidas e/ou bloqueada # 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 servi <Directory /var/www>

# A opo Options pode conter os valores "None", "All", ou quaisquer combina # de "Indexes", "Includes", "FollowSymLinks", "ExecCGI", ou "MultiViews". # # Note que "MultiViews" deve ser *explicitamente* especificada --- "Options Al

Captulo 12. Apache

235

# no a ativa (pelo menos no ainda). Options Indexes FollowSymLinks Includes MultiViews

# Esta opo controla que opes os arquivos .htaccess nos diretrios podem se # 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 permit 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

236

# 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

237

<Files ~ "^\.ht"> Order allow,deny Deny from all </Files>

# # Controla o acesso a diretrios UserDir. As seguintes diretivas so um exempl # 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 envol # um script CGI distribudo como parte do Apache. Descomentando estas linhas v # poder redirecionar estes ataques a um script de registro em phf.apache.org. # poder gravar em sua prpria mquina, usando o script support/phf_abuse_log. # #<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 pgi # do guia Foca GNU/Linux exceto os que possuem navegadores MSIE ;-)

Captulo 12. Apache

238

# 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 p </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/debia # 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

239

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

240

241

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 aumentar 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

O ident (identidade) um servidor 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 servidores 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 existem algumas 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 modicaes no programa (changelog) em busca de mudanas que alterem o sentido das explicaes fornecidas aqui.

Captulo 13. Servidor ident

242

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 sistemas 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 usurio e o segundo o nome que ser enviado pelo identd. O segundo campo pode ser omitido, 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 identicao retornada ser a contida no arquivo. Esteja certo que o daemon oidentd tem permisses para acessar este arquivo, caso contrrio nenhum spoof de identidade ser realizado. 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 244). OBS: Certiquese 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

243

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 identicao. Para o suporta a mapeamento de usurios via Masquerading funcionar, o daemon 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 the current 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 this 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

244

Opes de linha de comando on the current 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 53. 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 daemon 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 arquivo 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 endereos/hosts especicados. OBS O oidentd 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 interface especicada. -A Quando o spoong esta ativado, permite os usurios falsicaram o ident em conexes para portas privilegiadas. -c [pginacodigo] - Especica uma pgina de cdigo alternativa. O padro USASCII. -d - Ativa o modo de depurao, mais detalhes sero exibidos.

Captulo 13. Servidor ident

245

-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 - O mesmo que -s mas permitem todos os usurios EXCETO os 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 242. No entanto acho interessante 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

246

# 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 qualque # mquina da rede 192.168.1.* in.fingerd: ALL EXCEPT admin@192.168.1. # Qualquer outra coisa bloqueada ALL: ALL

247

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 conectado 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 podem funcionar para verses posteriores, mas recomendvel que leia a documentao sobre modicaes no programa (changelog) em busca de mudanas que alterem o sentido das explicaes fornecidas aqui.

14.1.2

Caractersticas

Conexo rpida (no utiliza transmisso de dados criptografada), recomendado para ambientes 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

248

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 conexo de clientes telnet padro (sem suporte a ssl). Utilitrios: in.telnetd - Servidor telnet telnet - Cliente telnet padro (quando o pacote telnet-ssl est instalado, simplesmente 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 registradas pelos mdulos PAM em /var/log/auth.log.

14.1.6

Instalao
ou apt-get install telnet-ssl

apt-get install telnet telnetd 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 52 e O mecanismo de controle de acessos tcpd on page 56). 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

249

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 durante 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 problema e o usurio no consiga se desconectar normalmente. -S TOS - Ajusta o tipo de servio usado na conexo para o valor especicado (veja Especicando o tipo de servio on page 139 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 acessos tcpd on page 56.

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 403).

Captulo 14. Servidor telnet

250

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 next page) uma excelente alternativa ao telnet, alm de possuir outras caractersticas adicionais que justiquem seu uso, alm de programas 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 com o 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 # nome de usurio john telnet -l john 200.200.200.200 53454

251

Captulo 15

Servidor ssh
Este captulo documenta a instalao, congurao e personalizao do servidor de shell seguro sshd, alm de explicar as vantagens da utilizao dos servios criptogrcos. A utilizao 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 protocolo 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 palavras, 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 possibilita 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

252

15.1.1

Verso

assumido que esteja usando a verso 2.0 do ssh. As explicaes contidas aqui podem funcionar para verses posteriores, mas recomendvel que leia a documentao sobre modicaes no programa (changelog) em busca de mudanas que alterem o sentido das explicaes fornecidas 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

253

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 kernel do Linux. Este limite deve ser redimensionado para servidores de acesso dedicado, uma quantidade de 64MB deve ser confortvel para centenas de usurios conectados simultaneamente (o que raramente acontece). Veja tambm Restries de acesso, recursos e servios on page 375 para congurao de restries 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. A prioridade e nvel so denidos no arquivo de congurao /etc/ssh /sshd_config (veja Exemplo de sshd_config com explicaes das diretivas on page 263).

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 protocolo ssh, veja Diferenas nas verses do protocolo on page 262).

Captulo 15. Servidor ssh

254

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 padro usado /etc/ssh/sshd_config). O ssh pode ser congurado atravs de opes de linha de comando mas requer um arquivo de congurao para ser executado. Opes 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 criando 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 262. -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), assim mesmo que um cracker 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

255

-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 especicada 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 262), 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

256

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 opes -a e -x desativam as opes acima respectivamente). Uma varivel $DISPLAY criada automaticamente para fazer o redirecionamento ao servidor X local. Ao executar um aplicativo remoto, a conexo redirecionada a um DISPLAY 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 recomendvel 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

257

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 pequeno, 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 um applet em uma pgina web. Este programa encontrado em http://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

258

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 um arquivo local. Por exemplo: /usr /src/arquivo.tar.gz. usuario@host_remoto:/diretrio/arquivo - Quando desejar copiar o arquivo 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 compactao. 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 lo # 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 remoto # 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. A conexo e transferncias 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

259

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 superiores. OBS3: Algumas opes comuns do cliente ftp padro (como mget) ainda no esto disponveis ao sftp. Veja a pgina de manual para detalhe sobre as opes disponveis.

15.3
15.3.1

Servidor ssh
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 254. Seu arquivo de congurao principal /etc/ssh/sshd_config, um exemplo e descrio das opes deste arquivo encontrada em Exemplo de sshd_config com explicaes das diretivas on page 263. 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 arquivos /etc/hosts.allow e /etc/hosts.deny (o nome do servio sshd). Mesmo operando como daemon, o servidor utiliza estes arquivos para fazer um controle de acesso adicional.

15.3.2

Controle de acesso

denido pelas opes ListenAddress, AllowUsers, DenyUsers, AllowGroups, DenyGroups e PermitRootLogin do arquivo de congurao sshd_config (veja Exemplo de sshd_config com explicaes das diretivas on page 263) e via tcpd (arquivos hosts.allow e hosts.deny). Veja O mecanismo de controle de acessos tcpd on page 56.

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

260

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 quiser 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 especicado. 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 manualmente usando os mtodos tradicionais (ssh/scp). Caso o arquivo remoto /home /gleydson/.ssh/authorized_keys no existe, ele ser criado. Seu formato idntico 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 pblica/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, 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 copiando o arquivo

Captulo 15. Servidor ssh

261

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 pblica/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 pessoal, 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 estilo 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 259 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... Com este mtodo possvel restringir a execuo de alguns comandos/servios alm de outras possibilidades como a mudana de variveis especcas para o comando:

no-port-forwarding,no-X11-forwarding,no-agent-forwarding,command="ls / -la" ss

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

262

especcos usando chaves on the preceding page 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 em conta as consideraes de segurana que este exemplo tem em sua 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 161 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 padro) usada para identica-lo. Quando o sshd inicia, ele gera uma chave RSA do

Captulo 15. Servidor ssh

263

servidor (768 bits por padro, valor denido por ServerKeyBits) que recriada a cada hora (modicado 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 ambas 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 desativada). 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 A verso 2 funciona de forma parecida com a 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 oferecida 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 cdigo de autenticao de mensagem criptogrca (hmac-sha1 ou hmac-md5). A verso 2 do protocolo oferece um mtodo de autenticao baseado em chave pblica (PubkeyAuthentication) 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

264

# # # #

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

265

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 redirecionamen # X11 do ssh. Por padro usado o display 10 como inicial para evitar conflit # 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 " 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

266

# 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.equ # 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 tam # 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

267

# 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

268

269

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), um dos mais usados em ambiente Linux, simples de congurar e distribudo livremente. O que este programa faz ler os emails 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 modicaes 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 verses, 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 acrescentando -request). A lista de suporte aos usurios <qpopper@lists.pensive.org> (o mtodo de inscrio idntico a lista announce).

Captulo 16. Servidor pop3

270

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 suciente 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

271

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, recomendvel 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 this 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 mecanismo de controle de acessos tcpd on page 56). 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 conexes 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 indicado). Veja Enviando boletins de mensagens on page 273 para instrues de utilizao deste recurso.

Captulo 16. Servidor pop3

272

-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 comando 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 seguintes 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 arquivo /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 autenticao 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 m da 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 adicionais para o servidor. Este arquivo lido aps o processo de autenticao e deve ter permisses 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

273

Este arquivo deve ter como dono o administrador ou dono do servidor pop3. Esta alternativa 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 76).

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 formato 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 completada 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 enviados.

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 392.

Captulo 16. Servidor pop3

274

16.1.13

Restringindo acesso ao servidor pop3

O controle de acesso de conexes feito via mtodo tcpd usando o daemon in.qpopper (veja O mecanismo de controle de acessos tcpd on page 56). 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 377).

275

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 desenvolvimento 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

276

17.1.1

Verso

A verso do CVS documentada no guia a 1.11.1. As explicaes aqui certamente sero compatveis 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 conjunto 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 mensagem com o 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 arquivo 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

277

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 403 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 gerenciamento 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 tambm 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 inteligente 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 arquivo 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 desenvolvida. recomendvel que a mquina tenha memria suciente para evitar o uso de swap, que degrada bastante a performance do sistema.

Captulo 17. CVS

278

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 um arquivo 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 servidor 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, necessria a seguinte linha no arquivo /etc/inetd.conf cvspserver stream tcp nowait.200 root

/usr/sbin/tcpd /usr/sb

Note que o parmetro 200 indica quantas vezes o processo CVS poder ser executado por minuto 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 53 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 especicado 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

279

-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, checkout, etc) digitando: cvs comando --help. Veja Criando projetos para serem usados no CVS on page 285 para exemplos sobre cada uma delas.

17.2

Servidor de CVS - congurando mtodos de acesso ao repositrio

O CVS uma aplicao cliente/servidor, possuindo diversas maneiras de fazer o acesso seu repositrio (veja Repositrio on page 285 repositrios). Estes mtodos so os seguintes: local (local on the current page). ext (ext on the following page). pserver (pserver (password server) on page 281). fork (fork on the following page). GSSAPI (gssapi on page 285). 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 286. 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

280

export CVSROOT=local:/var/lib/cvs Depois disso, basta utilizar os comandos normais do cvs sem precisar se autenticar no sistema. Veja os detalhes de utilizao dos comandos de CVS aps o login na seo Clientes de CVS on page 293.

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 sistema. Veja os detalhes de utilizao dos comandos do CVS aps o login em Clientes de CVS on page 293.

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 the current page. Para criar seu repositrio, veja Criando um repositrio on page 286.

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

281

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 293. 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 O acesso de leitura/gravao do usurio, denido de acordo com as 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: O acesso via ssh traz a vantagem de 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 atravs de um servidor prprio na porta 2401. O acesso dos usurios (leitura/gravao) no repositrio 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

282

A grande vantagem deste segundo mtodo que cada projeto poder ter membros com acessos 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 automaticamente modicando o arquivo /etc/inetd.conf adicionando a seguinte linha: # na Debian cvspserver

stream

tcp

nowait.400

root

/usr/sbin/tcpd /usr/sb

# em outras Distribuies cvspserver stream tcp nowait

root

/usr/bin/cvs cvs -f --allow-root=/var/l

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 286. 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 the current 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

283

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 incorreta. 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 280. 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 preceding 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 congurar 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 arquivos, veja Arquivos administrativos em CVSROOT on page 292. 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 algoritmo 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

284

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 permitir 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 congurados (como eles fazem acesso, permisses de acesso, diretrios onde gravam arquivos, so algumas delas) antes de escolher como um servio novo na mquina funcionar. Isto poder modicar ou deixar vulnervel a segurana de sua instalao. 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 usurio 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 permisses 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 repositrio (veja Adicionando um arquivo ao mdulo CVS do servidor on page 289) para o servidor de CVS para te-lo funcionando. Note que em verses mais novas do CVS, no possvel

Captulo 17. CVS

285

transferir o arquivo passwd via rede, ento ser necessrio cria-lo manualmente 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 repositrio do servidor remoto (voc ter que ser o usurio root ou ter permisses adequadas). O recomendvel utilizar o scp (scp on page 257) 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 desenvolvido 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 279 para ver exemplos de mtodos de acesso. O Repositrio pode conter um ou mais mdulos, cada mdulo representa um projeto no servidor, criado aps o uso do comando import. Segue um exemplo da estrutura de um repositrio CVS: var/lib | +- cvs |- CVSROOT |- projeto1 +- projeto2

Captulo 17. CVS

286

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 288). 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 "cv 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 : (exemplo: 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 arquivos 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 parmetro 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 281), necessrio 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

287

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 comandos. 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 servidor 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

288

17.3.6

Adicionando um novo projeto

Use o comando cvs import para adicionar um novo projeto ao CVS. As entradas nos arquivos 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 arquivos do diretrio atual. O projeto focalinux ser acessado atravs de $CVSROOT/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 com os 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 relativo 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 trabalhando 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 facing 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

289

Aps alguns segundos, sua cpia local car sincronizada com a 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 the current 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 commit. 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 mensagem, 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 this page). Para adicionar o diretrio teste e seus arquivos no servidor cvs remoto:

Captulo 17. CVS

290

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 remoto. 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 the current 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 modicaes 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 modicaes no histrico do cvs. O comando pode ser acompanhado de -d para remover o mdulo anteriormente baixado com o commit:

Captulo 17. CVS

291

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 comando 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 procedimentos em Removendo um arquivo do mdulo CVS remoto on the facing page para corrigir a situao. M O arquivo est modicado localmente e no foi salvo ainda no servidor. Use os procedimentos em Sincronizando a cpia remota com a cpia local on page 288 e Enviando as mudanas para o servidor remoto on page 289 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 diferenas 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 localmente, 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 auxiliam 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

292

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 pserver 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 especicado, 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 trabalho 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 permitido.

17.4.5 verifymsg
Especica o programa usado para vericar as mensagens de log.

Captulo 17. CVS

293

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 repositrios via web. Eles facilitam o trabalho de controle de reviso por parte de iniciantes e exibilidade 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 285 e os parmetros de linha de comando em Opes de linha de comando on page 278 altamente recomendvel a leitura caso deseje utilizar um cliente de cvs grco, pois os conceitos so os mesmos.

Captulo 17. CVS

294

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 comando, 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, incluindo 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 exemplo: 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 adicionar 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 Adicionando um novo projeto on page 288. 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

295

leia atentamente Criando projetos para serem usados no CVS on page 285 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 preceding 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. O viewcvs possui uma interface que se parece com a navegao de um diretrio de ftp, recursos 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 171 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

Captulo 17. CVS

296

Logging in to :pserver:gleydson@ima.cipsga.org.br:2401/var/lib/cvs 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

Captulo 17. CVS

297

U dillo/dillo/doc/Dw.txt 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

298

299

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 importantes 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, combinar 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), equivalentes 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 diferentes 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 indispensveis 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

300

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 NetBIOS. 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 um servidor de arquivos Windows para sua mquina DOS que foi publicado mais ou menos em meados 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. O SAMBA atualmente um servidor fundamental para a migrao de pequenos grupos de trabalho 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 em rede. As funes de segurana que foram adicionadas ao SAMBA hoje garantem um controle mais rigoroso que a prpria implementao usada no Windows NT, incluindo o servios de diretrios, mapeamento entre IDs de usurios Windows com Linux, 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 transmisso, 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
veja os detalhes na pgina:

Para contribuir com o desenvolvimento do samba, http://us1.samba.org/samba/devel/

Caso encontre um bug no programa, ele poder ser relatado se inscrevendo na lista de discusso samba-technical-request@lists.samba.org. Aps responder a mensagem de conrmao, envie um relato detalhado do problema encontrado no programa.

Captulo 18. SAMBA

301

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 (Macintosh, OS/2, LanManager, etc). Montar um servidor de compartilhamento de impresso no Linux que receber a impresso 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), autenticao 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 mensagens 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 compartilhamentos. 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 grcos, tanto via sistema, como via web. Permite executar comandos no acesso ao compartilhamento ou quando o acesso ao compartilhamento 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

302

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 impressoras compartilhados por servidores Windows ou samba. smbfs - Pacote que possui ferramentas para o mapeamento de arquivos e diretrios compartilhados 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 congurao 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 310).

18.1.8

Instalao

Digite apt-get install samba smbclient smbfs para instalar o conjunto de aplicativos 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 compartilhamento, 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

303

de acesso dos arquivos hosts.allow e hosts.deny. Veja Restringindo o acesso por IP/rede on page 344 e Restringindo o acesso por interface de rede on page 345 para detalhes 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 primeiro 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 compartilhamento 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 associado com o nome da mquina e registrado em servidores de nomes conrme a congurao da mquina (voc ver isto mais adiante).

Captulo 18. SAMBA

304

O nome de mquina especicado nas diretivas netbios name e netbios aliases (veja Nomes e grupos de trabalho on page 307) 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 departamentos comunicao, redes, web, rh, as mquinas que pertencem ao 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 319 para detalhes passo a passo e exemplos prticos. Os programas para navegao na rede NetBIOS so mostrados em smbclient on page 360, nmblookup on page 360 e Programas de navegao grcos on page 366.

18.2.3

Domnio

O funcionamento semelhante ao grupo de trabalho, com a diferena que a segurana controlada pela mquina central (PDC) usando diretivas de acesso e grupos. O PDC (Primary

Captulo 18. SAMBA

305

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 programada 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 325.

18.2.4

Compartilhamento

Um compartilhamento um recurso da mquina local que disponibilizado para acesso via rede, que poder ser mapeada (veja Mapeamento on this 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 leitura/gravao, monitorao de acessos, diretrios ocultos, autenticao via PDC (domnio) e outras formas para restringir e garantir segurana na disponibilizao dos dados (veja Controle de acesso ao servidor SAMBA on page 343 para aprender os mtodos de como fazer isto). Um compartilhamento no SAMBA pode ser acessvel publicamente (sem senha) ou estar rigidamente 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 compartilhamentos.

18.2.5

Mapeamento

Mapear signica pegar um diretrio/arquivo/impressora compartilhado por alguma mquina da rede para ser acessada pela mquina local. Para mapear algum recurso de rede, necessrio que ele seja compartilhado na outra mquina (veja Compartilhamento on this 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 359).

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 314), fazer logon de mquinas no domnio (Uma breve introduo a um Domnio de rede on page 325), etc.

Captulo 18. SAMBA

306

A funo de navegao na rede feita utilizando o compartilhamento IPC$. Este compartilhamento possui acesso pblico somente leitura e utiliza o usurio guest para disponibilizao 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 317), 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, compartilhamento 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 trabalho, nome do servidor, pgina de cdigo, restries de acesso por nome, etc. Veja Seo [global] on the next 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 312. [printers] Dene opes gerais para controle das impressoras do sistema. Este compartilhamento mapeia os nomes de todas as impressoras encontradas no /etc/printcap. Conguraes especiais podem ser feitas separadamente. Veja Seo [printers] on page 313. [profile] Dene um perl quando o servidor samba usado como PDC de domnio. Veja Congurando pers de usurios on page 332. 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 367. 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

307

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 especicadas 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 diretrios on page 316 para obter uma lista e descrio dos principais parmetros de compartilhamentos 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 simplicada.

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 maiores detalhes, veja Variveis de substituio on page 315). 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 resoluo rpida e que tente gerar menos trfego broadcast possvel. Veja Resoluo de nomes de mquinas no samba on page 321 para uma explicao mais detalhada.

Captulo 18. SAMBA

308

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 exibidos 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 caracteres 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 minsculas (lower) ou maisculas (upper). valid chars = [caracteres ] Dene caracteres vlidos nos nomes de arquivos: valid chars =: : : : : : : : : : : :. Este parmetro DEVER 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 parmetros usados em compartilhamento on page 317. 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 346. 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 346.

Captulo 18. SAMBA

309

default service = nome Caso o servio que o usurio deseja se conectar no for encontrado no servidor, o SAMBA mapear o servio especicado nesta diretiva como alternativa. 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 arquivos) 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 354 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 contm algumas 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 compartilhamento 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 mapeamento de nomes para associar o nome remoto do nome local (veja Mapeamento de nomes de usurios on page 354) 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 317). 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 servidores onde TODO o contedo deve ter acesso pblico (seja leitura ou gravao) e o parmetro guest shares tambm funciona nativamente. As senhas criptografadas (encrypt passwords = 1) NO funcionaro no nvel share, lembre-se deste detalhe.

Captulo 18. SAMBA

310

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 nomes de usurios (veja Mapeamento de nomes de usurios on page 354). 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 seguintes 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 Descrio de parmetros usados em compartilhamento on page 317. 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 347). domain - Neste nvel, o acesso s ser permitido quando a mquina for adicionada ao domnio com o smbpasswd (Linux on page 364). 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 364 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 334). 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 melhor controle dos logs gerados (veja Variveis de substituio on page 315). Ex.: /var/log/samba/samba-log-%m. OBS: Se possvel coloque uma extenso no arquivo 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

311

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 opes 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 eleies netbios para denir o navegador de grupo local e controlador de domnio (veja Nveis de sistema para eleio de rede on page 314 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 pesquisa 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 domnio. Os valores que podem ser especicados so: yes, no e auto. O valor padro auto. Veja Domain Master Browser on page 326. 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. O valor 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 326. 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 navegador 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

312

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 congurao. Voc pode utilizar variveis de substituio, exceto %u, %P e %S (veja Variveis de substituio on page 315).

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 disponibilizado como um compartilhamento com o mesmo nome do usurio local. O diretrio home do usurio poder ser modicado com o uso de mapeamento de nomes, veja Mapeamento de nomes de usurios on page 354. 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 367 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 em compartilhamento on page 317). Abaixo segue mais um exemplo de seo [homes]: [homes] comment = Diretrio home de usurios writable = yes

Captulo 18. SAMBA

313

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 317. 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 nenhum caminho 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 353 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 individualmente. Para detalhes, veja Congurando o Linux como um servidor de impresso Windows on page 343. 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 vericar problemas no arquivo cd congurao do SAMBA (veja Buscando problemas na congurao on this 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 erros nas sees de congurao e te pedir para pressionar <ENTER> para ver um dump do arquivo:

Captulo 18. SAMBA

314

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 A sada acima indica que est tudo OK com todas as conguraes que foram realizadas no servidor. 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 sistema 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. O OS Level um nmero que caracterstico de cada sistema operacional cando entre 0 (mais baixo) e 255. Os nveis de acessos dos sistemas operacionais so os seguintes: Windows Windows Windows Windows for Workgroups 95 98 98 Second Edition 1 1 2 2

Windows Windows Windows Windows

2000 Server (standalone) 2000 Professional NT 4.0 Wks NT 3.51 Wks

16 16 17 16

Captulo 18. SAMBA

315

Windows NT 3.51 Server Windows NT 4.0 Server Windows 2000 Server (Domain Controller) SAMBA

32 33 32 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 311), isto garante que o SAMBA sempre 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, com adies 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 programao de scripts e tambm para criar arquivos de log personalizados, etc.

Captulo 18. SAMBA

316

%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 personalizados 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 possivelmente 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 Workgroups, 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 parmetros usados para realizar restries de compartilhamento, modo que os dados sero disponibilizados e tens de performance. A maior parte destes parmetros so empregados

Captulo 18. SAMBA

317

em servios do SAMBA, mas nada impede que tambm sejam colocado na seo [global] do arquivo de congurao, principalmente quando isto vlido para diversos servios compartilhados (veja Seo [global] on page 307).

18.3.1

Descrio de parmetros usados em compartilhamento

Abaixo o guia traz algumas das opes que podem ser 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 354). 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 351 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 parmetro 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 claros, recomendvel que este usurio no tenha acesso login ao sistema. Caso no tenha a inteno de ocultar o SAMBA na lista de mquinas da rede (fazendo apenas acesso direto aos recursos), especique um valor 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 Permitem aos usurios usurios se conectarem ao compartilhamento sem fornecer uma senha usando o usurio guest. O UID que o usurio guest ser mapeado especicado pelo parmetro guest account). Veja Criando um compartilhamento para acesso sem senha on page 347. 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 compartilhamento. 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 350 para mais detalhes. Ex: write list = gleydson, @usuarios - Permite acesso gravao somente do usurio gleydson e todos os usurios pertencentes ao grupo @usuarios. OBS: - O

Captulo 18. SAMBA

318

signicado de @ nos parmetros invalid users/valid users diferente das opes write list e read list. read list Lista de usurios separados por espao ou vrgula que podero apenas ler o compartilhamento. 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 350 para mais detalhes. Ex: read list = nobody, system, operador, @usuarios - Permite acesso de leitura somente do usurio nobody, system, operador e todos os usurios pertencentes ao grupo @usuarios. user Especica um ou mais nomes de usurios ou grupos (caso o nome seja seguido de @) para checagem de 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 opo. 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 usurios on page 346). 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 especicado 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 opo wide links). A desativao desta opo diminui um pouco a performance de acesso aos arquivos. Como restrita a compartilhamento, o impacto de segurana depende 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, evitando 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 simblicos. 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 todos 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

Captulo 18. SAMBA

319

uma explicao mais detalhada em Criando um compartilhamento com acesso somente leitura on page 348. Ex: read only = yes. create mask Modo padro para criao de arquivos no compartilhamento. O parmetro create mode um sinnimo para este. O modo de arquivos deve ser especicado em formato 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 nmero 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 compartilhamento/servidor on page 355 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 compartilhamento on page 352. postexec Executa um comando depois da utilizao do compartilhamento. Veja Executando comandos antes e aps o acesso ao compartilhamento on page 352. 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 com preexec. O valor padro no. Veja Executando comandos antes e aps o acesso ao compartilhamento on page 352. Exemplo: preexec close = yes. volume = nome Retorna o nome de volume especicado quando feito o acesso ao compartilhamento. 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 gerenciamento no to complicado. Acima deste nmero, recomendada a utilizao da congurao 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 327). 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

Captulo 18. SAMBA

320

local atravs de senhas e controle de IP. Quanto ao mtodo de senhas, voc pode optar tanto por usar senhas criptografadas (Ativando o suporte a senhas criptografadas on page 334) ou senhas em texto limpo (Ativando o suporte a senhas em texto plano on page 338). 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 (Buscando problemas na congurao on page 313) e reinicie o SAMBA (Iniciando o servidor/reiniciando/recarregando a congurao on page 302). O nome 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 309. 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 326). Para testar se o servidor est funcionando, digite o seguinte comando:

smbclient -L servidor -U usuario

Captulo 18. SAMBA

321

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 preocupado com a segurana da mquina, recomendo ler a Controle de acesso ao servidor SAMBA on page 343.

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 303). 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 the current page para detalhes sobre este arquivo). host - Faz a pesquisa no arquivo /etc/hosts e no DNS em busca do nome da mquina. wins - Pesquisa no servidor WINS especicado pelo parmetro wins server do smb.conf (veja WINS on page 323). bcast - Envia um pacote 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 parmetro 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 um banco de dados que mapeia o endereo IP com o nome NetBIOS de uma mquina, 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 arquivo lmhosts em sua 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 next 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 327). 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.

Captulo 18. SAMBA

322

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. 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 especiais 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 permanente 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

Captulo 18. SAMBA

323

cdigo hexadecimal que identica o servio de rede (veja nmblookup on page 360 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.

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, componentes 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 problemas 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 masquerade. 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 resolvido quando for escrito um mdulo de conntrack para conexes SAMBA (at o lanamento do kernel 2.4.22, isso ainda no ocorreu).

Captulo 18. SAMBA

324

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.

Congurando o Cliente WINS Para os clientes da rede (Linux, Windows, OS/2, etc.) fazer uso das vantagens da resoluo 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 arquivo /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 propriedades. 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 Propriedades. 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 seguinte parmetro na seo global do arquivo de congurao /etc/samba/smb.conf: [global] time server = yes

Captulo 18. SAMBA

325

Para sincronizar a data/hora das estaes de trabalho usando o servidor samba, veja Sincronizando a data/hora no Cliente on this 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. OBS recomendvel instalar um cliente ntp para manter o relgio do servidor sempre atualizado, 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 controle de todas as contas de usurios/grupos e permisses para acesso a rede NetBEUI. O acesso desta forma centralizado, como vantagem disto 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 330). 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 328). Isto s possvel em clientes Linux, Windows NT, Windows 2000 e Windows XP.

Captulo 18. SAMBA

326

Voc poder usar pers mveis, copiando todas as personalizaes do seu desktop para qualquer mquina na rede que voc faa o logon. Para o administrador, ele poder denir polticas 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 330). Se voc deseja iniciar logo a congurao do seu domnio, siga at Congurando um servidor PDC no SAMBA on the facing 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 314). Logo que declarada o local master browser, ela comea a receber 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 compartilhamentos. 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 360). OBS: O Windows 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 browser. 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 ;-)

Captulo 18. SAMBA

327

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 :-)) 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 334. 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 mquinas 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 319). security = user - Requerido para controle de acesso por domnio, j que utilizado 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 domnio. Veja Domain Master Browser on the preceding 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 311. 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 313) e corrija-os se existir. Resta agora reiniciar

Captulo 18. SAMBA

328

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 this page e Congurando clientes em Domnio on page 361.

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. A nica forma de se evitar isto logar imediatamente no domnio NT assim que 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 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 SAMBA seja 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 criao 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 importante: 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 facing page)! como a mquina ainda no se autenticou pela primeira vez, qualquer mquina que tenha o mesmo nome e entre no domnio, poder 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 361 para colocar seus clientes em domnio.

Captulo 18. SAMBA

329

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. 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 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 this 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 especicar que contas de usurios do arquivo /etc/samba/smbpasswd que tero poderes administrativos, 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 feitas 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 especicado 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:

Captulo 18. SAMBA

330

[global] ... 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 361) 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 deseje 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 domnio, 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 adicionado no arquivo smbpasswd para que possa fazer isto e obviamente no dever estar listado em invalid users. Mesmo assim, existem outras 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 programas, executar anti-vrus, mapear compartilhamentos automaticamente no clientes, etc. A programao de scripts de logon feita usando a linguagem em lote do DOS, com possibilidades 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 funcionamento do recurso de logon:

Captulo 18. SAMBA

331

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 somente 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 compartilhamento [netlogon] (/pub/samba/netlogon no exemplo). Os scripts de logon 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

332

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 palavra 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

333

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 automaticamente 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 mantidas, isto requerido para os proles. O compartilhamento dos 2 proles pode ser feito sem tantos traumas, mas isto no ser explicado 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 modicando 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 endereo IP do servidor de senhas (password server = IP).

Captulo 18. SAMBA

334

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 um servidor PDC ou um cliente de um domnio. 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 353. 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 336 para facilitar o processo de migrao de contas. O utilitrio smbpasswd o programa utilizado para gerenciar este arquivo de senhas e tambm 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

335

4 5

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. 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 DESATIVADAS por segurana quando este novo arquivo criado. O novo arquivo ter o seguinte formato: gleydson:1020:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXX geovani:1004:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXX 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 following page) D - Signica que a conta foi desativada com a opo -d (veja Desabilitando uma conta no smbpasswd on page 337). W - Especica que a conta uma conta de mquina criada com a opo -m (veja Contas de mquinas de domnio on page 328). N - A conta no possui senha (veja Denindo acesso sem senha para o usurio on page 338). 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. Para ativar a conta do usurio gleydson, usamos o comando: smbpasswd -U gleydson Digite a senha do usurio e repita para conrmar. Assim que a senha for denida, a conta do usurio ativada. Voc tambm pode especicar a opo -s para entrar com a senha pela entrada padro (muito til em scripts). Apenas tenha cuidado para que esta senha no seja divulgada em seus arquivos/processos. Reinicie o processo do SAMBA (veja Iniciando o servidor/reiniciando/recarregando a congurao on page 302). 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

336

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 denida 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 perguntando qual a vantagem de se ter um arquivo separado de usurios se ainda preciso criar o login nos dois arquivos; O SAMBA 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 arquivos 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 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 seguro 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. interessante 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

337

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 the current 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 esquecem 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

338

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 novas destas implementaes enviam a senha em formato criptografado, sendo necessrio tambm usar o formato criptografado no SAMBA para que possa se autenticar (veja Ativando o suporte a senhas criptografadas on page 334). Em Senhas criptografadas ou em texto puro? on page 353 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 302) 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 autenticao em texto plano. Atualmente o guia cobre os seguintes clientes: Lan Manager on the next page Windows for Workgroups on the facing page Windows 95 / Windows 95A on the next page Windows 95B on the facing page Windows 98/98SE on the next page

Captulo 18. SAMBA

339

Windows ME on the following page Windows NT Server/WorkStation on the next page Windows 2000 on the following page Linux on the next 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 nenhuma alterao especca (mas desconheo algo que faa-o trabalhar com senhas criptografadas).

Windows 95 / Windows 95A O Windows 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: win95-textoplano.reg e reinicie o computador para fazer efeito. regedit

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 this page.

Captulo 18. SAMBA

340

Windows ME O procedimento idntico ao Windows 95B on the previous 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: winNT-textoplano.reg e reinicie o computador para fazer efeito.

regedit

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\Parame "EnablePlainTextPassword"=dword:00000001

Aps isto, execute no Windows 2000 o seguinte comando: win2000-textoplano.reg e reinicie o computador para fazer efeito.

regedit

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 334.

Captulo 18. SAMBA

341

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 permite 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 domnio. Este parmetro somente tem sentido quando usado em conjunto com um PDC Windows ou quando os mdulos pam_winbind.so e nss_winbind.so esto sendo utilizados.

Captulo 18. SAMBA

342

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 intervalo 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 usurios 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 usurios 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 problemas. 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 com o uso de LDAP e NIS) responda yes para no ter problemas. template homedir Quando o sistema cliente for um Windows NT ou baseado, este diretrio ser retornado como diretrio de usurio para o sistema. O parmetro %D ser 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 comando 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 364 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 digitando: wbinfo -u wbinfo -g getent passwd

Captulo 18. SAMBA

343

getent group 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 usurios/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 funcionar. 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 compartilhamento 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 modicando 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 impresso) 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

344

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 329).

18.12.2

Restringindo o acesso por IP/rede

Esta restrio pode ser feita pelos parmetros allow hosts e deny hosts tanto em servios individuais 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 permitidos 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 um ou 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 especicadas 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. Provavelmente deve ter notado porque o endereo de loopback no pode ser bloqueado e as conseqncias 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 56. 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 313).

Captulo 18. SAMBA

345

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) Allow connection from /etc/samba/smb.conf (focalinux) Allow connection from /etc/samba/smb.conf (focalinux) Allow connection from /etc/samba/smb.conf (focalinux)

to to to to

homes printers tmp 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 preceding page sero analisadas logo aps esta checagem. Para restringir o servio SAMBA a 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 exemplo, 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 em todas as interfaces que permitem broadcast exceto a loopback.

Captulo 18. SAMBA

346

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. O caracter @ 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 primeiro no /etc/group e em seguida no NIS. invalid users = @semacesso Bloqueia o acesso dos usurios que pertencem ao grupo semacesso. 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 A segurana 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

347

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 complicado 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 388). 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 impressoras, arquivos comuns, um diretrio temporrio, etc. Para congurar um acesso pblico utilizamos a opo public = yes ou guest ok = yes (que um sinnimo para o ltimo comando). O UID utilizado 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 arquivos/diretrios no sistema, no possui login, senha ou sequer um diretrio home. Veja um exemplo disponibilizando o compartilhamento [download] para acesso pblico com acesso a gravao: [global] guest account = nobody

Captulo 18. SAMBA

348

.. .. [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 recomendado 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 arquivos 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 353.

18.12.8

Criando um compartilhamento com acesso somente leitura

Esta proteo til quando no desejamos que pessoas alterem o contedo de um compartilhamento. Isto pode ser feito de duas formas: negando o acesso de gravao para todo o compartilhamento 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

349

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 following 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 next page).

Captulo 18. SAMBA

350

18.12.10

Excesso de acesso na permisso padro de compartilhamento

possvel alterar o nvel de acesso para determinados usurios/grupos em um compartilhamento, para entender melhor: Caso tenha criado um compartilhamento somente leitura e queira permitir que apenas alguns usurios ou grupos tenham acesso a gravao, isto possvel 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 facing 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 compartilhamentos. 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

351

[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 mquina na faixa de rede 192.168.1.0/24. Para forar a autenticao para acesso a estes servios: [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 compartilhamento) 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

352

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 listagem de compartilhamentos 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 compartilhamento para criar um compartilhamento oculto (como teste$) o SAMBA cria um compartilhamento 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 praticidade 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 gavetas 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-ROM ser 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 CDROM 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

353

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 independentes 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 SAMBA se extendem alm do simples compartilhamento 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 realmente 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 modicando chaves no registro das mquinas clientes (veja Ativando o suporte a senhas em texto plano on page 338 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

354

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 conexes especicando diretamente o \\servidor\compartilhamento) modique sua congurao do SAMBA para autenticar usando senhas criptografadas (veja Ativando o suporte a senhas criptografadas on page 334) 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 principais. 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 compartilhamento. Somente uma conta Unix poder ser utilizada. O parmetro da direita do sinal de = pode conter um ou mais nomes de usurios separados 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 usur # samba. samba = @smb-users

Captulo 18. SAMBA

355

# 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 gravao/leitura de arquivos. Este cache feito pela opo write cache size e funciona fazendo 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 compartilhamentos). 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 ([publico]), 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 performance 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

356

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 impacto 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 performance 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 perfeitamente com o seu servidor. Sero explicadas tanto a congurao de grupo de trabalho como

Captulo 18. SAMBA

357

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 compartilhamento, 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 enviada 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 diretiva include = outro_arquivo_de_configurao.%m para denir conguraes especcas 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 the current page Windows XP Home Edition on the following page Windows XP Professional Edition on the next page Windows XP Server Edition on the following page Windows NT WorkStation on page 359 Windows NT Server on page 359 Windows 2000 Professional on page 359 Windows 2000 Server on page 359 Linux on page 359 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 verso que acompanha o WinSock do Windows 95. Para tornar uma mquina parte do grupo de trabalho, siga os seguintes passos:

Captulo 18. SAMBA

358

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 utilizaremos 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 compartilhamento (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: \\computador

Windows XP Home Edition Siga as instrues de Windows XP Professional Edition on this 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 identicar 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 the current page.

Captulo 18. SAMBA

359

Windows NT WorkStation Veja Windows NT Server on page 364. 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 identicar 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 identicar 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

360

grcos, como o Ambiente de Rede do Windows ou mais poderosos, veja Programas de navegao grcos on page 366. 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 compartilhado 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 senha 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 compartilhamentos 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 compartilhamentos 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 envia a senha teste1 para fazer a conexo diretamente. Caso receba a mensagem NT Status Access Denied, isto quer dizer que no possui direitos 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 com uma conta vlida de usurio existente na mquina. OBS:Note que a ordem das opes faz diferena no smbmount.

Captulo 18. SAMBA

361

nmblookup Esta uma ferramenta usada para procurar nomes de cliente usando o endereo 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 executado 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, Windows XP, Windows 2k ou Linux). Veja Contas de mquinas de domnio on page 328 para maiores detalhes. Como o Windows 3.11, Windows 95, Windows 98, Windows ME no possuem uma conta de mquina, eles nunca sero um membro real de um domnio, podendo sofrer um name 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 357 Windows XP Home Edition on page 358 Windows XP Professional Edition on page 358 Windows XP Server Edition on page 358 Windows NT WorkStation on page 359 Windows NT Server on page 359 Windows 2000 Professional on page 359

Captulo 18. SAMBA

362

Windows 2000 Server on page 359 Linux on page 359 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 verso 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 utilizaremos 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 Cliente 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 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 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 usurio 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

363

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 358. 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\para "RequireSignOrSeal"=dword:00000000 "SignSecureChannel"=dword:00000000 2 Execute o comando regedit WinXP-Dom.reg no cliente XP. Entre nos tens (em seqencia) 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 com poderes administrativos que podem inserir/remover mquinas do domnio. Clique em OK e aguarde a mensagem conrmando sua entrada no domnio. Ser necessrio reiniciar a mquina aps concluir este passo.

Windows XP Server Edition Siga os procedimentos documentados em Windows XP Professional Edition on the current page

Windows NT WorkStation Veja os passos em Windows NT Server on the following page.

Captulo 18. SAMBA

364

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 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 328). 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 this 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 359. 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 com poderes administrativos que podem inserir/remover mquinas do domnio. Clique em OK e aguarde a mensagem conrmando sua entrada no domnio. Ser necessrio 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 modicar as seguintes linhas na seo [global]:

Captulo 18. SAMBA

365

[global] workgroup = nome_domnio security = domain 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 *, assim o SAMBA tentar descobrir o servidor PDC e BDC automaticamente, 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 com poderes 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 this page. OBS:O SAMBA envia primeiramente um usurio/senha falso para vericar se o servidor rejeita 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 359. Note que no obrigatrio realizar as conguraes acima para acessar os recursos de uma mquina em domnio, 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 mquina no domnio no foi criada. Veja Contas de mquinas de domnio on page 328 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 mquina SAMBA cliente de um domnio NT.

Captulo 18. SAMBA

366

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 permisses para ingressar uma mquina no domnio (veja Criando uma conta de administrador de domnio on page 329). Caso esteja usando um cliente SAMBA, verique se o 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

O smbclient, 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 mquinas em forma de rvore. Ele tambm permite a montagem de compartilhamentos remotos. Caso precise de recursos mais complexos e autenticao, recomendo o TkSmb on this 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, montagem de recursos, etc.

18.14.6

Cliente de congurao grcos

So ferramentas que permitem a congurao do samba usando a interface grca. Isto facilita 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 funcionamento de cada opo e ajustes e organizao feita diretamente no arquivo de congurao.

Captulo 18. SAMBA

367

gnosamba Ferramenta de congurao grca usando o GNOME. Com ele possvel denir conguraes localmente. Ele ocupa pouco espao em disco, e se voc gosta de GTK, este o recomendado. As opes do SAMBA so divididas em categorias facilitando sua localizao e uso.

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 navegador 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 parmetros 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.

Captulo 18. SAMBA

368

[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 compatibi # enviando somente a senha para acesso ao recurso, determinando o nome de usu # de outras formas 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 antigo # 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 padr # 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" ([tempora # 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 br