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