Professional Documents
Culture Documents
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 verso 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 receber avisos de novos lanamentos deste guia preenchendo um formulrio na pgina Web.
Nota de Copyright
Copyright 1999-2010 - Gleydson Mazioli da Silva.
Permission is granted to copy, distribute and/or modify this document under the terms of the
GNU Free Documentation License, Version 1.2 published by the Free Software Foundation; A
copy of the license is included in the section entitled GNU Free Documentation License.
Sumrio
1
Introduo
1.1
1.2
1.3
O Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.1
Explicaes Bsicas
2.1
Monitorando os logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.1
2.2
3
Curingas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Hardware
13
3.1
Placa de expanso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2
Nomes de dispositivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3
Configurao de Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.4
3.5
3.3.1
3.3.2
3.3.3
Jumpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.4.2
Dip-Switches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.4.3
3.4.4
Plug-and-Play . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
SUMRIO
ii
3.6
Conflitos de hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.7
Barramento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.8
3.9
Rede
41
4.1
4.2
Protocolo de Rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.3
Endereo IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.3.1
Classes de Rede IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.3.2
SUMRIO
4.4
4.5
4.3.3
4.3.4
Interface de rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.4.1
A interface loopback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.4.2
Roteamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.5.1
4.6
4.7
4.8
4.9
iii
O que um nome? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.6.2
4.6.3
Servios de Rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.7.1
4.7.2
/etc/ftpusers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.8.2
/etc/securetty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.8.3
4.8.4
Firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
/etc/services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.9.2
/etc/protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
63
5.1
IP Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.2
Bridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.2.1
5.2.2
Configurao da bridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.2.3
SUMRIO
5.3
5.2.4
5.2.5
5.2.6
5.4
75
6.1
6.2
syslogd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6.2.2
klogd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.3
logger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.4
logcheck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.4.2
logrotate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
87
7.1
7.2
Programas de configurao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
7.3
Arquivos de inicializao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
7.4
Nveis de Execuo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
7.4.1
6.5
7
iv
7.5
7.6
7.7
Personalizao do Sistema
93
8.1
Variveis de Ambientes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
8.2
SUMRIO
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
Impresso
99
9.1
Portas de impressora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
9.2
9.3
9.4
9.5
9.6
9.5.2
9.6.2
9.6.3
10 Firewall iptables
109
SUMRIO
vi
SUMRIO
vii
SUMRIO
viii
161
171
SUMRIO
ix
SUMRIO
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
13 Servidor ident
241
SUMRIO
xi
247
251
SUMRIO
xii
269
SUMRIO
xiii
17 CVS
275
SUMRIO
xiv
299
SUMRIO
xv
SUMRIO
xvi
SUMRIO
xvii
375
SUMRIO
xviii
SUMRIO
xix
403
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:
Anlise de logs do sistema GNU/Linux e aplicao para a soluo de problemas (Arquivos e daemons de Log on page 75).
Gerenciamento de contas de usurios, definio de perodo automtico para troca de
senha peridica, polticas de segurana, etc (Gerenciamento de contas e cuidados para a
proteo de senhas on page 161).
Principais tipos de ataques para descoberta de senhas e alguns mtodos de como evitalas (Senhas fceis de adivinhar e escolha de boas senhas on page 164).
Integrar mquinas Windows e Linux em uma mesma rede compartilhando dados entre
si e impresso (SAMBA on page 299).
Sistemas de proteo de senhas do sistema (Melhorando a segurana das senhas armazenadas em seu sistema on page 169).
Criptografia e segurana na transmisso de dados, usando exemplos prticos do uso
de sniffers para entender o porque da uso de criptografia para transmisso segura de
dados (Introduo ao uso de criptografia para transmisso/armazenamento de dados
on page 403).
Uso de servios alternativos criptogrficos (Alternativas seguras a servios sem criptografia on page 405).
Criptografia usando gnupgp (Usando pgp (gpg)para criptografia de arquivos on
page 408).
Captulo 1. Introduo
Captulo 1. Introduo
Uso do sudo para dar privilgio de execuo de programas como root a determinados
usurios (Dando poderes de root para executar determinados programas on page 386).
1.1
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 instalao 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
1.2
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 documentao 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 documentao que acompanha sua distribuio GNU/Linux.
1.3
O Linux
Captulo 1. Introduo
e sendo completamente suportados pelo sistema operacional). Este um ponto forte para
empresas que desejam manter seus micros em funcionamento e pretendem investir em avanos
tecnolgicos com as mquinas que possui.
O Linux desenvolvido por milhares de pessoas espalhadas pelo mundo, cada uma fazendo
sua contribuio ou mantendo alguma parte do kernel gratuitamente. Linus Torvalds ainda
trabalha em seu desenvolvimento e na coordenao dos grupos de trabalho do kernel.
O suporte ao sistema tambm se destaca como sendo o mais eficiente e rpido do que qualquer
programa comercial disponvel no mercado. Existem milhares de consultores e empresas especializadas no suporte e treinamento espalhados ao redor do mundo. Outra opo de suporte
atravs da comunidade Linux; voc pode se inscrever em uma lista de discusso e relatar
sua dvida ou alguma falha, e sua mensagem ser vista por centenas de usurios na Internet
e algum ir te ajudar ou avisar as pessoas responsveis sobre a falha encontrada para devida
correo.
1.3.1
livre e desenvolvido voluntariamente por programadores experientes, hackers, e contribuidores espalhados ao redor do mundo que tem como objetivo a contribuio para
a melhoria e crescimento deste sistema operacional. Muitos deles estavam cansados do
excesso de propaganda (Marketing) e baixa qualidade de sistemas comerciais existentes
Tambm recebe apoio de grandes empresas como IBM, Sun, HP, etc. para seu desenvolvimento
Convivem sem nenhum tipo de conflito com outros sistemas operacionais (com o DOS,
Windows, OS/2) no mesmo computador.
Multitarefa real
Multiusurio
Suporte a nomes extensos de arquivos e diretrios (255 caracteres)
Conectividade com outros tipos de plataformas como Apple, Sun, Macintosh, Sparc, Alpha,
PowerPc, ARM, Unix, Windows, DOS, etc.
Utiliza permisses de acesso a arquivos, diretrios e programas em execuo na memria
RAM.
Proteo entre processos executados na memria RAM
Suporte a mais de 63 terminais virtuais (consoles)
Modularizao - O Linux somente carrega para a memria o que usado durante o
processamento, liberando totalmente a memria assim que o programa/dispositivo
finalizado
Devido a modularizao, os drivers dos perifricos e recursos do sistema podem ser carregados e removidos completamente da memria RAM a qualquer momento. Os drivers
(mdulos) ocupam pouco espao quando carregados na memria RAM (cerca de 6Kb
para a Placa de rede NE 2000, por exemplo)
Suporte nativo a rede e tecnologias avanadas como: balanceamento de carga, ips alias,
failover, vlans, bridge, trunking, OSPF, BGP.
No h a necessidade de se reiniciar o sistema aps a modificar a configurao de qualquer perifrico ou parmetros de rede. Somente necessrio reiniciar o sistema no caso
Captulo 1. Introduo
Captulo 1. Introduo
Captulo 1. Introduo
Captulo 2
Explicaes Bsicas
Este captulo traz explicaes sobre os principais componentes existentes no computador e do
sistema operacional Linux.
2.1
Monitorando os logs
2.1.1
Esta seo tem a inteno de conscientizar o administrador do uso devido de tcnicas para
garantir que dados sensveis sejam apagados de forma um pouco mais segura em seu sistema.
Quando um arquivo apagado, apenas a entrada na tabela de inodes mexida, e ele pode
ainda ser recuperado com o debugfs e um pouco de pacincia e engenharia. O mesmo acontece com as parties, que podem ser recuperadas com facilidade (isto explicado no nvel
Intermedirio do guia). Esta recuperao proporcionada pelas regras de funcionamento do
sistema de arquivos e do esquema de particionamento, ou seja, so permitidas pelo SO.
Vou um pouco mais alm: O disco rgido uma mdia magntica e opera de forma mecnica
para ler/gravar dados. Quando um arquivo apagado, seja por qualquer motivo, ainda
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, cryptoloop, gpg, etc.
OBS3: Caso esteja usando um sistema de arquivos criptografado, estes procedimentos so
quase desnecessrios (dependendo do nvel de segurana e algortmos que voc utiliza).
2.2
Curingas
Curingas (ou referncia global) um recurso usado para 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:
* - Faz referncia a um nome completo/restante de um arquivo/diretrio.
? - Faz referncia a uma letra naquela posio.
[padro] - Faz referncia a uma faixa de caracteres de um arquivo/diretrio. Padro
pode ser:
[a-z][0-9] - Faz referncia a caracteres de a at z seguido de um caracter de 0
at 9.
[a,z][1,0] - Faz a referncia aos caracteres a e z seguido de um caracter 1 ou 0
naquela posio.
11
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, dispositivos for Windows, etc.
3.1
Placa de expanso
um circuito eletrnico encaixado na placa me que tem por objetivo adicionar novas funcionalidades ao computador. Esta placa pode ser uma:
placa de som - para fazer o computador emitir sons, msicas, ligar um joystick, etc.
Placa de vdeo 3D - Para obter imagens mais rpidas para jogos e ambientes de
desktop 3 dimenses
Placa de captura - Para assistir televiso/rdio e gravar a programao de TV em
seu micro.
fax-modem - para enviar/receber fax, conectar-se a internet, acesso remoto, bina, etc.
rede - para permitir a comunicao com outros computadores em uma rede interna
controladora de perifricos - Para ligar discos rgidos, unidades de disquete,
impressora, mouse, joystick, etc.
SCSI - Para ligar unidades de disco rgidos e perifricos de alto desempenho.
Controladora de Scanner - Para ligar um Scanner externo ao micro computador.
O encaixe da placa me que recebe as placas de expanso so chamados de Slots.
Captulo 3. Hardware
3.2
14
Nomes de dispositivos
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 automaticamente por /dev/ttyS1 (equivalente a COM2 no DOS). Daqui para frente basta se referir
a /dev/ttyS1 para fazer alguma coisa com o modem.
Voc tambm pode fazer um link de /dev/ttyS1 para um arquivo chamado /dev/modem
usando: ln -s /dev/ttyS1 /dev/modem, faa a 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.
Linux
ttyS0
ttyS1
ttyS2
ttyS3
lp0
lp1
/dev/hda1
/dev/hda2
/dev/hdb1
Dispos.
DOS
COM1
COM2
COM3
COM4
LPT1
LPT2
C:
D: *
D: *
IRQ
DMA
I/O
4
3
4
3
7
5
14
14
15
3(ECP)
3(ECP)
-
0x3F8
0x2F8
0x3E8
0x2E8
0x378
0x278
0x1F0,0x3F6
0x1F0,0x3F6
0x170,0x376
3.3
Configurao de Hardware
Captulo 3. Hardware
15
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.
3.3.1
Existem dois tipos bsicos de interrupes: as usadas por dispositivos (para a comunicao
com a placa me) e programas (para obter a ateno do processador). As interrupes de software
so mais usadas por programas, incluindo o sistema operacional e interrupes de hardware mais
usado por perifricos. Daqui para frente ser explicado somente detalhes sobre interrupes
de hardware.
Os antigos computadores 8086/8088 (XT) usavam somente 8 interrupes de hardware
operando a 8 bits. Com o surgimento do AT foram includas 8 novas interrupes, operando a
16 bits. Os computadores 286 e superiores tem 16 interrupes de hardware numeradas de 0
a 15. No kernel 2.4 e superiores do Linux, a funo APIC (Advanced Programmable Interruption
Controller) permite gerenciar de forma avanada mais de 15 interrupes no sistema operacional. Estas interrupes oferecem ao dispositivo associado a capacidade de interromper o
que o processador estiver fazendo, pedindo ateno imediata.
As interrupes do sistema podem ser visualizadas no kernel com o comando cat
/proc/interrupts. Abaixo um resumo do uso mais comum das 16 interrupes de hardware:
0
Timer do Sistema
- Fixa
01
Teclado - Fixa
02
03
04
Captulo 3. Hardware
16
05
06
07
08
09
Esta uma ponte para IRQ2 e deve ser a ltima IRQ a ser
utilizada. No entanto pode ser usada por dispositivos.
10
11
12
13
14
15
Dispositivos ISA, VESA, EISA, SCSI no permitem o compartilhamento de uma mesma IRQ,
talvez isto ainda seja possvel caso no haja outras opes disponveis e/ou os dois dispositivos
no acessem a IRQ ao mesmo tempo, mas isto uma soluo precria.
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 interrupo para uma interrupo normal do sistema (normalmente usando alguma interrupo
entre a IRQ 9 e IRQ 12) ou usando APIC (se estiver configurado).
Prioridade das Interrupes
Cada IRQ no sistema tem um nmero que identifica a prioridade que ser atendida pelo processador. 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
Com o surgimento do barramento AT (16 bits), as interrupes passaram a ser identificadas da
seguinte forma:
IRQ 0
PRI 1
1
2
2
3
(9
4
10
5
11
6
12
7
13
8
14
9
15) 3 4 5 6 7 8
10 11 12 13 14 15 16
Note que a prioridade segue em seqncia atravs da ponte da IRQ 2 para IRQ 9. Os dispositivos com prioridade mais baixa so atendidos primeiro, mas uma diferena de desempenho
praticamente imperceptvel de ser notada nos sistemas atuais.
3.3.2
A DMA usada para permitir a transferncia de dados entre dispositivos I/O e a memria
sem precisar do processador para faz-lo. Ele livra esta carga do processador e resulta em uma
rpida transferncia de dados.
O PC padro tem dois controladores de DMA. O primeiro controla os canais 0, 1, 2, 3 e
o segundo os canais 4, 5, 6, 7, assim temos 8 canais. No entanto, o canal 4 perdido
porque usado pelo controlador de acesso direto a memria. Os canais 0-3 so chamados de canais
baixos porque podem somente mover um byte (8 bits) por transferncia enquanto canais altos
movem 2 bytes (16 bits) por transferncia.
Os dados movidos usando a DMA no so movidos atravs do controlador de DMA. Isto oferece uma limitao porque a DMA somente podem mover dados entre os dispositivos (portas
I/O) e a memria. No possvel mover dados entre as portas ou entre a memria.
Existem dois controladores de DMA nos computadores AT e superiores. Ao contrrio do que
acontece com os dois controladores de IRQ, o primeiro controlador ligado ao segundo e no
o segundo ao primeiro. Os canais de DMA altos (5 ao 7) somente podem ser acessados por
dispositivos de 16 bits (aqueles que utilizam a segunda parte do slot AT). Como resultado
temos 8 canais de DMA, de 0 a 7, sendo que a DMA 4 usada como ligao entre eles.
Os canais de DMA em uso no sistema podem ser visualizados com cat /proc/dma. Abaixo
uma listagem de uso mais comum dos canais de DMA.
Captulo 3. Hardware
DMA
0
1
Barram.
8/16 bits
8/16 bits
8/6 bits
4
5
16 bits
16 bits
16 bits
18
Uso
Usada pelo circuito de refresh da memria DRAM
Normalmente usado por placas de som (canal 8 bits),
porta paralela ECP, adaptadoras SCSI, placas de rede ou
controladora de scanner.
Normalmente usado pela controladora de disquetes ou
controladoras de tapes.
Usado pela porta paralela ECP, placa de som,
controladoras de tapes, controladoras SCSI ou
controladora de scanner antiga.
Usada como ponte para a outra controladora de DMA (0-3)
Normalmente usada pela placa de som (canal 16 bits),
placas controladoras SCSI, placas de rede ou
controladora de scanner.
Placa de som (canal 16 bits), controladora de scanner
ou placa de rede.
Placa de som (canal 16 bits), controladora de scanner
ou placa de rede.
Somente dispositivos ISA e derivados dele, como o EISA e VESA, usam os canais de DMA
padro. Os atuais dispositivos de alta taxa de transferncia (normalmente PCI) possuem seu
prprio controlador de DMA embutido, muito mais rpido do que a DMA padro. Este controlador de DMA chamado de Bus Mastering e muito usado nos discos rgidos atuais e pode
atingir taxas de 33,3MB/s (no modo 2) e 66MB/s (no modo 4 - requer um cabo IDE com aterramento para evitar interferncias de rudos externos).
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 estranhas 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. . .
3.3.3
Captulo 3. Hardware
19
Entrada/Sada ou uma faixa de endereos. Por exemplo, uma placa de som padro usa as
portas 0x220, 0x330 e 0x388, respectivamente audio digital, midi e opl3.
As placas de rede normalmente transferem grandes quantidades de dados, assim ocupam uma
faixa de endereos. Uma NE2000, por exemplo, ocupa a faixa de endereos 0x260 a 0x27F
(0x260-0x27F). O tamanho da faixa de endereos varia de acordo com o tipo de dispositivo.
Os endereos de I/O em uso no sistema podem ser visualizados com o comando cat
/proc/ioports.
Endereos das portas de entrada/sada no podem ser compartilhados
3.4
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 atualmente 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:
::|::
Esta disposio facilmente encontrada na seleo de IRQ e I/O em placas de fax-modem.
Na disposio multi-posio, os pinos de encaixe so numerados de 1 a 3 (ou 1 a 4, 1 a 5, etc) e os
pinos podem ou no ser colocados na placa e a posio que so colocados tambm influencia
os valores escolhidos para o funcionamento do dispositivo (a posio 1-2 especificam um valor
enquanto 2-3 especificam outro). A associao entre a posio dos jumpers e a configurao
desejada feita consultando o mapa desenhado no circuito impresso da placa ou o manual de
instrues da placa.
A configurao de jumper atravs de multi-posio normalmente usada em placas me para
definir a freqncia de operao do barramento, a freqncia de multiplicao ou o tipo do processador.
Se no possuir o mapa de configurao de sua placa e/ou o manual de instrues, ser
necessrio fazer um mapeamento manual da placa, mas para isto voc precisar conhecer detalhadamente a configurao de portas I/O, DMA, IRQ usadas na mquina que ser usada
e anotar as diferenas obtidas atravs da modificao da pinagem do dispositivo. Isto no
fcil, mas tcnicos de informtica experientes conhecero as armadilhas encontradas pelo
mapeamento manual de placas e faro o esquema de configurao completo do dispositivo,
Captulo 3. Hardware
20
obtendo um excelente manual de instrues. Nesta hora a experincia conta mais que o uso de
programas de diagnstico.
Outra caracterstica de hardwares configurados atravs de jumpers que raramente apresentam problemas de funcionamento, a no ser que seus parmetros como IRQ, DMA, ou I/O
estejam em conflitos com outro dispositivo, mas isso no culpa do fabricante e nem mesmo
do dispositivo. . .
3.4.2
Dip-Switches
a mesma coisa que os hardwares configurveis por jumpers exceto que so usados dipswitches no lugar de jumpers. O dip-switches um conjunto de chaves numeradas que podem ser colocadas para cima ou para baixo (como um disjuntor ou vrios interruptores
LIGA/DESLIGA colocados um ao lado do outro) para se modificar a configurao do dispositivo.
3.4.3
3.4.4
Plug-and-Play
O Plug-and-Play um protocolo que l os valores de operao disponveis para a placa e permitem que o usurio possa especificar facilmente qual ser sua IRQ, DMA, I/O. Hardwares
PCI possuem configurao Plug-and-Play nativa, registrando suas interrupes, portas e dma
na tabela de hardwares PCI do sistema.
A diferena em relao ao modo jumperless que toda a configurao do hardware (IRQ,
DMA e I/O) feita pelo kernel do Linux, onde ele passa a configurao detectada durante a
inicializao do sistema para os mdulos carregados, garantindo o perfeito funcionamento do
dispositivos e evitando conflitos. Na poca de hardwares ISA e VESA, o programa isapnp era
a preferencia para a configurao de placas ISA 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
3.5
21
3.6
Conflitos de hardware
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 constantes, 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 dispositivo 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 encaixe extra no final. Sua taxa de transferncia pode chegar a 132MB/s.
Captulo 3. Hardware
22
EISA Enhanced Industry Standard Architecture - um barramento mais encontrado em servidores. Tem a capacidade de bus mastering, que possibilita a comunicao
das placas sem a interferncia da CPU.
MCA Micro Channel Architecture - Barramento 32 bits proprietrio da IBM. Voc no
pode usar placas ISA nele, possui a caracterstica de bus mastering, mas pode procurar
por dispositivos conectados a ele, procurando configurao automtica. Este barramento
estava presente no PS/1 e PS/2, hoje no mais usado.
PCI Peripheral Component Interconnect - outro barramento rpido produzido pela
Intel com a mesma velocidade que o VESA. O barramento possui um chipset de controle
que faz a comunicao entre os slots PCI e o processador. O barramento se configura
automaticamente (atravs do Plug-and-Play). O PCI o barramento mais usado por
Pentiums e est se tornando uma padro no PC.
PCI Express Peripheral Component Interconnect Express - Identico ao barramento PCI, funcionando nativamente no clock de 64 bits.
AGP Accelerated Graphics Port - um novo barramento criado exclusivamente para
a ligao de placas de video. um slot marrom (em sua maioria) que fica mais separado
do ponto de fixao das placas no chassis (comparado ao PCI). Estas placas permitem
obter um desempenho elevado de vdeo se comparado as placas onboards com memria
compartilhada e mesmo PCI externas. O consumo de potncia em placas AGP x4 podem
chegar at a 100W, portanto importante dimensionar bem o sistema e ter certeza que a
fonte de alimentao pode trabalhar com folga.
PCMCIA Personal Computer Memory Card International Association - um
slot especial usado para conexes de placas externas (normalmente revestivas de plstico) e chamadas de cartes PCMCIA. Estes cartes podem adicionar mais memria ao
sistema, conter um fax-modem, placa de rede, disco rgido, etc. Os cartes PCMCIA so
divididos em 3 tipos:
Tipo 1 Tem a espessura de 3.3 milmetros, e podem conter mais memria RAM ou
memria Flash.
Tipo 2 Tem a espessura de 5 milmetros e capacidade de operaes I/O. um tipo
usado para placas de fax-modem, rede, som. Computadores que aceitam cartes
PCMCIA do tipo 2, mantm a compatibilidade com o tipo 1.
Tipo 3 Tem a espessura de 10.5 milmetros e normalmente usado para discos rgidos
PCMCIA. Slots PCMCIA do tipo 3 mantm a compatibilidade com o tipo 2 e 1.
AMR Audio Modem Raise - Pequeno barramento criado pela Intel para a conexo de placas
de som e modem. Placas de som e modem AMR usam o HSP (host signal processor) e so
como as Placas on-board e todo o processamento feito pela CPU do computador (veja
detalhes em Placas on-board / off-board on the facing page e Hardwares especficos ou
For Windows on page 24. Sua vantagem o preo: um modem ou placa de som AMR
custa em torno de R$ 25,00.
CNR Communication and Networking Rise - Pequeno barramento criado pela Intel
para a conexo de placas de som, modens e placas de rede. Este um pequenino slot
marrom que localizado no ponto de fixao das placas no chassis do gabinete. Elas so
como as Placas on-board e todo o processamento feito pela CPU do computador (veja
detalhes em Placas on-board / off-board on the facing page e Hardwares especficos ou
For Windows on page 24.
Captulo 3. Hardware
3.8
23
Captulo 3. Hardware
24
distinguir as caractersticas, funes e vantagens entre uma placa de boa qualidade e um hardware for Windows a no ser o preo mais barato.
3.9
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 hardware e o trabalho deles so feitos por drivers do Windows que so executados pelo processador
principal do computador. Esta estratgia torna o hardware menos caro, mas o que poupado
no passado para o usurio e este hardware pode at mesmo ser mais caro quanto dispositivos equivalentes que possuem inteligncia embutida.
Voc deve evitar o hardware baseado no Windows por duas razes:
1 O primeiro que aqueles fabricantes no tornam os recursos disponveis para criar um
driver para Linux. Geralmente, o hardware e a interface de software para o dispositivo
proprietria, e a documentao no disponvel sem o acordo de no revelao, se ele
estiver disponvel. Isto impede seu uso como software livre, desde que os escritores de
software grtis descubram o cdigo fonte destes programas.
2 A segunda razo que quando estes dispositivos tem os processadores embutidos removidos, o sistema operacional deve fazer o trabalho dos processadores embutidos, freqentemente em prioridade de tempo real, e assim a CPU no esta disponvel para executar programas enquanto ela esta controlando estes dispositivos.
Assim o usurio tpico do Windows no obtm um multi-processamento to intensivo
como um usurio do Linux, o fabricante espera que aquele usurio do Windows simplesmente no note a carga de trabalho que este hardware pe naquela CPU. No entanto,
qualquer sistema operacional de multi-processamento, at mesmo Windows 9X, XP e
Vista, so prejudicados quando fabricantes de perifricos retiram o processador embutido de suas placas e colocam o processamento do hardware na CPU.
Voc pode ajudar a reverter esta situao encorajando estes fabricantes a lanarem a documentao e outros recursos necessrios para ns desenvolvermos drivers para estes hardwares,
mas a melhor estratgia simplesmente evitar estes tipos de hardwares at que ele esteja listado no HOWTO de hardwares compatveis com Linux.
Note que hoje j existem muitos drivers para WinModems e outros hardwares for Windows
para o Linux. Veja a lista de hardwares compatveis no HARDWARE-HOWTO ou procure o
driver no site do fabricante de seu dispositivo. Mesmo assim a dica evitar hardwares for
Windows e comprar hardwares inteligentes onde cada um faz sua funo sem carregar a CPU.
Captulo 3. Hardware
3.10
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 licena que acompanha o Windows; voc pode rejeitar a licena e obter um desconto de seu
vendedor.
Se no estiver comprando um computador com GNU/Linux instalado, ou at mesmo um computador usado, importante 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.
3.11
Configuraes de Dispositivos
3.11.1
Captulo 3. Hardware
26
3.11.2
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 arquivos do /etc/modutils e criar o /etc/modules.conf.
3 Aps carregar o mdulo correto de sua placa de som, seu sistema de som dever estar
funcionando. Se voc utiliza uma distribuio Linux, os dispositivos de som como /dev
/audio, /dev/dsp, /dev/mixer estaro criados e ento poder passar para o prximo
passo. Caso no existam, entre no diretrio /dev e execute o comando MAKEDEV audio.
4 O prximo passo consiste em instalar um programa para controle de volume, tonalidade e outros recursos de sua placa de som. O recomendado o aumix por ser simples,
pequeno e funcional, e permitindo restaurar os valores dos nveis de volumes na inicializao (isso evita que tenha que ajustar o volume toda vez que iniciar o sistema). Caso o
aumix aparea na tela, sua placa de som j est funcionando! Caso acesse o sistema como
usurio, no se esquea de adicionar seu usurio ao grupo audio para ter permisso de
usar os dispositivos de som: adduser usuario audio .
3.11.3
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.
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
Depois em "SCSI support" marque as opes:
* SCSI support
M SCSI CD-ROM Support
M SCSI Generic Support
As opes marcadas como * sero embutidas no kernel e as M como mdulos. Note
que ambas as opes IDE/ATAPI CDROM e SCSI Emulation foram marcadas como
embutidas. Isto faz com que o driver ATAPI tenha prioridade em cima do SCSI, mas vou
explicar mais adiante como dizer para o kernel para carregar o suporte a SCSI para determinada unidade. Isto til quando temos mais de 1 unidade de CD IDE no sistema e
queremos configurar somente o gravador para SCSI, pois alguns aplicativos antigos no
se comunicam direito tanto com gravadores SCSI como emulados. Voc tambm pode
marcar somente a opo SCSI Emulation para que sua(s) unidade(s) seja(m) automaticamente emulada(s) como SCSI. Caso tenha usado esta tcnica, v at a seo Testando
o funcionamento on the facing page.
2 O prximo passo identificar o dispositivo de CD/DVD. Isto feito atravs do comando
dmesg. Supondo que sua unidade de CD hdc (primeiro disco na segunda controladora IDE) e que compilou ambos o suporte a IDE ATAPI e SCSI emulation no
kernel, adicione o argumento hdc=ide-scsi no /etc/lilo.conf ou no grub:
# Lilo
vmlinuz=/vmlinuz
append="hdc=ide-scsi"
Isto diz para o kernel que a unidade hdc usar emulao ide-scsi. Caso tenha outras
unidades de CD no sistema, estas ainda utilizao ATAPI como protocolo de comunicao
padro. Execute o lilo para gerar novamente o setor de inicializao com as modificaes e
reinicie o computador.
OBS: Cuidado ao colocar um disco rgido IDE como hdc! A linha hdc=ide-scsi dever ser
retirada, caso contrrio, seu disco rgido no ser detectado.
Agora, siga at Testando o funcionamento on the next page.
Captulo 3. Hardware
Depois
* SCSI
M SCSI
M SCSI
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,1,0
0,2,0
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.
3.11.4
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.
3.11.5
3.11.6
Algumas placas me ATX possuem suporte a este interessante recurso, que permite sua
mquina ser ligada atravs de uma rede. Isto feito enviando-se uma seqncia especial de
pacotes diretamente para o MAC (endereo fsico) da placa de rede usando um programa especial.
Captulo 3. Hardware
31
Para usar este recurso, seu sistema dever ter as seguintes caractersticas:
Placa me ATX
Fonte de alimentao ATX compatvel com o padro 2.0, com fornecimento de pelo
menos 720ma de corrente na sada +3v.
Placa de rede com suporte a WakeUP-on-Lan (WOL), voc poder 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. Depois disso, pegue o MAC address a placa de rede da mquina que tem o wakeup on lan e na
mquina da rede onde instalou o pacote execute o seguinte comando:
ether-wake AA:BB:CC:DD:EE:FF
Onde AA:BB:CC:DD:EE:FF o endereo MAC da placa de rede. A mquina dever ligar e
realizar o procedimento padro de POST normalmente.
Algumas das situaes onde o WOL no funciona quando sua rede controlada por Switches
(devido a natureza de funcionamento deste equipamentos) ou caso esteja atrs de um roteador
que no faz proxy arp.
3.12
Aterramento
O aterramento correto da instalao eltrica essencial para garantir a proteo de seu microcomputador (e outros aparelhos que requerem isto). Muitos usurios simplesmente removem
o pino central da tomada de seu computador, ou ligam o terra junto ao neutro da rede eltrica,
isto errado e pode trazer srias conseqncias. O computador possui componentes sensveis
que geram descargas estticas durante seu funcionamento (fonte, discos, placas, etc), estas
descargas e rudos so absorvidas pelo sistema de aterramento (que ligado no gabinete do
computador e outros componentes internos). Sem aterramento o seu gabinete passar a dar
choques eltricos (teste com uma chave de testes, ela acender indicando a circulao de corrente eltrica) e a corrente acumulada poder queimar componentes internos sensveis (placa
me, HD, memrias, placas expansoras).
A ligao do terra ao neutro da rede menos perigosa em condies normais, mas se um raio
cair na rede eltrica as conseqncias podero ser piores. Mesmo a rede de iluminao pblica
tendo aterramento em cada poste isto pode no ser o 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 extremidade positiva da rede eltrica (fase) e a outra ponta no fio da barra de cobre. O aterramento 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.
3.12.1
Condutores de eletricidade
A tabela abaixo est classificada em ordem do material que possui melhor conduo de eletricidade (eltrons com circulaos livres) baseada no fator mm2/m. (da mais condutora para a
menos condutora).
1 Prata - 0,0164
2 Cobre - 0,0172
3 Ouro - 0,0230
4 Alumnio - 0,0283
5 Zinco - 0,0600
6 Platina - 0,0950
7 Ferro - 0,1200
8 Chumbo - 0,2100
9 mercrio - 0,9680
3.13
Tomadas
As tomadas eltricas de 127V ou 220V AC 60Hz de trs pinos, pelas normas tcnicas da ABNT,
no. ABNT 6147 devem 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
Terra
Fase
33
+-----------+
+-----------+
---+----(_)
|
Terra ---+----(_)
|
|
_
_
|
|
_
_
|
| _| | | |_ |
| _| | | |_ |
---+(_ | | _)+--- Neutro
Fase ---+(_ | | _)+--- Fase
| |_| |_| |
| |_| |_| |
|
_
|
|
_
|
+-----------+
+-----------+
3.14
Descargas estticas
a energia que se acumula durante o choque das molculas de ar seco ou atrito com outros objetos. Pode acontecer de em dias secos voc tomar um choque ao abrir seu carro ou tocar em
algum objeto metlico, isto uma descarga esttica. Na realidade voc no tomou um choque,
ao tocar em um objeto metlico esta energia descarregada violentamente. Esta energia pode
chegar na ordem de 5 mil volts quando acumulada (assustador no?).
por este motivo que caminhes que transportam combustvel arrastam uma corrente no
cho, esta corrente funciona como um aterramento (veja Aterramento on page 31) eliminando
descargas estticas que possam gerar fascas e causar um desastre. Pulseiras, cordes, objetos
metlicos podem ser usados para eliminar descargas estticas de pessoas. O contato freqente
com o solo um mtodo muito til. Existem casos em que um colar salvou a vida de pessoas
atingidas por raio, justamente pelas explicaes acima. O colar derrete com a drenagem da
eletricidade do raio mas a pessoa tem mais chances de sair viva.
Em indivduos realmente sensveis, uma chapinha de metal pode ser colocada no sapato
fazendo contato com o calcanhar drenando constantemente estas descargas, isto 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
Melhoria de performance
3.15.1
Particionamento
Para um melhor desempenho, os dados que so solicitados constantemente devero ser armazenados em uma partio no inicio do disco rgido. Esta rea a mais rpida e checa a ser
60% mais rpida que o 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
R
S
U
/boot
Raz /
Swap
/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).
3.15.3
Captulo 3. Hardware
35
=
=
=
=
=
=
=
=
0
0
0
1
0
0
0
8
(off)
(16-bit)
(off)
(off)
(off)
(off)
(off)
(on)
Imediatamente podemos modificar os seguintes campos para melhorar sensivelmente o desempenho do disco rgido:
multcount Pode ser modificada com -m[num] e especifica o nmero mximo de setores que
sero acessados de uma s vez na operao de leitura da unidade. O valor mximo
recomendado igual a capacidade mxima suportada pelo seu disco rgido, que pode
ser obtida com o comando: hdparm -i /dev/hda
Model=TS6324A2, FwRev=.340
, SerialNo=A99B99JA
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
RawCHS=13228/15/63, TrkSize=0, SectSize=0, ECCbytes=0
BuffType=unknown, BuffSize=256kB, MaxMultSect=16, MultSect=16
CurCHS=13228/15/63, CurSects=12500460, LBA=yes, LBAsects=12500460
IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2 udma0 udma1 *udma2 udma3 udma4 udma5
O campo MaxMultSect=16 indica o valor de 16 como mximo suportado em uma nica
operao pela unidade. Valores maiores podero ser especificados mas no traro ganho
de performance. Para discos rgidos Western Digital recomendvel deixar este valor
como 0, porque eles possuem um mecanismo embutido para leitura de setores. Para
experimentar valores fora dos padres, coloque seu sistema de arquivos como somente
leitura para no perder dados caso algo saia errado. Note que o comando hdparm -i
mostra alguns detalhes interessantes sobre a configurao do disco rgido e modos de
operao suportados.
I/O support Modificado com -c[num]. O nmero especificado pode ser 0 para transferncia
de dados em 16 bits, 1 para 32 bits e 3 para 32 bits com uma seqencia especial de sincronismo (alguns chips requerem esta ao invs da 1).
using_dma Modificado com -d[num]. Habilita ou no o uso de DMA para a transferncia
de dados do HD, ativando o controle de algumas operaes pelo chipset livrando a
CPU para processamento. 0 desativa DMA e 1 ativa. Note que nem todos os chipsets
aceitam esta operao. Esta usada em conjunto com a opo -X oferece um excelente
ganho de performance pelo uso correto de sua controladora. A ativao de dma tambm
Captulo 3. Hardware
36
Captulo 3. Hardware
37
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:
3.15.4
Toda vez que acessamos um arquivo ou diretrio da mquina Linux a data/hora atualizada.
Em mquinas normais isto OK mas em servidores onde o acesso a arquivos constante (como
no diretrio /var/spool em servidores de e-mail ou /usr/ em servidores diskless) recomendvel desativar esta caracterstica. Isto reduzir a quantidade de buscas das cabeas do
disco rgido para a atualizao deste atributo e conseqentemente aumentar a performance
na gravao de arquivos (o disco rgido usa o sistema mecnico para ler/gravar dados, muito
mais lento que a memria RAM eletrnica).
chattr -R +A /var/spool
O atributo +A desativa a gravao da data de acesso dos arquivos e sub-diretrios dentro
de /var/spool. Para desativar a atualizao da data de acesso para toda a partio, voc
pode incluir a opo de montagem noatime no seu /etc/fstab:
/dev/hda1
/var/spool
ext2
defaults,noatime
Captulo 3. Hardware
3.16
38
Perifricos SATA
Hardwares SATA (Serial ATA) representam a prxima gerao em tecnologia usada para a
transferncia de dados em alta velocidade a baixo custo. Hoje est se tornando o padro de
indstria a utilizao de dispositivos SATA em micros em substituio a dispositivos IDE.
Dispositivos IDE tradicionais so chamados de PATA (parallel ATA, ou ATA paralelo).
Estes dispositivos so 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.
3.17
Perifricos SCSI
Hardwares SCSI (Small Computer System Interfaces) representam a tecnologia ideal para a
transferncia de dados em alta velocidade e ligao de vrios perifricos. A taxa de transferncia 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.
3.17.1
Captulo 3. Hardware
40
41
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, roteamento.
Parte deste captulo, uns 70% pelo menos, baseado no documento NET3-4-HOWTO. (seria
perda de tempo reescrever este assunto pois existe um material desta qualidade j disponvel).
4.1
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 segurana do sistema, firewalls, pontes, etc.
Entre outras ilimitadas possibilidades que dependem do conhecimento do indivduo no ambiente GNU/Linux, j que ele permite muita flexibilidade para fazer qualquer coisa funcionar
em rede.
Captulo 4. Rede
42
4.2
Protocolo de Rede
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 endereos que so comuns entre todos os endereos de uma rede so chamados de poro da rede.
Os dgitos restantes so chamados de poro dos hosts. O nmero de bits que so compartilhados
por todos os endereos dentro da rede so chamados de netmask (mscara da rede) e o papel
da netmask determinar quais endereos pertencem ou no a rede. Por exemplo, considere o
seguinte:
----------------Endereo do Host
Mscara da Rede
Poro da Rede
Poro do Host
----------------Endereo da Rede
Endereo Broadcast
-----------------
--------------192.168.110.23
255.255.255.0
192.168.110.
.23
--------------192.168.110.0
192.168.110.255
---------------
Qualquer endereo que 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 computador na rede pode recebe-las simultaneamente.
Existe dois padres normalmente usados para especificar o endereo de broadcast. O mais amplamente aceito para usar o endereo mais alto da rede como endereo broadcast. No
exemplo acima este seria 192.168.110.255. Por algumas razes outros sites tem adotado a conveno de usar o endereo de rede como o endereo broadcast. Na prtica no importa
muito se usar este endereo, mas voc deve ter certeza que todo computador na rede esteja
configurado para escutar o mesmo endereo broadcast.
4.3.1
Classes de Rede IP
Por razes administrativas aps algum pouco tempo no desenvolvimento do protocolo IP alguns grupos arbitrrios de endereos foram formados em redes e estas redes foram agrupadas
no que foram chamadas de classes. Estas classes armazenam um tamanho padro de redes que
podem ser usadas. As faixas alocadas so:
+--------------------------------------------------------+
| Classe | Mscara de
| Endereo da Rede
|
|
| Rede
|
|
+--------------------------------------------------------+
|
A
| 255.0.0.0
| 0.0.0.0
- 127.255.255.255 |
|
B
| 255.255.0.0
| 128.0.0.0 - 191.255.255.255 |
|
C
| 255.255.255.0 | 192.0.0.0 - 223.255.255.255 |
|Multicast| 240.0.0.0
| 224.0.0.0 - 239.255.255.255 |
+--------------------------------------------------------+
O tipo de endereo que voc deve utilizar depende exatamente do que estiver fazendo.
4.3.2
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:
Mscara
(Forma
octal)
Mscara
(Forma
32 bits)
Classe A:
/8
/255.0.0.0
Nmero
Mximo de
Mquinas
16,777,215
Captulo 4. Rede
44
Classe B:
/16
/255.255.0.0
/17
/255.255.128.0
/18
/255.255.192.0
/19
/255.255.224.0
/20
/255.255.240.0
/21
/255.255.248.0
/22
/255.255.252.0
/23
/255.255.254.0
65,535
32,767
16,383
8,191
4,095
2,047
1,023
511
Classe C
/24
/255.255.255.0
/25
/255.255.255.128
/26
/255.255.255.192
/27
/255.255.255.224
/28
/255.255.255.240
/29
/255.255.255.248
/30
/255.255.255.252
/32
/255.255.255.255
255
127
63
31
15
7
3
1
Qualquer outra mscara fora desta tabela (principalmente para a classe A), dever ser redimensionada com uma calculadora de IP para chegar a um nmero aproximado de redes/mquinas
aproximados que deseja.
4.3.3
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.
4.3.4
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.
4.4
Interface de rede
4.4.1
A interface loopback
A interface loopback um tipo especial de interface que permite fazer conexes com voc
mesmo. Todos os computadores que usam o protocolo TCP/IP utilizam esta interface e existem vrias razes porque precisa fazer isto, por exemplo, voc pode testar vrios programas
de rede sem interferir com ningum em sua rede. Por conveno, o endereo IP 127.0.0.1 foi
Captulo 4. Rede
46
escolhido 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.
4.4.2
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:
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up
O comando acima ativa a interface de rede. A palavra up pode ser omitida, pois a ativao
da interface de rede o padro. Para desativar a mesma interface de rede, basta usar usar o
comando:
ifconfig eth0 down
Digitando ifconfig so mostradas todas as interfaces ativas no momento, pacotes enviados,
recebidos e colises de datagramas. Para mostrar a configurao somente da interface eth0,
use o comando: ifconfig eth0 Em sistemas Debian, o arquivo correto para especificar os
dados das interfaces o /etc/network/interfaces .
Para mais detalhes, veja a pgina de manual do ifconfig ou o NET3-4-HOWTO.
4.5
Roteamento
Roteamento quando uma mquina com mltiplas conexes de rede decide onde entregar os
pacotes IP que recebeu, para que cheguem ao seu destino.
Captulo 4. Rede
47
Pode ser til ilustrar isto com um exemplo. Imagine um simples roteador de escritrio, ele
pode ter um link intermitente com a Internet, um nmero de segmentos ethernet alimentando as estaes de trabalho e outro link PPP intermitente fora de outro escritrio. Quando
o roteador recebe um datagrama de qualquer de suas conexes de rede, o mecanismo que usa
determina qual a prxima interface deve enviar o datagrama. Computadores simples tambm
precisam rotear, todos os computadores na Internet tem dois dispositivos de rede, um a interface loopback (explicada acima) o outro um usado para falar com o resto da rede, talvez
uma ethernet, talvez uma interface serial PPP ou SLIP.
OK, viu como o roteamento funciona? cada computador mantm uma lista de regras especiais
de roteamento, chamada tabela de roteamento. Esta tabela contm colunas que tipicamente contm no mnimo trs campos, o primeiro o endereo de destino, o segundo o nome da interface
que o datagrama deve ser roteado e o terceiro opcionalmente o endereo IP da outra mquina
que levar o datagrama em seu prximo passo atravs da rede. No GNU/Linux voc pode ver
a tabela de roteamento usando um dos seguintes comandos:
cat /proc/net/route
route -n
netstat -r
O processo de roteamento muito simples: um datagrama (pacote IP) recebido, o endereo de
destino (para quem ele ) examinado e comparado com cada item da tabela de roteamento.
O item que mais corresponder com o endereo selecionado e o datagrama direcionado a
interface especificada.
Se o campo gateway estiver preenchido, ento o datagrama direcionado para aquele computador pela interface especificada, caso contrrio o endereo de destino assumido sendo
uma rede suportada pela interface.
4.5.1
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:
route add -net 192.168.1.0 eth0
Para apagar a rota acima da tabela de roteamento, basta substituir a palavra add por del. A
palavra net quer dizer que 192.168.1.0 um endereo de rede (lembra-se das explicaes em
Endereo IP on page 42?)) para 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 argumento. 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 roteamento, 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 endereo no confira com os da tabela de roteamento. Para especificar o computador 192.168.1.1
como gateway padro usamos:
route add default gw 192.168.1.1 eth0
O gateway padro pode ser visualizado atravs do comando route -n e 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 resposta do servidor tambm enviada atravs do gateway para seu computador ( o caso de
uma tpica conexo com a Internet).
A nossa configurao ficaria assim:
route add -net 192.168.1.0 eth0
route add default gw 192.168.1.1 eth0
Para mais detalhes, veja a pgina de manual do route ou o NET3-4-HOWTO.
4.6
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 programa) que converte automaticamente os nomes em endereos IP ou atravs de servidores DNS
que fazem a busca em um banco de dados na Internet e retornam o endereo IP do computador
desejado. Um servidor DNS mais difundido na Internet o bind.
Atravs do DNS necessrio apenas decorar o endereo sem precisar se preocupar com o
endereo IP (alguns usurios simplesmente no sabem que isto existe. . . ). Se desejar mais
detalhes sobre DNS, veja o documento DNS-HOWTO.
Captulo 4. Rede
4.6.1
49
O que um nome?
Voc deve estar acostumado com o uso dos nomes de computadores na Internet, mas pode
no entender como eles so organizados. Os nomes de domnio na Internet so uma estrutura
hierrquica, ou seja, eles tem uma estrutura semelhante aos diretrios de seu sistema.
Um domnio uma famlia ou grupo de nomes. Um domnio pode ser colocado em um subdomnio. Um domnio principal um domnio que no um sub-domnio. Os domnios principais so 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 regra 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 departamental 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 Internet obedece exatamente a seqncia de procura acima. Os administradores do domnio
debian.org.br podem cadastrar quantos sub-domnios e computadores quiserem (como
www.non-us.debian.org.br ou cvs.debian.org.br).
4.6.2
Captulo 4. Rede
50
/etc/resolv.conf
O /etc/resolv.conf o arquivo de configurao principal do cdigo do resolvedor de
nomes. Seu formato um arquivo texto simples com um parmetro por linha e o endereo
de servidores DNS externos so especificados nele. Existem trs palavras chaves normalmente
usadas que so:
domain Especifica o nome do domnio local.
search Especifica uma lista de nomes de domnio alternativos ao procurar por um computador, separados por espaos. A linha search pode conter no mximo 6 domnios ou 256
caracteres.
nameserver Especifica o endereo IP de um servidor de nomes de domnio para resoluo de
nomes. Pode ser usado vrias vezes.
Como exemplo, o /etc/resolv.conf se parece com isto:
domain maths.wu.edu.au
search maths.wu.edu.au wu.edu.au
nameserver 192.168.10.1
nameserver 192.168.12.1
Este exemplo 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 resolvedor 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
O arquivo /etc/hosts faz o relacionamento entre um nome de computador e endereo IP local. Recomendado para IPs constantemente acessados e para colocao de endereos de virtual
hosts (quando deseja referir pelo nome ao invs de IP). A incluso de um computador neste
arquivo dispenda a consulta de um servidor de nomes para obter um endereo IP, sendo muito
til para mquinas que so acessadas frequentemente. A desvantagem de fazer isto que voc
mesmo precisar manter este arquivo atualizado e se o endereo IP de algum computador for
modificado, esta alterao dever ser feita em cada um dos arquivos hosts das mquinas da
rede. Em um sistema bem gerenciado, os nicos endereos de computadores que aparecero
neste arquivo sero da interface loopback e os nomes de computadores.
# /etc/hosts
127.0.0.1
192.168.0.1
localhost loopback
maquina.dominio.com.br
Voc pode 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 aplicativos (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
127.0.0.0
192.168.1.0
44.0.0.0
Quando usar comandos como route, se um destino uma rede e esta rede se encontra no
arquivo /etc/networks, ento o comando route mostrar o nome da rede ao invs de seu
endereo.
Captulo 4. Rede
4.6.3
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).
4.7
Servios de Rede
Servios de rede o que est disponvel para ser acessado pelo usurio. No TCP/IP, cada servio
associado a um nmero chamado porta que onde o servidor espera pelas conexes dos
computadores clientes. Uma porta de rede pode se referenciada tanto pelo nmero como pelo
nome do servio.
Abaixo, alguns exemplos de portas padres usadas em servios TCP/IP:
21 - FTP (transferncia de arquivos)
23 - Telnet (terminal virtual remoto)
25 - Smtp (envio de e-mails)
53 - DNS (resolvedor de nomes)
79 - Finger (detalhes sobre usurios do sistema)
80 - http (protocolo www - transferncia de pginas Internet)
110 - Pop-3 (recebimento de mensagens)
119 - NNTP (usado por programas de noticias)
O arquivo padro responsvel pelo mapeamento do nome dos servios e das portas mais utilizadas o /etc/services (para detalhes sobre o seu formato, veja a /etc/services on
page 61).
4.7.1
Servios 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.
4.7.2
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
O arquivo /etc/inetd.conf um arquivo de configurao para o daemon servidor inetd.
Sua funo dizer ao inetd o que fazer quando receber uma requisio de conexo para um
servio em particular. Para cada servio que deseja aceitar conexes, voc precisa dizer ao inetd
qual daemon servidor executar e como executa-lo.
Seu formato tambm muito simples. um arquivo texto com cada linha descrevendo um
servio que deseja oferecer. Qualquer texto em uma linha seguindo uma # ignorada e
considerada um comentrio. Cada linha contm sete campos separados por qualquer nmero
de espaos em branco (tab ou espaos). O formato geral o seguinte:
servio
tipo_soquete
proto
opes.num
usurio
caminho_serv. opes_serv.
Captulo 4. Rede
54
automaticamente desativado pelo inetd e uma mensagem ser mostrada no log do sistema avisando sobre o fato. Para reativar o servio interrompido, reinicie o inetd com:
killall -HUP inetd. O valor padro 40.
usurio Este campo descreve que conta de usurio usurio no arquivo /etc/passwd ser
escolhida como dono do daemon de rede quando este for iniciado. Isto muito til se
voc deseja diminuir os riscos de segurana. Voc pode ajustar o usurio de qualquer
item para o usurio nobody, assim se a segurana do servidor de redes quebrada, a
possibilidade de problemas minimizada. Normalmente este campo ajustado para
root, porque muitos servidores requerem privilgios de usurio root para funcionarem
corretamente.
caminho_servidor Este campo o caminho para o programa servidor atual que ser executado.
argumentos_servidor Este campo inclui o resto da linha e opcional. Voc pode colocar neste
campo qualquer argumento da linha de comando que deseje passar para o daemon servidor quando for iniciado.
Uma dica que pode aumentar significativamente a segurana de seu sistema comentar (colocar uma #no inicio da linha) os servios que no sero utilizados.
Abaixo um modelo de arquivo /etc/inetd.conf usado em sistemas Debian:
# /etc/inetd.conf: veja inetd(8) para mais detalhes.
#
# Banco de Dados de configuraes do servidor Internet
#
#
# Linhas iniciando com "#:LABEL:" ou "#<off>#" no devem
# ser alteradas a no ser que saiba o que est fazendo!
#
#
# Os pacotes devem modificar este arquivo usando update-inetd(8)
#
# <nome_servio> <tipo_soquete> <proto> <opes> <usurio> <caminho_servidor>
#
#:INTERNO: Servios internos
#echo
stream tcp nowait root
internal
#echo
dgram
udp wait
root
internal
#chargen
stream tcp nowait root
internal
#chargen
dgram
udp wait
root
internal
#discard
stream tcp nowait root
internal
#discard
dgram
udp wait
root
internal
#daytime
stream tcp nowait root
internal
#daytime
dgram
udp wait
root
internal
time stream tcp nowait root
internal
#time dgram udp wait
root
internal
#:PADRES: Estes so servios padres.
Captulo 4. Rede
55
4.8
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 automaticamente. 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 linhas que contm servios que no utiliza.
Bons candidatos so servios tais como: shell, login, exec, uucp, ftp e servios de informao tais como finger, netstat e sysstat.
Existem todos os tipos de mecanismos de segurana e controle de acesso, eu descreverei os
mais importantes deles.
4.8.1
/etc/ftpusers
Captulo 4. Rede
56
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.
# /etc/securetty - terminais que o usurio root pode se conectar
tty1
tty2
tty3
tty4
4.8.3
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 apropriada (hosts_access (5) um bom ponto de partida).
/etc/hosts.allow
O arquivo /etc/hosts.allow um arquivo de configurao do programa /usr/sbin
/tcpd. O arquivo hosts.allow contm regras descrevendo que hosts tem permisso de
acessar um servio em sua mquina.
O formato do arquivo muito simples:
Captulo 4. Rede
57
# /etc/hosts.allow
#
# lista de servios: lista de hosts : comando
lista de servios uma lista de nomes de servios separados por vrgula que esta regra se
aplica. Exemplos de nomes de servios so: ftpd, telnetd e fingerd.
lista de hosts uma lista de nomes de hosts separada por vrgula. Voc tambm pode usar
endereos IPs aqui. Adicionalmente, voc pode 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 especfico, .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, alguns destes so: ALL atinge todos endereos, LOCAL atinge qualquer computador que
no contm um . (ie. est no mesmo domnio de sua mquina) e PARANOID atinge
qualquer computador que o nome no confere com seu endereo (falsificao de nome).
Existe tambm um ltimo parmetro que tambm til: o parmetro EXCEPT lhe permite fazer uma lista de excees. Isto ser coberto em um exemplo adiante.
comando um parmetro opcional. Este parmetro o caminho completo de um comando
que dever ser executado toda a vez que esta regra conferir. Ele pode executar um comando para tentar identificar quem esta conectado pelo host remoto, ou gerar uma mensagem via E-Mail ou algum outro alerta para um administrador de rede que algum est
tentando se conectar. Existem um nmero de expanses que podem ser includas, alguns
exemplos comuns so: %h expande o endereo do computador que est conectado ou
endereo se ele no possuir um nome, %d o nome do daemon sendo chamado.
Se o computador tiver permisso de acessar um servio atravs do /etc/hosts.allow, ento
o /etc/hosts.deny no ser consultado e o acesso ser permitido.
Como exemplo:
# /etc/hosts.allow
#
# Permite que qualquer um envie e-mails
in.smtpd: ALL
# Permitir telnet e ftp somente para hosts locais e myhost.athome.org.au
in.telnetd, in.ftpd: LOCAL, myhost.athome.org.au
# Permitir finger para qualquer um mas manter um registro de quem
in.fingerd: ALL: (finger @%h | mail -s "finger from %h" root)
Qualquer modificao no arquivo /etc/hosts.allow entrar em ao aps reiniciar o daemon inetd. Isto pode ser feito com o comando kill -HUP [pid do inetd], o pid do inetd
pode ser obtido com o comando ps ax|grep inetd.
/etc/hosts.deny
O arquivo /etc/hosts.deny um arquivo de configurao das regras descrevendo quais
computadores no tem a permisso de acessar um servio em sua mquina.
Captulo 4. Rede
58
/etc/hosts.equiv e /etc/shosts.equiv
O arquivo /etc/hosts.equiv usado para garantir/bloquear certos computadores e
usurios o direito de acesso aos servios r* (rsh, rexec, rcp, etc) sem precisar fornecer uma
senha. O /etc/shosts.equiv equivalente mas lido somente pelo servio ssh. Esta
funo til em um ambiente seguro onde voc controla todas as mquinas, mesmo assim
isto um perigo de segurana (veja nas observaes). O formato deste arquivo o seguinte:
#Acesso
+
Mquina
maquina2.dominio.com.br
maquina4.dominio.com.br
maquina1.dominio.com.br
Usurio
usuario2
usuario2
+@usuarios
O primeiro campo 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.
Verificando a segurana do TCPD e a sintaxe dos arquivos
O utilitrio tcpdchk til para verificar problemas nos arquivos hosts.allow e
hosts.deny. Quando executado ele verifica a sintaxe destes arquivos e relata problemas,
caso eles existam.
Outro utilitrio til o tcpdmatch, o que ele faz permitir que voc simule a tentativa
de conexes ao seu sistema e observar ser ela ser permitida ou bloqueada pelos arquivos
hosts.allow e hosts.deny.
importante mostrar na prtica como o tcpdmatch funciona atravs de um exemplo simulando um teste simples em um sistema com a configurao padro de acesso restrito:
O arquivo hosts.allow contm as seguintes linhas:
ALL: 127.0.0.1
in.talkd, in.ntalkd: ALL
in.fingerd: 192.168.1. EXCEPT 192.168.1.30
A primeira linha permite o loopback (127.0.0.1) acessar qualquer servio TCP/UDP em
nosso computador, a segunda linha permite qualquer um acessar os servidor TALK (ns
desejamos que o sistema nos avise quando algum desejar conversar) e a terceira somente
permite enviar dados do finger para computadores dentro de nossa rede privada (exceto para 192.168.1.30).
O arquivo hosts.deny contm a seguinte linha:
ALL: ALL
Qualquer outra conexo ser explicitamente derrubada.
Vamos aos testes, digitando: tcpdmatch in.fingerd 127.0.0.1 (verificar se o endereo 127.0.0.1
tem acesso ao finger):
client:
server:
matched:
access:
address 127.0.0.1
process in.fingerd
/etc/hosts.allow line 1
granted
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
client:
server:
matched:
access:
60
address 192.168.1.29
process in.fingerd
/etc/hosts.allow line 3
granted
address 192.168.1.30
process in.fingerd
/etc/hosts.deny line 1
denied
O que aconteceu? como a linha 2 do hosts.allow permite o acesso a todos os computadores 192.168.1.* exceto 192.168.1.30, ela no bateu, ento o processamento partiu para o
hosts.deny que nega todos os servios para qualquer endereo. Agora um ltimo exemplo: tcpdmatch in.talkd www.debian.org
client:
server:
matched:
access:
address www.debian.org
process in.talkd
/etc/hosts.allow line 2
granted
Ok, na linha 2 qualquer computador pode te chamar para conversar via talk na rede, mas
para o endereo DNS conferir com um IP 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 determinados 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 controlar minuciosamente a segurana do seu sistema e dos pacotes que atravessam os protocolos,
roteamento e as interfaces de rede. Se este for o caso aprenda a trabalhar a fundo com firewalls
e implemente a segurana da sua rede da forma que melhor planejar.
4.8.4
Firewall
Captulo 4. Rede
61
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 outros assuntos ligados a rede.
Freqentemente tem se ouvido falar de empresas que tiveram seus sistemas invadidos, em
parte isto devido a escolha do sistema operacional indevido mas na maioria das vezes o
motivo a falta de investimento da empresa em polticas de segurana, que algumas simplesmente consideram a segurana de seus dados e sigilo interno como uma despesa a mais.
Um bom 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
4.9.1
porta/protocolo
apelido
# comentrio
name Uma palavra simples que representa o nome do servio sendo descrito.
porta/protocolo Este campo dividido em dois sub-campos.
porta - Um nmero que 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
Captulo 4. Rede
62
como tcpdump permitindo-os mostrar nomes ao invs de nmeros em sua sada. A sintaxe geral
deste arquivo :
nomeprotocolo
4.10
nmero
apelidos
Camadas de Rede
So organizaes do protocolo TCP/IP que visam organizar e simplificar seu padro e implementao pelos desenvolvedores.
Um padro TCP o conjunto de regras que devem ser seguidas para garantir a homogeneidade da comunicao entre diversos sistemas de diversos fabricantes (por exemplo,
Mac com Windows, Windows com Linux, etc.).
A implementao o cdigo escrito por cada desenvolvedor para integrao ao sistema operacional seguindo as regras do padro para garantir a comunicao entre as mquinas,
portanto, a implementao do protocolo TCP varia de fabricante para fabricante.
Existem dois tipos de padres TCP: Darpa e OSI. O padro Darpa dividido em 4 camadas e
ainda o padro atualmente utilizado. O padro OSI mais recente, dividido em 7 camadas,
mas ainda no se tornou um padro como o Darpa.
Segue abaixo os padres e a descrio de cada uma das camadas:
Darpa
Aplicao - www, ftp, dns, etc. Fazem interface com as aplicaes do sistema.
Transporte - Protocolo tcp e udp. Cuidam da parte de transporte dos dados do
sistema.
Rede - IP, icmp, igmp, arp. Cuida de levar o pacote para seu destino (rotas) e
condies de transmisso.
Interface de Rede - Ethernet, FDDI, Token Ring. 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 camadas.
4.11
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
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 (principalmente 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 adicionar uma interface virtual que atenda pelo IP 172.16.0.1 (classe B privada) e depois seguir os
seguintes passos:
1 Ative a interface de rede com ifconfig ou ifup (caso esteja usando a Debian).
2 Crie uma interface virtual usando o comando ifconfig eth0:0 172.16.0.1. Isto
criar uma nova interface chamada eth0:0 que passar a responder pelo IP 172.6.0.1.
permitido o uso de nomes para especificar a interface virtual, como: eth0:rede1,
eth0:rede2, eth0:escritrio.
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
eth0:0
65
Caso tenha dados considerados seguros em sua mquina e esteja em dvida sobre as implicaes de segurana do IP Alias em sua mquina, consulte seu administrador de redes.
OBS3: Note que somente os 4 primeiros caracteres sero mostrados na sada do ifconfig,
desta forma procure utilizar no mximo esta quantidade de caracteres para evitar problemas
durante uma futura administrao do servidor, no caso de esquecimento do nome completo
da interface virtual).
5.2
Bridge
Uma bridge uma interface de rede lgica composta por uma ou mais interfaces de rede fsica
operando em nvel 2 (enviando pacotes atravs de MAC adresses, veja Camadas de Rede on
page 62).
Sua operao transparente na rede, podendo ser usada como um switch/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.
5.2.1
5.2.2
Configurao da bridge
Nos exemplos abaixo, eu assumirei a utilizao do nome de dispositivo br0 para se referir a
bridge no sistema. Siga estes passos para configurar uma bridge em sistemas Debian:
66
5.2.3
A bridge permite ainda definir prioridade para utilizao de interfaces, alm de outras funcionalidades que lhe permitem ajustar a performance da mquina de acordo com sua rede.
Um bom exemplo, quando voc deseja criar 2 bridges em uma mesma mquina envolvendo
interfaces de rede 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
67
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.0.1
bridge_ports eth2 eth3 eth4
No exemplo acima, as interfaces eth0 e eth1 fazem parte da bridge br0 e as demais (eth2,
eth3 e eth4 da bridge br1.
bridge_ports eth2 eth3
bridge_bridgeprio 16385
bridge_portprio eth1 100
bridge_fd 5
5.2.4
Internamente, o que o ifup faz interpretar os parmetros no arquivo de configurao e executar os comandos do pacote bridge-utils para ativar a interface da bridge. O utilitrio
responsvel por este processo o brctl. Ser documentado aqui como ativar uma bridge
atravs deste programa (que servir para fazer uma bridge em qualquer sistema Linux).
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1
ifconfig eth0 0.0.0.0
ifconfig eth1 0.0.0.0
ifconfig br0 192.168.0.4
O comando acima ativa uma bridge simples, como o primeiro exemplo. Tenha certeza que as
interfaces fsicas de rede esto desativadas antes de executar este comando.
Outros parmetros que podem ser usados com o brctl:
setbridgeprio [bridge [prioridade]] 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] segundos.
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.
brctl addbr br0
brctl addif br0 eth0
brctl
brctl
brctl
brctl
68
5.2.5
A construo de um firewall em uma bridge no tem maiores segredos, basta referir-se a interface lgica da bridge para construir suas regras (tendo em mente como uma bridge funciona e
como os pacotes atravessaro as interfaces).
Caso aplique o patch bridge nf, ser possvel referir-se as interfaces locais de rede e tambm a da
bridge. Neste caso a interface da bridge ser identificada como interface IN ou OUT PHYSIN
e as interfaces fsicas como PHYSOUT:
5.2.6
5.3
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 identificada 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 aparentemente baixa apresenta diversas vantagens por sua escalabilidade e pode lhe salvar em muitas
situaes de problemas. Algumas caractersticas deste tipo de rede:
Pode ser configurado em qualquer mquina, pois sempre haver uma porta paralela.
69
til para fazer instalao de Linux em mquinas sem CD-ROM. No momento da instalao preciso somente alternar para um console, executar os passos descritos aqui e
continuar com o processo de instalao normal :)
uma boa soluo quando as duas mquinas esto prximas
O custo para montagem desta rede extremamente baixo, bastando um cabo Lap Link
Paralelo que custa no mximo R$20,00 o de 1,5M ou se gosta de eletrnica, montar seu
prprio cabo usando o esquema que descrevo em Construindo um cabo LapLink Paralelo on the following page.
Voc poder fazer qualquer coisa que faria em uma rede normal (incluindo MASQUERADING, roteamento entre redes, etc) sendo bastante interessante para testes prticos dos exemplos do Foca Linux Avanado ;-)
Ficar admirado com as capacidade de rede existente no Linux e feliz por ter colocado
mais uma 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 colocar sua controladora em risco alm da perda de sinal. Por segurana, o tamanho recomendvel 2,5 metros.
Quando toda a banda do cabo utilizada, algumas CPUs se tornam extremamente lentas.
Para 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 ativada com o comando ifconfig plip0.
6 Nesse ponto a interface est ativa, mas a nossa mquina no conhece nada sobre a
rede ou como alcanar a mquina 192.168.1.2. Como a conexo ponto a ponto, precisamos adicionar uma rota direta para esta mquina com o comando: route add
-host 192.168.1.2 plip0. Este comando diz para criar uma rota com o destino
192.168.1.2 usando a interface plip0.
7 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 passos 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.
70
O nmero mximo de interfaces plip? est limitado ao nmero mximo suportado pela
mquina. O padro em sistemas padro IBM/PC de 3 (plip0, plip1, plip2).
Para desativar uma rede plip, utilize o comando ifconfig plip0 down, remova o mdulo
plip (rmmod plip). Aps isto, a porta paralela ser liberada para uso por outros aplicativos.
5.3.1
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
|
+---------+---------+
5.4
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 comunicao 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 console, executar os passos descritos aqui e continuar com o processo de instalao normal
:)
uma boa soluo quando as duas mquinas at em ambientes prximos.
O custo para montagem desta rede extremamente baixo, bastando um cabo Lap Link
Serial custa em mdia R$20,00 o cabo de 4 metros. Se voc tambm um amante da
eletrnica, estou descrevendo o esquema de montagem do cabo em Construindo um
cabo LapLink Serial on the next page.
Voc poder fazer qualquer coisa que faria em uma rede normal (incluindo roteamento
entre redes, MASQUERADING, etc)
mais uma prova das capacidades de rede que possvel usando o Linux.
Agora, os contras da conexo via porta serial:
A porta serial no estar disponvel para ser usada para conexo de mouses, impressoras
seriais, dispositivos eletrnicos e inteligentes, etc.
O comprimento mximo do cabo de 15 metros. Acima dessa comprimento, voc pode
colocar sua controladora em risco alm da perda de sinal. Por segurana, o tamanho
mximo recomendvel 13 metros
Para 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 suporte a cslip (slip compactado, que melhora a taxa de transferncia dependendo dos
dados sendo transmitidos). Caso no tenha o suporte a slip, voc poder usar o ppp nas
duas pontas do link fazendo algumas adaptaes para usar a interface ppp?, como
simples no ser descrito neste guia :) (veja o manual do slattach)
3 Interrompa qualquer programa que esteja usando a porta serial.
72
5.4.1
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
----------
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 |
+---+----+--------+----+----+
74
75
Captulo 6
6.1
6.2
76
6.2.1
syslogd
destino
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 mensagem. Os seguintes nveis so permitidos (em ordem alfabtica):
auth - Mensagens de segurana/autorizao ( recomendvel usar authpriv ao invs deste).
authpriv - Mensagens de segurana/autorizao (privativas).
cron - Daemons de agendamento (cron e at).
daemon - Outros daemons do sistema que no possuem facilidades 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 sistema (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 ;.
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.*
*.*;auth,authpriv.none
cron.*
daemon.*
kern.*
lpr.*
mail.*
user.*
uucp.*
/var/log/auth.log
-/var/log/syslog
/var/log/cron.log
-/var/log/daemon.log
-/var/log/kern.log
-/var/log/lpr.log
/var/log/mail.log
-/var/log/user.log
-/var/log/uucp.log
#
# Registro de logs do sistema de mensagens. Divididos para facilitar
# a criao de scripts para manipular estes arquivos.
#
mail.info
-/var/log/mail.info
mail.warn
-/var/log/mail.warn
mail.err
/var/log/mail.err
# Registro para o sistema de news INN
#
news.crit
/var/log/news/news.crit
news.err
/var/log/news/news.err
news.notice
-/var/log/news/news.notice
#
# Alguns arquivos de registro "pega-tudo".
# So usadas "," para especificar mais de uma prioridade (por
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;\
#
/dev/tty8
*.=notice;*.=warn
# O pipe /dev/xconsole usado pelo utilitrio "xconsole". Para usa-lo,
# voc deve executar o "xconsole" com a opo "-file":
#
#
$ xconsole -file /dev/xconsole [...]
#
# NOTA: ajuste as regras abaixo, ou ficar maluco se tiver um um site
# muito movimentado...
#
daemon.*;mail.*;\
news.crit;news.err;news.notice;\
*.=debug;*.=info;\
|/dev/xconsole
*.=notice;*.=warn
# A linha baixo envia mensagens importantes para o console em que
# estamos trabalhando logados (principalmente para quem gosta de ter
# controle total sobre o que est acontecendo com seu sistema).
*.err;kern.debug;auth.notice;mail.crit /dev/console
6.2.2
80
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 crticos.
-s Fora a utilizao da interface de chamadas do sistema para comunicao com o kernel.
-x Esconde traduo EIP, assim ele no l o arquivo /boot/System.map-xx-xx-xx.
A 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
81
6.4
logger -i -f
6.4.1
logcheck
6.4.2
logrotate
Usado para fazer backups dos logs atuais do sistema (programado via cron, ou outro daemon com a mesma funo) e criando novos arquivos de logs que sero usados pelo sistema.
Opcionalmente os arquivos de logs antigos sero compactados para diminuir a utilizao de
espao em disco ou enviados por e-mail ao administrador. A rotao dos arquivos de logs
proporciona maior agilidade quando precisamos encontrar algum detalhe til (que seria mais
difcil de se achar em um arquivo de log de 10MB ou maior).
A rotao de logs feita de acordo com o tamanho do arquivo de logs 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:
#### Estas opes afetam globalmente o funcionamento do logrotate
# roda os arquivos de log semanalmente
82
weekly
# mantm as ltimas 4 cpias de logs anteriores
rotate 4
# Erros de no existncia dos logs so enviados para o usurio root
mail root
# Cria novos arquivos de log (vazios) aps rodar os antigos
create
# Descomente isso se desejar seus arquivos de logs compactados. O parmetro
# delaycompress usado para que o primeiro log rodado seja mantido
# descompactado
compress
delaycompress
# Executam os scripts em prerotate e postrotate a cada vez que os logs
# forem rodados.
nosharedscripts
# Definimos um diretrio que poder conter definies individuais para
# diversos servios no sistema, eles podem ir neste arquivo mas
# diversas configuraes individuais podem deixar a interpretao
# deste arquivo confusa.
include /etc/logrotate.d
83
missingok
monthly
create 0664 root utmp
rotate 1
}
# Define opes especficas para a rotao mensal de /var/log/lastlog, o novo
# arquivo ser criado com a permisso 0664 com o dono root e grupo
# utmp e ser mantida somente uma cpia do arquivo de log anterior
# (rotate 1).
/var/log/lastlog {
missingok
monthly
create 0664 root utmp
rotate 1
}
# Define opes especficas para a rotao diria de /var/log/messages, o
# arquivo ser rodado se atingir o tamanho de 1Mb, ento o
# novo arquivo ser criado com as mesmas permisses do arquivo anterior.
# O comando killall -1 syslogd ser executado aps a rotao
# para que o daemon syslogd funcione corretamente mas somente uma vez
# durante a rotao de vrios arquivos de logs (sharedscripts).
# Sero mantidas as 10 ltimas cpias do arquivo /var/log/messages
# compactadas (o parmetro compress foi especificado na seo global deste
# arquivo de configurao).
/var/log/messages {
daily
size 1M
sharedscripts
postrotate
/sbin/killall -1 syslogd
endscript
rotate 10
}
84
rotate 7
}
6.5
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 arquivo /etc/init.d/sysklogd colocando a opo -r na varivel SYSLOGD e reinicie o servio usando ./sysklogd restart. Adicionalmente podero ser usadas as
opes -l mquina ( um L minsculo no uma letra I) para registrar o nome FQDN
da mquina e -h para redirecionar conexes a outros servidores de logs (veja syslogd on
page 76).
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
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:
#define _PATH_LOGCONF
"/etc/syslog.conf"
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 servidor de log (desativando qualquer outro servio) e configurar o iptables para aceitar somente
o trfego indo para a porta UDP 514 (syslogd):
iptables -P INPUT DROP
iptables -A INPUT -p udp --dport 514 -j ACCEPT
86
87
Captulo 7
7.1
7.2
Programas de configurao
88
modconf - Permite selecionar os mdulos que sero automaticamente carregados na inicializao do sistema. Se requerido pelos mdulos os parmetros I/O, IRQ e DMA tambm podem ser especificados.
shadowconfig - Permite ativar ou desativar o suporte a senhas ocultas (shadow password). Com as senhas ocultas ativadas, as senhas criptografadas dos usurios e grupos
so armazenadas nos arquivos shadow e gshadow respectivamente, que somente podem ser acessadas pelo usurio root.
Isto aumenta consideravelmente a segurana do sistema pois os arquivos passwd e
group contm dados de usurios que devem ter permisso de leitura de todos os
usurios do sistema.
tasksel - Permite selecionar/modificar de forma fcil a instalao de pacotes em seu
sistema atravs da funo que sua mquina ter ou do seu perfil de usurio.
tzconfig - Permite modificar/selecionar o fuso-horrio usado na distribuio.
Alm destes, a Debian conta com o sistema de configurao baseado no dpkg-reconfigure
que permite configurar de forma fcil e rpida aspecto de pacotes: dpkg-reconfigure
xserver-xorg.
7.3
Arquivos de inicializao
7.4
89
Nveis de Execuo
7.4.1
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 arquivos em /etc/init.d que so acionados pelo nvel de execuo correspondente.
Por exemplo, o arquivo S10sysklogd em /etc/rc2.d, um link simblico para /etc
/init.d/sysklogd.
O que aconteceria se voc removesse o arquivo /etc/rc2.d/S10sysklogd? Simplesmente
o daemon sysklogd deixaria de ser executado no nvel de execuo 2 do sistema (que o
padro da Debian).
A Debian segue o seguinte padro para 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 executados dependem do valor numrico que acompanha o link, por exemplo, os seguintes arquivos
so executados em seqncia:
S10sysklogd
S12kerneld
S20inetd
S20linuxlogo
S20logoutd
S20lprng
90
S89cron
S99xdm
Note que os arquivos que iniciam com o mesmo nmero (S20*) so executados alfabeticamente. O nvel de execuo do sistema pode ser 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 sistema reiniciado. acionado pelo comando shutdown -r e o pressionamento de
CTRL+ALT+DEL.
Por exemplo, para listar o nvel de execuo atual do sistema digite: runlevel. O runlevel
dever listar algo como:
N 2
Agora para mudar para o nvel de execuo 1, digite: init 3. Agora confira a mudana
digitando: runlevel. Voc dever ver este resultado:
2 3
Isto quer dizer que o nvel de execuo anterior era o 2 e o atual o 3.
7.5
7.6
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 verificar 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:
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 relatado. 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).
7.7
92
93
Captulo 8
Personalizao do Sistema
Este captulo ensina como personalizar algumas caractersticas de seu sistema GNU/Linux.
8.1
Variveis de Ambientes
8.2
O idioma usado em seu sistema pode ser modificado facilmente atravs das variveis de ambiente. 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
94
pode usar o comando locale para listar as variveis de localizao do sistema e seus respectivos valores. As principais variveis usadas para determinar qual idioma os programas
localizados utilizaro so:
LANG - 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 identificada 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.
As mensagens de localizao esto localizadas em arquivos individuais de cada programa
em /usr/share/locale/[Idioma]/LC_MESSAGES . Elas so geradas atravs de arquivos
potfiles (arquivos com a extenso .po ou .pot e so gerados catlogos de mensagens .mo.
As variveis de ambiente podem ser especificadas no arquivo /etc/environment desta
forma as variveis sero carregadas toda a vez que seu sistema for iniciado. Voc tambm
pode especificar as variveis de localizao em seu arquivos de inicializao .bash_profile,
.bashrc ou .profile assim toda a vez que entrar no sistema, as variveis de localizao
personalizadas sero carregadas.
Siga as instrues a seguir de acordo com a verso de sua distribuio Debian:
Debian 4.0 Acrescente a linha pt_BR ISO-8859-1 no arquivo /etc/locale.gen, rode o
utilitrio locale-gen para gerar os locales. Agora acrescente as variveis de localizao
no arquivo /etc/locale.def seguindo a forma:
export LANG=pt_BR
export LC_ALL=pt_BR
export LC_MESSAGES=pt_BR
Note que o arquivo /etc/environment tambm pode ser usado para tal tarefa, mas
o locales.def foi criado especialmente para lidar com variveis de localizao na
Debian 4.0.
Para as mensagens e programas do X-Window usarem em seu idioma local, preciso colocar
as variveis no arquivo ~/.xserverrc do diretrio home de cada usurio e dar a permisso
de execuo neste arquivo (chmod 755 .xserverrc). Lembre-se de incluir o caminho completo do arquivo executvel do seu gerenciador de janelas na ltima linha deste arquivo (sem
o & no final), caso contrrio o Xserver ser finalizado logo aps ler este arquivo.
Abaixo exemplos de localizao com as explicaes:
export LANG=pt_BR - Usa o idioma pt_BR como lngua padro do sistema. Caso o
idioma Portugues do Brasil no esteja disponvel, C usado (Ingls).
export LANG=C - Usa o idioma Ingls como padro ( a mesma coisa de no especificar
LANG, pois o idioma Ingls usado como padro).
export LANG=pt_BR:pt_PT:es_ES:C - Usa o idioma Portugus do Brasil como
padro, caso no esteja disponvel usa o Portugus de Portugal, se no estiver disponvel
usa o Espanhol e por fim o Ingls.
LANG=es_ES ls --help - Executa apenas o comando ls --help usando o idioma
95
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.
8.4
Arquivo /etc/profile
Este arquivo contm comandos que so executados para todos os usurios do sistema no momento do login. Somente o usurio root pode ter permisso para 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
96
usados somente pelo Bash. Exemplo, inserindo a linha mesg y no arquivo /etc/profile
permite que todos os usurios do sistema recebam pedidos de talk de outros usurios. Caso
um usurio no quiser receber pedidos de talk, basta somente adicionar a linha mesg n no
arquivo pessoal .bash_profile.
8.5
Arquivo .bash_profile
Este arquivo reside no diretrio pessoal de cada usurio. executado por shells que usam
autenticao (nome e senha). .bash_profile contm comandos que so executados para o
usurio no momento do login no sistema aps o /etc/profile. Note que este um arquivo
oculto pois tem um . no inicio do nome.
Por exemplo colocando a linha: alias ls=ls --colors=auto no .bash_profile,
cria um apelido para o comando ls -colors=auto usando ls, assim toda vez que voc
digitar ls ser mostrada a listagem colorida.
8.6
Arquivo .bashrc
8.7
Arquivo .hushlogin
Deve ser colocado no diretrio pessoal do usurio. Este arquivo faz o bash pular as mensagens
do /etc/motd, nmero de e-mails, etc. Exibindo imediatamente o aviso de comando aps a
digitao da senha.
8.8
Arquivo /etc/environment
Armazena as variveis de ambiente que so exportadas para todo o sistema. Uma varivel
de ambiente controla o comportamento de um programa, registram detalhes teis durante a
seo do usurio no sistema, 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
8.9
97
Diretrio /etc/skel
Este diretrio contm os modelos de arquivos .bash_profile e .bashrc que sero copiados
para o diretrio pessoal dos usurios no momento que for criada uma conta no sistema. Desta
forma voc no precisar configurar estes arquivos separadamente para cada usurio.
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. .
9.1
Portas de impressora
Uma porta de impressora o local do sistema usado para se comunicar com a impressora. Em
sistemas GNU/Linux, a porta de impressora paralela identificada como lp0,lp1,lp2 no diretrio /dev, caso a impressora seja USB, o dispositivo ser o mesmo, mas estar disponvel no
diretrio /dev/usb. Os dispositivos lp0,lp1elp2 correspondem respectivamente a LPT1,
LPT2 e LPT3 no DOS e Windows. Recomendo que o suporte a porta paralela esteja compilado
como mdulo no kernel.
9.2
Isto feito direcionando a sada ou o texto com > diretamente para a porta de impressora no
diretrio /dev.
Supondo que voc quer imprimir o texto contido do arquivo trabalho.txt e a porta de
impressora em seu sistema /dev/usb/lp0, voc pode usar os seguintes comandos:
cat trabalho.txt >/dev/usb/lp0 - Direciona a sada do comando cat para a impressora USB conectada em lp0.
cat <trabalho.txt >/dev/usb/lp0. Faz a mesma coisa que o acima.
cat -n trabalho.txt >/dev/usb/lp0 - Numera as linhas durante a impresso.
head -n 30 trabalho.txt >/dev/usb/lp0 - Imprime as 30 linhas iniciais do arquivo.
Captulo 9. Impresso
100
9.3
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 (recomendado) em sistemas GNU/Linux.
Logo aps receber o arquivo que ser impresso, o programa de spool gera um arquivo temporrio (normalmente localizado em /var/spool/lpd) que ser colocado em fila para a impresso (um trabalho ser impresso aps o outro, em seqncia). O arquivo temporrio gerado
pelo programa de spool apagado logo aps concluir a impresso.
Antes de se imprimir qualquer coisa usando os daemons de impresso, preciso configurar
os parmetros de sua impressora no arquivo /etc/printcap. Um arquivo /etc/printcap
para uma impressora local padro se parece com o seguinte:
lp|Impressora compatvel com Linux
:lp=/dev/lp0
:sd=/var/spool/lpd/lp
:af=/var/log/lp-acct
:lf=/var/log/lp-errs
:pl#66
:pw#80
:pc#150
:mx#0
:sh
possvel tambm compartilhar a impressora para a impresso em sistemas remotos, isto ser
visto em uma seo separada neste guia.
Usando os exemplos anteriores da seo Imprimindo diretamente para uma porta
de impressora, vamos acelerar as coisas:
cat trabalho.txt |lpr - Direciona a sada do comando cat para o programa de
spool lpr.
Captulo 9. Impresso
101
9.4
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 :-)
9.4.1
Ghost Script
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
Captulo 9. Impresso
103
entendido por impressoras epson e poder ser impresso com o comando cat
arquivo.epson >/dev/lp0. Uma curiosidade til: possvel imprimir este
arquivo em outros sistemas operacionais, tal como o DOS digitando: copy /b
arquivo.eps prn (lembre-se que o DOS tem um limite de 8 letras no nome
do arquivo e 3 na extenso. Voc deve estar compreendendo a 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 impressos usando os mesmos mtodos acima.
* /dev/lp0 para uma impressora em /dev/lp0
* - para redirecionar a sada de processamento do gs para a sada padro. til
para usar o gs com pipes |.
* \|lpr - Envia a sada do Ghost Script para o daemon de impresso. O objetivo
deixar a impresso mais rpida.
Se voc curioso ou no esta satisfeito com as opes mostradas acima, veja a pgina
de manual do gs.
9.5
Magic Filter
O Magic Filter um filtro de impresso inteligente. Ele funciona acionado pelo spool de impresso (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.
9.5.1
Captulo 9. Impresso
104
executar o Ghost Script e retornar o resultado do processamento para o daemon de impresso. O resultado ser visto na impressora.
Se tiver problemas, verifique se a configurao feita com o magicfilterconfig est correta.
Caso precise re-configurar o magicfilter, digite magicfilterconfig --force (lembrese que a opo force substitui qualquer configurao personalizada que tenha adicionado ao
arquivo /etc/printcap).
9.5.2
# PostScript
0 %! filter /usr/bin/gs -q -dSAFER -dNOPAUSE -r120x72 -sDEVICE=epson -sOutputF
0 \004%! filter /usr/bin/gs -q -dSAFER -dNOPAUSE -r120x72 -sDEVICE=epson -sOut
# PDF
0 %PDF fpipe /usr/bin/gs -q -dSAFER -dNOPAUSE -r120x72 -sDEVICE=epson -sOutput
# TeX DVI
0 \367\002 fpipe /usr/bin/dvips -X 120
# compressd data
0 \037\235 pipe /bin/gzip
-cdq
-Y 72
-R -q -f
Captulo 9. Impresso
#
0
0
0
0
105
-cdq
troff documents
.\?\?\040 fpipe /usr/bin/grog -Tps $FILE
.\\\" fpipe /usr/bin/grog -Tps $FILE
\\\" fpipe /usr/bin/grog -Tps $FILE
.\\\" fpipe /usr/bin/grog -Tps $FILE
\\\" fpipe /usr/bin/grog -Tps $FILE
Voc deve ter notado que para cada tipo de arquivo existe o respectivo programa que executado, basta voc 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.
9.6
Impresso remota
Aqui ser explicado como fazer seu sistema Linux atuar como um servidor de impresso para
outras mquinas de sua rede.
9.6.1
As mquinas autorizadas a usar a impressora local devero ter seus nomes includos no arquivo /etc/hosts.lpd (para o daemon lpd padro) ou /etc/lprng/lpd.perms (para o
daemon lpd do pacote lprng).
O arquivo /etc/lprng/lpd.perms do lprng mais configurvel (e complexo), uma linha
como:
ACCEPT HOST=estacao1.dominio.org SERVICE=X,R,P,Q,M,C
aceitar os servios (SERVICE) de conexo (X), lpr (R), impresso de trabalhos (P), lpq (Q),
lprm (M) e lpc (C) da mquina estacao1.dominio.org. Veja os comentrios neste arquivo
para entender o funcionamento de suas opes ou a pgina de manual do lpd.perms.
Captulo 9. Impresso
9.6.2
106
listagem.txt
para
impressora
hp
no
servidor
9.6.3
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 enviar a impresso para a impressora hp (rp=hp) na mquina impr.meudominio.org
(rm=impr.meudominio.org).
Caso voc tenha a opo de imprimir tanto para uma impressora local quando para uma remota, voc poder usar uma 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
Este captulo documenta o funcionamento do firewall iptables que acompanha a srie do
kernel 2.4, opes usadas, e aponta alguns pontos fundamentais para iniciar a configurao e
construo de bons sistemas de firewall.
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 administrador para controle de trfego, controle independente do trfego da rede local/entre
redes/interfaces devido a nova organizao das etapas de roteamento de pacotes.
O iptables um 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 (masquerading, source nat, destination nat), redirecionamento de pacotes, marcao de pacotes,
modificar a prioridade de pacotes que chegam/saem do seu sistema, contagem de bytes, dividir 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
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.
10.1.2
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.
10.1.3
111
Tratamento de trfego dividido em chains (para melhor controle do trfego que entra/sai
da mquina e trfego redirecionado.
Permite um nmero ilimitado de regras por chain
Muito rpido, estvel e seguro
Possui mecanismos internos para rejeitar automaticamente pacotes duvidosos ou mal
formados.
Suporte a mdulos externos para expanso das funcionalidades padres oferecidas pelo
cdigo de 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).
10.1.4
Ficha tcnica
Pacote: iptables
iptables - Sistema de controle principal para protocolos ipv4
ip6tables - Sistema de controle principal para protocolos ipv6
iptables-save - Salva as regras atuais em um arquivo 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 Habilitando o suporte ao iptables no kernel on page 115. O requerimento mnimo de memria
necessria para a execuo do iptables o mesmo do kernel 2.4 (4MB). Dependendo do
trfego que ser manipulado pela(s) interface(s) do 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.
10.1.6
112
Todo trfego que for registrado pelo iptables registrado por padro no arquivo /var/log
/kern.log.
10.1.7
Instalao
10.1.8
10.1.9
O iptables faz parte da nova gerao de firewalls que acompanha o kernel 2.4, mas o suporte ao ipchains e ipfwadm ainda ser mantido atravs de mdulos de compatibilidade do
kernel at 2004. Seria uma grande falta de considerao retirar o suporte a estes 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.
10.1.10
Tipos de firewalls
113
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 parmetros 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.
10.1.11
O que proteger?
10.1.12
114
O que so regras?
As regras so como comandos passados ao iptables para que ele realize uma determinada ao (como bloquear ou deixar passar um pacote) de acordo com o endereo/porta
de origem/destino, interface de origem/destino, etc. As regras so armazenadas dentro dos
chains e processadas na ordem que so inseridas.
As regras so armazenadas no kernel, o que 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.
10.1.13
O que so chains?
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).
10.1.14
O que so tabelas?
Tabelas so os locais usados para armazenar os chains e conjunto de regras com uma determinada caracterstica em comum. As tabelas podem ser referenciadas com a opo -t tabela e
existem 3 tabelas disponveis no iptables:
filter - Esta a tabela padro, contm 3 chains padres:
INPUT - Consultado para dados que chegam a mquina
OUTPUT - Consultado para dados que saem da mquina
FORWARD - Consultado para dados que so redirecionados para outra interface de
rede ou outra mquina.
Os chains INPUT e OUTPUT somente so atravessados por conexes indo/se originando
de localhost.
OBS: Para conexes locais, somente os chains INPUT e OUTPUT so consultados na
tabela filter.
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 modificados antes de serem roteados. Este chain somente consultado para conexes que
se originam de IPs de interfaces locais.
115
10.1.15
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:
*
Network packet filtering (replaces ipchains) [Y/m/n/?]
Network packet filtering debugging [Y/m/n/?]
e na Subseo:
*
IP: Netfilter Configuration
*
*
Connection tracking (required for masq/NAT) (CONFIG_IP_NF_CONNTRACK) [M/n/y/?]
FTP protocol support (CONFIG_IP_NF_FTP) [M/n/?]
IRC protocol support (CONFIG_IP_NF_IRC) [M/n/?]
IP tables support (required for filtering/masq/NAT) (CONFIG_IP_NF_IPTABLES) [Y
limit match support (CONFIG_IP_NF_MATCH_LIMIT) [Y/m/n/?]
MAC address match support (CONFIG_IP_NF_MATCH_MAC) [M/n/y/?]
netfilter MARK match support (CONFIG_IP_NF_MATCH_MARK) [M/n/y/?]
116
10.1.16
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.
10.2
117
Manipulando chains
O iptables trabalha com uma tabela de regras que analisada uma a uma at que a ltima
seja processada. Por padro, se uma regra tiver qualquer erro, uma mensagem ser mostrada
e ela descartada. O pacote no conferir e a ao final (se ele vai ser aceito ou rejeitado) depender das regras seguintes.
As opes passadas ao iptables usadas para manipular os chains so SEMPRE em maisculas. As seguintes operaes podem ser realizadas:
10.2.1
Adicionando regras - A
Como exemplo vamos criar uma regra que bloqueia o acesso a nosso prpria mquina
(127.0.0.1 - loopback). Primeiro daremos um ping para 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
--- 127.0.0.1 ping statistics --2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.5/0.5/0.6 ms
Ok, a mquina responde, agora vamos incluir uma regra no chain INPUT (-A INPUT) que
bloqueie (-j DROP) qualquer acesso indo ao endereo 127.0.0.1 (-d 127.0.0.1):
iptables -t filter -A INPUT -d 127.0.0.1 -j DROP
Agora verificamos um novo ping:
#ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
--- 127.0.0.1 ping statistics --2 packets transmitted, 0 packets received, 100% packet loss
Desta vez a mquina 127.0.0.1 no respondeu, pois todos os pacotes com o destino 127.0.0.1 (-d
127.0.0.1) so rejeitados (-j DROP). A opo -A usada para adicionar novas regras no 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.
118
OBS2: - A tabela filter ser usada como padro caso nenhuma tabela seja especificada atravs
da opo -t.
10.2.2
Listando regras - L
destination
localhost
destination
127.0.0.1
119
destination
127.0.0.1
#iptables -L INPUT -n -v
Chain INPUT (policy ACCEPT 78 packets, 5820 bytes)
pkts bytes target
prot opt in
out
source
2
194 DROP
icmp -- *
0.0.0.0/0
*
Os campos assim possuem o seguinte significado:
Chain INPUT Nome do chain listado
(policy ACCEPT 78 packets, 5820 bytes) poltica padro do chain (veja Especificando a
poltica padro de um chain - P on page 123).
pkts Quantidade de pacotes que atravessaram a regra (veja Zerando contador de bytes dos
chains - Z on page 123).
bytes Quantidade de bytes que atravessaram a regra. Pode ser referenciado com K (Kilobytes),
M (Megabytes), G (Gigabytes).
target O alvo da regra, o destino do pacote. Pode ser ACCEPT, DROP ou outro chain. Veja
Especificando um alvo on page 130 para detalhes sobre a especificao de um alvo.
prot Protocolo especificado pela regra. Pode ser udp, tcp, icmp ou all. Veja Especificando um
protocolo on page 126 para detalhes.
opt Opes extras passadas a regra. Normalmente ! (veja Especificando uma exceo on
page 129) ou f (veja Especificando fragmentos on page 129).
in Interface de entrada (de onde os dados chegam). Veja Especificando a interface de
origem/destino on page 125.
out Interface de sada (para onde os dados vo). Veja Especificando a interface de
origem/destino on page 125.
source Endereo de origem. Veja Especificando um endereo de origem/destino on page 124.
destination Endereo de destino. Veja Especificando um endereo de origem/destino on
page 124.
outras opes Estas opes normalmente aparecem quando so usadas a opo -x:
dpt ou dpts - Especifica a porta ou faixa de portas de destino.
reject-with icmp-port-unreachable - Significa que foi usado o alvo REJECT naquela regra (veja Alvo REJECT on page 130).
10.2.3
destinatio
127.0.0.1
120
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. . . ).
10.2.4
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.
10.2.5
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).
10.2.6
Em firewalls organizados com um grande nmero de regras, interessante criar chains individuais para organizar regras de um mesmo tipo ou que tenha por objetivo analisar um
trfego de uma mesma categoria (interface, endereo de origem, destino, protocolo, etc) pois
podem consumir muitas linhas e tornar o gerenciamento do firewall confuso (e conseqentemente causar srios riscos de segurana). O tamanho mximo de um nome de chain de 31
caracteres e podem conter tanto letras maisculas quanto minsculas.
iptables [-t tabela] [-N novochain]
Para criar o chain internet (que pode ser usado para agrupar as regras de internet) usamos o
seguinte comando:
iptables -t filter -N internet
121
Para inserir regras no chain internet basta especifica-lo aps a opo -A:
iptables -t filter -A internet -s 200.200.200.200 -j DROP
E ento criamos um pulo (-j) do chain INPUT para o chain internet:
iptables -t filter -A INPUT -j internet
OBS: O chain criando pelo usurio pode ter seu nome tanto em maisculas como minsculas.
Se uma mquina do endereo 200.200.200.200 tentar acessar sua mquina, o iptables consultar as seguintes regras:
INPUT
---------------------------| Regra1: -s 192.168.1.15 |
|--------------------------|
| Regra2: -s 192.168.1.1
|
|--------------------------|
| Regra3: -j DROP
|
----------------------------
internet
----------------------------| Regra1: -s 200.200.200.200|
|---------------------------|
| Regra2: -d 192.168.1.1
|
-----------------------------
_______________________________________
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.
122
10.2.7
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:
iptables -t filter -E chain-antigo novo-chain
Note que no possvel renomear os chains defaults do iptables.
10.2.8
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.
10.2.9
123
chain Chain que desejamos limpar. Caso um chain no seja especificado, todos os chains da
tabela sero limpos.
iptables -t filter -F INPUT
iptables -t filter -F
10.2.10
10.2.11
Este comando zera o campo pkts e bytes de uma regra do iptables. Estes campos podem ser
visualizados com o comando iptables -L -v. A seguinte sintaxe usada:
iptables [-t tabela] [-Z chain] [-L]
Onde:
tabela Nome da tabela que contm o chain que queremos zerar os contadores de bytes e pacotes.
chain Chain que deve ter os contadores zerados. Caso no seja 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.
iptables -t filter -Z INPUT
10.2.12
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:
124
destination
localhost
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:
iptables -t filter -P INPUT DROP
NOTA: As polticas de acesso PERMISSIVASS (ACCEPT) normalmente so usadas em conjunto com regras restritivas no chain correspondentes (tudo bloqueado e o que sobrar liberado) e polticas RESTRITIVAS (DROP) so usadas em conjunto com regras permissivas no
chain correspondente (tudo liberado e o que sobrar bloqueado pela poltica padro).
10.3
10.3.1
As opes -s (ou src/source)e -d (ou dst/destination) servem para especificar endereos de origem e destino respectivamente. permitido usar um endereo IP completo
(como 192.168.1.1), um hostname (debian), um endereo fqdn (www.debian.org) ou um par
rede/mscara (como 200.200.200.0/255.255.255.0 ou 200.200.200.0/24).
Caso um endereo/mscara no sejam especificados, assumido 0/0 como padro (todos as
mquinas de todas as redes). A interpretao dos endereos de origem/destino dependem do
chain que est sendo especificado (como INPUT e OUTPUT por exemplo).
OBS: Caso seja especificado um endereo fqdn e este resolver mais de um endereo IP, sero
criadas vrias regras, cada uma se aplicando a este endereo IP especfico. recomendvel
sempre que possvel a especificao de endereos IPs nas regras, pois alm de serem muito
rpidos (pois no precisar de resoluo DNS) so mais seguros para evitar que nosso firewall
seja enganado por um ataque de IP spoofing.
125
10.3.2
+---------------------+--------------------------------+
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):
126
10.3.3
Especificando um protocolo
A opo -p (ou protocol) usada para especificar protocolos no iptables. Podem ser especificados os protocolos tcp, udp e icmp. Por exemplo, para rejeitar todos os pacotes UDP
vindos de 200.200.200.200:
iptables -A INPUT -s 200.200.200.200 -p udp -j DROP
OBS1: Tanto faz especificar os nomes de protocolos em maisculas ou minsculas.
Especificando portas de origem/destino
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 destino.
Uma faixa de portas pode ser especificada atravs de PortaOrigem:PortaDestino:
# Bloqueia qualquer pacote indo para 200.200.200.200 na faixa de
# portas 0 a 1023
iptables -A OUTPUT -d 200.200.200.200 -p tcp --dport :1023 -j DROP
127
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 especificar 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.
Especificando mensagens do protocolo ICMP
O protocolo ICMP no possui portas, mas possvel fazer um controle maior sobre o trfego
ICMP que entra/sai da rede atravs da 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:
iptables -A INPUT -s 200.123.123.10 -p icmp --icmp-type time-exceeded -i ppp+
A regra acima rejeitar mensagens ICMP do tipo time-exceeded (tempo de requisio excedido) que venham do endereo 200.123.123.10 atravs da interface ppp+.
Alguns tipos de mensagens ICMP so classificados por categoria (como o prprio timeexceeded), caso a categoria time-exceeded seja especificada, todas as mensagens daquela
categoria (como ttl-zero-during-transit, ttl-zero-during-reassembly) conferiro na regra especificada.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
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
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 configurao, 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.
10.3.4
129
Especificando fragmentos
A opo -f (ou fragment) permite especificar regras que confiram com fragmentos. Fragmentos so simplesmente um pacote maior dividido em pedaos para poder ser transmitido
via rede TCP/IP para remontagem do pacote pela mquina de destino.
Somente o primeiro fragmento possui detalhes de cabealho para ser processado, os segundos
e seguintes somente possuem alguns cabealhos necessrios para dar continuidade ao processo
de remontagem do pacote no destino.
Uma regra como
iptables -A INPUT -s 200.200.200.1 -f -j DROP
derrubar os fragmentos de 200.200.200.1 derrubar o segundo pacote e pacotes seguintes enviados por 200.200.200.1 at ns.
OBS1: Note que se o cabealho do pacote no tiver detalhes suficientes para checagem de
regras no iptables, a regra simplesmente no ira conferir.
OBS2: No preciso especificar a opo -f para conexes NAT, pois os pacotes so remontados antes de entrarem no cdigo de filtragem.
OBS3: A opo -f tambm pode ser usada para evitar o flood por fragmentos (bomba de
fragmentos) que, dependendo da intensidade, podem at travar a mquina.
10.3.5
10.3.6
130
Especificando um alvo
O alvo (-j) o destino que um pacote ter quando conferir com as condies de uma regra, um
alvo pode dizer para bloquear a passagem do pacote (-j DROP), aceitar a passagem do pacote
(-j ACCEPT), registrar o pacote no sistema de log (-j LOG), rejeitar o pacote (-j REJECT), redirecionar um pacote -j REDIRECT, retornar ao chain anterior sem completar o processamento
no chain atual (-j RETURN), passar para processamento de programas externos (-j QUEUE),
fazer source nat (-j SNAT), destination nat (-j DNAT), etc. Podem existir mais alvos, pois o
iptables modularizvel, e mdulos que acrescentam mais funes podem ser carregados
em adio aos j existentes no kernel.
Nos exemplos anteriores vimos o uso de diversos alvos como o DROP e o ACCEPT. Apenas
farei uma breve referncia sobre os alvos mais usados em operaes comuns dos chains. Os
alvos REDIRECT, SNAT e DNAT sero explicados em uma seo seguinte:
ACCEPT O pacote ACEITO e o processamento das regras daquele chains concludo. Pode
ser usado como alvo em todos os chains de todas as tabelas do iptables e tambm pode
ser 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 hostunreachable (ICMP) retornada para a mquina de origem. Pode ser usado como alvo
somente nos chains da tabela (no como poltica padro).
LOG Este mdulo envia uma mensagem ao syslog caso a regra 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-portunreachable como padro para a mquina de origem.
um alvo interessante para bloqueio de portas TCP, pois em alguns casos da a impresso que
a mquina no dispe de um sistema de 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.
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 atingir a poltica padro do chain.
# Rejeita pacotes vindos de 200.200.200.1 pela interface ppp0:
iptables -A INPUT -s 200.200.200.1 -i ppp+ -j REJECT
132
133
iptables
iptables
iptables
iptables
iptables
iptables
iptables
iptables
-t
-t
-t
-t
-t
-t
-t
-t
filter
filter
filter
filter
filter
filter
filter
filter
-A
-j
-N
-A
-A
-A
-A
-A
INPUT -i
ACCEPT
internet
internet
internet
internet
internet
internet
ppp0 -j internet
-s
-p
-p
-p
-p
www.debian.org
tcp --dport 21
tcp --dport 23
tcp --dport 25
tcp --dport 80
-p
-j
-j
-j
-j
134
Quando um pacote com o endereo www.debian.org tentando acessar a porta www (80)
de nossa mquina atravs da internet (via interface ppp0), o chain nmero 1 confere, ento o
processamento continua no chain nmero 4, o chain nmero 4 confere ento o processamento
volta para a regra nmero 2, que diz para aceitar o pacote.
Agora se um pacote vem com o endereo www.dominio.com.br tentando acessar a porta
www *80) de nossa mquina atravs da internet (via interface ppp0), o chain nmero 1 confere,
ento o processamento continua no chain nmero 4, que no confere. O mesmo acontece com
os chains 5, 6 e 7. O chain nmero 8 confere, ento o acesso bloqueado.
Como pode notou, o alvo RETURN facilita bastante a construo das regras do seu 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 determinadas mquinas.
10.3.7
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
10.4
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).
135
10.4.1
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.
10.4.2
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 requisies/resoluo de nomes das mquinas em rede. A utilizao de bits TOS tambm pode
trazer um grande aumento de velocidade para os diferentes servios da rede (veja Especificando o tipo de servio on page 139).
10.4.3
136
Fazendo SNAT
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 fragmentos na tabela nat, pois eles sero remontados antes de entrar no cdigo de roteamento.
O SNAT a soluo quando voc tem acesso a internet atravs de um nico IP e deseja fazer
que sua rede tenha acesso a Internet atravs da mquina Linux. Nenhuma mquina da Internet poder ter acesso direto as mquinas de sua rede interna via SNAT.
OBS: A observao acima no leva em conta o controle de acesso externo configurado na
mquina que estiver configurando o iptables, uma configurao mau realizada pode expor 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 intermitentes como PPP, veja Fazendo IP Masquerading on the facing page). O parmetro --to
IP:portas deve ser usado aps o alvo SNAT. Ele serve para especificar um endereo IP, faixa
de endereos e opcionalmente uma porta ou faixa de portas que ser substituda. Toda a operao de SNAT realizada atravs do chain POSTROUTING:
137
10.4.4
138
Fazendo DNAT
10.4.5
139
10.5
A tabela mangle
A tabela mangle serve para especificar aes especiais para o tratamento do trfego que atravessa os chains. Nesta tabela existem cincos chains: PREROUTING, POSTROUTING, INPUT,
OUTPUT e FORWARD (veja O que so tabelas? on page 114 para maiores detalhes).
Em geral, cada um deste chain processado antes do chain correspondente na tabela 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 considerados em tempo real. Mesmo aps o trfego ser estabelecido, os chains da tabela mangle
continuam ativos para garantir que as opes especiais relacionadas com a conexo continuem
fazendo efeito (veja os exemplos de Caminho percorrido pelos pacotes nas tabelas e chains
on page 147).
10.5.1
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 algoritmo FIFO do prprio kernel, sendo uma das alternativas de controle/priorizao de trfego
das mais simples e rpidas.
Uma das vantagens da utilizao do tipo de servio dar prioridade ao trfego de pacotes
interativos (como os do ICQ, IRC, servidores de chat), etc. Com o TOS 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 desempenho em trfego interativo (em torno de 300%), durante o uso total da banda da interface
ppp em grande consumo de banda.
Usamos o alvo TOS (-j TOS) para 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.
140
Os pacotes vem por padro com o valor TOS ajustado como prioridade normal (bits tos ajustados para 0x00). O tipo Mnima Espera o de maior prioridade, recomendado para trfego
interativo.
Especificando o TOS para trfego de sada
Este o mais usado, pois prioriza o trfego que sai da mquina (com destino a Internet, por
exemplo). Sua operao realizada atravs do chain OUTPUT ou POSTROUTING.
Para priorizar todo o trfego de IRC de nossa rede interna indo para a interface ppp0:
10.6
141
10.6.1
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:
NEW - Confere com pacotes que criam novas conexes
ESTABLISHED - Confere com conexes j estabelecidas
RELATED - Confere com pacotes relacionados indiretamente a uma conexo, como mensagens de erro icmp, etc.
INVALID - Confere com pacotes que no puderam ser identificados por algum motivo.
Como respostas de conexes desconhecidas.
Caso seja necessrio especificar mais de uma opes estas devem ser separadas por vrgulas.
iptables -A INPUT -m state --state NEW -i ppp0 -j DROP
Bloqueia qualquer tentativa de nova conexo vindo da interface ppp0.
iptables -A INPUT -m state --state NEW,INVALID -i ppp0 -j LOG
Permite registrar novas conexes e pacotes invlidos vindos da interface ppp0.
10.6.2
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:
--limit num/tempo - Permite especificar a taxa de conferncias do limit. O parmetro
num especifica um nmero e tempo pode ser
s - Segundo
m - Minuto
142
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.
10.6.3
A regra abaixo pode tomada como base para proteo contra ping flood:
10.6.4
143
servidores que possuem um grande nmero de acessos para no ter problemas que afetem seu
clientes.
ATENO: Os exemplos acima devem so somente exemplos para criao de suas prprias
regras com limitaes, caso um pacote no 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.
10.6.5
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:
iptables -A INPUT -s 192.168.1.0/24 -i ! eth0 -j DROP
iptables -A INPUT ! -s 192.168.1.0/24 -i eth0 -j DROP
A primeira regra diz para bloquear todos os endereos da faixa de rede 192.168.1.* que NO
vem da interface eth0, a segunda regra diz para bloquear todos os endereos que no sejam
192.168.1.* vindos da interface eth0. O smbolo ! serve para especificar excees (veja Especificando uma exceo on page 129. O kernel do Linux automaticamente bloqueia a passagem de pacotes que dizem ser de 127.0.0.1 e no est vindo da interface loopback.
O mtodo preferido para controlar o ip 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).
10.6.6
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:
144
10.6.7
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.
iptables -t filter -A INPUT -m mac --mac-source 00:80:AD:B2:60:0B -j DROP
Confere com a mquina com endereo ethernet igual a 00:80:AD:B2:60:0B.
10.6.8
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 especificado. 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 especificado.
--sid-owner ID - Confere se o pacote foi criado por um processo no grupo de seo
especificado.
OBS: - Lembre-se que pacotes que no possuem detalhes suficientes de cabealho nunca conferiro!
145
10.6.9
10.6.10
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]
146
10.6.11
O mdulo rpc permite um controle especial sobre o trfego RPC que chega at a sua mquina.
Um uso til restringir a chamada a determinados nmeros RPC e permitir outros (por exemplo, permitindo somente o servio keyserv e bloqueando outros como o ypserv ou portmapper).
As seguintes opes podem ser usadas com o mdulo nfs:
--rpcs [procedimentos] - Confere com a lista de chamadas RPC especificadas.
Mais de um procedimento RPC pode ser especificado como nome ou nmero separandoos com vrgulas. Um arquivo til que contm esta lista o /etc/rpc.
--strict - Ignora servios RPC que no contenham a chamada get do portmapper. Em
situaes normais, o inicio de qualquer solicitao RPC.
Veja alguns exemplos:
# Para conferir com todas as chamadas RPC referentes a conexes iniciadas
# para o portmapper
iptables -A INPUT -m rpc --rpcs portmapper --strict -j DROP
# Para permitir que somente as chamadas para status e statmon sejam
# aceitas
iptables -A INPUT -m rpc --rpcs 100023,100024 -j ACCEPT
10.6.12
O mdulo pkttype permite identificar um pacote do tipo unicast (direcionado a voc), broadcast (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:
# Bloqueia a passagem de pacotes multicast de uma rede para outra
iptables -A FORWARD -i eth0 -o eth0 -m pkttype --pkt-type multicast -j DROP
147
# Como deve ter notado, possvel fazer a associao com diversas especifica
# de mdulos, bastando apenas especificar uma opo "-m" para cada mdulo
# adicional:
# Permite a passagem de pacotes broadcast de uma rede para outra com
# limitao de 5/s.
iptables -A FORWARD -i eth0 -o eth0 -m pkttype --pkt-type broadcast -m limit -
10.6.13
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:
# Bloqueia qualquer pacote ICMP maior que 30Kb
iptables -A INPUT -i eth0 -m length --length 30000: -j DROP
# Bloqueia qualquer pacote com o tamanho entre 20 e 2000 bytes
iptables -A INPUT -i eth0 -m length --length 20:2000 -j DROP
10.7
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.
10.7.1
148
10.7.2
149
10.7.3
150
10.7.4
151
A requisio ftp passa atravs dos chains especificados em SADA DOS PACOTES com o destino 200.198.129.162 porta 21 (aps a resoluo DNS de www.debian.org.br) e retorna
por ENTRADA DE PACOTES para 200.217.29.67 porta 1407. Aps a conexo ser estabelecida, o caminho de sada de pacotes :
+-------------+
+-------------+
+------------------+
|OUTPUT-mangle| => |OUTPUT-filter| => |POSTROUTING-mangle|
+-------------+
+-------------+
+------------------+
pois os dados no precisam de tratamento SNAT (os chains OUTPUT-nat e POSTROUTINGnat so processado somente uma vez a procura de regras que conferem, principalmente para
fazer SNAT).
E aps a conexo estabelecida, o caminho de entrada de pacotes passa a ser:
+-----------------+
+------------+
+------------+
|PREROUTING-mangle| => |INPUT-mangle| => |INPUT-filter|
+-----------------+
+------------+
+------------+
pois os dados no precisam de tratamento DNAT (o chain PREROUTING-nat processado
somente uma vez a procura de regras que conferem, principalmente para fazer DNAT).
OBS: Para qualquer operao de entrada/sada de pacotes, os dois chains da tabela mangle so
sempre os primeiros a serem acessados. Isto necessrio para definir a prioridade e controlar
outros aspectos especiais dos pacotes que atravessam os filtros.
10.7.5
192.168.1.4)
+------------------+
|POSTROUTING-mangle|
+------------------+
152
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 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.
10.7.6
10.7.7
153
+-----------------+
+--------------+
+--------------+
+-------------|PREROUTING-mangle| => |FORWARD-mangle| => |FORWARD-filter| => |POSTROUTING-ma
+-----------------+
+--------------+
+--------------+
+-------------Aps a conexo estabelecida, o caminho da entrada de pacotes vindos de 200.198.129.163 :
+-----------------+
+--------------+
+--------------+
+-------------|PREROUTING-mangle| => |FORWARD-mangle| => |FORWARD-filter| => |POSTROUTING-ma
+-----------------+
+--------------+
+--------------+
+-------------Isto acontece porque aps feita a conexo Masquerading (via PREROUTING-nat), o 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.
154
10.7.8
10.7.9
Este grfico foi retirado do documento netfilter-hacking-HOWTO.txt e mostra a estrutura geral de passagem dos pacotes nas tabelas/chains. Os exemplos de passagem de pacotes
155
acima podero ser facilmente comparados com as etapas abaixo para compreender a estrutura
do iptables.
10.8
Exemplo de como bloquear todas as conexes para a mquina do firewall permitindo somente
conexes da mquina Linux para fora.
10.8.1
As regras a seguir servem para bloquear tentativas de conexes da interface de Internet (ppp0)
a sua rede sem bloquear o trfego de conexes j iniciadas. O trfego de outras interfaces no
afetado com as regras a seguir:
iptables -A INPUT -i ppp0 -m state --state ! ESTABLISHED,RELATED -j DROP
Todas as conexes vindas de ppp0 de estado diferente de ESTABLISHED e RELATED (NEW e
INVALID) sero derrubadas. Veja Conferindo de acordo com o estado da conexo on page 141
para detalhes.
iptables -A INPUT -i ppp0 --syn -j DROP
Este acima mais simples e possui o mesmo efeito: Pacotes SYN so usados para iniciar conexes, derrubando pacotes deste tipo 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.
10.8.2
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"
iptables -t filter -N trojans-in
for PORTA in ${TROJAN_PORTS};do
iptables -A trojans-in -p tcp --sport=1024: --dport=${PORTA} -j LOG \
--log-prefix "FIREWALL: Trojan ${PORTA} "
iptables -A trojans-in -p tcp --sport=1024: --dport=${PORTA} -j DROP
done
iptables -t filter -A INPUT -i ppp0 -j trojans-in
A primeira linha do iptables cria o chain trojans-in dentro da tabela 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).
10.8.3
O seguinte exemplo permite ligar sua rede interna com a faixa de IPs 192.168.1.* a internet
(usando uma conexo discada do tipo ppp):
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp+ -j MASQUERADE
echo "1" >/proc/sys/net/ipv4/ip_forward
10.8.4
157
Esta seo possui um exemplo mais elaborado de firewall que servir para mquinas conectadas via ppp com uma rede interna conectada via Masquerading. Este exemplo no to
complexo e cobre as expectativas mais comuns de pessoas que gostam de explorar os potenciais de rede no Linux ou satisfazer sua curiosidade. Ele poder ser facilmente adaptado para
atender outro tipo de necessidade. A 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 registradas nos logs do sistema para conhecimento do administrador.
5 Todos os usurios possuem acesso livre a Internet via Masquerading, exceto que o acesso
para o servio www deve ser obrigatoriamente feito via squid, e o servidor smtp a ser
usado dever ser o do 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
iptables
iptables
iptables
# Tabela
iptables
iptables
-t nat -P
-t nat -P
-t nat -P
mangle
-t mangle
-t mangle
158
PREROUTING ACCEPT
OUTPUT ACCEPT
POSTROUTING DROP
-P PREROUTING ACCEPT
-P OUTPUT ACCEPT
###############################################################
#
Tabela filter
#
###############################################################
##### Chain INPUT #####
# Criamos um chain que ser usado para tratar o trfego vindo da Internet e
iptables -N ppp-input
# Aceita todo o trfego vindo do loopback e indo pro loopback
iptables -A INPUT -i lo -j ACCEPT
# Todo trfego vindo da rede interna tambm aceito
iptables -A INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT
# Conexes vindas da interface ppp0 so tratadas pelo chain ppp-input
iptables -A INPUT -i ppp+ -j ppp-input
# Qualquer outra conexo desconhecida imediatamente registrada e derrubada
iptables -A INPUT -j LOG --log-prefix "FIREWALL: INPUT "
159
# 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
#
#######################################################
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
# Registra e bloqueia qualquer outro tipo de trfego desconhecido
iptables -t nat -A POSTROUTING -j LOG --log-prefix "FIREWALL: SNAT "
iptables -t nat -A POSTROUTING -j DROP
###############################################
#
Tabela mangle
#
###############################################
161
Captulo 11
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.
ATENO: - Os dados aqui disponibilizados so puramente para fins didticos e compreenso de como tais situaes funcionam para se criar mecanismos de defesa personalizados de
acordo com o que deseja proteger.
11.2
162
Para adicionar uma conta de usurio ao sistema simples, basta um comando adduser
[usurio] e alguns poucos segundos para responder as questes do programa. Quando
criamos contas para outros usurios temos 2 alternativas: deixarmos a senha em branco ou
escolher uma senha que ser passada ao usurio para que ele possa fazer a troca mais tarde.
A primeira alternativa muito perigosa, pois uma pessoa com acesso a /etc/passwd poder
facilmente descobrir sua lista de usurios (principalmente em uma grande empresa quando
conhecemos as polticas de criao de novas contas). Um funcionrio notaria a presena do novato e poderia aproveitar esta oportunidade para tentar incriminar este usando a conta recm
criada ou tentar outras coisas para obter benefcio prprio atravs do descuido de outros.
O segundo mtodo de senha inicial um pouco mais seguro e de preferncia a senha deve ser
escolhida pelo usurio para que pessoas que conhecem o estilo de senhas iniciais escolhidas
pelo administrador no possam deduzir a nova senha criada. comum vermos senhas como
novo1234, 123456, abcdef, a1b3c3, o nome do usurio como senhas iniciais, pois
fcil de lembrar. Senhas deste tipo so as primeiras a ser tentadas por crackers e programas
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 antecedncia (-w 3) para trocar sua senha. Aps o perodo mximo o usurio ser obrigado a trocar
a senha.
Quando o usurio efetuar o login receber a seguinte mensagem:
password will expire in 3 days.
Warning:
your
passwd -x 10 -w 3 -i 2 teste
A senha do usurio teste expirar aps 10 dias (-x 10) e ele ser avisado com 3 dias de antecedncia (-w 3) para trocar sua senha, aps a expirao da senha, o usurio tem 2 dias antes da
conta ser desativada (-i 2). Se o perodo expirar e o usurio tentar um novo login ser mostrada
a mensagem:
Your account has expired:
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
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, recomendvel 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 segurana, pois a mesma senha ser compartilhada entre diversas pessoas.
OBS4: O programa useradd combina as funes do adduser e passwd para garantir que
a conta seja criada com as restries apropriadas. O nico inconveniente que o useradd
quebra o Debian Policy e precisa de todos todos os parmetros para a criao correta da conta
(como o diretrio home, senha criptografada, e UID numrico). Seu uso indicado em shell
scripts que cuidam automaticamente da tarefa de adicionar usurios ao sistema.
11.2.1
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 inicialmente.
-s [shell] - Shell do usurio. O padro /bin/bash.
OBS: Note que nem todas as opes acima tero efeito com o adduser (principalmente as
opes -f, -g e -s que so especificadas no seu arquivo de configurao /etc/adduser.conf).
11.2.2
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 administrador pode forar o usurio a fazer trocas peridicas de senhas atravs dos recursos citados
em Criao, monitoramento e segurana de contas on page 162, mas quem vai garantir que
ele esteja escolhendo boas senhas para que ningum as descubra com facilidade? Abaixo uma
lista de senhas ruins (que dever evitar a todo custo usa-las) e boas:
Senhas Ruins
O uso da palavra senha como senha! Isto parece idiota mais existe. . .
Senhas com o mesmo nome do login (joao/joao).
Compostas por letras ou nmeros em seqencia crescente ou decrescente (abcdef, 123456,
654321, etc, etc). Este tipo de senha pode ser adivinhada por deduo e so uma das
primeiras combinaes que crackers usam para acertar senhas.
palavras relacionadas com o gosto pessoal. Por exemplo escort, vectra, subaru se
a pessoa amante de carros.
Nome da esposa, 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 combinaes necessrias para se quebrar uma senha em um ataque brute force (veja Brute
Force on page 168). Mesmo que a senha escolhida no chegue a 8 caracteres mnimos,
voc poder combina-la com nmeros.
Com as dicas acima, a possibilidade de algum conseguir quebrar uma senha criptografada em
seu sistema usando os ataques descritos em Tipos de ataques mais comuns para se conseguir
uma senha. on page 166 praticamente nula! Para os paranicos de planto, o utilitrio
makepasswd pode criar uma senha com caracteres completamente aleatrios:
makepasswd --chars 8
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.
11.2.3
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.2.4
11.3
11.3.1
Deduo
166
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.
11.3.2
Engenharia Social
Ataques por engenharia social so feitos atravs de pesquisa de dados pessoais e outras caractersticas relacionadas ao usurio (time de futebol, data de nascimento dele, da esposa, 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 sucedido 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?
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.
11.3.3
De posse do arquivo de senhas /etc/passwd, o cracker utiliza um arquivo que contm diversas palavras que sero tentadas como senha. Este trabalho feito automaticamente por
ferramentas dedicadas a este tipo de tarefa e pode levar dias dependendo da lista de senhas
do cracker e quantidades de usurios existentes no arquivo de senha.
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).
11.3.4
Brute Force
De posse do arquivo de senhas /etc/passwd o cracker utiliza uma ferramenta que tenta
diversas combinaes de letras seqencialmente na tentativa de descobrir uma senha. Este
ataque geralmente usado como ltimo recurso aps um ataque por dicionrio, e leva muito
tempo para descobrir uma senha.
Dependendo se uma senha conter caracteres aleatrios, combinao de letras maisculas/minsculas, nmeros, a senha ser praticamente impossvel de ser descoberta. Note que
o uso de criptografia md5 e senhas ocultas aumentam bastante a proteo das senhas (veja
Shadow Passwords on the next page e Senhas MD5 on the facing page).
11.3.5
Este ataque muito comum em sistemas DOS e Windows, um programa instalado sem o
conhecimento do usurio que grava todos os toques do teclado em um arquivo escondido pelo
cracker. Aps certo tempo o cracker obtm acesso ao arquivo e aos dados que ele contm. Este
tipo de ataque muito perigoso e pode capturar senhas no s do sistema como nmeros de
carto de crdito digitados (caso o usurio tenha feito compras on-line), conta bancria+senha
e tudo mais que for digitado pelo teclado.
11.3.6
Login falso
Esta uma forma rpida de se conseguir acesso a um sistema. criada uma tela de login
idntica a original do sistema, s que ao digitar nome e senha, estes so gravados em um
arquivo (que ser mais tarde recuperado pelo cracker para obter acesso ao sistema) e uma
mensagem de erro ser exibida pelo sistema.
Naturalmente o usurio pensar que digitou o nome/senha incorretamente e far uma nova
tentativa, a segunda ocorrer com sucesso (fazendo este pensar que errou *mesmo* a senha).
Sua ateno muito importante para evitar este tipo de ataque, caso 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 correta) e na segunda tentativa lanar a senha vlida (normalmente sistemas deste tipo bem elaborados chamam o verdadeiro sistema de login na segunda tentativa).
169
11.4
11.4.1
Shadow Passwords
11.4.2
Senhas MD5
O sistema de criptografia usado pelas senhas MD5 mais seguro que o padro Crypto e permitem o uso de senhas maiores do que 8 caracteres.
O uso de senhas MD5 recomendado para aumentar o nvel de proteo da senha. No use
caso estiver executando um servio de NIS. OBS: Caso utilize senhas MD5 em um sistema com
PAM, inclua a palavra md5 na linha de configurao do mtodo de autenticao password do
mdulo pam_unix.so:
password required pam_unix.so md5
170
171
Captulo 12
Apache
Esta captulo documenta a configurao, personalizao, introduo aos mecanismos de autenticao e controle de acesso do Apache, sistema proxy, virtual hosting, e exemplos de configurao do servidor httpd. Ele no tem como objetivo ser uma referncia completa de configurao, mas sim abordar didaticamente o assunto.
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-
172
caes no programa (changelog) em busca de mudanas que alterem o sentido das explicaes
fornecidas aqui.
12.1.2
O Apache tem como base o servidor web NCSA 1.3 (National Center of Supercomputing Applications), que foi desenvolvido por Rob McCool. Quando Rob deixou o NCSA, o desenvolvimento
foi interrompido, assim muitos desenvolvedores buscaram personalizar sua prpria verso do
NCSA ou adicionar mais caractersticas para atender as suas necessidades. Neste momento
comea a histria do Apache com Brian Behlendorf e Cliff Skolnick abrindo uma lista de discusso para interessados no desenvolvimento, conseguindo espao em um servidor doado
pela HotWired e trocando patches corrigindo problemas, adicionando recursos e discutindo
idias com outros desenvolvedores e hackers interessados neste projeto.
A primeira verso 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 Brandon Long e Beth Frank que tambm se tornaram membros especiais do grupo Apache, compartilhando idias sobre seus projetos).
Nas verses 2.x do Apache, a escalabilidade do servidor foi ampliada suportando as plataformas Win32 (no obtendo o mesmo desempenho que em plataformas UNIX mas sendo melhorado gradativamente).
12.1.3
12.1.4
Caractersticas do Apache
Abaixo esto algumas caractersticas que fazem esse servidor web o preferido entre os administradores de sistemas:
Possui suporte a scripts cgi usando linguagens como Perl, PHP, Shell Script, ASP, etc.
Suporte a autorizao de acesso podendo ser especificadas restries de acesso separadamente para cada endereo/arquivo/diretrio acessado no servidor.
Autenticao requerendo um nome de usurio e senha vlidos para acesso a alguma
pgina/sub-diretrio/arquivo (suportando criptografia via Crypto e MD5).
Negociao de contedo, permitindo a exibio da pgina Web no idioma requisitado
pelo Cliente Navegador.
Suporte a tipos mime.
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.
12.1.5
Ficha tcnica
Pacote: apache
Utilitrios:
apache - Servidor Web Principal
apachectl - Shell script que faz interface com o apache de forma mais amigvel
apacheconfig - Script em Perl para 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 endereo de hosts com base nos endereos IPs.
ab - Apache Benchmarcking - Ferramenta de medida de desempenho do servidor Web
Apache.
Por padro, os arquivos de 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 especificado atravs da opo -f da linha de comando.
srm.conf Contm diretivas que controlam a especificao de documentos que o servidor oferece aos clientes. O nome desse arquivo pode ser substitudo atravs da diretiva ResourceConfig 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 configurao.
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 diretamente no arquivo httpd.conf. Note que no obrigatrio usar os arquivos srm.conf e
access.conf, mas isto proporciona uma melhor organizao das diretivas do servidor, principalmente quando se tem um grande conjunto de diretivas. Um exemplo comentado destes
trs arquivos de configurao encontrado em Exemplo comentado de um arquivo de configurao do Apache on page 216.
12.1.6
174
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 desempenho no processamento de strings), barramento de HD SCSI com uma boa placa controladora
(Adaptec 19160 ou superior) com 64MB de RAM no mnimo.
12.1.7
O servidor httpd grava seus arquivos de log geralmente em /var/log/apache, no possvel descrever os arquivos de logs usados porque tanto seus nomes como contedo podem
ser personalizados no arquivo httpd.conf. Mesmo assim, os arquivos de logs encontrados
na instalao padro do Apache so os seguintes:
access.log - Registra detalhes sobre o acesso as pginas do servidor httpd.
error.log - Registra detalhes saber erros de acesso as pginas ou erros internos do
servidor.
agent.log - Registra o nome do navegador do cliente (campo UserAgent do cabealho
http).
Mais referncias podem ser encontradas em Sistema de Log do Apache on page 199. Um bom
programa para gerao de estatsticas de acesso com grficos o Relatrio grfico de acesso
ao sistema on page 204.
12.1.8
Instalao
12.1.9
O Apache pode ser executado tanto como um servidor Inetd ou como um Daemon. A inicializao de programas pelo Inetd uma boa estratgia quando voc precisa de um controle de
acesso bsico (o fornecido pelo tcpd), e o servio pouco usado na mquina.
A segurana de um servio iniciado pelo inetd pode ser substituda e melhorada por um
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
175
como daemon e estiver ocioso, ele ser movido para swap liberando a memria RAM para a
execuo de outros programas.
Neste captulo ser assumido seu funcionamento do Apache como Daemon, que o mtodo
de funcionamento recomendado para sites de grande trfego onde ele freqentemente requisitado e considerado um servio crtico.
O mtodo padro para iniciar programas como daemons na Debian atravs dos diretrios /etc/rc?.d. Cada diretrio deste contm os programas que sero executados/interrompidos no nvel de execuo ? (rc1.d/, rc2.d/ . . . ). O contedo destes diretrios so links para os scripts originais em /etc/init.d/programa, o nosso programa
alvo /etc/init.d/apache. O /etc/init.d/apache aceita os seguintes parmetros:
start - Inicia o Apache
stop - Finaliza o Apache
restart - Reinicia o Apache, efetuando uma pausa de 5 segundos entre a interrupo
do seu funcionamento e reinicio.
reload - Recarrega os arquivos de 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).
12.1.10
176
12.2
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 (usadas tambm em Virtual Hosts) e substituir as definies de Port(veja Especificando endereos/portas adicionais (a diretiva Listen) on page 178 para detalhes).
OBS:: Somente uma diretiva Port e um argumento podero ser especificados. Para mais controle sobre as portas do sistema use a diretiva Listen.
12.3
Existem dois tipos de pginas que podem ser adicionadas ao Apache: a pgina raz e subpginas.
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 configurao 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 DocumentIndex no srm.conf) e permisses de acesso vlidas no arquivo access.conf para
autorizar o acesso as pginas em /var/www (veja Restries de Acesso on page 182 para
detalhes).
Sub-pginas Sub pginas so armazenadas abaixo do diretrio da Pgina raz, como http: /
/www.guiafoca.org/download. Elas podem ser um subdiretrio da pgina principal
177
12.4
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 separados 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 BindAddress.
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.
12.5
178
A diretiva Listen usada para se ter um controle maior sobre a especificao de endereos/portas alternativas que o servidor web esperar por requisies externas. Esta diretiva muito usada na construo de Virtual Hosts. Esta diretiva pode substituir completamente as diretivas Port e BindAddress. Podem ser usados o nmero da porta, ou o par
endereo:porta:
Listen 192.168.1.1:80
Listen 192.168.7.1:81
Listen 60000
O endereo que dever ser usado o da interface de rede (assim como na diretiva BindAddress).
No exemplo acima, o servidor httpd esperar por requisies vindas de 192.168.1.* na
porta 80 e tambm 60000, e requisies vindas de 192.168.7.1 na porta 81 e tambm 60000.
12.6
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 As restrio afetar o diretrio no disco especificado, conseqentemente a pgina
armazenada nele. Por exemplo:
<Directory /var/www>
Order deny,allow
deny from all
allow from 10.1.0.1
<Directory>
O acesso ao diretrio /var/www ser permitido somente ao computador com o endereo
IP 10.1.0.1.
DirectoryMatch Funciona como a diretiva <Directory> mas trabalha com expresses regulares como argumento. Por exemplo:
<DirectoryMatch "^/www/.*">
Order deny,allow
deny from all
<DirectoryMatch>
179
180
181
182
Se a diretiva <Files> for usada fora de uma estrutura <Directory>, ela ter efeito em todos os
arquivos disponibilizados pelo servidor. Este excelente mtodo para proteger os arquivos de
acesso, senhas e grupos, conforme ser explicado mais adiante.
Qualquer outro tipo de aninhamento de diretivas resultar em um erro de 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>
Espero que tenha observado o erro no exemplo acima.
OBS1: Voc pode verificar se a configurao do apache est correta digitando apache -t
como usurio root, se tudo estiver correto com suas configuraes ele retornar a mensagem:
Syntax OK.
OBS2: Se Options no for especificado, o padro ser permitir tudo exceto MultiViews.
OBS3: Qualquer restrio afetar o diretrio atual e todos os seus sub-diretrios! Defina permisses de sub-diretrios especficos separadamente caso precise de um nvel de acesso diferente. Veja tambm a seo sobre arquivos OverRide (.htaccess) para detalhes sobre este tipo
de arquivo.
OBS4: A diretiva de acesso <Directory /> no afetar outros sistemas de arquivos montados
dentro de seus subdiretrios. Caso uma diretiva de acesso padro no seja especificada para
outros sistemas de arquivos, o acesso ser automaticamente negado.
12.7
Restries de Acesso
183
que seja passado nome e senha para garantir acesso a pgina. Os mtodos de Autorizao e
Autenticao podem ser combinados como veremos mais adiante.
12.7.1
Autorizao
184
185
<Directory /var/www>
Options SymLinksIfOwnerMatch Indexes MultiViews
Order allow,deny
allow from all
</Directory>
Permite o acesso a de qualquer usurio de qualquer lugar (allow from all), permite tambm a
visualizao da listagem formatada de arquivos caso nenhum arquivo 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 allow/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>
A regra acima permite o acesso a URL http: //www.servidor.org/focalinux de qualquer host na Internet
<Files .htaccess>
Order deny,allow
deny from all
</Files>
Bloqueia o acesso a qualquer arquivo .htaccess do sistema
186
<Files ~ "leiame-(arm|alpha|m68k|sparc|powerpc)\.txt">
Order deny,allow
deny from all
</Files>
Bloqueia o acesso a qualquer arquivo leiame-arm.txt, leiame-alpha.txt,
leiame-m68k.txt, leiame-sparc.txt e leiame-powerpc.txt fazendo uso de
expresses regulares.
<Directory /var/www>
Options Indexes
Order mutual-failure
allow from .dominio.com.br
deny from lammer.dominio.com.br
</Directory>
A diretiva acima somente permite acesso ao diretrio /var/www de mquinas pertencentes ao
domnio .dominio.com.br desde que no seja lammer.dominio.com.br.
<Directory /var/www>
Options Indexes MultiViews
Order allow,deny
deny from .com .com.br
allow from all
</Directory>
Bloqueia o acesso ao diretrio /var/www de computadores pertencentes aos domnios .com e
.com.br.
<Directory /var/www>
Options None
Order deny,allow
allow from 192.168.1. .guiafoca.org .debian.org
deny from 200.200.123.
</Directory>
A regra acima permite o acesso de mquinas da rede 192.168.1.*, do domnio
*.guiafoca.org e *.debian.org, o acesso de mquinas da rede 200.200.123.* bloqueado (nada contra, peguei nesse nmero ao acaso :-).
Note que a mquina 192.168.4.10 ter acesso LIVRE a regra acima, pois no conferir nem
com allow nem com deny, ento o processamento cair na diretiva padro de deny,allow, que
neste caso permite o acesso caso nem allow e deny conferiram com o padro.
187
<Directory /var/www>
Options None
Order allow,deny
allow from 192.168.1. .cipsga.org.br .debian.org
deny from 200.200.123.
</Directory>
A regra acima idntica a anterior somente com a mudana da opo Order. Bloqueia o acesso
de mquinas da rede 200.200.123.* e permite o acesso de mquinas da rede 192.168.1.*,
do domnio *.cipsga.org.br e *.debian.org.
Note que a mquina 192.168.4.10 ter acesso BLOQUEADO a regra acima, pois no conferir nem com allow nem com deny, ento o processamento cair na diretiva padro de allow,deny que neste caso bloqueia o acesso.
12.7.2
Autenticao
188
189
Digest - Transmite os dados de uma maneira que no pode ser facilmente decodificada, incluindo a codificao da rea protegida (especificada pela diretiva AuthName) que possui a seqencia de login/senha vlida. A diferena deste mtodo
que voc precisar de arquivos de senhas diferentes para cada rea protegida especificada por AuthName (tambm chamada de Realm).
AuthUserFile o arquivo gerado pelo utilitrio htpasswd que contm a senha correspondente ao usurio
AuthGroupFile um arquivo texto que contm o nome do grupo, dois pontos (:) e o nome
dos usurios que podem ter acesso ao recurso, separados por vrgulas. No exemplo
acima ele se encontra comentado, mas a seguir encontrar exemplos que explicam em
detalhes o funcionamento desta diretiva.
Require Especifica que usurios podem ter acesso ao diretrio. Podem ser usadas uma das 3
sintaxes:
Require user usurio1 usurio2 usurio3 - Somente os usurios especificados so considerados vlidos para ter acesso ao diretrio.
Require group grupo1 grupo2 grupo3 - Somente os usurios dos grupos especificados 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 diretivas AuthName, AuthType e as diretivas AuthUserFile e AuthGroupFile para funcionar
adequadamente.
OBS: necessrio reiniciar o Apache depois de qualquer modificao em seu arquivo de configurao (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>
As explicaes so idnticas a anterior, mas somente permite o acesso do usurio gleydson a
URL http: //servidor.org/teste, bloqueando o acesso de outros usurios contidos no
arquivo AuthUserFile.
<Location /teste>
AuthName "Acesso a pgina do Foca Linux"
190
AuthType basic
AuthUserFile /home/gleydson/SenhaUsuario
Require user gleydson usuario1 usuario2
</Location>
<Location /teste>
AuthName "Acesso a pgina do Foca Linux"
AuthType basic
AuthUserFile /home/gleydson/SenhaUsuario
Require user gleydson
Require user usuario1
Require user usuario2
</Location>
As 2 especificaes acima so equivalentes e permite o acesso aos usurios gleydson,
usuario1 e usuario2 a pgina http: //servidor.org/teste.
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 ocultado 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. . .
12.7.3
Os mtodos de autorizao e autenticao podem ser usados ao mesmo tempo dentro de qualquer uma das diretivas de controle de acesso. As diretivas de autorizao so processadas
primeiro (mod_access) e depois as diretivas de autenticao (mod_auth). Segue um exemplo:
<Directory /var/www>
Options Indexes
Order deny,allow
allow from .dominiolocal.com.br
deny from all
AuthName "Acesso ao diretrio do servidor Web"
AuthType basic
AuthUserFile /var/cache/apache/senhas
Require valid-user
</Directory>
Para ter acesso ao diretrio /var/www, primeiro o computador deve fazer parte do domnio
.dominiolocal.com.br, assim ela passa pelo teste de autorizao, depois disso ser
necessrio fornecer o login e senha para acesso a pgina, digitando o login e senha corretos, o teste de autenticao ser completado com sucesso e o acesso ao diretrio /var/www
autorizado.
192
<Directory /var/www>
Options Indexes
Order mutual-failure
allow from .dominiolocal.com.br
deny from lammer.dominiolocal.com.br
AuthName "Acesso ao diretrio do servidor Web"
AuthType basic
AuthUserFile /var/cache/apache/senhas
AuthGroupFile /var/cache/apache/grupos
Require group admins
</Directory>
No exemplo acima, usado o mtodo de autorizao com a opo Order mutual-failure
e o mtodo de autenticao atravs de grupos. Primeiro verificado se o usurio pertence ao domnio .dominiolocal.com.br e se ele no est acessando da mquina
lammer.dominiolocal.com.br, neste caso ele passa pelo teste de autorizao. Depois
disso ele precisar fornecer o nome e senha vlidos, com o login pertencente ao AuthGroupFile, passando pelo processo de autenticao e obtendo acesso ao diretrio /var/www.
Acesso diferenciado em uma mesma diretiva
interessante permitir usurios fazendo conexes de locais 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.
193
12.7.4
O arquivo .htaccess
O arquivo .htaccess deve ser colocado no diretrio da pgina que dever ter suas permisses de acesso/listagem controladas. A vantagem em relao a incluso direta de diretivas de
acesso dentro do arquivo de 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 AllowOverride que pode conter o seguintes parmetros:
194
195
Order deny,allow
allow from 192.168.1.0/24
deny from all
AuthName "Acesso a pgina Web principal da Empresa"
AuthType basic
AuthUserFile /var/cache/apache/senhas
Require valid-user
Satisfy any
Note que a sintaxe exatamente a mesma das usadas na diretivas de acesso, por este motivo
vou dispensar explicaes detalhadas a respeito.
ATENO: A diretiva Options Indexes dever ser especificada no AllowOverRide e no no arquivo .htaccess. Agora voc j sabe o que fazer se estiver recebendo erros 500 ao tentar
acessar a pgina (Erro interno no servidor). . .
12.7.5
12.7.6
196
A diretiva <Limit>
Esta diretiva semelhante a <Directory> mas trabalha com mtodos HTTP (como GET, PUT,
POST, etc) ao invs de diretrios. A diretiva <Limit> pode ser usada dentro da diretiva de
acesso <Directory>, <Location>, mas nenhuma diretiva de controle de acesso pode ser colocada dentro de <Limit>.
Os mtodos HTTP vlidos so: GET, POST, PUT DELETE, CONNECT, OPTIONS, TRACE,
PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK e UNLOCK. Note que os
mtodos so case-sensitive. Por exemplo:
<Directory /var/www>
Option Indexes
<Limit POST PUT DELETE>
Order deny,allow
allow from 192.168.1.0/24
deny from all
</Limit>
</Directory>
Somente permitem o uso dos mtodos POST, PUT, DELETE de mquinas da rede interna.
OBS1: Se o mtodo GET bloqueado, o cabealho HTTP tambm ser bloqueado.
OBS2: A diretiva de acesso <Limit> somente ter efeito na diretiva <Location> se for especificada 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>
12.7.7
Diretiva <LimitExcept>
Esta diretiva semelhante a <Limit>, mas atinge todos os mtodos HTTP, menos os especificados.
12.8
197
Documentos de erros personalizados so definidos atravs da diretiva ErrorDocument. possvel especificar cdigos de erros que sero atendidos por certos documentos ou colocar esta
diretiva dentro de blocos de controle de acesso <Directory>, <Location> ou <VirtualHost>
para que tenham mensagens de erro personalizadas, ao invs da padro usada pelo servidor
httpd.
ErrorDocument [cdigo de erro] [documento]
Onde:
cdigo de erro Cdigo de erro da mensagem (veja Cdigos HTTP on page 238 como referncia). O cdigo de erro 401 deve referir-se a um arquivo local.
documento Documento, mensagem de erro ou redirecionamento que ser usado no servidor
caso aquele cdigo de erro seja encontrado:
Para definir uma mensagem de erro padro para todo servidor web, basta colocar a diretiva
ErrorDocument fora das diretivas que controlam o acesso a diretrios e virtual hosts (o inicio
do arquivo httpd.conf ideal).
Exemplos:
ErrorDocument 404 /cgi-bin/erros404.pl - Direciona para um script em Perl
que manda um e-mail ao administrador falando sobre o link quebrado e envia o usurio
a uma pgina de erro padro.
ErrorDocument 404 /naoencontrada.html - Direciona o usurio para o arquivo
naoencontrada.html (dentro de DocumentRoot) quando ocorrer o erro 404. Note que
o diretrio / levado em considerao o especificado pela diretiva DocumentRoot.
ErrorDocument 500 Erro Interno no servidor - Mostra a mensagem na
tela quando ocorrer o erro 500.
ErrorDocument 401 /obtendoacesso.html - Direciona o usurio ao arquivo explicando como obter acesso ao sistema.
ErrorDocument 503 http://www.guiafoca.org/servicos.html - Redireciona o usurio a URL especificada.
ErrorDocument 403 Acesso negado - Mostra a mensagem na tela no caso de
erros 403.
12.9
Mdulos DSO
198
199
Manipulao de Diretrios
* mod_dir - Manipulao de Diretrio e arquivo padro de
diretrio
* mod_autoindex - Gerao de ndice automtico de diretrio
Controle de Acesso
* mod_access - Controle de acesso por autorizao (usurio, endereo, rede)
* mod_auth - Autenticao HTTP bsica (usurio, senha)
mod_auth_dbm - Autenticao HTTP bsica (atravs de arquivos NDBM do Unix)
mod_auth_db - Autenticao HTTP bsica (atravs de arquivos Berkeley-DB)
mod_auth_anon - Autenticao HTTP bsica para usurios no estilo annimo
mod_auth_digest - Autenticao MD5
mod_digest - Autenticao HTTP Digest
Respostas HTTP
mod_headers - Cabealhos de respostas HTTP (configurado)
mod_cern_meta - Cabealhos de respostas HTTP (arquivos no estilo CERN)
mod_expires - Respostas de expirao HTTP
* mod_asis - Respostas HTTP em formato simples (raw)
Scripts
* mod_include - Suporte a Includes no lado do servidor (SSI - Server Sides
Includes)
* mod_cgi - Suporte a CGI (Common Gateway Interface)
* mod_actions - Mapeia scripts CGI para funcionarem como handlers internos.
Manipuladores de contedo Interno
* mod_status - Visualiza status do servidor em
tempo de execuo.
mod_info - Visualiza sumrio de configurao do servidor.
Registros de Requisies
* mod_log_config - Registro de requisies personalizveis
mod_log_agent - Registro especializado do User-Agent HTTP (depreciado)
mod_log_refer - Registro especializado do Referrer HTTP (depreciado)
mod_usertrack - Registro de cliques de usurios atravs de Cookies HTTP
Outros
* mod_imap - Suporte a Mapeamento de Imagem no lado do servidor.
mod_proxy - Mdulo de Cache do Proxy (HTTP, HTTPS, FTP).
mod_so - Inicializao do Dynamic Shared Object (DSO)
Experimental
mod_mmap_static - Cache de pginas freqentemente servidas via
mmap()
Desenvolvimento
mod_example - Demonstrao da API do Apache (somente desenvolvedores)
12.10
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 particulares de logging.
12.10.1
200
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
201
12.10.5
RewriteLog
RewriteLog: [arquivo/pipe]:
gravao de URL feita pelo Apache.
OBS: No recomendvel direcionar o nome de arquivo para /dev/null como forma de desativar este log, porque o mdulo de regravao no cria a sada para um arquivo de log, ele
cria a sada de log internamente. Isto somente deixar o servidor lento. Para desativar este registro, simplesmente remova/comente a diretiva RewriteLog ou use a opo RewriteLogLevel
0.
Exemplo: RewriteLog /usr/local/var/apache/logs/rewrite.log
12.10.6
RewriteLogLevel
12.10.7
ScriptLog
12.10.8
ScriptLogBuffer
12.10.9
202
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:
LogFormat
LogFormat
LogFormat
LogFormat
LogFormat
12.10.11
203
TransferLog
12.10.12
LogLevel
Define o nvel de alerta das mensagens que sero gravadas no arquivo especificado pela diretiva 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 especificado, 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
12.10.14
204
CookieLog
12.10.15
O programa webalizer poder ser instalado para gerar um relatrio grfico com a estatsticas de visitas por ano/mes/dia/hora usando os dados do access.log. Outra interessante
caracterstica so as estatsticas de cdigos http (veja Cdigos HTTP on page 238), onde possvel saber a quantidade de links quebrados existentes em nosso servidor (estes podero ser
detectados usando o pacote de anlise de sites linbot). O webalizer tambm compatvel
com os formatos de log do squid e proftpd. Na distribuio Debian ele pode ser instalado
a partir do pacote webalizer e gera um relatrio geral quando executado sem opes.
12.11
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:
# LoadModule proxy_module /usr/lib/apache/1.3/libproxy.so
O seguinte bloco pode ser colocado no final do arquivo httpd.conf para configurar um servidor proxy para realizar conexes diretas (sem o uso de cache) e permitir o uso de servidores
proxy em sua rede:
# Suporte a Proxy
#
<IfModule mod_proxy.c>
205
ProxyRequests off
ProxyRemote * http://debian:3128
ProxyBlock microsoft.com microsoft.com.br
NoProxy 192.168.1.0/24
ProxyDomain .gms.com.br
206
CacheForceCompletion 70
CacheSize 5
CacheGcInterval 3
CacheDefaultExpire 5
CacheMaxExpire 300
NoCache 192.168.1.0/24 a_domain.com outrodomnio.com.br outro.dominio.net
Cada diretiva acima possui o seguinte significado:
CacheRoot Diretrio base onde sero criados os outros diretrios de cache. O cache s ser
ativado se esta diretiva for definida.
CacheForceCompletion [num ] Se uma transferncia for cancelada e passar de num%, o
Apache continuar a transferncia e armazenar o arquivo no cache. O valor padro
90.
CacheSize [num ] Define o tamanho mximo do diretrio de cache do Apache, em KB. No
especifique um valor que tome mais de 70% do espao em disco. O valor padro 5.
CacheGcInterval [num ] Define o tempo que o cache ser checado em busca de arquivos
maiores que o total do cache. Arquivos que ultrapassem o tamanho do cache so automaticamente eliminados.
CacheDefaultExpire [num ] Define o tempo que os documentos ficaro no cache, se foram
transferidos atravs de protocolos que no suportam horas de expirao. O valor padro
1 hora.
CacheMaxExpire [num ] Define o tempo que os documentos permanecero armazenados no
cache (em horas). Esta opo ignora a hora de expirao do documento (caso fornecida).
O valor padro 24 horas.
NoCache [endereos ] Permite especificar lista de palavras, mquinas, domnios, IPs que no
sero armazenados no cache do Apache. Caso seja usado NoCache * o cache ser desativado completamente. Note que o cache tambm pode ser desativado comentando a
diretiva CacheRoot.
Se voc desejar um servidor cache mais flexvel, rpido, dinmico, configurvel (com possibilidade de uso de restries baseadas em URL, tempo de acesso, autenticao), instale o squid e
configure o apache para fazer forward de conexes para ele (Redirecionamento de conexes
no Apache on the next page).
12.11.1
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):
# Acesso aos servios proxy do apache
<Directory proxy:*>
Order deny,allow
Deny from all
Allow from .seudominio.com.br
</Directory>
207
Para explicaes sobre o processo de bloqueio acima, veja Autorizao on page 183.
12.11.2
Este recurso do Apache interessante para criar clusters de servidores em sua rede interna.
O que ele faz pegar uma requisio a um determinado endereo e redireciona-lo a outra
mquina e as respostas so repassadas ao servidor web (para o cliente a mesma mquina esta
atendendo a requisio, para voc o processamento das requisies esta sendo distribudo internamente na rede).
As seguintes diretivas so usadas para realizar o redirecionamento de conexes: ProxyPass e
ProxyPassReverse
ProxyPass [diretrio_da_url [outro_servidor:/diretrio ] A ProxyPass permite que a URL seja
redirecionada para o servidor local e diretrio 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 incluir a linha:
ProxyPass /download http://192.168.1.54
Qualquer
requisio
externa
a
http: //www.guiafoca.org/download
/iniciante ser atendida por http: //192.168.1.54/iniciante.
ProxyPassRemote [diretrio_da_url [outro_servidor:/diretrio ] Esta diretiva permite modificar o cabealho Location nas mensagens de respostas de redirecionamento enviadas
pelo Apache. Isto permite que o endereo retornado seja o do servidor (que faz a interface externa com o cliente) e no da mquina do redirecionamento.
ProxyPass
/download http://192.168.1.54
ProxyPassReverse /download http://192.168.1.54
Se a mquina 192.168.1.54 redirecionar a URL para http: //192.168.1.54
/download/iniciante,
a
resposta
ser
modificada
para
http: /
/www.guiafoca.org/download/iniciante antes de ser retornada ao cliente.
\
12.12
Virtual Hosts
Virtual Hosts (sites virtuais) um recurso que permite servir mais de um site no mesmo servidor. Podem ser usadas diretivas especficas para o controle do site virtual, como nome do
administrador, erros de acesso a pgina, controle de acesso e outros dados teis para personalizar e gerenciar o site. Existem 2 mtodos de virtual hosts:
Virtual Hosts baseados em IP - Requer um endereo IP diferente para cada site.
Este poder ser um IP real (da interface de rede) ou um apelido (veja IP Alias on
page 63), o que interessa que deve haver um endereo IP diferente para cada site. O
nmero de sites servidos estar limitado a quantidade de endereos IP disponveis em
sua classe de rede. Veja Virtual hosts baseados em IP on the following page para detalhes de como construir um virtual host deste tipo. O apache foi um dos primeiros
208
12.12.1
Existem duas maneiras de rodar este tipo de host virtual: Atravs de daemons httpd separados ou em um nico daemon httpd usando a diretiva <VirtualHost>.
As vantagens do uso de daemons separados para servir requisies a proteo sob UID
e GID diferente dos outros servidores, assim o administrador do site1 no ter acesso ao
httpd.conf, pgina do site2 (porque ele estar rodando sob uma UID e GID diferentes
e o acesso restrito). Para usar este mtodo, 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 problema 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 servidores 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>
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 (especificado pela diretiva User) tenham acesso de gravao aos logs gerados pelo servidor, pois
os dados podem ser apagados ou criados links simblicos para binrios do sistema que sero
destrudos quando o Apache gravar dados. Alguns binrios e bibliotecas so essenciais para
o funcionamento do sistema.
12.12.2
210
ServerName www.site2.com.br
ServerAdmin admin2@site2.com.br
DocumentRoot /var/www/www_site2_com_br
TransferLog /var/log/apache/site2/access.log
ErrorLog /var/log/apache/site2/error.log
</VirtualHost>
A diretiva NameVirtualHost diz que ser usado virtual hosts baseados em nome servidos pela
mquina com IP 200.200.200.10. Os parmetros dentro do bloco das diretivas <VirtualHost > so 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 expanso %0 e diretivas VirtualDocumentRoot e VirtualScriptAlias so recomendados:
NameVirtualHost 200.200.200.10:80
<VirtualHost 200.200.200.10>
VirtualDocumentRoot /var/www/%0
VirtualScriptAlias /var/www/%0/cgi-bin
TransferLog log/apache/site1/access.log
ErrorLog log/apache/site1/error.log
</VirtualHost>
12.12.3
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>
Na configurao acima usamos o IP do servidor para especificar o virtual host. O apache
tentar fazer o DNS reverso para determinar qual nome servido por aquele endereo IP
(www.site1.com.br). Se ele falhar, somente a seo <VirtualHost> correspondente ser desativada. Isto j uma melhoria sobre a primeira configurao. O nome do servidor na diretiva
ServerName garante que o servidor responda com o nome correto.
Para evitar ataques baseados em DNS siga os seguintes procedimentos de segurana:
1 Preferencialmente utilize o arquivo /etc/hosts para a resoluo de nomes em
mquinas locais (principalmente quando existe somente um administrador). um
mtodo que evita diversas consultas ao servidor DNS (que pode deixar o acesso lento)
e este arquivo gerenciado pelo usurio root, isto evita o acesso de qualquer usurio
para a falsificao de endereos. Este arquivo tambm til caso a pesquisa DNS falhe
(quando a ordem de pesquisa for do servidor DNS para o arquivo hosts no arquivo
/etc/host.conf), pois de qualquer forma o nome ser resolvido e o servidor Apache
ser executado.
2 Evite dar poderes a outros administradores manipularem seu prprio domnio DNS, no
h nada que possa impedi-lo de modificar o endereo X para ser servido pelo IP Y
3
4
5
6
7
212
desviando o trfego para seu prprio servidor web. Se isto no for possvel, siga as dicas
abaixo para diminuir possveis problemas.
Utilize endereos IP na diretiva <VirtualHost>.
Use endereos IP na diretiva Listen.
Use um endereo IP na diretiva BindAddress.
Sempre utilize o parmetro ServerName em todas as diretivas <VirtualHost>, isto evita o
retorno incorreto de nomes (que pode evitar/revelar fraudes).
Quando utilizar virtual hosts, crie uma diretiva <VirtualHost _default_L:*> usando uma
diretiva DocumentRoot que no aponte para lugar algum. Esta diretiva ser acessada
quando nenhuma diretiva VirtualHost servir a requisio, conferindo com o endereo/ip.
12.13
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).
12.13.1
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 trabalho 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 servidores SSL dedicados ou quando no possui configuraes especiais em seu servidor web principal.
Esta seo tem por objetivo a instalao do suporte ao mdulo SSL (mod_ssl) no servidor
Apache padro.
12.13.2
213
12.13.3
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 digital, 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 criptografia de arquivos on page 408.
OBS No utilize acentos nos dados de seu certificado.
12.13.4
Abaixo uma configurao rpida para quem deseja ter um servidor com suporte a SSL funcionando em menor tempo possvel (ela feita para operar em todas as instalaes e no leva em
considerao o projeto de segurana de sua configurao atual do Apache). Note que todas as
diretivas relacionadas com o mdulo mod_ssl comeam com o nome SSL:
214
##############################################################################
# Adicionalmente podero ser especificadas as seguintes opes para modificar
# o comportamento da seo SSL (veja mais detalhes na documentao do mod-ssl)
##############################################################################
SSLSessionCacheTimeout
215
300
12.13.5
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.
12.13.6
Verifique se a configurao do Apache est ok com apache -t. Caso positivo, reinicie o servidor usando um dos mtodos descritos em Iniciando o servidor/reiniciando/recarregando a
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:
# entre no diretrio que contm a chave privada
cd /etc/apache/ssl.key
# renomeie a chave privada para outro nome
ren server.key server.key-Csenha
openssl rsa -in server.key-Csenha -out server.key
Digite a senha quando pedido. A chave original (com senha) estar gravada no arquivo
server.key-Csenha e poder ser restaurada se necessrio. Reinicie o servidor Apache,
desta vez ele no pedir a senha.
OBS1: Tire uma cpia de segurana da chave privada original antes de executar esta operao.
OBS2: No se esquea de ajustar as permisses de acesso no diretrio /etc/apache
/ssl.key caso no utilize senha para proteger seu certificado digital.
12.14
O exemplo abaixo foi retirado da distribuio Debian GNU/Linux, fiz sua traduo, modificaes 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
##
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
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>
#
# ServerType pode ser inetd, ou standalone. O modo Inetd somente suportado
# plataformas Unix. O modo standalone inicia o servidor como um daemon.
#
ServerType standalone
# Se estiver executando a partir do inetd, v at a diretiva "ServerAdmin".
# Port: A porta que o servidor standalone escutar. Para portas < 1023, ser
218
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
# ServerAdmin: Seu endereo de e-mail, onde os problemas com o servidor devem
# enviadas. Este endereo aparecer nas mensagens de erro do servidor.
ServerAdmin gleydson@guiafoca.org
#
#
#
#
#
#
#
#
#
#
#
#
ServerRoot /etc/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
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).
LogFormat
LogFormat
LogFormat
LogFormat
221
#
# A localizao e formato do arquivo de log de acesso (definida pela diretiva
# LogFormat acima).
# Se no definir quaisquer arquivos de log de acesso dentro de um
# <VirtualHost>, elas sero registradas aqui. Se for definida dentro
# de <VirtualHost> o arquivo de log de acesso ser registrado no
# arquivo especificado na diretiva e no aqui.
#
#CustomLog /var/log/apache/access.log common
# Se voc desejar ter um arquivo de log separado para o agent (navegador usado
# e referer, descomente as seguintes diretivas.
#CustomLog /var/log/apache/referer.log referer
#CustomLog /var/log/apache/agent.log agent
#
# 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
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
#
#
#
#
223
#CacheNegotiatedDocs
# Timeout: O nmero de segundos antes de receber e enviar um time out
Timeout 300
MaxKeepAliveRequests 100
# KeepAliveTimeout: Nmero de segundos que aguardar a prxima requisio
KeepAliveTimeout 15
#
#
#
#
#
#
#
#
#
#
#
MinSpareServers 5
MaxSpareServers 10
# Nmero de servidores que sero iniciados --- deve conter um valor razovel.
StartServers 5
#
#
#
#
#
#
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
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
226
# exceto links simblicos e aliases que podem ser usados para apontar para
# outras localizaes no sistema de arquivos.
DocumentRoot /var/www
#
# UserDir: O nome do diretrio que ser adicionado ao diretrio home do usuri
# caso uma requisio ~usurio for recebida.
#
<IfModule mod_userdir.c>
# Linha abaixo por recomendao de segurana do manual do Apache
UserDir disabled root
UserDir public_html
</IfModule>
#
# DirectoryIndex: Nome do arquivo ou arquivos que sero usados como ndice do
# diretrio. Especifique mais de um arquivos separados por espaos ao invs
# de um s um nome (como "index") para aumentar a performance do servidor.
#
<IfModule mod_dir.c>
DirectoryIndex index.html index.htm index.shtml index.cgi
</IfModule>
#
# Diretivas que controlam a exibio de listagem de diretrios geradas pelo se
#
<IfModule mod_autoindex.c>
#
# FancyIndexing: se voc deseja o padro fancy index ou padro para a inde
#
de arquivos no diretrio. Usando FancyIndexing o servidor
#
apache gerar uma listagem de arquivos que poder ser
#
ordenada, usar tipos de cones e encoding, etc. Veja as
#
prximas opes
IndexOptions FancyIndexing
#
# As diretivas AddIcon* dizem ao servidor que cone mostrar para um determ
# arquivo ou extenso de arquivos. Estes somente so mostrados para os
# diretrios classificados atravs da opo FancyIndexing.
#
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
AddIconByType (TXT,/icons/text.gif) text/*
227
AddIcon
AddIcon
AddIcon
AddIcon
/icons/back.gif ..
/icons/hand.right.gif README
/icons/folder.gif ^^DIRECTORY^^
/icons/blank.gif ^^BLANKICON^^
#
# 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
228
#
# O servidor procurar primeiro por nome.html, includo se ele for encontr
# e ento procurar pelo nome e incluir ele como texto plano se encontrad
ReadmeName README
# HeaderName o nome do arquivo que deve ser colocado no topo do ndice
# de diretrios. As regras de procura de nome so as mesmas do arquivo
# README
HeaderName HEADER
#
# IndexIgnore: um conjunto de nomes de arquivos que a listagem de diretri
# deve ignorar e no incluir na listagem. permitido o uso de coringas
# como no interpretador de comandos.
#
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
</IfModule>
#
#
#
#
#
#
#
#
AccessFileName .htaccess
# TypesConfig especifica o arquivo de configurao que contm os tipos
# usados pelo servidor
TypesConfig /etc/mime.types
#
#
#
#
#
#
#
#
#
#
#
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
#
#
AddLanguage
AddLanguage
AddLanguage
AddLanguage
AddCharset
AddLanguage
AddCharset
AddLanguage
AddLanguage
AddLanguage
AddLanguage
AddLanguage
AddLanguage
AddLanguage
230
de .de
el .el
it .it
ja .ja
ISO-2022-JP .jis
pl .po
ISO-8859-2 .iso-pl
pt .pt
pt-br .pt-br
ltz .lu
ca .ca
es .es
sv .se
cz .cz
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
# Redirect permite dizer aos clientes que documentos no existem mais no seu s
# e a nova localizao do documento.
# Format: Redirect nomeurl url
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
/icons/ /usr/share/apache/icons/
/doc/ /usr/doc/
/focalinux /var/www/focalinux
/debian-br /var/www/debian-br/htdocs
/debian /pub/mirror/debian
#
# 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
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
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>
# Desse ponto em diante, necessrio especificar o que ser permitido
# caso contrrio ser bloqueado pelo bloco acima
# Esta parte deve ser modificada para a localizao do documento raz do servi
<Directory /var/www>
235
# 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
236
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>
238
12.15
Cdigos HTTP
Esta seo pode ser uma interessante referncia para a programao e configurao da diretiva
ErrorDocument, etc.
2xx - Sucesso
200 OK
201 Criado
202 Aceito
239
240
241
Captulo 13
Servidor ident
Este captulo documenta o uso, benefcios, configurao, utilizao e exemplos do servidor
identd. Tambm so explicados alguns pontos positivos/negativos de sua utilizao para aumentar a segurana quando usado junto com o mecanismo de controle de acesso.
O servidor identd escolhido para ser descrito nesta seo do guia foi o oidentd.
13.1
Introduo
O ident (identidade) um servidor que permite 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 servidores ftp, smtp e outros. Outro benefcio a utilizao de mecanismos de restries de acesso
baseadas em usurios/endereoIP (o tcpd um exemplo de servio que permite esta caracterstica). A sintaxe usada para fazer tal restrio universal: usurio@endereoIP onde normalmente aparece o endereoIP que usado para bloquear/permitir o acesso.
No momento da conexo, o endereo IP checado pra ver se confere, e o servidor Ident da
mquina que est efetuando a conexo consultado para checar se o usurio que tem acesso
o mesmo especificado no controle de acesso. Isso aumenta um pouco a segurana do sistema,
mas existem algumas implicaes e pontos frgeis do identd que sero explicados no decorrer
deste captulo.
13.1.1
Verso
assumido que esteja usando a verso 1.7 do oidentd. As explicaes contidas aqui podem
funcionar para verses posteriores, mas recomendvel que leia a documentao sobre modificaes no programa (changelog) em busca de mudanas que alterem o sentido das explicaes
fornecidas aqui.
13.1.2
242
Contribuindo
13.1.3
Caractersticas
Caractersticas do oidentd:
Pode ser executado tanto como daemon quanto via inetd (este ltimo indicado para sistemas com pouca memria onde o servio pouco solicitado).
Pode mapear 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.
13.1.4
Ficha tcnica
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 identificao retornada ser a contida no arquivo. Esteja certo que o daemon oidentd tem
permisses para acessar este arquivo, caso contrrio nenhum spoof de identidade ser realizado. Para o spoof ser habilitado, o servio oidentd dever ser iniciado com a opo
-s ou -S (veja mais detalhes Opes de linha de comando on page 244). OBS: Certifiquese 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
243
192.168.1.0/24
usuario3
UNIX
192.168.1.0/16
usuario4
UNIX
As conexes vindas dos endereos da primeira coluna so mapeados para o
nome/sistema da segunda/terceira coluna e enviados a mquina que requisitou a identificao. Para o suporta a mapeamento de usurios via Masquerading funcionar, o daemon oidentd dever ser iniciado com a opo -m.
13.1.5
Requerimentos de Hardware
O oidentd requer pouca memria e pode ser executado sem problemas em um sistema com
o mnimo de memria necessria para rodar o kernel do Linux (2 MB para 2.2 e 4MB para
as sries 2.4 do kernel). Mesmo assim interessante considerar 1 MB a mais que o mnimo
requerido pelo kernel para uma folga na execuo do servio de identificao junto a outros
do sistema.
13.1.6
13.1.7
Instalao
13.1.8
244
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 arquivo 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.9
13.1.10
13.1.11
245
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 interessante 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
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 conectado a distncia como se estivesse em frente a ela. Ele substitui o rlogin e possui muitas
melhorias em relao a ele, como o controle de acesso, personalizao de seo e controle de
terminal.
14.1.1
Verso
assumido que esteja usando a verso 0.17.16 do telnet. As explicaes contidas aqui podem funcionar para verses posteriores, mas recomendvel que leia a documentao sobre
modificaes no programa (changelog) em busca de mudanas que alterem o sentido das explicaes fornecidas aqui.
14.1.2
Caractersticas
Conexo rpida (no utiliza transmisso de dados criptografada), recomendado para ambientes seguros.
Possui uma verso com suporte a 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.
14.1.3
248
Ficha tcnica
Pacotes:
telnet - Cliente telnet com suporte a autenticao.
telnetd - Servidor telnet com suporte a autenticao.
telnet-ssl - Cliente telnet com suporte a autenticao e ssl. Tambm suporta conexo
a servidores telnet padro quando o servidor no suporta ssl. Por padro tentada a
conexo usando ssl, se esta falhar ser assumida a transmisso em texto plano.
telnetd-ssl - Servidor telnet com suporte a autenticao e ssl. Tambm suporta
conexo de clientes telnet padro (sem suporte a ssl).
Utilitrios:
in.telnetd - Servidor telnet
telnet - Cliente telnet padro (quando o pacote telnet-ssl est instalado, simplesmente um link para telnet-ssl).
telnet-ssl - Cliente telnet com suporte a ssl.
14.1.4
Requerimentos de Hardware
Normalmente o servidor telnet carregado via inetd, o que permite sua utilizao em uma
mquina com a quantidade mnima de memria RAM requerida para o funcionamento do
kernel: 2 MB para kernels da srie 2.2 e 4MB para kernels da srie 2.4.
14.1.5
14.1.6
Instalao
ou
Os pacotes com o -ssl no final possuem suporte a criptografia ssl. Por padro a porta usada
para executar o servio telnet a 23 (ou outro nmero de porta definido no /etc/services).
A instalao do servidor telnet feita via inetd (no arquivo /etc/inetd.conf) e o controle
de acesso ao servio feito atravs dos arquivos /etc/hosts.allow e /etc/hosts.deny
(veja Servios iniciados atravs do inetd on page 52 e O mecanismo de controle de acessos
tcpd on page 56).
O servidor tem o nome in.telnetd e este dever ser usado para ajustar o controle de acesso
nos arquivos acima.
14.1.7
249
14.1.8
14.2
Controle de acesso
feito pelos arquivos hosts.allow e hosts.deny. Veja O mecanismo de controle de acessos tcpd on page 56.
14.3
Recomendaes
O servio telnet utiliza texto plano para seo (exceto nas verses cliente/servidor -ssl). Os
dados transmitidos por servios que utilizam texto plano podem ser capturados por sniffers e
trazer perigo ao seu sistema (veja Sniffer on page 403).
250
14.4
Use o comando: telnet [endereo] [porta] para realizar conexes com uma mquina
rodando o servidor telnet.
Adicionalmente as seguintes opes podem ser usadas:
-l [usuario] - Envia o nome de usurio ao computador remoto. Muito til com o
telnet-ssl.
-E - Desativa o caracter de escape
-a - Tenta fazer o login automtico usando o nome de usurio local. Se o login falhar, ser
solicitado o nome de usurio. Esta opo usada por padro com o cliente telnet-ssl.
-r - Emula o comportamento do programa rlogin.
Exemplos:
# Conecta-se ao servidor telnet rodando na porta 23 de sua prpria mquina
telnet localhost
251
Captulo 15
Servidor ssh
Este captulo documenta a instalao, configurao e personalizao do servidor de shell seguro sshd, alm de explicar as vantagens da utilizao dos servios criptogrficos. A utilizao do programa cliente ssh tambm explicada, alm de utilitrios usados para gerao de
chaves pblica/privada para o ssh (autenticao RSA/DAS - o que , vantagens), cpia de
arquivos e mtodos de autenticao usando o mtodo de chave pblica/privada RSA.
Ambas as verses 1 e 2 do ssh so documentadas neste captulo. Opes especficas do protocolo 1 ou 2 do ssh sero destacadas.
15.1
Introduo
O servio de ssh permite fazer o acesso remoto ao console de sua mquina, em outras palavras,
voc poder acessar sua mquina como se estivesse conectado localmente ao seu console (substituindo o rlogin e rsh). A principal diferena com relao ao servio telnet padro,
rlogin e rsh que toda a comunicao entre cliente/servidor feita de forma encriptada
usando chaves pblicas/privadas RSA para 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 possibilita 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).
15.1.1
252
Verso
assumido que esteja usando a verso 2.0 do ssh. As explicaes contidas aqui podem funcionar para verses posteriores, mas recomendvel que leia a documentao sobre modificaes 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
15.1.5
Ficha tcnica
Pacote: ssh
Utilitrios:
ssh - Cliente ssh (console remoto).
slogin - Link simblico para o programa ssh.
253
15.1.6
Requerimentos de Hardware
recomendado no mnimo 6MB de memria RAM para a execuo do servio ssh mais o kernel do Linux. Este limite deve ser redimensionado para servidores de acesso dedicado, uma
quantidade de 64MB deve ser confortvel para centenas de usurios conectados simultaneamente (o que raramente acontece).
Veja tambm Restries de acesso, recursos e servios on page 375 para configurao de restries usando PAM. O ssh que acompanha a distribuio Debian vem com o suporte a tcp
wrappers compilado por padro.
15.1.7
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).
15.1.8
15.1.9
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.1.10
255
15.2
15.2.1
ssh
256
ssh ftp.sshserver.org
# Conecta-se ao servidor remoto usando o login john (via ssh verso 2)
ssh -2 ftp.sshserver.org -l john
# Conecta-se ao servidor remoto usando compactao e o login john
ssh ftp.sshserver.org -C -l john
# Semelhante ao exemplo acima, usando o formato "login@ip"
ssh john@ftp.sshserver.org -C
# Conecta-se ao servidor remoto usando compactao, o login john,
# ativa o redirecionamento do agente de autenticao (-A) e redirecionamento
# de conexes X11 (-X). Veja a prxima seo para entender como o
# suporte a redirecionamento de conexes do X funciona.
ssh ftp.sshserver.org -C -A -X -l john
Redirecionamento de conexes do X
O redirecionamento de conexes do X Window poder ser habilitado em ~/.ssh/config ou
/etc/ssh/ssh_config ou usando as opes -A -X na linha de comando do ssh (as opes
-a e -x desativam as opes acima respectivamente). Uma varivel $DISPLAY criada automaticamente para fazer o redirecionamento ao servidor X local.
Ao executar um aplicativo remoto, a conexo redirecionada a um DISPLAY proxy criado pelo
ssh (a partir de :10, por padro) que faz a conexo com o display real do X (:0), ou seja, ele pular os mtodos de autenticao xhost e cookies. Por medidas de segurana recomendvel
habilitar o redirecionamento individualmente somente se voc confia no administrador do sistema remoto.
# Exemplo de configurao do ssh_config
# Permite Redirecionamento de conexes para o prprio computador (nomes de
# mquinas podem ser especificadas).
Host 127.0.0.1
ForwardAgent yes
ForwardX11 yes
# Opes especficas do cliente para conexes realizadas a 192.168.1.4 usando
# somente o protocolo 2
Host 192.168.1.4
# As 2 linhas abaixo ativam o redirecionamento de conexes do X
ForwardAgent yes
ForwardX11 yes
PasswordAuthentication yes
257
Port 22
Protocol 2
Cipher blowfish
# Opes especficas do cliente para conexes realizadas a 192.168.1.5 usando
# somente o protocolo 1
Host 192.168.1.5
# As 2 linhas abaixo desativam o redirecionamento de conexes do X
ForwardAgent no
ForwardX11 no
PasswordAuthentication yes
Port 22
Protocol 1
Cipher blowfish
#
#
#
#
#
#
#
#
#
#
#
#
#
CheckHostIP yes
RhostsAuthentication no
RhostsRSAAuthentication yes
RSAAuthentication yes
FallBackToRsh no
UseRsh no
BatchMode no
StrictHostKeyChecking yes
IdentityFile ~/.ssh/identity
IdentityFile ~/.ssh/id_dsa
IdentityFile ~/.ssh/id_rsa1
IdentityFile ~/.ssh/id_rsa2
EscapeChar ~
15.2.2
scp
Permite a cpia de arquivos entre o cliente/servidor ssh. A sintaxe usada por este comando
a seguinte:
258
15.2.3
sftp
Permite realizar transferncia de arquivos seguras atravs do protocolo ssh. A conexo e transferncias so realizadas atravs da porta 22 (ainda no possvel modificar a porta padro). A
sintaxe para uso deste comando a seguinte:
sftp usuario@host_remoto
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 superiores.
OBS3: Algumas opes comuns do cliente ftp padro (como mget) ainda no esto
disponveis ao sftp. Veja a pgina de manual para detalhe sobre as opes disponveis.
15.3
Servidor ssh
15.3.1
sshd
Este o daemon de controle da conexo encriptada via protocolo ssh, transferncia de arquivos
e shell interativo. As opes de linha de comando esto disponveis em Opes de linha de
comando on page 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.
15.3.2
Controle de acesso
15.3.3
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
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 especificado. ATENO Nunca distribua sua chave privada, nem armazene-a em servidores de
acesso pblicos ou outros mtodos que permitem outros terem acesso a ela. Se precisar
de uma cpia de segurana, faa em disquetes e guarde-a em um lugar seguro.
2 Instale a chave pblica no servidor remoto que deseja se conectar, por exemplo,
www.sshserver.org:
ssh-copy-id -i ~/.ssh/identity gleydson@www.servidorssh.org
A funo do utilitrio acima entrar no sistema remoto e adicionar a chave pblica local
~/.ssh/identity.pub no arquivo /home/gleydson/.ssh/authorized_keys do
sistema remoto www.sshserver.org. O mesmo processo poder ser feito manualmente usando os mtodos tradicionais (ssh/scp). Caso o arquivo remoto /home
/gleydson/.ssh/authorized_keys no existe, ele ser criado. Seu formato idntico ao ~/.ssh/know_hosts e contm uma chave pblica por linha.
3 Agora utilize o ssh para entrar no sistema remoto usando o mtodo de chave
pblica/privada.
Entre com a senha que usou para gerar o par de chaves
pblico/privado (ele entrar diretamente caso no tenha digitado uma senha).
Para autenticar em uma verso 2 do ssh (usando chave RSA 2 ou DSA):
1 Gere um par de chaves pblica/privada usando o comando:
ssh-keygen -t rsa -f ~/.ssh/id_rsa
ou
ssh-keygen -t dsa -f ~/.ssh/id_rsa
Um par de chaves RSA 2/DSA ser gerado. Para alterar o tamanho da chave use a
opo -b tamanho. Depois de gerar a chave, o ssh-keygen pedir uma frase-senha (
recomendvel ter um tamanho maior que 10 caracteres e podem ser includos espaos).
Se no quiser digitar uma senha para acesso ao sistema remoto, tecle <Enter> quando
perguntado. Mude as permisses do diretrio ~/.ssh para 750. ATENO Nunca
distribua sua chave privada, nem armazene-a em servidores de acesso pblicos ou outros
mtodos que permitem outros terem acesso a ela. Se precisar de uma cpia de segurana,
faa em disquetes e guarde-a em um lugar seguro.
2 Instale a chave pblica no servidor remoto que deseja se conectar copiando o arquivo
261
com:
scp ~/.ssh/id_rsa.pub usuario@servidorremoto:~/.ssh/authorized_keys2
ou
scp ~/.ssh/id_dsa.pub usuario@servidorremoto:~/.ssh/authorized_keys2
(caso tenha gerado a chave com a opo -t dsa)
Caso o arquivo remoto /home/gleydson/.ssh/authorized_keys2 no existe, ele
ser criado. Seu formato idntico ao ~/.ssh/know_hosts2 e contm uma chave
pblica por linha.
3 Agora utilize o ssh para entrar no sistema remoto usando o mtodo de chave
pblica/privada.
Entre com a senha que usou para gerar o par de chaves
pblico/privado (ele entrar diretamente caso no tenha digitado uma senha).
OBS: Dever ser levado em considerao a possibilidade de acesso fsico ao seu diretrio pessoal, qualquer um que tenha posse de sua chave privada poder ter acesso ao sistema remoto.
O tipo de chave criada por padro a rsa1 (compatvel com as verses 1 e 2 do ssh). A opo
-t [chave] poder ser usada (ao gerar a chave) para selecionar o mtodo de 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 estilo do passwd). Opcionalmente voc pode utilizar a sintaxe: ssh-keygen -p -f
~/.ssh/identity -P senha_antiga -N senha_nova, que troca a senha em um nico
comando (til para ser usado em scripts junto com a opo -q para evitar a exibio de
mensagens de sada do ssh-keygen).
15.3.4
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:
command="ls / -la" ssh-dss ABCAB3NzaC5555MAAACBAL3...
Com este mtodo possvel restringir a execuo de alguns comandos/servios alm de outras
possibilidades como a mudana de variveis especficas para o comando:
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,command="ls / -la" ss
15.3.5
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
262
15.3.6
Aplicaes remotas podem ser abertas localmente com o uso desta tcnica. Voc poder usar
para acessar portas que estariam disponveis somente atravs do endereo remoto, realizar
conexes criptografadas ou com compactao (garantindo uma boa taxa de transferncia para
protocolos que usem mais texto).
Por exemplo, para redirecionar o trfego da porta 80 do servidor remoto para a porta 2003
local:
ssh -l seu_login servidor -L2003:servidor_remoto:80 -f sleep 60
O sleep 60 tem a funo de apenas deixar o tunel aberto por 60 segundos, tempo 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 .
15.3.7
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 ambas as chaves de mquina e chave do servidor e envia este nmero ao servidor. Ambos os
lados ento usam este nmero aleatrio como chave de seo que usado para encriptar
todas as comunicaes seguintes na seo.
O resto da seo usa um mtodo de embaralhamento de dados convencional, atualmente
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 desativada).
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 oferecida 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 (PubkeyAuthentication) e o mtodo de autenticao convencional usando senhas.
15.3.8
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:
#
#
#
#
264
# Porta padro usada pelo servidor sshd. Mltiplas portas podem ser
# especificadas separadas por espaos.
Port 22
# Especifica o endereo IP das interfaces de rede que o servidor sshd
# servir requisies. Mltiplos endereos podem ser especificados
# separados por espaos. A opo Port deve vir antes desta opo
ListenAddress 0.0.0.0
# Protocolos aceitos pelo servidor, primeiro ser verificado se o cliente
# compatvel com a verso 2 e depois a verso 1. Caso seja especificado
# somente a verso 2 e o cliente seja verso 1, a conexo ser descartada.
# Quando no especificada, o protocolo ssh 1 usado como padro.
Protocol 2,1
265
HostKey /etc/ssh/ssh_host_key
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
# Tamanho da chave. 768 bits o padro
ServerKeyBits 768
# Tempo mximo para login no sistema antes da conexo ser fechada
LoginGraceTime 600
# Tempo para gerao de nova chave do servidor (segundos). O padro
# 3600 segundos (1 hora).
KeyRegenerationInterval 3600
# Ignora os arquivos ~/.rhosts e ~/.shosts
IgnoreRhosts yes
# Ignora (yes) ou no (no) os arquivos ~/.ssh/known_hosts quando for usado
# para a opo RhostsRSAAuthentication. Se voc no confia neste mecanismo
# ajuste esta opo para yes.
IgnoreUserKnownHosts no
# Checa por permisses de dono dos arquivos e diretrio de usurio antes de
# fazer o login. muito recomendvel para evitar riscos de segurana
# com arquivos lidos por todos os usurios.
StrictModes yes
# Permite (yes) ou no (no) o redirecionamento de conexes X11. A segurana
# do sistema no aumentada com a desativao desta opo, outros mtodos
# de redirecionamento podem ser usados
X11Forwarding yes
266
267
# pelo daemon sshd. O valor padro 10. Valores aleatrios podem ser
# especificados usando os campos "inicio:taxa:mximo". Por exemplo,
# 5:40:15 rejeita at 40% das tentativas de autenticao que excedam o
# limite de 5 at atingir o limite mximo de 15 conexes, quando
# nenhuma nova autenticao permitida.
MaxStartups 10
#MaxStartups 10:30:60
# Mostra uma mensagem antes do nome de usurio/senha
Banner /etc/issue.net
# Especifica se o servidor sshd far um DNS reverso para verificar se o
# endereo confere com a origem (isto til para bloquear conexes
# falsificadas - spoofing). O padro "no".
ReverseMappingCheck yes
# Ativa o subsistema de ftp seguro. Para desabilitar comente a linha
# abaixo
Subsystem sftp /usr/lib/sftp-server
268
269
Captulo 16
Servidor pop3
Este captulo descreve a instalao, configurao, criao de contas e controle de acesso ao
servidor pop3. Este captulo baseado no servidor qpopper da Qualcomm.
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 modificaes no programa (changelog) em busca de mudanas que alterem o sentido das explicaes
fornecidas aqui.
16.1.2
Contribuindo
O site do qpopper http://www.eudora.com/qpopper/, anncios de novas verses, bugs e correes so enviados para <qpopper-announce@rohan.qualcomm.com>
(inscreva-se enviando uma mensagem com o assunto subscribe para o nome da lista acrescentando -request). A lista de suporte aos usurios <qpopper@lists.pensive.org>
(o mtodo de inscrio idntico a lista announce).
16.1.3
270
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.
16.1.4
Ficha tcnica
Pacote: qpopper.
Utilitrios:
in.qpopper - Servidor pop3.
popauth - Manipula os bancos de dados de autorizao quando usado o mtodo de
autenticao APOP.
Arquivos de 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.
16.1.5
Requerimentos de Hardware
O servidor qpopper requer no mnimo 6MB de memria para rodar e espao em disco suficiente para acomodar os e-mails de usurios.
16.1.6
16.1.7
Instalao
271
16.1.8
O servio executado por padro via inetd e utiliza o controle de acesso tcpd (veja O mecanismo de controle de acessos tcpd on page 56). Adicionalmente voc pode 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.
16.1.9
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
16.1.10
272
-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 comando 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 arquivo /etc/pop.auth (gerenciado pelo popauth. Este o padro.
1 - Somente permite acesso de usurios cadastrados no arquivo /etc/pop.auth.
Qualquer acesso usando texto plano negado.
2 - Permite autenticao usando texto plano como preferncia, at mesmo para
usurios que estejam no /etc/pop.auth). til para clientes que no suportam
autenticao usando texto plano.
3 - Somente usurios conectando da mesma mquina (127.0.0.1) podem usar autenticao em texto plano.
4 - Permite autenticao usando texto plano somente se uma conexo 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 adicionais para o servidor. Este arquivo lido aps o processo de autenticao e deve ter permisses leitura/gravao para o dono. Isto no recomendvel em servidores seguros,
a 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
273
Este arquivo deve ter como dono o administrador ou dono do servidor pop3. Esta alternativa mais segura que a anterior porque o usurio no ter acesso ou desativar opes
especficas.
-y [facilidade ] Permite modificar o nvel facilidade que as mensagens so registradas no
syslogd (veja Arquivo de configurao syslog.conf on page 76).
16.1.11
Este recurso muito til para enviar alertas ou avisos para todos os usurios em seu sistema
de uma s vez. A mensagem escrita no diretrio /var/spool/popbull seguindo um formato especial e quando o usurio pop3 se conecta para pegar seus e-mails receber tambm
uma cpia do boletim. O controle de boletins j recebido pelo usurio feito no arquivo ~
/.popbull. Siga os passos a seguir para configurar este sistema:
1 Ative o suporte a envio de boletins no servidor qpopper, adicionando a opo -b
/var/spool/popbull a linha de comando.
2 Os nmeros de boletins so controlados seqencialmente pelos arquivos ~/.popbull,
portanto importante comear com o nome do boletim com pelo menos 5 dgitos (00001,
00002, 00003, etc). Vamos usar 00001-teste em nosso exemplo.
3 A primeira linha do boletim deve conter a palavra From e um espao e deve ser completada com um nome e data, seguido de campos essenciais para o envio da mensagem:
From teste Sex Set 29 21:40:00 2001
To: user@localhost
From: Administrador do Sistema <root@localhost>
Date: Fri, 29 Sep 2001 21:40:00 -0800 (PST)
Subject: Teste do sistema de boletins
Este apenas um teste para o sistema de boletins. Se tudo estiver OK
voc receber esta mensagem quando pegar seus e-mails no cliente pop3
e este boletim ser registrado no arquivo ~/.popbull para que no seja
novamente recebido.
Deve haver uma linha em branco para separar o cabealho da mensagem.
OBS: Quando incluir novos usurios no sistema, somente os ltimos 10 boletins sero enviados.
16.1.12
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.
16.1.13
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
Este captulo explica os requerimentos, instalao, configurao, segurana e diversos modelos
de configurao de acesso para trabalho em grupo utilizados pelo CVS.
No tome-o como uma referncia completa ao uso e configurao do cvs, a pesquisa de sua
info page muito importante.
17.1
Introduo ao CVS
O CVS (Concurrent Version Software) permite que se organizem grupos de trabalho para desenvolvimento de projetos colaborativos. Um projeto pode ser desde um programa em C,
documentao em equipe, etc. O uso do CVS recomendado para qualquer desenvolvimento
de projeto que tenha vrios envolvidos trabalhando ao mesmo tempo.
Para cada mudana feita no programa, pedido uma descrio dos trabalhos realizados e o
sistema registra todas as 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.
17.1.1
276
Verso
A verso do CVS documentada no guia a 1.11.1. As explicaes aqui certamente sero compatveis com verses posteriores deste programa.
17.1.2
Histria
O CVS uma substituio do sistema RCS (Revision Control System) ele possui mais recursos
e foi criado sendo compatvel com o RCS.
A histria do CVS (extrada de sua info page) que ele foi iniciado a partir de um conjunto de scripts shell escritos por Dick Grune que foram postados ao grupo de notcias
comp.sources.unix no volume 6 de Dezembro de 1986. Na verso atual no esto mais
presentes shell scripts porque muitos dos 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.
17.1.3
Atravs da lista de discusso info-cvs. Para se inscrever envie uma mensagem com o subject
subscribe para info-cvs-request@gnu.org. Outra alternativa atravs do grupo de
noticias (newsgroup) da Usenet comp.software.config-mgm.
17.1.4
Caractersticas
Abaixo uma lista de caractersticas que tornam o CVS til no gerenciamento de trabalhos em
grupo:
Gerenciamento de projeto em equipe
Log de todas as alteraes realizadas
Lock de arquivos, permitindo que somente uma determinada pessoa modifique o arquivo durante o desenvolvimento do projeto.
Histrico de todas as mudanas feitas, isto permite voltar a uma verso anterior em caso
de problemas, e ver o que houve de errado com o cdigo.
Os projetos podem ser hospedados em repositrios.
Podem ser criados diversas equipes de trabalho para cada repositrios, e 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.
Permisses de acesso individuais de leitura/gravao.
277
possvel criar um usurio com acesso annimo sem dar uma conta no sistema.
Pode tanto utilizar o banco de dados de contas/senhas do sistema como um banco de
dados de autenticao do prprio CVS.
Permite utilizar diversos mtodos de acesso ao servidor: local, pserver, ext, etc. Cada
um destes mtodos ser descrito a seguir.
Permite o acesso via ssh para usurios que j possuam conta na mquina servidora. Este
mtodo garante segurana no envio da senha criptografada (veja Sniffer on page 403
para detalhes).
Permite visualizar facilmente o que foi 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 gerenciamento de grupos com permisses diferenciadas.
17.1.5
Ficha tcnica
Pacote: cvs
Utilitrios:
cvs - Servidor/ferramenta cliente.
cvsbug - Envia um bug sobre o CVS para a equipe de suporte.
rcs2log - Converte arquivos de log do formato usado pelo RCS para o CVS. Utilizado
na migrao desta ferramenta para o CVS.
cvsconfig - Usado pela Debian para ativar/desativar o servidor pserver. Pode tambm ser usado o dpkg-reconfigure cvs para desativar o servidor pserver e suas
caractersticas.
cvs-makerepos - Script da Debian que l a lista de repositrios de /etc
/cvs-pserver.conf, cria os repositrios no local apropriado, corrige as permisses
do diretrio e adiciona os repositrios no servidor pserver.
cvs-pserver - Script da Debian responsvel por fazer uma inicializao mais inteligente do servidor de CVS via pserver, leitura e processamento de repositrios, etc.
Normalmente ele chamado a partir do arquivo /etc/inetd.conf.
17.1.6
Requerimentos de Hardware
Para executar o CVS requerido pelo menos 3 vezes mais memria que o tamanho do maior arquivo usado pelo projeto (para realizao de diffs entre as atualizaes) e uma boa quantidade
de espao em disco.
Na realidade os requerimentos sobre o CVS dependem muito da aplicao que ser desenvolvida. recomendvel que a mquina tenha memria suficiente para evitar o uso de swap,
que degrada bastante a performance do sistema.
17.1.7
278
17.1.8
Instalao
17.1.9
A nica configurao requerida quando o CVS executado via pserver. Para isto,
necessria a seguinte linha no arquivo /etc/inetd.conf
cvspserver
stream
tcp
nowait.200
root
/usr/sbin/tcpd /usr/sb
Note que o parmetro 200 indica quantas vezes o processo CVS poder ser executado
por minuto no sistema. Caso esse nmero seja excedido, o servio ser desabilitado e ser
necessrio reiniciar o servidor inetd com o comando killall -HUP inetd para reativar
o servidor CVS pserver (veja /etc/inetd.conf on page 53 captulo do inetd para detalhes).
Ajuste este valor de forma adequada ao seu servidor!
Veja o script cvs-pserver sendo executado no final da linha. Ele foi desenvolvido para lidar
de forma mais inteligente com a configurao do servidor CVS pserver.
17.1.10
279
17.2
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.
Configurando o mtodo local
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
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.
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.
281
export CVSROOT=:ext:conta@servidor.org.br:/var/lib/cvs
cvs login
A conta uma conta de usurio existente no servidor remoto (por exemplo, gleydson)
seguido do nome do servidor remoto (separado por uma @). Por exemplo para acessar o
servidor cvs.cipsga.org.br usando a conta michelle:
export CVSROOT=:ext:michelle@cvs.cipsga.org.br:/var/lib/cvs
cvs checkout
OBS: A senha via mtodo de acesso ext ser pedida somente uma vez quando for necessrio
o primeiro acesso ao servidor remoto. Veja os detalhes de utilizao dos comandos de CVS
aps o login na seo Clientes de CVS on page 293. O uso mais freqente do ext para
conexes seguras feitas via ssh, feita da seguinte forma:
export CVS_RSH=ssh
export CVSROOT=:ext:michelle@cvs.cipsga.org.br:/var/lib/cvs
cvs checkout
O acesso de leitura/gravao do usurio, definido de acordo com as permisses deste usurio
no sistema. Uma maneira recomendada definir um grupo que ter acesso a gravao no CVS
e adicionar usurios que possam fazer gravao neste grupo.
OBS1: O acesso via ssh traz a vantagem de que as senhas trafegaro de forma segura via rede,
no sendo facilmente capturadas por sniffers e outros programas de monitorao que possam
estar instalados na rota entre voc e o servidor.
OBS2: possvel especificar a senha na varivel CVSROOT usando a sintaxe semelhante a
usada no ftp:
export CVSROOT=:ext:michelle:senha@cvs.cipsga.org.br:/var/lib/cvs
Entretanto isto no recomendado, pois os processos da mquina podero capturar facilmente
a senha (incluindo usurios normais, caso a mquina no esteja com patches de restries de
acesso a processos configurada, que o padro em quase todas as distribuies de Linux).
17.2.4
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.
282
A grande vantagem deste segundo mtodo que cada projeto poder ter membros com acessos
diferenciados; o membro x poder ter acesso ao projeto sgml mas no ao projeto focalinux;
ou o usurio y poder ter acesso de gravao (para trabalhar no projeto focalinux) mas
somente acesso de leitura ao projeto sgml.
Este o mtodo de acesso preferido para a criao de usurios annimos (uma vez que o
administrador de um servidor que hospede muitos projetos no vai querer abrir um acesso
annimo via ext para todos os projetos).
Tambm existe a vantagem que novos membros do projeto e tarefas administrativas so feitas
por qualquer pessoa que possua acesso de gravao aos arquivos do repositrio.
17.2.5
stream
tcp
# em outras Distribuies
cvspserver stream tcp nowait
nowait.400
root
root
/usr/sbin/tcpd /usr/sb
283
Ser pedido a senha da usuria michelle. Entrando com a senha correta, o sistema retornar
para o aviso de comando. Uma mensagem ser mostrada caso a senha entrada seja incorreta. Daqui em diante, o resto da seo CVS normal e voc ter as permisses de acesso ao
repositrio de acordo com as suas permisses de acesso naquele diretrio.
OBS1: A senha poder ser passada junto com o login da mesma forma como o ftp. Veja a
observao em 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.
284
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 permitir mapear a UID/GID do usurio criado com o acesso do CVS sem comprometer a
segurana do sistema de arquivos. Isto pode ser feito atravs do seguinte comando:
adduser --disabled-password --disabled-login usuario
necessrio 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 configurados (como eles fazem acesso, permisses de acesso, diretrios onde gravam arquivos, so algumas delas) antes de escolher como um servio novo na mquina
funcionar. Isto poder modificar ou deixar vulnervel a segurana de sua instalao. 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 permisses de gravao no diretrio do CVS, caso contrrio ele no poder fazer commits. Lembre-se que as permisses de leitura/gravao do usurio sero controladas atravs de arquivos do prprio pserver, mas tambm necessria a permisso
de gravao do usurio no repositrio. Isto poder ser feito atravs de grupos de
sistema e garante uma dupla camada de segurana. OBS2: Caso tenha preferido
usar o pserver sob um usurio diferente de root e esteja obtendo a mensagem
setgid failed: Operation not permitted, 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 commit nos arquivos, adicionar os arquivos readers, writers e passwd no repositrio
(veja Adicionando um arquivo ao mdulo CVS do servidor on page 289) para o servidor
de CVS para te-lo funcionando. Note que em verses mais novas do CVS, no possvel
285
transferir o arquivo passwd via rede, ento ser necessrio cria-lo manualmente dentro
do repositrio do servidor. OBS: O arquivo passwd no transferido pelo commit por
motivos de segurana, pois ele contm senhas que podem ser capturadas e usada por pessoas maliciosas. Ser necessrio transferi-lo manualmente para o repositrio do servidor
remoto (voc ter que ser o usurio root ou ter permisses adequadas). O recomendvel
utilizar o scp (scp on page 257) para realizar transferncias seguras. .
O mtodo de acesso do CVS aos arquivos readers e writers restritiva, portanto se um
nome de usurio existir no arquivo readers e writers o que valer ser o menor nvel de
acesso. Vendo os exemplos acima, os usurios gleydsonm e anonymous tero somente acesso a
leitura do repositrio e macan, otavio, hmh, kov acesso de leitura e gravao.
17.2.6
gssapi
Quando o CVS compilado com o suporte a Kerberos 5, ele tenta estabelecer automaticamente
uma conexo segura usando este mtodo. Este mtodo funciona somente se o CVS estiver
compilado com o suporte a Kerberos (opo --with-gssapi).
17.3
Esta seo descreve todos os passos necessrios para colocao de um projeto para ser desenvolvido atravs do CVS, os comandos do cvs, consideraes a respeito dos comandos e sua
utilizao atravs de exemplos didticos.
17.3.1
Repositrio
286
17.3.2
Criando um repositrio
17.3.3
Quando usado o mtodo de acesso pserver (pserver (password server) on page 281),
necessrio fazer para ter acesso ao repositrio. Por exemplo, para acessar o repositrio /var
/lib/cvs no servidor servidor.org.br:
export CVSROOT=:pserver:anonymous@servidor.org.br:/var/lib/cvs
cvs login
ou
cvs -d :pserver:anonymous@servidor.org.br:/var/lib/cvs login
287
Ento ser solicitada a senha para ter acesso ao sistema. Note que toda a seo de cvs ocorre
por comandos interativos que logo aps concludos retornam para o interpretador de comandos. O restante desta seo descrever estes comandos e como utiliza-los de maneira 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.
17.3.4
Embora que no seja necessrio, aps o uso do cvs recomendvel executar o logout do servidor para encerrar sua conexo com a mquina remota.
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.
17.3.5
Baixando arquivos
O comando checkout (ou co) usado para fazer isto. Para utiliz-lo seguindo os exemplos
anteriores:
mkdir /tmp/cvs
cd /tmp/cvs
cvs checkout modulo
cvs -d :pserver:anonymous@servidor.org.br:/var/lib/cvs
Ser criado um subdiretrio chamado modulo que contm todos os arquivos do servidor de
CVS remoto. necessrio apenas que tenha acesso de leitura ao servidor de CVS para executar
este comando. Voc pode usar a opo -z [num] para ativar a compactao na transferncia
dos arquivos, isso acelera bastante a transferncia em conexes lentas: cvs -z 3 checkout
modulo.
Tambm possvel especificar apenas subdiretrios de um mdulo para baixa-lo via CVS e a
estrutura de diretrios criada localmente ser idntica ao do servidor remoto.
17.3.6
288
Use o comando cvs import para adicionar um novo projeto ao CVS. As entradas nos arquivos administrativos sero criadas e o projeto estar disponvel para utilizao dos usurios.
A sintaxe bsica do comando import a seguinte:
cvs import [opes] [dir_modulo] [tag] start
Para adicionar o projeto focalinux que reside em /usr/src/focalinux ao cvs:
# Primeiro exportamos o CVSROOT para dizer onde e qual repositrio acessar
export CVSROOT=:ext:usuario@servidor.com.br:2401/var/lib/cvs
cd /usr/src/focalinux
cvs import documentos/focalinux tag_modulo start
Por padro o import sempre utiliza a mscara * para fazer a importao dos arquivos do diretrio atual.
O projeto focalinux ser acessado atravs de $CVSROOT/documentos/focalinux (cvs checkout documentos/focalinux), ou seja, /var
/lib/cvs/documentos/focalinux no servidor CVS ter a cpia do focalinux.
tag_modulo 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 relativo na estrutura de diretrios, ou seja, voc precisar entrar no diretrio pai (como /usr
/src/projeto) para executar o cvs import. No permitido usar / ou .., isto probe a
descida em diretrios de nvel mais altos e srios incidentes de segurana em servidores CVS
mal configurados pelo Administrador.
17.3.7
Este comando sincroniza a cpia remota do CVS (ou arquivo) com a cpia local que est trabalhando em sua mquina. Quando se trabalha nativamente no CVS em equipe recomendado
a utilizao deste comando pois algum pode ter 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:
cvs update main.c
ou
cvs -d :ext:usuario@servidor.com.br:2401/var/lib/cvs update main.c
289
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 []).
17.3.8
O comando commit (ou ci), envia as mudanas feitas nos arquivos locais para o servidor
remoto. Um exemplo de commit no arquivo main.c:
cvs commit main.c
cvs commit main.?
cvs commit *
O editor padro do sistema ser aberto e pedir uma descrio das modificaes para o commit. Esta descrio ser usada como referncia sobre as atualizaes feitas em cada etapa do desenvolvimento. 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:
cvs commit -e vi main.c
17.3.9
Aps criar/copiar o arquivo para seu diretrio de trabalho, use o comando add para fazer isto.
O arquivo ser enviado ao servidor, bastando apenas executa o commit para salvar o arquivo:
cvs add main.h
cvs commit main.h
17.3.10
290
17.3.11
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:
cvs remove main.h
cvs commit main.h
17.3.12
Para remover um diretrio, primeiro remova todos os arquivos existentes dentro dele com o
comando rm e salve para o servidor (seguindo os mtodos descritos em Removendo um arquivo do mdulo CVS remoto on the current page). O CVS no remove diretamente diretrios
vazios, uma maneira de contornar isto usar o update ou commit seguido da opo -P para
ignorar diretrios vazios. Ento a cpia remota do diretrio ser removida do servidor:
rm -f teste/*
cvs remove teste/.
cvs commit teste/.
cd ..
cvs checkout modulo
Depois do checkout, o subdiretrio teste ter sido removido.
17.3.13
O comando release faz esta funo. Ele no requerido, mas caso voc tenha feito modificaes 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 modificaes no histrico do cvs. O comando pode ser acompanhado de -d para remover o
mdulo anteriormente baixado com o commit:
291
17.3.14
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.
17.3.15
O comando status permite verificar que verses do arquivo especificado est disponvel localmente, 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).
17.3.16
Alm dos comandos do cvs descritos aqui, existem comandos no pacote cvsutils que auxiliam desde quem est aprendendo a utilizar o CVS (com o comando cvsdo para simular
algumas operaes de adio/remoo de arquivos) at profissionais que usam o programa
no dia a dia (cvsu, cvsco, cvschroot).
17.4
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 especificado, ser usado o diretrio do CVS. Exemplo: LockDir=/var/lock/cvs
TopLevelAdmin Permite criar ou no um diretrio chamado CVS no root do diretrio de trabalho durante o cvs checkout.
LogHistory Utiliza opes para 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 permitido.
17.4.5 verifymsg
Especifica o programa usado para verificar as mensagens de log.
293
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
usado para registrar detalhes do comando history do CVS.
17.5
Clientes de CVS
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.
17.5.2
294
gcvs - Linux
Este um cliente CVS em GTK+Python para Linux que interage externamente com o cliente
cvs externo, todas as opes do cvs esto disponveis atravs de checkboxes nas telas de comando, incluindo suporte a compactao, visualizador 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, incluindo 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 exemplo: mkdir ~/projetos
4 Acesse o menu Create, Checkout Module para baixar o projeto do CVS para sua mquina
local. Ele ir te pedir o nome de diretrio para onde o cdigo fonte do servidor CVS ser
baixado. Digite ~/projetos ou outro diretrio que foi criado no passo anterior. OBS:
No utilize o nome "cvs" para o diretrio local, pois o gcvs oculta automaticamente
pois os arquivos administrativos de controle 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 adicionar o projeto ao servidor. Em Vendor tag especifique o nome do projeto e sua verso logo abaixo. Clique em OK e aguarde a transferncia dos arquivos para o servidor.
Para maiores detalhes sobre a criao de novos projetos no servidor de CVS, veja Adicionando um novo projeto on page 288. OBS: Voc dever ter permisso de gravao
para criar um novo projeto no servidor CVS.
8 A partir de agora voc poder explorar as funes do programa e fazer uso das funes
habituais do CVS. Todas as funes de operao e opes extras do CVS esto disponveis
na interface 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,
295
leia atentamente Criando projetos para serem usados no CVS on page 285 e tambm no
deixe de consultar detalhes na info page do cvs.
17.5.3
WinCVS - Windows
Este um cliente CVS em Python para Windows equivalente ao gcvs para Linux. Suas
funcionalidades e recomendaes so idnticas aos do gcvs. Este cliente pode ser baixado de: http://telia.dl.sourceforge.net/sourceforge/cvsgui/WinCvs13b13.
zip e o Python para Windows de http://starship.python.net/crew/mhammond/
downloads/win32all-153.exe.
Para sua utilizao, as explicaes em gcvs - Linux on the preceding page so totalmente
vlidas.
17.5.4
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, recursos 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.
17.6
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
296
Logging in to :pserver:gleydson@ima.cipsga.org.br:2401/var/lib/cvs
CVS password: <password>
gleydson@oberon:/tmp/teste$
# Pegar o mdulo "dillo do cvs"
cvs -z 3 co dillo
cvs server: Updating dillo
cvs server: Updating dillo/CVSROOT
U dillo/CVSROOT/checkoutlist
U dillo/CVSROOT/commitinfo
U dillo/CVSROOT/config
U dillo/CVSROOT/cvswrappers
U dillo/CVSROOT/editinfo
U dillo/CVSROOT/loginfo
U dillo/CVSROOT/modules
U dillo/CVSROOT/notify
U dillo/CVSROOT/rcsinfo
U dillo/CVSROOT/taginfo
U dillo/CVSROOT/verifymsg
cvs server: Updating dillo/CVSROOT/Emptydir
cvs server: Updating dillo/dillo
U dillo/dillo/AUTHORS
U dillo/dillo/COPYING
U dillo/dillo/ChangeLog
U dillo/dillo/ChangeLog.old
U dillo/dillo/INSTALL
U dillo/dillo/Makefile.am
U dillo/dillo/Makefile.in
U dillo/dillo/NEWS
U dillo/dillo/README
U dillo/dillo/aclocal.m4
U dillo/dillo/config.h.in
U dillo/dillo/configure
U dillo/dillo/configure.in
U dillo/dillo/depcomp
U dillo/dillo/dillorc
U dillo/dillo/install-sh
U dillo/dillo/missing
U dillo/dillo/mkinstalldirs
U dillo/dillo/stamp-h.in
cvs server: Updating dillo/dillo/doc
U dillo/dillo/doc/Cache.txt
U dillo/dillo/doc/Cookies.txt
U dillo/dillo/doc/Dillo.txt
U dillo/dillo/doc/Dw.txt
U dillo/dillo/doc/DwImage.txt
U dillo/dillo/doc/DwPage.txt
...
# Modifica o arquivo do projeto
cd /dillo/dillo/doc
vi Cache.txt
# Saimos do sistema
cvs logout
297
298
299
Captulo 18
SAMBA
Este captulo descreve a configurao, utilizao, aplicao, integrao de redes Windows e
Linux atravs do SAMBA. Entre as explicaes de cada opo, so passados detalhes importantes relacionados com seu funcionamento, performance e impactos de segurana sobre o
servidor como um todo.
Uma seo foi especialmente separada para os mais paranicos (como eu) conhecerem, combinar e aplicar as restries de forma mais adequada a configurao da mquina.
18.1
Introduo
18.1.1
300
Verso documentada
18.1.2
Histria
Andrew Tridgell - Desenvolveu o samba porque precisava montar um volume Unix em sua
mquina DOS. Inicialmente ele utilizava o NFS, mas um aplicativo precisava de suporte NetBIOS. Andrew ento utilizou um mtodo muito avanado usado por administradores para
detectar problemas: escreveu um sniffer de pacotes que atendesse aos requerimentos para ter
uma nica funo: analisar e auxilia-lo a interpretar todo o trfego NetBIOS da rede.
Ele escreveu o primeiro cdigo que fez o servidor Unix aparecer como um servidor de arquivos
Windows para sua mquina DOS que foi publicado mais ou menos em meados de 1992 quando
tambm comeou a receber patches. Satisfeito com o funcionamento de seu trabalho, deixou
seu trabalho de lado por quase 2 anos. Um dia, ele resolveu testar a mquina Windows de
sua esposa com sua mquina Linux, e 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.
O SAMBA atualmente um servidor fundamental para a migrao de pequenos grupos de trabalho grandes domnios com clientes mixtos. Nenhum servidor de rede NetBEUI conhecido
proporciona tanta flexibilidade de acesso a clientes como o SAMBA para compartilhamento de
arquivos/impresso em rede. As funes de segurana que foram adicionadas ao SAMBA hoje
garantem um controle mais rigoroso que a prpria implementao usada no Windows NT, incluindo o servios de diretrios, mapeamento entre IDs de usurios Windows com Linux, PDC,
perfis mveis e uma coisa que inclusive apresenta problemas no Windows: compatibilidade
total entre as diferentes implementaes de verses do Windows.
Sua configurao pode receber ajustes finos pelo administrador nos soquetes TCP de transmisso, 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 confirmao, envie um relato detalhado do problema encontrado no programa.
18.1.4
301
Caractersticas
302
18.1.5
Ficha tcnica
Pacote samba
Outros utilitrios importantes para a operao do clientes samba.
smbclient - Ferramenta para navegao e gerenciamento de arquivos, diretrios e impressoras compartilhados por servidores Windows ou samba.
smbfs - Pacote que possui ferramentas para o mapeamento de arquivos e diretrios compartilhados por servidores Windows ou samba em um diretrio local.
winbind - Daemon que resolve nomes de usurios e grupo atravs de um servidor
NT/SAMBA e mapeia os UIDs/GIDs deste servidor como usurios locais.
18.1.6
Requerimentos de Hardware
Processador 386 ou superior, 15 MB de espao em disco (no levando em conta os logs gerados
e espao para arquivos de usurios, aplicativos, etc.), 8 MB de memria RAM.
18.1.7
O daemon nmbd salva seus logs em /var/log/daemon.log (dependendo da diretiva de configurao syslog do arquivo smb.conf) e em /var/log/samba/log.nmbd. Os detalhes de
acesso a compartilhamento so gravados no arquivo /var/log/samba/log.smbd (que pode
ser modificado de acordo com a diretiva log file no smb.conf, Log de acessos/servios on
page 310).
18.1.8
Instalao
Digite apt-get install samba smbclient smbfs para instalar o conjunto de aplicativos samba. O pacote samba o servidor samba e os pacotes smbclient e smbfs fazem parte
dos aplicativos cliente. Caso deseje apenas mapear compartilhamentos remotos na mquina
Linux, instale somente os 2 ltimos pacotes.
18.1.9
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 compartilhamento, 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
303
18.1.10
18.2
Este captulo documenta como configurar o seu servidor SAMBA permitindo o acesso a compartilhamento de arquivos e impresso no sistema.
18.2.1
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 associado com o nome da mquina e registrado em servidores de nomes confirme a configurao
da mquina (voc ver isto mais adiante).
304
O nome de mquina especificado nas diretivas netbios name e netbios aliases (veja Nomes e
grupos de trabalho on page 307) para detalhes.
18.2.2
Grupo de trabalho
18.2.3
Domnio
O funcionamento semelhante ao grupo de trabalho, com a diferena que a segurana controlada pela mquina central (PDC) usando diretivas de acesso e grupos. O PDC (Primary
305
Domain Controller) dever ter todas as contas de acesso que sero utilizadas pelo usurio para
acessar os recursos existentes em outras mquinas, script de logon que poder ser executado
em cada mquina para fazer ajustes, sincronismo, manuteno ou qualquer outra tarefa programada pelo administrador do sistema.
Estas caractersticas para 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
18.2.6
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.
306
A funo de navegao na rede feita utilizando o compartilhamento IPC$. Este compartilhamento possui acesso pblico somente leitura e utiliza o usurio guest para disponibilizao de seus. Como deve ter percebido, necessrio especificar esta ID de usurio atravs
do parmetro guest account (Descrio de parmetros usados em compartilhamento on
page 317), ou a navegao de recursos no sistema (ou na rede, dependendo da configurao
do SAMBA) no funcionar.
OBS: A funo de navegao (browsing) poder no funcionar corretamente caso a mquina
no consiga resolver nomes NetBIOS para endereos IP.
18.2.7
Toda a configurao relacionada com nomes, grupo de trabalho, tipo de servidor, log, compartilhamento 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 trabalho, 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 compartilhamento 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
307
master browse = no
master browse = false
18.2.8
Seo [global]
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 diretrios on page 316 para obter uma lista e descrio dos principais parmetros de compartilhamentos existentes. Uma lista completa pode ser obtida na pgina de manual do smb.conf.
Irei descrever alguns parmetros utilizados nesta seo, organizado de forma didtica e simplificada.
308
309
default service = nome Caso o servio que o usurio deseja se conectar no for encontrado no servidor, o SAMBA mapear o servio especificado nesta diretiva como alternativa. 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 contrrio (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 compartilhamento acessado para o servidor, caso muito tpico em sistemas Lan Manager e
Windows for Workgroups. Mesmo assim o samba tenta mapear para um UID
de usurio local do sistema usando os seguintes mtodos (retirado da pgina de
manual do samba):
1 Se o parmetro guest only usado no compartilhamento junto com o guest
ok, o acesso imediatamente permitido, sem 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 mapeamento de nomes para associar o nome remoto do nome local (veja Mapeamento de nomes de usurios on page 354)
4 O nome do servio tentado como nome de usurio.
5 O nome da mquina NetBios tentada como nome de usurio
6 Os usurios 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 equivalente a usar o nvel user. Entretanto, o nvel de segurana share recomendado
para servidores onde TODO o contedo deve ter acesso pblico (seja leitura ou
gravao) e o parmetro guest shares tambm funciona nativamente. As senhas criptografadas (encrypt passwords = 1) NO funcionaro no nvel share,
lembre-se deste detalhe.
310
user - Este o padro. O usurio precisa ter uma conta de usurio no Linux para
acessar seus compartilhamentos. A mesma conta de usurio/senha dever ser usada no Windows para acessar seus recursos ou realizado um mapeamento de nomes
de usurios (veja Mapeamento de nomes de usurios on page 354). Este o padro
do SAMBA. No nvel de acesso user o usurio precisa ser autenticado de qualquer
forma, inclusive se for usado o parmetro guest only ou user. Os seguintes
passos so usados para autorizar uma conexo usando o nvel user (retirado da documentao do SAMBA):
tentada a validao usando o nome/senha passados pelo cliente. Se tudo
estiver OK, a conexo permitida.
Caso j tenha se autenticado anteriormente para acessar o recurso e forneceu a
senha correta, o acesso permitido.
O nome NetBIOS da mquina do cliente e qualquer nome de usurio que foi
usado novamente tentado junto com a senha para tentar permitir o acesso ao
recurso compartilhado.
Caso o cliente tenha validado o nome/senha com o servidor e o cliente enviou
novamente o token de validao, este nome de usurio usado.
tentada a checagem com o parmetro user no compartilhamento (veja Descrio de parmetros usados em compartilhamento on page 317.
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 melhor controle dos logs gerados (veja Variveis de substituio on page 315). Ex.:
/var/log/samba/samba-log-%m. OBS: Se possvel coloque uma extenso no arquivo de log gerado pelo SAMBA (como .log). O motivo disto porque se estes logs
forem rotacionados pelo logrotate voc ter problemas de recompactao mltiplas
caso utilize um coringa samba-log-*, gerando arquivos como .gz.gz.gz.., lotando
a tabela de arquivos do diretrio e deixando sua mquina em um loop de compactao.
max log size = [tamanho ] Especifica o tamanho mximo em Kb do arquivo de log gerado
311
312
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.
Outros parmetros de configurao
include Inclui um outro arquivo de configurao na poro atual do arquivo de configurao. Voc pode utilizar variveis de substituio, exceto %u, %P e %S (veja Variveis de
substituio on page 315).
18.2.9
Seo [homes]
Esta seo tem a funo especial de disponibilizar o diretrio home do usurio. Quando
o usurio envia seu nome de login como compartilhamento feita uma busca no arquivo
smb.conf procurando por um nome de compartilhamento que 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 disponibilizado 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 especificado, 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
313
public = no
invalid users = root nobody @adm
follow symlinks = no
create mode = 0640
directory mode = 0750
A explicao de cada um dos parmetros podem ser encontradas em Descrio de parmetros
usados em compartilhamento on page 317. O guia est com os parmetros bem organizados
em sees especficas, apenas de uma olhada para entender com o captulo do SAMBA foi
organizado e no ter dificuldades de se localizar.
OBS1:Caso nenhum caminho de compartilhamento seja utilizado, o diretrio home do usurio
ser compartilhado.
OBS2:No utilize o parmetro public yes na seo guest, caso contrrio todos os diretrios de
usurios sero lidos por todos. Veja Consideraes de segurana com o uso do parmetro
public = yes on page 353 para maiores detalhes.
18.2.10
Seo [printers]
Esta seo tem a funo de disponibilizar as impressoras existentes no sistema (lp, lp1, lp2,
etc) existentes no /etc/printcap como compartilhamento de sistemas Windows. O mtodo
que os nomes de impressoras so pesquisados idntico a forma feita para a seo [homes]:
Primeiro o nome do compartilhamento pesquisado como um nome de servio, depois se ele
um nome de usurio (tentando mapear o servio disponibilizado em [homes]), depois ser
verificado a seo [printers].
Ao invs de usar este recurso, se preferir voc poder compartilhar as impressoras individualmente. 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 usando 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 configurao on this page).
18.2.11
314
18.2.12
Para selecionar qual sistema NetBIOS ser o local master browse ou domain master browse,
usado um mtodo bastante interessante: o de eleies.
Quando uma nova mquina entra na rede NetBIOS, ela solicita quem o Local Master Browser,
caso nenhuma responda, ela fora uma eleio na rede atravs de uma requisio Broadcasting especial. Vence a eleio quem tiver o ***maior nmero***, chamado de OS Level (nvel
de sistema operacional). Caso duas mquinas empatem, o desempate feito usando outros
critrios.
Se voc for a nica mquina de um workgroup, automaticamente voc ser o Local Master
Browser. De meia em meia hora uma nova eleio feita, forando mais trfego broadcasting
na rede. Durante este novo processo de eleio, a lista de computadores atualizada; as novas
mquinas so adicionadas e as desligadas saem da lista aps 36 minutos. Este o motivo
porque as mquinas Windows continuam aparecendo no ambiente de rede por algum tempo
mesmo depois que desligadas ou porque elas no aparecem de imediato.
O OS Level um nmero que caracterstico de cada sistema operacional ficando entre 0 (mais
baixo) e 255. Os nveis de acessos dos sistemas operacionais so os seguintes:
Windows
Windows
Windows
Windows
for Workgroups
95
98
98 Second Edition
1
1
2
2
Windows
Windows
Windows
Windows
16
16
17
16
315
32
33
32
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.
18.2.13
Variveis de substituio
Esta seo foi baseada nos dados da pgina de manual do samba, com adies que no estavam
presentes na verso original e exemplos. Existem variveis especiais que podem ser usadas no
arquivo de 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
Cada uma das variveis so descritas em detalhes abaixo:
%S O nome do servio atual, se existir. Seu uso interessante, principalmente no uso de
diretrios homes.
%P O diretrio raz do servio atual, se existir.
%u O nome de usurio do servio atual, se aplicvel. Esta varivel bastante til para programao de scripts e tambm para criar arquivos de log personalizados, etc.
316
18.3
317
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 compartilhados (veja Seo [global] on page 307).
18.3.1
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 operaes no SAMBA, como exibir os recursos disponveis na mquina para a rede. Por motivos claros, recomendvel que este usurio no tenha acesso login ao sistema. Caso
no tenha a inteno de ocultar o SAMBA na lista de mquinas da rede (fazendo apenas
acesso direto aos recursos), 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 compartilhamento. 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
318
319
18.4
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 gerenciamento no to complicado. Acima deste nmero, recomendada a utilizao da configurao 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
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
Agora, verifique se existem erros na configurao com o comando testparm (Buscando problemas na configurao on page 313) e reinicie o SAMBA (Iniciando o servidor/reiniciando/recarregando a configurao on page 302). O nome do grupo de trabalho
que a mquina pertencer focalinux (workgroup = focalinux). O nvel de acesso usado neste exemplo de usurio (security = user), para mais detalhes sobre este mtodo,
veja Nveis de autenticao on page 309. O parmetro local master foi definido para yes
para o SAMBA tentar ser o navegador local do grupo de trabalho (veja Local Master Browser
on page 326).
Para testar se o servidor est funcionando, digite o seguinte comando:
321
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.
18.5
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).
18.5.1
Arquivo /etc/samba/lmhosts
Este arquivo um banco de dados que mapeia o endereo IP com o nome NetBIOS de uma
mquina, semelhante ao formato do /etc/hosts. Este arquivo til quando temos servidores que so acessados com freqncia, quando servidores de rede esto em segmentos separados e no temos um servidor WINS entre os dois pontos para resoluo de nomes, para
definir mquinas WINS que sero acessados pela internet, etc. Para ter certeza da localizao do arquivo lmhosts em sua mquina, digite smbclient -d 3 -L localhost e veja
o diretrio de pesquisa deste arquivo. Veja um exemplo de arquivo lmhosts em Exemplo de
lmhosts do UNIX on the next page.
O uso do arquivo lmhosts evita o excesso de broadcasting na rede, pois a ordem padro
usada para a resoluo de nomes do samba, procura primeiro resolver o nome procurando em
arquivos lmhosts, depois usando dns, wins e broadcast. Dependendo do projeto de sua rede e
como as mquinas resolvem os nomes, ele pode ser uma camada a mais de segurana contra
um simples hijacking de servidor atravs de NetBEUI ou WINS (isso evitado com o uso de
domnios, veja 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.
322
323
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, componentes do grupo de trabalho ou domnio na rede. Uma outra aplicao importante de um
servidor WINS permitir a resoluo de nomes em pontos de redes que requerem roteamento,
a simplicidade de um protocolo no rotevel como o NetBIOS 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).
Configurando o servidor WINS
Para ativar o servidor WINS no samba, inclua as seguinte linha na seo [global] do seu
arquivo /etc/samba/smb.conf:
[global]
wins support = yes
wins proxy = no
dns proxy = no
max wins ttl = 518400
O parmetro wins proxy pode ser necessrio para alguns clientes antigos que tenham problemas no envio de suas requisies WINS. O dns proxy permite que o servidor WINS faa a
pesquisa no DNS para localizao de nomes de mquinas caso no exista no cache. Ambas as
opes wins support, wins proxy e dns proxy tem como valor padro no. Pronto, seu
servidor samba agora suporta WINS. Fcil, prtico e rpido :-)
Se estiver 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 masquerade. O motivo disto porque o masquerade do Linux atua somente nos cabealhos, mas o
IP da estao enviada e processada pelo PDC para retornar uma resposta. Da mesma forma,
este IP registrado no servidor WINS para uso das estaes de trabalho. Isto s vai ser resolvido quando for escrito um mdulo de conntrack para conexes SAMBA (at o lanamento
do kernel 2.4.22, isso ainda no ocorreu).
324
18.6
Servidor de data/hora
O samba pode atuar como um servidor de data/hora ajustando o horrio de suas estaes de
trabalho com o servidor da rede.
As estaes clientes podero executar o comando net para sincronizar seu relgio durante a
inicializao do Windows, ou durante o logon da rede atravs do script de logon, caso tenha
configurado o servidor samba para logon em domnios NT.
18.6.1
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
325
Para sincronizar a data/hora das estaes de trabalho usando o servidor samba, veja Sincronizando a data/hora no Cliente on this page. Caso o seu servidor SAMBA tambm seja o
servidor de autenticao PDC da rede, a melhor forma de se fazer isto colocar o comando
net time \\servidor_SAMBA /set /yes em um script que ser executado pela estao.
OBS recomendvel instalar um cliente ntp para manter o relgio do servidor sempre atualizado, conseqentemente mantendo a data/hora das estaes tambm em sincronismo . .
18.6.2
18.7
Configurao em Domnio
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.
18.7.1
Um domnio de rede consiste em uma mquina central chamada de PDC, que mantm o controle de todas as contas de usurios/grupos e permisses para acesso a rede NetBEUI. O acesso
desta forma centralizado, como vantagem disto voc pode usar o nvel de acesso por usurios
nas mquinas, 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.
326
Voc poder usar perfis mveis, copiando todas as personalizaes do seu desktop para qualquer mquina na rede que voc faa o logon. Para o administrador, ele poder definir polticas com o Poledit e outros programas que sero salvas junto com o perfil do usurio, valendo para qualquer mquina que ele se autentique na rede (veja Criando Scripts de logon on
page 330).
Se voc deseja iniciar logo a configurao do seu domnio, siga at Configurando um servidor
PDC no SAMBA on the facing page.
18.7.2
a mquina que ganhou a eleio no segmento local de rede (veja Nveis de sistema para
eleio de rede on page 314). Logo que declarada o local master browser, ela comea a receber via broadcasting a lista de recursos compartilhados por cada mquina para montar a lista
principal que ser retornada para outras mquinas do grupo de trabalho ou outras subredes
que solicite os recursos compartilhados por aquele grupo.
Uma nova eleio feita a cada 36 minutos ou quando a mquina escolhida desligada.
18.7.3
Quando o local master browse eleito no segmento de rede, uma consulta feita ao servidor
WINS para saber quem o Domain Master Browse da rede para enviar a lista de compartilhamentos. A mquina escolhida como Local Master Browse envia pacotes para a porta UDP
138 do Domain Master e este responde pedindo a lista de todos os nomes de mquinas que o
local master conhece, e tambm o registra como local master para aquele segmento de rede.
Caso tenha 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 caractersticas do SAMBA ;-)
18.7.4
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
;nveis de acesso e funes do servidor
security = user
domain master = yes
prefered master = yes
local master = yes
; senhas criptografadas
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd.db
Onde os parmetros 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 utilizado 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
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.
18.7.5
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.
Criando contas de mquinas manualmente
Para criar uma conta de domnio para a mquina master, siga estes 2 passos:
1 Crie uma conta de mquina no arquivo /etc/passwd:
useradd -g domainmac -c "Maquina de Dominio" -s /bin/false -d /dev/null
O comando acima cria uma conta para a mquina master$ e torna ela parte do grupo
domainmac. necessrio 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 criao 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 usando a conta de administrador de domnio criada no SAMBA (veja Criando uma conta
de administrador de domnio on the facing page)! como a mquina ainda no se autenticou pela primeira vez, qualquer mquina que tenha o mesmo nome e entre no domnio,
poder alocar o nome recm criado. A nica forma de resolver este problema, apagando
a conta de mquina e criando-a novamente no domnio. Siga os passos de acordo com
o sistema operacional em Configurando clientes em Domnio on page 361 para colocar
seus clientes em domnio.
329
add user script = useradd -g domainmac -c "Maquina de Dominio" -s /bin/false Assim, a conta de mquina ser automaticamente criada quando o administrador fizer sua configurao no domnio (veja Criando uma conta de administrador de domnio on this page).
No SAMBA 3.0, a opo add machine script dever ser usada no lugar de add user
script para adicionar uma mquina no domnio.
18.7.6
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 especificar que contas de usurios do arquivo /etc/samba/smbpasswd que tero poderes administrativos, utilize a opo domain admin group ou admin users na seo [global]
do arquivo /etc/samba/smb.conf.
O parmetro admin users permite que todas as operaes realizadas pelo usurio sejam
feitas com poderes de usurio root. Isto necessrio porque o arquivo smbpasswd (usado
para ajustar as contas de mquinas) normalmente tem permisses de leitura/gravao somente para root. O domain admin group permite que usurios 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:
330
[global]
...
admin users = gleydson
ou
domain admin group = @admins gleydson
Isto permite que o usurio gleydson possa adicionar/remover mquinas do domnio NT
(veja Configurando clientes em Domnio on page 361) entre outras tarefas. Por segurana,
recomendo que coloque esta conta no invalid users de cada compartilhamento para que
seja utilizada somente para fins de gerenciamento de mquinas no domnio, a menos que deseje ter acesso total aos compartilhamentos do servidor (nesse caso, tenha conscincia do nvel
de acesso que esta conta possui e dos problemas que pode causar caso caia em mos erradas).
OBS1: Tenha SEMPRE bastante cuidado com quem dar poderes de administrador de
domnio, pois toda sua rede poder ficar vulnervel caso os cuidados de administrao no
estejam em boas mos.
OBS2: Em verses antigas do SAMBA, somente o usurio root tem poderes para adicionar
mquinas no domnio usando o parmetro domain admins group, devendo ser tambm adicionado no arquivo smbpasswd para que possa fazer isto e obviamente no dever estar listado em invalid users. Mesmo assim, existem outras formas explicadas no guia de se
contornar o risco causado pela liberao de acesso do usurio root.
18.7.7
Uma dos recursos mais teis em um domnio a possibilidade de se executar comandos nas
mquinas cliente quando fazem o logon no domnio. Desta forma, possvel instalar programas, executar anti-vrus, mapear compartilhamentos automaticamente no clientes, etc. A
programao de scripts de logon feita usando a linguagem em lote do DOS, com possibilidades de usar variveis de ambiente, cpia de arquivos entre servidores, etc. O guia no ir
abordar a programao em linguagem de lote, mas isto simples de se encontrar na internet e
mesmo a documentao que acompanha o prprio Windows til.
Para habilitar o recurso de scripts de logon na mquina, adicione os seguintes parmetros no
arquivo smb.conf:
[global]
domain logons = yes
logon script = logon.cmd
[netlogon]
path = /pub/samba/netlogon
read only = yes
write list = ntadmin
Segue a descrio de cada parmetro com detalhes importantes para a configurao e funcionamento do recurso de logon:
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 somente 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 compartilhamento [netlogon] (/pub/samba/netlogon no exemplo). Os scripts de logon podem ser tanto em formato .bat ou .cmd. Se for programar um script universal,
recomendvel o uso do formato .bat por ser compatvel tanto com Win9X e WinNT.
Um detalhe que deve ser lembrado durante a programao do script de logon que ele DEVE
seguir o formato DOS, ou seja, ter os caracteres CR+LF como 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
332
18.7.8
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]
333
security = user
encrypt passwords = yes
domain logons = yes
logon drive = H:
logon path = \\%N\profilesNT\%u
logon home = \\%N\profiles\%u
preserve case = yes
short preserve case = yes
case sensitive = no
[profiles]
path = /pub/profiles
read only = no
create mask = 0600
directory mask = 0700
[profilesNT]
path = /pub/profilesNT
read only = no
create mask = 0600
directory mask = 0700
Segue a descrio dos parmetros de detalhes para seu funcionamento:
O parmetro domain logons = yes especifica que o servidor ser usado para fazer
logons no domnio. Quando este parmetro definido para yes, a mquina automaticamente tentar ser o PDC.
logon path e logon home definem (respectivamente) o diretrio de logon do /pub
/profilesNT/usuario (NT) e /pub/profiles/usuario (Win95) respectivamente.
Durante o logon, a varivel %N ser substituda pelo nome do servidor (ou servidor de
diretrios, se for o caso) e a varivel %u pelo nome do usurio. O sistema operacional
de origem detectado no momento da conexo. Isto significa que o usurio poder ter
2 profiles diferentes, de acordo com o tipo de sistema operacional cliente que estiver
conectando.
O diretrio home do usurio ser mapeado para a unidade H: (logon drive = h:).
O parmetro logon drive somente usado pelo NT/2000/XP.
As opes preserve case, short preserve case e case sensitive permite
que os nomes dos arquivos/diretrios tenham as letras maisculas/minsculas mantidas, isto requerido para os profiles.
O compartilhamento dos 2 profiles pode ser feito sem tantos traumas, mas isto no ser explicado profundamente no guia pois o procedimento segue o mesmo padro do NT sendo
bastante documentado na internet.
Note que possvel definir um servidor separado para servir os profiles para um domnio
modificando a varivel %N para apontar direto para a mquina. Na mquina que armazenar
os profiles, basta definir o nvel de segurana por servidor (security = server) e o endereo IP do servidor de senhas (password server = IP).
334
18.7.9
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. \
18.8
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 tambm o status de contas de usurios/mquinas do domnio. Siga estes passos para ativar o uso
de senhas criptografadas no SAMBA:
1 Edite o arquivo /etc/samba/smb.conf e altere as seguintes linhas na seo [global]
para adicionar o suporte a senhas criptografadas:
[global]
encrypt passwords = true
smb passwd file =/etc/samba/smbpasswd
A linha encrypt passwords = true diz para usar senhas criptografadas e
que o arquivo /etc/samba/smbpasswd contm as senhas (smb passwd file
=/etc/samba/smbpasswd). Caso sua mquina seja apenas um cliente de rede (e no
4
5
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.
Execute o comando mksmbpasswd </etc/passwd >/etc/samba/smbpasswd. Ele
pega toda a base de usurios do /etc/passwd e gera um arquivo /etc/samba
/smbpasswd contendo as contas destes usurios. Por padro, todas as contas so DESATIVADAS por segurana quando este novo arquivo criado. O novo arquivo ter o
seguinte formato:
gleydson:1020:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXX
geovani:1004:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXX
Os campos so separados por : e cada campo possui o seguinte 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.
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.
Reinicie o processo do SAMBA (veja Iniciando o servidor/reiniciando/recarregando a
configurao on page 302).
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.
18.8.1
336
18.8.2
18.8.3
18.8.4
337
Como administrador, pode ser necessrio que precise desativar temporariamente uma conta
de usurio por alguma situao qualquer (m utilizao de recursos, dvida se a conta est
sendo usada, para que ele ligue reclamando de autenticao para ter aquela desejada conversa
(hehe), etc.). Remover uma conta e novamente adiciona-la ento no uma situao muito
prtica. Utilize ento o seguinte comando para desativar uma conta de usurio:
smbpasswd -d usuario
Quando a conta de usurio desativada, uma flag D adicionada s opes do usurio
(junto com as opes UX). Veja Habilitando uma conta no smbpasswd on the current page
para reativar a conta.
18.8.5
Uma conta desativada com o uso do comando smbpasswd -d pode ser novamente ativada
usando:
smbpasswd -e usuario
18.8.6
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 esquecem a senha ;-)
Para alterar a senha de um usurio remoto, utilize:
smbpasswd -r servidor -U usuario
Note que apenas foi adicionada a opo -r servidor comparado com a opo anterior. A
diferena que a senha antiga do usurio sempre ser solicitada para troca (pois o root das 2
mquinas pode no ser o mesmo).
18.8.7
338
18.9
Esta forma de autenticao enviada por implementaes NetBIOS antigas, como a encontrada
no Lan Manager, Windows for Workgroups e Windows 95 OSR1. As verses mais novas destas implementaes enviam a senha em formato criptografado, sendo necessrio tambm usar o formato criptografado no SAMBA para que possa se autenticar (veja Ativando o
suporte a senhas criptografadas on page 334).
Em Senhas criptografadas ou em texto puro? on page 353 feita uma comparao entre
o uso de autenticao usando senhas em texto plano e senhas criptografadas. Em geral, o
administrador prefere a utilizao da autenticao usando texto plano quando deseja usar o
/etc/passwd para autenticao e est usando grupos de trabalho necessrio usar senhas
criptografadas para autenticao).
Para configurar o SAMBA para utilizar senhas em texto, modifique o parmetro encrypt
passwords para no:
[global]
encrypt passwords = no
Reinicie o SAMBA (Iniciando o servidor/reiniciando/recarregando a configurao on
page 302) e a partir de agora, ele usar o /etc/passwd para autenticao.
OBS: Tenha certeza de no estar participando de um domnio ou que sua mquina seja o PDC
antes de fazer esta modificao.
18.9.1
Esta seo descreve como configurar clientes para acessar o servidor SAMBA usando autenticao em texto plano. Atualmente o guia cobre os seguintes clientes:
Lan Manager on the next page
Windows for Workgroups on the facing page
Windows 95 / Windows 95A on the next page
Windows 95B on the facing page
Windows 98/98SE on the next page
339
Lan Manager
Cliente NetBIOS para DOS. Ele trabalha somente com senhas em texto plano.
Windows 95B
Copie o seguinte contedo para um arquivo chamado win95-textoplano.reg:
REGEDIT4
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]
"EnablePlainTextPassword"=dword:00000001
Aps
isto,
execute
no
Windows 95
o
seguinte
comando:
win95-textoplano.reg e reinicie o computador para fazer efeito.
regedit
Para voltar a utilizar criptografia, apenas altere o valor dword para 00000000 no arquivo e
executa novamente o regedit.
Windows 98/98SE
O procedimento idntico ao Windows 95B on this page.
340
Windows ME
O procedimento idntico ao Windows 95B on the previous page.
Windows NT Server/WorkStation
Copie o seguinte contedo para um arquivo chamado winNT-textoplano.reg:
REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Rdr\Parameters]
"EnablePlainTextPassword"=dword:00000001
Aps
isto,
execute
no
Windows NT
o
seguinte
comando:
winNT-textoplano.reg e reinicie o computador para fazer efeito.
regedit
Para voltar a utilizar criptografia, apenas altere o valor dword para 00000000 no arquivo e
execute novamente o regedit.
Windows 2000
Copie o seguinte contedo para um arquivo chamado win2000-textoplano.reg:
REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkStation\Parame
"EnablePlainTextPassword"=dword:00000001
Aps isto,
execute no Windows 2000 o seguinte comando:
win2000-textoplano.reg e reinicie o computador para fazer efeito.
regedit
Para voltar a utilizar criptografia, apenas altere o valor dword para 00000000 no arquivo e
execute novamente o regedit.
Linux
Inclua/modifique a linha encrypt passwords = no no arquivo smb.conf e reinicie o
SAMBA. Para voltar a utilizar criptografia, veja Ativando o suporte a senhas criptografadas
on page 334.
18.10
341
O mapeamento de usurios do servidor remoto com a mquina local usado quando voc
deseja controlar o acesso aos arquivos/diretrios a nvel de usurio. No Windows isto permite que cada arquivo/diretrio tenha o acesso leitura/gravao somente para os usurios
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.
18.10.1
Para o Windows utilizar os usurios remotos do servidor para fazer seu controle de acesso por
nvel de usurio, siga os seguintes passos:
Windows 9X Entre no Painel de Controle/Propriedades de Rede e clique na tab Controle de Acesso.
Marque a opo Controle de acesso a nvel de usurio e coloque o nome da mquina PDC na
caixa de dilogo de onde os usurios/grupos sero obtidos. Voc tambm pode colocar
o nome do grupo de trabalho, neste caso a mquina far uma busca pelo PDC ou outra
mquina de onde pode obter os nomes de usurios/grupos. OBS: Para fazer isto, voc
dever estar autenticado no domnio.
18.10.2
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 esto sendo utilizados.
342
343
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), assim como entrar novamente no domnio, caso contrrio o mapeamento deixar de funcionar.
OBS: Atualmente, o winbind no oferece suporte a restries por data/hora de logon para
estaes de trabalho. Isto dever ser implementado em uma futura verso
18.11
Este captulo documenta como configurar o seu servidor samba para permitir o acesso a compartilhamento de arquivos e impresso no sistema.
18.11.1
Ser necessrio ter o pacote samba instalado e adicionar as seguintes linhas no seu arquivo
/etc/samba/smb.conf:
[hp-printer]
path = /tmp
printer name=HP DeskJet 690C
printable = yes
print command = lpr -r -h -P %p %s
valid users = winuser winuser2
create mode = 0700
O compartilhamento acima tornar disponvel a impressora local lp as mquinas Windows
com o nome HP DeskJet 690C. Uma impressora alternativa pode ser especificada modificando a opo -P da linha de comando do lpr. Note que somente os usurios winuser e
winuser2 podero usar esta impressora. Os arquivos de spool (para gerenciar a fila de impresso) sero gravador em /tmp (path = /tmp) e o compartilhamento [hp-printer] ser
mostrado como uma impressora (printable = yes).
Agora ser necessrio instalar o driver desta impressora no Windows (HP 690C) e escolher
impressora instalada via rede e seguir os demais passos de configurao.
18.12
18.12.1
344
18.12.2
Esta restrio pode ser feita pelos parmetros allow hosts e deny hosts tanto em servios individuais ou em todo o servidor. Os parmetros hosts allow e hosts deny so equivalentes a estes
acima. O allow hosts permite o acesso a mquina especificadas como argumento. So permitidos os seguintes mtodos para permitir o acesso a uma mquina/rede:
192.168.1.1 - IP da mquina
servidor - Nome da mquina
192.168.1.0/255.255.255.0 - IP com mscara de rede
192.168.1.0/24 - IP com mscara de rede octal
192.168.1. - Poro de rede sem o host (como no hosts.allow e hosts.deny.
@nome - Pesquisa por mquinas no grupo NIS.
permitido usar mais de um endereo IP separando-os por vrgulas ou espaos. A palavra
chave EXCEPT pode ser usada para fazer excesso de um ou mais endereos IPs, por exemplo:
hosts allow = 192.168.1. EXCEPT 192.168.1.20
Que permite o acesso a toda as mquinas da faixa de rede 192.168.1.0/24 exceto para a
192.168.1.20.
O deny hosts possui a mesma sintaxe do allow hosts mas bloqueia o acesso das mquinas especificadas 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).
345
18.12.3
to
to
to
to
homes
printers
tmp
cdrom
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 exemplo, eth*).
192.168.1.1, 192.168.1.2, etc - Um endereo IP de interface local.
192.168.1.2/24, 192.168.1.2/255.255.255.0 - Um par de endereo/mscara
de rede.
Mais de uma interface pode ser usada separando-as com vrgula ou espaos. A escolha do
uso de nome da interface ou do IP feita de acordo com a 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.
346
Exemplo:
bind interfaces only = 1
interfaces = loopback eth0
Permite o recebimento de requisies de acesso ao SAMBA somente da interface loopback
(desnecessrio, pois como notou durante a leitura, sempre permitida a conexo) e eth0.
18.12.4
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.
valid users = gleydson, michelle, geo
A segurana deste mtodo de acesso depende muito da forma de autenticao dos nomes antes
de passar o controle para o SAMBA, pois uma autenticao fraca pe em risco a segurana da
sua mquina.
18.12.5
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 complicado 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.
18.12.6
O parmetro null passwords usado na seo [global] permitindo que contas de usurios
sem senha tenham acesso permitido ao servidor. ISTO TOTALMENTE INSEGURO e deve
ser sempre evitado. Caso voc tenha feito uma bela restrio em sua mquina e deseja que o
seu shell script de cpia de arquivos funcione usando este mtodo, voc est jogando toda a
segurana do seu sistema por ralo abaixo.
No existe motivo para usar senhas em branco em um controle de acesso por usurio, a no
ser que precise testar algo realmente temporrio e que depurando algo no SAMBA.
18.12.7
348
..
..
[download]
path = /downloads
comment = Espao pblico para abrigar downloads de Usurios
guest ok = yes (aqui poder ser tambm "public = yes").
writable = yes
follow symlinks = false
O parmetro guest account tambm poder ser especificado no compartilhamento, isto
til quando no quiser que o usurio que acesse o compartilhamento no seja o mesmo usado
na diretiva [global].
Caso seu servidor somente disponibiliza compartilhamentos para acesso pblico, mais recomendado utilizar o nvel security = share pra diminuir a carga mquina, pois o usurio
guest ser o primeiro a ser checado pelas regras de acesso (ao contrrio do nvel user, onde o
acesso guest o ltimo checado).
OBS: Lembre-se que o compartilhamento funciona de modo recursivo, ou seja, todos os arquivos e subdiretrios dentro do diretrio que compartilhou sero disponibilizados, portanto
tenha certeza da importncia dos dados que existem no diretrio, verifique se existem links
simblicos que apontam para ele, etc. Recomendo dar uma olhada rpida em Consideraes
de segurana com o uso do parmetro public = yes on page 353.
18.12.8
Esta proteo til quando no desejamos que pessoas alterem o contedo de um compartilhamento. Isto pode ser feito de duas formas: negando o acesso de gravao para todo o compartilhamento ou permitindo leitura somente para algumas pessoas. O parmetro usado para
fazer a restrio de acesso somente leitura o read only = yes ou seu antnimo writable
= no. Abaixo seguem os dois exemplos comentados:
[teste]
comment = Acesso a leitura para todos
path = /tmp
read only = yes
public = yes
No exemplo acima, o diretrio /tmp (path = /tmp) foi compartilhado com o nome teste
([teste]), de forma pblica (acesso sem senha - public = yes), e todos podem apenas ler seu
contedo read only = yes).
[teste]
comment = Acesso a gravao para todos com excesses
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).
18.12.9
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).
18.12.10
350
possvel alterar o nvel de acesso para determinados usurios/grupos em um compartilhamento, para entender melhor: Caso tenha criado um compartilhamento somente leitura e
queira permitir que apenas alguns usurios ou grupos tenham acesso a gravao, isto possvel e ser explicado nesta seo. Este comportamento controlado por duas opes: read
list e write list. Veja alguns exemplos:
[temporario]
comment = Diretrio temporrio
path = /tmp
writable = yes
read list = gleydson, root
browseable = no
available = yes
Neste exemplo, disponibilizamos o diretrio /tmp (path = /tmp) como compartilhamento de
nome temporario ([temporario]), seu acesso padro leitura/gravao para todos (writable
= yes), exceto para os usurios root e gleydson (read list = root, gleydson). Em adio, tornamos o compartilhamento invisvel (veja Criando um compartilhamento invisvel on the facing page) no Ambiente de Rede do Windows (browseable = no) e ele ser lido e disponibilizado pelo SAMBA (available = yes).
[temporario]
comment = Diretrio temporrio
path = /tmp
writable = no
write list = gleydson, @operadores
browseable = yes
Neste exemplo, disponibilizamos o diretrio /tmp (path = /tmp) como compartilhamento de
nome temporario ([temporario]), seu acesso padro apenas leitura para todos (writable =
no), exceto para o usurio gleydson e usurios do grupo Unix operadores, que tem acesso
a leitura/gravao (write list = gleydson, @operadores). Tornamos o compartilhamento visvel no
Ambiente de Rede do Windows (browseable = yes - que o padro).
18.12.11
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 compartilhamentos. Os efeitos desta restrio sero que somente as redes autorizadas possam obter a
lista de mquinas, se autenticar no domnio e realizar tarefas administrativas gerais:
351
[IPC$]
read only = yes
allow from 192.168.1.0/24
[ADMIN$]
read only = yes
allow from 192.168.1.0/24
O exemplo acima permite que os servios IPC$ e ADMIN$ sejam acessados de qualquer
mquina na faixa de rede 192.168.1.0/24. Para forar a autenticao para acesso a estes
servios:
[IPC$]
invalid users = nobody
valid users = gleydson michelle
read only = yes
allow from 192.168.1.0/24
[ADMIN$]
invalid users = nobody
valid users = gleydson michelle
read only = yes
allow from 192.168.1.0/24
Os exemplos acima so similares ao de antes, mas o acesso a listagem dos compartilhamentos
restringida (invalid users = nobody), pois o usurio nobody (usado para mostrar o compartilhamento) tem o acesso negado. Somente os usurios gleydson e michelle (valid users =
gleydson michelle) podem listar seu contedo.
OBS: Mesmo que estejam restritos, os servios IPC$ e ADMIN$ sempre podero ser acessados
de 127.0.0.1, ou teramos problemas com o funcionamento do SAMBA. Assim no necessrio
colocar 127.0.0.1 na lista de IPs autorizados.
18.12.12
352
Neste exemplo, o diretrio /tmp (path = /tmp) foi compartilhado atravs de teste ([teste]) com
acesso somente leitura (read only = yes) e ele no ser mostrado na listagem de compartilhamentos do ambiente de rede do Windows (browseable = no).
Note que o compartilhamento continua disponvel, porm ele poder ser acessado da estao
Windows, especificando a \\maquina\compartilhamento. Para acessar o compartilhamento
do exemplo acima:
# Clique em Iniciar/Executar e digite:
\\nome_do_servidor_samba\teste
Ao contrrio das mquinas Windows onde necessrio adicionar um $ do nome de compartilhamento para criar um compartilhamento oculto (como teste$) o SAMBA cria um compartilhamento realmente oculto, no aparecendo mesmo na listagem do smbclient.
18.12.13
Este recurso oferece uma infinidade de solues que podem resolver desde problemas de praticidade at segurana usando as opes preexec e postexec. Por exemplo, imagine que esteja compartilhando 4 unidades de CD-Rom de um servidor na rede, e deseje que estes CDs
estejam sempre disponveis mesmo que algum operador engraadinho tenha ejetado as gavetas de propsito, podemos fazer a seguinte 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 CDROM no sistema. Caso precise executar comandos como usurio root, utilize a variante root
preexec e root postexec. Apenas tenha conscincia que os programas sendo executados
so seguros o bastante para no comprometer o seu sistema.
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 independentes por mquina, voc possa ver o que a mquina tentou acessar (e foi negado) e o que ela
conseguiu acesso.
Como bom administrador, voc poder criar scripts que faam uma checagem de segurana
no compartilhamento e encerre automaticamente a conexo caso seja necessrio, montar um
honney pot para trojans, etc.
Como deve estar notando, as possibilidades do SAMBA se extendem alm do simples compartilhamento de arquivos, se integrando com o potencial dos recursos do sistema UNIX.
18.12.14
Este parmetro permite que voc acesso um compartilhamento sem fornecer uma senha, ou
seja, que o usurio no esteja autenticado. NO utilize o parmetro public = yes (ou um de
seus sinnimos) no compartilhamento [homes], pois abrir brechas para que possa acessar o
diretrio home de qualquer usurio e com acesso a gravao (que o padro adotado pelos
administradores para permitir o acesso ao seu diretrio home remoto).
Recomendo utilizar o parmetro public = yes somente em compartilhamentos onde realmente necessrio, como o [netlogon] ou outras reas de acesso pblico onde as permisses do
sistema de arquivos local estejam devidamente restritas. Outra medida no utilizar a opo
follow symlinks, que poder lhe causar problemas com usurios mal intencionados que
tenham acesso shell.
OBS: Tenha em mente todas as consideraes de segurana abordadas neste captulo, bem
como as permisses de acesso ao sistema Unix e como elas funcionam. A disponibilidade de
arquivos em uma rede simples, simples tambm pode ser o acesso indevido a eles caso no
saiba o que est fazendo.
18.12.15
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 modificando 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.
354
18.12.16
Este recurso faz a mapeamento (traduo) de nomes de usurios usados no momento do acesso
para contas de acesso locais, bastante til quando o nome de usurio enviado pela mquina
no confere com NENHUMA conta local do sistema (um exemplo quando o login do usurio
no Windows diferente de seu Login no Linux). Outro vantagem de seu uso permitir que
uma categoria de usurios utilizem um mesmo nvel de acesso no sistema.
Seu formato o seguinte: username map = arquivo.
As seguintes regras so usadas para construir o arquivo de mapeamento de nomes:
Um arquivo de mltiplas linhas onde o sinal de = separa os dois parmetros principais. O arquivo processado linha por linha da forma tradicional, a diferena o que
o processamento do arquivo continua mesmo que uma condio 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 compartilhamento. Somente uma conta Unix poder ser utilizada.
O parmetro da direita do sinal de = pode conter um ou mais nomes de usurios separados por espaos que sero mapeados para a conta Unix local. O parmetro @grupo
permite que usurios pertencentes ao grupo Unix local sejam mapeados para a conta de
usurio do lado esquerdo. Outro caracter especial o * e indica que qualquer usurio
ser mapeado.
Voc pode utilizar comentrios na mesma forma que no arquivo de configurao smb.conf.
Alguns exemplos:
# Mapeia o usurio "gleydson mazioli" com o usurio local gleydson
gleydson = gleydson mazioli
# Mapeia o usurio root e adm para o usurio nobody
nobody = root adm
# Mapeia qualquer nome de usurio que pertena ao grupo smb-users para o usur
# samba.
samba = @smb-users
355
18.13
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 compartilhamentos). Exemplo:
[publico]
path = /pub
comment = Diretrio de acesso pblico
read only = yes
public = yes
write cache size = 384000
Compartilha o diretrio /pub (path = /pub) como compartilhamento de nome publico ([publico]), seu acesso ser feito como somente leitura (read only = yes) e o tamanho do cache de
leitura/gravao reservado de 384Kb (write cache size = 384000).
Deixar a opo para seguir links simblicos ativada (follow symlinks) garante mais performance de acesso a arquivos no compartilhamento. A desativao da opo wide links
em conjunto com o uso de cache nas chamadas getwd (getwd cache) permite aumentar a
segurana e tem um impacto perceptvel na performance dos dados.
A desativao da opo global nt smb support tambm melhora a performance de acesso dos
compartilhamentos. Esta uma opo til para detectar problemas de negociao de protocolo
e por padro, ela ativada.
Caso utiliza um valor de depurao de log muito alto (debug level), o sistema 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.
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 impacto direto na performance do servidor, principalmente com relao a atualizao de status
dos arquivos no sistema de arquivos (hora de acesso, data, etc).
O cache de leitura adiante de abertura de arquivos em modo somente leitura aumenta a performance com o uso do oplocks nvel 2. Para isto, ajuste a opo level2 oplocks para yes.
A recomendao deste tipo de oplock o mesmo do nvel 1.
Como o SAMBA faz o transporte NetBEUI via TCP/IP, ajustes no socket fazem diferena nos
dados que trafegam na rede. Como isso dependente de rede voc precisar usar tcnicas
de leitura/gravao para determinar quais so as melhores que se encaixam em seu caso. A
opo socket options usada para fazer tais ajustes, por exemplo:
socket options = SO_SNDBUF=2048 IPTOS_THROUGHPUT=1
Em especial, a opo TCP_NODELAY apresenta uma perceptvel melhoria de performance no
acesso a arquivos locais.
OBS:: No use espaos entre o sinal de = quando especificar as opes do parmetro socket
options.
18.14
357
18.14.1
Sistemas com implementaes NetBIOS mais antigos, como o Windows for Workgroups
(Windows 3.11) e o Lan Manager (DOS), enviam somente a senha para acesso ao compartilhamento, desta forma, para o acesso ser autorizado pelo samba, voc dever especificar a
diretiva user = usuario para que a senha confira com o usurio local do sistema. A senha enviada tambm em formato texto plano. Este problema no ocorre no Windows 95 e superiores,
que enviam o nome de usurio que efetuou o logon junto com a respectiva senha.
Se a segurana do seu samba depende de senhas criptografadas, ser necessrio utilizar a diretiva include = outro_arquivo_de_configurao.%m para definir configuraes especficas 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.
18.14.2
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 verso que acompanha o WinSock do Windows 95.
Para tornar uma mquina parte do grupo de trabalho, siga os seguintes passos:
358
359
Windows NT WorkStation
Veja Windows NT Server on page 364.
Windows NT Server
Clique no item Rede do painel de controle.
Na tab Servios, 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.
Windows 2000 Professional
Logue como administrador do sistemas local.
Entre no item Sistema dentro do painel de controle. A tela propriedades de sistema ser
aberta. Clique em Computador e ento no boto Propriedades.
No campo nome do computador, coloque um nome de no mximo 15 caracteres para identificar a mquina na rede.
Clique em grupo de trabalho e digite o nome do grupo de trabalho na caixa de dilogo.
Clique em OK e aguarde a mensagem confirmando sua entrada no grupo de trabalho.
Ser necessrio reiniciar a mquina.
Windows 2000 Server
Logue como administrador do sistemas local.
Entre no item Sistema dentro do painel de controle. A tela propriedades de sistema ser
aberta. Clique em Descrio de rede e ento no boto Propriedades.
No campo nome do computador, coloque um nome de no mximo 15 caracteres para identificar a mquina na rede.
Clique em grupo de trabalho e digite o nome do grupo de trabalho na caixa de dilogo.
Clique em OK e aguarde a mensagem confirmando sua entrada no grupo de trabalho.
Ser necessrio reiniciar a mquina.
Linux
Os aplicativos smbclient e smbmount so usados para navegao e montagem dos discos e
impressoras compartilhadas em mquinas Linux. Se voc procura programas de navegao
360
grficos, como o Ambiente de Rede do Windows ou mais poderosos, veja Programas de navegao 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.
smbmount O smbmount uma ferramenta que permite a montagem de um disco compartilhado por uma mquina NetBEUI remota como uma partio. Veja alguns exemplos:
smbmount //servidor/discoc /mnt/discoc Monta o compartilhamento de //servidor/discoc em
/mnt/discoc usando o nome de usurio atual. Ser pedido uma senha para acessar o
contedo do compartilhamento, caso ele seja pblico, voc pode digitar qualquer senha
ou simplesmente pressionar enter.
smbmount //servidor/discoc /mnt/discoc -N Semelhante ao comando cima, com a diferena
que o parmetro -N no pergunta por uma senha. Isto ideal para acessar compartilhamentos annimos.
smbmount //servidor/discoc /mnt/discoc -o username=gleydson,workgroup=teste
Semelhante aos anteriores, mas acessa o compartilhamento usando gleydson como
nome de usurio e teste como grupo de trabalho. Este mtodo ideal para redes que tem
o nvel de acesso por usurio ou para acessar recursos compartilhados em um domnio.
361
nmblookup Esta uma ferramenta usada para procurar nomes de cliente usando o endereo
IP, procurar um IP usando o nome e listar as caractersticas de cada cliente. Veja alguns exemplos:
nmblookup -A 127.0.0.1 Lista o nome e as opes usadas pelo servidor 127.0.0.1
nmblookup servidor Resolve o endereo IP da mquina servidor.
A listagem exibida pela procura de IP do nmblookup possui cdigos hexadecimais e cada um
deles possui um significado especial no protocolo NetBEUI. Segue a explicao de cada um:
Identificao da mquina
COMPUTADOR<00>= O servio NetBEUI est sendo executado na mquina.
COMPUTADOR<03> = Nome genrico da mquina (nome NetBIOS).
COMPUTADOR<20> = Servio LanManager est sendo executado na mquina.
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.
18.14.3
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, Windows XP, Windows 2k ou Linux). Veja Contas de mquinas de domnio on page 328
para maiores detalhes.
Como o Windows 3.11, Windows 95, Windows 98, Windows ME no possuem uma conta de
mquina, eles nunca sero um membro real de um domnio, podendo sofrer um name 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
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 verso que acompanha o WinSock do Windows 95.
Para tornar uma mquina parte do domnio, siga os seguintes passos:
Entre nas propriedades de rede no Painel de Controle
Instale o Cliente para redes Microsoft (caso no esteja instalado).
Instale o Protocolo TCP/IP. Voc tambm pode instalar o protocolo NetBIOS, mas utilizaremos o suporte NetBIOS sobre TCP/IP que o usado pelo SAMBA alm de ter um
melhor desempenho, permitir integrao com servidores WINS, etc.
Clique em Cliente para redes Microsoft, marque a opo Efetuar logon no domnio do
Windows NT. Coloque o nome do domnio que ir 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 Computador, 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
363
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
Veja os passos em Windows NT Server on the following page.
364
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 Dominio e escreva o nome do domnio que deseja entrar.
Para criar uma conta de mquina no domnio, clique em criar uma conta de
computador no domnio e coloque na parte de baixo o nome do usurio sua senha.
O usurio dever ter poderes para adicionar mquinas no domnio. Caso a conta de
mquina no seja criada, o Windows NT ser como um Windows 95/98 na rede, sem a
segurana que seu nome NetBIOS no seja usado por outros (veja Contas de mquinas
de domnio on page 328).
Clique em OK at voltar.
Pronto, seu computador agora faz parte do domnio.
Linux
Entre no sistema como usurio root.
Instale o SAMBA caso no esteja ainda instalado.
Edite o arquivo de configurao do samba /etc/samba/smb.conf, ser necessrio
modificar as seguintes linhas na seo [global]:
365
[global]
workgroup = nome_domnio
security = domain
password server = nome_pdc nome_bdc
encrypt passwords = true
Onde:
workgroup - Nome do domnio que deseja fazer parte.
security - Nvel de segurana. Nesta 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 rejeita o acesso antes de enviar o par de nome/senha corretos. Por este motivo, seu usurio
pode ser bloqueado aps um determinado nmero de tentativas em alguns servidores mais
restritivos. Para acessar os recursos compartilhados, veja Linux on page 359. Note que no
obrigatrio realizar as 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.
18.14.4
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.
366
18.14.5
linneighborhood
Cliente SAMBA baseado em GTK, muito leve e possibilita a navegao entre os grupos
mquinas em forma de rvore. Ele tambm permite a montagem de compartilhamentos remotos. Caso precise de recursos mais complexos e autenticao, recomendo o TkSmb on this
page.
TkSmb
Cliente SAMBA baseado em TCL/TK. Seu ponto forte a navegao nos recursos da mquina
ao invs da rede completa, possibilitando autenticao em domnio/grupo de trabalho, montagem de recursos, etc.
18.14.6
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 funcionamento de cada opo e ajustes e organizao feita diretamente no arquivo de configurao.
367
gnosamba
Ferramenta de configurao grfica usando o GNOME. Com ele possvel definir configuraes localmente. Ele ocupa pouco espao em disco, e se voc gosta de GTK, este o recomendado.
As opes do SAMBA so divididas em categorias facilitando sua localizao e uso.
swat
Ferramenta de administrao via web do samba. Este um daemon que opera na porta 901 da
mquina onde o servidor samba foi instalado. A configurao feita atravs de qualquer navegador acessando http://ip_do_servidor:901 e logando-se como usurio root (o nico
com poderes para escrever no arquivo de 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 parmetros aceitos pelo servidor samba (restries, controle de acesso, otimizaes, etc.).
18.15
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.
18.15.1
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.
#
#
#
#
#
#
#
#
368
[global]
# nome da mquina na rede
netbios name = teste
# nome do grupo de trabalho que a mquina pertencer
workgroup = focalinux
# nvel de segurana share permite que clientes antigos mantenham a compatibi
# enviando somente a senha para acesso ao recurso, determinando o nome de usu
# de outras formas
security = share
# O recurso de senhas criptografadas no funciona quando usamos o nvel share
# de segurana. O motivo disto porque automaticamente assumido que voc
# est selecionando este nvel por manter compatibilidade com sistemas antigo
# ou para disponibilizar compartilhamentos pblicos, onde
encrypt passwords = false
# Conta que ser mapeada para o usurio guest
guest account = nobody
# Como todos os compartilhamentos desta configurao so de acesso pblico
# coloquei este parmetro na seo [global], assim esta opo afetar todos
# os compartilhamentos.
guest ok = 1
# Conjunto de caracteres utilizados para acessar os compartilhamentos. O padr
# para o Brasil e pases de lngua latina o ISO 8859-1
character set = ISO8859-1
369
18.15.2
O exemplo abaixo descreve uma configurao a nvel de segurana por usurio onde existem compartilhamentos que requerem login e usurios especficos, e restries de IPs e interface 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
370
18.15.3
#
#
#
#
#
#
#
#
371
Domnio
Arquivo de configurao do SAMBA criado por
Gleydson Mazioli da Silva <gleydson@debian.org>
para o guia Foca GNU/Linux Avanado - Captulo SAMBA
Este script pode ser copiado e distribudo livremente de
acordo com os termos da GPL. Ele no tem a inteno de
atender uma determinada finalidade, sendo usado apenas
para fins didticos, portanto fica a inteira responsabilidade
do usurio sua utilizao.
[global]
# nome da mquina na rede
netbios name = teste
# nome do grupo de trabalho que a mquina pertencer
workgroup = focalinux
# String que ser mostrada junto com a descrio do servidor
server string = servidor PDC principal de testes
# nvel de segurana user somente aceita usurios autenticados aps o envio
# de login/senha
security = user
# Utilizamos senhas criptografadas nesta configurao
encrypt passwords = true
smb passwd file = /etc/samba/smbpasswd
# Conta que ser mapeada para o usurio guest
guest account = nobody
# Permite restringir quais interfaces o SAMBA responder
bind interfaces only = yes
# Faz o samba s responder requisies vindo de eth0
interfaces = eth0
372
373
374
375
Captulo 19
19.1
19.1.1
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 recursos do interpretador de comandos (alguns deles sero vistos ainda nesta seo).
OBS1: Algumas variveis de controle de ambientes ambiente do interpretador de comandos
j so iniciadas com valores somente leitura (como as variveis EUID e PPID)
OBS2: Variveis exportadas como somente leitura em shell scripts so mantidas at a finalizao do script e depois liberadas.
19.1.2
376
O controle de acesso a diretrios de usurios importante quando desejamos que outras pessoas no tenham acesso ao diretrio de outros usurios, violando a privacidade do mesmo
e obtendo acesso a partes indesejveis, principalmente do usurio root. recomendado restringir o acesso somente ao dono e grupo do usurio, bloqueando o acesso a outros tipos de
usurios:
chmod 2750 /root
chmod 2750 /home/usuario
O exemplo acima permitir o acesso do diretrio /root e /home/usuario somente ao
usurio e grupo que pertencem. Este processo pode ser facilitado na criao dos diretrios de usurios em /home especificando a varivel: DIR_MODE=0750 no arquivo /etc
/adduser.conf.
OBS: Algumas distribuies de Linux garantem o acesso livre a diretrios de usurios por
padro pois alguns daemons que requerem acesso a diretrio de usurios rodam sob outros
usurios ao invs do root. Um bom exemplo a utilizao do recurso UserDir do Apache
para servir requisies como http: //servidor.org/~usuario.
A restrio de diretrio home neste caso bloquear o acesso do servidor web Apache ao
diretrio /home/usuario/public_html. Mesmo assim, uma alternativa para garantir a
utilizao da restrio incluir o usurio do servidor web Apache (www-data) no grupo
usuario (que possui acesso ao diretrio /home/usuario):
adduser www-data usuario
Isto garantir que o servidor Apache continue servindo as requisies dentro do diretrio
/home/usuario, com acesso garantido via grupo. O mesmo principio pode ser aplicado em
outros programas, apenas leve em considerao que se um cracker tomar conta do processo
que tem acesso ao seu diretrio home restrito, ele certamente tambm ter acesso.
19.1.3
Quando o bash iniciado com o parmetro -r, --restricted ou como rbash, o shell restringe 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 interpretador de comandos).
Importar a definio de funes do ambiente do shell atual.
377
19.1.4
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 minutos). Veja Uso do comando readonly para exportar variveis on page 375 como complemento.
19.1.5
19.1.6
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
378
19.2
19.2.1
Um mtodo simples de se determinar se um programa binrio possui suporte a PAM executando o comando:
ldd [programa]
Por exemplo:
ldd /bin/login
libcrypt.so.1 => /lib/libcrypt.so.1 (0x4001c000)
libpam.so.0 => /lib/libpam.so.0 (0x40049000)
libpam_misc.so.0 => /lib/libpam_misc.so.0 (0x40051000)
379
19.2.2
required
required
required
required
required
required
/usr/lib/security/pam_warn.so
/usr/lib/security/pam_deny.so
/usr/lib/security/pam_deny.so
/usr/lib/security/pam_warn.so
/usr/lib/security/pam_deny.so
/usr/lib/security/pam_deny.so
19.2.3
Restringindo/Bloqueando o login
380
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 verificadas 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
# Permite o login no console de todos os usurios especificados.
+:gleydson root:console
19.2.4
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 superusurio usando o comando su. Esta restrio funciona at mesmo para os usurios que possuem a senha correta de root, retornando uma mensagem de login ou senha incorretos. Isto
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.
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 estiver 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.
19.2.5
382
19.2.6
Este recurso controlado pelo arquivo /etc/security/group.conf. Este arquivo composto por 5 campos separados por ; (os 4 primeiros so os mesmos explicados em Restries
383
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
19.2.7
384
Quando somente o limite hard (rgido) especificado, o limite suave assume o mesmo
valor.
Terceiro campo - tem que deseja restringir o acesso:
core - Limita o tamanho do arquivo core (KB)
data - Tamanho mximo de arquivo de dados (KB)
fsize - Tamanho mximo de arquivo (KB)
memlock - Tamanho mximo do espao de endereos bloqueado na memria (KB)
nofile - Nmero mximo de arquivos abertos
rss - Tamanho mximo residente (KB)
stack - Tamanho mximo da pilha (KB)
cpu - Tempo mximo de uso da CPU (MIN)
nproc - Nmero mximo de processos
as - Limite de espao de endereos
maxlogins - Nmero mximo de logins
priority - Prioridade de execuo de processos de usurios
Quarto campo - Especifica o valor do campo anterior
Os limites aplicados ao usurio podem ser visualizados atravs do comando ulimit -S -a
(para listar limites suaves - soft) e ulimit -H -a (para listar limites rgidos - hard). Caso o
parmetro -S ou -H sejam omitidos, os limites listados sero os suaves (soft). Um exemplo de
/etc/security/limits.conf (retirado da distribuio Debian GNU/Linux:
*
*
@student
@faculty
@faculty
ftp
@student
gleydson
soft
hard
hard
soft
hard
hard
-
core
rss
nproc
nproc
nproc
nproc
maxlogins
maxlogins
0
10000
20
20
50
0
4
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.
19.3
385
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 manualmente os arquivos /etc/group e /etc/gshadow. Podemos ter as seguintes situaes facilitadas 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 conseqentemente 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 permisses 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 equivalente) 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 diretrios, imagine o caos.
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:
find / -group nome_do_grupo
19.4
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 configuraes 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
#
#
# Especificao de mquinas. O primeiro campo (Host_Alias) diz que a varivel
# LOCALSERVER ser um nome/endereo de mquina
Host_Alias LOCALSERVER=192.168.0.1
# Especificao de usurios. O primeiro campo (User_Alias) diz que a varivel
# NETMASTERS armazenar nomes de usurios
User_Alias NETMASTERS=gleydson, goodboy
# Comandos. O primeiro campo (Cmnd_Alias) diz que a varivel
# C_REDE contm comandos do sistema. Mais de um parmetro
# deve ser separado por vrgulas
Cmnd_Alias C_REDE=/sbin/ipchains, /sbin/iptables
# Padres que se aplicam aos usurios da varivel NETMASTERS. O parmetro
# mail_always sempre envia um e-mail ao root avisando sobre o uso do
# sudo
Defaults:NETMASTERS mail_always
387
19.5
Restringindo o comando su
Restries de acesso atravs de grupos, bloqueio de acesso, acesso direto sem senha, etc. podem ser aplicados ao sudo via seu arquivo de configurao PAM /etc/pam.d/su. Abaixo
um exemplo explicativo deste arquivo:
# A configurao abaixo requer que o usurio seja membro do
# grupo adm para usar o su.
# auth
required
pam_wheel.so group=adm
# Membros do grupo acima no precisam fornecer senha, temos confiana neles.
# auth
sufficient pam_wheel.so trust
# Usurio que pertencem ao grupo "nosu" nunca devero ter acesso ao su
# auth
required
pam_wheel.so deny group=nosu
# O root no precisa fornecer senha ao su
auth
sufficient pam_rootok.so
# Ativa as restries PAM de /etc/security/limits.conf
session
required
pam_limits.so
# Isto ativa as restries PAM de /etc/security/time.conf no
# comando su
account
requisite pam_time.so
388
19.6
O servio identd permite identificar os usurios que esto realizando conexes TCP, adicionalmente esta caracterstica usada por programas para fazer restries para usurios
em adio ao endereo de origem/destino. A sintaxe usada nas diretivas de acesso especificada na forma usurio@endereo. O Servidor ident on page 241 explica a configurao/utilizao/vulnerabilidades e recomendaes sobre este servio.
Diversos programas que possuem controle de acesso baseado em IPs/hosts aceitam esta especificao, como o exim, ircd, e o conhecido tcpd.
Segue um exemplo da utilizao do identd com o arquivo hosts.allow:
19.7
Esta proteo oferece uma barreira maior se segurana contra IPs spoofing evitando que pessoas 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 entre 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.
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 bastante 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, usando 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
00:03:47:BB:AA:BA
00:03:47:BB:AA:BB
www.focalinux.org.br
www2.focalinux.org.br
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 trabalho 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.
19.8
390
Para desativar servios neste arquivo, ponha o smbolo # no inicio das linhas que deseja comentar e execute um killall -HUP inetd. Alternativamente, o comando update-inetd
pode ser usado para facilitar esta tarefa:
update-inetd --disable finger,talk,time,daytime
update-inetd --disable
Este comando envia automaticamente o sinal de reinicio (HUP) ao inetd. 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.
19.9
O arquivo hosts.equiv contm uma lista de usurios autorizados/desautorizados que podem fazer uso dos servios r* sem fornecer uma senha (como rsh, rcp, rexec, etc) , veja
/etc/hosts.equiv e /etc/shosts.equiv on page 58. muito fcil falsificar um nome de usurio
para obter acesso aos privilgios de outro usurio usando este recurso.
Os arquivos ~/.rhosts, ~/.shosts tem o funcionamento parecido com o hosts.equiv
mas contm somente dois campos, o primeiro especificando o nome do computador (FQDN) e
o segundo o nome do usurio que tem permisso de acesso sem fornecer senha. Ele garantir
este acesso ao usurio e mquina remota especificada neste arquivo. Se for definido somente
o nome do computador, o nome de usurio dever ser o mesmo do local para que o acesso
sem senha seja garantido. recomendvel restringir o acesso a estes arquivos somente ao
usurio/grupo quando for realmente necessrio. Um exemplo de ~/.rhosts:
maquina1.dominio.com.br usuario1
maquina2.dominio.com.br usuario2
O uso destes dois mecanismos e dos servios r* so desencorajados! (o ltimo por usar transferncia 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. . .
19.10
Por padro todos que tem acesso ao console do sistema podem efetuar o reinicio do computador pressionando CTRL+ALT+DEL. Estas teclas de combinao so definidas pela linha
ca:12345:ctrlaltdel:/sbin/shutdown -r now
391
do arquivo /etc/inittab.
A opo -a (access) do shutdown restringe isto, permitindo somente o reinicio do sistema caso um dos usurios cadastrados no arquivo /etc
/shutdown.allow estejam logados no console. Caso nenhum usurio autorizado esteja logado, a mensagem shutdown: no authorized users logged in exibida no console
local.
O arquivo /etc/shutdown.allow deve conter um usurio por linha e 32 no mximo.
A mesma linha do /etc/inittab pode ser modificada para a seguinte:
ca:12345:ctrlaltdel:/sbin/shutdown -a -t5 -r now
OBS: Se a opo -a seja especificada e o arquivo /etc/shutdown.allow no existe, a opo
-a ignorada.
19.11
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 processos 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 ambiente 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 restries, 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):
# /etc/fstab: informaes estticas do sistemas de arquivos.
#
# <Sist. Arq.>
<Ponto Mont.> <tipo> <opes>
<dump> <passo>
proc
/proc
proc
defaults,gid=4
0
0
Aps reiniciar o sistema, execute o comando ls -lad /proc note que o grupo do diretrio
/proc ser modificado para adm. Agora entre como um usurio e execute um ps aux, somente seus processos sero listados. Para autorizar um usurio especfico ver todos os processos (ter acesso novamente ao diretrio /proc), inclua este no grupo que usou no arquivo
/etc/fstab:
392
19.12
19.12.1
393
/dev/hda1
/boot ext2
defaults
1 1
/dev/hda3
/
ext2
defaults,usrquota
1 2
/dev/hda4
/usr ext2
defaults,grpquota
1 3
/dev/hda5
/pub ext2
defaults,usrquota,grpquota 1 4
O sistema de arquivos /dev/hda1 no ter suporte a quota, /dev/hda3 ter suporte a
quotas de usurios (usrquota), /dev/hda4 ter suporte a quotas de grupos (grpquota) e
/dev/hda5 ter suporte a ambos. Por padro assumido que os arquivos de controle de
quota esto localizados no ponto de montagem da partio com os nomes quota.user
e quota.group.
4 Agora ser necessrio criar os arquivos quota.user e quota.group no ponto de
montagem de cada partio ext2 acima que utilizar o recurso de quotas. O arquivo
quota.user controla as quotas de usurios e quota.group controla as quotas de grupos.
Crie um arquivo vazio quota.user em / (ter suporte somente a quota de
usurios, veja a opo de montagem no /etc/fstab): touch /quota.user ou
echo -n >/quota.user.
Crie um arquivo vazio quota.group em /usr (ter suporte somente a quota de
grupos): touch /usr/quota.group ou echo -n >/usr/quota.group.
Crie um arquivo vazio quota.user e quota.group em /pub (este sistema de
arquivos tem suporte a ambos os tipos de quota): touch /pub/quota.user
/pub/quota.group.
Por motivos de segurana, as permisses dos arquivos de controle de quota quota.user
e quota.group devem ser leitura/gravao ao usurio root e sem permisses para
grupo/outros usurios: chmod 0600 /quota.user /quota.group. OBS: Se deseja utilizar o quota verso 1, certifique-se que no existem os arquivos chamados
aquota.user e aquota.group no diretrio raz de sua partio. Se eles estiverem
disponveis, os utilitrios de quota utilizaro esta verso como padro, atualmente o kernel 2.4 possui somente suporte a quota verso 1. A verso 2 do quota checa corrompimento dos arquivos de dados de quota e trabalha mais rpido em parties grandes. So
necessrios patches da srie ac (Alan Cox) para usar a verso 2 do quota.
5 Entre em modo monousurio init 1, desmonte os sistemas de arquivos que utilizaro
a quota e monte-os novamente (isto serve para ativar as opes de quota). Alternativamente, execute umount -a (para desmontar todos os sistemas de arquivos) e mount -a
para remontar todos. Se voc ativou as quotas para o sistema de arquivos / (como em
nosso exemplo) ser necessrio reiniciar o sistema.
6 O prximo passo scanear o disco para criar os dados para as parties com suporte a
quota (ativadas no /etc/fstab):
quotacheck -augv
O parmetro -a diz para checar todas as parties com suporte a quota no arquivo /etc
/mtab, -u para checar quotas de usurios, -g para checar grupos e -v para mostrar o progresso da checagem da partio. Na primeira execuo mostrado uma mensagem de
erro de arquivo quota.user/quota.group corrompido, mas isto normal porque o
arquivo anterior tem tamanho zero. Estes nomes tambm servem para o quotacheck
auto-detectar a verso do sistema de quota usada no sistema de arquivos. OBS: Certamente ser necessrio forar a remontagem como somente leitura do sistema de arquivos / com a opo -m para o quotacheck criar as configuraes de quota nesta par-
394
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
# Ativa as quotas de usurios em /pub
quotaon -uv /pub
# Desativa as quotas de grupos em /pub (deixando somente a de usurios
quotaoff -gv /pub
A atualizao de quotas durante a gravao/excluso de arquivos feita automaticamente. O
utilitrio quotacheck dever ser executado sempre que o sistema de quotas for desativado
(por no haver atualizao automtica dos dados de uso de disco) ou quando ocorrerem falhas
de disco.
Na distribuio Debian o quotacheck disparado sempre que necessrio aps as situaes
de checagem de disco. As quotas de todas as parties tambm so ativadas automaticamente
pelo script /etc/init.d/quota e /etc/init.d/quotarpc.
Em sistemas que utilizam NFS e possuem sistemas de arquivos exportados em /etc
/exports, o daemon rpc.rquotad dever ser carregado. Sua funo fornecer os detalhes de quota dos sistemas de arquivos locais exportados para as mquinas clientes.
19.12.2
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:
-u Edita a quota do usurio especificado (esta a padro).
-g Edita a quota de grupo especificado.
-r Permite editar a quota de sistemas de arquivos remotos atravs do daemon rpc.rquotad.
-p [usurio/grupo ] Usa os valores especificados para o usurio/grupo para definir a nova
quota, sem necessidade de entrar no modo de edio.
395
-t Permite modificar o valor de tolerncia dos limites que ultrapassam soft at que sejam bloqueados. 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
Disk quotas for user gleydson (uid 1000):
Filesystem
blocks
soft
hard
/dev/hda5
504944
500100
20000
hard
inodes
600000
10868
O editor de textos usado poder ser modificado atravs da varivel $EDITOR. Abaixo a explicao destes campos:
Filesystem - Sistema de arquivos que ter a quota do usurio/grupo editada. As restries 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 editado. 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 excedeed (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:
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem
Block grace period
Inode grace period
/dev/hda5
2days
7days
sof
396
19.12.3
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 Editando 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:
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.
19.12.4
files
10868
quota
0
limit
0
grac
398
19.12.5
File limits
399
User
used
soft
hard grace
used soft hard grace
---------------------------------------------------------------------root
-16052
0
0
none
6443
0
0
none
gleydson +4944 500100 600000
none
10868
0
0
*** Report for group quotas on device /dev/hda5
Block grace time: 7days; Inode grace time: 7days
Block limits
File limits
Group
used
soft
hard grace
used soft hard grace
---------------------------------------------------------------------root
-20308
0
0
none
636
0
0
none
src
-11404
0
0
660
0
0
users
-1756
0
0
6561
0
0
gleydson -3452
0
0
9307
0
0
Um sinal de +- no segundo campo indica quota ultrapassada ou no espao em disco, + em nmero de arquivos e ++ em ambos. Como vimos acima, o este comando tambm
lista o nmero de arquivos e bytes pertencentes a cada usurio na partio (mesmo no sendo
monitorado pelas restries de quota), isto ajuda a monitorar aes suspeitas com a excedncia
de espao em disco de determinados usurios/grupos do sistema. Um exemplo algum que
esteja fora da quota e abusando de seu usurio/grupo para uso excessivo de espao em disco
sem seu conhecimento.
OBS: Este utilitrio pode ser executado por qualquer usurio no sistema e mostrar o uso de
quotas de usurios/grupos que no deveria ter acesso. recomendado deve ter permisses de
leitura/gravao somente para o usurio root e sem permisses para grupo/outros usurios.
19.12.6
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:
# Programa usado para enviar as mensagens
MAIL_CMD = "/usr/sbin/sendmail -t"
# Campo de origem da mensagem
FROM = "root@localhost"
# but they dont have to be:
SUBJECT = Quota excedida
CC_TO = "root@localhost"
SUPPORT = "root@localhost"
PHONE = "5555-2525"
#
400
O e-mail enviado aos usurios (e usurios que pertencem a grupos com a quota excedida)
com o seguinte formato:
From: root@localhost
To: gleydson@debian.gms.com.br
Cc: root@localhost
Reply-To: root@localhost
Subject: Quota Excedida
Date: Sat, 22 Sep 2001 14:27:38 -0400
Hi,
We noticed that you are in violation with the quotasystem
used on this system. We have found the following violations:
Filesystem
/dev/hda5
+-
Block limits
used
soft
hard
504944 500100 600000
grace
none
File limits
used soft
10868
0
hard
0
grace
We hope that you will cleanup before your grace period expires.
Basically, this means that the system thinks you are using more disk space
on the above partition(s) than you are allowed. If you do not delete files
and get below your quota before the grace period expires, the system will
prevent you from creating new files.
For additional assistance, please contact us at root@localhost
or via phone at 5555-2525.
19.13
19.14
19.15
401
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.
19.15.1
BIOS do sistema
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 simplesmente 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 dispositivos 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 operacional para dar a partida via disquetes.
19.15.2
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.
19.15.3
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.
19.15.4
402
Protegendo o LILO
A opo passwd=senha e restricted podero ser usadas na seo da imagem que desejamos proteger. 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.
19.15.5
Disco rgido
O disco rgido do servidor poder se retirado como alternativa para se ter acesso aos dados
armazenados. Isto poder ser 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 recurso (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 facilmente 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 movimentao.
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
20.1
Introduo
Quando enviamos um trfego de nossa mquina para outra (e-mails, mensagens de ICQ, navegao, 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 ajudar 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 intenes 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 apresenta 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.
20.2.1
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:
Sep
Sep
Sep
Sep
25
25
25
25
16:53:37
16:53:56
16:54:18
16:54:31
myserver
myserver
myserver
myserver
kernel:
kernel:
kernel:
kernel:
device
device
device
device
eth0
eth0
eth0
eth0
O logcheck monitora estas atividades e classificam esta mensagem como prioridade Violao (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.
20.3
20.3.1
http
20.3.2
20.3.3
Servidor pop3
A alternativa mais segura a utilizao do protocolo IMAP com suporte a ssl. Nem todos os
clientes de e-mail suportam este protocolo.
20.3.4
Transferncia de arquivos
Ao invs do ftp, use o scp ou o sftp para transferncia segura de arquivos. Veja scp on
page 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.
20.3.5
login remoto
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).
20.3.6
O programa SILC (Secure Internet Live Conference) realiza a criptografia de dados durante o
bate papo entre diversos usurios conectados via rede.
20.3.7
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.
20.4
Esta uma forma excelente para armazenamento seguro de seus dados, pois estaro criptografados 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):
Monte o sistema de arquivos Crie um diretrio que ser usado para montagem do seu sistema 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 comum.
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
Remontando o sistema de arquivos criptografado Execute novamente os comandos:
losetup -e twofish /dev/loop0 /pub/swap-fs
mount /pub/swap-fs /pub/criptofs -t ext2 -o loop
Ser pedida a senha que escolheu e seu sistema de arquivos ser montado em /pub
/swap-fs.
Com este sistema, seus dados estaro protegidos mesmo do usurio root.
20.5
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 dados confivel (atravs da assinatura de arquivos). O sistema PGP se baseia no conceito de chave pblica e privada: Sua chave pblica distribuda para as pessoas que deseja trocar dados/mensagens e a chave privada fica em sua mquina (ela no pode ser distribuda). As chaves pblicas e privadas so armazenadas nos arquivos pubring.gpg e
secring.gpg respectivamente, dentro do subdiretrio ~/.gnupg. Veja Criando um par de
chaves 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 configurado como as mesmas configuraes/endereos do provedor da vtima pode enganar com
sucesso um usurio passando-se por outro.
20.5.1
Instalando o PGP
20.5.2
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 modificar os dados de sua chave.
8 Digite a FraseSenha - Senha que ir identific-lo(a) como proprietrio da chave privada. chamada de FraseSenha pois pode conter espaos e no h limite de caracteres. Para alter-la posteriormente, siga as instrues em Mudando sua FraseSenha
on page 412.
9 Confirme e aguarde a gerao da chave pblica/privada.
20.5.3
Encriptando dados
Para criptografar o arquivo para ser enviado a outro usurio, voc dever ter a chave pblica
do usurio cadastrado no seu chaveiro (veja Adicionando chaves pblicas ao seu chaveiro pessoal on the next page) e especificar a opo -r seguida do nome/e-mail/ID da chave pblica:
gpg -r kov -e arquivo.txt
O exemplo acima utiliza a chave pblica de kov para encriptar o arquivo arquivo.txt (somente ele poder decriptar a mensagem usando sua chave privada).
OBS: recomendvel especificar o nome de arquivo sempre como ltimo argumento.
20.5.4
Agora vamos fazer a operao reversa da acima, a opo -d usada para decriptar os dados
usando a chave privada:
gpg -d arquivo.txt.asc >arquivo.txt
gpg -d arquivo.txt.gpg >arquivo.txt
Descriptografa os arquivos arquivo.txt.asc e arquivo.txt.gpg recuperando seu contedo original. A sua FraseSenha ser pedida para descriptografar os dados usando a chave
privada (~/.gnupg/secring.gpg).
20.5.5
Assinando arquivos
Assinar um arquivo garantir que voc a pessoa que realmente enviou aquele arquivo. Use
a opo -s para assinar arquivos usando sua chave privada:
gpg -s arquivo.txt
A FraseSenha ser pedida para assinar os dados usando sua chave privada. Ser gerado
um arquivo arquivo.txt.gpg (assinado e compactado). Adicionalmente a opo clearsign
poder ser usada para fazer uma assinatura em um texto plano, este um recurso muito usado
por programas de e-mails com suporte ao gpg:
gpg -s --clearsign arquivo.txt
Ser criado um arquivo chamado arquivo.txt.asc contendo o arquivo assinado e sem compactao.
20.5.6
Checando assinaturas
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:
gpg --verify arquivo.txt.asc
Se a sada for Assinatura Correta, significa que a origem do arquivo segura e que ele no
foi de qualquer forma modificado.
gpg --verify arquivo.txt.gpg
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.
20.5.7
Sua chave pblica deve ser distribuda a outros usurios para que possam enviar dados criptografados ou checar a autenticidade de seus arquivos. Para exportar sua chave pblica em
um arquivo que ser distribudo a outras pessoas ou servidores de chaves na Internet, use a
opo export:
gpg --export -a usuario >chave-pub.txt
Ao invs do nome do usurio, poder ser usado seu e-mail, ID da chave, etc. A opo -a
permite que os dados sejam gerados usando bits ASCII 7.
20.5.8
20.5.9
Use o comando gpg --list-keys para listar as chaves pblica do seu chaveiro. O comando
gpg --list-secret-keys lista suas chaves privadas.
20.5.10
Quando uma chave pblica modificada ou por qualquer outro motivo deseja retira-la do seu
chaveiro pblico, utilize a opo delete-key:
gpg --delete-key usuario
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~.
20.5.11
20.5.12
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).
2 Execute o comando gpg --edit-key usuario (onde usuario o nome do usurio/email/IDchave da chave pblica importada).
3 Digite list, e selecione a chave pblica (pub) do usurio com o comando uid
[numero_chave]. Para assinar todas as chaves pblicas do usurio, no selecione qualquer chave com o comando uid.
4 Para assinar a chave pblica do usurio digite sign, ser perguntado se deseja realmente
assinar a chave do usurio e ento pedida a FraseSenha de sua chave privada.
5 Digite list, repare que existe um campo chamado trust: n/q no lado direito. O
primeiro parmetro do trust indica o valor de confiana do dono e o segundo (aps a
/) o valor de confiana calculado automaticamente na chave. As seguintes possuem o
seguinte significado:
- - Nenhum dono encontrado/confiana no calculada.
e - Chave expirada/falha na checagem de confiana.
q - Quando no conhece o usurio.
n - Quando no confia no usurio ( o padro).
m - Pouca confiana no usurio.
f - Totalmente confivel.
u - Indiscutivelmente confivel. Somente usado para especificar a chave pblica do
prprio usurio.
O valor de confiana da chave pode ser modificado com o comando trust e selecionando uma das opes de confiana. Os valores de confiana para a chave pblica pessoal -/u (no necessrio calcular a confiana/indiscutivelmente confivel).
20.5.13
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 assinatura de um usurio:gpg --list-sigs usuario.
O comando gpg --check-sigs adicionalmente faz a checagem de assinaturas.
20.5.14
Este texto foi divulgado por uma pessoa que pediu para permanecer annima na lista
<debian-user-portuguese@lists.debian.org> explicando os procedimentos de segurana 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.
Trocando assinaturas de chaves digitais
Direitos de republicao cedidos ao domnio pblico, contanto que o texto
seja reproduzido em sua ntegra, sem modificaes de quaisquer espcie, e
1. Assinaturas digitais
2. Chaves digitais e a teia de confiana
3. Trocando assinaturas de chaves digitais com um grupo de pessoas
1. Assinaturas digitais
Uma assinatura digital um nmero de tamanho razovel (costuma ter de 128 a
160 bits) que representa um bloco bem maior de informao, como um e-mail.
Pense numa
texto. Se
assinatura
representa
Existe uma relao direta entre uma assinatura e informao que ela assina.
Se uma das duas for modificada, elas passam a no mais "combinar" uma com a
a outra. Um programa de computador pode detectar isso, e avisar que a
assinatura "invlida".
Os algoritmos mais usados para criar e verificar assinaturas digitais so o
SHA-1, RIPEM160 e MD5. O MD5 no considerado to bom quanto os outros
dois.
Assinaturas digitais tambm funcionam com arquivos "binrios", ou seja:
imagens, som, planilhas de clculo... e chaves digitais.
1 -
2 -
2.2 -
3 -
Pronto. Podem ir embora, porque o resto dos passos deve ser feito com
calma, em casa. Lembre-se que voc no vai estar efetuando nenhum
julgamento moral a respeito de quem voc assinar a chave. Voc s ir
afirmar que a chave de sicrano realmente aquela, e mais nada.
4 -
Para cada uma das chaves que voc marcou no papel que "posso assinar":
4.1 -
4.2 -
4.3 -
4.4 -
419
Captulo 21
Apndice
Este captulo contm consideraes sobre o guia Foca GNU/Linux.
21.1
O guia Foca foi criado em 12 de Novembro de 1999. A verso que est lendo tem o objetivo de servir como referncia a usurios Avanados que j dominam grande parte do sistema operacional e procuram aprender mais sobre os seus detalhes e configuraes especiais 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).
21.2
420
Sobre o Autor
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 atualizao de conhecimento constante, automatizao e tomada inteligente de decises, nveis de
segurana da informao (tanto fsico e lgico), firewalls, virtualizao, redes virtuais, integrao 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 oficial da distribuio Debian. Atuou como tradutor do LDP-BR, traduzindo vrios HOW-TOs importantes 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 estrutura para hospedar, fortalecer e manter projetos em software livre.
Trabalhou para algumas empresas do Esprito Santo, no Governo Federal e de estados na implantao 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>.
21.3
421
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 documento aborda detalhes tcnicos teis sobre hardwares em geral e o Linux ausentes nos
manuais de outras distribuies Linux.
21.4
Novas verses deste guia, avisos de lanamento, outros nveis de aprendizado (Iniciante, Intermedirio 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.
21.5
Colaboradores do Guia
422
21.6
Marcas Registradas
Todas as marcas registradas citadas neste guia so propriedades de seus respectivos autores.
21.7
Futuras verses
Esta uma futura implementao que venho estudando para acompanhar o crescimento do
guia. Sugestes so bem vindas e podem ser enviadas para <gleydson@guiafoca.org>.
21.8
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/
-----BEGIN PGP PUBLIC KEY BLOCK----Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org
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
424
GcJAmrC9gWH7mYEUFNn1bGD+qHRwJ7+xj45NXBJDOBbHzTDS8QhacCRGW1CvRVgP
8ycPDOv/hmGfAJEzqzUkSO1uBcPmmXSIRgQYEQIABgUCOXtZqwAKCRCla8PfmFui
gQHnAJ4kDKHKvG9s9OjGV6RvszTDGE51igCcCZn0rO/Si0ek97bTCIusQzJF/pA=
=bvnT
-----END PGP PUBLIC KEY BLOCK-----