Escolar Documentos
Profissional Documentos
Cultura Documentos
Focalinux (Avancado) PDF
Focalinux (Avancado) PDF
Resumo
Este documento tem por objetivo ser uma referncia ao aprendizado do usurio e um guia
de consulta, operao e configurao de sistemas Linux (e outros tipos de *ix). A ltima ver-
so deste guia pode ser encontrada na Pgina Oficial do Foca GNU/Linux (http://www.
guiafoca.org). Novas verses so lanadas com uma freqncia mensal e voc pode rece-
ber avisos de novos lanamentos deste guia preenchendo um formulrio na pgina Web.
Nota de Copyright
Sumrio
1 Introduo 1
1.1 Consideraes sobre o nvel Avanado . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Pr-requisitos para a utilizao deste guia . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 O Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3.1 Algumas Caractersticas do Linux . . . . . . . . . . . . . . . . . . . . . . . 5
2 Explicaes Bsicas 9
2.1 Monitorando os logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1 Destruindo arquivos/parties de forma segura . . . . . . . . . . . . . . . 9
2.2 Curingas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3 Hardware 13
3.1 Placa de expanso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 Nomes de dispositivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3 Configurao de Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3.1 IRQ - Requisio de Interrupo . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3.2 DMA - Acesso Direto a Memria . . . . . . . . . . . . . . . . . . . . . . . . 17
3.3.3 I/O - Porta de Entrada/Sada . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.4 Hardwares configurveis por jumpers, dip-switches, jumperless e Plug-and-Play. 19
3.4.1 Jumpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.4.2 Dip-Switches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.4.3 Jumperless (sem jumper) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.4.4 Plug-and-Play . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.5 Listando as placas e outros hardwares em um computador . . . . . . . . . . . . . 21
SUMRIO ii
4 Rede 41
4.1 O que uma rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.2 Protocolo de Rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.3 Endereo IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.3.1 Classes de Rede IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.3.2 Referncia rpida de mscara de redes . . . . . . . . . . . . . . . . . . . . . 43
SUMRIO iii
4.3.3 Para instalar uma mquina usando o Linux em uma rede existente . . . . 44
4.3.4 Endereos reservados para uso em uma rede Privada . . . . . . . . . . . . 44
4.4 Interface de rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.4.1 A interface loopback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.4.2 Atribuindo um endereo de rede a uma interface (ifconfig) . . . . . . . . . 46
4.5 Roteamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.5.1 Configurando uma rota no Linux . . . . . . . . . . . . . . . . . . . . . . . . 47
4.6 Resolvedor de nomes (DNS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.6.1 O que um nome? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.6.2 Arquivos de configurao usados na resoluo de nomes . . . . . . . . . . 49
4.6.3 Executando um servidor de nomes . . . . . . . . . . . . . . . . . . . . . . . 52
4.7 Servios de Rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.7.1 Servios iniciados como Daemons de rede . . . . . . . . . . . . . . . . . . 52
4.7.2 Servios iniciados atravs do inetd . . . . . . . . . . . . . . . . . . . . . . . 52
4.8 Segurana da Rede e controle de Acesso . . . . . . . . . . . . . . . . . . . . . . . . 55
4.8.1 /etc/ftpusers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.8.2 /etc/securetty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.8.3 O mecanismo de controle de acessos tcpd . . . . . . . . . . . . . . . . . . . 56
4.8.4 Firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.9 Outros arquivos de configurao relacionados com a rede . . . . . . . . . . . . . . 61
4.9.1 /etc/services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.9.2 /etc/protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.10 Camadas de Rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.11 RFCs de referncia sobre protocolos de rede . . . . . . . . . . . . . . . . . . . . . . 62
8 Personalizao do Sistema 93
8.1 Variveis de Ambientes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
8.2 Modificando o Idioma usado em seu sistema . . . . . . . . . . . . . . . . . . . . . 93
SUMRIO v
8.3 alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
8.4 Arquivo /etc/profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
8.5 Arquivo .bash_profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
8.6 Arquivo .bashrc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
8.7 Arquivo .hushlogin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
8.8 Arquivo /etc/environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
8.9 Diretrio /etc/skel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
9 Impresso 99
9.1 Portas de impressora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
9.2 Imprimindo diretamente para a porta de impressora . . . . . . . . . . . . . . . . . 99
9.3 Imprimindo via spool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
9.4 Impresso em modo grfico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
9.4.1 Ghost Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
9.5 Magic Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
9.5.1 Instalao e configurao do Magic Filter . . . . . . . . . . . . . . . . . . . 103
9.5.2 Outros detalhes tcnicos sobre o Magic Filter . . . . . . . . . . . . . . . . . 104
9.6 Impresso remota . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
9.6.1 Dando permisso para impreso remota via lpd/lprng . . . . . . . . . . . 105
9.6.2 Impresso via rlpr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
9.6.3 Impresso via printcap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
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.10.13Anonymous_LogEmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
12.10.14CookieLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
12.10.15Relatrio grfico de acesso ao sistema . . . . . . . . . . . . . . . . . . . . . 204
12.11Configurando 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 criptografia 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 certificado digital . . . . . . . . . . . . . . . . . . . . . . . . . 213
12.13.4 Exemplo de configurao 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 configurao 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
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 configurao . . . . . . 278
17.1.10 Opes de linha de comando . . . . . . . . . . . . . . . . . . . . . . . . . . 278
17.2 Servidor de CVS - configurando 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 Configurando 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
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
21 Apndice 419
21.1 Sobre este guia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
SUMRIO xx
Captulo 1
Introduo
Bem vindo ao guia Foca GNU/Linux. O nome FOCA significa 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:
Principais tipos de ataques para descoberta de senhas e alguns mtodos de como evita-
las (Senhas fceis de adivinhar e escolha de boas senhas on page 164).
Integrar mquinas Windows e Linux em uma mesma rede compartilhando dados entre
si e impresso (SAMBA on page 299).
Servidor de acesso para permitir o acesso a distncia a seu computador com criptografia
usando o ssh (Servidor ssh on page 251).
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).
Uso de grupos dos sistema para restries de acesso (Restries de acesso a progra-
mas/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 3
Uso do sudo para dar privilgio de execuo de programas como root a determinados
usurios (Dando poderes de root para executar determinados programas on page 386).
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
ficha do aviso de atualizaes na pgina web em Pgina Oficial do guia Foca GNU/Linux
(http://www.guiafoca.org) no fim da pgina principal. Aps preencher a ficha do aviso
de atualizaes, voc receber um e-mail sobre o lanamento de novas verses do guia e o
que foi modificado, desta forma voc poder decidir em copia-la caso a nova verso contenha
modificaes 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 certificao que aborda comandos, servios, configuraes, segurana, em-
pacotamento, criptografia, etc.
Este guia foi compilado incluindo o nvel Avanado do guia FOCA GNU/Linux, ele no tem
a inteno de focar na configurao de servios, servidores, aplicativos, nem garantia que ele
atender a determinada finalidade especfica do usurio (principalmente de uma rede, que
depende de uma perfeita compreenso para adaptao de acordo com os requisitos de uma in-
stalao local). Seu foco principal a instalao do servio, abordando consideraes voltadas
a segurana, e exemplos de configurao 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 fim de que tudo funcione corretamente.
Entretanto, na maioria dos casos, as explicaes relacionadas a uma verso de um programa
so inteiramente vlidas em uma nova verso.
Captulo 1. Introduo 4
assumido que voc ja tenha experincia na configurao de sistemas Linux, conhea boa
parte dos comandos e sua utilizao, tenha noes de rede e saiba como procurar documen-
tao para complementar o que vem aprendendo. Enfim, 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
especficas sobre determinadas reas do sistema.
Este guia no cobre a instalao do sistema. Para detalhes sobre instalao, consulte a docu-
mentao que acompanha sua distribuio GNU/Linux.
1.3 O Linux
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 eficiente e rpido do que qualquer
programa comercial disponvel no mercado. Existem milhares de consultores e empresas espe-
cializadas 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.
Captulo 2
Explicaes Bsicas
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 acon-
tece com as parties, que podem ser recuperadas com facilidade (isto explicado no nvel
Intermedirio do guia). Esta recuperao proporcionada pelas regras de funcionamento do
sistema de arquivos e do esquema de particionamento, ou seja, so permitidas pelo SO.
Vou um pouco mais alm: O disco rgido uma mdia magntica e opera de forma mecnica
para ler/gravar dados. Quando um arquivo apagado, seja por qualquer motivo, ainda
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 dificultar
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 criptografia como o DM-CRYPTO, crypto-
loop, gpg, etc.
OBS3: Caso esteja usando um sistema de arquivos criptografado, estes procedimentos so
quase desnecessrios (dependendo do nvel de segurana e algortmos que voc utiliza).
2.2 Curingas
Curingas (ou referncia global) um recurso usado para especificar um ou mais arquivos ou
diretrios do sistema de uma s vez. Este um recurso permite que voc faa a filtragem do
que ser listado, copiado, apagado, etc. So usados 4 tipos de curingas no GNU/Linux:
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 especificar 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 tam-
bm 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 filtragem mais exata, pois o coringa ?
especifica qualquer caracter naquela posio e [] especifica 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 qual-
quer caracter na posio do coringa ? e terminem com .new.
3 ls teste[4,5].* que lista todos os arquivos que comeam com teste contenham
nmeros de 4 e 5 naquela posio e terminem com qualquer extenso.
Existem muitas outras formas de se fazer a mesma coisa, isto depende do gosto de cada um. O
que pretendi fazer aqui foi mostrar como especificar 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 configurao de hardwares, escolha de bons hardwares, disposi-
tivos for Windows, etc.
um circuito eletrnico encaixado na placa me que tem por objetivo adicionar novas fun-
cionalidades 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
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
Seria terrvel se ao configurar 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
configurar corretamente o modem, com sua porta I/O 0x2F8 e IRQ 3, ele identificado auto-
maticamente por /dev/ttyS1 (equivalente a COM2 no DOS). Daqui para frente basta se referir
a /dev/ttyS1 para fazer alguma coisa com o modem.
Voc tambm pode fazer um link de /dev/ttyS1 para um arquivo chamado /dev/modem
usando: ln -s /dev/ttyS1 /dev/modem, faa a configurao dos seus programas usando
/dev/modem ao invs de /dev/ttyS1 e se precisar reconfigurar 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 reconfigurar os programas que usam o modem pois eles esto usando
/dev/modem que est apontando para a localizao correta. Isto muito til para um bom
gerenciamento do sistema.
Abaixo uma tabela com o nome do dispositivo no GNU/Linux, portas I/O, IRQ, DMA e nome
do dispositivo no DOS (os nomes de dispositivos esto localizados no diretrio /dev):
Dispos. Dispos.
Linux DOS IRQ DMA I/O
Dispositivos PCI, PCI Express, AMR, CNR possuem configurao automtica de recursos de
hardware, podendo apenas ser ligados na mquina para serem reconhecidos pela placa me.
Aps isso dever ser feita a configurao do mdulo do kernel para que o hardware funcione
corretamente.
Os parmetros dos mdulos do kernel usados para configurar 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.
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 opera-
cional. Estas interrupes oferecem ao dispositivo associado a capacidade de interromper o
que o processador estiver fazendo, pedindo ateno imediata.
As interrupes do sistema podem ser visualizadas no kernel com o comando cat
/proc/interrupts. Abaixo um resumo do uso mais comum das 16 interrupes de hard-
ware:
01 Teclado - Fixa
09 Esta uma ponte para IRQ2 e deve ser a ltima IRQ a ser
utilizada. No entanto pode ser usada por dispositivos.
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.
Conflitos 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 conflito de
IRQs, deve-se conhecer quais IRQs esto sendo usadas por quais dispositivos (usando cat
/proc/interrupts) e configurar as interrupes de forma que uma no entre em conflito
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 in-
terrupo para uma interrupo normal do sistema (normalmente usando alguma interrupo
entre a IRQ 9 e IRQ 12) ou usando APIC (se estiver configurado).
Cada IRQ no sistema tem um nmero que identifica a prioridade que ser atendida pelo pro-
cessador. Nos antigos sistemas XT as prioridades eram identificadas 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
IRQ 0 1 2 (9 10 11 12 13 14 15) 3 4 5 6 7 8
PRI 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Note que a prioridade segue em seqncia atravs da ponte da IRQ 2 para IRQ 9. Os disposi-
tivos com prioridade mais baixa so atendidos primeiro, mas uma diferena de desempenho
praticamente imperceptvel de ser notada nos sistemas atuais.
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 ofer-
ece 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
Somente dispositivos ISA e derivados dele, como o EISA e VESA, usam os canais de DMA
padro. Os atuais dispositivos de alta taxa de transferncia (normalmente PCI) possuem seu
prprio controlador de DMA embutido, muito mais rpido do que a DMA padro. Este con-
trolador de DMA chamado de Bus Mastering e muito usado nos discos rgidos atuais e pode
atingir taxas de 33,3MB/s (no modo 2) e 66MB/s (no modo 4 - requer um cabo IDE com ater-
ramento para evitar interferncias de rudos externos).
Conflitos de DMA
Um canal de DMA no pode ser compartilhado entre dispositivos. Ainda possvel configurar
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, prefira aqueles que utilizam seus prprios
recursos.
Quando ocorre um conflito de DMA, os dados podem ser misturados e ocorrerem coisas es-
tranhas at o travamento total do sistema. Este tipo de conflito difcil de se diagnosticar, a no
ser que o tcnico seja experiente o bastante e tenha desconfiado do que o problema se trata. . .
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.1 Jumpers
Hardwares configurveis por jumpers (pinos metlicos protegidos por uma capa plstica) tem
sua configurao 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 atual-
mente devido a configurao Plug and Play de dispositivos PCI, PCI express, etc.
As disposio dos jumpers so normalmente definidas em fechado/aberto e multi-posio. Na
disposio fechado/aberto, o jumper pode ou no ser colocado, definindo a configurao do
dispositivo:
::|::
obtendo um excelente manual de instrues. Nesta hora a experincia conta mais que o uso de
programas de diagnstico.
3.4.2 Dip-Switches
a mesma coisa que os hardwares configurveis por jumpers exceto que so usados dip-
switches no lugar de jumpers. O dip-switches um conjunto de chaves numeradas que po-
dem ser colocadas para cima ou para baixo (como um disjuntor ou vrios interruptores
LIGA/DESLIGA colocados um ao lado do outro) para se modificar a configurao do disposi-
tivo.
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
Veja a prxima seo para entender como funciona o arquivo de configurao isapnp.conf
e assim poder ativar seu dispositivo Plug-and-Play.
Captulo 3. Hardware 21
Ocorre quando um ou mais dispositivos usam a mesma IRQ, I/O ou DMA. Um sistema com
configuraes de hardware em conflito tem seu funcionamento instvel, travamentos con-
stantes, mal funcionamento de um ou mais dispositivos e at mesmo, em casos mais graves,
a perda de dados. Conflitos geralmente ocorriam em placas ISA, VESA onde era necessrio
conhecer e usar uma tabela de valores padres para a configurao de perifricos (como a
mostrada no inicio desse captulo).
Para resolver conflitos de hardware necessrio conhecer a configurao de cada dispos-
itivo em seu sistema. Os comandos cat /proc/interrupts, cat /proc/dma e cat
/proc/ioports podem ser teis para se verificar as configuraes 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 en-
caixe extra no final. Sua taxa de transferncia pode chegar a 132MB/s.
Captulo 3. Hardware 22
distinguir as caractersticas, funes e vantagens entre uma placa de boa qualidade e um hard-
ware for Windows a no ser o preo mais barato.
Esta seo foi retirada do manual de instalao da Debian GNU/Linux. Uma tendncia que
perturba a proliferao de Modens e impressoras especficos para Windows. Em muitos
casos estes so especialmente fabricados para operar com o Sistema Operacional Microsoft
Windows e costumam ter a legenda WinModem, for Windows, ou Feito especialmente
para computadores baseados no Windows.
Geralmente estes dispositivos so feitos retirando os processadores embutidos daquele hard-
ware e o trabalho deles so feitos por drivers do Windows que so executados pelo processador
principal do computador. Esta estratgia torna o hardware menos caro, mas o que poupado
no passado para o usurio e este hardware pode at mesmo ser mais caro quanto disposi-
tivos equivalentes que possuem inteligncia embutida.
Voc deve evitar o hardware baseado no Windows por duas razes:
2 A segunda razo que quando estes dispositivos tem os processadores embutidos re-
movidos, o sistema operacional deve fazer o trabalho dos processadores embutidos, fre-
qentemente em prioridade de tempo real, e assim a CPU no esta disponvel para exe-
cutar 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 sim-
plesmente no note a carga de trabalho que este hardware pe naquela CPU. No entanto,
qualquer sistema operacional de multi-processamento, at mesmo Windows 9X, XP e
Vista, so prejudicados quando fabricantes de perifricos retiram o processador embu-
tido de suas placas e colocam o processamento do hardware na CPU.
Voc pode ajudar a reverter esta situao encorajando estes fabricantes a lanarem a documen-
tao e outros recursos necessrios para ns desenvolvermos drivers para estes hardwares,
mas a melhor estratgia simplesmente evitar estes tipos de hardwares at que ele esteja lis-
tado no HOWTO de hardwares compatveis com Linux.
Note que hoje j existem muitos drivers para WinModems e outros hardwares for Windows
para o Linux. Veja a lista de hardwares compatveis no HARDWARE-HOWTO ou procure o
driver no site do fabricante de seu dispositivo. Mesmo assim a dica evitar hardwares for
Windows e comprar hardwares inteligentes onde cada um faz sua funo sem carregar a CPU.
Captulo 3. Hardware 25
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 li-
cena 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 com-
putador usado, importante verificar se os hardwares existentes so suportados pelo kernel
do GNU/Linux. Verifique 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.
OSS o presente por padro desde que o suporte a som foi includo no kernel. Para configurar
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 identificar 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 configurar sua placa de som
no sistema:
Captulo 3. Hardware 27
1 Primeiro descubra se sua placa de som ISA. Caso seja, verifique se os seus recursos
esto alocados corretamente (veja Conflitos 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 especificado o recurso de hardware sejam passados para seu mdulo,
ou simplesmente voc quer especificar isto para manter o uso de hardware sobre seu
controle. Alguns dos parmetros mais usados em placas Sound Blaster so os seguintes:
modprobe sb io=0x220 irq=5 dma=1 dma16=5 mpu_io=0x330
Para evitar ter que passar estes parmetros todas as vezes para o mdulo, voc poder
coloca-los no arquivo /etc/modules.conf da seguinte forma:
options sb io=0x220 irq=5 dma=1 dma16=5 mpu_io=0x330
Assim, quando der o comando modprobe sb ele ser carregado com as opes acima.
Na distribuio Debian, voc dever criar um arquivo chamado /etc/modutils/sb
contendo a linha acima, depois execute o update-modules para juntar todos os ar-
quivos do /etc/modutils e criar o /etc/modules.conf.
3 Aps carregar o mdulo correto de sua placa de som, seu sistema de som dever estar
funcionando. Se voc utiliza uma distribuio Linux, os dispositivos de 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, tonali-
dade e outros recursos de sua placa de som. O recomendado o aumix por ser simples,
pequeno e funcional, e permitindo restaurar os valores dos nveis de volumes na inicial-
izao (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 .
Caso seu gravador seja IDE, veja Configurando o suporte a um gravador IDE on this page
caso seja um autntico gravador com barramento SCSI, v at Configurando o suporte a um
gravador SCSI on the next page.
Caso tenha um gravador IDE e use um kernel 2.6 ou superior, no necessrio fazer qual-
quer configurao, 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 configurao da unidade IDE com emulao SCSI, assim como utilizava no kernel
2.4 e inferiores seguindo as instrues abaixo.
Para configurar 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
Caso tenha um autentico gravador SCSI, no ser preciso fazer qualquer configurao de em-
ulao, 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
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 verificar se sua unidade de CD-ROM detectada.
Voc dever ver uma linha como:
scsibus0:
0,0,0 0) CREATIVE CD-RW RWXXXX 1.00 Removable CD-ROM
0,1,0 1) *
0,2,0 2) *
O que significa 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.
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 sofisticados (veja Configurando 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.
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 es-
pecial.
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 confirmar isto vendo
um conector branco de 3 terminais instalado na placa que o local onde o cabo wake-up
conectado.
Suporte na BIOS tambm dever ter a opo para WakeUP-on-Lan.
Com todos esses tens existentes, instale em uma mquina da rede o pacote etherwake. De-
pois disso, pegue o MAC address a placa de rede da mquina que tem o wakeup on lan e na
mquina da rede onde instalou o pacote execute o seguinte comando:
ether-wake AA:BB:CC:DD:EE:FF
3.12 Aterramento
O aterramento correto da instalao eltrica essencial para garantir a proteo de seu micro-
computador (e outros aparelhos que requerem isto). Muitos usurios simplesmente removem
o pino central da tomada de seu computador, ou ligam o terra junto ao neutro da rede 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 cor-
rente 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 suficiente 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 dificuldades
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 ex-
tremidade positiva da rede eltrica (fase) e a outra ponta no fio da barra de cobre. O ater-
ramento est bem feito quando a lmpada acender quase em sua potncia total. Ligue o
fio 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 fio 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 desconfiar das condies do
solo, use uma barra maior ou ligue 2 barras de cobre juntas.
A tabela abaixo est classificada em ordem do material que possui melhor conduo de eletri-
cidade (eltrons com circulaos livres) baseada no fator mm2/m. (da mais condutora para a
menos condutora).
1 Prata - 0,0164
2 Cobre - 0,0172
3 Ouro - 0,0230
4 Alumnio - 0,0283
5 Zinco - 0,0600
6 Platina - 0,0950
7 Ferro - 0,1200
8 Chumbo - 0,2100
9 mercrio - 0,9680
3.13 Tomadas
As tomadas eltricas de 127V ou 220V AC 60Hz de trs pinos, pelas normas tcnicas da ABNT,
no. ABNT 6147 devem ficar distantes no mximo a 1,5 metro dos equipamentos e com terceiro
pino ligado terra. interessante que a tenso das tomadas esteja identificada 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 fios da maioria dos
equipamentos fabricados estaro desta forma voltados para baixo.
127v 220v
Captulo 3. Hardware 33
+-----------+ +-----------+
Terra ---+----(_) | Terra ---+----(_) |
| _ _ | | _ _ |
| _| | | |_ | | _| | | |_ |
Fase ---+(_ | | _)+--- Neutro Fase ---+(_ | | _)+--- Fase
| |_| |_| | | |_| |_| |
| _ | | _ |
+-----------+ +-----------+
a energia que se acumula durante o choque das molculas de ar seco ou atrito com outros ob-
jetos. 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 eficaz 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.1 Particionamento
Para um melhor desempenho, os dados que so solicitados constantemente devero ser ar-
mazenados em uma partio no inicio do disco rgido. Esta rea a mais rpida e checa a ser
60% mais rpida que o final 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 - /boot
R - Raz /
S - Swap
U - /usr
Mas a swap no ficaria ainda mais rpida sendo a primeira partio no disco? Sim e no:
Realmente fica 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).
/dev/hdb:
multcount = 0 (off)
I/O support = 0 (16-bit)
unmaskirq = 0 (off)
using_dma = 1 (off)
keepsettings = 0 (off)
nowerr = 0 (off)
readonly = 0 (off)
readahead = 8 (on)
OBS: Se o Linux resetar o disco rgido, a maioria das configuraes 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:
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) re-
comendvel 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
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 classificados 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.
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 transfer-
ncia especificada para dispositivos SCSI sempre a padro se comparada a dispositivos IDE
(quando uma taxa de 66Mb/s quase nunca atingida).
Estes dispositivos so classificados 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 Configurando 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 Configurando 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
identificados atravs de nmeros chamados de identificador 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 configurar 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 confiana para operao/armazenamento
de dados em longos perodos de operao.
+--------------------------------------------
|
|
|
|SCSI ID
| |
| _____ TERM
| | | | |
| o o o o o o
| o o o o o o
| 1 2 4 T
|
+---------------------------------------------
Captulo 4
Rede
Este captulo descreve o que uma rede, os principais dispositivos de rede no GNU/Linux,
a identificao de cada um, como configurar os dispositivos, escolha de endereos IP, rotea-
mento.
Parte deste captulo, uns 70% pelo menos, baseado no documento NET3-4-HOWTO. (seria
perda de tempo reescrever este assunto pois existe um material desta qualidade j disponvel).
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, definindo quem
ter ou no permisso para acessar cada compartilhamento ou servio existente na mquina
(www, ftp, irc, icq, etc), e registrando/avisando sobre eventuais tentativas de violar a segu-
rana do sistema, firewalls, pontes, etc.
Entre outras ilimitadas possibilidades que dependem do conhecimento do indivduo no am-
biente GNU/Linux, j que ele permite muita flexibilidade para fazer qualquer coisa funcionar
em rede.
Captulo 4. Rede 42
4.3 Endereo IP
O endereo IP so nmeros que identificam 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 en-
dereos 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 192.168.110.23
Mscara da Rede 255.255.255.0
Poro da Rede 192.168.110.
Poro do Host .23
----------------- ---------------
Endereo da Rede 192.168.110.0
Endereo Broadcast 192.168.110.255
----------------- ---------------
Qualquer endereo que finalizado 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 codificada 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 com-
putador na rede pode recebe-las simultaneamente.
Existe dois padres normalmente usados para especificar o endereo de broadcast. O mais am-
plamente aceito para usar o endereo mais alto da rede como endereo broadcast. No
exemplo acima este seria 192.168.110.255. Por algumas razes outros sites tem adotado a con-
veno de usar o endereo de rede como o endereo broadcast. Na prtica no importa
muito se usar este endereo, mas voc deve ter certeza que todo computador na rede esteja
configurado para escutar o mesmo endereo broadcast.
Por razes administrativas aps algum pouco tempo no desenvolvimento do protocolo IP al-
guns grupos arbitrrios de endereos foram formados em redes e estas redes foram agrupadas
no que foram chamadas de classes. Estas classes armazenam um tamanho padro de redes que
podem ser usadas. As faixas alocadas so:
+--------------------------------------------------------+
| Classe | Mscara de | Endereo da Rede |
| | Rede | |
+--------------------------------------------------------+
| A | 255.0.0.0 | 0.0.0.0 - 127.255.255.255 |
| B | 255.255.0.0 | 128.0.0.0 - 191.255.255.255 |
| C | 255.255.255.0 | 192.0.0.0 - 223.255.255.255 |
|Multicast| 240.0.0.0 | 224.0.0.0 - 239.255.255.255 |
+--------------------------------------------------------+
O tipo de endereo que voc deve utilizar depende exatamente do que estiver fazendo.
A tabela abaixo faz referncia as mscaras de rede mais comuns e a quantidade de mquinas
mximas que ela atinge. Note que a especificao da mscara tem influncia direta na classe
de rede usada:
Classe A:
/8 /255.0.0.0 16,777,215
Captulo 4. Rede 44
Classe B:
/16 /255.255.0.0 65,535
/17 /255.255.128.0 32,767
/18 /255.255.192.0 16,383
/19 /255.255.224.0 8,191
/20 /255.255.240.0 4,095
/21 /255.255.248.0 2,047
/22 /255.255.252.0 1,023
/23 /255.255.254.0 511
Classe C
/24 /255.255.255.0 255
/25 /255.255.255.128 127
/26 /255.255.255.192 63
/27 /255.255.255.224 31
/28 /255.255.255.240 15
/29 /255.255.255.248 7
/30 /255.255.255.252 3
/32 /255.255.255.255 1
Qualquer outra mscara fora desta tabela (principalmente para a classe A), dever ser redimen-
sionada 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 configurar seu dispositivo de rede GNU/Linux com estes detalhes. Voc no
pode simplesmente escolhe-los e esperar que sua configurao funcione.
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 especificamente para este propsito. Eles
esto especificados 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.
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 ex-
istem 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 especificamente para a loopback, assim se abrir uma conexo telnet para 127.0.0.1,
abrir uma conexo para o prprio computador local.
A configurao 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 configurada, voc poder ter problemas quando tentar
qualquer tipo de conexo com as interfaces locais, tendo problemas at mesmo com o comando
ping.
Aps configurada fisicamente, a interface precisa receber um endereo IP para ser identificada
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
configure).
Para configurar a interface de rede Ethernet (eth0) com o endereo 192.168.1.1, mscara de
rede 255.255.255.0, podemos usar o comando:
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:
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 alimen-
tando 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 in-
terface loopback (explicada acima) o outro um usado para falar com o resto da rede, talvez
uma ethernet, talvez uma interface serial PPP ou SLIP.
OK, viu como o roteamento funciona? cada computador mantm uma lista de regras especiais
de roteamento, chamada tabela de roteamento. Esta tabela contm colunas que tipicamente con-
tm no mnimo trs campos, o primeiro o endereo de destino, o segundo o nome da interface
que o datagrama deve ser roteado e o terceiro opcionalmente o endereo IP da outra mquina
que levar o datagrama em seu prximo passo atravs da rede. No GNU/Linux voc pode ver
a tabela de roteamento usando um dos seguintes comandos:
cat /proc/net/route
route -n
netstat -r
A configurao 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:
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 especificar 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 especificada como ltimo argu-
mento. Caso a interface precise especifica-la em outro lugar, ela dever ser precedida da opo
-dev.
Para adicionar uma rota padro para um endereo que no se encontre na tabela de rotea-
mento, utiliza-se o gateway padro da rede. Atravs do gateway padro possvel especificar um
Captulo 4. Rede 48
computador (normalmente outro gateway) que os pacotes de rede sero enviados caso o en-
dereo no confira com os da tabela de roteamento. Para especificar o computador 192.168.1.1
como gateway padro usamos:
O gateway padro pode ser visualizado atravs do comando route -n e verificando o campo
gateway. A opo gw acima, especifica 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 re-
sposta do servidor tambm enviada atravs do gateway para seu computador ( o caso de
uma tpica conexo com a Internet).
A nossa configurao ficaria assim:
DNS significa 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 identificao de computadores na Internet ou redes locais atravs de nomes ( como
se tivssemos apenas que decorar o nome da pessoa ao invs de um nmero de telefone).
A parte responsvel por traduzir os nomes como www.nome.com.br em um endereo IP
chamada de resolvedor de nomes.
O resolvedor de nomes pode ser um banco de dados local (controlador por um arquivo ou pro-
grama) que converte automaticamente os nomes em endereos IP ou atravs de servidores DNS
que 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
Voc deve estar acostumado com o uso dos nomes de computadores na Internet, mas pode
no entender como eles so organizados. Os nomes de domnio na Internet so uma estrutura
hierrquica, ou seja, eles tem uma estrutura semelhante aos diretrios de seu sistema.
Um domnio uma famlia ou grupo de nomes. Um domnio pode ser colocado em um sub-
domnio. Um domnio principal um domnio que no um sub-domnio. Os domnios princi-
pais so especificados 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 finaliza-lo com: com.au e gov.au
para organizaes comerciais e governamentais na Austrlia; note que isto no uma re-
gra geral, as organizaes de domnio atuais dependem da autoridade na escolha de nomes
de cada domnio. Quando o endereo no especifica o domnio principal, como o endereo
www.unicamp.br, isto quer dizer que uma organizao acadmica.
O prximo nvel da diviso representa o nome da organizao. Subdomnios futuros variam
em natureza, freqentemente o prximo nvel do sub-domnio baseado na estrutura depar-
tamental da organizao mas ela pode ser baseada em qualquer critrio considerado razovel
e significantes 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 qualificado (Fully Qualified Domain Name).
Usando o computador www.debian.org.br como exemplo:
br - Pas onde o computador se encontra
org - Domnio principal
debian - Nome de Domnio
www - Nome do computador
A localizao do computador www.debian.org.br atravs de servidores DNS na Inter-
net obedece exatamente a seqncia de procura acima. Os administradores do domnio
debian.org.br podem cadastrar quantos sub-domnios e computadores quiserem (como
www.non-us.debian.org.br ou cvs.debian.org.br).
/etc/resolv.conf
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 especifica que o nome de domnio a adicionar ao nome no qualificado (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 especificadas, cada uma pode ser chamada pelo cdigo resolve-
dor de nomes para resolver o nome.
/etc/host.conf
O arquivo /etc/host.conf o local onde possvel configurar 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 configurao diz ao resolvedor de nomes para checar o arquivo /etc/hosts
(parmetro hosts) antes de tentar verificar 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 spoofing:
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
# /etc/hosts
127.0.0.1 localhost loopback
192.168.0.1 maquina.dominio.com.br
Voc pode especificar mais que um nome de computador por linha como demonstrada pela
primeira linha, a que identifica a interface loopback. Certifique-se de que a entrada do nome
de domnio neste arquivo aponta para a interface de rede e no para a interface loopback, ou
ter problema com o comportamento de alguns servios.
OBS: Caso encontre problemas de lentido para resolver nomes e at para executar os aplica-
tivos (como o mc, etc), verifique se existem erros neste arquivo de configurao.
Estes sintomas se confundem com erros de memria ou outro erro qualquer de configurao
de hardware, e somem quando a interface de rede desativada (a com o IP no loopback). Isto
causados somente pela m configurao do arquivo /etc/hosts. O bom funcionamento
do Unix depende da boa ateno do administrador de sistemas para configurar 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 identificados como:
Nome_da_Rede Endereo_da_Rede
loopnet 127.0.0.0
localnet 192.168.1.0
amprnet 44.0.0.0
Quando usar comandos como route, se um destino uma rede e esta rede se encontra no
arquivo /etc/networks, ento o comando route mostrar o nome da rede ao invs de seu
endereo.
Captulo 4. Rede 52
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).
Servios de rede o que est disponvel para ser acessado pelo usurio. No TCP/IP, cada servio
associado a um nmero chamado porta que onde o servidor espera pelas conexes dos
computadores clientes. Uma porta de rede pode se referenciada tanto pelo nmero como pelo
nome do servio.
Abaixo, alguns exemplos de portas padres usadas em servios TCP/IP:
21 - FTP (transferncia de arquivos)
23 - Telnet (terminal virtual remoto)
25 - Smtp (envio de e-mails)
53 - DNS (resolvedor de nomes)
79 - Finger (detalhes sobre usurios do sistema)
80 - http (protocolo www - transferncia de pginas Internet)
110 - Pop-3 (recebimento de mensagens)
119 - NNTP (usado por programas de noticias)
O arquivo padro responsvel pelo mapeamento do nome dos servios e das portas mais uti-
lizadas o /etc/services (para detalhes sobre o seu formato, veja a /etc/services on
page 61).
Servios de rede iniciados como daemons ficam 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 verificar 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.
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 configuraes deste arquivo e permanece residente na
memria, esperando pela conexo dos clientes. Quando uma conexo solicitada, o
daemon inetd verifica 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
automaticamente desativado pelo inetd e uma mensagem ser mostrada no log do sis-
tema avisando sobre o fato. Para reativar o servio interrompido, reinicie o inetd com:
killall -HUP inetd. O valor padro 40.
usurio Este campo descreve que conta de usurio usurio no arquivo /etc/passwd ser
escolhida como dono do daemon de rede quando este for iniciado. Isto muito til se
voc deseja diminuir os riscos de segurana. Voc pode ajustar o usurio de qualquer
item para o usurio nobody, assim se a segurana do servidor de redes quebrada, a
possibilidade de problemas minimizada. Normalmente este campo ajustado para
root, porque muitos servidores requerem privilgios de usurio root para funcionarem
corretamente.
caminho_servidor Este campo o caminho para o programa servidor atual que ser execu-
tado.
argumentos_servidor Este campo inclui o resto da linha e opcional. Voc pode colocar neste
campo qualquer argumento da linha de comando que deseje passar para o daemon servi-
dor quando for iniciado.
Uma dica que pode aumentar significativamente a segurana de seu sistema comentar (colo-
car uma #no inicio da linha) os servios que no sero utilizados.
Abaixo um modelo de arquivo /etc/inetd.conf usado em sistemas Debian:
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 configuradas com vrios tipos de servios que so iniciados auto-
maticamente. Para melhorar, mesmo que insignificantemente, o nvel de segurana em seu
sistema voc deve editar se arquivo /etc/inetd.conf e comentar (colocar uma #) as lin-
has que contm servios que no utiliza.
Bons candidatos so servios tais como: shell, login, exec, uucp, ftp e servios de infor-
mao tais como finger, netstat e sysstat.
Existem todos os tipos de mecanismos de segurana e controle de acesso, eu descreverei os
mais importantes deles.
4.8.1 /etc/ftpusers
4.8.2 /etc/securetty
O arquivo /etc/securetty lhe permite especificar 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.
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 configurado
para proteger. Ele um tipo de firewall simples e fcil de configurar 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 confira. 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 verificar a pgina de manual apro-
priada (hosts_access (5) um bom ponto de partida).
/etc/hosts.allow
# /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 especificar 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 es-
pecfico, .uts.edu.au para atingir qualquer endereo de computador finalizando com
aquele string. Use 200.200.200. para conferir com qualquer endereo IP iniciando com
estes dgitos. Existem alguns parmetros especiais para simplificar a configurao, al-
guns destes so: ALL atinge todos endereos, LOCAL atinge qualquer computador que
no contm um . (ie. est no mesmo domnio de sua mquina) e PARANOID atinge
qualquer computador que o nome no confere com seu endereo (falsificao de nome).
Existe tambm um ltimo parmetro que tambm til: o parmetro EXCEPT lhe per-
mite fazer uma lista de excees. Isto ser coberto em um exemplo adiante.
comando um parmetro opcional. Este parmetro o caminho completo de um comando
que dever ser executado toda a vez que esta regra conferir. Ele pode executar um co-
mando para tentar identificar quem esta conectado pelo host remoto, ou gerar uma men-
sagem via E-Mail ou algum outro alerta para um administrador de rede que algum est
tentando se conectar. Existem um nmero de expanses que podem ser includas, alguns
exemplos comuns so: %h expande o endereo do computador que est conectado ou
endereo se ele no possuir um nome, %d o nome do daemon sendo chamado.
Se o computador tiver permisso de acessar 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)
/etc/hosts.deny
# /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 especificamente os
servios e permitindo computadores que voc deseja no arquivo /etc/hosts.allow a con-
figurao mais segura.
Qualquer modificao no arquivo /etc/hosts.deny entrar em ao aps reiniciar o dae-
mon inetd. Isto pode ser feito com o comando kill -HUP [pid do inetd], o pid do inetd
pode ser obtido com o comando ps ax|grep inetd.
/etc/hosts.equiv e /etc/shosts.equiv
O primeiro campo especifica se o acesso ser permitido ou negado caso o segundo e terceiro
campo confiram. Por razes de segurana deve ser especificado o FQDN no caso de nomes de
mquinas. Grupos de rede podem ser especificados 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 significa permitir acesso livre a qualquer pessoa de
qualquer lugar. Se este mecanismo for mesmo necessrio, tenha muita ateno na especificao
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.
ALL: 127.0.0.1
in.talkd, in.ntalkd: ALL
in.fingerd: 192.168.1. EXCEPT 192.168.1.30
ALL: ALL
Vamos aos testes, digitando: tcpdmatch in.fingerd 127.0.0.1 (verificar se o endereo 127.0.0.1
tem acesso ao finger):
Ok, temos acesso garantido com especificado pela linha 1 do hosts.allow (a primeira linha
que confere usada). Agora tcpdmatch in.fingerd 192.168.1.29:
Captulo 4. Rede 60
Ok, na linha 2 qualquer computador pode te chamar para conversar via talk na rede, mas
para o endereo DNS conferir com um IP especificado, o GNU/Linux faz a resoluo DNS,
convertendo o endereo para IP e verificando se ele possui acesso.
No lugar do endereo tambm pode ser usado a forma daemon@computador ou
cliente@computador para verificar respectivamente o acesso de daemons e cliente de de-
terminados computadores aos servios da rede.
Como pode ver o TCPD ajuda a aumentar a segurana do seu sistema, mas no confie nele
alm do uso em um sistema simples, necessrio o uso de um firewall verdadeiro para contro-
lar minuciosamente a segurana do seu sistema e dos pacotes que atravessam os protocolos,
roteamento e as interfaces de rede. Se este for o caso aprenda a trabalhar a fundo com firewalls
e implemente a segurana da sua rede da forma que melhor planejar.
4.8.4 Firewall
geral do Administrador de redes, a segurana de sua rede e seus dados dependem da escolha
do profissional correto, que entenda a fundo o TCP/IP, roteamento, protocolos, servios e out-
ros assuntos ligados a rede.
Freqentemente tem se ouvido falar de empresas que tiveram seus sistemas invadidos, em
parte isto devido a escolha do sistema operacional indevido mas na maioria das vezes o
motivo a falta de investimento da empresa em polticas de segurana, que algumas simples-
mente consideram a segurana de seus dados e sigilo interno como uma despesa a mais.
Um bom firewall 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.1 /etc/services
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 especifica 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 especificar 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
como tcpdump permitindo-os mostrar nomes ao invs de nmeros em sua sada. A sintaxe geral
deste arquivo :
So organizaes do protocolo TCP/IP que visam organizar e simplificar seu padro e imple-
mentao pelos desenvolvedores.
Um padro TCP o conjunto de regras que devem ser seguidas para garantir a homo-
geneidade 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 op-
eracional 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. Define qual o mtodo que a
mensagem transmitida ser encapsulada para envio ao seu destino.
Apesar dos padres Darpa e OSI, o protocolo TCP/IP oficialmente independente destas ca-
madas.
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
Este captulo descreve alguns tipos de configuraes que podem ser feitas em rede utilizando
os recursos disponveis do Linux. Aqui no esto todas as aplicaes, pois o sistema bastante
flexvel 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 configurar 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
Definir endereamentos secundrios para fins de anlise e depurao de pacotes (princi-
palmente como armadilhas para trojans)
Colocao de servios com operao restritas a interfaces em funcionamento atravs de
faixas especficas usando as configuraes da interface virtual
Transio de IP de servidores de forma transparente
Entre muitas outras. A idia aqui mostrar a simplicidade de se configurar este recurso
e entender o processo, que bastante simples.
Para configurar 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 configurada com o IP 192.168.1.1 (classe C privada) e queremos adi-
cionar 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 especificar a interface virtual, como: eth0:rede1,
eth0:rede2, eth0:escritrio.
Captulo 5. Configuraes especiais de Rede 64
3 Digite ifconfig para ver as configuraes 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
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 firewall (principalmente com a poltica padro permissiva), esteja
atento as modificaes que precisa realizar para no comprometer a segurana de sua mquina.
Captulo 5. Configuraes especiais de Rede 65
Caso tenha dados considerados seguros em sua mquina e esteja em dvida sobre as impli-
caes 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/firewall, estao
de monitorao, etc. Aqui descreverei como montar uma bridge simples e uma aplicao de
firewall simples. As possibilidades so diversas e uma configurao bem feita pode detectar
ataques, protocolos desconhecidos at vrus complexos de rede.
Nos exemplos abaixo, eu assumirei a utilizao do nome de dispositivo br0 para se referir a
bridge no sistema. Siga estes passos para configurar uma bridge em sistemas Debian:
Captulo 5. Configuraes especiais de Rede 66
A bridge permite ainda definir prioridade para utilizao de interfaces, alm de outras fun-
cionalidades que lhe permitem ajustar a performance da mquina de acordo com sua rede.
Um bom exemplo, quando voc deseja criar 2 bridges em uma mesma mquina envolvendo
interfaces de rede especficas, 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. Configuraes 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.
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]] Define a prioridade da bridge, o valor deve estar entre 0
e 65536 (16 bits). Valores menores definem uma prioridade maior.
setfd [bridge [tempo]] Ajusta o delay da bridge especificada em [tempo] segundos.
setmaxage [bridge [tempo]] Ajusta o tempo mximo de vida da bridge para [tempo] segun-
dos.
setportprio [bridge [interface] [prioridade]] Ajusta a prioridade da [interface] especificada 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 configuradas fazendo parte da bridge.
A construo de um firewall em uma bridge no tem maiores segredos, basta referir-se a inter-
face lgica da bridge para construir suas regras (tendo em mente como uma bridge funciona e
como os pacotes atravessaro as interfaces).
Caso aplique o patch bridge nf, ser possvel referir-se as interfaces locais de rede e tambm a da
bridge. Neste caso a interface da bridge ser identificada como interface IN ou OUT PHYSIN
e as interfaces fsicas como PHYSOUT:
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 firewall para controlar o trfego que
atravessa as interfaces.
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 identifi-
cada por plip?, onde ? o nmero da porta paralela, recm configurada.
A rede via porta paralela pode atingir at 1Mb/s e mesmo esta velocidade parecer aparente-
mente baixa apresenta diversas vantagens por sua escalabilidade e pode lhe salvar em muitas
situaes de problemas. Algumas caractersticas deste tipo de rede:
Pode ser configurado em qualquer mquina, pois sempre haver uma porta paralela.
Captulo 5. Configuraes especiais de Rede 69
til para fazer instalao de Linux em mquinas sem CD-ROM. No momento da in-
stalao 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 Par-
alelo on the following page.
Voc poder fazer qualquer coisa que faria em uma rede normal (incluindo MAS-
QUERADING, roteamento entre redes, etc) sendo bastante interessante para testes prti-
cos dos exemplos do Foca Linux Avanado ;-)
Ficar admirado com as capacidade de rede existente no Linux e feliz por ter colocado
mais uma configurao 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 colo-
car sua controladora em risco alm da perda de sinal. Por segurana, o tamanho re-
comendvel 2,5 metros.
Quando toda a banda do cabo utilizada, algumas CPUs se tornam extremamente lentas.
Para configurar 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 Verifique se o seu kernel est compilado com o suporte a rede plip. Caso no esteja, a
configurao 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 Configure o mdulo parport_pc passando o parmetro irq=7 (a IRQ que sua porta de
impressora utiliza). Esta configurao 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. Verifique se a interface foi ati-
vada com o comando ifconfig plip0.
6 Nesse ponto a interface est ativa, mas a nossa mquina no conhece nada sobre a
rede ou como alcanar a mquina 192.168.1.2. Como a conexo ponto a ponto, pre-
cisamos adicionar uma rota direta para esta mquina com o comando: route add
-host 192.168.1.2 plip0. Este comando diz para criar uma rota com o destino
192.168.1.2 usando a interface plip0.
7 Configure a outra mquina seguindo os passos acima, apenas invertendo os 2 endereos
IPs usados.
Pronto, agora verifique 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 pas-
sos acima e refaa a configurao em ambas as mquinas. Ainda no funcionando, verifique se
existe um firewall bloqueando os pacotes da nova interface e se o cabo Lap Link est em bom
estado, o problema pode estar ai.
Captulo 5. Configuraes 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.
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 fios 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 figura acima mostra a posio dos pinos como referncia para a soldagem dos terminais. A
tabela abaixo mostra a ligao dos fios 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. Configuraes especiais de Rede 71
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 co-
municao entre as duas mquinas, mas nada impede que seja usado o ppp para comunicao,
apenas acrescentar um pouco mais de complexibilidade para esta configurao para obter o
mesmo resultado.
Usando o mtodo descrito, ser criada uma interface chamada sl? (interface SLIP, onde ? o
nmero da interface recm configurada).
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 configurado 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 con-
sole, executar os passos descritos aqui e continuar com o processo de instalao normal
:)
uma boa soluo quando as duas mquinas at em ambientes prximos.
O custo para montagem desta rede extremamente baixo, bastando um cabo Lap Link
Serial custa em mdia R$20,00 o cabo de 4 metros. Se voc tambm um amante da
eletrnica, estou descrevendo o esquema de montagem do cabo em Construindo um
cabo LapLink Serial on the next page.
Voc poder fazer qualquer coisa que faria em uma rede normal (incluindo roteamento
entre redes, MASQUERADING, etc)
mais uma prova das capacidades de rede que possvel usando o Linux.
Agora, os contras da conexo via porta serial:
A porta serial no estar disponvel para ser usada para conexo de mouses, impressoras
seriais, dispositivos eletrnicos e inteligentes, etc.
O comprimento mximo do cabo de 15 metros. Acima dessa comprimento, voc pode
colocar sua controladora em risco alm da perda de sinal. Por segurana, o tamanho
mximo recomendvel 13 metros
Para configurar 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 Verifique se o seu kernel est compilado com o suporte a rede slip e tambm com su-
porte a cslip (slip compactado, que melhora a taxa de transferncia dependendo dos
dados sendo transmitidos). Caso no tenha o suporte a slip, voc poder usar o ppp nas
duas pontas do link fazendo algumas adaptaes para usar a interface ppp?, como
simples no ser descrito neste guia :) (veja o manual do slattach)
3 Interrompa qualquer programa que esteja usando a porta serial.
Captulo 5. Configuraes especiais de Rede 72
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 desfiando somente 9 dos
50 fios que acompanha o cabo (deixei um fio 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. Configuraes especiais de Rede 73
A figura acima mostra a posio dos pinos como referncia para a soldagem dos terminais. A
tabela abaixo mostra a ligao dos fios 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. Configuraes especiais de Rede 74
75
Captulo 6
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:
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.1 syslogd
facilidade.nvel destino
Captulo 6. Arquivos e daemons de Log 77
A facilidade e nvel so separadas por um . e contm parmetros que definem o que ser
registrado nos arquivos de log do sistema:
facilidade - usada para especificar que tipo de programa est enviando a men-
sagem. Os seguintes nveis so permitidos (em ordem alfabtica):
auth - Mensagens de segurana/autorizao ( recomendvel usar authpriv ao in-
vs deste).
authpriv - Mensagens de segurana/autorizao (privativas).
cron - Daemons de agendamento (cron e at).
daemon - Outros daemons do sistema que no possuem facilidades especficas.
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 especificada na mesma linha do syslog.conf
separando-as com ,.
nvel - Especifica 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 significante.
info - Mensagens informativas.
debug - Mensagens de depurao.
* - Confere com todos os nveis.
none - Nenhuma prioridade.
Alm destes nveis os seguintes sinnimos esto disponveis:
error - Sinnimo para o nvel err.
panic - Sinnimo para o nvel emerg.
warn - Sinnimo para o nvel warning.
destino - O destino das mensagens pode ser um arquivo, um pipe (se iniciado por um
|), um computador remoto (se iniciado por uma @), determinados usurios do sis-
tema (especificando os logins separados por vrgula) ou para todos os usurios logados
via wall (usando *).
Todas as mensagens com o nvel especificado e superiores a esta especificadas 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 especificada sero redirecionadas.
= - Somente o nvel especificado ser registrado.
! - Todos os nveis especificados e maiores NO sero registrados.
- - Pode ser usado para desativar o sync imediato do arquivo aps sua gravao.
Os caracteres especiais = e ! podem ser combinados em uma mesma regra.
Exemplo: Veja abaixo um exemplo de um arquivo /etc/syslog.conf padro de sistemas
Debian
#
# Primeiro alguns arquivos de log padres. Registrados por facilidade
#
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* /var/log/mail.log
user.* -/var/log/user.log
uucp.* -/var/log/uucp.log
#
# Registro de logs do sistema de mensagens. Divididos para facilitar
# a criao de scripts para manipular estes arquivos.
#
mail.info -/var/log/mail.info
mail.warn -/var/log/mail.warn
mail.err /var/log/mail.err
#
# Alguns arquivos de registro "pega-tudo".
# So usadas "," para especificar mais de uma prioridade (por
Captulo 6. Arquivos e daemons de Log 79
#
# 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;\
# *.=notice;*.=warn /dev/tty8
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 especificado 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 ] Especifica 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 crti-
cos.
-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 especificao 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 especificar a prioridade, nvel,
um nome identificando 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 especificado como mensagem ao syslog.
-t [nome ] Especifica o nome do processo responsvel pelo log que ser exibido antes do PID
na mensagem do syslog.
-p [prioridade ] Especifica a prioridade da mensagem do syslog, especificada como
facilidade.nvel. Veja os tipos de prioridade/nveis em Arquivo de configurao
syslog.conf on page 76. O valor padro prioridade.nvel user.notice
Captulo 6. Arquivos e daemons de Log 81
6.4.1 logcheck
6.4.2 logrotate
Usado para fazer backups dos logs atuais do sistema (programado via cron, ou outro dae-
mon 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 especificado, 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 configurao o /etc
/logrotate.conf. Um modelo deste tipo de arquivo o seguinte:
weekly
missingok
monthly
create 0664 root utmp
rotate 1
}
rotate 7
}
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).
Configurando o servidor de logs Adicione a opo -r ao iniciar o daemon syslogd para
aceitar logs enviados das mquinas clientes. Na distribuio Debian modifique o ar-
quivo /etc/init.d/sysklogd colocando a opo -r na varivel SYSLOGD e reini-
cie 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).
Configurando mquinas cliente Modifique o arquivo /etc/syslogd.conf (veja Arquivo
de configurao 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 configurao:
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 modificando o nome e
localizao do arquivo /etc/syslog.conf para enganar possveis invasores. Isto pode ser
modificado no arquivo syslogd.c na linha:
Use a imaginao para escolher um nome de arquivo e localizao que dificulte a localizao
deste arquivo.
OBS3: Em uma grande rede, recomendvel configurar um computador dedicado como servi-
dor de log (desativando qualquer outro servio) e configurar o iptables para aceitar somente
o trfego indo para a porta UDP 514 (syslogd):
Captulo 7
Este captulo traz algumas caractersticas sobre a distribuio Debian GNU/Linux, progra-
mas de configurao e particularidades. A maioria dos trechos aqui descritos, tambm se apli-
cam 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 especificas de algumas distribuies Linux e
que no se aplicam a outras, como a localizao dos arquivos de configurao, nomes dos
programas de configurao e outros detalhes especficos e esta verso a baseada na Debian.
Pegue na pgina do Foca Linux (http://www.guiafoca.org) uma verso Intermedirio
/Avanado do guia especfico para sua distribuio.
cd /etc/init.d
./networking restart
Captulo 7. A distribuio Debian GNU/Linux 89
id:2:initdefault:
Os nvel de execuo atual do sistema pode ser visualizado atravs do comando runlevel e
modificado 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 ar-
quivos 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 definir 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 executa-
dos dependem do valor numrico que acompanha o link, por exemplo, os seguintes arquivos
so executados em seqncia:
S10sysklogd
S12kerneld
S20inetd
S20linuxlogo
S20logoutd
S20lprng
Captulo 7. A distribuio Debian GNU/Linux 90
S89cron
S99xdm
Note que os arquivos que iniciam com o mesmo nmero (S20*) so executados alfabetica-
mente. O nvel de execuo do sistema pode ser modificado 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 finalizados.
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 grfico
6 - Reinicializao do sistema. Todos os programas e daemons so encerrados e o sis-
tema reiniciado. acionado pelo comando shutdown -r e o pressionamento de
CTRL+ALT+DEL.
Por exemplo, para listar o nvel de execuo atual do sistema digite: runlevel. O runlevel
dever listar algo como:
N 2
Agora para mudar para o nvel de execuo 1, digite: init 3. Agora confira a mudana
digitando: runlevel. Voc dever ver este resultado:
2 3
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 ver-
ificar 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 verificar o problema re-
latado. Os campos Package e Severity so obrigatrios para definir 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).
Captulo 8
Personalizao do Sistema
Este captulo ensina como personalizar algumas caractersticas de seu sistema GNU/Linux.
O idioma usado em seu sistema pode ser modificado facilmente atravs das variveis de ambi-
ente. Atualmente a maioria dos programas esto sendo localizados. A localizao um recurso
que especifica 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 re-
spectivos valores. As principais variveis usadas para determinar qual idioma os programas
localizados utilizaro so:
LANG - Especifica o idioma_PAIS local. Podem ser especificados mais de um idioma na
mesma varivel separando-os com :, desta forma caso o primeiro no esteja disponvel
para o programa o segundo ser verificado e assim por diante. A lngua Inglesa iden-
tificada pelo cdigo C e usada como padro caso nenhum locale seja especificado. Por
exemplo: export LANG=pt_BR, export LANG=pt_BR:pt_PT:C
LC_MESSAGES - Especifica o idioma que sero mostradas as mensagens dos programas.
Seu formato o mesmo de LANG.
LC_ALL - Configura todas as variveis de localizao de uma s vez. Seu formato o
mesmo de LANG.
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 identificar o comando). Agora quando voc digitar ls, a
listagem ser mostrada com cores.
Se voc digitar ls -la, a opo -la ser adicionada no final 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.
Este arquivo contm comandos que so executados para todos os usurios do sistema no mo-
mento do login. Somente o usurio root pode ter permisso para modificar este arquivo.
Este arquivo lido antes do arquivo de configurao 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 profile do usurio root est configurado 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 configurao
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.
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.
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.
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, especificam 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
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 configurar 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, grfica, 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. .
Uma porta de impressora o local do sistema usado para se comunicar com a impressora. Em
sistemas GNU/Linux, a porta de impressora paralela identificada como lp0,lp1,lp2 no di-
retrio /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.
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 im-
pressora 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 ar-
quivo.
Captulo 9. Impresso 100
A impresso via spool (fila de impresso) tem por objetivo liberar logo o programa do servio
que est fazendo a impresso deixando um outro programa especifico tomar conta.
Este programa chamado de daemon de impresso, normalmente o lpr ou o lprng (recomen-
dado) em sistemas GNU/Linux.
Logo aps receber o arquivo que ser impresso, o programa de spool gera um arquivo tem-
porrio (normalmente localizado em /var/spool/lpd) que ser colocado em fila para a im-
presso (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 configurar
os parmetros de sua impressora no arquivo /etc/printcap. Um arquivo /etc/printcap
para uma impressora local padro se parece com o seguinte:
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
A impresso em modo grfico 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 :-)
O mtodo mais usados pelos aplicativos do GNU/Linux para a impresso de grficos 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 grficos em
GNU/Linux devido a boa qualidade da impresso, liberdade de configurao, 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
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 flexibilidade que
o GNU/Linux e suas ferramentas permitem, isso s o comeo.
* impressao%d.epson - Nome do arquivo que receber o resultado do
processamento. Cada pgina ser gravada em arquivos separados como
impressao1.epson, impressao2.epson. Os arquivos podem ser impres-
sos usando os mesmos mtodos acima.
* /dev/lp0 para uma impressora em /dev/lp0
* - para redirecionar a sada de processamento do gs para a sada padro. til
para usar o gs com pipes |.
* \|lpr - Envia a sada do Ghost Script para o daemon de impresso. O objetivo
deixar a impresso mais rpida.
Se voc curioso ou no esta satisfeito com as opes mostradas acima, veja a pgina
de manual do gs.
O Magic Filter um filtro de impresso inteligente. Ele funciona acionado pelo spool de im-
presso (mais especificamente o arquivo /etc/printcap) e permite identificar 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 grfico X11, incluindo o Netscape, Word Perfect,
Gimp e Star Office trabalham nativamente com o magicfilter.
:if=/etc/magicfilter/epson9-filter
No tenho nenhum contrato de divulgao com a epson :-) estou usando esta marca de impres-
sora porque a mais tradicional e facilmente encontrada. A linha que comea com :if no
magicfilter identifica um arquivo de filtro de impresso.
O arquivo /etc/magicfilter/epson9-filter criado usando o formato do magicfilter,
e no difcil entender seu contedo e fazer algumas modificaes:
#! /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 -Y 72 -R -q -f
# compressd data
0 \037\235 pipe /bin/gzip -cdq
Captulo 9. Impresso 105
# troff documents
0 .\?\?\040 fpipe /usr/bin/grog -Tps $FILE
0 .\\\" fpipe /usr/bin/grog -Tps $FILE
0 \\\" fpipe /usr/bin/grog -Tps $FILE
0 .\\\" fpipe /usr/bin/grog -Tps $FILE
0 \\\" fpipe /usr/bin/grog -Tps $FILE
Voc deve ter notado que para cada tipo de arquivo existe o respectivo programa que execu-
tado, basta voc modificar as opes usadas nos programas neste arquivo (como faria na linha
de comando) para afetar o comportamento da impresso.
Por exemplo, modificando a resoluo para -r240x72 no processamento de arquivos Pos Script
(gs), a impressora passar a usar esta resoluo.
Aqui ser explicado como fazer seu sistema Linux atuar como um servidor de impresso para
outras mquinas de sua rede.
As mquinas autorizadas a usar a impressora local devero ter seus nomes includos no ar-
quivo /etc/hosts.lpd (para o daemon lpd padro) ou /etc/lprng/lpd.perms (para o
daemon lpd do pacote lprng).
O arquivo /etc/lprng/lpd.perms do lprng mais configurvel (e complexo), uma linha
como:
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
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 configurao 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 en-
viar a impresso para a impressora hp (rp=hp) na mquina impr.meudominio.org
(rm=impr.meudominio.org).
Caso voc tenha a opo de imprimir tanto para uma impressora local quando para uma re-
mota, voc poder usar uma configurao 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 especificada, a impressora lp ser usada por padro.
OBS Lembre-se de reiniciar seu daemon de impresso toda vez que modificar o arquivo /etc
/printcap.
Captulo 9. Impresso 108
109
Captulo 10
Firewall iptables
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 firewall iptables (tambm chamado de netfilter) que
substitui o ipchains dos kernels da srie 2.2. Este novo firewall tem como vantagem ser
muito estvel (assim como o ipchains e ipfwadm), confivel, permitir muita flexibilidade
na programao de regras pelo administrador do sistema, mais opes disponveis ao ad-
ministrador 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 firewall 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 firewalls 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 modificar e monitorar o trfego da rede, fazer NAT (mas-
querading, source nat, destination nat), redirecionamento de pacotes, marcao de pacotes,
modificar a prioridade de pacotes que chegam/saem do seu sistema, contagem de bytes, di-
vidir trfego entre mquinas, criar protees anti-spoofing, contra syn flood, 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 filtragem
iptables como todas as ferramentas UNIX maduras dependem de sua imaginao, pois ele
garante uma grande flexibilidade 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
firewall.
O iptables ainda tem a vantagem de ser modularizvel, funes podem ser adicionadas
ao firewall ampliando as possibilidades oferecidas. Usei por 2 anos o ipchains e afirmo que
este um firewall 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 firewall 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.
Enfim o iptables um firewall 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 modificaes no
programa (changelog) em busca de mudanas que alterem o sentido das explicaes fornecidas
aqui.
O iptables um cdigo de firewall 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 firewalls do kernel) est disponvel no documento,
Netfilter-howto.
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 firewall
Suporte completo a roteamento de pacotes, tratadas em uma rea diferente de trfegos
padres.
Suporte a especificao de tipo de servio para priorizar o trfego de determinados tipos
de pacotes.
Permite especificar 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 (modificao do endereo de origem das mquinas para um nico IP ou
faixa de IPs).
Suporte a DNAT (modificao do endereo de destino das mquinas para um nico IP
ou fixa 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 flood, ping flood, DoS, etc).
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 especificado 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 Habil-
itando 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 firewall ele poder ser executado com folga
em uma mquina 386 SX com 4MB de RAM.
Como as configuraes residem no kernel no necessrio espao extra em disco rgido para
a execuo deste utilitrio.
Captulo 10. Firewall iptables 112
Todo trfego que for registrado pelo iptables registrado por padro no arquivo /var/log
/kern.log.
10.1.7 Instalao
O iptables faz parte da nova gerao de firewalls que acompanha o kernel 2.4, mas o su-
porte ao ipchains e ipfwadm ainda ser mantido atravs de mdulos de compatibilidade do
kernel at 2004. Seria uma grande falta de considerao retirar o suporte a estes firewalls 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 firewalls antes de passar em definitivo 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 firewall, usa todos
os recursos que ele oferece ou mantm uma complexa rede corporativa, tenho certeza que
gostar do iptables.
nvel de pacotes - Este tipo de firewall toma as decises baseadas nos parmetros do
pacote, como porta/endereo de origem/destino, estado da conexo, e outros parmet-
ros do pacote. O firewall ento pode negar o pacote (DROP) ou deixar o pacote passar
(ACCEPT). O iptables um excelente firewall 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 firewalls podem ser usados em conjunto para fornecer uma camada dupla de
segurana no acesso as suas mquinas/mquinas clientes.
As regras so como comandos passados ao iptables para que ele realize uma determi-
nada 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 significa 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.
Os Chains so locais onde as regras do firewall definidas pelo usurio so armazenadas para
operao do firewall. 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
especificados sempre em maisculas (note que os nomes dos chains so case-sensitive, ou seja,
o chain input completamente diferente de INPUT).
Tabelas so os locais usados para armazenar os chains e conjunto de regras com uma deter-
minada caracterstica em comum. As tabelas podem ser referenciadas com a opo -t tabela e
existem 3 tabelas disponveis no iptables:
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 modificados 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 modifi-
cados antes de serem roteados. Este chain somente consultado para conexes que
se originam de IPs de interfaces locais.
Captulo 10. Firewall iptables 115
mangle - Utilizada para alteraes especiais de pacotes (como modificar 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 modificados antes de serem
enviados para o chain INPUT da tabela filter.
FORWARD - Consultado quando os pacotes precisam ser modificados antes de serem
enviados para o chain FORWARD da tabela filter.
PREROUTING - Consultado quando os pacotes precisam ser modificados antes de
ser enviados para o chain PREROUTING da tabela nat.
POSTROUTING - Consultado quando os pacotes precisam ser modificados antes de
serem enviados para o chain POSTROUTING da tabela nat.
OUTPUT - Consultado quando os pacotes precisam ser modificados 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.
Para usar toda a funcionalidade do firewall 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:
*
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
Esta configurao permite que voc no tenha problemas para iniciar o uso e configurao do
seu firewall iptables, ela ativa os mdulos necessrios para utilizao de todos os recursos do
firewall 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
firewall ou continuar fazendo uso de todas ;-)
OBS1: A configurao acima leva em considerao que voc NO executar os cdi-
gos antigos de firewall ipfwadm e ipchains. Caso deseje utilizar o ipchains ou o
ipfwadm, ser preciso responder com M a questo IP tables support (required for fil-
tering/masq/NAT) (CONFIG_IP_NF_IPTABLES). Ser necessrio carregar manualmente o
mdulo correspondente ao firewall que deseja utilizar (modprobe iptables_filter.o no
caso do iptables).
No execute mais de um tipo de firewall ao mesmo tempo!!!
OBS2: recomendvel ativar o daemon kmod para carga automtica de mdulos, caso con-
trrio ser necessrio compilar todas as partes necessrias embutidas no kernel, carregar os
mdulos necessrios manualmente ou pelo iptables (atravs da opo modprobe=mdulo).
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 configurao de Masquerading deste
tipo encontrado em Conectando sua rede interna a Internet on page 156.
Aps configurar o masquerading, voc s precisar especificar 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
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 final (se ele vai ser aceito ou rejeitado) depen-
der das regras seguintes.
As opes passadas ao iptables usadas para manipular os chains so SEMPRE em mais-
culas. As seguintes operaes podem ser realizadas:
Como exemplo vamos criar uma regra que bloqueia o acesso a nosso prpria mquina
(127.0.0.1 - loopback). Primeiro daremos um ping para verificar 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
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 verificamos um novo ping:
#ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
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 final 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 define o
destino do pacote que atravessa a regra (veja Especificando um alvo on page 130). Bem vindo
a base de um sistema de firewall :-)
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 filter ser usada como padro caso nenhuma tabela seja especificada atravs
da opo -t.
#iptables -L INPUT -n
#iptables -L INPUT -n -v
Chain INPUT (policy ACCEPT 78 packets, 5820 bytes)
pkts bytes target prot opt in out source destinatio
2 194 DROP icmp -- * * 0.0.0.0/0 127.0.0.1
chain INPUT ser automaticamente apagada (confira 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. . . ).
Precisamos que o trfego vindo de 192.168.1.15 no seja rejeitado pelo nosso firewall. No
podemos adicionar uma nova regra (-A) pois esta seria includa no final 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.
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 modificar
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 especificado.
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).
Em firewalls organizados com um grande nmero de regras, interessante criar chains in-
dividuais 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 firewall confuso (e conseqente-
mente 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:
Para inserir regras no chain internet basta especifica-lo aps a opo -A:
INPUT internet
---------------------------- -----------------------------
| Regra1: -s 192.168.1.15 | | Regra1: -s 200.200.200.200|
|--------------------------| |---------------------------|
| Regra2: -s 192.168.1.1 | | Regra2: -d 192.168.1.1 |
|--------------------------| -----------------------------
| Regra3: -j DROP |
----------------------------
_______________________________________
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 por algum motivo precisar renomear um chain criado por voc na tabela filter, nat ou mangle,
isto poder ser feito usando a opo -E do iptables:
Use o comando cat /proc/net/ip_tables_names para fazer isto. interessante dar uma
olhada nos arquivos dentro do diretrio /proc/net, pois os arquivos existentes podem lhe
interessar para outras finalidades.
chain Chain que desejamos limpar. Caso um chain no seja especificado, todos os chains da
tabela sero limpos.
Este comando zera o campo pkts e bytes de uma regra do iptables. Estes campos podem ser
visualizados com o comando iptables -L -v. A seguinte sintaxe usada:
iptables [-t tabela] [-Z chain] [-L]
Onde:
tabela Nome da tabela que contm o chain que queremos zerar os contadores de bytes e pa-
cotes.
chain Chain que deve ter os contadores zerados. Caso no seja especificado, todos os chains da
tabela tero os contadores zerados. Note que as opes -Z e -L podem ser usadas juntas,
assim o chain ser listado e imediatamente zerado. Isto evita a passagem de pacotes
durante a listagem de um chain.
A poltica padro determina o que acontecer com um pacote quando ele chegar ao final das
regras contidas em um chain. A poltica padro do iptables ACCEPT mas isto pode ser
alterado com o comando:
Captulo 10. Firewall iptables 124
# iptables -L INPUT
No exemplo acima, a poltica padro de INPUT ACCEPT (policy ACCEPT), o que significa
que qualquer pacote que no seja rejeitado pela regra do chain, ser aceito. Para alterar a
poltica padro deste chain usamos o comando:
+---------------------+--------------------------------+
TABELA | CHAIN | INTERFACE |
| +----------------+---------------+
| | ENTRADA (-i) | SADA (-o) |
+---------+---------------------+----------------+---------------+
| | INPUT | SIM | NO |
| filter | OUTPUT | NO | SIM |
| | FORWARD | SIM | SIM |
+---------+---------------------+----------------+---------------+
| | PREROUTING | SIM | NO |
| nat | OUTPUT | NO | SIM |
| | POSTROUTING | NO | SIM |
+---------+---------------------+----------------+---------------+
| | PREROUTING | SIM | NO |
| mangle | | | |
| | OUTPUT | NO | SIM |
+---------+---------------------+----------------+---------------+
O caminho do pacote na interface ser determinado pelo tipo da interface e pela posio dos
chains nas etapas de seu roteamento. O chain OUTPUT da tabela filter somente poder conter
a interface de sada (veja a tabela acima). O chain FORWARD da tabela filter o nico que
aceita a especificao de ambas as interfaces, este um timo chain para controlar o trfego
que passa entre interfaces do firewall.
Por exemplo para bloquear o acesso do trfego de qualquer mquina com o endereo
200.123.123.10 vinda da interface ppp0 (uma placa de fax-modem):
Captulo 10. Firewall iptables 126
O sinal de + funciona como um coringa, assim a regra ter efeito em qualquer interface de
ppp0 a ppp9. As interfaces ativas no momento podem ser listadas com o comando ifconfig,
mas permitido especificar uma regra que faz referncia a uma interface que ainda no existe,
isto interessante para conexes intermitentes como o PPP. Para bloquear qualquer trfego
local para a Internet:
Para bloquear a passagem de trfego da interface ppp0 para a interface eth1 (de uma de nossas
redes internas):
A opo -p (ou protocol) usada para especificar protocolos no iptables. Podem ser es-
pecificados os protocolos tcp, udp e icmp. Por exemplo, para rejeitar todos os pacotes UDP
vindos de 200.200.200.200:
As portas de origem/destino devem ser especificadas aps o protocolo e podem ser precedidas
por uma das seguintes opes:
--source-port ou --sport - Especifica uma porta ou faixa de portas de origem.
--destination-port ou --dport - Especifica uma porta ou faixa de portas de des-
tino.
Uma faixa de portas pode ser especificada atravs de PortaOrigem:PortaDestino:
Caso a PortaOrigem de uma faixa de portas no seja especificada, 0 assumida como padro,
caso a Porta Destino no seja especificada, 65535 assumida como padro. Caso precise es-
pecificar diversas regras que envolvam o tratamento de portas diferentes, recomendo da uma
olhada em Especificando mltiplas portas de origem/destino on page 143, antes de criar um
grande nmero de regras.
O protocolo ICMP no possui portas, mas possvel fazer um controle maior sobre o trfego
ICMP que entra/sai da rede atravs da especificao dos tipos de mensagens ICMP. Os tipos
de mensagens devem ser especificados com a opo icmp-type CdigoICMP logo aps a
especificao do protocolo icmp:
A regra acima rejeitar mensagens ICMP do tipo time-exceeded (tempo de requisio exce-
dido) que venham do endereo 200.123.123.10 atravs da interface ppp+.
Alguns tipos de mensagens ICMP so classificados por categoria (como o prprio time-
exceeded), caso a categoria time-exceeded seja especificada, todas as mensagens daquela
categoria (como ttl-zero-during-transit, ttl-zero-during-reassembly) conferiro na regra es-
pecificada.Os tipos de mensagens ICMP podem ser obtidos com o comando iptables -p
icmp -h:
echo-reply (pong)
destination-unreachable
network-unreachable
host-unreachable
protocol-unreachable
port-unreachable
fragmentation-needed
source-route-failed
network-unknown
host-unknown
network-prohibited
host-prohibited
TOS-network-unreachable
TOS-host-unreachable
communication-prohibited
host-precedence-violation
precedence-cutoff
source-quench
redirect
network-redirect
host-redirect
Captulo 10. Firewall iptables 128
TOS-network-redirect
TOS-host-redirect
echo-request (ping)
router-advertisement
router-solicitation
time-exceeded (ttl-exceeded)
ttl-zero-during-transit
ttl-zero-during-reassembly
parameter-problem
ip-header-bad
required-option-missing
timestamp-request
timestamp-reply
address-mask-request
address-mask-reply
Pacotes syn so usados para iniciarem uma conexo, o uso da opo syn serve para especificar
estes tipos de pacotes. Desta maneira possvel bloquear somente os pacotes que iniciam uma
conexo, sem afetar os pacotes restantes. Para que uma conexo ocorra necessrio que a
mquina obtenha a resposta a pacotes syn enviados, caso ele seja bloqueado a resposta nunca
ser retornada e a conexo no ser estabelecida.
A regra acima bloqueia (-j DROP) qualquer tentativa de conexo (syn) vindas da interface
ppp+ ao telnet (dport 23) da mquina local, conexes j efetuadas o so afetadas por esta
regra. A opo syn somente pode ser especificada para o protocolo tcp.
ATENO: - A situao de passagem de pacotes durante deve ser levada em conta durante
a inicializao do firewall, bloqueando a passagem de pacotes durante o processo de configu-
rao, criando regras que bloqueiam a passagem de pacotes (exceto para a interface loopback)
at que a configurao do firewall esteja completa, pode ser uma soluo eficiente.
Outra alternativa segura configurar as regras de firewall antes das interfaces de rede se
tornarem ativas (usando a opo pre-up comando_firewall no arquivo de configurao /etc
/network/interfaces em sistemas Debian.
Captulo 10. Firewall iptables 129
A opo -f (ou fragment) permite especificar regras que confiram com fragmentos. Frag-
mentos so simplesmente um pacote maior dividido em pedaos para poder ser transmitido
via rede TCP/IP para remontagem do pacote pela mquina de destino.
Somente o primeiro fragmento possui detalhes de cabealho para ser processado, os segundos
e seguintes somente possuem alguns cabealhos necessrios para dar continuidade ao processo
de remontagem do pacote no destino.
Uma regra como
Diz para rejeitar todos os pacotes EXCETO os que vem do endereo 200.200.200.10.
Diz para bloquear todos os pacotes EXCETO os que iniciam conexes (! syn), EXCETO para
pacotes vindos pela interface eth0 (! -i eth0).
O alvo (-j) o destino que um pacote ter quando conferir com as condies de uma regra, um
alvo pode dizer para bloquear a passagem do pacote (-j DROP), aceitar a passagem do pacote
(-j ACCEPT), registrar o pacote no sistema de log (-j LOG), rejeitar o pacote (-j REJECT), redi-
recionar um pacote -j REDIRECT, retornar ao chain anterior sem completar o processamento
no chain atual (-j RETURN), passar para processamento de programas externos (-j QUEUE),
fazer source nat (-j SNAT), destination nat (-j DNAT), etc. Podem existir mais alvos, pois o
iptables modularizvel, e mdulos que acrescentam mais funes podem ser carregados
em adio aos j existentes no kernel.
Nos exemplos anteriores vimos o uso de diversos alvos como o DROP e o ACCEPT. Apenas
farei uma breve referncia sobre os alvos mais usados em operaes comuns dos chains. Os
alvos REDIRECT, SNAT e DNAT sero explicados em uma seo seguinte:
ACCEPT O pacote ACEITO e o processamento das regras daquele chains concludo. Pode
ser usado como alvo em todos os chains de todas as tabelas do iptables e tambm pode
ser especificado na poltica padro das regras do firewall (veja Especificando a poltica
padro de um chain - P on page 123).
DROP Rejeita o pacote e o processamento das regras daquele chain concludo. Pode ser
usado como alvo em todos os chains de todas as tabelas do iptables e tambm pode
ser especificado na poltica padro das regras do firewall (veja Especificando a poltica
padro de um chain - P on page 123).
REJECT Este um mdulo opcional que faz a mesma funo do alvo DROP com a diferena
de que uma mensagem ICMP do tipo icmp-port-unreachable (TCP/UDP) ou host-
unreachable (ICMP) retornada para a mquina de origem. Pode ser usado como alvo
somente nos chains da tabela (no como poltica padro).
LOG Este mdulo envia uma mensagem ao syslog caso a regra confira, o processamento
continua normalmente para a prxima regra (o pacote no nem considerado ACEITO
ou REJEITADO).
RETURN Retorna o processamento do chain anterior sem processar o resto do chain atual.
QUEUE Passa o processamento para um programa a nvel de usurio.
Alvo REJECT
Para ser usado, o mdulo ipt_REJECT deve ser compilado no kernel ou como mdulo.
Este alvo rejeita o pacote (como o DROP) e envia uma mensagem ICMP do tipo icmp-port-
unreachable como padro para a mquina de origem.
um alvo interessante para bloqueio de portas TCP, pois em alguns casos da a impresso que
a mquina no dispe de um sistema de firewall (o alvo DROP causa uma parada de muito
tempo em alguns portscanners e tentativas de conexo de servios, revelando imediatamente
o uso de um sistema de firewall pela mquina). O alvo REJECT vem dos tempos do ipchains
e somente pode ser usado na tabela filter. Quando um pacote confere, ele rejeitado com a
mensagem ICMP do tipo port unreachable, possvel especificar outro tipo de mensagem
ICMP com a opo reject-with tipo_icmp.
Captulo 10. Firewall iptables 131
OBS: REJECT pode ser usado somente como alvo na tabela filter e no possvel especifica-lo
como poltica padro do chain filter (como acontecia no ipchains. Uma forma alternativa
inserir como ltima regra uma que pegue todos os pacotes restantes daquele chain e tenha
como alvo REJECT (como iptables -A INPUT -j REJECT), desta forma ele nunca atin-
gir a poltica padro do chain.
Este alvo usado para registrar a passagem de pacotes no syslog do sistema. um alvo muito
interessante para ser usado para regras que bloqueiam determinados trfegos no sistema (para
que o administrador tome conhecimento sobre tais tentativas), para regras de fim de chain
(quando voc tem um grande conjunto de regras em um firewall restritivo e no sabe onde
suas regras esto sendo bloqueadas), para satisfazer sua curiosidade, etc.
Note que no exemplo anterior a regra que registra o pacote (-j LOG) deve aparecer antes da
regra que REJEITA (-j REJECT), caso contrrio a regra de LOG nunca funcionar. A regra que
REJEITA poderia tambm ser trocada por uma regra que ACEITA, caso queira registrar um
pacote que deve ser aceito (se a poltica padro do seu firewall for restritiva (-P DROP). A
nica coisa que muda nas regras de log o alvo da regra, isto facilita a implementao de
grandes conjuntos de regras de firewall.
A regra acima mostrar a seguinte sada no syslog do sistema:
Agora voc sabe o que aconteceu com o pacote (Rejeitado). A padronizao de mensagens de
firewall tambm importante para a criao de scripts de anlise que podero fazer a anlise
dos logs do seu firewall (para criao de estatsticas que podem servir como base para a criao
de novas regras de firewall ou eliminao de outras).
OBS: Se voc sente falta da funo -l do ipchains que combina o alvo e log na mesma regra
voc pode criar um alvo como o seguinte:
iptables -N log-drop
iptables -A log-drop -j LOG
iptables -A log-drop -j DROP
E usar log-drop como alvo em suas regras. Mesmo assim esta soluo limitada em re-
lao a -l do ipchains porque o iptables no inclui detalhes de qual chain bloqueou o
pacote/qual pacote foi bloqueado, assim necessrio a especificao da opo log-prefix para
as mensagens se tornarem mais compreensveis. Esta limitao pode ser contornada utilizando
um firewall feito em linguagem shell script, desta forma voc ter um controle maior sobre o
seu programa usando funes e integrao com outros utilitrios.
Quando um pacote com o endereo www.debian.org tentando acessar a porta www (80)
de nossa mquina atravs da internet (via interface ppp0), o chain nmero 1 confere, ento o
processamento continua no chain nmero 4, o chain nmero 4 confere ento o processamento
volta para a regra nmero 2, que diz para aceitar o pacote.
Agora se um pacote vem com o endereo www.dominio.com.br tentando acessar a porta
www *80) de nossa mquina atravs da internet (via interface ppp0), o chain nmero 1 confere,
ento o processamento continua no chain nmero 4, que no confere. O mesmo acontece com
os chains 5, 6 e 7. O chain nmero 8 confere, ento o acesso bloqueado.
Como pode notou, o alvo RETURN facilita bastante a construo das regras do seu firewall,
caso existam mquinas/redes que sejam excees as suas regras. Se ela no existisse, seria
necessrio especificar diversas opes -s, -d, etc para poder garantir o acesso livre a determi-
nadas mquinas.
As regras que voc est trabalhosamente criando e testando manualmente enquanto manipula
o iptables podem ser salvas de 2 formas; uma delas escrevendo um shell script que tenha
todos os comandos, um por linha. Isto recomendado quando tem um firewall grande e que
exige uma boa padronizao de regras, bem como sua leitura, comentrios. O script shell
tambm permite o uso de funes presente no interpretador de comando, portanto se voc
uma pessoa que gosta de interagir com as funes do shell e deixar as coisas mais flexveis,
prefira esta opo.
A outra forma usando as ferramentas iptables-save e iptables-restore baseada na
idia do ipchains-save e ipchains-restore. O iptables-save deve ser usado sempre
que modificar regras no firewall iptables da seguinte forma:
iptables-save >/dir/iptables-regras
Uma das vantagens do uso do iptables-save ele tambm salvar os contadores de chains,
ou seja, a quantidade de pacotes que conferiram com a regra. Isto tambm pode ser feito
com algumas regras adicionais em seu shell script, caso tenha interesse nesses contadores para
estatsticas ou outros tipos de relatrios.
Para restaurar as regras salvas, utilize o comando:
iptables-restore </dir/iptables-regras
A tabela nat serve para controlar a traduo dos endereos que atravessam o cdigo de
roteamento da mquina Linux. Existem 3 chains na tabela nat: PREROUTING, OUTPUT e
POSTROUTING (veja O que so tabelas? on page 114 para maiores detalhes).
Captulo 10. Firewall iptables 135
O procedimento para criao de um novo chain nesta tabela o mesmo descrito em Criando
um novo chain - N on page 120 ser necessrio somente especificar a tabela nat (-t nat) para
que o novo chain no seja criado na tabela padro (-t filter).
Que criar o chain chamado intra-inter na tabela nat. Para inserir regras neste chain ser
necessrio especificar a opo -t nat.
Voc precisar de um kernel com suporte ao iptables (veja Habilitando o suporte ao iptables
no kernel on page 115 e ip_forward e ento digitar os dois comandos abaixo para habilitar
o masquerading para todas as mquinas da rede 192.168.1.*:
A configurao do servidor Linux est completa, agora os clientes da rede precisaro ser
configurados para usar o endereo IP do servidor Linux como gateway. recomendvel
instalar um servidor proxy e DNS na mquina Linux para acelerar o desempenho das req-
uisies/resoluo de nomes das mquinas em rede. A utilizao de bits TOS tambm pode
trazer um grande aumento de velocidade para os diferentes servios da rede (veja Especifi-
cando o tipo de servio on page 139).
Captulo 10. Firewall iptables 136
SNAT (source nat - nat no endereo de origem) consiste em modificar o endereo de origem
das mquinas clientes antes dos pacotes serem enviados. A mquina roteadora inteligente
o bastante para lembrar dos pacotes modificados e reescrever os endereos assim que obter a
resposta da mquina de destino, direcionando os pacotes ao destino correto. Toda operao de
SNAT feita no chain POSTROUTING.
permitido especificar endereos de origem/destino, protocolos, portas de origem/destino,
interface de entrada/sada (dependendo do chain), alvos, etc. desnecessrio especificar frag-
mentos na tabela nat, pois eles sero remontados antes de entrar no cdigo de roteamento.
O SNAT a soluo quando voc tem acesso a internet atravs de um nico IP e deseja fazer
que sua rede tenha acesso a Internet atravs da mquina Linux. Nenhuma mquina da Inter-
net poder ter acesso direto as mquinas de sua rede interna via SNAT.
OBS: A observao acima no leva em conta o controle de acesso externo configurado na
mquina que estiver configurando o iptables, uma configurao mau realizada pode ex-
por sua mquina a acessos externos indesejados e comprometer sua rede interna caso algum
consiga acesso direto ao servidor.
necessrio especificar SNAT como alvo (-j SNAT) quando desejar que as mquinas de sua
rede interna tenha acesso a Internet atravs do IP fixo da mquina Linux (para conexes inter-
mitentes como PPP, veja Fazendo IP Masquerading on the facing page). O parmetro --to
IP:portas deve ser usado aps o alvo SNAT. Ele serve para especificar um endereo IP, faixa
de endereos e opcionalmente uma porta ou faixa de portas que ser substituda. Toda a oper-
ao de SNAT realizada atravs do chain POSTROUTING:
Os pacotes indo para a Internet (nossa conexo feita via eth1, nossa interface externa) vindo
do endereo 192.168.1.2, so substitudos por 200.241.200.40 e enviados para fora. Quando a
resposta a requisio retornada, a mquina com iptables recebe os pacotes e faz a oper-
ao inversa, modificando o endereo 200.241.200.40 novamente para 192.168.1.2 e enviando
a resposta a mquina de nossa rede interna. Aps definir suas regras de NAT, execute o co-
mando echo 1 >/proc/sys/net/ipv4/ip_forward para habilitar o suporte a redire-
cionamento de pacotes no kernel.
Tambm possvel especificar faixas de endereos e portas que sero substitudas:
Modifica o endereo IP de origem de todas as mquinas da rede 192.168.1.0/24 que tem o des-
tino a interface eth0 para 200.241.200.40 a 200.241.200.50. O endereo IP selecionado escolhido
de acordo com o ltimo IP alocado.
Captulo 10. Firewall iptables 137
Idntico ao anterior, mas faz somente substituies na faixa de portas de origem de 1 a 1023.
Fazendo IP Masquerading
O IP Masquerading um tipo especial de SNAT usado para conectar a sua rede interna a
internet quando voc recebe um IP dinmico de seu provedor (como em conexes ppp). Todas
as operaes de IP Masquerading so realizadas no chain POSTROUTING. Se voc tem um IP
fixo, deve ler Fazendo SNAT on the preceding page.
Para fazer IP Masquerading de uma mquina com o IP 192.168.1.2 para ter acesso a Internet,
use o comando:
Aps definir a regra para fazer Masquerading (SNAT), execute o comando echo 1
>/proc/sys/net/ipv4/ip_forward para habilitar o suporte a redirecionamento de pa-
cotes no kernel.
Captulo 10. Firewall iptables 138
Tambm possvel especificar faixas de endereos e portas que sero substitudas no DNAT:
Idntico ao anterior, mas faz somente substituies na faixa de portas de destino de 1024 a
5000. A operao acima a mesma realizada pelo ipmasqadm dos kernels da srie 2.2.
OBS1: Se por algum motivo no for possvel mapear uma conexo NAT, ela ser derrubada.
OBS2: No se esquea de conferir se o ip_forward est ajustado para 1: echo 1
>/proc/sys/net/ipv4/ip_forward.
Redirecionamento de portas
O redirecionamento de portas permite a voc repassar conexes com destino a uma porta para
outra porta na mesma mquina. O alvo REDIRECT usado para fazer esta operao, junto com
o argumento to-port especificando a porta que ser redirecionada. Este o mtodo DNAT es-
pecfico para se para fazer proxy transparente (para redirecionamento de endereos/portas,
veja Fazendo DNAT on this page). Todas as operaes de redirecionamento de portas real-
izada no chain PREROUTING e OUTPUT da tabela nat.
Redireciona as conexes indo para a porta 80 para a porta 81 (rodando squid) no firewall.
ATENO: O squid possui suporte a proxy transparente, e poder atender as requisies
acima da regra acima.
Captulo 10. Firewall iptables 139
A tabela mangle serve para especificar aes especiais para o tratamento do trfego que atrav-
essa os chains. Nesta tabela existem cincos chains: PREROUTING, POSTROUTING, INPUT,
OUTPUT e FORWARD (veja O que so tabelas? on page 114 para maiores detalhes).
Em geral, cada um deste chain processado antes do chain correspondente na tabela filter e
nat para definir opes especiais para o trfego (por exemplo, o chain PREROUTING da tabela
mangle processado antes do PREROUTING da tabela nat). O chain OUTPUT da tablea mangle
corresponde ao OUTPUT da tabela nat. Opes como o Tipo de Servio (TOS) especificado
nesta tabela para classificar e aumentar consideravelmente a velocidade de trfego consid-
erados em tempo real. Mesmo aps o trfego ser estabelecido, os chains da tabela mangle
continuam ativos para garantir que as opes especiais relacionadas com a conexo continuem
fazendo efeito (veja os exemplos de Caminho percorrido pelos pacotes nas tabelas e chains
on page 147).
O tipo de servio um campo existente no cabealho de pacotes do protocolo ipv4 que tem a
funo especificar qual a prioridade daquele pacote. A prioridade definida usando o algo-
ritmo FIFO do prprio kernel, sendo uma das alternativas de controle/priorizao de trfego
das mais simples e rpidas.
Uma das vantagens da utilizao do tipo de servio dar prioridade ao trfego de pacotes
interativos (como os do ICQ, IRC, servidores de chat), etc. Com o TOS especificado, mesmo
que esteja fazendo um download consumindo toda a banda de sua interface de rede, o trfego
com prioridade interativa ser enviado antes, aumentando a eficincia do uso de servios em
sua mquina.
Em testes realizados em minha conexo de 56K, o uso de regras TOS aumentou bastante o de-
sempenho em trfego interativo (em torno de 300%), durante o uso total da banda da interface
ppp em grande consumo de banda.
Usamos o alvo TOS (-j TOS) para especificar a modificao do tipo de servio nos pacotes que
atravessam as regras do firewall, acompanhada do argumento set-tos TOS que define a nova
prioridade dos pacotes. Os valores aceitos so os seguintes:
Espera Mnima especificado atravs de Minimize-Delay, 16 ou 0x10
Mximo Processamento especificado atravs de Maximize-Throughput, 8, ou 0x08.
Mxima Confiana especificado atravs de Maximize-Reliability, 4 ou 0x04.
Custo mnimo Especificado atravs de Minimize-Cost, 2 ou 0x02.
Prioridade Normal Especificado atravs de Normal-Service, 0 ou 0x00.
Captulo 10. Firewall iptables 140
Os pacotes vem por padro com o valor TOS ajustado como prioridade normal (bits tos ajus-
tados para 0x00). O tipo Mnima Espera o de maior prioridade, recomendado para trfego
interativo.
Este o mais usado, pois prioriza o trfego que sai da mquina (com destino a Internet, por
exemplo). Sua operao realizada atravs do chain OUTPUT ou POSTROUTING.
Para priorizar todo o trfego de IRC de nossa rede interna indo para a interface ppp0:
O bit TOS ajustado para Espera mnima e ser enviado antes dos pacotes com prioridade
normal para fora. Para priorizar a transmisso de dados ftp saindo da rede:
Existem muitas outras otimizaes que podem ser feitas, s depende dos requerimentos e
anlise de cada servio da rede pelo administrador.
OBS: - Os pacotes que atravessam o alvo TOS somente tem os bits tipo do servio modificados,
eles no sero de qualquer forma rejeitados.
Este prioriza o trfego que entra da mquina. Sua operao realizada no chain INPUT ou
PREROUTING. No faz muito sentido o uso deste chain dentro de uma rede pequena/mdia,
pois o trfego que recebermos ser priorizado pelo chain de sada de outras mquinas da in-
ternet/outras redes antes de chegar a nossa (desde que elas tambm estejam usando TOS).
Para priorizar o processamento do trfego interativo vindo de servidores IRC para nossa rede:
Modifica o tipo de servio para mnima espera de todo o trfego enviado por servidores de IRC
vindo da interface eth0.
OBS: - Os pacotes que atravessam o alvo TOS somente tem os bits tipo do servio modificados,
eles no sero de qualquer forma rejeitados. \
Captulo 10. Firewall iptables 141
Este mdulo permite especificar regras de acordo com o estado da conexo do pacote, isto
feito atravs da interpretao da sada do mdulo ip_conntrack. O parmetro state
OPES deve acompanhar este mdulo. As opes permitidas so as seguintes:
RELATED - Confere com pacotes relacionados indiretamente a uma conexo, como men-
sagens de erro icmp, etc.
INVALID - Confere com pacotes que no puderam ser identificados por algum motivo.
Como respostas de conexes desconhecidas.
Caso seja necessrio especificar mais de uma opes estas devem ser separadas por vrgulas.
A opo -m limit permite especificar o nmero de vezes que uma regra conferir quando todas
as outras condies forem satisfeitas. O nmero padro de conferncia de 3 por hora, a no
ser que seja modificado atravs dos argumentos aceitos pelo limit:
h - Hora
d - Dia
Assim uma regra como iptables -A INPUT -m limit --limit 5/m -j
ACCEPT permitir que a regra acima confira apenas 5 vezes por minuto (limit
2/s). Este limite pode ser facilmente adaptado para uma regra de log que confere
constantemente no causar uma avalanche em seus logs. O valor padro 3/h.
--limit-burst num - Especifica o nmero inicial mximo de pacotes que iro conferir,
este nmero aumentado por 1 a cada vez que o parmetro limit acima no for atingido.
O valor padro 5.
A regra abaixo pode tomada como base para proteo contra ping flood:
A regra acima limita em 1 vez por segundo (limit 1/s) a passagem de pings (echo requests)
para a mquina Linux.
Limita respostas a pings (echo reply) vindos da interface ppp0 (-i ppp0) a 1 por segundo.
ATENO: O exemplo acima somente para a criao de suas prprias regras com limitaes,
caso um pacote no confira ele ser bloqueado pela prxima regra. Se uma regra como esta for
colocada no chain INPUT sem modificaes, ela no ter o efeito desejado, podendo colocar
em risco a sua instalao pela falsa impresso de segurana. Portanto, recomendvel sempre
testar as modificaes para ter certeza que elas tem efeito.
servidores que possuem um grande nmero de acessos para no ter problemas que afetem seu
clientes.
ATENO: Os exemplos acima devem so somente exemplos para criao de suas prprias
regras com limitaes, caso um pacote no confira com a regra ele ser bloqueado pela prxima
regra. Se uma regra como esta for colocada no chain INPUT sem modificaes, ela no ter o
efeito desejado, podendo colocar em risco a sua instalao pela falsa impresso de segurana.
Portanto, recomendvel sempre testar as modificaes para ter certeza que elas tem efeito.
A especificao de endereos de origem/destino junto com a interface de rede pode ser usado
como um detector de ataques spoofing. A lgica que todos os endereos que NUNCA devem
vir da interface X devem ser negados imediatamente. As regras abaixo so colocadas no inicio
do chain INPUT para detectar tais ataques:
A primeira regra diz para bloquear todos os endereos da faixa de rede 192.168.1.* que NO
vem da interface eth0, a segunda regra diz para bloquear todos os endereos que no sejam
192.168.1.* vindos da interface eth0. O smbolo ! serve para especificar excees (veja Es-
pecificando uma exceo on page 129. O kernel do Linux automaticamente bloqueia a pas-
sagem de pacotes que dizem ser de 127.0.0.1 e no est vindo da interface loopback.
O mtodo preferido para controlar o ip spoofing atravs do cdigo de roteamento do kernel
(a no ser que esteja usando algum tipo de roteamento de origem assimtrico necessrio por
alguns programas especiais):
for i in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 1 >$i
done
Desta forma qualquer endereo dizendo ser 192.168.1.5 vindo de ppp0 ser imediatamente
rejeitado. Uma checagem adicional contra IP spoofing pode ser feita no arquivo /etc
/host.conf (veja /etc/host.conf on page 50).
O mdulo multiport permite que seja especificado mltiplas portas para um alvo. Podem
ser especificadas at 15 portas em um nico parmetro e basta que uma porta confira para
que a regra entre em ao, pois a comparao feita usando condies or. O parmetro
multiport deve ser acompanhado de um dos argumentos abaixo:
Captulo 10. Firewall iptables 144
Bloqueia todos os pacotes vindo de ppp0 para as portas 21 (ftp), 23 (telnet), 25 (smtp), 80
(www), 110 (pop3), 113 (ident), 6667 (irc).
O mdulo mac serve para conferir com o endereo Ethernet dos pacotes de origem. Somente
faz sentido se usado nos chains de PREROUTING (da tabela nat) ou INPUT (da tabela filter).
Aceita como argumento a opo mac-source endereo. O smbolo ! pode ser usado para
especificar uma exceo.
Este mdulo confere com o usurio que iniciou a conexo. somente vlido no chain OUTPUT
da tabela filter. Os seguintes argumentos so vlidas para este mdulo:
--uid-owner UID - Confere se o pacote foi criado por um processo com o UID especi-
ficado. At o momento somente UID numricos so aceitos.
--gid-owner GID - Confere se o pacote foi criado por um usurio pertencente ao grupo
GID. At o momento somente GID numricos so aceitos.
--pid-owner PID - Confere se o pacote foi criado por um processo com o PID especi-
ficado.
OBS: - Lembre-se que pacotes que no possuem detalhes suficientes de cabealho nunca con-
feriro!
Captulo 10. Firewall iptables 145
Rejeita um conexes indo para portas UDP de pacotes criados pelo usurios pertencentes ao
grupo 100.
O mdulo ttl pode ser usado junto com as seguintes opes para conferir com o tempo de
vida (TTL) de um pacote:
--ttl-eq [num]
--ttl-lt [num]
--ttl-gq [num]
Captulo 10. Firewall iptables 146
# Confere com todos os pacotes que tem o TTL maior que 100
iptables -A INPUT -m ttl --ttl-gt 100 -j LOG --log-prefix "TTL alto"
OBS: Tenha um especial cuidado durante a programao de regras que usem TTL, como elas
esto especialmente associadas com o estado da comunicao estabelecida entre as duas pon-
tas e o tipo de protocolo, cuidados especiais devem ser tomados para que seu firewall no
manipule de forma incorreta trfego vlido.
O mdulo rpc permite um controle especial sobre o trfego RPC que chega at a sua mquina.
Um uso til restringir a chamada a determinados nmeros RPC e permitir outros (por exem-
plo, permitindo somente o servio keyserv e bloqueando outros como o ypserv ou portmapper).
As seguintes opes podem ser usadas com o mdulo nfs:
--rpcs [procedimentos] - Confere com a lista de chamadas RPC especificadas.
Mais de um procedimento RPC pode ser especificado como nome ou nmero separando-
os com vrgulas. Um arquivo til que contm esta lista o /etc/rpc.
--strict - Ignora servios RPC que no contenham a chamada get do portmapper. Em
situaes normais, o inicio de qualquer solicitao RPC.
Veja alguns exemplos:
O mdulo pkttype permite identificar um pacote do tipo unicast (direcionado a voc), broad-
cast (direcionado a uma determinada rede, definida pela netmask) ou multicast (destinado a
grupos de redes) e desta forma realizar aes em cima destes. O tipo de pacote identificado
logo aps a opo pkt-type. Veja alguns exemplos:
# Como deve ter notado, possvel fazer a associao com diversas especifica
# de mdulos, bastando apenas especificar uma opo "-m" para cada mdulo
# adicional:
# Permite a passagem de pacotes broadcast de uma rede para outra com
# limitao de 5/s.
iptables -A FORWARD -i eth0 -o eth0 -m pkttype --pkt-type broadcast -m limit -
O tamanho do pacote pode ser usado como condio de filtragem atravs do mdulo length.
O tamanho do pacote especificado atravs da opo length e o argumento segue a mesma
sintaxe da especificao de portas no iptables sendo separados por :. Veja alguns exemplos:
MUITO importante entender a funo de cada filtro e a ordem de acesso dos chains de acordo
com o tipo de conexo e interface de origem/destino. Esta seo explica a ordem que as regra
so atravessadas, isso lhe permitir planejar a distribuio das regras nos chains, e evitar erros
de localizao de regras que poderia deixar seu firewall com srios problemas de segurana,
ou um sistema de firewall totalmente confuso e sem lgica.
Nos exemplos abaixo assumirei a seguinte configurao:
A mquina do firewall com iptables possui o endereo IP 192.168.1.1 e conecta a
rede interna ligada via interface eth0 a internet via a interface ppp0.
Rede interna com a faixa de endereos 192.168.1.0 conectada ao firewall via interface
eth0
Interface ppp0 fazendo conexo com a Internet com o endereo IP 200.217.29.67.
A conexo das mquinas da rede interna (eth0) com a rede externa (ppp0) feita via
Masquerading.
Tambm utilizarei a sintaxe CHAIN-tabela para fazer referncia aos chains e tabelas dos blocos
ASCII: INPUT-filter - chain INPUT da tabela filter.
ATENO: A ordem de processamento das regras do iptables, diferente do ipchains
devido a incluso do novo sistema de nat e da tabela mangle.
Quando damos o ping (echo request) os pacotes seguem o caminho em SADA DE PACOTES
percorrendo os chains na ordem especificada e retornam via ENTRADA DOS PACOTES (echo
reply). No envio da resposta da requisio de ping, o caminho de sada do pacote ignora os
chains OUTPUT-nat e POSTROUTING-nat (j que no necessrio nat) mas sempre processa
os chains correspondentes da tabela mangle na ordem indicada acima.
OBS1: Para conexes com destinos na prpria mquina usando um endereo IP das interfaces
locais, a interface ser ajustada sempre para lo (loopback).
OBS2: Em qualquer operao de entrada/sada de pacotes, os dois chains da tabela mangle so
sempre os primeiros a serem acessados. Isto necessrio para definir a prioridade e controlar
outros aspectos especiais dos pacotes que atravessam os filtros.
OBS3: O chain OUTPUT da tabela filter consultado sempre quando existem conexes se
originando em endereos de interfaces locais.
A requisio ftp passa atravs dos chains especificados em SADA DOS PACOTES e retorna por
ENTRADA DE PACOTES. Aps a conexo ser estabelecida, o caminho de SADA DE PACOTES
ser:
pois os dados de entrada que vem da interface externa, so passados diretamente a mquina do
firewall, no necessitando de tratamento SNAT (os chains OUTPUT-nat e POSTROUTING-nat
so processado somente uma vez a procura de regras que conferem, principalmente para fazer
SNAT). Note novamente que mesmo no sendo necessrio NAT, o chain POSTROUTING-
mangle checado.
OBS1: Para conexes com destinos na prpria mquina usando um endereo IP das interfaces
locais, a interface ser ajustada sempre para lo (loopback).
OBS2: Em qualquer operao de entrada/sada de pacotes, os dois chains da tabela mangle so
sempre os primeiros a serem acessados. Isto necessrio para definir a prioridade e controlar
outros aspectos especiais dos pacotes que atravessam os filtros.
A requisio ftp passa atravs dos chains especificados em SADA DOS PACOTES com o des-
tino 192.168.1.4 porta 21 e retorna por ENTRADA DE PACOTES para 192.168.1.1 porta
1405. Aps a conexo ser estabelecida, o caminho de SADA DE PACOTES ser:
A requisio ftp passa atravs dos chains especificados em SADA DOS PACOTES com o des-
tino 200.198.129.162 porta 21 (aps a resoluo DNS de www.debian.org.br) e retorna
por ENTRADA DE PACOTES para 200.217.29.67 porta 1407. Aps a conexo ser estab-
elecida, o caminho de sada de pacotes :
Quando damos o ping (echo request) os pacotes seguem o caminho em ENTRADA DE PACOTES
percorrendo os chains na ordem especificada e retornam via SADA DOS PACOTES (echo reply).
OBS1: Para qualquer operao de entrada/sada de pacotes, os dois chains da tabela man-
gle so sempre os primeiros a serem acessados. Isto necessrio para definir a prioridade e
controlar outros aspectos especiais dos pacotes que atravessam os filtros.
A requisio ftp passa atravs dos chains especificados em ENTRADA DOS PACOTES com o
destino 192.168.1.1 porta 21 e retorna por SADA DE PACOTES para 192.168.1.4 porta
1030. Aps a conexo ser estabelecida, o caminho de entrada de pacotes :
A requisio ftp passa atravs dos chains especificados em SADA DOS PACOTES com o des-
tino 200.198.129.162 porta 21 (aps a resoluo DNS de ftp.debian.org.br) e retorna
por ENTRADA DE PACOTES para 192.168.1.4 porta 1032.
Note que o Masquerading regrava os pacotes; para a mquina 200.198.129.162 a
conexo est sendo feita para 200.217.29.67. As respostas de conexes vindas de
200.198.129.162 e indo para 200.217.29.67 so regravadas no firewall com o destino
192.168.1.4 e enviadas para a mquina correspondente. Aps a conexo ser estabelecida, o
caminho de sada de pacotes para 200.198.129.163 :
Isto acontece porque aps feita a conexo Masquerading (via PREROUTING-nat), o firewall
j sabe como reescrever os pacotes para realizar a operao de Masquerading, reescrevendo
todos os pacotes que chegam de www.debian.org.br para 192.168.1.4.
Captulo 10. Firewall iptables 154
A requisio ftp passa atravs dos chains especificados em ENTRADA DOS PACOTES com
o destino 200.217.29.67 (nossa interface ppp0 local) porta 21 e retorna por SADA DE
PACOTES para 200.198.129.162 porta 3716 (tambm via ppp0). Aps a conexo ser esta-
belecida, o caminho de entrada de pacotes :
Isto acontece porque aps feita a anlise do chain PREROUTING (para necessidade de DNAT),
a mquina j saber tomar a deciso apropriada para gerenciar aquela conexo.
acima podero ser facilmente comparados com as etapas abaixo para compreender a estrutura
do iptables.
Exemplo de como bloquear todas as conexes para a mquina do firewall permitindo somente
conexes da mquina Linux para fora.
As regras a seguir servem para bloquear tentativas de conexes da interface de Internet (ppp0)
a sua rede sem bloquear o trfego de conexes j iniciadas. O trfego de outras interfaces no
afetado com as regras a seguir:
Este acima mais simples e possui o mesmo efeito: Pacotes SYN so usados para ini-
ciar conexes, derrubando pacotes deste tipo significa bloquear novas conexes. Pacotes de
conexes j estabelecidas ainda so permitidos.
Estas regras acima servem para quem no deseja NENHUM acesso indevido a sua mquina.
Existem outras formas de bloquear conexes de modo mais seletivo usando chains especficos,
endereos de origem/destino, portas, etc., este tipo de configurao muito usada caso precise
fornecer algum tipo de servio que seja acessvel externamente e protegendo outros.
Captulo 10. Firewall iptables 156
As regras abaixo alertam sobre a tentativa de conexo dos trojans For Win mais conhecidos.
Coloquei isto aqui por curiosidade de algumas pessoas, pois mquinas Linux so imunes a
este tipo de coisa:
#!/bin/sh
TROJAN_PORTS="12345 31336 31337 31338 3024 4092 5714 5742 2583 8787 5556 5557"
A primeira linha do iptables cria o chain trojans-in dentro da tabela filter que usaremos para
armazenar nossas regras de firewall. A segunda (dentro do lao for) faz uma regra de LOG
para registrar as tentativas de acesso de trojans em nosso sistema, a terceira rejeita o acesso. A
quarta regra do iptables cria de todo o trfego vindo da interface ppp0 pra o chain trojans-in
(queremos que s o trfego vindo da internet seja analisado pelo chain trojans-in).
Muitas das portas especificadas na varivel TROJAN_PORTS so antigas conhecidas de quem
j brincou ou sofreram com o Back Orifice, Win Crack, NetBus (quem nunca passou pela
fase de ter uma lista com mais de 100 netmasks e conseguir encontrar centenas de mquinas
por dia infectadas pelo BO? :-).
No cdigo acima a nica coisa que precisa fazer para adicionar mais portas inseri-las na
varivel TROJAN_PORTS e executar o programa. O lao do for executar as 2 regras para
cada porta processada (economizando linhas e linhas de regras, me livrando de uma LER e
poupando muitos bytes neste guia ;-).
Dependendo do nmero de portas alvo, este cdigo pode ser muito simplificado usando o
recurso multiport do iptables (veja Especificando mltiplas portas de origem/destino on
page 143 para detalhes).
O seguinte exemplo permite ligar sua rede interna com a faixa de IPs 192.168.1.* a internet
(usando uma conexo discada do tipo ppp):
Esta seo possui um exemplo mais elaborado de firewall que servir para mquinas conec-
tadas via ppp com uma rede interna conectada via Masquerading. Este exemplo no to
complexo e cobre as expectativas mais comuns de pessoas que gostam de explorar os potenci-
ais de rede no Linux ou satisfazer sua curiosidade. Ele poder ser facilmente adaptado para
atender outro tipo de necessidade. A configurao assumida a seguinte:
1 Mquina do firewall com 2 interfaces de rede, uma eth0 com o IP 192.168.1.1 que
serve de ligao a sua rede Interna, a outra ppp0 que a interface Internet.
2 Qualquer acesso externo a mquinas da rede interna bloqueado.
3 Os usurios da rede local tem acesso livre ao servidor Linux.
4 Qualquer acesso externo a mquina do firewall bloqueado, exceto conexes para o
servio Apache (httpd). Outras tentativas de conexes devem ser explicitamente reg-
istradas nos logs do sistema para conhecimento do administrador.
5 Todos os usurios possuem acesso livre a Internet via Masquerading, exceto que o acesso
para o servio www deve ser obrigatoriamente feito via squid, e o servidor smtp a ser
usado dever ser o do firewall Linux.
6 Prioridades sero estabelecidas para os servios de telnet, IRC,talk e DNS.
#!/bin/sh
# Modelo de configurao de firewall
# Autor: Gleydson M. Silva
# Data: 05/09/2001
# Descrio: Produzido para ser distribudo livremente, acompanha o guia
# Foca GNU/Linux. http://www.guiafoca.org
#
# assumido um sistema usando kmod para carga automtica dos mdulos usados p
# esta configurao do firewall:
# ipt_filter
# ipt_nat
# ipt_conntrack
# ipt_mangle
# ipt_TOS
# ipt_MASQUERADE
# ipt_LOG
###############################################################
# Tabela filter #
###############################################################
# Primeiro aceitamos o trfego vindo da Internet para o servio www (porta 80)
iptables -A ppp-input -p tcp --dport 80 -j ACCEPT
#######################################################
# Tabela nat #
#######################################################
Captulo 10. Firewall iptables 160
# No queremos que usurios tenham acesso direto a www e smtp da rede externa,
# squid e smtpd do firewall devem ser obrigatoriamente usados. Tambm registra
# as tentativas para monitorarmos qual mquina est tentando conectar-se diret
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp+ -p tcp --dport 80 -j
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp+ -p tcp --dport 25 -j
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp+ -p tcp --dport 25 -j
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp+ -p tcp --dport 80 -j
# feito masquerading dos outros servios da rede interna indo para a interfa
# ppp0
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp+ -j MASQUERADE
# Qualquer outra origem de trfego desconhecida indo para eth0 (conexes vinda
# de ppp+) so bloqueadas aqui
iptables -t nat -A POSTROUTING -o eth0 -d 192.168.1.0/24 -j LOG --log-prefix "
iptables -t nat -A POSTROUTING -o eth0 -d 192.168.1.0/24 -j DROP
# Quando iniciamos uma conexo ppp, obtermos um endereo classe A (10.x.x.x) e
# estabelecida a conexo real, este endereo modificado. O trfego indo para
# a interface ppp no dever ser bloqueado. Os bloqueios sero feitos no
# chain INPUT da tabela filter
iptables -t nat -A POSTROUTING -o ppp+ -j ACCEPT
###############################################
# Tabela mangle #
###############################################
Captulo 11
Este captulo traz explicaes e comandos teis para o gerenciamento de contas e proteo de
senhas de usurios em sistemas Linux. Tambm explica os principais mtodos usados para
quebra de senha usando diversos mtodos como engenharia social, brute force, etc., bem como
dicas de como escolher boas senhas para voc e seus usurios e mtodos automatizados de
checagem de senhas vulnerveis.
Estes mtodos so explicados para que voc entenda, se previna destes tipos de ataques alm
de entender a importncia de polticas de proteo de senhas.
11.1 Introduo
A criao de uma conta em uma mquina Linux pode expor seu sistema (ou todas suas redes)
a crackers simplesmente com a falta de treinamento e polticas de segurana. Uma invasor com
um simples acesso a uma conta de usurio pode conseguir acesso a reas que contm dados
importantes expondo seu sistema a ataques ou roubo de dados.
Um firewall no pode fazer muito em uma situao dessas, um acesso atravs de uma conta
de sistema vlida difcil de ser auditado e descoberto, a no ser que o usurio monitore seus
acesso via lastlog e o administrador conhea os hbitos de seus usurios para notar o uso
estranho de contas em determinados dias/horrios. Evitar situaes como esta depende mais
de conscientizao e treinamento tanto do administrador como dos usurios das contas para
no expor o sistema a um ataque direto. Este captulo do guia explicar as situaes mais
comuns e alguns exemplos de como tais ataques acontecem.
Para adicionar uma conta de usurio ao sistema simples, basta um comando adduser
[usurio] e alguns poucos segundos para responder as questes do programa. Quando
criamos contas para outros usurios temos 2 alternativas: deixarmos a senha em branco ou
escolher uma senha que ser passada ao usurio para que ele possa fazer a troca mais tarde.
A primeira alternativa muito perigosa, pois uma pessoa com acesso a /etc/passwd poder
facilmente descobrir sua lista de usurios (principalmente em uma grande empresa quando
conhecemos as polticas de criao de novas contas). Um funcionrio notaria a presena do no-
vato e poderia aproveitar esta oportunidade para tentar incriminar este usando a conta recm
criada ou tentar outras coisas para obter benefcio prprio atravs do descuido de outros.
O segundo mtodo de senha inicial um pouco mais seguro e de preferncia a senha deve ser
escolhida pelo usurio para que pessoas que conhecem o estilo de senhas iniciais escolhidas
pelo administrador no possam deduzir a nova senha criada. comum vermos senhas como
novo1234, 123456, abcdef, a1b3c3, o nome do usurio como senhas iniciais, pois
fcil de lembrar. Senhas deste tipo so as primeiras a ser tentadas por crackers e programas
especficos para este fim. Mas se o o usurio esquecer de trocar sua senha provisria?
O programa chage e passwd possui recursos que permitem definir limites mnimos e mximo
do tempo para troca de senha de acesso, nmero mximo de dias aps expirar o tempo de
troca da senha em que a conta ser permanentemente desabilitada (at que o administrador a
reative) e o perodo mnimo entre troca de senhas. Alguns exemplos:
passwd -x 10 -w 3 teste
A senha do usurio teste expirar aps 10 dias (-x 10) e ele ser avisado com 3 dias de ante-
cedncia (-w 3) para trocar sua senha. Aps o perodo mximo o usurio ser obrigado a trocar
a senha.
Quando o usurio efetuar o login receber a seguinte mensagem: Warning: your
password will expire in 3 days.
passwd -x 10 -w 3 -i 2 teste
A senha do usurio teste expirar aps 10 dias (-x 10) e ele ser avisado com 3 dias de ante-
cedncia (-w 3) para trocar sua senha, aps a expirao da senha, o usurio tem 2 dias antes da
conta ser desativada (-i 2). Se o perodo expirar e o usurio tentar um novo login ser mostrada
a mensagem:
Your account has expired: Please contact your system administrator
Para reativar a conta acima, remova totalmente o bloqueio da conta do usurio teste com
passwd -x 0 teste, passwd -x 99999 -w 7 -i 0 teste ou especifique um perodo
de dias maior em adio queles especificados para que ele possa trocar a senha.
Por exemplo, caso tenha passado 3 dias desde que a conta acima expirou e deseje dar mais 2
dias para o usurio trocar a conta: passwd -x 17 -i 0 teste A conta ser reativada por
Captulo 11. Gerenciamento de contas e cuidados para a proteo de senhas 163
mais 2 dias dando a oportunidade do usurio trocar a senha. Preste ateno neste exemplo
para entender bem a situao e prazos.
passwd -x 90 -n 60 -w 15 -i 0 teste
A senha do usurio teste expirar aps 90 dias (-x 90), ele ser avisado para trocar sua senha
com 15 dias antes do prazo final (-w 15) e a conta ser imediatamente desativada caso o prazo
mximo para troca da senha expire (-i 0). O usurio tambm no poder trocar sua senha
durante os primeiros 60 dias desde a ltima troca de senha (-n 60).
Em sistemas onde precisa adicionar restries a muitos usurios na criao da conta, re-
comendvel seguir os mtodos descritos em Definindo valores padres de restrio on the
current page.
OBS1: Em sistemas com senhas ocultas ativadas (veja Shadow Passwords on page 169) as
restries acima sero especificadas no arquivo /etc/shadow, isto garante que s o usurio
root tenha acesso aos detalhes fornecidos neste arquivo.
OBS2: A -d do passwd serve para remover a senha do usurio especificado ou seja somente
ser necessrio fornecer o nome de usurio para ter acesso ao sistema.
OBS3: Leve em considerao que o uso do recursos de senhas de grupo um risco de segu-
rana, pois a mesma senha ser compartilhada entre diversas pessoas.
OBS4: O programa useradd combina as funes do adduser e passwd para garantir que
a conta seja criada com as restries apropriadas. O nico inconveniente que o useradd
quebra o Debian Policy e precisa de todos todos os parmetros para a criao correta da conta
(como o diretrio home, senha criptografada, e UID numrico). Seu uso indicado em shell
scripts que cuidam automaticamente da tarefa de adicionar usurios ao sistema.
Isto muito til quando precisa criar diversos usurios com as mesmas restries de contas,
isto tornar o gerenciamento do sistema muito mais prtico (tudo em Unix feito para ser
mais prtico, s devemos saber onde mexer). O arquivo /etc/defaults/useradd contm
valores padres que sero usados pelo useradd e adduser para definir valores de restries
de contas. Estes valores so gerados usando a opo -D em combinao com as seguintes
opes do useradd:
-b [home] - Especificar o diretrio home de usurio. O padro /home.
-e [data] - Data padro de expirao de contas, especificada no formato AnoMesDia.
Por exemplo, 20010920.
-f [dias] - Nmero mximo de dias que a conta permanece vlida aps a data de
expirao at ser desativada.
-g [gid/grupo] - ID do grupo ou nome do grupo que o usurio pertencer inicial-
mente.
-s [shell] - Shell do usurio. O padro /bin/bash.
OBS: Note que nem todas as opes acima tero efeito com o adduser (principalmente as
opes -f, -g e -s que so especificadas no seu arquivo de configurao /etc/adduser.conf).
Captulo 11. Gerenciamento de contas e cuidados para a proteo de senhas 164
A senha lhe identifica como o verdadeiro dono de uma conta em um sistema para garantir
acesso a seus recursos. A senha de um sistema to importante quanto uma senha de sua
conta bancria, caso caia em mos erradas as conseqncias podero ser catastrficas, todo
cuidado pouco na hora de escolher uma senha.
Senhas fceis de adivinhar so o primeiro motivo de sucesso de crackers no acesso a sistemas
de computadores (veja Deduo on page 166 e Engenharia Social on page 166), o admin-
istrador pode forar o usurio a fazer trocas peridicas de senhas atravs dos recursos citados
em Criao, monitoramento e segurana de contas on page 162, mas quem vai garantir que
ele esteja escolhendo boas senhas para que ningum as descubra com facilidade? Abaixo uma
lista de senhas ruins (que dever evitar a todo custo usa-las) e boas:
Senhas Ruins
O uso da palavra senha como senha! Isto parece idiota mais existe. . .
Senhas com o mesmo nome do login (joao/joao).
Compostas por letras ou nmeros em seqencia crescente ou decrescente (abcdef, 123456,
654321, etc, etc). Este tipo de senha pode ser adivinhada por deduo e so uma das
primeiras combinaes que crackers usam para acertar senhas.
palavras relacionadas com o gosto pessoal. Por exemplo escort, vectra, subaru se
a pessoa amante de carros.
Nome da esposa, filhos, familiares, animal de estimao, time de futebol, dolo da
TV/filmes ou qualquer coisa relacionada a familiares ou indiretamente ao usurio.
Idade, data de aniversrio, data de casamento, nmero de identidade, ttulo de eleitor,
placa de carro ou qualquer coisa que seja caracterstica do usurio.
Palavras existentes. Um ataque de dicionrio poder descobrir facilmente sua senha.
Senhas com menos de 8 letras
Senhas apenas em minsculas ou MAISCULAS.
Senhas Boas
Uma boa senha nunca dever ser lida mas fcil de lembrar. Por exemplo pense em uma
frase importante para voc meu sistema operacional preferido o Linux e pegue a
primeira letra de cada palavra: msopeol. PRONTO esta escolhida uma boa senha que
fcil de se lembrar e difcil de ser quebrada por ataques de dicionrio!
Uma boa senha deve conter nmeros e letras. A senha acima poderia ser modificada para
msopeol1
Conter letras maisculas e minsculas. msopeoL1.
Conter 8 caracteres sempre que possvel. Isto aumenta bastante o nmero de combi-
naes necessrias para se quebrar uma senha em um ataque brute force (veja Brute
Force on page 168). Mesmo que a senha escolhida no chegue a 8 caracteres mnimos,
voc poder combina-la com nmeros.
Com as dicas acima, a possibilidade de algum conseguir quebrar uma senha criptografada em
seu sistema usando os ataques descritos em Tipos de ataques mais comuns para se conseguir
uma senha. on page 166 praticamente nula! Para os paranicos de planto, o utilitrio
makepasswd pode criar uma senha com caracteres completamente aleatrios:
makepasswd --chars 8
Captulo 11. Gerenciamento de contas e cuidados para a proteo de senhas 165
4y0sBdwM
Este comando retorna uma string com 8 caracteres (chars 8) 4y0sBdwM. Se voc entendeu
boa parte deste guia tenho certeza que 1 ou 2 dias de treino e se acostuma com uma senha
como esta ;-)
OBS: NUNCA NUNCA d pistas sobre sua senha! Para voc isto pode ser um desafio lanado
a outras pessoas quase impossvel de ser resolvido, mas no se esquea que muita gente
especializada neste tipo de deduo.
O programa chpasswd usado para tal operao. Deve ser especificado um arquivo que
contm os campos usurio:senha por linha. Caso as senhas estejam encriptadas dever ser
especificada a opo -e ao programa.
chpasswd -e /localadmin/contas/contas.db
11.3.1 Deduo
O cracker se aproveita da ingenuidade de usurios que deixam senhas em branco, usam senhas
simples como o prprio nome, abcdef, asdfg, 123456, e outros tipos de senhas comuns
para tentar obter acesso ao sistema. Senhas deduzidas so geralmente senhas muito simples
e muito usadas. . . Uma situao comum para a escolha de uma senha deste tipo o medo de
esquecer a senha (quando no se consegue pensar em algo mais difcil e ao mesmo tempo que
seja fcil de lembrar) e quando o usurio pego desprevenido e no se sabe o que usar como
senha (como na assinatura de um provedor Internet, muito comum essa situao).
Geralmente muito rpido e muito eficaz dependendo das habilidades do atacante dispe.
Ataques por engenharia social so feitos atravs de pesquisa de dados pessoais e outras carac-
tersticas relacionadas ao usurio (time de futebol, data de nascimento dele, da esposa, filhos,
nome da atriz predileta, etc) e usando estes dados coletados para auxiliar na descoberta da
senha. Este ataque requer uma pesquisa sobre os hbitos, gostos, etc. Mas existem outros tipos
de ataque baseados em engenharia social, inclusive com o cracker passando-se pelo usurio.
Para diminuir as possibilidades deste tipo de ataque entenda e siga os procedimentos da parte
Senhas Boas na Senhas fceis de adivinhar e escolha de boas senhas on page 164 e continue
lendo esta seo.
Outro detalhe importante para diminuir as possibilidades de um ataque deste tipo bem suce-
dido permitir somente o acesso do servio de finger a redes confiveis (locais onde uns
conhecem os outros). Os detalhes fornecidos pelo finger podem ser suficientes para garantir
sucesso deste tipo de ataque:
#finger joao
Login: joao Name: Joao P. M.
Directory: /home/joao Shell: /bin/bash
Office: Sala 400 Andar 2, 123-4567 Home: 123-7654
Last login Fri Aug 25 21:20 (AMT) on tty3
No mail.
Grupo de cadastramento.
As ltimas linhas da sada do finger so os dados contidos nos arquivos .plan e .project
do diretrio de usurio. O cracker com base nos dados fornecidos acima pelo finger poderia
inventar uma situao em que necessitaria de troca de senha por algum motivo. Abaixo uma
situao onde o cracker sabe que no existe identificador de chamadas na empresa e conhece
as fragilidades:
Cracker: Disca para o CPD?
Vitima: CPD?
Captulo 11. Gerenciamento de contas e cuidados para a proteo de senhas 167
Cracker: Oi, eu sou o Joao P. M. do grupo de cadastramento aqui do segundo andar, estou
tentando entrar no sistema mas por algum motivo ele no aceita minha senha (fazendo-se
de ignorante no assunto).
Vitima: Por favor Sr. verifique se o Caps Lock do seu teclado est ativado, letras em
maisculas/minsculas fazem diferena em nossos sistemas.
Cracker: Ok vou checar (espera um tempo). No, esta tudo Ok, voc poderia agilizar isto
de alguma maneira, preciso lanar algumas fichas no sistema.
Vitima: Posso modificar sua senha para um nome qualquer, depois voc poder trocar
por si prprio.
Cracker: Ok, por mim tudo bem.
Vitima: Humm, modifiquei para cad1234, basta voc usa-la e ter acesso ao sistema.
Aps isso execute o utilitrio passwd para troca-la para algo que desejar.
Cracker: Ok, muito obrigado. Tenha um bom dia.
Este um exemplo simples de ataque por engenharia social. Dependendo do objetivo, este
tipo de ataque pode levar semanas e as vezes requer contatos com diversas empresas criando
diversas situaes para obter detalhes necessrios para atingir o objetivo.
As polticas de segurana de senhas minimizam riscos deste tipo. Como este um caso que o
requisitante um funcionrio prximo do departamento de informtica, o mais adequado seria
o administrador se deslocar ao setor (ou enviar um tcnico do setor treinado para tal situao)
para saber se quem diz ser quem est realmente no local enfrentando aquela situao. O
contato com o responsvel do setor (conhecido do tcnico) tambm pode ser uma alternativa
antes de entregar uma senha a um desconhecido.
Para casos externos (principalmente para empresas que mantm determinados servios em
funcionamento em nosso servidor, como servidores de pginas), o procedimento correto seria
passar uma nova senha por e-mail (de preferncia criptografado com pgp) ao invs de telefone.
Isto garantir que a senha no caia nas mos erradas.
OBS1: Qualquer detalhe sobre a poltica de criao de senhas, trocas de senhas, etc. poder ter
muito valor para um cracker obter acesso ao seu sistema.
OBS2: Dificulte as maneiras para se obter acesso root ao sistema via conta de usurio comum.
de extrema importncia utilizar conexes de dados criptografadas quando for necessrio
acesso externo ao seu sistema.
OBS3: Nunca use uma mesma senha para fazer tudo (banco, acessar seu sistema, conectar-se
ao seu provedor, senha de root). Voc estar em srios apuros caso algum tenha acesso a esta
senha. difcil lembrar de vrias senhas, mas voc pode aditar uma senha e criar modificaes
a partir dela para utilizao em outros locais, por exemplo: wekpdm => Bwekpdm1 =>
3wekpdmS, etc.
De posse do arquivo de senhas /etc/passwd, o cracker utiliza um arquivo que contm di-
versas palavras que sero tentadas como senha. Este trabalho feito automaticamente por
ferramentas dedicadas a este tipo de tarefa e pode levar dias dependendo da lista de senhas
do cracker e quantidades de usurios existentes no arquivo de senha.
Captulo 11. Gerenciamento de contas e cuidados para a proteo de senhas 168
Note que o uso de criptografia md5 e senhas ocultas dificultam bastante ao arquivo de senhas e
o sucesso de um ataque bem sucedido (veja Shadow Passwords on the next page e Senhas
MD5 on the facing page).
De posse do arquivo de senhas /etc/passwd o cracker utiliza uma ferramenta que tenta
diversas combinaes de letras seqencialmente na tentativa de descobrir uma senha. Este
ataque geralmente usado como ltimo recurso aps um ataque por dicionrio, e leva muito
tempo para descobrir uma senha.
Este ataque muito comum em sistemas DOS e Windows, um programa instalado sem o
conhecimento do usurio que grava todos os toques do teclado em um arquivo escondido pelo
cracker. Aps certo tempo o cracker obtm acesso ao arquivo e aos dados que ele contm. Este
tipo de ataque muito perigoso e pode capturar senhas no s do sistema como nmeros de
carto de crdito digitados (caso o usurio tenha feito compras on-line), conta bancria+senha
e tudo mais que for digitado pelo teclado.
Esta uma forma rpida de se conseguir acesso a um sistema. criada uma tela de login
idntica a original do sistema, s que ao digitar nome e senha, estes so gravados em um
arquivo (que ser mais tarde recuperado pelo cracker para obter acesso ao sistema) e uma
mensagem de erro ser exibida pelo sistema.
Naturalmente o usurio pensar que digitou o nome/senha incorretamente e far uma nova
tentativa, a segunda ocorrer com sucesso (fazendo este pensar que errou *mesmo* a senha).
Sua ateno muito importante para evitar este tipo de ataque, caso desconfie de algo errado,
entra no sistema e d um find --type f -cmin -3 para localizar os arquivos modificados
nos ltimos 3 minutos e localizar possveis bancos de dados de senhas.
Outra alternativa realmente digitar uma senha invlida intencionalmente (e diferente da cor-
reta) e na segunda tentativa lanar a senha vlida (normalmente sistemas deste tipo bem elab-
orados chamam o verdadeiro sistema de login na segunda tentativa).
Captulo 11. Gerenciamento de contas e cuidados para a proteo de senhas 169
O sistema de criptografia usado pelas senhas MD5 mais seguro que o padro Crypto e per-
mitem o uso de senhas maiores do que 8 caracteres.
O uso de senhas MD5 recomendado para aumentar o nvel de proteo da senha. No use
caso estiver executando um servio de NIS. OBS: Caso utilize senhas MD5 em um sistema com
PAM, inclua a palavra md5 na linha de configurao do mtodo de autenticao password do
mdulo pam_unix.so:
Captulo 12
Apache
12.1 Introduo
12.1.1 Verso
assumido que esteja usando a verso 1.3.22 do apache. As explicaes contidas aqui podem
funcionar para verses posteriores, mas recomendvel que leia a documentao sobre modifi-
Captulo 12. Apache 172
caes no programa (changelog) em busca de mudanas que alterem o sentido das explicaes
fornecidas aqui.
O Apache tem como base o servidor web NCSA 1.3 (National Center of Supercomputing Applica-
tions), que foi desenvolvido por Rob McCool. Quando Rob deixou o NCSA, o desenvolvimento
foi interrompido, assim muitos desenvolvedores buscaram personalizar sua prpria verso do
NCSA ou adicionar mais caractersticas para atender as suas necessidades. Neste momento
comea a histria do Apache com Brian Behlendorf e Cliff Skolnick abrindo uma lista de dis-
cusso para interessados no desenvolvimento, conseguindo espao em um servidor doado
pela HotWired e trocando patches corrigindo problemas, adicionando recursos e discutindo
idias com outros desenvolvedores e hackers interessados neste projeto.
A primeira verso oficial do Apache foi a 0.6.2, lanada em Abril de 1995 (neste perodo a
NCSA retomava o desenvolvimento de seu servidor web, tendo como desenvolvedores Bran-
don Long e Beth Frank que tambm se tornaram membros especiais do grupo Apache, compar-
tilhando idias sobre seus projetos).
Nas verses 2.x do Apache, a escalabilidade do servidor foi ampliada suportando as platafor-
mas Win32 (no obtendo o mesmo desempenho que em plataformas UNIX mas sendo melho-
rado gradativamente).
Abaixo esto algumas caractersticas que fazem esse servidor web o preferido entre os admin-
istradores de sistemas:
Possui suporte a scripts cgi usando linguagens como Perl, PHP, Shell Script, ASP, etc.
Suporte a autorizao de acesso podendo ser especificadas restries de acesso separada-
mente para cada endereo/arquivo/diretrio acessado no servidor.
Autenticao requerendo um nome de usurio e senha vlidos para acesso a alguma
pgina/sub-diretrio/arquivo (suportando criptografia via Crypto e MD5).
Negociao de contedo, permitindo a exibio da pgina Web no idioma requisitado
pelo Cliente Navegador.
Suporte a tipos mime.
Captulo 12. Apache 173
Personalizao de logs.
Mensagens de erro.
Suporte a virtual hosting ( possvel servir 2 ou mais pginas com endereos/ portas
diferentes atravs do mesmo processo ou usar mais de um processo para controlar mais
de um endereo).
Suporte a IP virtual hosting.
Suporte a name virtual hosting.
Suporte a servidor Proxy ftp e http, com limite de acesso, caching (todas flexivelmente
configurveis).
Suporte a proxy e redirecionamentos baseados em URLs para endereos Internos.
Suporte a criptografia via SSL,Certificados digitais
Mdulos DSO (Dynamic Shared Objects) permitem adicionar/remover funcionalidades
e recursos sem necessidade de recompilao do programa.
Pacote: apache
Utilitrios:
apache - Servidor Web Principal
apachectl - Shell script que faz interface com o apache de forma mais amigvel
apacheconfig - Script em Perl para configurao interativa bsica do Apache
htpasswd - Cria/Gerencia senhas criptografadas Crypto/MD5
htdigest - Cria/Gerencia senhas criptografadas Crypto/MD5
dbmmanage - Cria/Gerencia senhas em formato DBM (Perl)
logresolve - Faz um DNS reverso dos arquivos de log do Apache para obter o en-
dereo de hosts com base nos endereos IPs.
ab - Apache Benchmarcking - Ferramenta de medida de desempenho do servidor Web
Apache.
Por padro, os arquivos de configurao do Apache residem no diretrio /etc/apache:
httpd.conf Arquivo de configurao principal do Apache, possui diretivas que controlam a
operao do daemon servidor. Um arquivo de configurao alternativo pode ser especi-
ficado atravs da opo -f da linha de comando.
srm.conf Contm diretivas que controlam a especificao de documentos que o servidor ofer-
ece aos clientes. O nome desse arquivo pode ser substitudo atravs da diretiva Resource-
Config no arquivo principal de configurao.
access.conf Contm diretivas que controlam o acesso aos documentos. O nome desse arquivo
pode ser substitudo atravs da diretiva AccessConfig no arquivo principal de configu-
rao.
O servidor Web l os arquivos acima na ordem que esto especificados (httpd.conf,
srm.conf e access.conf). As configuraes tambm podem ser especificadas direta-
mente no arquivo httpd.conf. Note que no obrigatrio usar os arquivos srm.conf e
access.conf, mas isto proporciona uma melhor organizao das diretivas do servidor, prin-
cipalmente quando se tem um grande conjunto de diretivas. Um exemplo comentado destes
trs arquivos de configurao encontrado em Exemplo comentado de um arquivo de config-
urao do Apache on page 216.
Captulo 12. Apache 174
12.1.6 Requerimentos
A mquina mnima para se rodar um servidor Apache para atender a uma rede padro
10MB/s um Pentium 90, 24MB de RAM, um HD com um bom desempenho e espao em
disco considervel de acordo com o tamanho projetado de seu servidor web (considerando
seu crescimento).
Uma configurao mais rpida para redes 100MB/s teria como processador um Cyrix MX
ou Intel Pentium MMX como plataforma mnima (Cyrix o recomendado pelo alto desem-
penho no processamento de strings), barramento de HD SCSI com uma boa placa controladora
(Adaptec 19160 ou superior) com 64MB de RAM no mnimo.
12.1.8 Instalao
O Apache pode ser executado tanto como um servidor Inetd ou como um Daemon. A inicial-
izao de programas pelo Inetd uma boa estratgia quando voc precisa de um controle de
acesso bsico (o fornecido pelo tcpd), e o servio pouco usado na mquina.
A segurana de um servio iniciado pelo inetd pode ser substituda e melhorada por um
firewall bem configurado, garantindo facilidades extras como um relatrio de trfego para a
porta do servidor web, por exemplo. Mesmo assim se o servidor Apache estiver rodando
Captulo 12. Apache 175
como daemon e estiver ocioso, ele ser movido para swap liberando a memria RAM para a
execuo de outros programas.
Neste captulo ser assumido seu funcionamento do Apache como Daemon, que o mtodo
de funcionamento recomendado para sites de grande trfego onde ele freqentemente req-
uisitado e considerado um servio crtico.
O mtodo padro para iniciar programas como daemons na Debian atravs dos di-
retrios /etc/rc?.d. Cada diretrio deste contm os programas que sero executa-
dos/interrompidos no nvel de execuo ? (rc1.d/, rc2.d/ . . . ). O contedo destes di-
retrios so links para os scripts originais em /etc/init.d/programa, o nosso programa
alvo /etc/init.d/apache. O /etc/init.d/apache aceita os seguintes parmetros:
start - Inicia o Apache
stop - Finaliza o Apache
restart - Reinicia o Apache, efetuando uma pausa de 5 segundos entre a interrupo
do seu funcionamento e reinicio.
reload - Recarrega os arquivos de configurao do Apache, as alteraes entram em
funcionamento imediatamente.
reload-modules - Recarrega os mdulos. Basicamente feito um restart no servidor.
force-reload - Faz a mesma funo que o reload
Para reiniciar o Apache usando o /etc/init.d/apache, digite:
./etc/init.d/apache restart
ou
cd /etc/init.d;./apache restart
Na realidade, o que o /etc/init.d/apache faz interagir diretamente com o shell script
apachectl.
O apachectl recebe os parmetros enviados pelo usurio e converte para sinais que sero
enviados para o binrio apache. Da mesma forma ele verifica os cdigos de sada do apache
e os transforma em mensagens de erro legveis para o usurio comum. Os seguintes comandos
so aceitos pelo apachectl:
httpd-server/start - Inicia o Apache
stop - Finaliza o Apache (enviando um sinal TERM)
restart - Reinicia o Apache (enviando um sinal HUP)
graceful - Recarrega os arquivos de configurao do Apache (enviando um sinal
USR1)
fullstatus - Mostra o status completo do servidor Apache (requer o lynx e o mdulo
mod_status carregado).
status - Mostra o status do processo do servidor Apache (requer o lynx e o mdulo
mod_status carregado).
configtest - Verifica se a sintaxe dos arquivos de configurao est OK (executa um
apache -t).
Use a diretiva Port para configurar a porta padro que o Apache receber requisies por
padro. A diretiva Listen tambm usada para ajustar o endereo/portas alternativas (us-
adas tambm em Virtual Hosts) e substituir as definies de Port(veja Especificando en-
dereos/portas adicionais (a diretiva Listen) on page 178 para detalhes).
OBS:: Somente uma diretiva Port e um argumento podero ser especificados. Para mais cont-
role sobre as portas do sistema use a diretiva Listen.
Existem dois tipos de pginas que podem ser adicionadas ao Apache: a pgina raz e sub-
pginas.
Pgina Raz A pgina raz especificada atravs da diretiva DocumentRoot e ser mostrada
quando se entrar no domnio principal, como http: //www.guiafoca.org. Na con-
figurao padro do Apache, DocumentRoot aponta para o diretrio /var/www. Este
diretrio ser assumido como raz caso os diretrios no sejam iniciados por uma /:
home/focalinux - Aponta para /var/www/home/focalinux
/home/focalinux - Aponta para /home/focalinux
Este diretrio deve conter um arquivo de ndice vlido (especificado pela diretiva Docu-
mentIndex no srm.conf) e permisses de acesso vlidas no arquivo access.conf para
autorizar o acesso as pginas em /var/www (veja Restries de Acesso on page 182 para
detalhes).
Sub-pginas Sub pginas so armazenadas abaixo do diretrio da Pgina raz, como http: /
/www.guiafoca.org/download. Elas podem ser um subdiretrio da pgina principal
Captulo 12. Apache 177
Pode ser necessrio permitir o acesso a nova pgina caso o servidor tenha uma con-
figurao restritiva por padro (veja Restries de Acesso on page 182 para detalhes).
Aps isto, faa o servidor httpd re-ler os arquivos de configurao ou reinicia-lo. Aps
isto, a pgina /home/focalinux/download/iniciante estar acessvel via http:
//www.guiafoca.org/iniciante.
OBS: Caso inclua uma / no diretrio que ser acessvel via URL, o endereo somente
estar disponvel caso voc entre com / no final da URL:
A diretiva BindAddress usada para especificar endereos IP das interfaces ou endereos FQDN
que o Apache responder requisies. Mais de um endereo podem ser especificados separa-
dos por espaos. Caso no seja definido, o Apache assumir o valor * (atender requisies
vindas de qualquer interface).
OBS1: - permitido usar somente uma diretiva BindAddress. A diretiva Listen dever ser usada
se desejar mais controle sobre as portas do servidor web. Veja Especificando endereos/portas
adicionais (a diretiva Listen) on the following page para detalhes.
OBS2: - As interfaces especificadas pela diretiva Listen substituir as especificadas em BindAd-
dress.
Exemplo:
BindAddress 192.168.1.1 - Especifica que os usurios da faixa de rede
192.168.1.* tero acesso ao servidor httpd. Isto assume que a mquina possui o
endereo 192.168.1.1 em sua interface de rede interna.
BindAddress * - Atender requisies vindas de qualquer interface de rede.
Captulo 12. Apache 178
A diretiva Listen usada para se ter um controle maior sobre a especificao de en-
dereos/portas alternativas que o servidor web esperar por requisies externas. Esta di-
retiva muito usada na construo de Virtual Hosts. Esta diretiva pode substituir comple-
tamente as diretivas Port e BindAddress. Podem ser usados o nmero da porta, ou o par
endereo:porta:
Listen 192.168.1.1:80
Listen 192.168.7.1:81
Listen 60000
O endereo que dever ser usado o da interface de rede (assim como na diretiva BindAddress).
No exemplo acima, o servidor httpd esperar por requisies vindas de 192.168.1.* na
porta 80 e tambm 60000, e requisies vindas de 192.168.7.1 na porta 81 e tambm 60000.
As opes de restrio podem tanto ser especificadas nas diretivas <Directory>, <Location>
ou <Files> quanto nos arquivos .htaccess (ou outro nome de arquivo de controle de acesso
especificado pela opo AccessFileName do arquivo de configurao do Apache). Cada diretiva
de acesso especificada entre <tags> e devem ser fechadas com </tag> (como na linguagem
HTML). As seguintes diretivas de acesso so vlidas no Apache:
<Directory /var/www>
Order deny,allow
deny from all
allow from 10.1.0.1
<Directory>
DirectoryMatch Funciona como a diretiva <Directory> mas trabalha com expresses regu-
lares como argumento. Por exemplo:
<DirectoryMatch "^/www/.*">
Order deny,allow
deny from all
<DirectoryMatch>
Captulo 12. Apache 179
Files As restries afetaro os arquivos do disco que conferem com o especificado. possvel
usar os coringas ? e * como no shell. Tambm podem ser usadas expresses regulares
especificando um ~ aps Files e antes da expresso. Por exemplo:
<Files *.txt>
Order deny,allow
deny from all
</Files>
<Files ~ "\.(gif|jpe?g|bmp|png)$">
Order deny,allow
</Files>
<FilesMatch "\.(gif|jpe?g|bmp|png)$">
Order deny,allow
</FilesMatch>
Location As restries afetaro o diretrio base especificado na URL e seus sub-diretrios. Por
exemplo:
<Location /security>
Order allow,deny
</Location>
LocationMatch Idntico a diretiva <Location> mas trabalha com expresses regulares. Por
exemplo:
<LocationMatch "/(extra|special)/data">
Order deny,allow
deny from all
</LocationMatch>
Captulo 12. Apache 180
O uso das diretivas <Directory> e <Files> apropriada quando voc deseja trabalhar com
permisses a nvel de diretrios/arquivos no disco local (o controle do proxy tambm feito
via <Directory>), o uso da diretiva <Location> adequado para trabalhar com permisses a
nvel de URL. A ordem de processamento das diretivas de acesso so processadas a seguinte:
1 A diretiva <Directory> (com exceo de <DirectoryMatch>) e os arquivos .htaccess
so processados simultaneamente. As definies dos arquivos .htaccess substituem
as de <Directory>)
2 Expresses regulares de <DirectoryMatch>, <Directory>.
3 <Files> e <FilesMatch> so processados simultaneamente.
4 <Location> e <LocationMatch> so processados simultaneamente.
Normalmente encontrado a opo Options dentro de uma das diretivas acima, a funo desta
diretiva controlar os seguintes aspectos da listagem de diretrios:
All Todas as opes so usadas exceto a MultiViews. a padro caso a opo Options no
seja especificada.
ExecCGI Permite a execuo de scripts CGI.
FollowSymLinks O servidor seguir links simblicos neste diretrio (o caminho no modi-
ficado). Esta opo ignorada caso aparea dentro das diretivas <Location>, <Location-
Match> e <DirectoryMatch>.
Includes permitido o uso de includes no lado do servidor.
IncludesNOEXEC permitido o uso de includes do lado do servidor, mas o comando #exec
e #include de um script CGI so desativados.
Indexes Se no existir um arquivo especificado pela diretiva <DirectoryIndex> no diretrio
especificado, o servidor formatar automaticamente a listagem ao invs de gerar uma
resposta de acesso negado.
MultiViews Permite o uso da Negociao de contedo naquele diretrio. A negociao de
contedo permite o envio de um documento no idioma requisitado pelo navegador do
cliente.
SymLinksIfOwnerMatch O servidor somente seguir links simblicos se o arquivo ou di-
retrio alvo tiver como dono o mesmo user ID do link. Esta opo ignorada caso
aparea dentro das diretivas <Location>, <LocationMatch> e <DirectoryMatch>.
Mltiplos parmetros para Options podem ser especificados atravs de espaos.
OBS1: A opo Options no tem efeito dentro da diretiva FILES.
OBS2: Tanto faz usar maisculas quanto minsculas nas diretivas de configurao, opes e
parmetros de configurao do Apache, a capitalizao apenas ajuda a leitura e interpretao:
SymLinksIfOwnerMatch (LinksSimblicosSeDonoConferir).
As opes especificadas para o diretrio afetam tambm seus sub-diretrios, a no ser que
sejam especificadas opes separadas para o sub-diretrio:
<Directory /var/www>
Options Indexes FollowSymLinks
</Directory>
Captulo 12. Apache 181
<Directory /var/www>
Options Indexes FollowSymLinks
</Directory>
<Directory /var/www/focalinux>
Options Includes
</Directory>
<Directory /var/www>
Options Indexes FollowSymLinks
</Directory>
<Directory /var/www/focalinux>
Options +Includes -Indexes
</Directory>
<Directory /var/www>
Order allow,deny
allow from all
<Files LEIAME-DONO.txt>
Order deny,allow
deny from all
</Files>
</Directory>
Se a diretiva <Files> for usada fora de uma estrutura <Directory>, ela ter efeito em todos os
arquivos disponibilizados pelo servidor. Este excelente mtodo para proteger os arquivos de
acesso, senhas e grupos, conforme ser explicado mais adiante.
Qualquer outro tipo de aninhamento de diretivas resultar em um erro de configurao ao se
tentar carregar/recarregar o Apache. Um exemplo de diretiva incorreta:
<Directory /var/www>
Options Indexes FollowSymLinks
<Directory /var/www/focalinux>
Options +Includes -Indexes
</Directory>
</Directory>
O correto :
<Directory /var/www>
Options Indexes FollowSymLinks
</Directory>
<Directory /var/www/focalinux>
Options +Includes -Indexes
</Directory>
que seja passado nome e senha para garantir acesso a pgina. Os mtodos de Autorizao e
Autenticao podem ser combinados como veremos mais adiante.
12.7.1 Autorizao
<Location /teste>
Option Indexes
Order allow,deny
allow from all
deny from .spammers.com.br
</Location>
A opo Option foi explicada acima, seguem as explicaes das outras diretivas:
Order Especifica em que ordem as opes de acesso allow/deny sero pesquisadas. Caso no
seja especificada, o padro ser deny/allow. Note que a ordem de pesquisa de allow e deny
a inversa da especificada. A diretiva Order aceita os seguintes valores:
deny,allow - Esta a padro, significa um servidor mais restritivo; a diretiva allow
processada primeiro e somente depois a diretiva deny. Caso nenhuma diretiva al-
low e deny forem especificadas ou no conferirem, PERMITE TUDO como padro.
allow,deny - Significa um servidor mais permissivo, a opo deny processada
primeiro e somente depois a opo allow. Caso nenhuma diretiva allow e deny for
especificadas ou no conferirem, BLOQUEIA TUDO como padro.
mutual-failure - Somente permite o acesso se o usurio receber autorizao
atravs da opo allow e NO ser bloqueado pela opo deny, caso uma das checa-
gens falhe, o acesso imediatamente negado. uma opo interessante quando
voc quer somente pessoas de um determinado endereo/rede acessando o seu sis-
tema e no estejam em sua lista negra :-)
ATENO: importante saber se a pgina ser permissiva ou restritiva para escolher
a ordem mais adequada ao seu caso, tambm leve em considerao a possibilidade do
processamento cair na diretiva de acesso padro, caso nem a diretiva allow e deny con-
feriram e estiver usando a ordem de acesso allow,deny ou deny,allow. Um sistema
mal configurado neste aspecto poder trazer srias conseqncias. comum em pginas
permissivas se definir a seguinte configurao:
Order allow,deny
allow from all
O motivo que em um grande site, se forem adicionadas mais restries nesta pgina (de-
vido a alguns domnios que tem usurios mal comportados, bloqueio de acesso a rede do
concorrente, potenciais atacantes, etc. . . ), estas devero ser lidas antes da diretiva allow
Captulo 12. Apache 184
<Directory /var/www>
Options SymLinksIfOwnerMatch Indexes MultiViews
Order allow,deny
allow from all
</Directory>
Permite o acesso a de qualquer usurio de qualquer lugar (allow from all), permite tambm a
visualizao da listagem formatada de arquivos caso nenhum arquivo especificado na diretiva
DirectoryIndex seja encontrado (Indexes), permite negociao de contedo (MultiViews) e seguir
links caso o dono do arquivo confira com o nome do link (SymLinksIfOwnerMatch).
<Directory /var/www>
Options SymLinksIfOwnerMatch Indexes MultiViews
</Directory>
Tem o mesmo significado da diretiva acima por mtodos diferentes; quando nenhuma opo
Order especificada, deny,allow definido como padro, e como nenhuma opo de acesso al-
low/deny foi especificada, o padro Order deny,allow usado e permite TUDO como padro.
<Directory /var/www>
Options Indexes
Order deny,allow
deny from all
</Directory>
Esta regra acima no tem muita lgica pois restringe o acesso de todos os usurios ao diretrio
/var/www, ao menos se esta for sua inteno. . .
<Location /focalinux>
Options All
Order allow,deny
allow from all
</Location>
<Files .htaccess>
Order deny,allow
deny from all
</Files>
<Files ~ "leiame-(arm|alpha|m68k|sparc|powerpc)\.txt">
Order deny,allow
deny from all
</Files>
<Directory /var/www>
Options Indexes
Order mutual-failure
allow from .dominio.com.br
deny from lammer.dominio.com.br
</Directory>
<Directory /var/www>
Options Indexes MultiViews
Order allow,deny
deny from .com .com.br
allow from all
</Directory>
<Directory /var/www>
Options None
Order deny,allow
allow from 192.168.1. .guiafoca.org .debian.org
deny from 200.200.123.
</Directory>
<Directory /var/www>
Options None
Order allow,deny
allow from 192.168.1. .cipsga.org.br .debian.org
deny from 200.200.123.
</Directory>
A regra acima idntica a anterior somente com a mudana da opo Order. Bloqueia o acesso
de mquinas da rede 200.200.123.* e permite o acesso de mquinas da rede 192.168.1.*,
do domnio *.cipsga.org.br e *.debian.org.
Note que a mquina 192.168.4.10 ter acesso BLOQUEADO a regra acima, pois no con-
ferir nem com allow nem com deny, ento o processamento cair na diretiva padro de al-
low,deny que neste caso bloqueia o acesso.
12.7.2 Autenticao
O arquivo de senhas pode ser criado e mantido atravs do uso de 3 utilitrios: htpasswd,
htdigest e dbmmanage:
htpasswd Este usado para criar o arquivo de senhas. Para criar um banco de dados com o
nome senhas para o usurio convidado, usada a seguinte sintaxe:
htpasswd -c -m senhas convidado
Voc ser perguntado por uma senha para o usurio convidado e para redigita-la. A opo
-c indica que dever ser criado um arquivo, a opo -m indica a utilizao de senhas crip-
tografadas usando o algoritmo MD5, que garante maior segurana que o mtodo Crypto. A
senha pode ser especificada diretamente na linha de comando atravs da opo -b (isto um
timo recurso para utilizao em shell scripts ou programas CGI de integrao com o naveg-
ador).
htpasswd -b -d senhas chefe abcdef
No exemplo acima, uma senha de alta segurana ser introduzida no banco de dados senhas
tornando impossvel o acesso a pgina do usurio :-)
Note que esta senha foi cadastrada usando o algoritmo de criptografia Crypto (opo -d). O
algoritmo SHA tambm pode ser usado como alternativa, atravs da opo -s. Para modi-
ficar a senha do usurio convidado, basta usar a mesma sintaxe (sem a opo -c que usada
para criar um novo arquivo):
Captulo 12. Apache 188
Atravs deste mtodo possvel especificar que usurios tero acesso ao recurso definido, us-
ando senhas de acesso individuais criptografadas usando um dos utilitrios da seo anterior.
Para restringir o acesso ao endereo http: //servidor.org/teste:
<Location /teste>
AuthName "Acesso a pgina do Foca Linux"
AuthType basic
AuthUserFile /home/gleydson/SenhaUsuario
# AuthGroupFile /home/users/SenhaGrupo
Require valid-user
</Location>
Ao tentar acessar o endereo http: //servidor/teste, ser aberta uma janela no nave-
gador com o ttulo Enter username for Acesso a pgina do Foca Linux at servidor.org, a diretiva
Require valid-user definem que o usurio e senha digitados devem existir no arquivo especi-
ficado por AuthUserFile para que o acesso seja garantido. Uma explicao de cada opo de
acesso usado na autenticao:
AuthName Ser o nome que aparecer na janela de autenticao do seu navegador indicando
qual rea restrita est solicitando senha (podem existir vrias no servidor, bastando es-
pecificar vrias diretivas de restries).
AuthType Especifica o mtodo de que o nome e senha sero passados ao servidor. Este
mtodo de autenticao pode ser Basic ou Digest
Basic - Utiliza a codificao base64 para encodificao de nome e senha, enviando o
resultado ao servidor. Este um mtodo muito usado e pouco seguro, pois qualquer
sniffer instalado em um roteador pode capturar e descobrir facilmente seu nome e
senha.
Captulo 12. Apache 189
Digest - Transmite os dados de uma maneira que no pode ser facilmente decod-
ificada, incluindo a codificao da rea protegida (especificada pela diretiva Auth-
Name) que possui a seqencia de login/senha vlida. A diferena deste mtodo
que voc precisar de arquivos de senhas diferentes para cada rea protegida es-
pecificada por AuthName (tambm chamada de Realm).
AuthUserFile o arquivo gerado pelo utilitrio htpasswd que contm a senha correspon-
dente ao usurio
AuthGroupFile um arquivo texto que contm o nome do grupo, dois pontos (:) e o nome
dos usurios que podem ter acesso ao recurso, separados por vrgulas. No exemplo
acima ele se encontra comentado, mas a seguir encontrar exemplos que explicam em
detalhes o funcionamento desta diretiva.
Require Especifica que usurios podem ter acesso ao diretrio. Podem ser usadas uma das 3
sintaxes:
Require user usurio1 usurio2 usurio3 - Somente os usurios especi-
ficados so considerados vlidos para ter acesso ao diretrio.
Require group grupo1 grupo2 grupo3 - Somente os usurios dos grupos es-
pecificados so considerados vlidos para terem acesso ao diretrio. Esta diretiva
til quando deseja que somente alguns usurios de determinado grupo tenham
acesso ao recurso (por exemplo, usurios do grupo admins).
Require valid-user - Qualquer usurio vlido no banco de dados de senhas
pode acessar o diretrio. bem til quando as opes de acesso especificadas por
Require user so muito longas. A opo Require deve ser acompanhado das direti-
vas AuthName, AuthType e as diretivas AuthUserFile e AuthGroupFile para funcionar
adequadamente.
OBS: necessrio reiniciar o Apache depois de qualquer modificao em seu arquivo de con-
figurao (apachectl restart), ou recarregar os arquivos de configurao (apachectl
graceful). Note que o apachectl somente um shell script para interao mais amigvel
com o servidor web apache, retornando mensagens indicando o sucesso/falha no comando
ao invs de cdigos de sada.
Alguns exemplos para melhor assimilao:
<Location /teste>
AuthName "Acesso a pgina do Foca Linux"
AuthType basic
AuthUserFile /home/gleydson/SenhaUsuario
Require user gleydson
</Location>
<Location /teste>
AuthName "Acesso a pgina do Foca Linux"
Captulo 12. Apache 190
AuthType basic
AuthUserFile /home/gleydson/SenhaUsuario
Require user gleydson usuario1 usuario2
</Location>
<Location /teste>
AuthName "Acesso a pgina do Foca Linux"
AuthType basic
AuthUserFile /home/gleydson/SenhaUsuario
Require user gleydson
Require user usuario1
Require user usuario2
</Location>
H casos onde existem usurios de um arquivo de senhas que devem ter acesso a um diretrio
e outros no, neste caso a diretiva valid-user no pode ser especificada (porque permitiria o
acesso de todos os usurios do arquivo de senha ao diretrio) e uma grande lista de usurios
ficaria bastante complicada de ser gerenciada com vrios usurios na diretiva Require user.
Quando existe esta situao, recomendado o uso de grupos de usurios. Para fazer uso
desse recurso, primeiro dever ser criado um arquivo quer armazenar o nome do grupo e dos
usurios pertencente quele grupo usando a seguinte sintaxe (vamos chamar este arquivo de
SenhaGrupo):
Agora adaptamos o exemplo anterior para que somente os usurios especificados no grupo
admins do arquivo criado acima:
<Location /teste>
AuthName "Acesso a pgina do Foca Linux"
AuthType basic
AuthUserFile /home/gleydson/SenhaUsuario
AuthGroupFile /home/gleydson/SenhaGrupo
Require group admins
</Location>
Captulo 12. Apache 191
Agora somente os usurios pertencentes ao grupo admins (gleydson e usuario2) podero ter
acesso ao diretrio /teste.
OBS1: Verifique se o servidor Web possui acesso a leitura no arquivo de senhas de usurios e
grupos, caso contrrio ser retornado um cdigo 500 - Internal Server Error. Este tipo de erro
caracterizado por tudo estar OK na sintaxe dos arquivos de configurao aps checagem com
apache -t e todas as diretivas de controle de acesso apontam para os diretrios e arquivos
corretos.
OBS2:: Sempre use espaos para separar os nomes de usurios pertencentes a um grupo.
OBS3: NUNCA coloque os arquivos que contm senhas e grupos em diretrios de acesso
pblico onde usurios podem ter acesso via o servidor Web. Tais localizaes so /var/www,
/home/"usuario"/public_html e qualquer outro diretrio de acesso pblico que defina
em seu sistema.
recomendvel tambm ocultar estes arquivos atravs da diretiva <Files> evitando possveis
riscos de segurana com usurios acessando os arquivos de senha e grupo.
Na distribuio Debian, qualquer arquivo iniciando com .ht* ser automaticamente ocul-
tado pelo sistema, pois j existe uma diretiva <Files ~ \.ht>. Tal diretiva pode tambm ser
especificada no arquivo de acesso .htaccess. Assim um arquivo .htsenha e .htgroup so
bons nomes se estiver desejando ocultar dados de olhos curiosos. . .
Os mtodos de autorizao e autenticao podem ser usados ao mesmo tempo dentro de qual-
quer uma das diretivas de controle de acesso. As diretivas de autorizao so processadas
primeiro (mod_access) e depois as diretivas de autenticao (mod_auth). Segue um exemplo:
<Directory /var/www>
Options Indexes
Order deny,allow
allow from .dominiolocal.com.br
deny from all
AuthName "Acesso ao diretrio do servidor Web"
AuthType basic
AuthUserFile /var/cache/apache/senhas
Require valid-user
</Directory>
Para ter acesso ao diretrio /var/www, primeiro o computador deve fazer parte do domnio
.dominiolocal.com.br, assim ela passa pelo teste de autorizao, depois disso ser
necessrio fornecer o login e senha para acesso a pgina, digitando o login e senha corre-
tos, o teste de autenticao ser completado com sucesso e o acesso ao diretrio /var/www
autorizado.
Captulo 12. Apache 192
<Directory /var/www>
Options Indexes
Order mutual-failure
allow from .dominiolocal.com.br
deny from lammer.dominiolocal.com.br
AuthName "Acesso ao diretrio do servidor Web"
AuthType basic
AuthUserFile /var/cache/apache/senhas
AuthGroupFile /var/cache/apache/grupos
Require group admins
</Directory>
interessante permitir usurios fazendo conexes de locais confiveis terem acesso direto sem
precisar fornecer nome e senha e de locais inseguros acessarem somente aps comprovarem
quem realmente so. Como o caso de permitir usurios de uma rede privada terem acesso
completo aos recursos e permitir o acesso externo ao mesmo recurso somente atravs de senha.
Isto pode ser feito com o uso da diretiva Satisfy junto ao bloco de autorizao/autenticao. Vamos
tomar como base o exemplo anterior:
<Directory /var/www>
Options Indexes
Order mutual-failure
allow from .dominiolocal.com.br
deny from lammer.dominiolocal.com.br
AuthName "Acesso ao diretrio do servidor Web"
AuthType basic
AuthUserFile /var/cache/apache/senhas
AuthGroupFile /var/cache/apache/grupos
Require group admins
Satisfy any
</Directory>
Note que o exemplo o mesmo com a adio da diretiva Satisfy any no final do bloco do
arquivo. Quando a opo Satisfy no especificada, ela assumir all como padro, ou seja, o
usurio dever passar no teste de autorizao e autenticao para ter acesso.
Captulo 12. Apache 193
<Directory /var/www>
Options Indexes
AuthName "Acesso ao diretrio do servidor Web"
AuthType basic
AuthUserFile /var/cache/apache/senhas
AuthGroupFile /var/cache/apache/grupos
Require group admins
Satisfy any
</Directory>
O arquivo .htaccess deve ser colocado no diretrio da pgina que dever ter suas permis-
ses de acesso/listagem controladas. A vantagem em relao a incluso direta de diretivas de
acesso dentro do arquivo de configurao do Apache, que o controle de acesso poder ser
definido pelo prprio webmaster da pgina, sem precisar ter acesso direto a configurao do
Apache, que requerem privilgios de root.
Outro ponto fundamental que no h necessidade de reiniciar o servidor Web, pois este
arquivo lido no momento de cada acesso ao diretrio que controla. O nome do arquivo
OverRide pode ser definido atravs da diretiva AccessFileName no arquivo de configurao do
Apache, .htaccess usado como padro.
O controle de que opes estaro disponveis no .htaccess so definidas na diretiva Al-
lowOverride que pode conter o seguintes parmetros:
Captulo 12. Apache 194
<Directory />
AllowOverride none
</Directory>
<Directory /var/www>
AllowOverride limit authconfig indexes
</Directory>
Order deny,allow
allow from 192.168.1.0/24
deny from all
AuthName "Acesso a pgina Web principal da Empresa"
AuthType basic
AuthUserFile /var/cache/apache/senhas
Require valid-user
Satisfy any
Note que a sintaxe exatamente a mesma das usadas na diretivas de acesso, por este motivo
vou dispensar explicaes detalhadas a respeito.
ATENO: A diretiva Options Indexes dever ser especificada no AllowOverRide e no no ar-
quivo .htaccess. Agora voc j sabe o que fazer se estiver recebendo erros 500 ao tentar
acessar a pgina (Erro interno no servidor). . .
Se o Navegador (campo User-Agent do cabealho http) usado para acessar a pgina for o
Internet Explorer, a varivel EXPLODER ser criada e ter o valor verdadeiro (porque
a expresso de SetEnvIf conferiu com a expresso).
Note o uso de deny from env=VARIVEL. Neste caso se o navegador for o Internet
Explorer, o acesso ser bloqueado (pois o navegador conferiu, assim a varivel EXPLODER
recebeu o valor verdadeiro).
permitido especificar as diretivas de acesso normais junto com especificao de variveis
de ambiente, basta separa-los com espaos. Uma descrio completa dos cabealhos HTTP,
contedo e parmetros aceitos por cada um so descritos na RFC 2068.
Captulo 12. Apache 196
Esta diretiva semelhante a <Directory> mas trabalha com mtodos HTTP (como GET, PUT,
POST, etc) ao invs de diretrios. A diretiva <Limit> pode ser usada dentro da diretiva de
acesso <Directory>, <Location>, mas nenhuma diretiva de controle de acesso pode ser colo-
cada dentro de <Limit>.
Os mtodos HTTP vlidos so: GET, POST, PUT DELETE, CONNECT, OPTIONS, TRACE,
PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK e UNLOCK. Note que os
mtodos so case-sensitive. Por exemplo:
<Directory /var/www>
Option Indexes
<Limit POST PUT DELETE>
Order deny,allow
allow from 192.168.1.0/24
deny from all
</Limit>
</Directory>
Somente permitem o uso dos mtodos POST, PUT, DELETE de mquinas da rede interna.
OBS1: Se o mtodo GET bloqueado, o cabealho HTTP tambm ser bloqueado.
OBS2: A diretiva de acesso <Limit> somente ter efeito na diretiva <Location> se for especi-
ficada no arquivo de configurao do servidor web. A diretiva <Location> simplesmente
ignorada nos arquivos .htaccess. . .
Este abaixo usado por padro na distribuio Debian para restringir para somente leitura o
acesso aos diretrios de usurios acessados via mdulo mod_userdir:
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
<Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Order deny,allow
Deny from all
</Limit>
</Directory>
Esta diretiva semelhante a <Limit>, mas atinge todos os mtodos HTTP, menos os especifi-
cados.
Captulo 12. Apache 197
<IfModule mod_userdir.c>
UserDir disabled root
UserDir public_html
</IfModule>
Nas linhas acima, as diretivas UserDir somente sero executadas se o mdulo mod_userdir.c
estiver carregado atravs da diretiva LoadModule.
Segue abaixo uma lista de mdulos padres que acompanham do Apache, os mdulos mar-
cados com * so ativados por padro:
Criao de Ambiente * mod_env - Ajusta variveis de ambiente para scripts CGI/SSI
* mod_setenvif - Ajusta variveis de ambiente de acordo com cabealhos http
mod_unique_id - Gera identificadores nicos para requisies
Deciso de tipo de contedo de arquivos * mod_mime - Determinao de
tipo/encodificao do contedo (configurado)
mod_mime_magic - Determinao de tipo/encodificao do contedo (automtico)
* mod_negotiation - Seleo de contedo baseado nos cabealhos HTTP Ac-
cept*
Mapeamento de URL * mod_alias - Traduo e redirecionamento de URL simples
mod_rewrite - Traduo e redirecionamento de URL avanado
* mod_userdir - Seleo de diretrios de recursos por nome de usurio
mod_speling - Correo de URLs digitadas incorretamente
mod_vhost_alias - Suporte para virtual hosts dinamicamente configurados em
massa.
Captulo 12. Apache 199
O Apache bem flexvel na especificao do que ser registrado em seus arquivos de log,
possibilitando utilizar um arquivo de log nico, diversos arquivos de logs registrando cada
evento ocorrido no sistema (conexo, navegador, bloqueio de acesso, erros, etc) incluindo os
campos que deseja em cada arquivo e a ordem dos campos em cada um deles.
Enfim qualquer coisa pode ser especificada de forma que atenda as suas necessidades particu-
lares de logging.
Captulo 12. Apache 200
12.10.1 AgentLog
12.10.2 ErrorLog
12.10.3 CustomLog
Permite especificar onde os logs sero gravados para os arquivos de logs personalizados. Esta
diretiva tambm aceita apelidos definidos pela diretiva LogFormat.
CustomLog [arquivo/pipe] [formato/nome]
Onde:
arquivo/pipe Arquivo de log personalizado ou pipe.
formato/nome Especifica o formato do arquivo de log (da mesma forma que o especificado
na opo LogFormat). Dever ser especificado entre aspas caso tiver espaos. Veja
LogFormat on page 202 para detalhes.
Ao invs de especificar o formato, tambm possvel usar um apelido definido pela opo
LogFormat (LogFormat on page 202), neste caso os parmetros definidos pelo LogFormat para
nome sero atribudos a diretiva CustomLog.
Exemplos:
CustomLog /var/log/apache/common.log %h %l %u %t \%r\ %>s %b
CustomLog /var/log/apache/common.log common
12.10.4 RefererLog
12.10.5 RewriteLog
12.10.6 RewriteLogLevel
12.10.7 ScriptLog
12.10.8 ScriptLogBuffer
12.10.9 ScriptLogLength
12.10.10 LogFormat
LogFormat: Define os campos padres do arquivo gerado pela opo TransferLog. O seu
formato o seguinte:
LogFormat [formato] [nome]
Quando o formato no especificado, assume o valor padro %h %l %u %t \%r\ %s
%b. A especificao do [nome] permite que voc utilize o formato especificado em uma opo
CustomLog ou outra diretiva LogFormat, facilitando a especificao do formato do log.
Os seguintes formatos so vlidos:
%b - Bytes enviados, excluindo cabealhos HTTP.
%f - Nome do arquivo.
%{FOOBAR}e - O contedo da varivel de ambiente FOOBAR.
%h - Mquina cliente.
%a - Endereo IP da mquina cliente.
%A - Endereo IP local. Muito til em virtual hostings.
%{Foobar}i - O contedo de Foobar: linhas de cabealho na requisio enviada ao
servidor.
%l - O nome de login remoto enviado pelo identd (se fornecido).
%{Foobar}n - O contedo de FooBar de outro mdulo.
%{Foobar}o: - O contedo de Foobar: linhas de cabealho na resposta.
%p - A porta do servidor servindo a requisio.
%P - A identificao do processo filho que serviu a requisio.
%r - A primeira linha da requisio.
%s - Status. Para requisies que foram redirecionadas. internamente. Este o status de
uma requisio *original*. Use %s para a ltima.
%t - Hora, no formato do arquivo de log (formato ingls padro).
%{format}t - Hora, no formato definido por strftime.
%T - O tempo necessrio para servir a requisio, em segundos.
%u - Usurio remoto (atravs do auth, pode ser falso se o status de retorno (%s) for 401).
%U - O caminho da URL requisitada.
%v - O nome cannico definido por ServerName que serviu a requisio.
%V - O nome do servidor de acordo com a configurao de UseCanonicalName.
Exemplos:
12.10.11 TransferLog
12.10.12 LogLevel
Define o nvel de alerta das mensagens que sero gravadas no arquivo especificado pela di-
retiva ErrorLog. Quando no especificado, assume o nvel error como padro. Abaixo os
parmetros aceitos em sua respectiva ordem de importncia:
emerg - O sistema est inutilizvel.
alert - A ao deve ser tomada imediatamente.
crit - Condies crticas.
error - Condies de erro.
warn - Condies de alerta.
notice - Condio normal mas significante.
info - Mensagens informativas.
debug - Mensagens do nvel de depurao.
Note que os nveis so os mesmos usados pelo syslog. Quando um nvel particular especi-
ficado, as mensagens de todos os nveis de maior importncia tambm sero registrados. Por
exemplo, se o nvel info for especificado, as mensagens com os nveis de notice e warn
tambm sero registradas. recomendado o uso de um nvel de no mnimo crit.
12.10.13 Anonymous_LogEmail
Se estiver como on a senha digitada ser registrada no arquivo especificado por ErrorLog.
Esta diretiva ativada por padro.
Exemplo: Anonymous_LogEmail off
Captulo 12. Apache 204
12.10.14 CookieLog
O programa webalizer poder ser instalado para gerar um relatrio grfico com a estatsti-
cas de visitas por ano/mes/dia/hora usando os dados do access.log. Outra interessante
caracterstica so as estatsticas de cdigos http (veja Cdigos HTTP on page 238), onde pos-
svel saber a quantidade de links quebrados existentes em nosso servidor (estes podero ser
detectados usando o pacote de anlise de sites linbot). O webalizer tambm compatvel
com os formatos de log do squid e proftpd. Na distribuio Debian ele pode ser instalado
a partir do pacote webalizer e gera um relatrio geral quando executado sem opes.
O Apache pode ser configurado para funcionar como servidor proxy transparente para sua
rede interna, possibilitando inclusive o uso de cache de disco. possvel se fazer conexes
HTTP (incluindo SSL) e FTP. Atravs desta caracterstica tambm possvel usar uma das
caractersticas mais interessante desse servidor web: o redirecionamento de conexes para
uma determinada URL para uma outra mquina, que pode ser um outro host remoto ou uma
mquina da rede interna (no acessvel diretamente via Internet).
O primeiro passo ativar o mdulo de proxy no arquivo httpd.conf, basta descomentar a
linha:
O seguinte bloco pode ser colocado no final do arquivo httpd.conf para configurar um servi-
dor proxy para realizar conexes diretas (sem o uso de cache) e permitir o uso de servidores
proxy em sua rede:
# Suporte a Proxy
#
<IfModule mod_proxy.c>
Captulo 12. Apache 205
ProxyRequests off
ProxyRemote * http://debian:3128
ProxyBlock microsoft.com microsoft.com.br
NoProxy 192.168.1.0/24
ProxyDomain .gms.com.br
CacheForceCompletion 70
CacheSize 5
CacheGcInterval 3
CacheDefaultExpire 5
CacheMaxExpire 300
NoCache 192.168.1.0/24 a_domain.com outrodomnio.com.br outro.dominio.net
Incluir o bloco abaixo no arquivo access.conf para definir o acesso dos servios de proxy
nas redes desejadas (se a sua configurao for aberta como padro isto pode ser opcional):
Para explicaes sobre o processo de bloqueio acima, veja Autorizao on page 183.
Este recurso do Apache interessante para criar clusters de servidores em sua rede interna.
O que ele faz pegar uma requisio a um determinado endereo e redireciona-lo a outra
mquina e as respostas so repassadas ao servidor web (para o cliente a mesma mquina esta
atendendo a requisio, para voc o processamento das requisies esta sendo distribudo in-
ternamente na rede).
As seguintes diretivas so usadas para realizar o redirecionamento de conexes: ProxyPass e
ProxyPassReverse
ProxyPass [diretrio_da_url [outro_servidor:/diretrio ] A ProxyPass permite que a URL seja
redirecionada para o servidor local e diretrio especificado. Por exemplo, assumindo que
o endereo principal de nosso servidor http: //www.guiafoca.org e desejamos
que a URL http: //www.guiafoca.org/download seja atendida por uma mquina
localizada na nossa rede privada com o endereo http: //192.168.1.54. Basta in-
cluir a linha:
ProxyPass /download http://192.168.1.54
Qualquer requisio externa a http: //www.guiafoca.org/download
/iniciante ser atendida por http: //192.168.1.54/iniciante.
ProxyPassRemote [diretrio_da_url [outro_servidor:/diretrio ] Esta diretiva permite modi-
ficar o cabealho Location nas mensagens de respostas de redirecionamento enviadas
pelo Apache. Isto permite que o endereo retornado seja o do servidor (que faz a inter-
face externa com o cliente) e no da mquina do redirecionamento.
ProxyPass /download http://192.168.1.54
ProxyPassReverse /download http://192.168.1.54
Se a mquina 192.168.1.54 redirecionar a URL para http: //192.168.1.54
/download/iniciante, a resposta ser modificada para http: /
/www.guiafoca.org/download/iniciante antes de ser retornada ao cliente.
\
Virtual Hosts (sites virtuais) um recurso que permite servir mais de um site no mesmo servi-
dor. Podem ser usadas diretivas especficas para o controle do site virtual, como nome do
administrador, erros de acesso a pgina, controle de acesso e outros dados teis para person-
alizar e gerenciar o site. Existem 2 mtodos de virtual hosts:
Virtual Hosts baseados em IP - Requer um endereo IP diferente para cada site.
Este poder ser um IP real (da interface de rede) ou um apelido (veja IP Alias on
page 63), o que interessa que deve haver um endereo IP diferente para cada site. O
nmero de sites servidos estar limitado a quantidade de endereos IP disponveis em
sua classe de rede. Veja Virtual hosts baseados em IP on the following page para de-
talhes de como construir um virtual host deste tipo. O apache foi um dos primeiros
Captulo 12. Apache 208
Existem duas maneiras de rodar este tipo de host virtual: Atravs de daemons httpd separa-
dos ou em um nico daemon httpd usando a diretiva <VirtualHost>.
As vantagens do uso de daemons separados para servir requisies a proteo sob UID
e GID diferente dos outros servidores, assim o administrador do site1 no ter acesso ao
httpd.conf, pgina do site2 (porque ele estar rodando sob uma UID e GID diferentes
e o acesso restrito). Para usar este mtodo, especifique a opo -f [arquivo_cfg] para utilizar
um arquivo de configurao personalizado e a diretiva Listen endereo:porta para dizer onde o
servidor aguardar as requisies.
As vantagens do uso de um mesmo daemon para servir as requisies so: quando no h prob-
lema se os administradores de outros sites tenham acesso ao mesmo arquivo de configurao
ou quando h a necessidade de servir muitas requisies de uma s vez (quanto menos servi-
dores web estiverem em execuo, melhor o desempenho do sistema). Abaixo um exemplo de
configurao de virtual hosts servindo os sites www.site1.com.br e www.site2.com.br:
ServerAdmin webmaster@site.com.br
<VirtualHost www.site1.com.br>
ServerName www.site1.com.br
ServerAdmin site1@site1.com.br
DocumentRoot /var/www/www_site1_com_br
TransferLog /var/log/apache/site1/access.log
ErrorLog /var/log/apache/site1/error.log
User www-data
Group www-data
</VirtualHost>
<VirtualHost www.site2.com.br>
ServerName www.site2.com.br
DocumentRoot /var/www/www_site2_com_br
CustomLog /var/log/apache/site2/access.log combined
ErrorLog /var/log/apache/site2/error.log
</VirtualHost>
Captulo 12. Apache 209
Qualquer diretiva dentro de <VirtualHost> controlaro tero efeito no site virtual especificado.
Quando uma diretiva no for especificada dentro de <VirtualHost>, sero usados os valores
padres especificados no arquivo de configurao do Apache (como a diretiva ServerAdmin
webmaster@site.com.br que ser usado como padro na configurao de www.site2.com.br).
Digite apache -S para ver suas configuraes de virtual hosts atual.
OBS1: Desative a diretiva UseCanonicalName off quando utilizar o recurso de mquinas
virtuais, esta diretiva faz que o nome do servidor retornado usando o valor em ServerName
quando o cliente digita um endereo qualquer.
OBS2: Utilize sempre que possvel endereos IP em configuraes crticas, assim os servios
no sero to vulnerveis a possveis falsificaes ou erros. Veja /etc/host.conf on page 50 e
Proteo contra IP spoofing on page 143. Leia tambm a seo Segurana no uso de IPs em
Virtual Hosts on page 211.
OBS3: No permita que outros usurios a no ser o root e o dono do processo Apache (es-
pecificado pela diretiva User) tenham acesso de gravao aos logs gerados pelo servidor, pois
os dados podem ser apagados ou criados links simblicos para binrios do sistema que sero
destrudos quando o Apache gravar dados. Alguns binrios e bibliotecas so essenciais para
o funcionamento do sistema.
NameVirtualHost 200.200.200.10:80
<VirtualHost 200.200.200.10>
ServerName www.site1.com.br
ServerAdmin admin1@site1.com.br
DocumentRoot /var/www/www_site1_com_br
TransferLog /var/log/apache/site1/access.log
ErrorLog /var/log/apache/site1/error.log
</VirtualHost>
<VirtualHost 200.200.200.10>
Captulo 12. Apache 210
ServerName www.site2.com.br
ServerAdmin admin2@site2.com.br
DocumentRoot /var/www/www_site2_com_br
TransferLog /var/log/apache/site2/access.log
ErrorLog /var/log/apache/site2/error.log
</VirtualHost>
A diretiva NameVirtualHost diz que ser usado virtual hosts baseados em nome servidos pela
mquina com IP 200.200.200.10. Os parmetros dentro do bloco das diretivas <Virtual-
Host > so especficas somente no site virtual especificado, caso contrrio os valores padres
definidos no arquivo de configurao sero usados. Caso nenhum virtual host confira com a
configurao, o virtualhost _default_ ser usado.
Digite apache -S para ver suas configuraes de virtual hosts atual. Se sua inteno criar
um grande nmero de virtual hosts que sero servidos pela mesma mquina, o uso da expan-
so %0 e diretivas VirtualDocumentRoot e VirtualScriptAlias so recomendados:
NameVirtualHost 200.200.200.10:80
<VirtualHost 200.200.200.10>
VirtualDocumentRoot /var/www/%0
VirtualScriptAlias /var/www/%0/cgi-bin
TransferLog log/apache/site1/access.log
ErrorLog log/apache/site1/error.log
</VirtualHost>
OBS1: Utilize sempre que possvel endereos IP em configuraes crticas, assim os servios
no sero to vulnerveis a possveis falsificaes ou erros. Veja /etc/host.conf on page 50 e
Proteo contra IP spoofing on page 143. Leia tambm a seo Segurana no uso de IPs em
Virtual Hosts on the next page.
OBS2: No permita que outros usurios a no ser o root e o dono do processo Apache (es-
pecificado pela diretiva User) tenha acesso de gravao aos logs gerados pelo servidor. Pois
os dados podem ser apagados ou criados links para binrios do sistema que sero destrudos
quando o apache gravar dados para os logs. Alguns binrios e bibliotecas so essenciais para
o funcionamento do sistema.
Captulo 12. Apache 211
Quando voc est colocando um nome na diretiva de configurao do seu virtual hosts,
est assumindo que ele resolver o endereo IP corretamente (como www.site1.com.br =>
200.200.200.10). Se por algum motivo o servidor DNS for modificado (por outra pessoa
que tem acesso a isto), o endereo IP resolvido para o site www.site1.com.br poder ser
modificado para 200.200.200.20, isto redirecionar as requisies para outra mquina ao
invs da mquina correta. Este tipo de ataque chamado DNS Spoofing e o uso de endereo
IP (ao invs de nomes) praticamente evita que isto acontea. Esta situao pode acontecer com
a diretiva abaixo:
<VirtualHost www.gms.com.br>
ServerName www.gms.com.br
ServerAdmin gleydson@guiafoca.org
DocumentRoot /var/www/www_gms_com_br
</VirtualHost>
Outra situao, que impede o funcionamento do servidor Web, quando o servidor DNS est
em manuteno ou por algum outro motivo no pode resolver o endereo IP de um nome
especificado (como www.site1.com.br). O apache precisa saber qual o seu endereo IP
para ser executado. Veja a prxima modificao:
<VirtualHost 192.168.1.1>
ServerName www.gms.com.br
ServerAdmin gleydson@guiafoca.org
DocumentRoot /var/www/www_gms_com_br
</VirtualHost>
desviando o trfego para seu prprio servidor web. Se isto no for possvel, siga as dicas
abaixo para diminuir possveis problemas.
3 Utilize endereos IP na diretiva <VirtualHost>.
4 Use endereos IP na diretiva Listen.
5 Use um endereo IP na diretiva BindAddress.
6 Sempre utilize o parmetro ServerName em todas as diretivas <VirtualHost>, isto evita o
retorno incorreto de nomes (que pode evitar/revelar fraudes).
7 Quando utilizar virtual hosts, crie uma diretiva <VirtualHost _default_L:*> usando uma
diretiva DocumentRoot que no aponte para lugar algum. Esta diretiva ser acessada
quando nenhuma diretiva VirtualHost servir a requisio, conferindo com o endereo/ip.
Esta seo uma referncia rpida para configurao e uso do mdulo apache-ssl com o
servidor Apache. Este mdulo realiza a comunicao segura de dados (criptografada) via
porta 443 (que usada como padro quando especificamos uma url iniciando com https://).
A transmisso criptografada de dados importante quanto temos dados confidenciais que
precisamos transmitir como movimentao bancria, senhas, nmero de cartes de crdito,
fazer a administrao remota do servidor, etc. SSL significa Secure Sockets Layer (camada segura
de transferncia) e TLS Transport Layer Security (camada segura de Transporte).
A inteno aqui fornecer explicaes prticas para colocar um servidor Apache com suporte
a SSL funcionando no menor tempo possvel. Detalhes sobre funcionamento de certificados,
mtodos de criptografia, assinatura, etc. devero ser buscados na documentao deste mdulo
ou em sites especializados ( um assunto muito longo).
Ao invs de utilizar o mdulo mod_ssl, voc poder usar o pacote apache-ssl, ele nada
mais que um servidor Apache com o suporte SSL j incluso e no interfere no servidor
Apache padro, porque executado somente na porta 443.
Se voc tem um grande site com configuraes de acesso personalizadas, ele trar mais tra-
balho de administrao, pois as configuraes e diretivas de restries de acesso devero ser
copiadas para este servidor web. No entanto, ele indicado para mquinas que sero servi-
dores SSL dedicados ou quando no possui configuraes especiais em seu servidor web prin-
cipal.
Esta seo tem por objetivo a instalao do suporte ao mdulo SSL (mod_ssl) no servidor
Apache padro.
Depois, gere um certificado digital ssl com o programa mod-ssl-makecert. Ele ser ar-
mazenado por padro nos diretrios em /etc/apache/ssl.??? e seu uso explicado no
resto desta seo.
O certificado digital a pea que garante a transferncia segura de dados. Ele contm detalhes
sobre a empresa que far seu uso e quem o emitiu. Para gerar ou modificar um certificado dig-
ital, execute o comando mod-ssl-makecert e siga as instrues. O mtodo de criptografia
usado pelo certificado digital baseado no conceito de chave pblica/privada, a descrio
sobre o funcionamento deste sistema de criptografia feito em Usando pgp (gpg)para crip-
tografia de arquivos on page 408.
OBS No utilize acentos nos dados de seu certificado.
Abaixo uma configurao rpida para quem deseja ter um servidor com suporte a SSL funcio-
nando em menor tempo possvel (ela feita para operar em todas as instalaes e no leva em
considerao o projeto de segurana de sua configurao atual do Apache). Note que todas as
diretivas relacionadas com o mdulo mod_ssl comeam com o nome SSL:
# Certificado do servidor
SSLCertificateFile /etc/apache/ssl.crt/server.crt
</VirtualHost>
</IfModule>
##############################################################################
# Adicionalmente podero ser especificadas as seguintes opes para modificar
# o comportamento da seo SSL (veja mais detalhes na documentao do mod-ssl)
##############################################################################
SSLSessionCacheTimeout 300
Algumas diretivas deste mdulo podem fazer parte tanto da configurao global do servidor
como diretivas de acesso (Directory, Location, .htaccess, veja a opo Context na
documentao do mod_ssl).
Existem casos que precisa restringir o uso de conexes normais e permitir somente conexes
via SSL (como por exemplo, dentro da diretiva de acesso que controla seu acesso a uma pgina
com listagem de clientes). A opo SSLRequereSSL usada para tal e deve ser usada dentro das
diretivas de controle acesso:
<Directory /var/www/secure/clientes>
Options Indexes
Order deny,allow
Deny from evil.cracker.com
SSLRequireSSL
</Directory>
A diretiva acima requer que sejam feitas conexes SSL (porta 443 - https://) para acesso ao
diretrio /var/www/secure/clientes, qualquer conexo padro no criptografada (feita
na porta 80) ser rejeitada com o erro 403.
OBS: A diretiva SSLRequireSSL podia ser colocada entre as condicionais IfModule mod_ssl.c
mas o servidor web permitiria conexes no criptografadas se por algum motivo esse mdulo
no estivesse carregado. Na configurao acima, ocorrer um erro e impedir o funcionamento
do servidor web caso ocorra algum problema com o mod_ssl.
Verifique se a configurao do Apache est ok com apache -t. Caso positivo, reinicie o servi-
dor usando um dos mtodos descritos em Iniciando o servidor/reiniciando/recarregando a
Captulo 12. Apache 216
configurao on page 174. O servidor web lhe pedir a FraseSenha para descriptografar a
chave privada SSL (esta senha foi escolhida durante o processo de criao do certificado).
Esta senha garante uma segurana adicional caso a chave privada do servidor seja copiada de
alguma forma. Somente quem tem conhecimento da FraseSenha poder iniciar o servidor com
suporte a transferncia segura de dados. Verifique se o virtual host est servindo as requisies
na porta 443 com apache -S.
O nico mtodo para fazer o servidor web evitar de pedir a senha para descriptografar a chave
privada colocando uma senha em branco. Isto s recomendado em ambientes seguros e
o diretrio que contm a chave privada dever ter somente permisses para o dono/grupo
que executa o servidor Web. Qualquer outra permisso poder por em risco a segurana da
instalao caso a chave privada seja roubada. Depois disso, execute o comando:
Digite a senha quando pedido. A chave original (com senha) estar gravada no arquivo
server.key-Csenha e poder ser restaurada se necessrio. Reinicie o servidor Apache,
desta vez ele no pedir a senha.
OBS1: Tire uma cpia de segurana da chave privada original antes de executar esta operao.
OBS2: No se esquea de ajustar as permisses de acesso no diretrio /etc/apache
/ssl.key caso no utilize senha para proteger seu certificado digital.
O exemplo abaixo foi retirado da distribuio Debian GNU/Linux, fiz sua traduo, mod-
ificaes e inclui alguns comentrios sobre as diretivas para deixa-lo mais de acordo com o
contedo abordado pelo guia e mais auto-explicativo.
A configurao do Apache est distribuda nos arquivos httpd.conf, srm.conf e
access.conf e podem ser usados como modelo para a construo da configurao de seu
servidor.
12.14.1 httpd.conf
##
## httpd.conf -- Arquivo de configurao do servidor httpd Apache
##
Captulo 12. Apache 217
#
# Baseado nos arquivos de configurao originais do servidor NCSA por Rob McCo
# Modificado para distribuio junto ao guia Foca GNU/Linux Avanado
# http://focalinux.cipsga.org.br/ <gleydson@guiafoca.org>
#
# Este o arquivo de configurao principal do servidor Apache. Ele contm as
# diretivas de configurao que do ao servidor suas instrues.
# Veja <http://www.apache.org/docs/> para informaes detalhadas sobre as
# diretivas.
#
# NO leia simplesmente as instrues deste arquivo sem entender o que signifi
# e o que fazem, se no tiver certeza do que est fazendo consulte a documenta
# on-line ou leia as sees apropriadas do guia. Voc foi avisado.
#
# Aps este arquivo ser processado, o servidor procurar e processar o arquiv
# /etc/apache/srm.conf e ento /etc/apache/access.conf
# a no ser que voc tenha modificado o nome dos arquivos acima atravs das
# diretivas ResourceConfig e/ou AccessConfig neste arquivo.
#
# Configurao e nomes de arquivos de log: Se os nomes de arquivos que
# especificar para os arquivos de controle do servidor iniciam com uma
# "/", o servidor usar aquele caminho explicitamente. Se os nomes *no*
# iniciarem com uma "/", o valor de ServerRoot adicionado -- assim
# "logs/foo.log" com ServerRoot ajustado para "/usr/local/apache" ser
# interpretado pelo servidor como "/usr/local/apache/logs/foo.log".
#
# Originalmente por Rob McCool
# modificado por Gleydson Mazioli da Silva para o guia Foca GNU/Linux
#
# ServerType pode ser inetd, ou standalone. O modo Inetd somente suportado
# plataformas Unix. O modo standalone inicia o servidor como um daemon.
#
ServerType standalone
# Port: A porta que o servidor standalone escutar. Para portas < 1023, ser
Captulo 12. Apache 218
Port 80
#
# HostnameLookups: Registra os nomes DNS dos clientes ou apenas seus endereos
# IPs
# ex., www.apache.org (on) ou 204.62.129.132 (off).
# O valor padro off porque permitir menos trfego na rede. Ativando
# esta opo significa que cada acesso de um cliente resultar em
# NO MNIMO uma requisio de procura ao servidor de nomes (DNS).
#
HostnameLookups off
# Caso desejar que o servidor http seja executado como um usurio ou grupo dif
# voc deve executar o httpd inicialmente como root e ele modificar sua ID pa
# especificada.
User www-data
Group www-data
#
# ServerRoot: O topo da rvore de diretrios onde os arquivos de configurao
# servidor, erros, e log so mantidos.
#
# NOTA: Se tiver a inteno de colocar isto em um sistema de arquivos montado
# em um servidor NFS (ou outra rede) ento por favor leia a documentao do
# LockFile
# (disponvel em <http://www.apache.org/docs/mod/core.html#lockfile>);
# e se salvar de vrios problemas.
#
# No adicione uma barra no fim do caminho do diretrio.
#
ServerRoot /etc/apache
Captulo 12. Apache 219
BindAddress *
#
# Suporte a Objetos Compartilhados Dinamicamente (DSO - Dynamic Shared Object)
#
# Para ser capaz de usar a funcionalidade de um mdulo que foi compilado como
# um mdulo DSO, voc ter que adicionar as linhas LoadModule correspondente
# nesta localizao, assim as diretivas contidas nela estaro disponveis
# _antes_ de serem usadas. Por favor leia o arquivo README.DSO na distribuio
# 1.3 do Apache para mais detalhes sobre o mecanismo DSO e execute o comando
# "apache -l" para a lista de mdulos j compilados (estaticamente linkados e
# assim sempre disponveis) em seu binrio do Apache.
#
# Please keep this LoadModule: line here, it is needed for installation.
# LoadModule vhost_alias_module /usr/lib/apache/1.3/mod_vhost_alias.so
# LoadModule env_module /usr/lib/apache/1.3/mod_env.so
LoadModule config_log_module /usr/lib/apache/1.3/mod_log_config.so
# LoadModule mime_magic_module /usr/lib/apache/1.3/mod_mime_magic.so
LoadModule mime_module /usr/lib/apache/1.3/mod_mime.so
LoadModule negotiation_module /usr/lib/apache/1.3/mod_negotiation.so
LoadModule status_module /usr/lib/apache/1.3/mod_status.so
# LoadModule info_module /usr/lib/apache/1.3/mod_info.so
# LoadModule includes_module /usr/lib/apache/1.3/mod_include.so
LoadModule autoindex_module /usr/lib/apache/1.3/mod_autoindex.so
LoadModule dir_module /usr/lib/apache/1.3/mod_dir.so
LoadModule php3_module /usr/lib/apache/1.3/libphp3.so
LoadModule cgi_module /usr/lib/apache/1.3/mod_cgi.so
# LoadModule asis_module /usr/lib/apache/1.3/mod_asis.so
# LoadModule imap_module /usr/lib/apache/1.3/mod_imap.so
# LoadModule action_module /usr/lib/apache/1.3/mod_actions.so
# LoadModule speling_module /usr/lib/apache/1.3/mod_speling.so
LoadModule userdir_module /usr/lib/apache/1.3/mod_userdir.so
LoadModule alias_module /usr/lib/apache/1.3/mod_alias.so
LoadModule rewrite_module /usr/lib/apache/1.3/mod_rewrite.so
LoadModule access_module /usr/lib/apache/1.3/mod_access.so
LoadModule auth_module /usr/lib/apache/1.3/mod_auth.so
# LoadModule anon_auth_module /usr/lib/apache/1.3/mod_auth_anon.so
# LoadModule dbm_auth_module /usr/lib/apache/1.3/mod_auth_dbm.so
# LoadModule db_auth_module /usr/lib/apache/1.3/mod_auth_db.so
# LoadModule proxy_module /usr/lib/apache/1.3/libproxy.so
Captulo 12. Apache 220
#
# ExtendedStatus: Controla de o Apache gerar detalhes completos de status
# (ExtendedStatus On) ou apenas detalhes bsicos (ExtendedStatus Off) quando o
# manipulador (handler) "server-status" for usado. O padro Off.
#
ExtendedStatus on
#
# ErrorLog: A localizao do arquivo de log de erros.
# Se no estiver especificando a diretiva ErrorLog dentro de <VirtualHost>,
# as mensagens de erros relativas aos hosts virtuais sero registradas neste
# arquivo. Se definir um arquivo de log de erros para <VirtualHost>, as
# mensagens relativas ao servidor controlados por ela sero registradas l e
# no neste arquivo.
#
ErrorLog /var/log/apache/error.log
#
# LogLevel: Controla o nmero de mensagens registradas no ErrorLog.
# Facilidades possveis incluem: debug, info, notice, warn, error, crit,
# alert, emerg.
# Veja as facilidades na seo do guia sobre o syslog para detalhes
#
LogLevel warn
# As seguintes diretivas definem alguns formatos de nomes que sero usadas com
# diretiva CustomLog (veja abaixo).
#
# A localizao e formato do arquivo de log de acesso (definida pela diretiva
# LogFormat acima).
# Se no definir quaisquer arquivos de log de acesso dentro de um
# <VirtualHost>, elas sero registradas aqui. Se for definida dentro
# de <VirtualHost> o arquivo de log de acesso ser registrado no
# arquivo especificado na diretiva e no aqui.
#
#CustomLog /var/log/apache/access.log common
# Se voc desejar ter um arquivo de log separado para o agent (navegador usado
# e referer, descomente as seguintes diretivas.
#
# Incluir uma linha contendo a verso do servidor e um nome de host virtual
# para as pginas geradas pelo servidor (documentos de erro, listagens
# de diretrios FTP, sada dos mdulos mod_status e mod_info, etc., exceto
# para documentos gerados via CGI). Use o valor "EMail" para tambm incluir
# um link mailto: para o ServerAdmin. Escolha entre "On", "Off" ou "EMail".
#
ServerSignature On
#
# PidFile: O arquivo que o servidor gravar os detalhes sobre seu PID quando
# iniciar.
#
PidFile /var/run/apache.pid
#
# ScoreBoardFile: Arquivo usado para armazenar detalhes do processo interno do
# servidor. Nem todas as arquiteturas requerem esta diretiva, mas se a sua
# requerer (voc saber porque este arquivo ser criado quando executar o
Captulo 12. Apache 222
# Apache) ento voc *dever* ter certeza que dois processos do Apache no
# utilizam o mesmo arquivo ScoreBoardFile.
#
ScoreBoardFile /var/run/apache.scoreboard
#
# Na configurao padro, o servidor processar este arquivo, o
# srm.conf e o access.conf neste ordem. Voc pode fazer o servidor
# ignorar estes arquivos usando "/dev/null".
#
ResourceConfig /etc/apache/srm.conf
AccessConfig /etc/apache/access.conf
#
# A diretiva LockFile define o caminho do lockfile usado quando o servidor
# Apache for compilado com a opo USE_FCNTL_SERIALIZED_ACCEPT ou
# USE_FLOCK_SERIALIZED_ACCEPT. Esta diretiva normalmente deve ser deixada em s
# valor padro. A razo principal de modifica-la no caso do diretrio de log
# for montado via um servidor NFS< pois o arquivo especificado em LockFile
# DEVE SER ARMAZENADO EM UM DISCO LOCAL. O PID do processo do servidor princip
# automaticamente adicionado neste arquivo.
#
LockFile /var/run/apache.lock
ServerName debian.meudominio.org
#CacheNegotiatedDocs
Timeout 300
MaxKeepAliveRequests 100
KeepAliveTimeout 15
MinSpareServers 5
MaxSpareServers 10
# Nmero de servidores que sero iniciados --- deve conter um valor razovel.
StartServers 5
Captulo 12. Apache 224
MaxClients 150
#
# MaxRequestsPerChild: O nmero de requisies que cada processo tem permisso
# de processar antes do processo filho ser finalizado. O filho ser finalizado
# para evitar problemas aps uso prolongado quando o Apache (e talvez as
# bibliotecas que utiliza) tomar memria e outros recursos. Na maioria dos
# sistemas, isto realmente no necessrio, exceto para alguns (como o
# Solaris) que possuem ponteiros notveis em suas bibliotecas. Para estas
# plataformas, ajuste para algo em torno de 10000 ou algo assim; uma
# configurao de 0 significa ilimitado.
#
# NOTA: Este valor no inclui requisies keepalive aps a requisio
# inicial por conexo. Por exemplo, se um processo filho manipula
# uma requisio inicial e 10 requisies "keptalive" subseqentes,
# ele somente contar 1 requisio neste limite.
#
MaxRequestsPerChild 30
#Listen 3000
#Listen 12.34.56.78:80
#<VirtualHost host.some_domain.com>
#ServerAdmin webmaster@host.some_domain.com
#DocumentRoot /var/www/host.some_domain.com
#ServerName host.some_domain.com
#ErrorLog /var/log/apache/host.some_domain.com-error.log
Captulo 12. Apache 225
#TransferLog /var/log/apache/host.some_domain.com-access.log
#</VirtualHost>
#
# Se desejar usar hosts virtuais baseados em nome, ser necessrio definir no
# mnimo um endereo IP (e nmero de porta) para eles.
#
#NameVirtualHost 12.34.56.78:80
#NameVirtualHost 12.34.56.78
#
# Exemplo de um Host Virtual:
# Praticamente qualquer diretiva do Apache pode entrar na condicional
# VirtualHost.
#
#<VirtualHost ip.address.of.host.some_domain.com>
# ServerAdmin webmaster@host.some_domain.com
# DocumentRoot /www/docs/host.some_domain.com
# ServerName host.some_domain.com
# ErrorLog logs/host.some_domain.com-error.log
# CustomLog logs/host.some_domain.com-access.log common
#</VirtualHost>
#<VirtualHost _default_:*>
#</VirtualHost>
12.14.2 srm.conf
# exceto links simblicos e aliases que podem ser usados para apontar para
# outras localizaes no sistema de arquivos.
DocumentRoot /var/www
#
# UserDir: O nome do diretrio que ser adicionado ao diretrio home do usuri
# caso uma requisio ~usurio for recebida.
#
<IfModule mod_userdir.c>
# Linha abaixo por recomendao de segurana do manual do Apache
UserDir disabled root
UserDir public_html
</IfModule>
#
# DirectoryIndex: Nome do arquivo ou arquivos que sero usados como ndice do
# diretrio. Especifique mais de um arquivos separados por espaos ao invs
# de um s um nome (como "index") para aumentar a performance do servidor.
#
<IfModule mod_dir.c>
DirectoryIndex index.html index.htm index.shtml index.cgi
</IfModule>
#
# Diretivas que controlam a exibio de listagem de diretrios geradas pelo se
#
<IfModule mod_autoindex.c>
#
# FancyIndexing: se voc deseja o padro fancy index ou padro para a inde
# de arquivos no diretrio. Usando FancyIndexing o servidor
# apache gerar uma listagem de arquivos que poder ser
# ordenada, usar tipos de cones e encoding, etc. Veja as
# prximas opes
IndexOptions FancyIndexing
#
# As diretivas AddIcon* dizem ao servidor que cone mostrar para um determ
# arquivo ou extenso de arquivos. Estes somente so mostrados para os
# diretrios classificados atravs da opo FancyIndexing.
#
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^
DefaultIcon /icons/unknown.gif
#
# AddDescription: isto lhe permite colocar uma curta descrio aps um arq
# nos ndices gerados pelo servidor. Estes somente so mostrados para dire
# com ndices organizados usando a opo FancyIndexing.
# Formato: AddDescription "descrio" extenso
#
#AddDescription "GZIP compressed document" .gz
#AddDescription "tar archive" .tar
#AddDescription "GZIP compressed tar archive" .tgz
#
# O servidor procurar primeiro por nome.html, includo se ele for encontr
# e ento procurar pelo nome e incluir ele como texto plano se encontrad
ReadmeName README
#
# IndexIgnore: um conjunto de nomes de arquivos que a listagem de diretri
# deve ignorar e no incluir na listagem. permitido o uso de coringas
# como no interpretador de comandos.
#
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
</IfModule>
AccessFileName .htaccess
#
# DefaultType o tipo MIME padro que o servidor utilizar para um documento
# caso ele no possa determinar seu contedo, como atravs de extenses
# de arquivos. Se o servidor contm em sua maioria texto ou documentos em HTML
# "text/plain" um bom valor. Caso a maioria do contedo seja binrios, tal
# como aplicativos ou fotos, o tipo mais adequado ao seu caso poder ser
# "application/octet-stream" para evitar que navegadores tentem exibir
# aplicativos binrios como se fossem texto.
# Se desejar uma referncia rpida sobre tipos mime, consulte o arquivo
# /etc/mime.types
#
Captulo 12. Apache 229
DefaultType text/plain
#
# Document types.
#
<IfModule mod_mime.c>
AddEncoding x-compress Z
AddEncoding x-gzip gz tgz
#
# AddLanguage: permite especificar o idioma do documento. Voc pode
# ento usar a negociao de contedo para dar ao navegador um
# arquivo no idioma solicitado.
#
# Nota 1: O sufixo no precisa ser o mesmo da palavra chave do
# idioma --- estes com o documento em Polons (no qual o
# cdigo padro da rede pl) pode desejar usar "AddLanguage pl .po"
# para evitar confuso de nomes com a extenso comum de scripts
# scripts em linguagem Perl.
#
# Nota 2: As entradas de exemplos abaixo mostram que em alguns casos
# as duas letras de abreviao do Idioma no idntico as duas letras
# do Pas para seu pas, como Danmark/dk versus Danish/da.
#
# Nota 3: No caso de ltz ns violamos a RFC usando uma especificao de
# trs caracteres. Mas existe um trabalho em progresso para corrigir ist
# e obter os dados de referncia para limpar a RFC1766.
#
# Danish (da) - Dutch (nl) - English (en) - Estonian (ee)
# French (fr) - German (de) - Greek-Modern (el)
# Italian (it) - Portugese (pt) - Luxembourgeois* (ltz)
# Spanish (es) - Swedish (sv) - Catalan (ca) - Czech(cz)
# Polish (pl) - Brazilian Portuguese (pt-br) - Japanese (ja)
#
AddLanguage da .dk
AddLanguage nl .nl
AddLanguage en .en
AddLanguage et .ee
AddLanguage fr .fr
Captulo 12. Apache 230
AddLanguage de .de
AddLanguage el .el
AddLanguage it .it
AddLanguage ja .ja
# AddCharset ISO-2022-JP .jis
AddLanguage pl .po
# AddCharset ISO-8859-2 .iso-pl
AddLanguage pt .pt
AddLanguage pt-br .pt-br
AddLanguage ltz .lu
AddLanguage ca .ca
AddLanguage es .es
AddLanguage sv .se
AddLanguage cz .cz
#
# AddType permite modificar o mime.types sem editar o arquivo, ou fazer
# a associao de arquivos a certos tipos de contedo.
#
# Por exemplo, o mdulo PHP 3.x (que no faz parte da distribuio do
# Apache - veja http://www.php.net) tipicamente utiliza isto:
#
#AddType application/x-httpd-php3 .php3
#AddType application/x-httpd-php3-source .phps
#
# E para arquivos PHP 4.x use:
#
#AddType application/x-httpd-php .php
#AddType application/x-httpd-php-source .phps
# hdml
AddType text/x-hdml .hdml
Captulo 12. Apache 231
#
# AddHandler permite mapear certas extenses de arquivos a programas
# "manipuladores" adequados a seu contedo. Estes podem ser construdos
# no servidor ou adicionados com o comando Action (veja abaixo).
#
# Se desejar usar includes no lado do servidor, ou servir diretrios
# com scripts CGI para fora, descomente as seguintes linhas.
#
# Para usar scripts CGI:
#
#AddHandler cgi-script .cgi .sh .pl
#
# Para usar arquivos html gerados atravs do servidor
#
#AddType text/html .shtml
#AddHandler server-parsed .shtml
#
# Descomente as seguintes linhas para ativar a caractersticas de arquivos
# send-asis HTTP do servidor Apache
#
#AddHandler send-as-is asis
#
# Se desejar usar arquivos de mapas de imagens processadas no servidor, us
#
#AddHandler imap-file map
#
# Para ativar tipo de mapas, voc poder usar
#
#AddHandler type-map var
</IfModule>
# Fim dos tipos de documentos
AddDefaultCharset on
AddDefaultCharsetName iso-8859-1
# Redirect permite dizer aos clientes que documentos no existem mais no seu s
# e a nova localizao do documento.
# Format: Redirect nomeurl url
Captulo 12. Apache 232
# Aliases: Inclua aqui quantos apelidos voc desejar (sem limite) o formato :
# Alias nomeurl nomereal
# "nomeurl" o caminho especificado na url e "nomereal" a localizao
# do documento no sistema de arquivos local
#
# Action: permite definir os tipos de mdia que executaro um script quando um
# arquivo que conferir for chamado. Isto elimina a necessidade de caminhos de
# repetidas para processadores de arquivos CGI freqentemente usados.
# Format: Action media/type /cgi-script/location
# Format: Action handler-name /cgi-script/location
#
#
# MetaDir: especifica o nome do diretrio no qual o apache procurar arquivos
# detalhes do mdulo mod_cern_meta. Os mdulos meta contm cabealhos HTTP
# adicionais que sero includos durante o envio do documento.
#
#MetaDir .web
#
# Resposta de erros personalizada (no estilo do Apache)
# estas podem ser 3 tipos:
#
# 1) texto plano
#ErrorDocument 500 "O servidor fez boo boo.
# n.b. a aspa (") marca como texto, ela no ser exibida
#
# 2) redirecionamentos locais
Captulo 12. Apache 233
#
# O mdulo mod_mime_magic permite o servidor usar vrias dicas atravs do cont
# do arquivo para determinar o seu tipo. A diretiva MIMEMagicFile diz ao mdul
# onde as definies de dicas esto localizadas. O mdulo mod_mime_magic no
# parte do servidor padro Apache (voc precisar adiciona-lo manualmente com
# uma linha LoadModule (veja o pargrafo DSO na seo Ambiente Global no
# arquivo httpd.conf), ou recompile o servidor e inclua mod_mime_magic como
# parte de sua configurao), por este motivo ele est entre as condicionais
# <IfModule>. Isto significa que a diretiva MIMEMagicFile somente ser process
# caso o mdulo estiver ativo no servidor.
#
<IfModule mod_mime_magic.c>
MIMEMagicFile conf/magic
</IfModule>
<IfModule mod_setenvif.c>
#
# As seguintes diretivas modificam o funcionamento da resposta normal do
# servidor HTTP.
# A primeira diretiva desativa o keepalive para o Netscape 2.x e navegador
# as falsificam. Existem problemas conhecidos com estas implementaes de
# navegadores. A segunda diretiva para o MS IE 4.0b2 que tem uma impleme
# defeituosa do HTTP/1.1 e no suporta adequadamente o keepalive quando el
# utiliza as respostas de redirecionamento 301 e 302.
#
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
#
# As seguintes diretivas desativam as respostas HTTP/1.1 para navegadores
# violam a especificao HTTP/1.0 no sendo capaz de enviar uma resposta
# 1.1 bsica.
#
BrowserMatch "RealPlayer 4\.0" force-response-1.0
Captulo 12. Apache 234
12.14.3 access.conf
# Cada diretrio que o Apache possui acesso, pode ser configurado respectivame
# com quais servios e caractersticas que podem ser permitidas e/ou bloqueada
# no diretrio (e seus subdiretrios).
#
# Primeiro a configurao restringe uma srie de permisses
<Directory />
Options SymLinksIfOwnerMatch
AllowOverride None
# Order deny,allow
# Deny from all
</Directory>
# Esta parte deve ser modificada para a localizao do documento raz do servi
<Directory /var/www>
# Esta opo controla que opes os arquivos .htaccess nos diretrios podem se
# substitudas. Pode tambm conter "All", ou qualquer combinao de "Options",
# "FileInfo", "AuthConfig", e "Limit"
AllowOverride None
# Controla quem pode obter materiais deste servidor. Leia a seo adequada no
# guia para mais explicaes sobre a ordem de acesso, padres e valores permit
order allow,deny
allow from all
</Directory>
#
# O diretrio "/usr/lib/cgi-bin" deve ser modificado para o diretrio que
# possuem seus scripts CGI, caso tenha configurado o suporte a CGIs no
# servidor.
#
<Directory /usr/lib/cgi-bin/>
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
#
# Permite ver relatrios de status e funcionamento do servidor web e
# processos filhos, atravs da URL http://servidor/server-status
# isto requer o mdulo status_module (mod_status.c) carregado no arquivo
# httpd.conf
#
#<Location /server-status>
# SetHandler server-status
# Order deny,allow
# Deny from all
# Allow from .meudominio.org
#</Location>
#
# Permite relatrio de configurao remota do servidor, atravs da URL
# http://servername/server-info
Captulo 12. Apache 236
<Directory /usr/doc>
Options Indexes FollowSymLinks
order deny,allow
deny from all
allow from 192.168.1.10/24
</Directory>
#
# As seguintes linhas previnem os arquivos .htaccess de serem mostrados nos
# clientes Web. Pois os arquivos .htaccess freqentemente contm detalhes
# de autorizao, o acesso desabilitado por razes de segurana. Comente
# estas linhas se desejar que seus visitantes vejam o contedo dos arquivos
# .htaccess. Se modificar a diretiva AccessFileName acima, tenha certeza de
# fazer as modificaes correspondentes aqui.
#
# As pessoas tambm tendem a usar nomes como .htpasswd nos arquivos de senhas
# a diretiva abaixo os proteger tambm.
#
Captulo 12. Apache 237
<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>
#
# Controla o acesso a diretrios UserDir. As seguintes diretivas so um exempl
# para um site onde estes diretrios esto restritos a somente-leitura. Veja
# detalhes sobre as opes de acesso, e limites na seo sobre controle
# de acesso do guia
#
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
<Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Order deny,allow
Deny from all
</Limit>
</Directory>
#
# As vezes ocorrem relatos de pessoas tentando abusar de uma falha antiga nos
# dias do Apache 1.1 (muitas pginas na Net documentam isso). Esta falha envol
# um script CGI distribudo como parte do Apache. Descomentando estas linhas v
# poder redirecionar estes ataques a um script de registro em phf.apache.org.
# poder gravar em sua prpria mquina, usando o script support/phf_abuse_log.
#
#<Location /cgi-bin/phf*>
# Deny from all
# ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi
#</Location>
Esta seo pode ser uma interessante referncia para a programao e configurao da diretiva
ErrorDocument, etc.
2xx - Sucesso 200 OK
201 Criado
202 Aceito
Captulo 12. Apache 239
Captulo 13
Servidor ident
O servidor identd escolhido para ser descrito nesta seo do guia foi o oidentd.
13.1 Introduo
O ident (identidade) um servidor que permite identificar qual o usurio efetuou determinada
conexo e o sistema operacional usado. Ele opera na porta 113 por padro e retorna nomes de
usurios localmente vlidos, e consultado por servios conhecidos como IRC, alguns servi-
dores ftp, smtp e outros. Outro benefcio a utilizao de mecanismos de restries de acesso
baseadas em usurios/endereoIP (o tcpd um exemplo de servio que permite esta carac-
terstica). A sintaxe usada para fazer tal restrio universal: usurio@endereoIP onde normal-
mente aparece o endereoIP que usado para bloquear/permitir o acesso.
13.1.1 Verso
assumido que esteja usando a verso 1.7 do oidentd. As explicaes contidas aqui podem
funcionar para verses posteriores, mas recomendvel que leia a documentao sobre modifi-
caes no programa (changelog) em busca de mudanas que alterem o sentido das explicaes
fornecidas aqui.
Captulo 13. Servidor ident 242
13.1.2 Contribuindo
13.1.3 Caractersticas
Caractersticas do oidentd:
Pode ser executado tanto como daemon quanto via inetd (este ltimo indicado para sis-
temas com pouca memria onde o servio pouco solicitado).
Pode mapear identificaes de usurio via IP Masquerading, tornando este servidor
muito verstil podendo ser usado tanto em mquina individuais como em servidores
proxy/roteadores.
Pode fazer forwarding de conexes para outras mquinas da rede local, quando no
executado no proxy/roteador.
Spoofing de nomes: possvel mapear um nome de usurio para outra identificao;
por exemplo, o usurio root poder ser mapeado para outra conta de usurio antes da
identificao ser enviada.
Pacote: oidentd
Utilitrios:
oidentd - Servidor identd
Arquivos de configurao do oidentd:
identd.spoof Controla o spoof (falsificao) de nomes de usurios. O formato deste arquivo
so dois campos separados por :, o primeiro contendo a identificao original do
usurio e o segundo o nome que ser enviado pelo identd. O segundo campo pode ser
omitido, neste caso a resposta de identificao lida atravs do arquivo ~/.ispoof. Este
arquivo deve ter como dono o usurio do primeiro campo do identd.spoof e a iden-
tificao retornada ser a contida no arquivo. Esteja certo que o daemon oidentd tem
permisses para acessar este arquivo, caso contrrio nenhum spoof de identidade ser re-
alizado. Para o spoof ser habilitado, o servio oidentd dever ser iniciado com a opo
-s ou -S (veja mais detalhes Opes de linha de comando on page 244). OBS: Certifique-
se de colocar as permisses adequadas para que somente o daemon oidentd tenha acesso
a este arquivo (de acordo com o usurio e grupo usado para executar o oidentd), os
detalhes de mapeamento de nomes podem ser perigosos em mos erradas, e garantir o
sucesso de uma conexo indesejvel.
oidentd.users Mapeamento de nomes de usurios efetuando conexes via Masquerading. O
formato deste arquivo o seguinte:
#EndereoIP/mscara Usurio Sistema
192.168.1.1 john WINDOWS
192.168.1.2 usuario1 WINDOWS
192.168.1.1/32 usuario2 UNIX
Captulo 13. Servidor ident 243
O oidentd requer pouca memria e pode ser executado sem problemas em um sistema com
o mnimo de memria necessria para rodar o kernel do Linux (2 MB para 2.2 e 4MB para
as sries 2.4 do kernel). Mesmo assim interessante considerar 1 MB a mais que o mnimo
requerido pelo kernel para uma folga na execuo do servio de identificao junto a outros
do sistema.
13.1.7 Instalao
Por padro o servio instalado para ser executado como daemon, para executa-lo atravs do
inetd siga os passos em Instalao via Inetd on the current page. O servio ser executado
sob o usurio nobody e grupo nogroup por motivos de segurana, alteraes de nome/grupo
que executar o oidentd podem ser feitas no arquivo /etc/defaults/oidentd ou /etc
/init.d/oidentd.
Opes de linha de comando on the current page). Aqui foi definido um parmetro
mximo de 40 requisies por minuto (tpico de um servio poucos usado no sistema),
caso este limite seja ultrapassado o servio ser desativado na seo atual do inetd). Os
outros campos so descritos em /etc/inetd.conf on page 53.
2 Interrompa a execuo do daemon do oidentd atual dando um
./etc/init.d/oidentd stop.
3 Remova os links dos runlevels em /etc/rc?.d que iniciam/interrompem a execuo
do daemon com o comando: update-rc.d -f oidentd remove. Neste ponto o
daemon oidentd no ser mais iniciado. Para reverter esta ao, execute o comando:
udpate-rc.d oidentd defaults.
4 De um comando killall -HUP inetd para fazer o servio inetd recarregar o ar-
quivo de configurao /etc/inetd.conf. O servio de identd j estar funcionando.
OBS: A configurao da distribuio Debian permite detectar quando o servio ident (auth)
est sendo executado no /etc/inetd.conf atravs de seus scripts de inicializao. Voc
poder fazer as coisas manualmente baseado nisso se desejar.
13.1.12 Exemplos
No faz muito sentido exemplos de arquivo de configurao do oidentd por estes serem
muito simples e estarem bem explicados em Ficha tcnica on page 242. No entanto acho inter-
essante mostrar alguns exemplos de configuraes do hosts.allow e hosts.deny fazendo
uso dos recursos de restries baseadas em usurio@endereo :
# Arquivo hosts.allow
#
# Permite requisies talk de qualquer lugar
in.ntalkd: ALL
in.talkd: ALL
#
# Permite que o usurio john acesse os servios de ftp de qualquer mquina da
Captulo 13. Servidor ident 246
# rede 191.168.1.*
in.ftpd: john@192.168.1.
#
# O servio telnet est permitido somente para john conectando de 192.168.1.1
in.telnetd: john@192.168.1.1
# Todos podem acessar os servios samba (nomes e compartilhamentos) exceto
# o usurio evil conectando de qualquer host com o endereo cracker.com.*
smbd, nmbd: ALL EXCEPT evil@cracker.com.
# Arquivo hosts.deny
# Qualquer finger bloqueado exceto vindos do usurio admin feitos em qualque
# mquina da rede 192.168.1.*
in.fingerd: ALL EXCEPT admin@192.168.1.
# Qualquer outra coisa bloqueada
ALL: ALL
247
Captulo 14
Servidor telnet
Este captulo ensina como instalar, configurar, usar e fazer restries de acesso ao servidor
telnet. Tambm explicada a utilizao do cliente telnet e o suporte a criptografia (ssl).
14.1 Introduo
O servio telnet oferece o login remoto em seu computador, que lhe permite trabalhar conec-
tado a distncia como se estivesse em frente a ela. Ele substitui o rlogin e possui muitas
melhorias em relao a ele, como o controle de acesso, personalizao de seo e controle de
terminal.
14.1.1 Verso
assumido que esteja usando a verso 0.17.16 do telnet. As explicaes contidas aqui po-
dem funcionar para verses posteriores, mas recomendvel que leia a documentao sobre
modificaes no programa (changelog) em busca de mudanas que alterem o sentido das ex-
plicaes fornecidas aqui.
14.1.2 Caractersticas
Conexo rpida (no utiliza transmisso de dados criptografada), recomendado para am-
bientes seguros.
Possui uma verso com suporte a criptografia via ssl.
Possui controle de acesso tcpd (usando /etc/hosts.allow e /etc/hosts.deny).
A maioria dos sistemas operacionais trazem este utilitrio por padro como sistema de
acesso remoto a mquinas UNIX.
Suporte a terminais ANSI (cores e cdigos de escape especiais para o console) e uma
grande variedade de outros terminais.
Captulo 14. Servidor telnet 248
Pacotes:
telnet - Cliente telnet com suporte a autenticao.
telnetd - Servidor telnet com suporte a autenticao.
telnet-ssl - Cliente telnet com suporte a autenticao e ssl. Tambm suporta conexo
a servidores telnet padro quando o servidor no suporta ssl. Por padro tentada a
conexo usando ssl, se esta falhar ser assumida a transmisso em texto plano.
telnetd-ssl - Servidor telnet com suporte a autenticao e ssl. Tambm suporta
conexo de clientes telnet padro (sem suporte a ssl).
Utilitrios:
in.telnetd - Servidor telnet
telnet - Cliente telnet padro (quando o pacote telnet-ssl est instalado, simples-
mente um link para telnet-ssl).
telnet-ssl - Cliente telnet com suporte a ssl.
Normalmente o servidor telnet carregado via inetd, o que permite sua utilizao em uma
mquina com a quantidade mnima de memria RAM requerida para o funcionamento do
kernel: 2 MB para kernels da srie 2.2 e 4MB para kernels da srie 2.4.
14.1.6 Instalao
14.3 Recomendaes
O servio telnet utiliza texto plano para seo (exceto nas verses cliente/servidor -ssl). Os
dados transmitidos por servios que utilizam texto plano podem ser capturados por sniffers e
trazer perigo ao seu sistema (veja Sniffer on page 403).
Captulo 14. Servidor telnet 250
Use o comando: telnet [endereo] [porta] para realizar conexes com uma mquina
rodando o servidor telnet.
Adicionalmente as seguintes opes podem ser usadas:
-l [usuario] - Envia o nome de usurio ao computador remoto. Muito til com o
telnet-ssl.
-E - Desativa o caracter de escape
-a - Tenta fazer o login automtico usando o nome de usurio local. Se o login falhar, ser
solicitado o nome de usurio. Esta opo usada por padro com o cliente telnet-ssl.
-r - Emula o comportamento do programa rlogin.
Exemplos:
Captulo 15
Servidor ssh
15.1 Introduo
O servio de ssh permite fazer o acesso remoto ao console de sua mquina, em outras palavras,
voc poder acessar sua mquina como se estivesse conectado localmente ao seu console (sub-
stituindo o rlogin e rsh). A principal diferena com relao ao servio telnet padro,
rlogin e rsh que toda a comunicao entre cliente/servidor feita de forma encriptada
usando chaves pblicas/privadas RSA para criptografia garantindo uma transferncia segura
de dados.
A velocidade do console remoto conectado via Internet excelente (melhor que a obtida pelo
telnet e servios r*) dando a impresso de uma conexo em tempo real (mesmo em links
discados de 9.600 KB/s), a compactao dos dados tambm pode ser ativada para elevar ainda
mais a velocidade entre cliente-servidor ssh. Alm do servio de acesso remoto, o scp possi-
bilita a transferncia/recepo segura de arquivos (substituindo o rcp).
Em conexes sem criptografia (rsh, rlogin) os dados trafegam de forma desprotegida e caso
exista algum sniffer instalado em sua rota com a mquina destino, todo o que fizer poder ser
capturado (incluindo senhas).
Captulo 15. Servidor ssh 252
15.1.1 Verso
assumido que esteja usando a verso 2.0 do ssh. As explicaes contidas aqui podem fun-
cionar para verses posteriores, mas recomendvel que leia a documentao sobre modifi-
caes no programa (changelog) em busca de mudanas que alterem o sentido das explicaes
fornecidas aqui.
15.1.2 Histria
15.1.3 Contribuindo
15.1.4 Caractersticas
Pacote: ssh
Utilitrios:
ssh - Cliente ssh (console remoto).
slogin - Link simblico para o programa ssh.
Captulo 15. Servidor ssh 253
recomendado no mnimo 6MB de memria RAM para a execuo do servio ssh mais o ker-
nel do Linux. Este limite deve ser redimensionado para servidores de acesso dedicado, uma
quantidade de 64MB deve ser confortvel para centenas de usurios conectados simultanea-
mente (o que raramente acontece).
Veja tambm Restries de acesso, recursos e servios on page 375 para configurao de re-
stries usando PAM. O ssh que acompanha a distribuio Debian vem com o suporte a tcp
wrappers compilado por padro.
Detalhes sobre a execuo do servidor sshd (como inicio, autenticao e trmino) so enviadas
ao syslog do sistema. A prioridade e nvel so definidos no arquivo de configurao /etc/ssh
/sshd_config (veja Exemplo de sshd_config com explicaes das diretivas on page 263).
Por padro o servidor sshd instalado como daemon, tambm possvel executa-lo via
inetd mas isto no aconselhvel porque o servidor gera uma chave aleatria de seo toda
vez que iniciado, isto podendo levar vrios segundos (quando usada a verso 1 do proto-
colo ssh, veja Diferenas nas verses do protocolo on page 262).
Captulo 15. Servidor ssh 254
O arquivo que controla o funcionamento do daemon do ssh controlado pelo arquivo /etc
/init.d/ssh.
A execuo do ssh atravs de inetd automtica quando feita uma requisio para a porta
22.
15.2.1 ssh
ssh usuario@ip/nome_do_servidor_ssh
Caso o nome do usurio seja omitido, seu login atual do sistema ser usado. O uso da opo
-C recomendado para ativar o modo de compactao dos dados (til em conexes lentas).
A opo -l usurio pode ser usada para alterar a identificao de usurio (quando no us-
ada, o login local usado como nome de usurio remoto). Uma porta alternativa pode ser
especificada usando a opo -p porta (a 22 usada por padro).
Na primeira conexo, a chave pblica do servidor remoto ser gravada em ~/.ssh
/know_hosts ou ~/.ssh/know_hosts2 (dependendo da verso do servidor ssh remoto,
veja Diferenas nas verses do protocolo on page 262), e verificada a cada conexo como
checagem de segurana para se certificar que o servidor no foi alvo de qualquer ataque ou
modificao no autorizada das chaves. Por padro, o cliente utilizar o protocolo ssh verso
1, a opo -2 permite usar o protocolo verso 2.
Variveis de ambiente personalizadas para o ssh podero ser definidas no arquivo ~/.ssh
/environment. Comandos que sero executados somente na conexo ssh em ~/.ssh/rc e
/etc/ssh/sshrc caso contrrio ser executado o xauth por padro.
OBS: Para utilizar autenticao Rhosts/Rhosts+RSA (arquivos ~/.rhosts/~/.shosts) o
programa ssh dever ter permisses SUID root e conectar usando portas baixas (menores
que 1024).
Exemplos:
# Conecta-se ao servidor remoto usando o login do usurio atual
Captulo 15. Servidor ssh 256
ssh ftp.sshserver.org
Redirecionamento de conexes do X
Port 22
Protocol 2
Cipher blowfish
# CheckHostIP yes
# RhostsAuthentication no
# RhostsRSAAuthentication yes
# RSAAuthentication yes
# FallBackToRsh no
# UseRsh no
# BatchMode no
# StrictHostKeyChecking yes
# IdentityFile ~/.ssh/identity
# IdentityFile ~/.ssh/id_dsa
# IdentityFile ~/.ssh/id_rsa1
# IdentityFile ~/.ssh/id_rsa2
# EscapeChar ~
O putty um cliente ssh Win32 que possui suporte aos protocolos verso 1 e 2 do ssh,
aceita compactao alm de funcionar tambm como cliente telnet. Seu tamanho pe-
queno, apenas um executvel e requer 220KB de espao em disco. Ele pode ser baixado de
http://www.chiark.greenend.org.uk/~sgtatham/putty/.
Outra alternativa o MindTerm, este baseado em Java e pode inclusive ser executado como
um applet em uma pgina web. Este programa encontrado em http://www.mindbright.
se/mindterm/.
15.2.2 scp
Permite a cpia de arquivos entre o cliente/servidor ssh. A sintaxe usada por este comando
a seguinte:
Captulo 15. Servidor ssh 258
Exemplos:
# Para copiar um arquivo local chamado /pub/teste/script.sh para
# meu diretrio pessoal em ftp.sshserver.org
scp -C /pub/teste/script.sh gleydson@ftp.sshserver.org:~/
O pscp faz a tarefa equivalente ao scp no windows, e pode ser baixado de http://www.
chiark.greenend.org.uk/~sgtatham/putty/.
15.2.3 sftp
Permite realizar transferncia de arquivos seguras atravs do protocolo ssh. A conexo e trans-
ferncias so realizadas atravs da porta 22 (ainda no possvel modificar a porta padro). A
sintaxe para uso deste comando a seguinte:
sftp usuario@host_remoto
Captulo 15. Servidor ssh 259
Compactao pode ser especificada atravs da opo -C. Um arquivo contendo os comandos
usados na seo sftp poder se especificado atravs da opo -b arquivo para automatizar
tarefas.
OBS1: Para desativar o servidor sftp, remova a linha SubSystem sftp
/usr/lib/sftp-server (que inicializa o sub-sistema ftp) do arquivo /etc/ssh
/sshd_config e reinicie o servidor sshd.
OBS2: O suporte ao programa sftp somente est disponvel ao protocolo ssh verso 2 e su-
periores.
OBS3: Algumas opes comuns do cliente ftp padro (como mget) ainda no esto
disponveis ao sftp. Veja a pgina de manual para detalhe sobre as opes disponveis.
15.3.1 sshd
Este o daemon de controle da conexo encriptada via protocolo ssh, transferncia de arquivos
e shell interativo. As opes de linha de comando esto disponveis em Opes de linha de
comando on page 254. Seu arquivo de configurao principal /etc/ssh/sshd_config,
um exemplo e descrio das opes deste arquivo encontrada em Exemplo de sshd_config
com explicaes das diretivas on page 263.
OBS1: recomendvel que o arquivo /etc/ssh/sshd_config seja lido somente pelo
dono/grupo, por conter detalhes de acesso de usurios, grupos e intervalo entre a gerao
de chave de seo.
OBS2: Se estiver ocorrendo falhas no acesso ao servidor ssh, verifique as permisses nos
arquivos /etc/hosts.allow e /etc/hosts.deny (o nome do servio sshd). Mesmo
operando como daemon, o servidor utiliza estes arquivos para fazer um controle de acesso
adicional.
Este mtodo de autenticao utiliza o par de chaves pblica (que ser distribudo nas mquinas
que voc conecta) e outra privada (que ficar em seu diretrio pessoal) para autenticao. A
encriptao e decriptao so feitas usando chaves separadas e no possvel conseguir a
Captulo 15. Servidor ssh 260
chave de decriptao usando a chave de encriptao. possvel inclusive gerar uma chave sem
senha para efetuar o logon em um sistema ou execuo de comandos remotos (este esquema
um pouco mais seguro que os arquivos ~/.rhosts e ~/.shosts).
Siga os seguintes passos para se autenticar usando RSA 1 - usada na verso 1 do ssh:
1 Gere um par de chaves pblica/privada usando o comando:
ssh-keygen
Um par de chaves RSA verso 1 ser gerado com o tamanho de 1024 bits por padro,
garantindo uma boa segurana/performance, e salvas no diretrio ~/.ssh com o nome
identity e identity.pub. Para alterar o tamanho da chave use a opo -b tamanho.
Depois de gerar a chave, o ssh-keygen pedir uma frase-senha ( recomendvel
ter um tamanho maior que 10 caracteres e podem ser includos espaos). Se no quiser
digitar uma senha para acesso ao sistema remoto, tecle <Enter> quando perguntado.
Mude as permisses do diretrio ~/.ssh para 750. A opo -f especifica o diretrio e
nome das chaves. A chave pblica ter a extenso .pub adicionada ao nome especifi-
cado. ATENO Nunca distribua sua chave privada, nem armazene-a em servidores de
acesso pblicos ou outros mtodos que permitem outros terem acesso a ela. Se precisar
de uma cpia de segurana, faa em disquetes e guarde-a em um lugar seguro.
2 Instale a chave pblica no servidor remoto que deseja se conectar, por exemplo,
www.sshserver.org:
ssh-copy-id -i ~/.ssh/identity gleydson@www.servidorssh.org
A funo do utilitrio acima entrar no sistema remoto e adicionar a chave pblica local
~/.ssh/identity.pub no arquivo /home/gleydson/.ssh/authorized_keys do
sistema remoto www.sshserver.org. O mesmo processo poder ser feito manual-
mente usando os mtodos tradicionais (ssh/scp). Caso o arquivo remoto /home
/gleydson/.ssh/authorized_keys no existe, ele ser criado. Seu formato idn-
tico ao ~/.ssh/know_hosts e contm uma chave pblica por linha.
3 Agora utilize o ssh para entrar no sistema remoto usando o mtodo de chave
pblica/privada. Entre com a senha que usou para gerar o par de chaves
pblico/privado (ele entrar diretamente caso no tenha digitado uma senha).
Para autenticar em uma verso 2 do ssh (usando chave RSA 2 ou DSA):
1 Gere um par de chaves pblica/privada usando o comando:
ssh-keygen -t rsa -f ~/.ssh/id_rsa
ou
com:
scp ~/.ssh/id_rsa.pub usuario@servidorremoto:~/.ssh/authorized_keys2
ou
scp ~/.ssh/id_dsa.pub usuario@servidorremoto:~/.ssh/authorized_keys2
(caso tenha gerado a chave com a opo -t dsa)
Caso o arquivo remoto /home/gleydson/.ssh/authorized_keys2 no existe, ele
ser criado. Seu formato idntico ao ~/.ssh/know_hosts2 e contm uma chave
pblica por linha.
3 Agora utilize o ssh para entrar no sistema remoto usando o mtodo de chave
pblica/privada. Entre com a senha que usou para gerar o par de chaves
pblico/privado (ele entrar diretamente caso no tenha digitado uma senha).
OBS: Dever ser levado em considerao a possibilidade de acesso fsico ao seu diretrio pes-
soal, qualquer um que tenha posse de sua chave privada poder ter acesso ao sistema remoto.
O tipo de chave criada por padro a rsa1 (compatvel com as verses 1 e 2 do ssh). A opo
-t [chave] poder ser usada (ao gerar a chave) para selecionar o mtodo de criptografia:
rsa1 - Cria uma chave rsa compatvel com a verso 1 e 2 do ssh (esta a padro).
rsa - Cria uma chave rsa compatvel somente com a verso 2 do ssh.
dsa - Cria uma chave dsa compatvel somente com a verso 2 do ssh.
Para trocar a senha utilize o comando: ssh-keygen -p -t tipo_chave -f
~/.ssh/identity - ser pedida sua senha antiga e a nova senha (no mesmo es-
tilo do passwd). Opcionalmente voc pode utilizar a sintaxe: ssh-keygen -p -f
~/.ssh/identity -P senha_antiga -N senha_nova, que troca a senha em um nico
comando (til para ser usado em scripts junto com a opo -q para evitar a exibio de
mensagens de sada do ssh-keygen).
Com o uso de chaves tambm possvel o uso do ssh para execuo de comandos especficos
em mquinas remotas, isto possvel com os novos recursos da verso 3 do ssh. Para fazer
isto, siga os passos Usando autenticao RSA/DSA - chave pblica/privada on page 259 para
gerar um par de chaves DSA (o par RSA no aceita execuo de comandos especficos) e copiar
para authorized_keys2. Aps isto, entre no servidor remoto e edite a chave, inserindo o
comando que dever ser executado antes da linha dds, por exemplo:
Com este mtodo possvel restringir a execuo de alguns comandos/servios alm de outras
possibilidades como a mudana de variveis especficas para o comando:
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,command="ls / -la" ss
Imagine quando voc deseja ter acesso a uma mquina de sua rede interna que esteja atrs
de um gateway, isto possvel usando os recursos explicados em Execuo de comandos
Captulo 15. Servidor ssh 262
Isto o acesso do usurio ser redirecionado automaticamente quando efetuar o logon. Caso
tenha definido uma senha para a chave DSA, o usurio dever fornecer a senha para entrar no
gateway e outra para acessar sua estao de trabalho.
OBS: No estou levando em conta as consideraes de segurana que este exemplo tem em sua
rede, bem como o que pode ou no ser redirecionado. A inteno foi manter a simplicidade
para entender sem dificuldades como isto feito.
Aplicaes remotas podem ser abertas localmente com o uso desta tcnica. Voc poder usar
para acessar portas que estariam disponveis somente atravs do endereo remoto, realizar
conexes criptografadas ou com compactao (garantindo uma boa taxa de transferncia para
protocolos que usem mais texto).
Por exemplo, para redirecionar o trfego da porta 80 do servidor remoto para a porta 2003
local:
O sleep 60 tem a funo de apenas deixar o tunel aberto por 60 segundos, tempo suficiente
para realizarmos nossa conexo. Agora, entre no seu navegador local e acesse a porta 2003:
http://localhost:2003
A opo -C tambm pode ser especificada junto ao ssh para usar compactao dos dados
da conexo. Como notou, este recurso tambm til para fazer a administrao remota de
mquinas, porque o que est realizando a conexo ser o IP do servidor remoto, no o seu. Da
mesma forma, voc poder ter problemas caso no tenha uma boa poltica de distribuio de
contas de mquinas em sua rede. Veja Gerenciamento de contas e cuidados para a proteo
de senhas on page 161 para detalhes .
Protocolo SSH verso 1 Cada servidor possui uma chave RSA especfica (1024 bits por
padro) usada para identifica-lo. Quando o sshd inicia, ele gera uma chave RSA do
Captulo 15. Servidor ssh 263
servidor (768 bits por padro, valor definido por ServerKeyBits) que recriada a cada
hora (modificado por KeyRegenerationInterval no sshd_config) e permanece sempre
residente na RAM.
Quando um cliente se conecta o sshd responde com sua chave pblica da mquina e
chaves do servidor. O cliente ssh compara a chave RSA com seu banco de dados (em ~
/.ssh/know_hosts) para verificar se no foi modificada.
Estando tudo OK, o cliente gera um nmero aleatrio de 256 bits, o encripta usando am-
bas as chaves de mquina e chave do servidor e envia este nmero ao servidor. Ambos os
lados ento usam este nmero aleatrio como chave de seo que usado para encriptar
todas as comunicaes seguintes na seo.
O resto da seo usa um mtodo de embaralhamento de dados convencional, atualmente
Blowfish ou 3DES (usado como padro). O cliente seleciona o algoritmo de criptografia
que ser usado de um destes oferecidos pelo servidor. Aps isto o servidor e cliente
entram em um dilogo de autenticao. O cliente tenta se autenticar usando um dos
seguintes mtodos de autenticao:
~/.rhosts ou ~/.shosts (normalmente desativada).
~/.rhosts ou ~/.shosts combinado com autenticao RSA (normalmente de-
sativada).
Autenticao RSA por resposta de desafio.
Autenticao baseada em senha.
A autenticao usando Rhosts normalmente desativada por ser muito insegura mas
pode ser ativada no arquivo de configurao do servidor se realmente necessrio. A
segurana do sistema no melhorada a no ser que os servios rshd, rlogind, rexecd
e rexd estejam desativados (assim, o rlogin e rsh sero completamente desativados
na mquina).
Protocolo SSH verso 2 A verso 2 funciona de forma parecida com a 1: Cada mquina possui
uma chave RSA/DSA especfica usada para se identificar. A diferena que quando o
sshd inicia, ele no gera uma chave de servidor. A segurana de redirecionamento ofer-
ecida atravs da concordncia do uso de uma chave Diffie-Hellman. Esta concordncia
de chave resulta em uma seo com chave compartilhada. O resto da seo encriptada
usando um algoritmo simtrico, como Blowfish, 3DES, CAST128, Arcfour, 128 bit AES,
ou 256 bit AES.
O cliente que seleciona o algoritmo de criptografia que ser usado entre os oferecidos
pelo servidor. A verso 2 tambm possui integridade de seo feita atravs de um cdigo
de autenticao de mensagem criptogrfica (hmac-sha1 ou hmac-md5). A verso 2 do
protocolo oferece um mtodo de autenticao baseado em chave pblica (PubkeyAu-
thentication) e o mtodo de autenticao convencional usando senhas.
Abaixo segue um exemplo deste arquivo que poder ser adaptado ao seu sistema. O objetivo
ser ao mesmo tempo til para sua configurao e didtico:
Captulo 15. Servidor ssh 264
# Porta padro usada pelo servidor sshd. Mltiplas portas podem ser
# especificadas separadas por espaos.
Port 22
HostKey /etc/ssh/ssh_host_key
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
# pelo daemon sshd. O valor padro 10. Valores aleatrios podem ser
# especificados usando os campos "inicio:taxa:mximo". Por exemplo,
# 5:40:15 rejeita at 40% das tentativas de autenticao que excedam o
# limite de 5 at atingir o limite mximo de 15 conexes, quando
# nenhuma nova autenticao permitida.
MaxStartups 10
#MaxStartups 10:30:60
Captulo 16
Servidor pop3
16.1 Introduo
16.1.1 Verso
assumido que esteja usando a verso 4.0.3 do qpopper. As explicaes contidas aqui podem
funcionar para verses posteriores, mas recomendvel que leia a documentao sobre modifi-
caes no programa (changelog) em busca de mudanas que alterem o sentido das explicaes
fornecidas aqui.
16.1.2 Contribuindo
16.1.3 Caractersticas
Simples de configurar.
Possui um timeout padro de 30 segundos ao invs de 10 minutos do protocolo pop3
padro.
O protocolo pop3 mais simples e consome menos recursos no servidor que o IMAP.
Suporte a envio de boletins aos usurios do sistema.
Inclui suporte a TLS/SSL.
Suporte a senhas ocultas (shadow passwords).
Suporta PAM.
Suporte a autenticao via APOP.
Alta performance.
Pacote: qpopper.
Utilitrios:
in.qpopper - Servidor pop3.
popauth - Manipula os bancos de dados de autorizao quando usado o mtodo de
autenticao APOP.
Arquivos de configurao:
/etc/popper.allow - Contm a lista de usurios autorizados a usar o servio pop3.
/etc/popper.deny - Contm uma lista de usurios NO autorizados a usar o servio
pop3.
/etc/pop.auth - Contm dados de autenticao criados pelo programa popauth.
O servidor qpopper requer no mnimo 6MB de memria para rodar e espao em disco sufi-
ciente para acomodar os e-mails de usurios.
16.1.7 Instalao
O servio executado por padro via inetd e utiliza o controle de acesso tcpd (veja O mecan-
ismo de controle de acessos tcpd on page 56). Adicionalmente voc pode definir que usurios
tero/no acesso ao servio pop3 nos arquivos /etc/popper.allow e popper.deny. Por
padro, o acesso garantido para qualquer usurio.
Aps instalar o servidor pop3 instalado, resta configurar o cliente para conectar ao servidor
pop3 do servidor. O nome de usurio e senha so os usados no arquivo /etc/passwd.
Um simples teste consiste em usar o telnet conectando a porta pop3 (110): telnet
127.0.0.1 110:
Connected to 127.0.0.1.
Escape character is ^].
+OK Qpopper (version 4.0.3) at server.org starting. <2122.11132222@server.org
-c Modifica a senha para caracteres minsculos antes de autenticar, permitindo que clientes
conectem com a senha em MAISCULAS ou caracteres mIsTurados.
-f [arquivo ] Especifica um arquivo de configurao para o servidor qpopper. Veja a pgina
de manual para detalhes sobre as opes. Recomendo usar as opes de linha de co-
mando exceto se for requerida configuraes especiais para modificar o comportamento
do servidor pop3.
-l [num ] Modifica as opes de criptografia TLS/SSL usada no transporta da seo. Os
seguintes valores so aceitos:
0 - Desativa TLS/SSL. o padro.
1 - Ativa o suporte a TLS/SSL. Se o cliente no suportar criptografia, os dados sero
transmitidos usando a forma padro.
2 - Tenta ativar uma conexo TLS quando o cliente conecta ao servidor usando uma
porta alternativa.
-p [num ] Seleciona como a senha em texto plano ser manipulada. O servidor dever estar
compilado com suporte a outras formas de autenticao (como APOP) ao invs de texto
plano. As seguintes opes so suportadas.
0 - Senhas em texto plano podem ser usadas para usurios no cadastrados no ar-
quivo /etc/pop.auth (gerenciado pelo popauth. Este o padro.
1 - Somente permite acesso de usurios cadastrados no arquivo /etc/pop.auth.
Qualquer acesso usando texto plano negado.
2 - Permite autenticao usando texto plano como preferncia, at mesmo para
usurios que estejam no /etc/pop.auth). til para clientes que no suportam
autenticao usando texto plano.
3 - Somente usurios conectando da mesma mquina (127.0.0.1) podem usar auten-
ticao em texto plano.
4 - Permite autenticao usando texto plano somente se uma conexo criptogrfica
foi estabelecida usando TLS ou SSL.
-R Desativa a resoluo reversa de endereos IP de clientes.
-s Registra dados de inicio da seo, nome de usurio, nmero de bytes/mensagens apagadas,
nmero de mensagens deixadas no servidor e fim da seo. Estes detalhes so registrados
pelo syslogd. Seu uso recomendvel para ter controle sobre o que est acontecendo
em seu servidor.
-S Ativa o modo daemon. til para servidores pop3 com grande nmero de acessos.
-T [num ] Tempo mximo em segundos para finalizao da seo quando o cliente no envia
nenhuma resposta ou comando. Valores pequenos (como 20) podem ser especificados
para servidores que possuem poucos usurios e um link rpido. Para grande quantidade
de usurios ou conexo feita via links lentos (como ppp, slip, plip, etc.) use valores como
600 (10 minutos) ou mais. O valor padro 120 segundos (2 minutos).
-u L o arquivo ~/.qpopper.options no diretrio do usurio em busca de opes adi-
cionais para o servidor. Este arquivo lido aps o processo de autenticao e deve ter per-
misses leitura/gravao para o dono. Isto no recomendvel em servidores seguros,
a criptografia ou mtodo de autenticao podem ser desativados sem o conhecimento do
administrador comprometendo a segurana dos dados.
-U Idntica a opo acima, mas o arquivo deve residir no diretrio de spool (/var/spool
/pop) e ter o formato:
.usuario.qpopper-options
Captulo 16. Servidor pop3 273
Este arquivo deve ter como dono o administrador ou dono do servidor pop3. Esta alter-
nativa mais segura que a anterior porque o usurio no ter acesso ou desativar opes
especficas.
-y [facilidade ] Permite modificar o nvel facilidade que as mensagens so registradas no
syslogd (veja Arquivo de configurao syslog.conf on page 76).
Este recurso muito til para enviar alertas ou avisos para todos os usurios em seu sistema
de uma s vez. A mensagem escrita no diretrio /var/spool/popbull seguindo um for-
mato especial e quando o usurio pop3 se conecta para pegar seus e-mails receber tambm
uma cpia do boletim. O controle de boletins j recebido pelo usurio feito no arquivo ~
/.popbull. Siga os passos a seguir para configurar este sistema:
3 A primeira linha do boletim deve conter a palavra From e um espao e deve ser com-
pletada com um nome e data, seguido de campos essenciais para o envio da mensagem:
OBS: Quando incluir novos usurios no sistema, somente os ltimos 10 boletins sero envia-
dos.
Crie o diretrio de spool /var/mail em uma partio separada e ative o sistema de quota do
Linux nela. Leia as instrues em Limitando o uso de espao em disco (quotas) on page 392.
Captulo 16. Servidor pop3 274
O controle de acesso de conexes feito via mtodo tcpd usando o daemon in.qpopper (veja
O mecanismo de controle de acessos tcpd on page 56). O controle de acesso dos usurios
feito atravs do arquivos /etc/popper.allow e /etc/popper.deny, respectivamente
contm os nomes de usurios que podem e no podem ter acesso ao servidor qpopper. Por
motivos de segurana recomendvel redirecionar os e-mails do usurio root para outra
conta (no arquivo /etc/aliases e bloquear o acesso do usurio root ao pop3 no arquivo
/etc/popper.deny.
Se a mquina servidora pop3 no for utilizada para acesso remoto, recomendvel desativar
os servios de login (veja Desabilitando servios de shell para usurios on page 377).
275
Captulo 17
CVS
No tome-o como uma referncia completa ao uso e configurao do cvs, a pesquisa de sua
info page muito importante.
O CVS (Concurrent Version Software) permite que se organizem grupos de trabalho para de-
senvolvimento de projetos colaborativos. Um projeto pode ser desde um programa em C,
documentao em equipe, etc. O uso do CVS recomendado para qualquer desenvolvimento
de projeto que tenha vrios envolvidos trabalhando ao mesmo tempo.
Para cada mudana feita no programa, pedido uma descrio dos trabalhos realizados e o
sistema registra todas as modificaes realizadas ao longo do desenvolvimento, permitindo
voltar a uma verso anterior ou ver as mudanas entre elas facilmente.
Imagine uma situao onde voc est desenvolvendo um programa de computador e aps a
ltima modificao ele para de funcionar. Com o CVS possvel ver o que foi modificado e
voltar at a verso que estava funcionando para consertar o problema. No desenvolvimento
de documentao e traduo o CVS tambm desempenha um papel importante, pois com ele
o tradutor pode ver o que foi modificado entre a verso do documento original que ele usou
para traduo e uma verso recente, traduzindo apenas as diferenas.
Uma seo de cvs feita de modo interativo atravs do comando cvs. Por exemplo:
logar no sistema - cvs login
baixar um projeto - cvs checkout projeto
Cada comando do cvs ser explicado em detalhes no decorrer deste captulo.
Captulo 17. CVS 276
17.1.1 Verso
A verso do CVS documentada no guia a 1.11.1. As explicaes aqui certamente sero com-
patveis com verses posteriores deste programa.
17.1.2 Histria
O CVS uma substituio do sistema RCS (Revision Control System) ele possui mais recursos
e foi criado sendo compatvel com o RCS.
A histria do CVS (extrada de sua info page) que ele foi iniciado a partir de um con-
junto de scripts shell escritos por Dick Grune que foram postados ao grupo de notcias
comp.sources.unix no volume 6 de Dezembro de 1986. Na verso atual no esto mais
presentes shell scripts porque muitos dos conflitos de resoluo de algortmos vem deles.
Em Abril de 1989, Brian Berliner fez o design e programou o CVS. Mais tarde, Jeff Polk ajudou
Brian com o design do mdulo CVS.
Atravs da lista de discusso info-cvs. Para se inscrever envie uma mensagem com o subject
subscribe para info-cvs-request@gnu.org. Outra alternativa atravs do grupo de
noticias (newsgroup) da Usenet comp.software.config-mgm.
17.1.4 Caractersticas
Abaixo uma lista de caractersticas que tornam o CVS til no gerenciamento de trabalhos em
grupo:
Lock de arquivos, permitindo que somente uma determinada pessoa modifique o ar-
quivo durante o desenvolvimento do projeto.
Histrico de todas as mudanas feitas, isto permite voltar a uma verso anterior em caso
de problemas, e ver o que houve de errado com o cdigo.
Podem ser criados diversas equipes de trabalho para cada repositrios, e definidos quem
ter ou no acesso ao repositrio individualmente. O desenvolvedor gleydson, por
exemplo, podem ter acesso ao projeto x_beta e no ter acesso a projeto secret_y.
possvel criar um usurio com acesso annimo sem dar uma conta no sistema.
Permite utilizar diversos mtodos de acesso ao servidor: local, pserver, ext, etc. Cada
um destes mtodos ser descrito a seguir.
Permite o acesso via ssh para usurios que j possuam conta na mquina servidora. Este
mtodo garante segurana no envio da senha criptografada (veja Sniffer on page 403
para detalhes).
Permite visualizar facilmente o que foi modificado entre duas verses de um arquivo.
OBS: O CVS possui algumas limitaes e falhas, uma delas que mais me faz falta um suporte
a protocolo pserver via ssh que resolveria o problema de trfego em texto plano e gerencia-
mento de grupos com permisses diferenciadas.
Pacote: cvs
Utilitrios:
cvs - Servidor/ferramenta cliente.
cvsbug - Envia um bug sobre o CVS para a equipe de suporte.
rcs2log - Converte arquivos de log do formato usado pelo RCS para o CVS. Utilizado
na migrao desta ferramenta para o CVS.
cvsconfig - Usado pela Debian para ativar/desativar o servidor pserver. Pode tam-
bm ser usado o dpkg-reconfigure cvs para desativar o servidor pserver e suas
caractersticas.
cvs-makerepos - Script da Debian que l a lista de repositrios de /etc
/cvs-pserver.conf, cria os repositrios no local apropriado, corrige as permisses
do diretrio e adiciona os repositrios no servidor pserver.
cvs-pserver - Script da Debian responsvel por fazer uma inicializao mais in-
teligente do servidor de CVS via pserver, leitura e processamento de repositrios, etc.
Normalmente ele chamado a partir do arquivo /etc/inetd.conf.
Para executar o CVS requerido pelo menos 3 vezes mais memria que o tamanho do maior ar-
quivo usado pelo projeto (para realizao de diffs entre as atualizaes) e uma boa quantidade
de espao em disco.
Na realidade os requerimentos sobre o CVS dependem muito da aplicao que ser desen-
volvida. recomendvel que a mquina tenha memria suficiente para evitar o uso de swap,
que degrada bastante a performance do sistema.
Captulo 17. CVS 278
17.1.8 Instalao
A nica configurao requerida quando o CVS executado via pserver. Para isto,
necessria a seguinte linha no arquivo /etc/inetd.conf
Note que o parmetro 200 indica quantas vezes o processo CVS poder ser executado
por minuto no sistema. Caso esse nmero seja excedido, o servio ser desabilitado e ser
necessrio reiniciar o servidor inetd com o comando killall -HUP inetd para reativar
o servidor CVS pserver (veja /etc/inetd.conf on page 53 captulo do inetd para detalhes).
Ajuste este valor de forma adequada ao seu servidor!
Veja o script cvs-pserver sendo executado no final da linha. Ele foi desenvolvido para lidar
de forma mais inteligente com a configurao do servidor CVS pserver.
O CVS uma aplicao cliente/servidor, possuindo diversas maneiras de fazer o acesso seu
repositrio (veja Repositrio on page 285 repositrios). Estes mtodos so os seguintes:
local (local on the current page).
ext (ext on the following page).
pserver (pserver (password server) on page 281).
fork (fork on the following page).
GSSAPI (gssapi on page 285).
Eles so explicados em detalhes nas sub-sees a seguir.
17.2.1 local
Acessa o diretrio do repositrio diretamente no disco local. A vantagem deste mtodo que
no requerido nem nome nem senha para acesso (voc precisa apenas ter permisses para
acesso aos arquivos que deseja trabalhar) e tambm no preciso nenhuma conexo de rede.
Este mtodo ideal para trabalhar na mquina local ou com os arquivos administrativos do
CVS existentes no diretrio CVSROOT do repositrio. muito til tambm para configurar
outros mtodos de acesso, como o pserver.
Para criar seu repositrio, veja Criando um repositrio on page 286.
Para utilizar o mtodo de acesso local, basta definir a varivel CVSROOT da seguinte forma
(assumindo que o repositrio esteja instalado em /var/lib/cvs):
export CVSROOT=/var/lib/cvs
ou
Captulo 17. CVS 280
export CVSROOT=local:/var/lib/cvs
Depois disso, basta utilizar os comandos normais do cvs sem precisar se autenticar no sistema.
Veja os detalhes de utilizao dos comandos de CVS aps o login na seo Clientes de CVS
on page 293.
17.2.2 fork
Este mtodo semelhante ao local, mas ele simula uma conexo de rede com o servidor.
muito usado para fins de testes.
Para utilizar o mtodo de acesso fork, basta definir a varivel CVSROOT da seguinte forma
(assumindo que o repositrio esteja instalado em /var/lib/cvs):
export CVSROOT=fork:/var/lib/cvs
Depois disso, basta utilizar os comandos normais do cvs, sem precisar se autenticar no sis-
tema. Veja os detalhes de utilizao dos comandos do CVS aps o login em Clientes de CVS
on page 293.
17.2.3 ext
Este mtodo de acesso lhe permite especificar um programa externo que ser usado para fazer
uma conexo remota com o servidor cvs.Este programa definido na varivel CVS_RSH e
caso no ela seja especificada o padro rsh.
Este mtodo requer que o usurio possua um login/senha no banco de dados de autenticao
/etc/passwd do servidor de destino. Suas permisses de acesso ao CVS (leitura/gravao)
sero as mesmas definidas neste arquivo.
O uso do acesso criptografado via ssh possvel definindo o programa ssh na varivel
CVS_RSH. Veja os exemplos a seguir em Configurando o mtodo ext on the current page.
Para criar seu repositrio, veja Criando um repositrio on page 286.
Defina a varivel CVSROOT da seguinte forma para utilizar este mtodo de acesso (assumindo
/var/lib/cvs como repositrio):
Captulo 17. CVS 281
export CVSROOT=:ext:conta@servidor.org.br:/var/lib/cvs
cvs login
A conta uma conta de usurio existente no servidor remoto (por exemplo, gleydson)
seguido do nome do servidor remoto (separado por uma @). Por exemplo para acessar o
servidor cvs.cipsga.org.br usando a conta michelle:
export CVSROOT=:ext:michelle@cvs.cipsga.org.br:/var/lib/cvs
cvs checkout
OBS: A senha via mtodo de acesso ext ser pedida somente uma vez quando for necessrio
o primeiro acesso ao servidor remoto. Veja os detalhes de utilizao dos comandos de CVS
aps o login na seo Clientes de CVS on page 293. O uso mais freqente do ext para
conexes seguras feitas via ssh, feita da seguinte forma:
export CVS_RSH=ssh
export CVSROOT=:ext:michelle@cvs.cipsga.org.br:/var/lib/cvs
cvs checkout
export CVSROOT=:ext:michelle:senha@cvs.cipsga.org.br:/var/lib/cvs
Este um mtodo de acesso remoto que utiliza um banco de dados de usurios senhas para
acesso ao repositrio. A diferena em relao ao mtodo de acesso ext que o pserver roda
atravs de um servidor prprio na porta 2401. O acesso dos usurios (leitura/gravao) no
repositrio pode ser feita tanto atravs do banco de dados de usurios do sistema (/etc
/passwd) como atravs de um banco de dados separado por repositrio.
Captulo 17. CVS 282
A grande vantagem deste segundo mtodo que cada projeto poder ter membros com acessos
diferenciados; o membro x poder ter acesso ao projeto sgml mas no ao projeto focalinux;
ou o usurio y poder ter acesso de gravao (para trabalhar no projeto focalinux) mas
somente acesso de leitura ao projeto sgml.
Este o mtodo de acesso preferido para a criao de usurios annimos (uma vez que o
administrador de um servidor que hospede muitos projetos no vai querer abrir um acesso
annimo via ext para todos os projetos).
Tambm existe a vantagem que novos membros do projeto e tarefas administrativas so feitas
por qualquer pessoa que possua acesso de gravao aos arquivos do repositrio.
Para ativar o pserver (caso ainda no o tenha feito). Execute o comando dpkg-reconfigure
cvs e selecione a opo Ativar o servidor pserver. Uma maneira de fazer isso auto-
maticamente modificando o arquivo /etc/inetd.conf adicionando a seguinte linha:
# na Debian
cvspserver stream tcp nowait.400 root /usr/sbin/tcpd /usr/sb
# em outras Distribuies
cvspserver stream tcp nowait root /usr/bin/cvs cvs -f --allow-root=/var/l
export CVSROOT=:pserver:michelle@cvs.cipsga.org.br:/var/lib/cvs
cvs login
Captulo 17. CVS 283
Ser pedido a senha da usuria michelle. Entrando com a senha correta, o sistema retornar
para o aviso de comando. Uma mensagem ser mostrada caso a senha entrada seja incor-
reta. Daqui em diante, o resto da seo CVS normal e voc ter as permisses de acesso ao
repositrio de acordo com as suas permisses de acesso naquele diretrio.
OBS1: A senha poder ser passada junto com o login da mesma forma como o ftp. Veja a
observao em Configurando o mtodo ext on page 280.
OBS2: A desvantagem do mtodo pserver padro que a seo feita em texto plano, desta
forma, alguns cuidados podem ser tomados para tornar o sistema um pouco mais seguro.
Um deles dar /bin/false como shell de usurio (para desativar o login no sistema) ou
usar o mtodo de acesso descrito em Servidor pserver usando autenticao do sistema on the
preceding page em combinao com este. Tenha conciencia das influncias disso se a mquina
for usada para outras tarefas, como um servidor pop3 por exemplo.
que fizer o cvs login. Uma forma segura de se fazer isto, criar uma conta de
usurio *somente* com acesso aos arquivos do CVS, sem shell e senha. Isto permi-
tir mapear a UID/GID do usurio criado com o acesso do CVS sem comprometer a
segurana do sistema de arquivos. Isto pode ser feito atravs do seguinte comando:
adduser --disabled-password --disabled-login usuario
necessrio especificar um diretrio home do usurio, pois o servidor cvs precisa
ter acesso ao arquivo /home/do/cvs/.cvsignore. OBS1: Mais uma vez: Leve
sempre em conta a forma que os outros servios em sua mquina esto configu-
rados (como eles fazem acesso, permisses de acesso, diretrios onde gravam ar-
quivos, so algumas delas) antes de escolher como um servio novo na mquina
funcionar. Isto poder modificar ou deixar vulnervel a segurana de sua insta-
lao. OBS2: Permita que os usurios somente tenham acesso a mquina via CVS.
OBS3: Certifique-se sempre que o dono/grupo do repositrio seja root.src (ou
outro grupo que tenha criado) adicione somente usurios de confiana no grupo
src para criar novos projetos. Exemplos:
gleydsonm:K32dk1234k:cvsuser
anonymous::pooruser
O usurio cvs gleydsonm quando logar no cvs, ter as permisses de acesso do
usurio cvsuser do sistema. OBS1: Certifique-se que o usurio local possui per-
misses de gravao no diretrio do CVS, caso contrrio ele no poder fazer com-
mits. Lembre-se que as permisses de leitura/gravao do usurio sero contro-
ladas atravs de arquivos do prprio pserver, mas tambm necessria a permisso
de gravao do usurio no repositrio. Isto poder ser feito atravs de grupos de
sistema e garante uma dupla camada de segurana. OBS2: Caso tenha preferido
usar o pserver sob um usurio diferente de root e esteja obtendo a mensagem
setgid failed: Operation not permitted, significa que o servidor CVS
no consegue mudar para o grupo referente ao usado no diretrio do repositrio.
Verifique se as permisses esto adequadas e se o grupo do usurio CVS no /etc
/passwd o mesmo que especificou para acesso ao repositrio.
7 Para dar direito de leitura ao repositrio, crie um arquivo chamado readers e adicione
os nomes de usurios que tero acesso ao repositrio (um por linha). O nome que dever
ser usado o nome do usurio de CVS e no do sistema (usurio gleydsonm, segundo
o exemplo). Exemplo:
gleydsonm
anonymous
8 Para dar direito de gravao ao repositrio, crie um arquivo chamado writers. Seu
formato idntico ao arquivo readers. Exemplo:
gleydsonm
macan
otavio
hmh
kov
9 Pronto, o acesso a CVS usando um banco de dados prprio est pronto! basta dar o com-
mit nos arquivos, adicionar os arquivos readers, writers e passwd no repositrio
(veja Adicionando um arquivo ao mdulo CVS do servidor on page 289) para o servidor
de CVS para te-lo funcionando. Note que em verses mais novas do CVS, no possvel
Captulo 17. CVS 285
transferir o arquivo passwd via rede, ento ser necessrio cria-lo manualmente dentro
do repositrio do servidor. OBS: O arquivo passwd no transferido pelo commit por
motivos de segurana, pois ele contm senhas que podem ser capturadas e usada por pes-
soas maliciosas. Ser necessrio transferi-lo manualmente para o repositrio do servidor
remoto (voc ter que ser o usurio root ou ter permisses adequadas). O recomendvel
utilizar o scp (scp on page 257) para realizar transferncias seguras. .
O mtodo de acesso do CVS aos arquivos readers e writers restritiva, portanto se um
nome de usurio existir no arquivo readers e writers o que valer ser o menor nvel de
acesso. Vendo os exemplos acima, os usurios gleydsonm e anonymous tero somente acesso a
leitura do repositrio e macan, otavio, hmh, kov acesso de leitura e gravao.
17.2.6 gssapi
Quando o CVS compilado com o suporte a Kerberos 5, ele tenta estabelecer automaticamente
uma conexo segura usando este mtodo. Este mtodo funciona somente se o CVS estiver
compilado com o suporte a Kerberos (opo --with-gssapi).
Esta seo descreve todos os passos necessrios para colocao de um projeto para ser desen-
volvido atravs do CVS, os comandos do cvs, consideraes a respeito dos comandos e sua
utilizao atravs de exemplos didticos.
17.3.1 Repositrio
var/lib
|
+- cvs
|- CVSROOT
|- projeto1
+- projeto2
Captulo 17. CVS 286
Nas sees seguintes sero explicados cada um dos comandos usados para trabalhar com um
projeto no cvs.
Quando usado o mtodo de acesso pserver (pserver (password server) on page 281),
necessrio fazer para ter acesso ao repositrio. Por exemplo, para acessar o repositrio /var
/lib/cvs no servidor servidor.org.br:
export CVSROOT=:pserver:anonymous@servidor.org.br:/var/lib/cvs
cvs login
ou
Ento ser solicitada a senha para ter acesso ao sistema. Note que toda a seo de cvs ocorre
por comandos interativos que logo aps concludos retornam para o interpretador de coman-
dos. O restante desta seo descrever estes comandos e como utiliza-los de maneira eficiente.
OBS: O uso da varivel CVSROOT torna a utilizao bastante prtica, assim no precisamos
especificar o repositrio, mtodo de acesso, etc. toda vez que usar um comando do cvs.
Embora que no seja necessrio, aps o uso do cvs recomendvel executar o logout do servi-
dor para encerrar sua conexo com a mquina remota.
ou
OBS: Para os paranicos importante encerrar uma seo de CVS, pois ele possui alguns bugs
e um spoofing pode tornar possvel o uso de uma seo deixada aberta.
O comando checkout (ou co) usado para fazer isto. Para utiliz-lo seguindo os exemplos
anteriores:
mkdir /tmp/cvs
cd /tmp/cvs
cvs checkout modulo
cvs -d :pserver:anonymous@servidor.org.br:/var/lib/cvs
Ser criado um subdiretrio chamado modulo que contm todos os arquivos do servidor de
CVS remoto. necessrio apenas que tenha acesso de leitura ao servidor de CVS para executar
este comando. Voc pode usar a opo -z [num] para ativar a compactao na transferncia
dos arquivos, isso acelera bastante a transferncia em conexes lentas: cvs -z 3 checkout
modulo.
Tambm possvel especificar apenas subdiretrios de um mdulo para baixa-lo via CVS e a
estrutura de diretrios criada localmente ser idntica ao do servidor remoto.
Captulo 17. CVS 288
Use o comando cvs import para adicionar um novo projeto ao CVS. As entradas nos ar-
quivos administrativos sero criadas e o projeto estar disponvel para utilizao dos usurios.
A sintaxe bsica do comando import a seguinte:
cvs import [opes] [dir_modulo] [tag] start
Para adicionar o projeto focalinux que reside em /usr/src/focalinux ao cvs:
cd /usr/src/focalinux
cvs import documentos/focalinux tag_modulo start
Por padro o import sempre utiliza a mscara * para fazer a importao dos ar-
quivos do diretrio atual. O projeto focalinux ser acessado atravs de $CVS-
ROOT/documentos/focalinux (cvs checkout documentos/focalinux), ou seja, /var
/lib/cvs/documentos/focalinux no servidor CVS ter a cpia do focalinux.
tag_modulo define o nome que ser usado como identificador nas operaes com os arquivos
do CVS (pode ser usado focalinux em nosso exemplo). O parmetro start diz para criar o
mdulo.
OBS: Por segurana, o diretrio que contm os arquivos dever ser sempre um caminho rel-
ativo na estrutura de diretrios, ou seja, voc precisar entrar no diretrio pai (como /usr
/src/projeto) para executar o cvs import. No permitido usar / ou .., isto probe a
descida em diretrios de nvel mais altos e srios incidentes de segurana em servidores CVS
mal configurados pelo Administrador.
Este comando sincroniza a cpia remota do CVS (ou arquivo) com a cpia local que est trabal-
hando em sua mquina. Quando se trabalha nativamente no CVS em equipe recomendado
a utilizao deste comando pois algum pode ter modificado o arquivo antes de voc, ento
uma incompatibilidade entre sua verso e a nova poderia causar problemas.
Supondo que tenha acabado de modificar o arquivo main.c do mdulo cvsproj, ento antes
de fazer o commit (Enviando as mudanas para o servidor remoto on the facing page) use o
update:
ou
Aps alguns segundos, sua cpia local ficar sincronizada com a cpia remota. Caso ele mostre
alguma mensagem de sada, verifique o arquivo para solucionar qualquer conflito e ento
envie o arquivo para o servidor remoto (Enviando as mudanas para o servidor remoto on
the current page).
Voc pode fazer o update de mais arquivos usando referncias globais (*, ? ou []).
O comando commit (ou ci), envia as mudanas feitas nos arquivos locais para o servidor
remoto. Um exemplo de commit no arquivo main.c:
cvs commit *
O editor padro do sistema ser aberto e pedir uma descrio das modificaes para o com-
mit. Esta descrio ser usada como referncia sobre as atualizaes feitas em cada etapa do de-
senvolvimento. A mensagem tambm pode ser especificada usando a opo -m mensagem,
principalmente quando o texto explicando as alteraes pequeno.
Para mudar o editor de texto padro que ser usado pelo cvs, altere a varivel de ambiente
EDITOR ou especifique o editor que deseja usar na linha de comando com a opo -e editor:
Aps criar/copiar o arquivo para seu diretrio de trabalho, use o comando add para fazer isto.
O arquivo ser enviado ao servidor, bastando apenas executa o commit para salvar o arquivo:
Os dois primeiros comandos agendam o diretrio teste e fazem o commit no diretrio re-
moto. Os dois ltimos, enviam os arquivos existentes dentro deste diretrio para o servidor
remoto.
O comando para fazer isto o remove. Primeiro use o rm para remover o arquivo/diretrio
de sua cpia local, depois execute o remove seguido de commit para confirmar a remoo do
arquivo:
Para remover um diretrio, primeiro remova todos os arquivos existentes dentro dele com o
comando rm e salve para o servidor (seguindo os mtodos descritos em Removendo um ar-
quivo do mdulo CVS remoto on the current page). O CVS no remove diretamente diretrios
vazios, uma maneira de contornar isto usar o update ou commit seguido da opo -P para
ignorar diretrios vazios. Ento a cpia remota do diretrio ser removida do servidor:
rm -f teste/*
cvs remove teste/.
cvs commit teste/.
cd ..
cvs checkout modulo
O comando release faz esta funo. Ele no requerido, mas caso voc tenha feito mod-
ificaes que ainda no foram salvas no servidor de cvs (commit), ele alertar de arquivos
modificados e perguntar se deseja continuar. Registrando tambm o abandono das modi-
ficaes no histrico do cvs. O comando pode ser acompanhado de -d para remover o
mdulo anteriormente baixado com o commit:
Captulo 17. CVS 291
O release retorna os seguintes cdigos quando verifica que as duas cpias (local e remota)
no esto sincronizadas:
U ou P Existe uma verso nova do arquivo no repositrio. Para corrigir isso, execute o co-
mando update.
A O arquivo no foi adicionado ainda ao repositrio remoto. Se apagar o repositrio local,
este arquivo no ser adicionado. Para corrigir isto, executa o comando add do cvs.
R O arquivo foi removido localmente, mas no foi removido do servidor remoto. Use os pro-
cedimentos em Removendo um arquivo do mdulo CVS remoto on the facing page
para corrigir a situao.
M O arquivo est modificado localmente e no foi salvo ainda no servidor. Use os procedi-
mentos em Sincronizando a cpia remota com a cpia local on page 288 e Enviando as
mudanas para o servidor remoto on page 289 para salvar o arquivo.
? O arquivo est em seu diretrio de trabalho mas no tem referncias no repositrio remoto
e tambm no est na lista de arquivos ignorados do CVS.
Com o comando diff possvel visualizar que diferenas o arquivo que est sendo editado
possui em relao ao arquivo do repositrio remoto. Outra funcionalidade til do diff
comparar 2 verses de arquivos do mesmo repositrio CVS. Exemplos:
cvs diff main.c Verifica as diferenas entre o arquivo main.c local e remoto.
cvs diff -u -r 1.1 -r 1.2 main.c Mostra as diferenas em formato unificado para mostrar as
diferenas entre as verses 1.1 e 1.2 do arquivo main.c.
O comando status permite verificar que verses do arquivo especificado est disponvel lo-
calmente, remotamente, qual a verso inicial do arquivo no repositrio, sticky tag. Exemplos:
cvs status main.c Verifica o status do arquivo main.c.
cvs status -v main.c Mostra o status do arquivo main.c, adicionalmente mostra tambm as
tags existentes no arquivo (verso inicial, verso do repositrio).
Alm dos comandos do cvs descritos aqui, existem comandos no pacote cvsutils que aux-
iliam desde quem est aprendendo a utilizar o CVS (com o comando cvsdo para simular
algumas operaes de adio/remoo de arquivos) at profissionais que usam o programa
no dia a dia (cvsu, cvsco, cvschroot).
Captulo 17. CVS 292
Esta seo descreve a funo de cada um dos arquivos administrativos, isto pode ser til na
configurao e personalizao do CVS e de seu repositrio.
Para no alongar muito o captulo, procurei colocar uma breve descrio da funo de cada
um deles, o comentrios e exemplos existentes nos arquivos oferecem uma boa compreenso
do seu contedo.
17.4.1 config
Este arquivo segue os padres do arquivos de configurao e possui alguns parmetros que
controlam o comportamento do CVS. Segue uma lista deles:
SystemAuth Define se ser utilizado a autenticao via /etc/passwd quando o mtodo
pserver for utilizado. Note que se o arquivo passwd for criado no CVSROOT, o SystemAuth
ser definido automaticamente para no. Exemplo: SystemAuth=yes.
LockDir Especifica o diretrio onde sero gravados os arquivos de lock. Caso no seja especi-
ficado, ser usado o diretrio do CVS. Exemplo: LockDir=/var/lock/cvs
TopLevelAdmin Permite criar ou no um diretrio chamado CVS no root do diretrio de tra-
balho durante o cvs checkout.
LogHistory Utiliza opes para especificar o que ser registrado nos arquivos de log do CVS.
TOFEWGCMAR ou all Registra todas as operaes nos logs do cvs.
TMAR Registra todas as operaes que modificam os arquivos ",v"
17.4.2 modules
Especifica opes e programas externos que sero usados durante a execuo de comandos no
repositrio CVS.
17.4.3 cvswrappers
Este arquivo define aes de controle de caractersticas de arquivos, de acordo com seu nome.
Pode ser tambm definidas aes atravs de arquivos .cvswrappers.
17.4.4 commitinfo
Define programas para fazer uma checagem baseada no diretrio e dizer se o commit permi-
tido.
17.4.5 verifymsg
17.4.6 loginfo
Programa que executado aps o commit. Ele pode ser usado para tratar a mensagem de log
e definir onde ela ser gravada/enviada, etc.
17.4.7 cvsignore
Tudo que constar neste arquivo no ser gravado (commit) no cvs. Referncias globais podem
ser usadas para especificar estes arquivos. Veja a info page do cvs para detalhes sober seu
formato.
Pode tambm ser especificado atravs de arquivos .cvsignore.
17.4.8 checkoutlist
Especifica os arquivos que deseja manter sobre o controle do CVS que se encontram em
CVSROOT. Se adicionar um script adicional, ou qualquer outro arquivo no diretrio CVSROOT
ele dever constar neste arquivo.
17.4.9 history
17.5.1 cvs
Este o cliente Unix padro, bastante poderoso e que opera em modo texto. As explicaes
neste captulo do guia assumem este cliente de cvs, ento as explicaes sobre sua utilizao
se encontra em Criando projetos para serem usados no CVS on page 285 e os parmetros de
linha de comando em Opes de linha de comando on page 278
altamente recomendvel a leitura caso deseje utilizar um cliente de cvs grfico, pois os
conceitos so os mesmos.
Captulo 17. CVS 294
Este um cliente CVS em GTK+Python para Linux que interage externamente com o cliente
cvs externo, todas as opes do cvs esto disponveis atravs de checkboxes nas telas de co-
mando, incluindo suporte a compactao, visualizador grfico da rvore de releases, histrico,
diffs, etc.
Sua instalao bastante fcil, instale o programa com apt-get install gcvs e execute
o programa atravs do menu do sistema ou do terminal. Utilize os seguintes procedimentos
para configurar e utilizar o programa:
1 Defina o repositrio CVSROOT atravs do menu Admin/Preferences. Selecione o mtodo
de acesso, entre com o login, servidor e repositrio.
Exemplo: :pserver:anonymous@servidor:/var/lib/cvs
O formato deve ser EXATAMENTE como o usado na varivel CVSROOT no shell, in-
cluindo os :. Caso tenha erros de login, verifique o valor de CVSROOT cuidadosamente
antes de contactar o administrador de sistemas!
2 Agora faa o login no sistema em: Admin, Login. Note que o status de todas as operaes
do cvs so mostradas na janela de status que fica na parte inferior da tela.
3 Crie um diretrio que ser usado para armazenar os fontes baixados do CVS, por exem-
plo: mkdir ~/projetos
4 Acesse o menu Create, Checkout Module para baixar o projeto do CVS para sua mquina
local. Ele ir te pedir o nome de diretrio para onde o cdigo fonte do servidor CVS ser
baixado. Digite ~/projetos ou outro diretrio que foi criado no passo anterior. OBS:
No utilize o nome "cvs" para o diretrio local, pois o gcvs oculta automaticamente
pois os arquivos administrativos de controle ficam neste local.
5 Altere o diretrio padro do gcvs para o diretrio onde baixou o projeto (~
/projetos)clicando no boto set no topo da coluna esquerda do gcvs.
6 Para enviar um arquivo modificado de volta ao servidor, selecione os arquivos, clique
em Modify, Commit Selection, entre com a mensagem descrevendo as alteraes e clique
em OK. Note que os arquivos modificados sero identificados por um cone vermelho
e seu status ser Mod. File (arquivo modificado).
7 Se desejar adicionar um novo projeto no CVS, entre em Create, Import Module, entre no
diretrio que deseja adicionar como um projeto no servidor de CVS. Aps isto ser feita
uma checagem e mostrada uma tela de possveis problemas que podem ocorrer durante
a importao do novo projeto. Na prxima tela, digite o nome do mdulo e caminho no
servidor remoto no primeiro campo, no segundo campo a mensagem de log para adi-
cionar o projeto ao servidor. Em Vendor tag especifique o nome do projeto e sua ver-
so logo abaixo. Clique em OK e aguarde a transferncia dos arquivos para o servidor.
Para maiores detalhes sobre a criao de novos projetos no servidor de CVS, veja Adi-
cionando um novo projeto on page 288. OBS: Voc dever ter permisso de gravao
para criar um novo projeto no servidor CVS.
8 A partir de agora voc poder explorar as funes do programa e fazer uso das funes
habituais do CVS. Todas as funes de operao e opes extras do CVS esto disponveis
na interface grfica, basta se acostumar com sua utilizao.
Aps isto, explore bastante as opes do programa. Todas as funcionalidades do CVS esto
organizadas entre os menus do programa. Caso no entenda bem as funes do programa,
Captulo 17. CVS 295
leia atentamente Criando projetos para serem usados no CVS on page 285 e tambm no
deixe de consultar detalhes na info page do cvs.
Este um cliente CVS em Python para Windows equivalente ao gcvs para Linux. Suas
funcionalidades e recomendaes so idnticas aos do gcvs. Este cliente pode ser baix-
ado de: http://telia.dl.sourceforge.net/sourceforge/cvsgui/WinCvs13b13.
zip e o Python para Windows de http://starship.python.net/crew/mhammond/
downloads/win32all-153.exe.
Para sua utilizao, as explicaes em gcvs - Linux on the preceding page so totalmente
vlidas.
17.5.5 viewcvs
Este um visualizador de repositrios CVS via web, ele precisa apenas de um servidor web
instalado com suporte a CGI. Para instalar, execute o comando apt-get install viewcvs
e siga os passos para configurar programa. Para adequar melhor o viewcvs ao seu sistema,
edite o arquivo /etc/viewcvs/viewcvs.conf.
O viewcvs possui uma interface que se parece com a navegao de um diretrio de ftp, recur-
sos como a extrao de diffs coloridos entre verses de um arquivo selecionado, visualizao
de commits (com data, log do commit, usurio, etc.), classificao da listagem exibida.
OBS:Leve em considerao as implicaes de segurana impostas por aplicativos cgi sendo
executados em seu sistema. Veja Apache on page 171 para entender melhor o assunto.
Nota: este exemplo apenas didtico, no foi feita nenhuma modificao real no contedo do
repositrio do dillo :-)
# Definir o CVSROOT
export CVSROOT=:pserver:gleydson@ima.cipsga.org.br:/var/lib/cvs
# entrar no servidor
gleydson@host:/tmp/teste$ cvs login
Captulo 17. CVS 296
Logging in to :pserver:gleydson@ima.cipsga.org.br:2401/var/lib/cvs
CVS password: <password>
gleydson@oberon:/tmp/teste$
U dillo/dillo/doc/Dw.txt
U dillo/dillo/doc/DwImage.txt
U dillo/dillo/doc/DwPage.txt
...
gleydson@host:/tmp/teste
# Saimos do sistema
cvs logout
Captulo 17. CVS 298
299
Captulo 18
SAMBA
Uma seo foi especialmente separada para os mais paranicos (como eu) conhecerem, combi-
nar e aplicar as restries de forma mais adequada a configurao da mquina.
18.1 Introduo
Na lgica da rede Windows o NetBEUI o protocolo e o NETBIOS define a forma com que
os dados so transportados. No correto dizer que o NetBIOS o protocolo, como muitos
fazem.
Com o SAMBA, possvel construir domnios completos, fazer controle de acesso a nvel de
usurio, compartilhamento, montar um servidor WINS, servidor de domnio, impresso, etc.
Na maioria dos casos o controle de acesso e exibio de diretrios no samba mais minucioso
e personalizvel que no prprio Windows.
O guia Foca GNU/Linux documentar como instalar e ter as mquinas Windows de difer-
entes verses (Win3.11, Win95, Win95OSR/2, Win98, XP, WinNT, W2K) acessando e
comunicando-se entre si em uma rede NetBEUI. Estas explicaes lhe podero ser indispen-
sveis para solucionar problemas, at mesmo se voc for um tcnico especialista em redes
Windows e no tem ainda planos de implementar um servidor SAMBA em sua rede.
Captulo 18. SAMBA 300
18.1.2 Histria
Andrew Tridgell - Desenvolveu o samba porque precisava montar um volume Unix em sua
mquina DOS. Inicialmente ele utilizava o NFS, mas um aplicativo precisava de suporte Net-
BIOS. Andrew ento utilizou um mtodo muito avanado usado por administradores para
detectar problemas: escreveu um sniffer de pacotes que atendesse aos requerimentos para ter
uma nica funo: analisar e auxilia-lo a interpretar todo o trfego NetBIOS da rede.
Ele escreveu o primeiro cdigo que fez o servidor Unix aparecer como um servidor de arquivos
Windows para sua mquina DOS que foi publicado mais ou menos em meados de 1992 quando
tambm comeou a receber patches. Satisfeito com o funcionamento de seu trabalho, deixou
seu trabalho de lado por quase 2 anos. Um dia, ele resolveu testar a mquina Windows de
sua esposa com sua mquina Linux, e ficou maravilhado com o funcionamento do programa
que criou e veio a descobrir que o protocolo era documentado e resolveu levar este trabalho a
fundo melhorando e implementando novas funes.
Sua configurao pode receber ajustes finos pelo administrador nos soquetes TCP de transmis-
so, recepo, cache por compartilhamento, configuraes fsicas que afetam a performance
de rede. Seu cdigo vem sendo melhorado constantemente por hackers, obtendo excelente
performance com hardwares mais obsoletos. O guia tem por objetivo abordar estes temas e
permitir que voc configure seu sistema com uma performance batendo a mesma alcanada
em um servidor NT dedicado.
18.1.3 Contribuindo
Caso encontre um bug no programa, ele poder ser relatado se inscrevendo na lista de
discusso samba-technical-request@lists.samba.org. Aps responder a mensagem de confir-
mao, envie um relato detalhado do problema encontrado no programa.
Captulo 18. SAMBA 301
18.1.4 Caractersticas
Pacote samba
Outros utilitrios importantes para a operao do clientes samba.
smbclient - Ferramenta para navegao e gerenciamento de arquivos, diretrios e im-
pressoras compartilhados por servidores Windows ou samba.
smbfs - Pacote que possui ferramentas para o mapeamento de arquivos e diretrios com-
partilhados por servidores Windows ou samba em um diretrio local.
winbind - Daemon que resolve nomes de usurios e grupo atravs de um servidor
NT/SAMBA e mapeia os UIDs/GIDs deste servidor como usurios locais.
Processador 386 ou superior, 15 MB de espao em disco (no levando em conta os logs gerados
e espao para arquivos de usurios, aplicativos, etc.), 8 MB de memria RAM.
18.1.8 Instalao
Digite apt-get install samba smbclient smbfs para instalar o conjunto de aplica-
tivos samba. O pacote samba o servidor samba e os pacotes smbclient e smbfs fazem parte
dos aplicativos cliente. Caso deseje apenas mapear compartilhamentos remotos na mquina
Linux, instale somente os 2 ltimos pacotes.
O servidor samba pode ser executado tanto via inetd como daemon:
inetd No modo inetd, o servidor de nomes nmbd ser carregado assim que for feita a primeira
requisio de pesquisa e ficar residente na memria. No caso de acesso a um compar-
tilhamento, o smbd ser carregado e ler a configurao em smb.conf a cada acesso do
cliente a um compartilhamento. Quando o samba opera via inetd, ele no usa o controle
Captulo 18. SAMBA 303
Este captulo documenta como configurar o seu servidor SAMBA permitindo o acesso a com-
partilhamento de arquivos e impresso no sistema.
Toda a mquina em uma rede NetBEUI identificada por um nome, este nome deve ser nico
na rede e permite que outras mquinas acessem os recursos disponibilizados ou que sejam
enviadas mensagens para a mquina. Este nome composto de 16 caracteres, sendo 15 que
identificam a mquina e o ltimo o tipo de servio que ela disponibiliza. O tipo de servio as-
sociado com o nome da mquina e registrado em servidores de nomes confirme a configurao
da mquina (voc ver isto mais adiante).
Captulo 18. SAMBA 304
O nome de mquina especificado nas diretivas netbios name e netbios aliases (veja Nomes e
grupos de trabalho on page 307) para detalhes.
redes
gleydson
tecnico
marcelo
henrique
michelle
rh
mrpaoduro
web
web1
web2
web3
comunicacao
comunic1
comunic2
comunic3
18.2.3 Domnio
Domain Controller) dever ter todas as contas de acesso que sero utilizadas pelo usurio para
acessar os recursos existentes em outras mquinas, script de logon que poder ser executado
em cada mquina para fazer ajustes, sincronismo, manuteno ou qualquer outra tarefa pro-
gramada pelo administrador do sistema.
Estas caractersticas para configurao de mquinas em domnio so documentadas passo a
passo em Uma breve introduo a um Domnio de rede on page 325.
18.2.4 Compartilhamento
18.2.5 Mapeamento
Esta funo controlada pelo nmbd que fica ativo o tempo todo disponibilizando os recursos
da mquina na rede, participando de eleies NetBIOS (Nveis de sistema para eleio de rede
on page 314), fazer logon de mquinas no domnio (Uma breve introduo a um Domnio de
rede on page 325), etc.
Captulo 18. SAMBA 306
Toda a configurao relacionada com nomes, grupo de trabalho, tipo de servidor, log, compar-
tilhamento de arquivos e impresso do samba colocada no arquivo de configurao /etc
/samba/smb.conf. Este arquivo dividido em sees e parmetros.
Uma seo no arquivo de configurao do samba (smb.conf) definido por um nome entre
[ ]. As sees tem o objetivo de organizar os parmetros pra que tenham efeito somente
em algumas configuraes de compartilhamento do servidor (exceto os da seo [global]
que no especificam compartilhamentos, mas suas diretivas podem ser vlidas para todas os
compartilhamentos do arquivo de configurao). Alguns nomes de sees foram reservados
para configuraes especficas do samba, eles so os seguintes:
[global] Define configuraes que afetam o servidor samba como um todo, fazendo efeito
em todos os compartilhamentos existentes na mquina. Por exemplo, o grupo de tra-
balho, nome do servidor, pgina de cdigo, restries de acesso por nome, etc. Veja
Seo [global] on the next page.
[homes] Especifica opes de acesso a diretrios homes de usurios. O diretrio home
disponibilizado somente para seu dono, aps se autenticar no sistema. Veja Seo
[homes] on page 312.
[printers] Define opes gerais para controle das impressoras do sistema. Este compar-
tilhamento mapeia os nomes de todas as impressoras encontradas no /etc/printcap.
Configuraes especiais podem ser feitas separadamente. Veja Seo [printers] on
page 313.
[profile] Define um perfil quando o servidor samba usado como PDC de domnio. Veja
Configurando perfis de usurios on page 332.
Qualquer outro nome de [seo] no arquivo smb.conf que no sejam as acima, so tratadas
como um compartilhamento ou impressora.
Um parmetro definido no formato nome = valor. Para um exemplo prtico, veja um exemplo
de arquivo smb.conf em Exemplos de configurao do servidor SAMBA on page 367. Na
configurao de booleanos, a seguinte sintaxe pode ser usada:
0 ou 1
yes ou no
true ou false
Assim, as seguintes configuraes so equivalentes
master browse = 0
Captulo 18. SAMBA 307
master browse = no
master browse = false
Linhas iniciadas por # ou ; so tratadas como comentrio. Quebras de linha pode ser especi-
ficadas com uma \ no final da linha.
Os parmetros especificados nesta seo tem efeito em todo o servidor samba incluindo os
compartilhamentos. Caso o parmetro seja novamente especificado para o compartilhamento,
o valor que valer o do compartilhamento.
Por exemplo, se guest user = nobody for usado na seo [global] e o guest user =
foca for usado no compartilhamento [focalinux], o usurio que far acesso pblico a
todos os compartilhamentos do servidor ser o nobody, exceto para o compartilhamento
[focalinux], que ser feito pelo usurio foca. Veja Compartilhamento de arquivos e di-
retrios on page 316 para obter uma lista e descrio dos principais parmetros de compartil-
hamentos existentes. Uma lista completa pode ser obtida na pgina de manual do smb.conf.
Irei descrever alguns parmetros utilizados nesta seo, organizado de forma didtica e sim-
plificada.
netbios name = [nome do servidor ] Especifica o nome NetBIOS primrio do servidor samba.
Caso no seja ajustado, ele usar o hostname de sua mquina como valor padro. Ex.:
netbios name = focasamba.
workgroup = [grupo de trabalho/domnio ] Diz qual o nome do grupo de trabalho/domnio
que a mquina samba pertencer. Ex.: workgroup = focalinux.
netbios aliases = [nomes alternativos ao sistema ] Permite o uso de nomes alternativos ao
servidor, separados por espaos. Ex.: teste1 teste2.
server string = [identificao ] Identificao enviada do servidor samba para o ambiente de
rede. A string padro Samba %v (%v substituda pela verso do samba, para
maiores detalhes, veja Variveis de substituio on page 315). Ex: server string
= Servidor Samba verso %v.
name resolve order = [ordem ] Define a ordem de pesquisa para a resoluo de nomes no
samba. A ordem padro : lmhosts host wins bcast, que a melhor para res-
oluo rpida e que tente gerar menos trfego broadcast possvel. Veja Resoluo de
nomes de mquinas no samba on page 321 para uma explicao mais detalhada.
Captulo 18. SAMBA 308
Uma das partes essenciais aps colocar o SAMBA em funcionamento, configurar a pgina de
cdigo para que os caracteres sejam gravados e exibidos corretamente no cliente. A primeira
coisa que precisa verificar se seu kernel possui o suporte a pgina de cdigo local. Caso no
tenha, baixe o fonte do kernel e siga os seguintes passos na configurao:
Dentro da opo File Systems, Network File Systems defina como Default Remote
NLS Option a iso8859-1. Esta opo permite ao smbmount montar os volumes locais
usando os caracteres corretos.
Entre na opo File Systems, Native Language Support. Na opo Default NLS
Option coloque iso8859-1. Ative tambm o suporte as pginas de cdigo 437, 850 e
860 e tambm ao conjunto de caracteres iso8859-1 e UTF8.
Note que esta ordem pode variar dependendo da verso do seu kernel, basta que as entenda
para fazer as modificaes apropriadas.
character set = [conjunto_caracteres ] Seleciona o conjunto de caracteres dos arquivos ex-
ibidos pelo servidor samba. Para os idiomas de lngua latina, sempre utilize iso8859-1.
Ex.: character set = iso8859-1.
client code page = [pagina_de_codigo ] Seleciona a pgina de cdigo do servidor samba para
tratar os caracteres. Para os idiomas de lngua latina, sempre utilize 850. Ex.: client
code page = 850.
preserve case = Seleciona se arquivos com nomes extensos criados sero criados com os car-
acteres em maisculas/minsculas definidos pelo cliente (no) ou se ser usado o valor
de default case (caso seja especificado yes).
short preserve case = Seleciona se os arquivos com nomes curtos (formato 8.3) sero criados
com os caracteres mixtos enviados pelo cliente (no) ou se ser usando o valor de default
case (caso seja especificado yes).
default case = [lower/upper ] Define se os arquivos criados tero seus nomes todos em mins-
culas (lower) ou maisculas (upper).
valid chars = [caracteres ] Define caracteres vlidos nos nomes de arquivos: valid chars
=: : : : : : : : : : : :. Este parmetro DEV-
ER ser sempre especificado depois do client code page, pois caso contrrio, eles
sero substitudos por estes.
guest account = [conta] Define a conta local de usurio que ser mapeada quando um
usurio se conectar sem senha (usurio guest). Veja mais detalhes em Descrio de
parmetros usados em compartilhamento on page 317.
invalid users Define uma lista de usurios que no tero acesso aos recursos do servidor
ou compartilhamento. seguro restringir o acesso samba a usurios com grande poder
no sistema (como o root). Veja mais detalhes em Restringindo o acesso por usurios
on page 346.
valid users Semelhante a opo invalid users mas permite que somente os usurios
especificados tenham acesso ao sistema. Veja mais detalhes em Restringindo o acesso
por usurios on page 346.
Captulo 18. SAMBA 309
default service = nome Caso o servio que o usurio deseja se conectar no for encon-
trado no servidor, o SAMBA mapear o servio especificado nesta diretiva como alterna-
tiva. A varivel %S e o caracter _ podem ser interessantes em algumas alternativas
de configurao. A opo default um sinnimo para esta opo. Caso utilize esta
opo, crie o compartilhamento em modo somente leitura e com acesso pblico, caso con-
trrio (dependendo do planejamento de parties e segurana do sistema de arquivos) a
mquina poder ser derrubada sem dificuldades.
username map = [arquivo] Especifica um arquivo que faz o mapeamento entre nomes
fornecidos por clientes e nomes de contas Unix locais. Veja Mapeamento de nomes de
usurios on page 354 para mais detalhes de como configurar este recurso.
obey pam restrictions = yes Indica se as restries do usurio nos mdulos PAM tero efeito
tambm no SAMBA.
Nveis de autenticao
(esta seo contm algumas explicaes que dependem do resto do contedo do guia, caso no
entenda de imediato a fundo as explicaes, recomendo que a leia novamente mais tarde).
Define o nvel de segurana do servidor. Os seguintes valores so vlidos:
share - Usada principalmente quando apenas a senha enviada por compartil-
hamento acessado para o servidor, caso muito tpico em sistemas Lan Manager e
Windows for Workgroups. Mesmo assim o samba tenta mapear para um UID
de usurio local do sistema usando os seguintes mtodos (retirado da pgina de
manual do samba):
1 Se o parmetro guest only usado no compartilhamento junto com o guest
ok, o acesso imediatamente permitido, sem verificar inclusive a senha.
2 Caso um nome de usurio seja enviado junto com a senha, ele utilizado para
mapear o UID e aplicar as permisses deste usurio (como acontece no nvel de
segurana user).
3 Se ele usou um nome para fazer o logon no Windows este nome ser usado
como usurio local do SAMBA. Caso ele seja diferente, voc dever usar o ma-
peamento de nomes para associar o nome remoto do nome local (veja Mapea-
mento de nomes de usurios on page 354)
4 O nome do servio tentado como nome de usurio.
5 O nome da mquina NetBios tentada como nome de usurio
6 Os usurios especificados na opo user do compartilhamentos so utilizados
(veja Descrio de parmetros usados em compartilhamento on page 317).
7 Caso nenhum destes mtodos acima for satisfeito, o acesso NEGADO.
Hoje em dia, o uso do nvel de acesso share raramente usado, porque todos os
sistemas a partir do Windows 95 e acima enviam o nome de usurio ao acessar
um compartilhamento (caindo na segunda checagem do nvel share), sendo equiv-
alente a usar o nvel user. Entretanto, o nvel de segurana share recomendado
para servidores onde TODO o contedo deve ter acesso pblico (seja leitura ou
gravao) e o parmetro guest shares tambm funciona nativamente. As sen-
has criptografadas (encrypt passwords = 1) NO funcionaro no nvel share,
lembre-se deste detalhe.
Captulo 18. SAMBA 310
user - Este o padro. O usurio precisa ter uma conta de usurio no Linux para
acessar seus compartilhamentos. A mesma conta de usurio/senha dever ser us-
ada no Windows para acessar seus recursos ou realizado um mapeamento de nomes
de usurios (veja Mapeamento de nomes de usurios on page 354). Este o padro
do SAMBA. No nvel de acesso user o usurio precisa ser autenticado de qualquer
forma, inclusive se for usado o parmetro guest only ou user. Os seguintes
passos so usados para autorizar uma conexo usando o nvel user (retirado da doc-
umentao do SAMBA):
tentada a validao usando o nome/senha passados pelo cliente. Se tudo
estiver OK, a conexo permitida.
Caso j tenha se autenticado anteriormente para acessar o recurso e forneceu a
senha correta, o acesso permitido.
O nome NetBIOS da mquina do cliente e qualquer nome de usurio que foi
usado novamente tentado junto com a senha para tentar permitir o acesso ao
recurso compartilhado.
Caso o cliente tenha validado o nome/senha com o servidor e o cliente enviou
novamente o token de validao, este nome de usurio usado.
tentada a checagem com o parmetro user no compartilhamento (veja De-
scrio de parmetros usados em compartilhamento on page 317.
verificado se o servio pblico, ento a conexo feita usando o usurio
guest account e ignorando a senha (veja Criando um compartilhamento
para acesso sem senha on page 347).
domain - Neste nvel, o acesso s ser permitido quando a mquina for adicionada
ao domnio com o smbpasswd (Linux on page 364). Neste nvel de acesso, a conta
de usurio ser validada em um servidor PDC (controlador de domnio) e o acesso
aos recursos das mquinas que fazem parte do domnio ser feito a partir do PDC.
Veja Linux on page 364 para detalhes.
server - A mquina samba tentara autenticar o usurio em outro servidor NT (ou
samba). No caso da autenticao falhar, ser usado o nvel de acesso user na base
de usurios local (ser necessrio o arquivo de senhas criptografado do samba para
que a autenticao local funcione, veja Ativando o suporte a senhas criptografadas
on page 334). Este nvel bastante usado quando configuramos um servidor de
perfis de usurios ou logon separado do PDC.
Log de acessos/servios
log file= [arquivo ] Define a localizao e nome do arquivo de log gerado pelo samba. As
variveis de expanso podem ser usadas caso o administrador queira ter um mel-
hor controle dos logs gerados (veja Variveis de substituio on page 315). Ex.:
/var/log/samba/samba-log-%m. OBS: Se possvel coloque uma extenso no ar-
quivo de log gerado pelo SAMBA (como .log). O motivo disto porque se estes logs
forem rotacionados pelo logrotate voc ter problemas de recompactao mltiplas
caso utilize um coringa samba-log-*, gerando arquivos como .gz.gz.gz.., lotando
a tabela de arquivos do diretrio e deixando sua mquina em um loop de compactao.
max log size = [tamanho ] Especifica o tamanho mximo em Kb do arquivo de log gerado
Captulo 18. SAMBA 311
este valor para yes, verifique se existem outros servidores NetBIOS em sua rede que
tem preferncia para se tornar o master principal, pois poder ocorrer um trfego alto de
broadcasting causado pelas eleies solicitadas pelas outras mquinas.
Esta seo tem a funo especial de disponibilizar o diretrio home do usurio. Quando
o usurio envia seu nome de login como compartilhamento feita uma busca no arquivo
smb.conf procurando por um nome de compartilhamento que confira. Caso nenhum seja
encontrado, feita uma busca por um nome de usurio correspondente no arquivo /etc
/passwd, se um nome conferir e a senha enviada tambm, o diretrio de usurio disponi-
bilizado como um compartilhamento com o mesmo nome do usurio local. O diretrio home
do usurio poder ser modificado com o uso de mapeamento de nomes, veja Mapeamento de
nomes de usurios on page 354. Quando o caminho do compartilhamento no for especifi-
cado, o SAMBA utilizar o diretrio home do usurio (no /etc/passwd).
Para maior segurana da instalao, principalmente porque o diretrio home do usurio no
um requerimento para a autenticao de usurio, recomendo usar a varivel de substituio
%S apontando para um diretrio com as permisses apropriadas configuradas em seu sistema,
por exemplo:
[homes]
comment = Diretrios de Usurios
path=/pub/usuarios/%S
Voc apenas ter o trabalho extra de criar os diretrios de usurios que faro acesso ao sistema.
Isto no ser nenhum problema aps voc programar um shell script simples que verifique os
nomes de contas em /etc/passwd e crie os diretrios com as permisses/grupos adequados
(isso no ser abordado por este captulo do guia, embora no seja complicado). Se deseja,
existem exemplos em Exemplos de configurao do servidor SAMBA on page 367 sobre a
seo [homes] no arquivo de configurao.
Os parmetros aceitos em [homes] aqui so os mesmos usados para compartilhamentos normais
(veja Descrio de parmetros usados em compartilhamento on page 317). Abaixo segue mais
um exemplo de seo [homes]:
[homes]
comment = Diretrio home de usurios
writable = yes
Captulo 18. SAMBA 313
public = no
invalid users = root nobody @adm
follow symlinks = no
create mode = 0640
directory mode = 0750
Esta seo tem a funo de disponibilizar as impressoras existentes no sistema (lp, lp1, lp2,
etc) existentes no /etc/printcap como compartilhamento de sistemas Windows. O mtodo
que os nomes de impressoras so pesquisados idntico a forma feita para a seo [homes]:
Primeiro o nome do compartilhamento pesquisado como um nome de servio, depois se ele
um nome de usurio (tentando mapear o servio disponibilizado em [homes]), depois ser
verificado a seo [printers].
Ao invs de usar este recurso, se preferir voc poder compartilhar as impressoras individual-
mente. Para detalhes, veja Configurando o Linux como um servidor de impresso Windows
on page 343.
OBS: importante lembrar que a seo [printers] DEVE ser definida como printable us-
ando o parmetro printable = yes para funcionar. O utilitrio testparm poder ser usado para
verificar problemas no arquivo cd configurao do SAMBA (veja Buscando problemas na con-
figurao on this page).
A sada acima indica que est tudo OK com todas as configuraes que foram realizadas
no servidor. possvel especificar um outro arquivo de configurao do SAMBA usando
testparm /etc/samba/smb2.conf.
Tambm permitido simular o nome NetBIOS que far acesso a mquina usando o parmetro
-L nome (que ser substitudo na varivel %L).
Para selecionar qual sistema NetBIOS ser o local master browse ou domain master browse,
usado um mtodo bastante interessante: o de eleies.
Quando uma nova mquina entra na rede NetBIOS, ela solicita quem o Local Master Browser,
caso nenhuma responda, ela fora uma eleio na rede atravs de uma requisio Broadcast-
ing especial. Vence a eleio quem tiver o ***maior nmero***, chamado de OS Level (nvel
de sistema operacional). Caso duas mquinas empatem, o desempate feito usando outros
critrios.
Se voc for a nica mquina de um workgroup, automaticamente voc ser o Local Master
Browser. De meia em meia hora uma nova eleio feita, forando mais trfego broadcasting
na rede. Durante este novo processo de eleio, a lista de computadores atualizada; as novas
mquinas so adicionadas e as desligadas saem da lista aps 36 minutos. Este o motivo
porque as mquinas Windows continuam aparecendo no ambiente de rede por algum tempo
mesmo depois que desligadas ou porque elas no aparecem de imediato.
O OS Level um nmero que caracterstico de cada sistema operacional ficando entre 0 (mais
baixo) e 255. Os nveis de acessos dos sistemas operacionais so os seguintes:
SAMBA 32
O valor padro do OS Level do SAMBA 32, entretanto ele bastante flexvel para permitir
sua mudana atravs do parmetro os level (veja Navegao no servidor/tipo de servidor
on page 311), isto garante que o SAMBA sempre vena as eleies da rede sobre qualquer outro
sistema operacional.
No caso de um servidor que estiver configurado para ser o navegador de rede, assim que for
iniciado ele solicitar uma eleio de rede. As regras so as mesmas, vence o que tiver o *maior*
nmero. Este nmero pode ser configurado facilmente no SAMBA para que ele sempre vena
as eleies de rede, tomando conta da lista de mquinas. Isto especialmente interessante por
causa da estabilidade do servidor Linux, quando migramos de servidor NT ou para fornecer
mais servios de navegao, como servidor WINS.
OBS: Nunca deixe um servidor NT configurado para ser o Local Browser ou Domain Master
Browser competir com o SAMBA. Mesmo que o SAMBA ganhe, o NT um pssimo perdedor
e convoca uma nova eleio para tentar novamente se eleger, gerando um *extremo* trfego
broadcasting em redes grandes.
Esta seo foi baseada nos dados da pgina de manual do samba, com adies que no estavam
presentes na verso original e exemplos. Existem variveis especiais que podem ser usadas no
arquivo de configurao do samba e so substitudas por parmetros especiais no momento
da conexo do usurio. Um exemplo de utilizao de variveis de substituio seria mudar a
localizao do diretrio home do usurio:
[homes]
comment = Diretrio home do usurio
path = /home/usuarios/%u
%u O nome de usurio do servio atual, se aplicvel. Esta varivel bastante til para pro-
gramao de scripts e tambm para criar arquivos de log personalizados, etc.
Captulo 18. SAMBA 316
%U O nome de usurio da seo (o nome de usurio solicitado pelo cliente, no uma regra
que ele ser sempre o mesmo que ele recebeu).
%v A verso do Samba.
%m O nome NetBIOS da mquina do cliente. Isto muito til para log de conexes personal-
izados e outras coisas teis.
%L O nome NetBIOS do servidor. Como o servidor pode usar mais de um nome no samba
(aliases), voc poder saber com qual nome o seu servidor est sendo acessado e pos-
sivelmente torna-lo o nome primrio de sua mquina.
%N O nome do seu servidor de diretrios home NIS. Este parmetro obtido de uma
entrada no seu arquivo auto.map. Se no tiver compilado o SAMBA com a opo
--with-automount ento este valor ser o mesmo de %L.
%R O nvel de protocolo selecionado aps a negociao. O valor retornado pode ser CORE,
COREPLUS, LANMAN1, LANMAN2 ou NT1.
em servios do SAMBA, mas nada impede que tambm sejam colocado na seo [global] do
arquivo de configurao, principalmente quando isto vlido para diversos servios compar-
tilhados (veja Seo [global] on page 307).
Abaixo o guia traz algumas das opes que podem ser usadas para controlar o comportamento
do compartilhamento de arquivos por servios no servidor SAMBA:
path Indica o diretrio que ser compartilhado. Lembre-se que o usurio ter as permisses
de acesso que ele teria caso estivesse logado no sistema como um usurio UNIX normal,
exceto se estiver fazendo mapeamento para outros nomes de usurios (veja Mapeamento
de nomes de usurios on page 354). Ex: path=/pub - Compartilha o diretrio local
/pub. OBS: Quando no definido um path, o diretrio /tmp usado como padro.
comment Descrio do compartilhamento que ser mostrada na janela de procura de rede
ou no smbclient -L maquina. Ex: comment=Pasta de contedo pblico do
sistema.
browseable Define se o compartilhamento ser ou no exibido na janela de procura de rede.
Mesmo no sendo exibido, o compartilhamento poder ser acessado. Veja Criando
um compartilhamento invisvel on page 351 para uma explicao mais detalhada. Ex:
browseable=yes - Lista o compartilhamento na janela de pesquisa de servidores.
guest account Conta que ser usada para fazer acesso sem senha (convidado) quando o
parmetro guest ok ou public forem usados em um compartilhamento. Por padro
ela mapeada para o usurio nobody. importante especificar uma nome de usurio
guest (convidado), principalmente porque seu UID ser usado para fazer vrias oper-
aes no SAMBA, como exibir os recursos disponveis na mquina para a rede. Por mo-
tivos claros, recomendvel que este usurio no tenha acesso login ao sistema. Caso
no tenha a inteno de ocultar o SAMBA na lista de mquinas da rede (fazendo apenas
acesso direto aos recursos), especifique um valor para esta opo. Ex: guest account
= sambausr - Mapeia os usurio se conectando sem senha para o usurio sambausr,
desde que o acesso guest seja permitido pela opo public.
public Permitem aos usurios usurios se conectarem ao compartilhamento sem fornecer uma
senha usando o usurio guest. O UID que o usurio guest ser mapeado especificado
pelo parmetro guest account). Veja Criando um compartilhamento para acesso sem
senha on page 347. O parmetro guest ok equivalente a public. Ex: public = no
- No permite
guest only Permite somente conexes guest ao recurso. O UID do usurio mapeado para
guest, mesmo que fornea uma senha correta. O valor padro no. Ex: guest only =
no.
write list Lista de usurios separados por espao ou vrgula que podero ler e gravar no com-
partilhamento. Caso o nome for iniciado por @, o nome especificado ser tratado
como um grupo UNIX (/etc/group) e todos os usurios daquele grupo tero acesso
de gravao. O uso deste parmetro ignora o read only = yes. Veja Excesso de
acesso na permisso padro de compartilhamento on page 350 para mais detalhes.
Ex: write list = gleydson, @usuarios - Permite acesso gravao somente do
usurio gleydson e todos os usurios pertencentes ao grupo @usuarios. OBS: - O
Captulo 18. SAMBA 318
A configurao grupo de trabalho o mtodo mais simples para compartilhar recursos em uma
rede e tambm indicado quando se possui uma rede pequena (at 30 mquinas) pois o geren-
ciamento no to complicado. Acima deste nmero, recomendada a utilizao da configu-
rao de domnio para definio de polticas de acesso mais precisas pelo administrador e para
manter o controle sobre os recursos da rede (veja Configurando um servidor PDC no SAMBA
on page 327).
A configurao do nvel de acesso por grupo de trabalho tem como caractersticas principais
essa simplicidade na configurao e o controle de acesso aos recursos sendo feito pela mquina
Captulo 18. SAMBA 320
[global]
netbios name = servidor
workgroup = focalinux
security = user
obey pam restrictions = yes
encrypt passwords = no
os level = 30
guest account = nobody
server string = servidor da rede
local master = true
domain master = false
[homes]
comment = Diretrios de usurios
create mask= 0700
directory mask = 0700
browseable = no
[tmp]
path = /tmp
comment = Diretrio temporrio do sistema
read only = yes
valid users = gleydson
public = no
Digite a senha de usurio quando solicitado. O comando dever listar os recuros da mquina,
indicando que a configurao est funcionando corretamente. Se voc paranico e est
preocupado com a segurana da mquina, recomendo ler a Controle de acesso ao servidor
SAMBA on page 343.
O Samba pode utiliza os seguintes mtodos para resoluo de nomes de mquinas na rede
(Nome de mquina (nome NetBios) on page 303). Eles esto listados em ordem de prioridade
do mais para o menos recomendvel:
lmhosts - Pesquisa primeiro o arquivo /etc/samba/lmhosts (veja Arquivo /etc
/samba/lmhosts on the current page para detalhes sobre este arquivo).
host - Faz a pesquisa no arquivo /etc/hosts e no DNS em busca do nome da mquina.
wins - Pesquisa no servidor WINS especificado pelo parmetro wins server do smb.conf
(veja WINS on page 323).
bcast - Envia um pacote para o endereo de broadcast de sua configurao de rede. Este
geralmente deve ser o ltimo mtodo por gerar trfego excessivo em uma rede com um
considervel nmero de computadores.
A ordem que a resoluo de nomes feita pelo samba, pode ser modificada usando o
parmetro name resolve order = [ordem] no arquivo de configurao do samba (ex. name
resolve order = lmhosts host wins bcast).
Este arquivo um banco de dados que mapeia o endereo IP com o nome NetBIOS de uma
mquina, semelhante ao formato do /etc/hosts. Este arquivo til quando temos servi-
dores que so acessados com freqncia, quando servidores de rede esto em segmentos sep-
arados e no temos um servidor WINS entre os dois pontos para resoluo de nomes, para
definir mquinas WINS que sero acessados pela internet, etc. Para ter certeza da localiza-
o do arquivo lmhosts em sua mquina, digite smbclient -d 3 -L localhost e veja
o diretrio de pesquisa deste arquivo. Veja um exemplo de arquivo lmhosts em Exemplo de
lmhosts do UNIX on the next page.
O uso do arquivo lmhosts evita o excesso de broadcasting na rede, pois a ordem padro
usada para a resoluo de nomes do samba, procura primeiro resolver o nome procurando em
arquivos lmhosts, depois usando dns, wins e broadcast. Dependendo do projeto de sua rede e
como as mquinas resolvem os nomes, ele pode ser uma camada a mais de segurana contra
um simples hijacking de servidor atravs de NetBEUI ou WINS (isso evitado com o uso de
domnios, veja Configurando um servidor PDC no SAMBA on page 327).
OBS: Note que em clientes Windows que estejam em outra subrede, necessrio o arquivo
\windows\lmhosts apontando para um servidor PDC mesmo que ele esteja apontando para
o servidor WINS, caso contrrio, a mquina no efetuar o logon.
Captulo 18. SAMBA 322
O exemplo abaixo mapeia o endereo IP das mquinas (primeira coluna) com o respectivo
nome de mquina (segunda coluna):
172.16.0.34 servarq
172.16.0.30 serverdom
192.168.5.2 servwins
172.16.0.3 servpdc
172.16.0.1 gateway
O arquivo possui uma sintaxe idntica a do lmhosts do UNIX, mas alguns parmetros es-
peciais so especificados para ajudar o Windows resolver algumas coisas que no consegue
fazer sozinho (principalmente com relao a identificao de funo de mquinas em redes
segmentadas):
192.168.0.5 servarq
192.168.0.1 serverpdc #PRE #DOM:dominio
192.168.0.2 "serverwins \0x1e" #PRE
#INCLUDE \\serverpdc\lmhosts
cdigo hexadecimal que identifica o servio de rede (veja nmblookup on page 360 para ver a
lista de servios e sua respectiva funo).
OBS: Caso crie este arquivo em um editor de textos do Linux, no se esquea de converter o
arquivo para que contenha o CR+LF no final das linhas.
18.5.2 WINS
Este um servio de resoluo de nomes que funciona de forma semelhante ao DNS, s que
voltado para o NetBIOS. Quando uma mquina cliente NetBIOS entra na rede, o servidor
WINS pega seu nome e IP e inclui em uma tabela para futura consulta pelos clientes da rede.
Esta tabela consultada toda vez que um cliente NetBIOS solicita um nome de mquina, com-
ponentes do grupo de trabalho ou domnio na rede. Uma outra aplicao importante de um
servidor WINS permitir a resoluo de nomes em pontos de redes que requerem roteamento,
a simplicidade de um protocolo no rotevel como o NetBIOS fica limitada a simplicidade
das instalaes de rede. Um servidor WINS pode ser instalado em cada ponta da rede e eles
trocarem dados entre si e atualizar suas tabelas de nomes/grupos de trabalhos/IPs.
A resoluo de nomes de mquinas ser feita consultando diretamente a mquina WINS ao
invs de broadcasting (que geram um trfego alto na rede).
Para ativar o servidor WINS no samba, inclua as seguinte linha na seo [global] do seu
arquivo /etc/samba/smb.conf:
[global]
wins support = yes
wins proxy = no
dns proxy = no
max wins ttl = 518400
O parmetro wins proxy pode ser necessrio para alguns clientes antigos que tenham prob-
lemas no envio de suas requisies WINS. O dns proxy permite que o servidor WINS faa a
pesquisa no DNS para localizao de nomes de mquinas caso no exista no cache. Ambas as
opes wins support, wins proxy e dns proxy tem como valor padro no. Pronto, seu
servidor samba agora suporta WINS. Fcil, prtico e rpido :-)
Se estiver configurando uma subrede com masquerade para acesso a um PDC ou um servidor
WINS, voc ter que mexer no gateway central para apontar uma rota para o gateway mas-
querade. O motivo disto porque o masquerade do Linux atua somente nos cabealhos, mas o
IP da estao enviada e processada pelo PDC para retornar uma resposta. Da mesma forma,
este IP registrado no servidor WINS para uso das estaes de trabalho. Isto s vai ser re-
solvido quando for escrito um mdulo de conntrack para conexes SAMBA (at o lanamento
do kernel 2.4.22, isso ainda no ocorreu).
Captulo 18. SAMBA 324
Para os clientes da rede (Linux, Windows, OS/2, etc.) fazer uso das vantagens da res-
oluo de nomes usando o WINS, necessrio configurar para que eles o utilizem para resolver
os nomes de mquinas. Isto feito da seguinte forma em cada um dos sistemas operacionais:
Linux Adicione a linha wins server = ip_do_servidor_WINS na seo global do ar-
quivo /etc/samba/smb.conf:
[global]
wins server = 192.168.1.1
Aps isto, reinicie o servidor samba. Caso esteja executando o servidor via inetd, digite:
killall -HUP nmbd. Se estiver rodando atravs de daemons: /etc/init.d/samba
restart. No necessrio reiniciar o computador!
Windows 9x Clique com o boto direito sobre o cone Ambiente de Rede e selecione pro-
priedades. Na janela de configurao de rede clique na aba Configurao. Na lista que
aparece selecione o protocolo TCP/IP equivalente a sua placa de rede local e clique em
Propriedades. Na tela de Propriedades TCP/IP clique em Configuraes WINS e marque a
opo Ativar resoluo WINS. Digite o endereo do servidor WINS e clique em Adicionar.
OBS: Se utilizar um servidor DHCP em sua rede local e o endereo do servidor WINS
tambm oferecido atravs dele, voc poder marcar a opo Usar DHCP para resoluo
WINS. Note que esta opo somente estar disponvel se escolher a opo Obter um en-
dereo IP automaticamente na tab Endereos IP. Clique em OK at fechar todas as telas e
reinicie quando o computador perguntar :-)
O samba pode atuar como um servidor de data/hora ajustando o horrio de suas estaes de
trabalho com o servidor da rede.
As estaes clientes podero executar o comando net para sincronizar seu relgio durante a
inicializao do Windows, ou durante o logon da rede atravs do script de logon, caso tenha
configurado o servidor samba para logon em domnios NT.
Para configurar o samba para atuar como servidor de data/hora de sua rede, adicione o
seguinte parmetro na seo global do arquivo de configurao /etc/samba/smb.conf:
[global]
time server = yes
Captulo 18. SAMBA 325
Para sincronizar a data/hora das estaes de trabalho usando o servidor samba, veja Sin-
cronizando a data/hora no Cliente on this page. Caso o seu servidor SAMBA tambm seja o
servidor de autenticao PDC da rede, a melhor forma de se fazer isto colocar o comando
net time \\servidor_SAMBA /set /yes em um script que ser executado pela estao.
OBS recomendvel instalar um cliente ntp para manter o relgio do servidor sempre atual-
izado, conseqentemente mantendo a data/hora das estaes tambm em sincronismo . .
Um local interessante para colocao deste comando na pasta Iniciar da estao Windows,
pois todos os comandos que estejam nesta pasta so executados quando o sistema iniciado.
Exemplos:
net time \\linux /set /yes - Sincroniza a hora com o servidor \\linux e no
pede confirmao (/yes).
net time \\linux /WORKGROUP:pinguim /set /yes - Sincroniza a hora com o
servidor \\linux do grupo de trabalho pinguim (/WORKGROUP:pinguim) e no
pede confirmao (/yes).
Esta seo descreve todos os passos necessrios para configurar um servidor de domnio PDC
(Primary Domain Control) com perfis mveis e outros recursos que tornam teis e seguras a
administrao de uma rede NetBEUI.
Um domnio de rede consiste em uma mquina central chamada de PDC, que mantm o cont-
role de todas as contas de usurios/grupos e permisses para acesso a rede NetBEUI. O acesso
desta forma centralizado, como vantagem disto voc pode usar o nvel de acesso por usurios
nas mquinas, definindo quais usurios ou grupos tero acesso de leitura/gravao.
permitido criar scripts de logon, assim comandos programados pelo administrador sero
executados nas mquinas clientes durante o logon no domnio (veja Criando Scripts de logon
on page 330).
O nome da mquina protegido contra hijacking atravs de contas de mquinas que fazem
parte do domnio (veja Contas de mquinas de domnio on page 328). Isto s possvel em
clientes Linux, Windows NT, Windows 2000 e Windows XP.
Captulo 18. SAMBA 326
Voc poder usar perfis mveis, copiando todas as personalizaes do seu desktop para qual-
quer mquina na rede que voc faa o logon. Para o administrador, ele poder definir polti-
cas com o Poledit e outros programas que sero salvas junto com o perfil do usurio, val-
endo para qualquer mquina que ele se autentique na rede (veja Criando Scripts de logon on
page 330).
Se voc deseja iniciar logo a configurao do seu domnio, siga at Configurando um servidor
PDC no SAMBA on the facing page.
a mquina que ganhou a eleio no segmento local de rede (veja Nveis de sistema para
eleio de rede on page 314). Logo que declarada o local master browser, ela comea a rece-
ber via broadcasting a lista de recursos compartilhados por cada mquina para montar a lista
principal que ser retornada para outras mquinas do grupo de trabalho ou outras subredes
que solicite os recursos compartilhados por aquele grupo.
Uma nova eleio feita a cada 36 minutos ou quando a mquina escolhida desligada.
Quando o local master browse eleito no segmento de rede, uma consulta feita ao servidor
WINS para saber quem o Domain Master Browse da rede para enviar a lista de compartil-
hamentos. A mquina escolhida como Local Master Browse envia pacotes para a porta UDP
138 do Domain Master e este responde pedindo a lista de todos os nomes de mquinas que o
local master conhece, e tambm o registra como local master para aquele segmento de rede.
Caso tenha configurado sua mquina para ser o domain master browser da rede (tambm
chamado de controlador principal de domnio ou PDC), ela tentar se tornar a mquina que ter
a lista completa de recursos enviados pelos locais master browsers de cada segmento de rede.
Um PDC tambm o local master browse de seu prprio segmento de rede.
possvel ter mais de um domain master browse, desde que cada um controle seu prprio
domnio, mas no possvel ter 2 domain master browsers em um mesmo domnio. Caso
utilize um servidor WINS em sua rede, o PDC far consultas constantes em sua base de dados
para obter a lista de domnios registrados. O domnio identificado pelo caracter 1b na rede
(veja nmblookup on page 360).
OBS: O Windows NT configurado como PDC sempre tenta se tornar o domain master browser
em seu grupo de trabalho. No sendo possvel retirar o Windows NT configurado como PDC
do domnio (por alguma outra razo), a nica forma ser deixar ele ser o domain master
browser. Se este for o caso, voc poder continuar lendo este documento para aprender mais
sobre NetBIOS e talvez ainda mudar de idia sobre manter o NT na rede aps ver as caracters-
ticas do SAMBA ;-)
Captulo 18. SAMBA 327
Esta a parte interessante do guia, a prtica. Para os administradores que conhecem atravs
da experincia prpria os problemas e definies do SAMBA, grande parte do guia foi apenas
uma reviso (por favor, se faltou algo que acha interessante, me notifiquem que incluirei na
prxima verso e colocarei uma nota no lanamento e na pgina com os devidos crditos :-))
Para configurar uma mquina para ser o PDC (Controladora Principal de Domnio ou Primary
Domain Control), siga esta seqncia:
Habilite o suporte a senhas criptografadas. Caso ainda no tenha feito isso, leia a seo
Ativando o suporte a senhas criptografadas on page 334.
Na seo [global], insira/modifique os seguintes parmetros:
; Identificao da mquina e domnio
netbios name = gleydson
workgroup = focalinux
; senhas criptografadas
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd.db
Onde os parmetros significam:
netbios name = gleydson - Nome do computador. Este tambm ser o nome
usado pelas outras mquinas clientes quando for configurar o PDC (controlador de
domnio).
workgroup = focalinux - Nome do domnio que est criando. Todas as
mquinas que pertencerem a este domnio, tero o nvel de acesso definido pelo
PDC. Note que o parmetro workgroup tambm usado ao especificar o nome do
grupo de trabalho quando se usado a configurao grupo de trabalho (Configurao
em Grupo de Trabalho on page 319).
security = user - Requerido para controle de acesso por domnio, j que uti-
lizado o controle de acesso local usando usurios e grupos locais.
domain master = yes - Especifica se est mquina est sendo configurada para
ser o PDC da rede. OBS: Por favor, certifique-se que no existe outro PDC
no domnio. Veja Domain Master Browser on the preceding page. prefered
master = yes - Fora uma eleio com algumas vantagens para seu servidor ser
eleito sempre como o controlador de domnio. Isto garante que a mquina SAMBA
sempre seja o PDC. Veja Navegao no servidor/tipo de servidor on page 311.
local master = yes - Define se a mquina ser o controlador principal do
grupo de trabalho local que ela pertence.
Pronto, agora teste se existem erros em sua configurao executando o comando testparm
(Buscando problemas na configurao on page 313) e corrija-os se existir. Resta agora reiniciar
Captulo 18. SAMBA 328
o servidor nmbd para que todas as suas alteraes tenham efeito. Para adicionar seus clientes a
um domnio, veja Contas de mquinas de domnio on this page e Configurando clientes em
Domnio on page 361.
Uma conta de mquina de domnio garante que nenhum outro computador possa utilizar o
mesmo nome de uma mquina confivel e assim utilizar os compartilhamentos que ela tem
permisso. Os clientes Windows NT, Windows XP e Windows 2000 precisam de uma conta
de mquina para ter acesso ao domnio e seus recursos. A criao de uma conta de mquina
bastante semelhante a criao da conta de um usurio normal no domnio.
Existe uma coisa que precisa sempre ter em mente quando estiver configurando uma conta de
mquina de domnio: Quando voc cria uma conta para a mquina, ela entra e altera sua senha
no prximo logon usando um segredo entre ela e o PDC, este segredo a identifica sempre
como dona daquele nome NetBIOS, ou seja, at o primeiro logon no NT, outra mquina com
o mesmo nome NetBIOS poder ser a dona do netbios naquele domnio caso faa o logon no
domnio. A nica forma de se evitar isto logar imediatamente no domnio NT assim que criar
as contas de mquinas.
Existem duas formas para criao de contas de mquinas: manual e automtica.
Para criar uma conta de domnio para a mquina master, siga estes 2 passos:
1 Crie uma conta de mquina no arquivo /etc/passwd:
useradd -g domainmac -c "Maquina de Dominio" -s /bin/false -d /dev/null
O comando acima cria uma conta para a mquina master$ e torna ela parte do grupo
domainmac. necessrio especificar o caracter $ aps o nome da mquina para criar
uma conta de mquina no domnio, caso contrrio o prximo passo ir falhar. Acredito
que nas prximas verses do SAMBA seja desnecessrio o uso do arquivo /etc/passwd
para a criao de contas de mquina.
2 Crie uma conta de mquina no arquivo /etc/samba/smbpasswd:
smbpasswd -m -a master
Isto cria uma conta de mquina para o computador master no arquivo /etc/samba
/smbpasswd. Note que a criao de uma conta de mquina muito semelhante a cri-
ao de um usurio apenas precisa adicionar a opo -m. Quando for criar uma conta
com o smbpasswd No necessrio especificar $ no final do nome da mquina. O mais
importante: Entre IMEDIATAMENTE no domnio aps criar a conta de mquina us-
ando a conta de administrador de domnio criada no SAMBA (veja Criando uma conta
de administrador de domnio on the facing page)! como a mquina ainda no se auten-
ticou pela primeira vez, qualquer mquina que tenha o mesmo nome e entre no domnio,
poder alocar o nome recm criado. A nica forma de resolver este problema, apagando
a conta de mquina e criando-a novamente no domnio. Siga os passos de acordo com
o sistema operacional em Configurando clientes em Domnio on page 361 para colocar
seus clientes em domnio.
Captulo 18. SAMBA 329
Atravs deste mtodo, as mquinas clientes tero sua conta criada automaticamente assim que
seja feita a entrada no domnio usando a conta do administrador de domnio no SAMBA. Este
o mtodo recomendvel de colocao de mquinas no domnio por ser mais prtica ao invs
do mtodo manual. Note que normalmente isto funciona para o WinXP e Win2000 mas no
funciona em redes com o NT4, devendo ser criadas contas de mquinas usando o mtodo
manual.
Para fazer a configurao automtica, coloque a seguinte linha no arquivo smb.conf na seo
[global]:
Assim, a conta de mquina ser automaticamente criada quando o administrador fizer sua con-
figurao no domnio (veja Criando uma conta de administrador de domnio on this page).
No SAMBA 3.0, a opo add machine script dever ser usada no lugar de add user
script para adicionar uma mquina no domnio.
A conta de administrador do domnio a conta que tem permisses para realizar operaes
de manuteno e administrao de mquinas que compem o domnio de rede. Com ela
possvel, entre outras coisas, adicionar e remover mquina que compem o domnio. Para es-
pecificar que contas de usurios do arquivo /etc/samba/smbpasswd que tero poderes ad-
ministrativos, utilize a opo domain admin group ou admin users na seo [global]
do arquivo /etc/samba/smb.conf.
O parmetro admin users permite que todas as operaes realizadas pelo usurio sejam
feitas com poderes de usurio root. Isto necessrio porque o arquivo smbpasswd (usado
para ajustar as contas de mquinas) normalmente tem permisses de leitura/gravao so-
mente para root. O domain admin group permite que usurios especficos ou usurios do grupo
especificado sejam parte do grupo de administradores do domnio para adicionar mquinas,
etc. Por exemplo, para tornar o usurio gleydson com privilgios para adicionar/remover
mquinas no domnio:
Captulo 18. SAMBA 330
[global]
...
admin users = gleydson
ou
domain admin group = @admins gleydson
Uma dos recursos mais teis em um domnio a possibilidade de se executar comandos nas
mquinas cliente quando fazem o logon no domnio. Desta forma, possvel instalar pro-
gramas, executar anti-vrus, mapear compartilhamentos automaticamente no clientes, etc. A
programao de scripts de logon feita usando a linguagem em lote do DOS, com possibili-
dades de usar variveis de ambiente, cpia de arquivos entre servidores, etc. O guia no ir
abordar a programao em linguagem de lote, mas isto simples de se encontrar na internet e
mesmo a documentao que acompanha o prprio Windows til.
Para habilitar o recurso de scripts de logon na mquina, adicione os seguintes parmetros no
arquivo smb.conf:
[global]
domain logons = yes
logon script = logon.cmd
[netlogon]
path = /pub/samba/netlogon
read only = yes
write list = ntadmin
Segue a descrio de cada parmetro com detalhes importantes para a configurao e fun-
cionamento do recurso de logon:
Captulo 18. SAMBA 331
domain logons - Deve ser definido para yes para ativar o recurso de logon scripts do
SAMBA.
logon drive a unidade de disco que ter o homedir do usurio mapeado. Isto so-
mente usado por mquinas NT/2000/XP.
logon script - Define qual o script que ser executado na mquina cliente quando
fizer o logon. Ele deve ser gravado no diretrio especificado pela opo path do com-
partilhamento [netlogon] (/pub/samba/netlogon no exemplo). Os scripts de lo-
gon podem ser tanto em formato .bat ou .cmd. Se for programar um script universal,
recomendvel o uso do formato .bat por ser compatvel tanto com Win9X e WinNT.
Um detalhe que deve ser lembrado durante a programao do script de logon que ele DEVE
seguir o formato DOS, ou seja, ter os caracteres CR+LF como finalizador de linhas. Para utilizar
editores do UNIX para escrever este script, ser necessrio executar o programa flip (flip
-m -b arquivo) ou unix2dos no arquivo para converte-lo em formato compatvel com o
DOS.
Segue abaixo um exemplo de script de logon que detecta quando o cliente Windows 95/NT,
ajusta a hora com o servidor e mapeia 2 unidades de disco:
@echo off
cls
rem Logon Script desenvolvido por Gleydson Mazioli
rem da Silva como modelo para o guia Foca GNU/Linux
rem
rem Este script pode ser utilizado para fins didticos
rem e distribudo livremente de acordo com os termos
rem da GPL
rem
echo "Aguarde enquanto sua mquina efetua"
echo "o logon na rede do domnio focalinux."
rem
if %OS%==Windows_NT goto NT-2000
rem
echo "--------------------------------"
echo "SO: %OS%"
echo "Usurio: %USERNAME%"
echo "Grupo de Trabalho: %LANGROUP%"
echo "Servidor: %DOMINIO%"
echo "--------------------------------"
echo "Recuperando compartilhamentos"
rem mapeia o compartilhamento publico definido no servidor
net use e: \\gleydson\publico
echo "Sincronizando data/hora"
rem sincroniza a data/hora com o servidor
Captulo 18. SAMBA 332
Note no exemplo acima que no podem haver linhas em branco, voc dever utilizar a palavra
rem (comentrio em arquivos em lote) em seu lugar. Note que existem diferenas entre o
comando net do Windows 9x/ME e do NT, as variveis tambm possuem um significado
diferente entre estes 2 sistemas, isto explica a necessidade de se incluir um bloco separado
detectando a existncia de qual sistema est sendo efetuado o logon.
A lista completa de variveis disponveis para cada sistema operacional pode ser obtida
colocando-se set >c:\vars.txt que gravar uma lista de variveis disponveis durante
o logon no arquivo c:\vars.txt da mquina cliente.
OBS: Caso especifique um computador que contm o script de login, lembre-se de faze-lo
sempre com \ ao invs de / para no ter incompatibilidade com o Windows 95/3.11.
ATENO: Lembre-se que copiar e colar pode no funcionar para este script. Leia novamente
esta seo do guia se estiver em dvidas.
Os profiles permitem que os clientes utilizem o mesmo perfil em qualquer mquina que ele
se autentique na rede. Isto feito aps a autenticao copiando os arquivos que contm os
dados de personalizao de usurios (user.dat, NTuser.dat) para a mquina local. Este
processo tambm inclui a cpia de papis de parede, links da rea de trabalho, cache do IE,
etc. Para configurar o recurso de perfis mveis no domnio, necessrio adicionar os seguintes
parmetros no seu arquivo smb.conf:
[global]
Captulo 18. SAMBA 333
security = user
encrypt passwords = yes
domain logons = yes
logon drive = H:
logon path = \\%N\profilesNT\%u
logon home = \\%N\profiles\%u
preserve case = yes
short preserve case = yes
case sensitive = no
[profiles]
path = /pub/profiles
read only = no
create mask = 0600
directory mask = 0700
[profilesNT]
path = /pub/profilesNT
read only = no
create mask = 0600
directory mask = 0700
Um usurio do Windows NT (ou verses baseadas neste) pode modificar as permisses dos
arquivos/diretrios que tem acesso atravs da caixa de dilogo de listas de acesso do NT,
lembrando que estas permisses nunca substituiro as definidas pelo administrador local.
A opo nt acl support dever estar definida para yes na seo [global] do arquivo de
configurao, caso contrrio voc no ter acesso para mudar as permisses atravs de caixas
de dilogo do NT. \
O uso de senhas criptografadas um requisito quando voc deseja configurar o SAMBA para
ser um servidor PDC ou um cliente de um domnio. Quando utiliza senhas criptografadas, elas
trafegam em formato seguro atravs da rede, dificultando a captura por outras pessoas. Em
verses mais recentes do Windows (a partir da OSR/2 e NT 4 service pack3) o suporte a senhas
criptografadas vem habilitado como padro para login e utilizao de servios da rede. No
recomendvel desativar o uso de senhas criptografadas, mas se mesmo assim for necessrio
veja Senhas criptografadas ou em texto puro? on page 353.
Quando usamos senhas criptografadas, elas so armazenadas no arquivo /etc/samba
/smbpasswd ao invs do /etc/passwd, isto permite que possamos controlar as permisses
de usurios separadamente das do sistema e diferenciar os logins do domnio dos logins do
sistema (usurios que possuem shell). Caso tenha um servidor que j possua muitas contas
de usurios acessando em texto plano, recomendo ler Migrando de senhas texto plano para
criptografadas on page 336 para facilitar o processo de migrao de contas.
O utilitrio smbpasswd o programa utilizado para gerenciar este arquivo de senhas e tam-
bm o status de contas de usurios/mquinas do domnio. Siga estes passos para ativar o uso
de senhas criptografadas no SAMBA:
1 Edite o arquivo /etc/samba/smb.conf e altere as seguintes linhas na seo [global]
para adicionar o suporte a senhas criptografadas:
[global]
encrypt passwords = true
smb passwd file =/etc/samba/smbpasswd
A linha encrypt passwords = true diz para usar senhas criptografadas e
que o arquivo /etc/samba/smbpasswd contm as senhas (smb passwd file
=/etc/samba/smbpasswd). Caso sua mquina seja apenas um cliente de rede (e no
Captulo 18. SAMBA 335
um PDC), voc pode pular para o passo onde o SAMBA reiniciado (no final dessa lista),
no necessria a criao do arquivo de senhas para autenticao pois os usurios sero
validados no servidor.
2 Execute o comando mksmbpasswd </etc/passwd >/etc/samba/smbpasswd. Ele
pega toda a base de usurios do /etc/passwd e gera um arquivo /etc/samba
/smbpasswd contendo as contas destes usurios. Por padro, todas as contas so DE-
SATIVADAS por segurana quando este novo arquivo criado. O novo arquivo ter o
seguinte formato:
gleydson:1020:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXX
geovani:1004:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXX
Os campos so separados por : e cada campo possui o seguinte significado:
1 O primeiro o nome de usurio
2 UID do usurio no sistema UNIX que a conta ser mapeada.
3 Senha Lan Manager codificada em hex 32 criado usando criptografia DES usada
pelo Windows 95/98/ME.
4 Senha hash criada em formato do NT codificada em hex 32. Esta senha criada
pegando a senha do usurio, convertendo-a para maisculas, adicionados 5 bytes
de caracteres nulos e aplicando o algoritmo md4.
5 Opes da conta criada no smbpasswd:
U - Especifica que a conta uma conta de usurio normal (veja Adicionando
usurios no smbpasswd on the following page)
D - Significa que a conta foi desativada com a opo -d (veja Desabilitando uma
conta no smbpasswd on page 337).
W - Especifica que a conta uma conta de mquina criada com a opo -m (veja
Contas de mquinas de domnio on page 328).
N - A conta no possui senha (veja Definindo acesso sem senha para o usurio
on page 338).
Os caracteres XXXXXXXXXXXXXXX no campo da senha, indica que a conta foi recm
criada, e portanto est desativada. O prximo passo ativar a conta para ser usada pelo
SAMBA. ATENO: O mtodo de criptografia usado neste arquivo no totalmente
seguro. Recomendo manter o arquivo de senhas smbpasswd em um diretrio com a
permisso de leitura somente pelo root.
3 Para ativar a conta do usurio gleydson, usamos o comando:
smbpasswd -U gleydson
Digite a senha do usurio e repita para confirmar. Assim que a senha for definida, a conta
do usurio ativada. Voc tambm pode especificar a opo -s para entrar com a senha
pela entrada padro (muito til em scripts). Apenas tenha cuidado para que esta senha
no seja divulgada em seus arquivos/processos.
4 Reinicie o processo do SAMBA (veja Iniciando o servidor/reiniciando/recarregando a
configurao on page 302).
5 Verifique se o suporte a senhas criptografadas est funcionando com o comando:
smbclient -L localhost -U gleydson
Substitua localhost pelo IP do servidor e gleydson pelo usurio. Caso obtenha a
mensagem session setup failed: NT_STATUS_LOGON_FAILURE significa que
a senha informada est incorreta.
Captulo 18. SAMBA 336
Como administrador, pode ser necessrio que precise desativar temporariamente uma conta
de usurio por alguma situao qualquer (m utilizao de recursos, dvida se a conta est
sendo usada, para que ele ligue reclamando de autenticao para ter aquela desejada conversa
(hehe), etc.). Remover uma conta e novamente adiciona-la ento no uma situao muito
prtica. Utilize ento o seguinte comando para desativar uma conta de usurio:
smbpasswd -d usuario
Uma conta desativada com o uso do comando smbpasswd -d pode ser novamente ativada
usando:
smbpasswd -e usuario
O utilitrio smbpasswd pode ser usado tanto para alterar a senha de usurios locais do SAMBA
ou de uma conta em um servidor remoto (seja SAMBA, NT, W2K). Para alterar a senha de um
usurio local, digite:
smbpasswd -U usuario
Lhe ser pedida a antiga senha, a nova senha e a confirmao. Caso seja o usurio root,
somente a nova senha e a confirmao. Isto mecanismo de proteo para usurios que esque-
cem a senha ;-)
Para alterar a senha de um usurio remoto, utilize:
Note que apenas foi adicionada a opo -r servidor comparado com a opo anterior. A
diferena que a senha antiga do usurio sempre ser solicitada para troca (pois o root das 2
mquinas pode no ser o mesmo).
Captulo 18. SAMBA 338
smbpasswd -n usuario
Esta forma de autenticao enviada por implementaes NetBIOS antigas, como a encontrada
no Lan Manager, Windows for Workgroups e Windows 95 OSR1. As verses mais no-
vas destas implementaes enviam a senha em formato criptografado, sendo necessrio tam-
bm usar o formato criptografado no SAMBA para que possa se autenticar (veja Ativando o
suporte a senhas criptografadas on page 334).
Em Senhas criptografadas ou em texto puro? on page 353 feita uma comparao entre
o uso de autenticao usando senhas em texto plano e senhas criptografadas. Em geral, o
administrador prefere a utilizao da autenticao usando texto plano quando deseja usar o
/etc/passwd para autenticao e est usando grupos de trabalho necessrio usar senhas
criptografadas para autenticao).
Para configurar o SAMBA para utilizar senhas em texto, modifique o parmetro encrypt
passwords para no:
[global]
encrypt passwords = no
Esta seo descreve como configurar clientes para acessar o servidor SAMBA usando autenti-
cao em texto plano. Atualmente o guia cobre os seguintes clientes:
Lan Manager on the next page
Windows for Workgroups on the facing page
Windows 95 / Windows 95A on the next page
Windows 95B on the facing page
Windows 98/98SE on the next page
Captulo 18. SAMBA 339
Lan Manager
Cliente NetBIOS para DOS. Ele trabalha somente com senhas em texto plano.
Este o padro de autenticao do Windows for Workgroups caso no tenha feito nen-
huma alterao especfica (mas desconheo algo que faa-o trabalhar com senhas crip-
tografadas).
O Windows 95 at a release A, utiliza texto plano como padro para autenticao (veja qual
a release clicando com o boto direito em Meu Computador e Propriedades.
Windows 95B
REGEDIT4
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]
"EnablePlainTextPassword"=dword:00000001
Windows 98/98SE
Windows ME
Windows NT Server/WorkStation
REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Rdr\Parameters]
"EnablePlainTextPassword"=dword:00000001
Windows 2000
REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkStation\Parame
"EnablePlainTextPassword"=dword:00000001
Linux
O mapeamento de usurios do servidor remoto com a mquina local usado quando voc
deseja controlar o acesso aos arquivos/diretrios a nvel de usurio. No Windows isto per-
mite que cada arquivo/diretrio tenha o acesso leitura/gravao somente para os usurios
definidos e autenticados no controlador de domnio. No Linux as permisses de arquivos e
diretrios podem ser definidas para o usurio do PDC, garantindo o mesmo nvel de controle
de acesso.
Esta seo explica como configurar o mapeamento de UID/GID entre o servidor PDC SAMBA
e seus clientes NetBIOS Windows e Linux.
Para o Windows utilizar os usurios remotos do servidor para fazer seu controle de acesso por
nvel de usurio, siga os seguintes passos:
Windows 9X Entre no Painel de Controle/Propriedades de Rede e clique na tab Controle de Acesso.
Marque a opo Controle de acesso a nvel de usurio e coloque o nome da mquina PDC na
caixa de dilogo de onde os usurios/grupos sero obtidos. Voc tambm pode colocar
o nome do grupo de trabalho, neste caso a mquina far uma busca pelo PDC ou outra
mquina de onde pode obter os nomes de usurios/grupos. OBS: Para fazer isto, voc
dever estar autenticado no domnio.
A associao de UIDs de usurios de um domnio com usurios locais no Linux feita pelo
programa winbind. Ele utiliza o mecanismo nsswitch para obter outras fontes de dados de
usurios e os associa nas ferramentas de gerenciamento de contas existentes no sistema. Siga
estes passos para fazer sua instalao e configurao do Winbind em um servidor Linux:
Instale o programa winbind: apt-get install winbind.
Modifique o arquivo smb.conf adicionando as seguintes linhas na seo [global]:
winbind separator = +
winbind cache time = 30
winbind uid = 10000-15000
winbind gid = 10000-12000
winbind enum users = yes
winbind enum groups = yes
template homedir = /home/winbind/%D/%U
template shell = /bin/false
Onde
winbind separator Separador usado para separar o nome dos grupos do nome de
domnio. Este parmetro somente tem sentido quando usado em conjunto com um
PDC Windows ou quando os mdulos pam_winbind.so e nss_winbind.so es-
to sendo utilizados.
Captulo 18. SAMBA 342
getent group
Caso isto no acontea, revise suas configuraes e veja os logs procurando por erros
quando o winbind tenta obter a lista de usurios/grupos do domnio.
Agora voc deve ser capaz de criar diretrios/arquivos locais usando os nomes de
usurios/grupos do domnio. Lembre-se de reiniciar sempre o winbind quando reiniciar o
SAMBA por alguma modificao for feita (ao mesmo que saiba que no afeta o winbind), as-
sim como entrar novamente no domnio, caso contrrio o mapeamento deixar de funcionar.
OBS: Atualmente, o winbind no oferece suporte a restries por data/hora de logon para
estaes de trabalho. Isto dever ser implementado em uma futura verso
Este captulo documenta como configurar o seu servidor samba para permitir o acesso a com-
partilhamento de arquivos e impresso no sistema.
Ser necessrio ter o pacote samba instalado e adicionar as seguintes linhas no seu arquivo
/etc/samba/smb.conf:
[hp-printer]
path = /tmp
printer name=HP DeskJet 690C
printable = yes
print command = lpr -r -h -P %p %s
valid users = winuser winuser2
create mode = 0700
Esta restrio pode ser feita pelos parmetros allow hosts e deny hosts tanto em servios indi-
viduais ou em todo o servidor. Os parmetros hosts allow e hosts deny so equivalentes a estes
acima. O allow hosts permite o acesso a mquina especificadas como argumento. So permiti-
dos os seguintes mtodos para permitir o acesso a uma mquina/rede:
192.168.1.1 - IP da mquina
servidor - Nome da mquina
192.168.1.0/255.255.255.0 - IP com mscara de rede
192.168.1.0/24 - IP com mscara de rede octal
192.168.1. - Poro de rede sem o host (como no hosts.allow e hosts.deny.
@nome - Pesquisa por mquinas no grupo NIS.
permitido usar mais de um endereo IP separando-os por vrgulas ou espaos. A palavra
chave EXCEPT pode ser usada para fazer excesso de um ou mais endereos IPs, por exemplo:
Que permite o acesso a toda as mquinas da faixa de rede 192.168.1.0/24 exceto para a
192.168.1.20.
O deny hosts possui a mesma sintaxe do allow hosts mas bloqueia o acesso das mquinas es-
pecificadas como argumento. Quando o allow hosts e deny hosts so usados juntos, as mquinas
em allow hosts tero prioridade (processa primeiro as diretivas em allow hosts e depois em deny
hosts).
OBS: O endereo de loopback (127.0.0.1) nunca bloqueado pelas diretivas de acesso.
Provavelmente deve ter notado porque o endereo de loopback no pode ser bloqueado e
as conseqncias disto para o SAMBA.
Se voc est executando o SAMBA via inetd, os arquivos hosts.allow e hosts.deny so
verificados antes do controle e acesso allow hosts e deny hosts para controle de acesso ao smbd.
Caso estiver usando o SAMBA viainetd e deseja restringir o acesso usando TCP Wrappers, veja
O mecanismo de controle de acessos tcpd on page 56.
OBS: Lembre-se de usar o testparm para verificar a sintaxe do arquivo smb.conf sempre
que desconfiar de problemas (veja Buscando problemas na configurao on page 313).
Captulo 18. SAMBA 345
Um mtodo interessante e til para testar se a nossa configurao vai bloquear o acesso a
servios usando o testparm da seguinte forma:
Voc precisar dizer para o testparm qual o arquivo de configurao que est usando e
o endereo IP/nome de host que far a simulao de acesso. Este mtodo no falsifica o
endereo IP para testes, apenas usa os valores em allow hosts e deny hosts para checagem. Por
exemplo, para verificar o acesso vindo do IP 192.168.1.50:
Esta restrio de acesso permite que faamos o SAMBA responder requisies somente para a
interfaces indicadas. O mtodo de segurana descrito em Restringindo o acesso por IP/rede
on the preceding page sero analisadas logo aps esta checagem.
Para restringir o servio SAMBA a interfaces, primeiro ser necessrio ativar o parmetro bind
interfaces only usando 1, yes ou true (o padro desativado). Depois, definir que
interfaces sero servidas pelo samba com o parmetro interfaces. Os seguintes formatos de
interfaces so permitidos:
eth0, sl0, plip0, etc - Um nome de interface local. permitido o uso de * para
fazer o SAMBA monitorar todas as interfaces que iniciam com aquele nome (por exem-
plo, eth*).
192.168.1.1, 192.168.1.2, etc - Um endereo IP de interface local.
192.168.1.2/24, 192.168.1.2/255.255.255.0 - Um par de endereo/mscara
de rede.
Mais de uma interface pode ser usada separando-as com vrgula ou espaos. A escolha do
uso de nome da interface ou do IP feita de acordo com a configurao da mquina. Em
uma mquina DHCP por exemplo, recomendado o uso do nome da interface. Quando bind
interfaces only estiver ativado, o padro esperar conexes em todas as interfaces que permitem
broadcast exceto a loopback.
Captulo 18. SAMBA 346
Exemplo:
Permite que voc controle quem poder ou no acessar o compartilhamento da mquina. Este
controle feito pelos parmetros valid users e invalid users.
O invalid users lista de usurio que NO tero acesso ao compartilhamento. Se o nome for
iniciado por + o parmetro ser tratado como um nome de grupo UNIX (/etc/group). O
caracter & faz ele pesquisar o nome de grupo no banco de dados NIS. O caracter @ permite
fazer a busca do grupo primeiro no banco de dados NIS e caso ele no seja encontrado, no
arquivo de grupos do sistema (/etc/group).
possvel usar a combinao de caracteres +& e &+ para alternar a ordem de busca enter
o /etc/group e o NIS.
Exemplos:
invalid users = junior, marcio, +badusers No permite que os usurios especificados e os
usurios do grupo +badusers tenham acesso ao compartilhamento.
invalid users = &;semacesso Bloqueia o acesso de todos os usurios NIS que pertenam ao
grupo semacesso.
invalid users = bruno, henrique, +@users, Bloqueia o acesso dos usurios bruno, henrique
e de todos os usurios que pertenam ao grupo users. A pesquisa de grupo feita
primeiro no /etc/group e em seguida no NIS.
invalid users = @semacesso Bloqueia o acesso dos usurios que pertencem ao grupo
semacesso. A pesquisa feita primeiro no NIS e depois no /etc/group (equivalente
ao uso de &+).
O valid users possui a mesma sintaxe de funcionamento do invalid users, mas permite
somente o acesso para os usurios/grupos listados. Caso a opo valid users no seja
especificada ou a lista esteja vazia, o acesso permitido. Se um mesmo nome de usurio
estiver na lista valid users e invalid users, o padro ser mais restritivo, negando o
acesso.
A segurana deste mtodo de acesso depende muito da forma de autenticao dos nomes antes
de passar o controle para o SAMBA, pois uma autenticao fraca pe em risco a segurana da
sua mquina.
Captulo 18. SAMBA 347
Este parmetro permite que mquinas tenham acesso sem senha a um servidor. Isto pode se
tornar um *ENORME* buraco na segurana do seu sistema, pois mesmo usando uma senha
invlida, a mquina poder ter acesso a todos os recursos do compartilhamento e no com-
plicado fazer um ataque usando DNS spoofing.
Se realmente deseja fazer isto, tenha em mente os dados que podero ser acessados daquela
mquina, se realmente no existe nenhuma outra forma de disponibilizar o acesso de forma
que mantenha o controle de restries (usando todos os outros mtodos), restrinja o acesso
usando MAC Address com o iptables ou o arp (veja Restries por MAC Address/IP on
page 388). O padro no usar nenhum arquivo hosts.equiv.
O parmetro null passwords usado na seo [global] permitindo que contas de usurios
sem senha tenham acesso permitido ao servidor. ISTO TOTALMENTE INSEGURO e deve
ser sempre evitado. Caso voc tenha feito uma bela restrio em sua mquina e deseja que o
seu shell script de cpia de arquivos funcione usando este mtodo, voc est jogando toda a
segurana do seu sistema por ralo abaixo.
No existe motivo para usar senhas em branco em um controle de acesso por usurio, a no
ser que precise testar algo realmente temporrio e que depurando algo no SAMBA.
[global]
guest account = nobody
Captulo 18. SAMBA 348
..
..
[download]
path = /downloads
comment = Espao pblico para abrigar downloads de Usurios
guest ok = yes (aqui poder ser tambm "public = yes").
writable = yes
follow symlinks = false
Esta proteo til quando no desejamos que pessoas alterem o contedo de um compartil-
hamento. Isto pode ser feito de duas formas: negando o acesso de gravao para todo o com-
partilhamento ou permitindo leitura somente para algumas pessoas. O parmetro usado para
fazer a restrio de acesso somente leitura o read only = yes ou seu antnimo writable
= no. Abaixo seguem os dois exemplos comentados:
[teste]
comment = Acesso a leitura para todos
path = /tmp
read only = yes
public = yes
No exemplo acima, o diretrio /tmp (path = /tmp) foi compartilhado com o nome teste
([teste]), de forma pblica (acesso sem senha - public = yes), e todos podem apenas ler seu
contedo read only = yes).
[teste]
comment = Acesso a gravao para todos com excesses
Captulo 18. SAMBA 349
path = /tmp
read only = no
read list = @users, gleydson
invalid users = root
Neste, o mesmo compartilhamento teste ([teste]) foi definido como acesso leitura/gravao
para todos (read only = no), mas os usurios do grupo @users e o usurio gleydson tero sempre
acesso leitura (read list = @users, gleydson). Adicionalmente foi colocada uma proteo para que
o superusurio no tenha acesso a ele (invalid users = root). Esta forma de restrio explicada
melhor em Excesso de acesso na permisso padro de compartilhamento on the following
page).
[teste]
comment = Acesso de gravao para todos.
path = /tmp
writable = yes
public = yes
No exemplo acima, o diretrio /tmp (path = /tmp) foi compartilhado com o nome teste
([teste]), de forma pblica (acesso sem senha - public = yes) e todos podem ler/gravar dentro
dele (writable = yes).
[teste]
comment = Acesso a leitura para todos com excesses
path = /tmp
writable = no
write list = @users, gleydson
Neste, o mesmo compartilhamento teste ([teste]) foi definido como acesso de leitura para
todos (writable = no), mas os usurios do grupo @users e o usurio gleydson sero os nicos
que tero tambm acesso a gravao (write list = @users, gleydson). Esta forma de restrio
explicada melhor em Excesso de acesso na permisso padro de compartilhamento on the
next page).
Captulo 18. SAMBA 350
[temporario]
comment = Diretrio temporrio
path = /tmp
writable = yes
read list = gleydson, root
browseable = no
available = yes
[temporario]
comment = Diretrio temporrio
path = /tmp
writable = no
write list = gleydson, @operadores
browseable = yes
seguro restringir os servios IPC$ e ADMIN$ para acesso somente pelas faixas de rede de
confiana. Isto pode ser feito atravs da mesma forma que a restrio em outros compartil-
hamentos. Os efeitos desta restrio sero que somente as redes autorizadas possam obter a
lista de mquinas, se autenticar no domnio e realizar tarefas administrativas gerais:
Captulo 18. SAMBA 351
[IPC$]
read only = yes
allow from 192.168.1.0/24
[ADMIN$]
read only = yes
allow from 192.168.1.0/24
O exemplo acima permite que os servios IPC$ e ADMIN$ sejam acessados de qualquer
mquina na faixa de rede 192.168.1.0/24. Para forar a autenticao para acesso a estes
servios:
[IPC$]
invalid users = nobody
valid users = gleydson michelle
read only = yes
allow from 192.168.1.0/24
[ADMIN$]
invalid users = nobody
valid users = gleydson michelle
read only = yes
allow from 192.168.1.0/24
[teste]
path = /tmp
comment = Diretrio temporrio
read only = yes
browseable = no
Captulo 18. SAMBA 352
Neste exemplo, o diretrio /tmp (path = /tmp) foi compartilhado atravs de teste ([teste]) com
acesso somente leitura (read only = yes) e ele no ser mostrado na listagem de compartilhamen-
tos do ambiente de rede do Windows (browseable = no).
Note que o compartilhamento continua disponvel, porm ele poder ser acessado da estao
Windows, especificando a \\maquina\compartilhamento. Para acessar o compartilhamento
do exemplo acima:
Este recurso oferece uma infinidade de solues que podem resolver desde problemas de prati-
cidade at segurana usando as opes preexec e postexec. Por exemplo, imagine que es-
teja compartilhando 4 unidades de CD-Rom de um servidor na rede, e deseje que estes CDs
estejam sempre disponveis mesmo que algum operador engraadinho tenha ejetado as gave-
tas de propsito, podemos fazer a seguinte configurao:
[cdrom]
path = /cdrom
comment = Unidade de CD-ROM 1
read only = yes
preexec = /bin/mount /cdrom
preexec close = yes
postexec = /bin/umount /cdrom
Na configurao acima, o CD-ROM ser compartilhado como cdrom ([cdrom]), somente leitura
(red only = yes), quando o usurio acessar o compartilhamento ele fechar a gaveta do CD
(preexec = /bin/mount /cdrom) e desmontar o drive de CD assim que o compartilhamento for
fechado (postexec = /bin/umount /cdrom). Adicionalmente, caso o comando mount da opo
preexec tenha retornado um valor diferente de 0, a conexo do compartilhamento fechada
(preexec close = yes).
A UID do processo do preexec e postexec ser o mesmo do usurio que est acessando o
compartilhamento, por este motivo ele dever ter permisses para montar/desmontar o CD-
ROM no sistema. Caso precise executar comandos como usurio root, utilize a variante root
preexec e root postexec. Apenas tenha conscincia que os programas sendo executados
so seguros o bastante para no comprometer o seu sistema.
Captulo 18. SAMBA 353
Usando a mesma tcnica, possvel que o sistema lhe envie e-mails alertando sobre acesso
a compartilhamentos que em conjunto com um debug level 2 e logs configurados indepen-
dentes por mquina, voc possa ver o que a mquina tentou acessar (e foi negado) e o que ela
conseguiu acesso.
Como bom administrador, voc poder criar scripts que faam uma checagem de segurana
no compartilhamento e encerre automaticamente a conexo caso seja necessrio, montar um
honney pot para trojans, etc.
Como deve estar notando, as possibilidades do SAMBA se extendem alm do simples compar-
tilhamento de arquivos, se integrando com o potencial dos recursos do sistema UNIX.
Este parmetro permite que voc acesso um compartilhamento sem fornecer uma senha, ou
seja, que o usurio no esteja autenticado. NO utilize o parmetro public = yes (ou um de
seus sinnimos) no compartilhamento [homes], pois abrir brechas para que possa acessar o
diretrio home de qualquer usurio e com acesso a gravao (que o padro adotado pelos
administradores para permitir o acesso ao seu diretrio home remoto).
Recomendo utilizar o parmetro public = yes somente em compartilhamentos onde real-
mente necessrio, como o [netlogon] ou outras reas de acesso pblico onde as permisses do
sistema de arquivos local estejam devidamente restritas. Outra medida no utilizar a opo
follow symlinks, que poder lhe causar problemas com usurios mal intencionados que
tenham acesso shell.
OBS: Tenha em mente todas as consideraes de segurana abordadas neste captulo, bem
como as permisses de acesso ao sistema Unix e como elas funcionam. A disponibilidade de
arquivos em uma rede simples, simples tambm pode ser o acesso indevido a eles caso no
saiba o que est fazendo.
Como regra geral, prefira sempre utilizar senhas criptografadas. Aqui alguns motivos:
A senha enviada de uma forma que dificulta sua captura por pessoas maliciosas.
O NT no permite que voc navegue no ambiente de rede em um sistema SAMBA com
nvel de acesso por usurio autenticando usando senhas em texto plano.
Ser solicitada sempre a senha para reconexo em cada compartilhamento da mquina.
Todas as verses de Windows NT 4 a partir SP3 e Windows 95 OSR/2 utilizam senhas
criptografadas como padro. possvel faze-lo utilizar senhas em texto plano modifi-
cando chaves no registro das mquinas clientes (veja Ativando o suporte a senhas em
texto plano on page 338 para detalhes).
As vantagens da utilizao da autenticao usando texto plano:
A senha utilizada ser a mesma do /etc/passwd (servindo para ftp, login, etc)
O servidor PDC pode ser usado para logon desde que os clientes estejam usando senhas
em texto plano.
Captulo 18. SAMBA 354
Este recurso faz a mapeamento (traduo) de nomes de usurios usados no momento do acesso
para contas de acesso locais, bastante til quando o nome de usurio enviado pela mquina
no confere com NENHUMA conta local do sistema (um exemplo quando o login do usurio
no Windows diferente de seu Login no Linux). Outro vantagem de seu uso permitir que
uma categoria de usurios utilizem um mesmo nvel de acesso no sistema.
Seu formato o seguinte: username map = arquivo.
As seguintes regras so usadas para construir o arquivo de mapeamento de nomes:
Um arquivo de mltiplas linhas onde o sinal de = separa os dois parmetros princi-
pais. O arquivo processado linha por linha da forma tradicional, a diferena o que
o processamento do arquivo continua mesmo que uma condio confira. Para que o
processamento do resto do arquivo seja interrompido quando um mapeamento confira,
coloque o sinal na frente do nome local.
O parmetro da esquerda a conta Unix local que ser usada para fazer acesso ao com-
partilhamento. Somente uma conta Unix poder ser utilizada.
O parmetro da direita do sinal de = pode conter um ou mais nomes de usurios sep-
arados por espaos que sero mapeados para a conta Unix local. O parmetro @grupo
permite que usurios pertencentes ao grupo Unix local sejam mapeados para a conta de
usurio do lado esquerdo. Outro caracter especial o * e indica que qualquer usurio
ser mapeado.
Voc pode utilizar comentrios na mesma forma que no arquivo de configurao smb.conf.
Alguns exemplos:
# Mapeia qualquer nome de usurio que pertena ao grupo smb-users para o usur
# samba.
samba = @smb-users
Captulo 18. SAMBA 355
Esta seo trar algumas formas de otimizao do servidor SAMBA que fazem diferena
quando os valores adequados so utilizados: A primeira a ativao de um cache de
gravao/leitura de arquivos. Este cache feito pela opo write cache size e funciona
fazendo o cache dos arquivos que sero lidos/gravados. Ele esvaziado assim que o arquivo
for fechado ou quando estiver cheio. O valor especificado nesta opo em bytes e o padro
0 para no causar impacto em sistemas com pouca memria (ou centenas de compartil-
hamentos). Exemplo:
[publico]
path = /pub
comment = Diretrio de acesso pblico
read only = yes
public = yes
write cache size = 384000
Compartilha o diretrio /pub (path = /pub) como compartilhamento de nome publico ([pub-
lico]), seu acesso ser feito como somente leitura (read only = yes) e o tamanho do cache de
leitura/gravao reservado de 384Kb (write cache size = 384000).
Deixar a opo para seguir links simblicos ativada (follow symlinks) garante mais per-
formance de acesso a arquivos no compartilhamento. A desativao da opo wide links
em conjunto com o uso de cache nas chamadas getwd (getwd cache) permite aumentar a
segurana e tem um impacto perceptvel na performance dos dados.
A desativao da opo global nt smb support tambm melhora a performance de acesso dos
compartilhamentos. Esta uma opo til para detectar problemas de negociao de protocolo
e por padro, ela ativada.
Caso utiliza um valor de depurao de log muito alto (debug level), o sistema ficar mais lento
pois o servidor sincroniza o arquivo aps cada operao. Em uso excessivo do servidor de
arquivos, isso apresenta uma degradao perceptvel de performance.
A opo prediction permite que o SAMBA faa uma leitura adiante no arquivo abertos
como somente-leitura enquanto aguarda por prximos comandos. Esta opo associada com
bons valores de write cache size pode fazer alguma diferena. Note que o valor de leitura nunca
ultrapassa o valor de read size.
Captulo 18. SAMBA 356
A opo read size permite obter um sincronismo fino entre a leitura e gravao do disco com o
envio/recebimento de dados da rede. O valor dependente da instalao local, levando em
considerao a velocidade de disco rgido, rede, etc. O valor padro 16384.
Em casos onde um NFS montado ou at mesmo leitura em discos locais compartilhada, o
parmetro strict locking definido para yes pode fazer alguma diferena de performance. Note
que nem todos os sistemas ganham performance com o uso desta opo e no deve ser usada
em aplicativos que no requisitam o estado do lock de arquivo ao servidor.
Caso voc possua aplicativos que fazem o lock corretamente de arquivos, voc poder usar
o share modes = no, isto significa que futuras aberturas de arquivo podem ser feitas em em
modo leitura/gravao. Caso utiliza um aplicativo muito bem programado que implementa
de forma eficiente de lock, voc poder desativar esta opo.
O uso de oplocks yes em compartilhamentos aumenta a performance de acesso a arquivos em
at 30%, pois utiliza um cdigo de cache no cliente. Tenha certeza do que est fazendo antes
de sair usando oplocks em tudo que lugar. A desativao de kernel oplocks necessria para
que isto funcione.
A opo read raw e write raw devem ter seus valores experimentados para ver se faz diferena
na performance da sua rede, pois diretamente dependente do tipo de cliente que sua rede
possui. Alguns clientes podem ficar mais lentos em modo de leitura raw.
O tipo de sistema de arquivos adotado na mquina e suas opes de montagem tem um im-
pacto direto na performance do servidor, principalmente com relao a atualizao de status
dos arquivos no sistema de arquivos (hora de acesso, data, etc).
O cache de leitura adiante de abertura de arquivos em modo somente leitura aumenta a per-
formance com o uso do oplocks nvel 2. Para isto, ajuste a opo level2 oplocks para yes.
A recomendao deste tipo de oplock o mesmo do nvel 1.
Como o SAMBA faz o transporte NetBEUI via TCP/IP, ajustes no socket fazem diferena nos
dados que trafegam na rede. Como isso dependente de rede voc precisar usar tcnicas
de leitura/gravao para determinar quais so as melhores que se encaixam em seu caso. A
opo socket options usada para fazer tais ajustes, por exemplo:
Sistemas com implementaes NetBIOS mais antigos, como o Windows for Workgroups
(Windows 3.11) e o Lan Manager (DOS), enviam somente a senha para acesso ao compar-
tilhamento, desta forma, para o acesso ser autorizado pelo samba, voc dever especificar a
diretiva user = usuario para que a senha confira com o usurio local do sistema. A senha envi-
ada tambm em formato texto plano. Este problema no ocorre no Windows 95 e superiores,
que enviam o nome de usurio que efetuou o logon junto com a respectiva senha.
Se a segurana do seu samba depende de senhas criptografadas, ser necessrio utilizar a dire-
tiva include = outro_arquivo_de_configurao.%m para definir configuraes es-
pecficas de acesso para estas mquinas.
Outro detalhe que deve ser lembrado que o Windows for Workgroups envia sempre
a senha em MAISCULAS, ento preciso configurar o SAMBA para tentar combinaes
de maisculas/minsculas usando o parmetro mangle case e default case na seo global do
smb.conf.
Para configurar o cliente para fazer parte de um grupo de trabalho, necessrio apenas que
tenha em mos o nome do grupo de trabalho (workgroup) que os clientes faro parte e
o nome de uma outra mquina que faz parte do mesmo grupo (para testes iniciais). Com estes
dados em mos, selecione na lista abaixo o nome do cliente que deseja configurar para incluir
no grupo de trabalho:
Windows 9X on the current page
Windows XP Home Edition on the following page
Windows XP Professional Edition on the next page
Windows XP Server Edition on the following page
Windows NT WorkStation on page 359
Windows NT Server on page 359
Windows 2000 Professional on page 359
Windows 2000 Server on page 359
Linux on page 359
Windows 9X
Estas configuraes so vlidas para clientes Windows 95, Windows 95OSR/2, Windows 98.
Caso utilize o Windows 95 (qualquer uma das sries) aconselhvel atualizar a stack TCP/IP
e NetBEUI para corrigir alguns problemas que podem deixar sua mquina vulnervel na ver-
so que acompanha o WinSock do Windows 95.
Para tornar uma mquina parte do grupo de trabalho, siga os seguintes passos:
Captulo 18. SAMBA 358
Windows NT WorkStation
Windows NT Server
Clique no item Rede do painel de controle.
Na tab Servios, confira se os servios Estao de trabalho, Interface de
NetBIOS e Servios TCP/IP simples esto instalados. Caso no estejam, faa sua
instalao usando o boto Adicionar nesta mesma janela.
Na tab Protocolos, verifique se os protocolos NetBEUI e TCP/IP esto instalados. Caso
no estejam, faa sua instalao clicando no boto Adicionar nesta mesma janela.
Na tab identificao, clique no boto Alterar
Na janela que se abrir, coloque o nome do computador no campo Nome do
Computador
Clique em Grupo de trabalho e escreva o nome do grupo de trabalho em frente.
Clique em OK at voltar.
Pronto, seu computador agora faz parte do grupo de trabalho.
Linux
grficos, como o Ambiente de Rede do Windows ou mais poderosos, veja Programas de naveg-
ao grficos on page 366. Como complemento, tambm explicado o programa nmblookup
para resoluo de endereos NetBIOS em IP e vice-versa e a forma que as funes de mquinas
so definidas em uma rede NetBEUI.
nmblookup Esta uma ferramenta usada para procurar nomes de cliente usando o endereo
IP, procurar um IP usando o nome e listar as caractersticas de cada cliente. Veja alguns exem-
plos:
nmblookup -A 127.0.0.1 Lista o nome e as opes usadas pelo servidor 127.0.0.1
nmblookup servidor Resolve o endereo IP da mquina servidor.
A listagem exibida pela procura de IP do nmblookup possui cdigos hexadecimais e cada um
deles possui um significado especial no protocolo NetBEUI. Segue a explicao de cada um:
Identificao da mquina COMPUTADOR<00>= O servio NetBEUI est sendo execu-
tado na mquina.
COMPUTADOR<03> = Nome genrico da mquina (nome NetBIOS).
COMPUTADOR<20> = Servio LanManager est sendo executado na mquina.
Identificao de grupos/domnio GRUPO_TRABALHO<1d> - <GRUPO> = Navegador
Local de Domnio/Grupo.
GRUPO_TRABALHO<1b> = Navegador Principal de Domnio.
GRUPO_TRABALHO<03> - <GRUPO> = Nome Genrico registrado por todos os
membros do grupo de trabalho.
GRUPO_TRABALHO<1c> - <GRUPO> = Controladores de Domnio / Servidores
de logon na rede.
GRUPO_TRABALHO<1e> - <GRUPO> = Resolvedores de Nomes Internet (WINS).
Estes cdigos podem lhe ser teis para localizar problemas mais complicados que possam
ocorrer durante a configurao de um servidor.
Para configurar qualquer um dos cliente abaixo para fazer parte de um domnio de rede,
necessrio apenas que tenha em mos os seguintes dados:
Nome do controlador de domnio PDC
Nome do domnio
Nome de usurio e senha que foram cadastrados no servidor.
Acesso administrador no SERVIDOR PDC (SAMBA, NT, etc).
Cria uma conta de mquina no domnio (no caso da mquina ser um Windows NT, Win-
dows XP, Windows 2k ou Linux). Veja Contas de mquinas de domnio on page 328
para maiores detalhes.
Como o Windows 3.11, Windows 95, Windows 98, Windows ME no possuem uma conta de
mquina, eles nunca sero um membro real de um domnio, podendo sofrer um name spoofing
e terem a identidade roubada. Mesmo assim, eles tero pleno acesso aos recursos do domnio
e uma configurao mais fcil que os demais clientes. Com estes dados em mos, selecione na
lista abaixo o nome do cliente que deseja integrar no grupo de trabalho:
Windows 9X on page 357
Windows XP Home Edition on page 358
Windows XP Professional Edition on page 358
Windows XP Server Edition on page 358
Windows NT WorkStation on page 359
Windows NT Server on page 359
Windows 2000 Professional on page 359
Captulo 18. SAMBA 362
Windows 9X
Estas configuraes so vlidas para clientes Windows 95, Windows 95OSR/2, Windows 98.
Caso utilize o Windows 95 (qualquer uma das sries) aconselhvel atualizar a stack TCP/IP
e NetBEUI para corrigir alguns problemas que podem deixar sua mquina vulnervel na ver-
so que acompanha o WinSock do Windows 95.
Para tornar uma mquina parte do domnio, siga os seguintes passos:
Entre nas propriedades de rede no Painel de Controle
Instale o Cliente para redes Microsoft (caso no esteja instalado).
Instale o Protocolo TCP/IP. Voc tambm pode instalar o protocolo NetBIOS, mas uti-
lizaremos o suporte NetBIOS sobre TCP/IP que o usado pelo SAMBA alm de ter um
melhor desempenho, permitir integrao com servidores WINS, etc.
Clique em Cliente para redes Microsoft, marque a opo Efetuar logon no domnio do
Windows NT. Coloque o nome do domnio que ir configurar o cliente para fazer parte
na caixa Domnio do Windows NT (por exemplo, suporte). Na parte de baixo da
caixa de dilogo, voc poder escolher como ser o mtodo para restaurar as conexes
de rede. Inicialmente, recomendo que utilize a Efetuar logon e restaurar as conexes
de rede que mais til para depurar problemas (possveis erros sero mostrados logo
que fizer o logon no domnio). Adeque esta configurao as suas necessidades quando
estiver funcionando :)
Clique em Protocolo TCP/IP e em Propriedades. Clique na tab NetBIOS e marque
a opo Desejo ativar o NetBIOS atravs do TCP/IP. Caso esta caixa esteja em cinza,
ento est tudo certo tambm.
Clique na tab Identificao e coloque l o nome que identificar o computador (at 15
caracteres).
Digite o nome de um grupo de trabalho que a mquina far parte no campo Grupo de
Trabalho (por exemplo workgroup, suporte, etc). Este campo somente ser usado
caso o logon no domnio NT no seja feito com sucesso. No campo Descrio do Com-
putador, coloque algo que identifique a mquina na rede (por exemplo, Computador
da rea de suporte).
Clique na tab Controle de Acesso e marque o Controle de acesso a nvel de usurio
e especifique o nome da mquina que serve a lista de usurios, que normalmente a
mesma do PDC.
Clique em OK at reiniciar o computador.
Quando for mostrada a tela pedindo o nome/senha, preencha com os dados da conta de
usurio que criou no servidor. No campo domnio, coloque o domnio que esta conta de
usurio pertence e tecle <Enter>. Voc ver o script de logon em ao (caso esteja configurado)
e a mquina cliente agora faz parte do domnio! Tente acessar um outro computador da rede
e navegar atravs do ambiente de rede. Caso a lista de mquinas demore em aparecer, tente
Captulo 18. SAMBA 363
No possvel fazer o Windows XP Home Edition ser parte de um domnio, por causa de
limitaes desta verso.
Primeiro, siga todos os passos para ingressar a mquina em um grupo de trabalho como
documentado em Windows XP Professional Edition on page 358.
Atualize o registro para permitir a entrada no domnio:
1 Copie o seguinte contedo para o arquivo WinXP-Dom.reg:
REGEDIT4
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\netlogon\para
"RequireSignOrSeal"=dword:00000000
"SignSecureChannel"=dword:00000000
2 Execute o comando regedit WinXP-Dom.reg no cliente XP.
Entre nos tens (em seqencia) Painel de controle/Ferramentas Administrativas/ Poltica
de segurana local/polticas locais e depois em opes de segurana. Na janela de
opes de segurana, desative as opes Encriptar digitalmente ou assinar um canal
seguro (sempre), Desativar modificaes de senha na conta de mquina e Requer
chave de seo forte (Windows 2000 ou superior).
Reinicie a mquina.
Aps reiniciar a mquina, volte na tela de alterao de identificao de mquina na rede.
Clique com o mouse em Domnio e digite o nome do domnio na caixa de dilogo.
Na tela seguinte, ser lhe pedido o nome de usurio e senha com poderes administrativos
que podem inserir/remover mquinas do domnio.
Clique em OK e aguarde a mensagem confirmando sua entrada no domnio. Ser
necessrio reiniciar a mquina aps concluir este passo.
Windows NT WorkStation
Windows NT Server
Primeiro, siga todos os passos para ingressar a mquina em um grupo de trabalho como
documentado em Windows 2000 Server on page 359.
Aps reiniciar a mquina, volte na tela de alterao de identificao de mquina na rede.
Clique com o mouse em Domnio e digite o nome do domnio na caixa de dilogo.
Na tela seguinte, ser lhe pedido o nome de usurio e senha com poderes administrativos
que podem inserir/remover mquinas do domnio.
Clique em OK e aguarde a mensagem confirmando sua entrada no domnio. Ser
necessrio reiniciar a mquina aps concluir este passo.
Caso no consiga trocar a senha do Windows 2000 no servidor PDC, desative a opo unix
password sync.
Linux
[global]
workgroup = nome_domnio
security = domain
password server = nome_pdc nome_bdc
encrypt passwords = true
Onde:
workgroup - Nome do domnio que deseja fazer parte.
security - Nvel de segurana. Nesta configurao, utilize domain.
password server - Nome da mquina PDC, BDC. Tambm poder ser usado *,
assim o SAMBA tentar descobrir o servidor PDC e BDC automaticamente, da mesma
forma usada pelo Windows.
encrypt passwords - Diz se as senhas sero encriptadas ou no. Sempre utilize
senhas criptografadas para colocar uma mquina em um domnio.
Reinicie o servidor SAMBA aps estas modificaes.
Execute o comando: smbpasswd -j domnio -r PDC/BDC -U usuario_admin.
Onde:
domnio - Domnio que deseja fazer o logon
PDC/BDC - Nome da mquina PDC/BDC do domnio. Em alguns casos, pode ser
omitido.
usuario_admin - Usurio com poderes administrativos para ingressara a mquina
no domnio.
Se tudo der certo, aps executar este comando, voc ver a mensagem:
Joined domain "domnio".
Se sua configurao no funcionou, revise com ateno todos os tens acima. Verifique se a
conta de mquina foi criada no servidor e se o SAMBA na mquina cliente foi reiniciado. De
tambm uma olhada em Erros conhecidos durante o logon do cliente on this page.
OBS:O SAMBA envia primeiramente um usurio/senha falso para verificar se o servidor re-
jeita o acesso antes de enviar o par de nome/senha corretos. Por este motivo, seu usurio
pode ser bloqueado aps um determinado nmero de tentativas em alguns servidores mais
restritivos. Para acessar os recursos compartilhados, veja Linux on page 359. Note que no
obrigatrio realizar as configuraes acima para acessar os recursos de uma mquina em
domnio, basta apenas que autentique com seu nome de usurio/senha no domnio e que ela
seja autorizada pelo PDC.
Esta seo contm os erros mais comuns e a forma de correo da maioria dos problemas que
ocorrem quando um cliente SAMBA tenta entrar em domnio.
error creating domain user: NT_STATUS_ACCESS_DENIED - A conta de
mquina no domnio no foi criada. Veja Contas de mquinas de domnio on page 328
para mais detalhes.
NT_STATUS_NO_TRUST_SAM_ACCOUNT - No existe conta de mquina no Windows
NT para autenticar uma mquina no domnio. Esta mensagem mostrada quando a
mquina SAMBA cliente de um domnio NT.
Captulo 18. SAMBA 366
linneighborhood
Cliente SAMBA baseado em GTK, muito leve e possibilita a navegao entre os grupos
mquinas em forma de rvore. Ele tambm permite a montagem de compartilhamentos re-
motos. Caso precise de recursos mais complexos e autenticao, recomendo o TkSmb on this
page.
TkSmb
Cliente SAMBA baseado em TCL/TK. Seu ponto forte a navegao nos recursos da mquina
ao invs da rede completa, possibilitando autenticao em domnio/grupo de trabalho, mon-
tagem de recursos, etc.
So ferramentas que permitem a configurao do samba usando a interface grfica. Isto facilita
bastante o processo, principalmente se estiver em dvidas em algumas configuraes, mas
como todo bom administrador UNIX sabe, isto no substitui o conhecimento sobre o funciona-
mento de cada opo e ajustes e organizao feita diretamente no arquivo de configurao.
Captulo 18. SAMBA 367
gnosamba
Ferramenta de configurao grfica usando o GNOME. Com ele possvel definir configu-
raes localmente. Ele ocupa pouco espao em disco, e se voc gosta de GTK, este o re-
comendado.
As opes do SAMBA so divididas em categorias facilitando sua localizao e uso.
swat
Ferramenta de administrao via web do samba. Este um daemon que opera na porta 901 da
mquina onde o servidor samba foi instalado. A configurao feita atravs de qualquer nave-
gador acessando http://ip_do_servidor:901 e logando-se como usurio root (o nico
com poderes para escrever no arquivo de configurao).
Esta ferramenta vem evoluindo bastante ao decorrer dos meses e a recomendada para a
configurao do servidor SAMBA remotamente. Seu modo de operao divide-se em bsico e
avanado. No modo bsico, voc ter disponvel as opes mais comuns e necessrias para
compartilhar recursos na rede. O modo avanado apresenta praticamente todos os parmet-
ros aceitos pelo servidor samba (restries, controle de acesso, otimizaes, etc.).
Os exemplos existentes nesta seo cobrem diferentes tipos de configurao do servidor, tanto
em modo de compartilhamento com acesso pblico ou um domnio restrito de rede. Todos os
exemplos esto bem comentados e explicativos, apenas pegue o que se enquadre mais em sua
situao para uso prprio e adaptaes.
Este exemplo pode ser usado de modelo para construir uma configurao baseada no controle
de acesso usando o nvel de segurana share e quando possui compartilhamentos de acesso
pblico. Esta configurao indicada quando necessita de compatibilidade com softwares
NetBIOS antigos.
[global]
# nome da mquina na rede
netbios name = teste
# nome do grupo de trabalho que a mquina pertencer
workgroup = focalinux
# nvel de segurana share permite que clientes antigos mantenham a compatibi
# enviando somente a senha para acesso ao recurso, determinando o nome de usu
# de outras formas
security = share
# O recurso de senhas criptografadas no funciona quando usamos o nvel share
# de segurana. O motivo disto porque automaticamente assumido que voc
# est selecionando este nvel por manter compatibilidade com sistemas antigo
# ou para disponibilizar compartilhamentos pblicos, onde
encrypt passwords = false
# Conta que ser mapeada para o usurio guest
guest account = nobody
# Como todos os compartilhamentos desta configurao so de acesso pblico
# coloquei este parmetro na seo [global], assim esta opo afetar todos
# os compartilhamentos.
guest ok = 1
# Conjunto de caracteres utilizados para acessar os compartilhamentos. O padr
# para o Brasil e pases de lngua latina o ISO 8859-1
character set = ISO8859-1
O exemplo abaixo descreve uma configurao a nvel de segurana por usurio onde exis-
tem compartilhamentos que requerem login e usurios especficos, e restries de IPs e inter-
face onde o servidor opera. Esta configurao utiliza senhas em texto claro para acesso dos
usurios, mas pode ser facilmente modificada para suportar senhas criptografadas.
[global]
# nome da mquina na rede
netbios name = teste
# nome do grupo de trabalho que a mquina pertencer
workgroup = focalinux
# nvel de segurana user somente aceita usurios autenticados aps o envio
# de login/senha
security = user
# utilizada senhas em texto claro nesta configurao
encrypt passwords = false
# Conta que ser mapeada para o usurio guest
guest account = nobody
# Permite restringir quais interfaces o SAMBA responder
bind interfaces only = yes
# Faz o samba s responder requisies vindo de eth0
interfaces = eth0
# Supondo que nossa interface eth0 receba conexes roteadas de diversas
# outras redes, permite somente as conexes vindas da rede 192.168.1.0/24
hosts allow = 192.168.1.0/24
# A mquina 192.168.1.57 possui gateway para acesso interno, como medida
Captulo 18. SAMBA 370
18.15.3 Domnio
[global]
# nome da mquina na rede
netbios name = teste
# nome do grupo de trabalho que a mquina pertencer
workgroup = focalinux
# String que ser mostrada junto com a descrio do servidor
server string = servidor PDC principal de testes
# nvel de segurana user somente aceita usurios autenticados aps o envio
# de login/senha
security = user
# Utilizamos senhas criptografadas nesta configurao
encrypt passwords = true
smb passwd file = /etc/samba/smbpasswd
# Conta que ser mapeada para o usurio guest
guest account = nobody
# Permite restringir quais interfaces o SAMBA responder
bind interfaces only = yes
# Faz o samba s responder requisies vindo de eth0
interfaces = eth0
Captulo 19
Este captulo documenta diversos mtodos de fazer restries de contas, limitao de acesso
interno/externo, de recursos por usurios/grupos, login, tempo mximo ocioso, e outros mo-
dos para limitar o uso de recursos do sistema. Tambm so descritos mtodos para aumentar a
segurana do acesso fsico a seu servidor e maneiras de restringir o uso de servios disponveis
no sistema.
Se voc deseja restringir o acesso de mquinas na rede ou portas especficas em sua mquina ,
veja tambm Firewall iptables on page 109 .
Variveis exportadas na forma comum podem ser modificadas a qualquer momento pelo
usurio, e isso pode trazer problemas de acordo com o tipo de sistema que administramos.
A definio da varivel como somente leitura (readonly) evita a maioria destes problemas:
readonly TESTE="123"
A varivel TESTE no poder ser modificada ou excluda. Com isto o administrador pode
bloquear a modificao de variveis que controlam o funcionamento de determinados re-
cursos do interpretador de comandos (alguns deles sero vistos ainda nesta seo).
OBS2: Variveis exportadas como somente leitura em shell scripts so mantidas at a finaliza-
o do script e depois liberadas.
Captulo 19. Restries de acesso, recursos e servios 376
O controle de acesso a diretrios de usurios importante quando desejamos que outras pes-
soas no tenham acesso ao diretrio de outros usurios, violando a privacidade do mesmo
e obtendo acesso a partes indesejveis, principalmente do usurio root. recomendado re-
stringir o acesso somente ao dono e grupo do usurio, bloqueando o acesso a outros tipos de
usurios:
Isto garantir que o servidor Apache continue servindo as requisies dentro do diretrio
/home/usuario, com acesso garantido via grupo. O mesmo principio pode ser aplicado em
outros programas, apenas leve em considerao que se um cracker tomar conta do processo
que tem acesso ao seu diretrio home restrito, ele certamente tambm ter acesso.
Quando o bash iniciado com o parmetro -r, --restricted ou como rbash, o shell re-
stringe o uso dos seguintes recursos em sua seo:
Usar o comando cd para mudar de diretrio.
Definindo, modificar ou apagar a variveis SHELL, PATH, ENV, BASH_ENV.
Nomes de comandos que contm /
Especificar um nome de arquivo contendo uma / como argumento para o comando
builtin (embutido no interpretador de comandos).
Especificar uma / como argumento a opo -p no comando hash (embutido no interpre-
tador de comandos).
Importar a definio de funes do ambiente do shell atual.
Captulo 19. Restries de acesso, recursos e servios 377
A varivel TMOUT determina o tempo de inatividade de um shell para que ele seja terminado.
export TMOUT=600
Terminar o bash caso nenhum comando seja executado no perodo de 600 segundos (5 minu-
tos). Veja Uso do comando readonly para exportar variveis on page 375 como complemento.
Existem casos onde o usurio precisa estar cadastrado no sistema mas no precisa ter acesso
a uma conta de login vlida (como um sistema servidor de e-mail ou outros servios). Neste
caso a desabilitao dos servios de shell aumentar um pouco a segurana do sistema, mesmo
conseguindo acesso a conta/senha estar impedido de entrar no sistema (pelo menos ter um
pouco mais dificuldade para conseguir isso).
Um programa que muito usado para desabilitar o shell exibindo uma mensagem ao usurio
que fez a tentativa o falselogin. Ele deve ser colocado como o shell padro no arquivo
Captulo 19. Restries de acesso, recursos e servios 378
ldd [programa]
Por exemplo:
ldd /bin/login
Caso a biblioteca libpam for listada, o programa tem suporte a PAM compilado. Programas
que no possuem suporte a PAM devero ter o cdigo fonte modificado inserindo as funes
para tratamento dos mdulos de autenticao.
Terceiro campo - Lista de terminais (tty - na forma listada pelo ttyname), nomes de
mquinas, nomes de domnios (comeando com .), endereos IP ou FQDN, poro de
rede (finalizando com um .). As palavras chave ALL (todos) e LOCAL (mquinas na
mesma rede) tambm podem ser usadas.
OBS1: - A configurao padro do access.conf garantir o acesso a todos os usurios,
atravs de qualquer lugar (permissiva).
OBS2:: Mesmo se existir uma regra autorizando o acesso ao usurio, as restantes sero ver-
ificadas em busca de uma que bloqueie o acesso do usurio. Se nenhuma regra conferir, o
usurio ter acesso garantido.
OBS3: - O nome de grupo somente checado quando nenhum nome de usurio confere com
nenhum usurio logado no sistema.
OBS4: - Grupos/usurios NIS podem ser especificados precedendo o nome do usurio ou
grupo por uma @.
Abaixo uma configurao restrita de /etc/security/access.conf:
#
# Desabilita o login de todos os usurios EXCETO o root no terminal tty1
-:ALL EXCEPT root:tty1
A restrio de acesso a usurio root pelo PAM funciona permitindo que somente alguns
usurios que pertenam a um grupo criado pelo administrador possam se tornar o supe-
rusurio usando o comando su. Esta restrio funciona at mesmo para os usurios que pos-
suem a senha correta de root, retornando uma mensagem de login ou senha incorretos. Isto
extremamente til para restries de acesso.
Um outro ponto positivo caso ocorra um possvel acesso no autorizado em seu sistema ou
um daemon seja corrompido e o atacante cair em um shell, ele no poder obter root na
mquina pois o UID do daemon provavelmente no ter autorizao. A distribuio Debian,
em especial, possui grupos e nomes de usurios organizados de forma a permitir segurana e
separao total caso utilize este mecanismo.
Captulo 19. Restries de acesso, recursos e servios 381
Este recurso se mostra bem eficiente para proteger a integridade da mquina at mesmo no
comprometimento de mquinas que possui a senha semelhante, somente se usado em conjunto
com as restries de acesso de outros servios remotos (como o ssh, ftp, etc). O guia Foca
documenta as formas de restrio e seu impacto na segurana da mquina nos captulos do
nvel Avanado (veja o ndice para buscar o captulo correspondente ao que deseja proteger).
Para configurar esta restrio, siga os seguintes passos:
Crie um grupo onde os usurios cadastrados tero acesso root. Por exemplo,
usuarios-su (ou algo mais discreto).
Edite o arquivo /etc/pam.d/su. Insira a seguinte linha (caso no existir) no arquivo de
configurao:
auth required pam_wheel.so group=usuarios-su
O que ela faz usar o mdulo pam_wheel.so requerendo que os usurios pertenam
ao grupo usuarios-su. Salve e saia do editor.
Ainda como usurio root, adicione os usurios que tero acesso a root no grupo
usuarios-su. Recomendo que adicione seu usurio primeiro, principalmente se es-
tiver fazendo acesso remoto, pois se acontecer uma queda no link no ficar sem acesso
root por cair na restrio :-)
Tente pegar o root com outros usurios que no pertenam ao grupo usuarios-su
estes simplesmente tero o acesso negado.
Primeiro campo - Nome do servio PAM que ser controlado (um dos servios conti-
dos em /etc/pam.d).
Segundo campo - Lista de nomes de terminais que a regra que aplicar. O sinal &
tem a funo and, | tem a funo or e especifica uma exceo.
Terceiro campo - Nome de usurios afetados pela regra. O sinal & tem a funo
and, | tem a funo or e especifica uma exceo.
OBS: O * poder ser usado somente no primeiro, segundo ou terceiro campo em uma
mesma regra.
Por padro o acesso garantido a todos os usurios. Abaixo um exemplo de restries usando
o /etc/security/time.conf:
OBS1: Mesmo se existir uma regra autorizando o acesso ao usurio, as restantes sero verifi-
cadas em busca de uma que bloqueie o acesso do usurio. Se nenhuma regra conferir, o usurio
ter acesso garantido.
OBS2: Quando as restries de tempo so ativadas no /etc/security/time.conf, o dae-
mon logoutd poder ser ativado manualmente (atravs de /etc/init.d/logoutd) para
monitora as restries neste arquivo, forando o logout de usurio de acordo com as configu-
raes do /etc/security/time.conf. Isto ocorrer automaticamente na prxima vez que
iniciar o sistema (a distribuio detecta a presena de restries de tempo no arquivo /etc
/security/time.conf para decidir se deve ou no carregar este daemon).
Quando no est em execuo, os limites de tempo so verificados somente no login do
usurio, ele poder ultrapassar este tempo sem ser desconectado do sistema.
de servios PAM baseados em dia/hora on page 381. O 5o campo contm um ou mais grupos
(separados por espaos ou vrgulas) que sero adicionados aos grupos do usurio quando as
condies dos campos anteriores conferirem.
OBS: Se o usurio escrever um programa que chama um interpretador de comandos e der
a permisso SGID (chmod g+s programa), ele ter acesso quele grupo na hora que quiser.
Restrinja o uso de grupos somente a usurios de confiana ou crie grupos especficos para
evitar problemas.
Exemplo de configurao do arquivo /etc/security/group.conf:
# Permite que o usurio gleydson tenha acesso ao grupo floppy efetuando o logi
# entre 08:00 da manha e 19:00 da noite
login;tty*;gleydson;Al0800-1900;floppy
# Todos os usurios podem ter acesso ao grupo games e sound aos sbados e domi
login;tty*;*;SaSu0000-2400;sound games
# Todos os usurios podem ter acesso ao grupo games e sound todos os dias
# de 18:00 as 05:00 da manh (fora do horrio de expediente ;-)
login;tty*;*;Al1800-0500;sound,games
OBS1: Mesmo que uma regra confira com o usurio, as outras tambm sero verificadas para
garantir acesso grupos extras.
OBS2: O padro na maioria das distribuies limitar o nmero mximo de grupos do usurio
para 32. Caso precise aumentar este limite, ser necessrio recompilar o kernel (e tambm a
glibc, se necessrio) para aceitar um nmero maior modificando a varivel ngroup.
Quando somente o limite hard (rgido) especificado, o limite suave assume o mesmo
valor.
* soft core 0
* hard rss 10000
@student hard nproc 20
@faculty soft nproc 20
@faculty hard nproc 50
ftp hard nproc 0
@student - maxlogins 4
gleydson - maxlogins 2
OBS: Estas permisses passam a ter efeito no momento que o usurio se conecta ao sistema, e
no quando elas so modificadas no arquivo /etc/security/limits.conf.
fazer tarefas como conexo com internet, utilizao da placa de som, modem, etc. e as vezes
nem sabem que isso pode ser feito atravs do mesmo usurio adicionando este a um grupo
especfico.
Esta tarefa pode ser feita com o comando adduser usurio grupo ou editando manual-
mente os arquivos /etc/group e /etc/gshadow. Podemos ter as seguintes situaes facili-
tadas com o uso de grupos:
Usar a placa de som. Os dispositivos usados pela placa de som como /dev/audio,
/dev/dsp, /dev/sndstat, etc. normalmente tem permisso leitura/gravao para o
usurio root e grupo audio (cheque com o comando ls -la /dev/audio). Para
autorizar determinados usurios usar a placa de som basta adiciona-los neste grupo:
adduser usuario audio.
Conectar a Internet. Normalmente o utilitrio ppp tem as permisses SUID root e grupo
dip. Adicionamos o usurio a este grupo: adduser usuario dip. Agora ele poder
conectar/desconectar a internet sem a interveno do usurio root. OBS Certamente
o usurio ter acesso aos arquivos de configurao da discagem do ppp e conseqente-
mente a senha de conexo internet, e esta senha a mesma usada no e-mail primrio
do provedor (com o mesmo nome da conta). Esta mesma situao pode acontecer com
outros programas que autorize o acesso a grupos, importante que conhea bem as per-
misses do programa e entender se existem riscos.
Utilizar o modem. Um bom grupo para permitir a utilizao do modem dialout. O
dispositivo utilizado pelo modem (no seu link) deve ter permisses leitura/gravao
para o usurio root e grupo dialout. Cadastrando o usurio neste grupo autorizar a
utilizao do modem: adduser usuario dialout.
Permitir que diversos usurios compartilhem um mesmo diretrio. Isto til quando
muitas pessoas esto desenvolvendo um mesmo projeto. Siga estes passos:
Crie um novo grupo no sistema: groupadd gp1, a opo -g permite selecionar
manualmente a GID. Opcionalmente voc poder usar um grupo j existente no
sistema (veja o arquivo /etc/group).
Crie o diretrio que ser usado para armazenar os arquivos deste grupo de usurios:
mkdirprojeto1).
Mude o dono/grupo do diretrio: chown root.gp1 projeto1/
De permisses de leitura/gravao para o dono/grupo do diretrio, vamos tambm
incluir a permisso SGID para que todos os arquivos criados dentro deste diretrio
pertenam ao mesmo grupo e no ao grupo primrio do usurio, assim todos os
usurios tero acesso: chmod 2770 projeto1
Agora cadastre os usurios que devero ter acesso ao diretrio projeto1/ no
grupo gp1, somente estes usurios e o root tero acesso ao diretrio (permisses
2770).
interessante tambm mudar a umask do usurio de 022 para 002 (ou equiv-
alente) para que os novos arquivos criados tenham permisso de leitura/gravao
para o grupo gp1. Caso contrrio, lembre-se de modificar as permisses de seus
arquivos manualmente. Um timo comando para fazer isso (sem afetar diretrios)
: find . -type f -user usuario1 -exec chmod 0660 \{\} \;. Este
comando parece estranho mas excelente! um chmod -R 0660 afetaria at os di-
retrios, imagine o caos.
Captulo 19. Restries de acesso, recursos e servios 386
A maioria das distribuies Linux vem com uma boa poltica de grupos para permitir um
controle eficaz de recurso. Se voc quer saber quais arquivos em seu sistema pertencem a
determinado grupo (til para saber o que o usurio ter acesso se adiciona-lo quele grupo)
execute o comando:
A ferramenta ideal para isto o sudo. Atravs dela possvel permitir um usurio comum
executar um comando como root e registrar quando isto foi feito. possvel selecionar os
usurios/grupos que tero acesso e quais aplicativos que podero ser usados, estas configu-
raes so feitas no arquivo /etc/sudoers.
Por exemplo, para o usurio john usar o comando shutdown para desligar o computador:
sudo shutdown -h now.
O sudo um programa muito completo, tomaria muitos Kilobytes neste guia. Recomendo dar
uma lida na pgina de manual para entender como as variveis do arquivo de configurao
funcionam. Mesmo assim aqui vai um exemplo simples deste arquivo para iniciar rapidamente
o uso do sudo:
# arquivo sudoers.
#
# Edite este arquivo com o comando visudo como root
#
#
Edite este arquivo com o comando visudo, ele faz algumas checagens para detectar problemas
de configurao. Para listar os comandos disponveis para o usurio no sudo, utilize a opo
-l, ex: sudo -l.
Restries de acesso atravs de grupos, bloqueio de acesso, acesso direto sem senha, etc. po-
dem ser aplicados ao sudo via seu arquivo de configurao PAM /etc/pam.d/su. Abaixo
um exemplo explicativo deste arquivo:
O servio identd permite identificar os usurios que esto realizando conexes TCP, adi-
cionalmente esta caracterstica usada por programas para fazer restries para usurios
em adio ao endereo de origem/destino. A sintaxe usada nas diretivas de acesso es-
pecificada na forma usurio@endereo. O Servidor ident on page 241 explica a configu-
rao/utilizao/vulnerabilidades e recomendaes sobre este servio.
Diversos programas que possuem controle de acesso baseado em IPs/hosts aceitam esta es-
pecificao, como o exim, ircd, e o conhecido tcpd.
Segue um exemplo da utilizao do identd com o arquivo hosts.allow:
Note que a utilizao do identd torna a utilizao do servio um pouco mais restrita, somente
conhecendo os logins de quem tem acesso ao servio, um cracker conseguir ter acesso ao
mesmo servio naquele sistema (este um dos motivos que recomendado sempre divulgar o
mnimo detalhes possveis sobre o sistema para minimizar riscos de ataques).
Veja mais detalhes sobre o uso do identd em Servidor ident on page 241.
Esta proteo oferece uma barreira maior se segurana contra IPs spoofing evitando que pes-
soas mal intencionadas faam um IP spoofing da mquina para obter acessos privilegiados que
somente o detentor original do MAC/IP teria. Recomendo no levar em considerao que isto
seja a soluo definitiva contra IP spoofing, pois possvel falsificar o MAC address de uma
interface para tomar outra identidade.
Este mtodo poder ser aplicado para fornecer um maior lao de confiana por hardware en-
tre as mquinas que compem uma rede de servidores. Ele tambm evita mesmo que uma
mquina configurada de forma errnea tenha acesso indevido ao servidor ou em uma situao
extrema, se torne o gateway da rede.
Captulo 19. Restries de acesso, recursos e servios 389
Para restringir as conexes para uma mquina Linux por MAC address, utilize o firewall
iptables. Com ele ser permitido fazer a restrio por servios, criando uma barreira bas-
tante chata para crackers tentarem se conectar a um servio. Como referncia, leia a seo
Especificando o endereo MAC da interface on page 144.
Outra situao a restrio por par MAC/IP usando o prprio cache arp da mquina, us-
ando entradas estticas de endereos. Um exemplo deste uso quando voc extremamente
paranico ou quando uma rede que utiliza algum mtodo de autenticao baseado no rhosts
(como o caso do sistema de backup do Amanda), ento importante dizer para as mquinas
servidoras, qual o MAC address/IP privilegiado que ter o acesso ao usurio para conexo
sem senha.
O local padronizado para definir um MAC esttico (e bastante desconhecido da maioria dos
administradores de sistemas) o /etc/ethers. O formato deste arquivo o MAC Address e
IP separados por espao, cada linha com uma nova entrada de MAC Address. Veja o exemplo:
00:03:47:AA:AA:AB www.focalinux.org.br
00:03:47:BB:AA:BA www2.focalinux.org.br
00:03:47:BB:AA:BB 192.168.0.1
Caso no conhea o formato do endereo de MAC Address, os trs primeiros 3 campos definem
o fabricante da placa de rede, e os 3 ltimos uma identificao nica do fabricante para a
Placa, ou seja, NENHUMA placa de rede fabricada tem o mesmo MAC Address fsico.
Para que o comando arp crie as entradas estticas no seu cache ARP, ser necessrio executar
o comando arp -f /etc/ethers. Este comando poder ser colocado em algum script ou
diretrio de inicializao de sua distribuio para que seja executado automaticamente (como
por exemplo, no /etc/rc.boot da Debian). Digitando arp voc ver as linhas definidas no
arquivo /etc/ethers marcadas com as opo (flag) M (manual/permanente). Outra forma
de verificar, usando o arp -a mquina ou somente arp -a. As mquinas especificadas
estaticamente (manualmente) tero o nome PERM listados (cache arp permanente).
OBS: Como deve ter notado, a restrio por MAC Address implica em um aumento no tra-
balho de gerenciamento das configuraes. Assim, planeje-se para que esta tarefa no seja
desgastante, crie programas para realizar atualizaes dinmicas estudando a estrutura de sua
rede e como suas mquinas se comunicam para no ter problemas obscuros quando tiver que
fazer uma simples modificao em uma interface de rede :)
Uma boa configurao restritiva requer anlise sobre os impactos na rede.
Para desativar servios neste arquivo, ponha o smbolo # no inicio das linhas que deseja co-
mentar e execute um killall -HUP inetd. Alternativamente, o comando update-inetd
pode ser usado para facilitar esta tarefa:
update-inetd --disable
Este comando envia automaticamente o sinal de reinicio (HUP) ao inetd. O servio poder ser
novamente ativado substituindo a opo disable por enable ou retirando o trecho #<off>#
no comeo da linha do servio do /etc/inetd.conf.
maquina1.dominio.com.br usuario1
maquina2.dominio.com.br usuario2
O uso destes dois mecanismos e dos servios r* so desencorajados! (o ltimo por usar trans-
ferncia de dados no criptografadas). Veja Servidor ssh on page 251 para uma alternativa
melhor. Utilize estes dois mecanismos somente se deseja facilidade no gerenciamento e se sua
rede seja absolutamente confivel e a segurana de dados no seja prioridade pra voc. . .
Por padro todos que tem acesso ao console do sistema podem efetuar o reinicio do computa-
dor pressionando CTRL+ALT+DEL. Estas teclas de combinao so definidas pela linha
ca:12345:ctrlaltdel:/sbin/shutdown -r now
Captulo 19. Restries de acesso, recursos e servios 391
O patch restricted proc fs um dos melhores para realizar esta tarefa. Restringindo o acesso ao
sistema de arquivos /proc evita que o usurio normal tenha acesso aos detalhes sobre proces-
sos de outros (com ps aux) ou acesso a detalhes de processos de outros usurios existentes
nos subdiretrios numricos (equivalentes a PID) em /proc. Abaixo algumas caractersticas
do patch restricted proc fs:
pequeno, rpido e faz poucas modificaes no fonte do kernel.
Seu mtodo de funcionamento baseado nas restries de dono/grupo (nativas de am-
biente Unix).
Restringe a visualizao de processos s dos usurios. Adicionalmente ser especificada
uma GID para o diretrio /proc, qualquer usurio que pertena ao grupo especificado
poder visualizar todos os processos e entrar em qualquer diretrio do kernel (sem re-
stries, como se no tivesse o patch).
Muito estvel e confivel.
Este patch deve ser baixado de http://noc.res.cmu.edu/proc, existem verses para os
kernels da srie 2.2 e 2.4, baixe e aplique o patch, na configurao do kernel ative a opo
Restricted Proc fs support. Compile e instale seu kernel.
No arquivo /etc/fstab inclua um grupo para a montagem do sistema de arquivos /proc
(vamos usar o grupo adm com a GID 4):
Aps reiniciar o sistema, execute o comando ls -lad /proc note que o grupo do diretrio
/proc ser modificado para adm. Agora entre como um usurio e execute um ps aux, so-
mente seus processos sero listados. Para autorizar um usurio especfico ver todos os pro-
cessos (ter acesso novamente ao diretrio /proc), inclua este no grupo que usou no arquivo
/etc/fstab:
Captulo 19. Restries de acesso, recursos e servios 392
Aps efetuar o usurio j estar pertencendo ao grupo adm (confira digitando groups), e
poder ver novamente os processos de todos os usurios com o comando ps aux.
OBS1: Incluir um usurio no grupo adm PERIGOSO, porque este usurio poder ter acesso
a arquivo/diretrios que pertenam a este grupo, como os arquivos/diretrios em /var/log.
Se esta no sua inteno, crie um grupo independente como restrproc para controlar quem
ter acesso ao diretrio /proc: addgroup restrproc.
OBS2: Se a opo gid no for especificada para a montagem de /proc no /etc/fstab,
o grupo root ser usado como padro. NUNCA adicione usurios ao grupo root, use o
mtodo da observao acima para permitir outros usurios ver todos os processos em exe-
cuo.
OBS3 Caso o servidor identd esteja sendo usado na mquina servidora, ser necessrio roda-
lo com a mesma GID do diretrio /proc para que continue funcionando. Se ele executado
como daemon, adicione a opo -g GRUPO no script que inicia o servio em /etc/init.d
e reinicie o daemon. Caso ele seja iniciado via inetd, faa a seguinte modificao no arquivo
/etc/inetd.conf (assumindo o uso do oidentd):
Veja Servidor ident on page 241 para detalhes sobre este servio.
tio.
7 Agora resta ativar o suporte as quotas de disco em todas as parties (-a) com recurso de
quota especificado (no /etc/mtab):
quotaon -augv
As opes possuem o mesmo significado do comando quotacheck. O utilitrio
quotaoff serve para desativar quotas de usurios e usa as mesmas opes do quotaon.
Estes trs utilitrios somente podem ser usados pelo usurio root. As opes de quota
podem ser especificadas independente para cada sistema de arquivos:
# Ativa o suporte a quota em /pub (somente grupos de usurios no moment
quotaon -gv /pub
O programa edquota usado pelo root para editar as quotas de usurios/grupos. Por
padro, todos os usurios/grupos do sistema no possuem quotas. Sua sintaxe a seguinte
edquota [opes] [usurio/grupo]
As opes podem ser:
-t Permite modificar o valor de tolerncia dos limites que ultrapassam soft at que sejam blo-
queados. Durante o tempo de tolerncia, sero enviados somente avisos sobre a quota
ultrapassada sem bloquear totalmente a gravao de arquivos (at que o limite hard seja
atingido ou o tempo de tolerncia seja ultrapassado).
Quando a quota soft do usurio/grupo estourada, a mensagem warning: user disk quota
excedeed ser exibida. Quando a quota hard ultrapassada, a gravao atual interrompida
e a mensagem write failed, user disk limit reatched mostrada ao usurio. Nenhuma nova
gravao que ultrapasse a quota hard permitida Por exemplo, para modificar a quota do
usurio gleydson: edquota gleydson
O editor de textos usado poder ser modificado atravs da varivel $EDITOR. Abaixo a expli-
cao destes campos:
Filesystem - Sistema de arquivos que ter a quota do usurio/grupo editada. As re-
stries se aplicam individualmente de acordo com o sistema de arquivos.
blocks - Nmero mximo de blocos (especificado em Kbytes) que o usurio possui
atualmente. O usurio gleydson est usando atualmente 504944 Kbytes.
soft - Restrio mnima de espao em disco usado. Atualmente 500100 Kb.
hard - Limite mximo aceitvel de uso em disco para o usurio/grupo sendo ed-
itado. 600000 Kb atualmente. O sistema de quotas nunca deixar este limite ser
ultrapassado.
inodes - Nmero mximo de arquivos que o usurio possui atualmente na partio
especificada. O usurio gleydson possui atualmente 10868 arquivos na partio /pub.
soft - Restrio mnima de nmero de arquivos que o usurio/grupo possui no
disco. Atualmente em 15.000.
hard - Restrio mxima de nmero de arquivos que o usurio/grupo possui no
disco. Atualmente em 20.000.
Para desativar as restries coloque 0 no campo soft ou hard. Quando o limite soft atingido,
o usurio alertado por ter ultrapassado sua quota com a mensagem warning: user quota ex-
cedeed (quota do usurio excedida). O programa setquota uma programa no-interativo
para edio de quotas para ser usado diretamente na linha de comando ou em shell scripts.
Aps ultrapassar o limite soft, comea a contagem do tempo para que este passe a valer como
limite hard (o mximo aceitvel e que nunca poder ser ultrapassado). O comando edquota
-t serve para modificar estes valores na partio especificada:
Editar manualmente a quota de cada usurio uma tarefa trabalhosa quando se est instalando
quotas e possui muitos usurios, existe uma maneira mais fcil de fazer isso usando o prprio
edquota e um usurio com a quota j definida. Por exemplo, instalamos quota em nosso
sistema e queremos que todos os 300 usurios tenham a quota de usurio de 10MB e de grupo
de 15MB:
1 Criamos um usurio com esta quota usando o edquota (como descrito em Edi-
tando quotas de usurios/grupos on page 394). Como exemplo usaremos o usurio
teste_user. Use o comando quota teste_user para verificar se as quotas para este
usurio est correta.
2 Criamos um script que modifique a quota padro de todos os usurios do sistema de
uma s vez:
Captulo 19. Restries de acesso, recursos e servios 397
#!/bin/sh
cd /home
for USUARIO in *
do
edquota -u ${USUARIO} -p teste_user
done
Pronto, verifique a quota de todos os usurios com o comando repquota -a.
quota
quota -u usuario
quota -g users
Por motivos de segurana, voc no poder visualizar as quotas de outros usurios e grupos
que no pertence (exceto para o usurio root).
repquota -aug
Avisos sobre quota ultrapassada podem ser enviadas automaticamente a todos os usurios
pelo utilitrio warnquota. Ele poder ser executado periodicamente atravs do cron
(por padro isto feito diariamente na distribuio Debian pelo script /etc/cron.daily
/quota). Dados adicionais sobre o envio das mensagens devem ser especificados no arquivo
/etc/warnquota.conf seu formato o seguinte:
O e-mail enviado aos usurios (e usurios que pertencem a grupos com a quota excedida)
com o seguinte formato:
From: root@localhost
To: gleydson@debian.gms.com.br
Cc: root@localhost
Reply-To: root@localhost
Subject: Quota Excedida
Date: Sat, 22 Sep 2001 14:27:38 -0400
Hi,
We hope that you will cleanup before your grace period expires.
Basically, this means that the system thinks you are using more disk space
on the above partition(s) than you are allowed. If you do not delete files
and get below your quota before the grace period expires, the system will
prevent you from creating new files.
As restries descritas aqui so teis para diminuir as chances de um ataque por acesso fsico
ser realizado com sucesso no sistema que desejamos proteger.
Ter um sistema totalmente seguro praticamente impossvel, mas existem diversas maneiras
de se dificultar as coisas.
Algumas restries podem ser configuradas na para diminuir as chances de se obter acesso
root (usando mtodos conhecidos de recuperao via disquete/CD inicializvel) ou simples-
mente aumentar nossa confiana no sistema:
Coloque uma senha para entrada no Setup da mquina, compartilhe esta senha somente
com as pessoas que tem poder de root (ou seja, pessoal de confiana que administra a
mquina).
Mude a seqencia de partida para somente sua unidade de disco rgido que contm o
sistema operacional. As BIOS trazem convenes de DOS para especificar o mtodo de
partida, ento Only C quer dizer somente o primeiro disco rgido, SCSI tentar disposi-
tivos SCSI primeiro, etc. Isso pode variar de acordo com o modelo de sua BIOS.
Com os dois tens acima qualquer um ficar impedido de inicializar o sistema a partir de um
disco de recuperao ou entrar no Setup para modificar a ordem de procura do sistema opera-
cional para dar a partida via disquetes.
Como no seguro confiar nas restries de senha da BIOS (qualquer um com conhecimentos
de hardware e acesso fsico a mquina pode abrir o gabinete e dar um curto na bateria que
mantm os dados na CMOS ou aterrar o pino de sinal da CMOS), a retirada da unidade de
disquetes recomendada, isso dificultar bastante as coisas.
Evite a utilizao de placas de rede com recursos de boot via EPROM no servidor, um servidor
dhcp/bootp/tftp poder ser configurado sem problemas por um cracker na rede (caso a BIOS
esteja com a ordem inadequada de procura de discos) e o ataque se dar com mais sofisticao
e rapidez.
Captulo 19. Restries de acesso, recursos e servios 402
A opo passwd=senha e restricted podero ser usadas na seo da imagem que desejamos pro-
teger. Respectivamente pedem uma senha para a inicializao do sistema e caso argumentos
como root=single sejam usados para conseguir acesso root sem fornecer senha.
E deixe somente as permisses de acesso ao usurio root (caso contrrio sua senha poder
ser vista por qualquer usurio) e modifique os atributos deste arquivo para imutvel para que
nem mesmo o root possa modifica-lo: chattr +i /etc/lilo.conf.
O disco rgido do servidor poder se retirado como alternativa para se ter acesso aos dados
armazenados. Isto poder ser dificultado com o uso de lacres de disco ou outras maneiras de
dificultar mais esta tarefa (mais parafusos, armazenamento em partes de difcil manipulao
do HD, etc) qualquer coisa que possa lhe fazer ganhar tempo e despertar suspeitas para evitar
o sucesso desta alternativa (ousada).
Dados importantes ou confidenciais podero ser armazenados em um sistema de arquivos
criptografados e serem montados somente pelos administradores que possuem acesso fsico
ao sistema. O algoritmo Serpent muito forte na proteo de dados alm de possuir um timo
desempenho. Patches de criptografia podero ser aplicados no kernel para ativao deste re-
curso (veja Sistemas de arquivos criptogrfico on page 406) para detalhes.
Sensores podem ser ligados na carcaa do HD como forma de disparar um pequeno alarme
embutido no gabinete do servidor, se voc gosta de eletrnica poder montar um destes facil-
mente para chamar a ateno alimentado por fonte/baterias em um circuito de emergncia, e
poder acomodar sua caixa em uma segunda carcaa de fonte apenas para desviar suspeitas.
Um circuito interno de cmeras tambm uma boa alternativa para monitorar a movimen-
tao.
Esquemas de segurana dependendo do porte da organizao e dos dados que se desejam
proteger devero ser elaborados e postos em prtica. Todos os mtodos imaginveis devero
ser considerados de acordo com as possibilidades do ambiente.
403
Captulo 20
Este captulo explica como dados transmitidos em uma rede pode ser capturados, isto ajudar
a entender a vulnerabilidade de servios comuns que no utilizam criptografia para a transmis-
so de dados e alternativas/programas equivalentes que fazem transmisso de dados usando
mtodos criptogrficos para deixar a mensagem somente legvel para origem e destino.
20.1 Introduo
Quando enviamos um trfego de nossa mquina para outra (e-mails, mensagens de ICQ, nave-
gao, ftp, etc) os dados passam por vrias mquinas at atingir o seu destino (isto se chama
roteamento). Se algum cracker instalou algum capturador de pacotes (sniffer) em alguma das
mquinas de nossa rota os dados podero facilmente visualizados.
Crackers normalmente configuram estes programas a procura de campos como passwd e
outras expresses que sejam teis para acesso ao seu sistema ou espionagem. Quem gosta
de ter sua privacidade violada? A internet definitivamente uma rede insegura e nem todos
os administradores de servidores so responsveis o suficiente para fazer uma configurao
restrita para evitar acesso de pessoas mal intencionadas.
Este captulo mostra (na prtica) como um sniffer funciona para captura de pacotes, isto aju-
dar a entender como servios que enviam seus dados em forma texto plano so vulnerveis a
isto e alternativas para transmisso segura de dados. Este captulo tem a inteno de mostrar
alternativas seguras de proteo dos dados que trafegam em sua rede e a segurana de suas
instalaes.
20.2 Sniffer
obteno de detalhes teis para soluo de problemas em rede (quando usado com boas in-
tenes pelo administrador do sistema) ou para ataques ao sistema (quando usado pelo cracker
para obter nomes/senhas e outros detalhes teis para espionagem).
Os sniffers mais conhecidos para sistemas Linux so tcpdump, ethereal. Este ltimo ap-
resenta uma interface grfica GTK para fcil operao em mquinas que executam o servidor
X. Para explicar o funcionamento de um sniffer, vou assumir o ethereal instalado (ele no
requer modificaes no sistema alm de ser fcil de executar e fazer pesquisa de expresses
especficas). Instale o ethereal com o comando apt-get install ethereal.
Agora vamos a prtica para entender como o sniffer funciona e a importncia da criptografia
de dados (s assim mesmo, no da para entender falando muita teoria :-):
1 Conecte-se a Internet
2 Execute o ethereal como usurio root.
3 Pressione CTRL+K para abrir a tela de captura de pacotes. Em Interface selecione sua
interface de internet. Nesta tela clique no boto FILE e coloque um nome de arquivo
que a captura ser gravada. Opcionalmente marque a opo Update list of packets in
real time para monitorar a passagem de pacotes em tempo real.
4 Clique em OK. A captura de pacotes ser iniciada
5 Conecte-se a um site ftp qualquer (digamos ftp.debian.org.br). Entre com o usurio
anonymous e senha minhasenha@segura.com.br
6 Finalize a captura de pacotes clicando no boto STOP
Agora v em File/Open e abra o arquivo capturado. Ele est no formato usado pelo sniffer
tcpdump como padro. Procure no campo INFO a linha Request: USER anonymous, logo
abaixo voc ver a senha digitada pelo usurio. Entendeu agora a importncia da criptografia
na transferncia segura de dados? no s o nome/senha pode ser capturado mas toda a sees
feitas pelo usurio. Scanners como o tcpdump e ethereal so flexivelmente configurveis
para procurar por dados especficos nas conexes e salva-los para posterior recuperao.
Uma caracterstica comum de sniffers mudar o modo de operao das interfaces monitoradas
para o Modo Promscuo com o objetivo de analisar todo o trfego que passa por aquele
segmento de rede (mesmo no sendo destinados para aquela mquina).
A entrada/sada de interfaces no modo promscuo monitorada nos logs do sistema:
O logcheck monitora estas atividades e classificam esta mensagem como prioridade Vio-
lao (dependendo da configurao dos seus filtros em /etc/logcheck. Veja logcheck on
page 81 para detalhes sobre este programa.
OBS: A utilizao de switches dificulta a captura de pacotes em redes distribudas porque
somente os dados destinados a mquina onde o sniffer est instalado podero ser capturados.
Captulo 20. Introduo ao uso de criptografia para transmisso/armazenamento de dados405
20.3.1 http
A alternativa mais segura a utilizao do protocolo IMAP com suporte a ssl. Nem todos os
clientes de e-mail suportam este protocolo.
Ao invs do ftp, use o scp ou o sftp para transferncia segura de arquivos. Veja scp on
page 257 e sftp on page 258. Uma outra alternativa a configurao de uma VPN entre redes
para garantir no s a transferncia de arquivos, mas uma seo em cima de um tunel seguro
entre duas pontas.
Ao invs do uso do rlogin, telnet e rsh utilize o ssh (veja ssh on page 255) ou o telnet
com suporte a ssl (veja Instalao on page 248).
O programa SILC (Secure Internet Live Conference) realiza a criptografia de dados durante o
bate papo entre diversos usurios conectados via rede.
O protocolo ICQ trabalha de forma plana para transmisso de suas mensagens, inclusive as
senhas. Clientes anteriores ainda usavam o UDP (at a verso 7) para envio de mensagens,
piorando um pouco mais a situao e deixando o cliente mais vulnervel a falsificaes de
pacotes. Outro ponto fraco que se alguma coisa acontecer com os pacotes UDP, eles sero
simplesmente descartados perdendo a mensagem.
Ao invs do ICQ, voc poder usar algum cliente do protocolo Jabber (como o gaim, gaber
ou gossip) ou o LICQ mais atual com suporte a ssl compilado. O problema do LICQ com ssh,
que as duas pontas devero ter este suporte compilado e funcionando.
Esta uma forma excelente para armazenamento seguro de seus dados, pois estaro crip-
tografados e sero somente acessados aps fornecer uma senha que s voc conhece. O sistema
usado a montagem de um arquivo comum como um sistema de arquivos via loopback voc
pode escolher um nome de arquivo discreto para dificultar sua localizao (use a imaginao)
e poder ser armazenado at mesmo em parties no-ext2. Siga estes passos para criar seu
sistema de arquivos criptografado (baseado no Loopback-Encripted-Filesystem):
Captulo 20. Introduo ao uso de criptografia para transmisso/armazenamento de dados407
Monte o sistema de arquivos Crie um diretrio que ser usado para montagem do seu sis-
tema de arquivos, se preferir monta-lo dentro de seu diretrio pessoal para armazenar
seus arquivos, crie um diretrio com as permisses 0700.
mount /pub/swap-fs /pub/criptofs -t ext2 -o loop
Agora poder gravar seus arquivos dentro deste diretrio normalmente como qualquer
outro. O comando df -hT listar a partio loop como uma partio do tipo ext2 co-
mum.
Desmontando/Protegendo os dados Aps usar o sistema de arquivos criptogrfico,
desmonte-o e desative o dispositivo loopback:
umount /pub/criptofs
losetup -d /dev/loop0
Ser pedida a senha que escolheu e seu sistema de arquivos ser montado em /pub
/swap-fs.
Com este sistema, seus dados estaro protegidos mesmo do usurio root.
O gpg (GNU pgp, verso livre da ferramenta pgp) permite encriptar dados, assim somente
o destinatrio ter acesso aos dados, adicionalmente poder verificar se a origem dos da-
dos confivel (atravs da assinatura de arquivos). O sistema PGP se baseia no con-
ceito de chave pblica e privada: Sua chave pblica distribuda para as pessoas que de-
seja trocar dados/mensagens e a chave privada fica em sua mquina (ela no pode ser dis-
tribuda). As chaves pblicas e privadas so armazenadas nos arquivos pubring.gpg e
secring.gpg respectivamente, dentro do subdiretrio ~/.gnupg. Veja Criando um par de
chaves pblica/privada on the next page para criar este par de chaves.
Os dados que recebe de outra pessoa so criptografados usando sua chave pblica e somente
voc (de posse da chave privada) poder desencriptar os dados. Quando assina um arquivo
usando o pgp, ele faz isto usando sua chave privada, o destinatrio de posse da chave pblica
poder ento confirmar que a origem dos dados confivel.
O gpg vem largamente sendo usado para transmisso segura de dados via internet. Muitos
programas de e-mails como o mutt e sylpheed incluem o suporte a pgp embutido para envio
de mensagens assinadas/encriptadas (MIME no tem uma codificao segura e no garante
que a mensagem vem de quem realmente diz ser). Um servidor de e-mail no Linux config-
urado como as mesmas configuraes/endereos do provedor da vtima pode enganar com
sucesso um usurio passando-se por outro.
Captulo 20. Introduo ao uso de criptografia para transmisso/armazenamento de dados409
Para gerar um par de chaves pessoais use o comando gpg --gen-key. Ele executar os
seguintes passos:
1 Chave criptogrfica - Selecione DSA e ELGamal a no ser que tenha necessidades
especficas.
2 Tamanho da chave - 1024 bits traz uma boa combinao de proteo/velocidade.
3 Validade da chave - 0 a chave no expira. Um nmero positivo tem o valor de dias,
que pode ser seguido das letras w (semanas), m (meses) ou y (anos). Por exemplo, 7m,
2y, 60. Aps a validade, a chave ser considerada invlida.
4 Nome de usurio - Nome para identificar a chave
5 E-mail - E-mail do dono da chave
6 comentrio - Uma descrio sobre a chave do usurio.
7 Confirmao - Tecle O para confirmar os dados ou uma das outras letras para modi-
ficar os dados de sua chave.
8 Digite a FraseSenha - Senha que ir identific-lo(a) como proprietrio da chave pri-
vada. chamada de FraseSenha pois pode conter espaos e no h limite de carac-
teres. Para alter-la posteriormente, siga as instrues em Mudando sua FraseSenha
on page 412.
9 Confirme e aguarde a gerao da chave pblica/privada.
gpg -e arquivo.txt
Ser pedida a identificao de usurio, digite o nome que usou para criar a chave. O arquivo
criado ser encriptado usando a chave pblica do usurio (~/.gnupg/pubring.gpg) e ter a
extenso .gpg adicionada (arquivo.txt.gpg). Alm de criptografado, este arquivo com-
pactado (recomendvel para grande quantidade de textos). A opo -a usada para criar um
arquivo criptografado com sada ASCII 7 bits:
gpg -e -a arquivo.txt
Para criptografar o arquivo para ser enviado a outro usurio, voc dever ter a chave pblica
do usurio cadastrado no seu chaveiro (veja Adicionando chaves pblicas ao seu chaveiro pes-
soal on the next page) e especificar a opo -r seguida do nome/e-mail/ID da chave pblica:
O exemplo acima utiliza a chave pblica de kov para encriptar o arquivo arquivo.txt (so-
mente ele poder decriptar a mensagem usando sua chave privada).
OBS: recomendvel especificar o nome de arquivo sempre como ltimo argumento.
Agora vamos fazer a operao reversa da acima, a opo -d usada para decriptar os dados
usando a chave privada:
Assinar um arquivo garantir que voc a pessoa que realmente enviou aquele arquivo. Use
a opo -s para assinar arquivos usando sua chave privada:
gpg -s arquivo.txt
A FraseSenha ser pedida para assinar os dados usando sua chave privada. Ser gerado
um arquivo arquivo.txt.gpg (assinado e compactado). Adicionalmente a opo clearsign
poder ser usada para fazer uma assinatura em um texto plano, este um recurso muito usado
por programas de e-mails com suporte ao gpg:
Ser criado um arquivo chamado arquivo.txt.asc contendo o arquivo assinado e sem com-
pactao.
Captulo 20. Introduo ao uso de criptografia para transmisso/armazenamento de dados411
A checagem de assinatura consiste em verificar que quem nos enviou o arquivo realmente
quem diz ser e se os dados foram de alguma forma alterados. Voc dever ter a chave pblica
do usurio no seu chaveiro para fazer esta checagem (veja Adicionando chaves pblicas ao
seu chaveiro pessoal on this page). Para verificar os dados assinados acima usamos a opo
verify:
Se a sada for Assinatura Correta, significa que a origem do arquivo segura e que ele no
foi de qualquer forma modificado.
Se a sada for Assinatura INCORRETA significa que ou o usurio que enviou o arquivo no
confere ou o arquivo enviado foi de alguma forma modificado.
Sua chave pblica deve ser distribuda a outros usurios para que possam enviar dados crip-
tografados ou checar a autenticidade de seus arquivos. Para exportar sua chave pblica em
um arquivo que ser distribudo a outras pessoas ou servidores de chaves na Internet, use a
opo export:
Ao invs do nome do usurio, poder ser usado seu e-mail, ID da chave, etc. A opo -a
permite que os dados sejam gerados usando bits ASCII 7.
Use o comando gpg --list-keys para listar as chaves pblica do seu chaveiro. O comando
gpg --list-secret-keys lista suas chaves privadas.
Quando uma chave pblica modificada ou por qualquer outro motivo deseja retira-la do seu
chaveiro pblico, utilize a opo delete-key:
Pode ser especificado o nome de usurio, e-mail IDchave ou qualquer outro detalhe que confira
com a chave pblica do usurio. Ser pedida a confirmao para excluir a chave pblica.
OBS: A chave privada pode ser excluda com a opo delete-secret-key. Utilize-a com o mximo
de ateno para excluir chaves secretas que no utiliza (caso use mais de uma), a excluso
acidental de sua chave secreta significa como perder a chave de um cofre de banco: voc no
poder descriptografar os arquivos enviados a voc e no poder enviar arquivos assinados.
Mesmo assim se isto acontecer acidentalmente, voc poder recuperar o ltimo backup da
chave privada em ~/.gnupg/secring.gpg~.
A assinatura de chaves um meio de criar laos de confiana entre usurios PGP. Assinar uma
chave de algum algo srio, voc deve ter noo do que isto significa e das conseqncias
que isto pode trazer antes de sair assinando chaves de qualquer um.
O prprio teste para desenvolvedor da distribuio Debian requer como primeiro passo a
identificao do candidato, caso sua chave pgp seja assinada por algum desenvolvedor desta
distribuio, imediatamente o teste de identificao completado. A partir disso voc deve ter
uma noo bsica do que isto significa. Para assinar uma chave siga os seguintes passos:
1 Importe a chave pblica do usurio (veja Adicionando chaves pblicas ao seu chaveiro
pessoal on the previous page).
Captulo 20. Introduo ao uso de criptografia para transmisso/armazenamento de dados413
Execute o comando gpg --list-sigs para listas todas as assinaturas existentes no seu
chaveiro. Opcionalmente pode ser especificado um parmetro para fazer referncia a assi-
natura de um usurio:gpg --list-sigs usuario.
O comando gpg --check-sigs adicionalmente faz a checagem de assinaturas.
Este texto foi divulgado por uma pessoa que pediu para permanecer annima na lista
<debian-user-portuguese@lists.debian.org> explicando os procedimentos de se-
gurana para a troca de chaves pblicas individuais e em grupo de usurios. Ele um pouco
longo mas a pessoa especializada no assunto, e seu foco a segurana na troca de chaves
e o que isto significa. Aps consulta ao autor do texto, o texto foi reproduzido na ntegra,
mantendo os padres de formatao da mensagem.
1. Assinaturas digitais
2. Chaves digitais e a teia de confiana
3. Trocando assinaturas de chaves digitais com um grupo de pessoas
1. Assinaturas digitais
Existe uma relao direta entre uma assinatura e informao que ela assina.
Se uma das duas for modificada, elas passam a no mais "combinar" uma com a
a outra. Um programa de computador pode detectar isso, e avisar que a
assinatura "invlida".
Se todo mundo fizer isso direitinho (ou seja, no sair assinando a chave de
qualquer um, s porque a outra pessoa pediu por e-mail, ou numa sala de
chat), cria-se a chamada teia de confiana.
Numa teia de confiana, voc confia na palavra de honra dos outros para
tentar verificar se uma chave digital legtima, ou se uma "pega-bobo".
Suponha que Marcelo tenha assinado a chave de Cludia, e que Roberto, que
conhece Marcelo pessoalmente e assinou a chave de Marcelo, queira falar com
Cludia.
Roberto sabe que Marcelo leu o manual do programa de criptografia, e que ele
no irresponsvel. Assim, ele pode confiar na palavra de honra de Marcelo
que aquela chave digital da Cludia da Cludia mesmo, e usar a chave pra
combinar um encontro com Cludia.
Por outro lado, Roberto no conhece Cludia (ainda), e no sabe que tipo de
pessoa ela . Assim, rapaz prevenido, ele no confia que Cludia seja uma
pessoa responsvel que verifica direitinho antes de assinar chaves.
O uso da assinatura feita por algum cuja chave voc assinou, para validar
a chave digital de um terceiro, um exemplo de uma pequena teia de
confiana.
Lembre-se: ao assinar uma chave digital, voc est empenhando sua palavra de
honra que toda a informao que voc assinou naquela chave verdadeira at
onde voc pode verificar, _e_ que voc tentou verificar direitinho.
Sim, srio desse jeito mesmo. Voc pode ficar muito "queimado" em certos
crculos se voc assinar uma chave falsa, pensando que verdadeira: a sua
assinatura mal-verificada pode vir a prejudicar outros que confiaram em
voc.
Bom, j que o assunto srio, como juntar um grupo de pessoas numa sala, e
trocar assinaturas de chaves entre si? Particularmente se so pessoas que
voc nunca viu antes? Siga o protocolo abaixo, passo a passo, e sem pular ou
violar nenhum dos passos.
3 - Pronto. Podem ir embora, porque o resto dos passos deve ser feito com
calma, em casa. Lembre-se que voc no vai estar efetuando nenhum
julgamento moral a respeito de quem voc assinar a chave. Voc s ir
afirmar que a chave de sicrano realmente aquela, e mais nada.
4 - Para cada uma das chaves que voc marcou no papel que "posso assinar":
Captulo 21
Apndice
O guia Foca foi criado em 12 de Novembro de 1999. A verso que est lendo tem o obje-
tivo de servir como referncia a usurios Avanados que j dominam grande parte do sis-
tema operacional e procuram aprender mais sobre os seus detalhes e configuraes especi-
ais ou com referncia de consulta rpida. Uma verso que abrange um diferente nvel de
aprendizado ou mais completa pode ser baixada de Pgina Oficial do guia Foca GNU/Linux
(http://www.guiafoca.org).
A verso que esta lendo agora foi gerada com as seguintes opes:
Descrio detalhada de comandos
Opes usadas em comandos e programas
Observaes sobre comandos e configuraes
Exemplos para a melhor compreenso do assunto discutido.
e contm o(s) nvel(is) de aprendizado (Iniciante, Intermedirio e Avanado):
Avanado
O Foca GNU/Linux atualizado frequentemente, por este motivo recomendo que assine um
dos canais de comunicao para ser informado de novas verses:
Assinar o Twitter do focalinux <@focalinux>
Assinar o RSS presente na pgina do guia e atualizaes.
A ficha do aviso de atualizaes na pgina web em Pgina Oficial do guia Foca
GNU/Linux (http://www.guiafoca.org) no fim da pgina principal. Aps
preencher a ficha do aviso de atualizaes, eu te enviarei um e-mail sobre o lanamento
de novas verses do guia e o que foi modificado, desta forma voc poder decidir em
copia-la caso a nova verso contm modificaes que considera importantes.
Verses diferentes deste guia podem ser geradas a partir do cdigo fonte SGML ou obtidas
atravs da home page principal (para detalhes veja Onde encontrar a verso mais nova do
guia? on page 421).
Captulo 21. Apndice 420
Gleydson Mazioli da Silva Capixaba, nascido em Vila Velha. Amante de eletrnica desde
criana, foi atraido para a informtica atravs da curiosidade em funcionamento e reparo de
hardware.
Se dedica ao sistema Linux desde 1997. determinado na realizao de testes de ferramentas e
sistemas avaliando pontos fortes e fracos de cada uma. Logo que iniciou em Linux passou a
estudar exaustivamente aspectos tcnicos de distribuies e rede em Linux/BSD.
Entre coisas que gosta de fazer/implementar em Linux: possibilidade de pesquisa e atual-
izao de conhecimento constante, automatizao e tomada inteligente de decises, nveis de
segurana da informao (tanto fsico e lgico), firewalls, virtualizao, redes virtuais, inte-
grao de sistemas, forense computacional, documentao de processos, desenvolvimento de
ferramentas GPL para a comunidade, depurao, desenvolvimento de documentaes, etc.
Um dos desenvolvedores da distribuio Liberdade, CAETECT, Debian-BR e desenvolvedor ofi-
cial da distribuio Debian. Atuou como tradutor do LDP-BR, traduzindo vrios HOW-TOs im-
portantes para a comunidade Linux Brasileira. um dos administradores do projeto CIPSGA,
cuidando de uma infinidade de servios que o projeto oferece a comunidade que deseja estru-
tura para hospedar, fortalecer e manter projetos em software livre.
Trabalhou para algumas empresas do Esprito Santo, no Governo Federal e de estados na im-
plantao de sistemas em software livre. Atualmente atua como gerente de tecnologia da Spirit
Linux, uma empresa focada na inovao, avaliao e integrao de ferramentas de cdigo
aberto junto a seus clientes.
Concorda com certificaes, mas destaca que o mais importante aproveitar a oportunidade
dada pela certificao para estudo e auto avaliao de seus pontos fracos e assim procurar
melhora-los. Possui certificao LPI nvel 3 e um ISO9001 internacional em Administrao
Linux, como primeiro no ranking Brasileiro.
E-mail: E-mail: <gleydson@guiafoca.org>, Twitter: <@gleydsonmazioli>.
As sees do nvel avanado foram construdas com base em testes e usando metodologia
prpria com o objetivo de oferecer uma documentao objetiva e clara ao administrador
de rede, auxiliando-o na tomada de decises para soluo de problemas. Partes extraidas
de outras documentaes no nvel Avanado tero as referncias explicitamente citadas
em seus respectivos captulos.
Manual de Instalao da Debian GNU/Linux - Os captulos contendo materiais extrados
do manual de instalao da Debian so muito teis e explicativos, seria desnecessrio
reescrever um material como este. O texto claro e didaticamente organizado, o docu-
mento aborda detalhes tcnicos teis sobre hardwares em geral e o Linux ausentes nos
manuais de outras distribuies Linux.
Novas verses deste guia, avisos de lanamento, outros nveis de aprendizado (Iniciante, In-
termedirio e Avanado), verses para outras distribuies Linux podem ser encontradas em:
Pgina Oficial do guia Foca GNU/Linux (http://www.guiafoca.org).
Se quiser receber notificaes de novas verses, use uma das formas a seguir:
por E-Mail: envie uma mensagem para <gleydson@guiafoca.org> pedindo para ser
includo na lista de atualizaes do guia ou preencha o formulrio encontrado no final
da Home Page do guia.
Twitter: Assine o Twitter do guia Foca: @focalinux
RSS: Assine o RSS na pgina oficial do guia (citado acima) para receber atualizaes e
novidades.
Todas as marcas registradas citadas neste guia so propriedades de seus respectivos autores.
Entre outros tens que venho estudando para verificar se encaixam no perfil do guia.
Esta uma futura implementao que venho estudando para acompanhar o crescimento do
guia. Sugestes so bem vindas e podem ser enviadas para <gleydson@guiafoca.org>.
Captulo 21. Apndice 423
Chaves PGP so usadas para criptografar arquivos, e-mails ou qualquer outra coisa que
desejamos que somente uma pessoa tenha acesso. O PGP segue o padro de chave
pblica/privada; a chave pblica distribuda a todos e a chave privada permanece na posse
do criador para que ele seja o nico a ter acesso aos dados criptografados aps digitar a frase
de acesso correta.
Minha chave PGP segue abaixo, ela tambm pode ser encontrada em http://pgp.ai.mit.
edu. Se voc deseja saber mais sobre o PGP, recomendo um excelente documento encontrado
na seo Apostilas em http://www.cipsga.org.br/
mQGiBDl7WYgRBACsQNtIozvf8XId+xEpF2D1x7nqgFdJyn1QA2VzXg0/OZ9DewXj
qr7ChEIoyyzAmxBSubE/jdtkAb9+2LsE9+OXgzJvBc4luYpv+HG2IXlMPujI9drO
ubLlK6xqPiakBgqBTS74rp/ZEEAGQsr0sug7b8nsXHMk+spyGkjsU8pPWwCgltai
4vfmBDMZMqBYvUoksVxbaKcD/ApAMghgE53KAAKFtwXI0o7K1DJmdZBufCvGDbEB
Y3MVS4BI+aXxoP5zQpEmQ5+lYOZ8RjPL9pNUJa9nOQtjf7Kiw/41BPDtlZXCeRR5
OcQTit0lYRCLGam7FZ22uliwh0h/3lpf4olMff3qeLqv1DECbo8Qsdn6yxynLihE
OA9kA/9K1sqiIl/+gXM3/Sjz8EcrwQNklV3MoaETbDmukbXcOEUjdqfFr1xARM5W
8SKoVrWO5y1oa1e9XcQuK6g8c7KeJsK/GEWYiRwX2X2AqdBC2ZzVfJSmgpguZJHn
ltMdYZhPwZaCsNPdQSlem3UrGupL0pbpT7PqkvyAHBH2itB9X7RKR2xleWRzb24g
TWF6aW9saSBkYSBTaWx2YSAoQ2hhdmUgUEdQIFBlc3NvYWwpIDxnbGV5ZHNvbkBl
c2NlbHNhbmV0LmNvbS5icj6IVgQTEQIAFgUCOXtZiAQLCgQDAxUDAgMWAgECF4AA
CgkQpWvD35hbooFdwgCfQijPTW5VH+Cep1HIBvyuw9uMg7wAoI/RYW0tkjjnhrgH
8+Zqx6AgGlQ/iEYEEBECAAYFAjnlrPAACgkQoUSye+uc2tWZPgCfVgR4lbd8XPBm
bjPupLzB3EYAPI8AoJomkfsgz+NuUZy1mD6pI1Ptc/fDiEYEEBECAAYFAjm4FfUA
CgkQco65AkzGCoF34gCgsVcH4b3s6kfCtjD7iMMhkubnDnUAoL2UiorB3Z/m3f9A
RZiRMhQUclMRiEYEEBECAAYFAjm4ITAACgkQt1anjIgqbEupXgCg1/NjvT562Hgt
/ft5JETOf3yOFywAn1SmK3unyhMU5GU9d49MNM3fNgBtiEYEEBECAAYFAjnFWrYA
CgkQORwuc54x+1t8VQCeMZTCla98rrI60EnlkAvb9AaScm4AnA4V795vcVlr3ix9
f6fcl5YGamKciEYEEBECAAYFAjvSF6sACgkQUZATEoypqPVQ7wCbBTRiSGGMzMTd
KJotfRKf5aoUAr0AoIAX0oE5XEEFm7Ea0IQqG91T9TvXtDtHbGV5ZHNvbiBNYXpp
b2xpIGRhIFNpbHZhIChEZXZlbG9wZXIpIDxnbGV5ZHNvbkBkZWJpYW4ub3JnPohX
BBMRAgAXBQI7BR7fBQsHCgMEAxUDAgMWAgECF4AACgkQpWvD35hbooESRACcCliY
yxR02KEBYs8cxKav9L0wlzwAn2Z9DWAbqi9Mv4fqPqZ7mViSMRbeiEYEEBECAAYF
AjsauX0ACgkQt1anjIgqbEvBEACffJxYfK22YPQ8ZkcjIc85BCiPLuUAnRq1EE9i
ukdUHPUo0vzHBeiN355miEYEEBECAAYFAjxEY28ACgkQGERS+iaKCE2fgwCeNGNV
Mpa1EWgXF+Hj15gidVjaVCAAn187X6eATJAVzspveNSf/Ny1iuFnuQENBDl7WasQ
BACxhBiSFOGa8tv7MOn0XVa6WCViBuQs9QJx2ZnMrx/KssRHMsNXnps+i+zVENqr
1Lz5zPpP7eWgrUy6B7/V9R4LV8nwHC1lZrR/1xyJ6G5j9RLSbYInZCLIAFUMlAar
iTThMhvXM+Pf7SXPj+ivrP9EYPSLxqTs1K/dWAbrDK/QiwADBQP9Hgc3EOw+7luB
/bXWssQp70bF9yvZLCGOgIE/rZIbOXumXkPlV7FTDgv+h47Bgcj2KDPEM98LUyxG
Captulo 21. Apndice 424
GcJAmrC9gWH7mYEUFNn1bGD+qHRwJ7+xj45NXBJDOBbHzTDS8QhacCRGW1CvRVgP
8ycPDOv/hmGfAJEzqzUkSO1uBcPmmXSIRgQYEQIABgUCOXtZqwAKCRCla8PfmFui
gQHnAJ4kDKHKvG9s9OjGV6RvszTDGE51igCcCZn0rO/Si0ek97bTCIusQzJF/pA=
=bvnT
-----END PGP PUBLIC KEY BLOCK-----