Você está na página 1de 262

Eduardo Lobo Analista de Informtica no

Ministrio Pblico do Trabalho (MPT) e


Professor dos Cursos de TI da Universidade Catlica de Braslia. Engenheiro
Mecnico graduado pela Universidade
Federal de Uberlndia e Mestre em
Cincia da Computao pela Universidade Federal de Santa Catarina, Florianpolis, 2001. Atuou em
grandes empresas no perodo de 1997-2000, como Analista de
TI para o governo brasileiro em 2001, e como Coordenador dos
Cursos de Ps-Graduao Lato Sensu em Redes de Computadores da Universidade Catlica de 2003 a 2005, e de Tecnologia em
Segurana da Informao (TSI) de 2007 a 2009. Participou do
Projeto de Pesquisa CESMIC/UCB de 2003 a 2008. Atualmente
administra o datacenter e a rede de dados/voz do MPT. reas de
interesse incluem: redes de computadores, storage e sistemas
baseados em software livre.

Bruno Alves Fagundes tecnlogo em


Tecnologia da Informao e da Computao pelo Instituto Superior de
Tecnologia (2007) e especialista em
Segurana de Redes pela Universidade
Estcio de S (2011). Tem experincia
em administrao de servidores Linux,
gerenciamento de usurio, implementao e gerncia de
servios de rede, clusters, segurana de redes, shell script,
PHP, Perl. Atualmente colaborador do LNCC, onde trabalha
na administrao dos servidores e clusters do Laboratrio de
Bioinformtica (LABINFO), provendo infraestrutura para a
realizao de pesquisas e processamento massivo de dados.
Francisco Marcelo M. Lima certificado Project Management Professional
(PMP) e Modulo Certified Security
Officer (MCSO), Mestre em Engenharia
Eltrica pela Universidade de Braslia
(2009), Mestre em Liderana pela Universidade de Santo Amaro (2007) e ps-graduado em Segurana de Redes de
Computadores pela Universidade Catlica de Braslia (2003).
Atualmente exerce as funes de Coordenador dos Cursos de
Redes de Computadores e Segurana da Informao do IESB,
e de Analista em TI do MPOG cedido para a Controladoria-Geral da Unio/PR. Possui mais de 15 anos de experincia na
rea de Cincia da Computao, com nfase em Segurana da
Informao, Redes e Construo de Software.

e Pesquisa qualificada como


uma Organizao Social (OS),
sendo ligada ao Ministrio da
Cincia, Tecnologia e Inovao
(MCTI)

responsvel

pelo

LIVRO DE APOIO AO CURSO

Programa Interministerial RNP,

O curso ensina a projetar, instalar, configurar e disponibilizar os principais servios para internet em uma rede
TCP/IP. Apresenta os conceitos associados a cada um dos
servios, e a instalao e configurao do KVM como base
para o ambiente de virtualizao. Aborda a autenticao
nos servios com LDAP, com apoio intensivo de atividades prticas.
Este livro inclui os roteiros das atividades prticas e o contedo dos slides apresentados em sala de aula, apoiando
profissionais na disseminao deste conhecimento em
suas organizaes ou localidades de origem.

Administrao de Sistemas Linux Servios para Internet

Wagner Vieira Lo tem 25 anos de experincia na rea de TI, atuando como Analista de Suporte e em Computao de
Alto Desempenho, com foco em sistemas
operacionais Unix/Linux. Possui graduao em Matemtica pela Faculdade de
Humanidades Pedro II, com Ps-Graduao em Gesto da Inovao pelo LNCC/UCP. Atualmenteocupa
o cargo deCoordenador de Tecnologia da Informao do Laboratrio Nacional de Computao Cientfica e de Coordenador
Administrativo do Ponto de Presena da RNP no Rio de Janeiro.
Professor do Instituto Superior de Tecnologia da Informao de
Petrpolis, IST e da Escola Superior de Redes da RNP, nas reas
de Segurana da Informao e Sistemas Operacionais.

A RNP Rede Nacional de Ensino

Administrao de
Sistemas Linux

Servios para
Internet
Eduardo Lobo
Wagner Vieira Lo
Bruno Alves Fagundes
Francisco Marcelo M. Lima

que conta com a participao dos


ministrios da Educao (MEC), da
Sade (MS) e da Cultura (MinC).
Pioneira no acesso Internet no
Brasil, a RNP planeja e mantm a
rede Ip, a rede ptica nacional
acadmica de alto desempenho.
Com Pontos de Presena nas
27 unidades da federao, a rede
tem mais de 800 instituies
conectadas. So aproximadamente
3,5 milhes de usurios usufruindo
de uma infraestrutura de redes
avanadas para comunicao,
computao e experimentao,
que contribui para a integrao
entre o sistema de Cincia e
Tecnologia, Educao Superior,
Sade e Cultura.

Ministrio da
Cultura
Ministrio da
Sade
Ministrio da
Educao
ISBN 978-85-63630-22-3

9 788563 630223

Ministrio da
Cincia, Tecnologia
e Inovao

A RNP Rede Nacional de Ensino


e Pesquisa qualificada como
uma Organizao Social (OS),
sendo ligada ao Ministrio da
Cincia, Tecnologia e Inovao
(MCTI)

responsvel

pelo

Programa Interministerial RNP,


que conta com a participao dos
ministrios da Educao (MEC), da
Sade (MS) e da Cultura (MinC).
Pioneira no acesso Internet no
Brasil, a RNP planeja e mantm a
rede Ip, a rede ptica nacional
acadmica de alto desempenho.
Com Pontos de Presena nas
27 unidades da federao, a rede
tem mais de 800 instituies
conectadas. So aproximadamente
3,5 milhes de usurios usufruindo
de uma infraestrutura de redes
avanadas para comunicao,
computao e experimentao,
que contribui para a integrao
entre o sistema de Cincia e
Tecnologia, Educao Superior,
Sade e Cultura.

Ministrio da
Cultura
Ministrio da
Sade
Ministrio da
Educao
Ministrio da
Cincia, Tecnologia
e Inovao

Administrao de
Sistemas Linux

Servios para
Internet

Eduardo Lobo
Wagner Vieira Lo
Bruno Alves Fagundes
Francisco Marcelo M. Lima

Administrao de
Sistemas Linux

Servios para
Internet
Eduardo Lobo
Wagner Vieira Lo
Bruno Alves Fagundes
Francisco Marcelo M. Lima

Rio de Janeiro
Escola Superior de Redes
2013

Copyright 2013 Rede Nacional de Ensino e Pesquisa RNP


Rua Lauro Mller, 116 sala 1103
22290-906 Rio de Janeiro, RJ

Diretor Geral
Nelson Simes
Diretor de Servios e Solues
Jos Luiz Ribeiro Filho

Escola Superior de Redes


Coordenao
Luiz Coelho
Edio
Pedro Sangirardi
Coordenao Acadmica de Administrao de Sistemas
Sergio Ricardo Alves de Souza
Equipe ESR (em ordem alfabtica)
Celia Maciel, Cristiane Oliveira, Derlina Miranda, Edson Kowask, Elimria Barbosa, Lourdes
Soncin, Luciana Batista, Luiz Carlos Lobato, Renato Duarte e Yve Abel Marcial.
Capa, projeto visual e diagramao
Tecnodesign
Verso
2.0.0
Este material didtico foi elaborado com fins educacionais. Solicitamos que qualquer erro encontrado ou dvida com relao ao material ou seu uso seja enviado para a equipe de elaborao de
contedo da Escola Superior de Redes, no e-mail info@esr.rnp.br. A Rede Nacional de Ensino e
Pesquisa e os autores no assumem qualquer responsabilidade por eventuais danos ou perdas, a
pessoas ou bens, originados do uso deste material.
As marcas registradas mencionadas neste material pertencem aos respectivos titulares.
Distribuio

Escola Superior de Redes

Rua Lauro Mller, 116 sala 1103


22290-906 Rio de Janeiro, RJ
http://esr.rnp.br
info@esr.rnp.br

Dados Internacionais de Catalogao na Publicao (CIP)


L799a
Lobo, Eduardo Augusto Oliveira

Administrao de sistemas Linux: servios para internet / Eduardo Augusto Oliveira

Lobo, Wagner Vieira Lo. 2. ed. Rio de Janeiro: RNP/ESR, 2013.

258 p. : il. ; 28 cm.

Bibliografia: p. 237-239.
ISBN 978-85-63630-22-3


1. Linux (Sistema operacional de computador). 2. Servios de diretrio (tecnologia de

redes de computador). I. Lo, Wagner Vieira. II. Ttulo.

CDD 005.7

Sumrio
Escola Superior de Redes
A metodologia da ESRxiii
Sobre o curso xiv
A quem se destinaxiv
Convenes utilizadas neste livroxiv
Permisses de usoxv
Sobre os autoresxvi

1. Kernel-based Virtual Machine KVM


Introduo virtualizao1
Mquinas virtuais2
Mquinas virtuais de processo2
Monitores de mquinas virtuais3
Virtualizao total3
Paravirtualizao4
Vantagens e desvantagens da virtualizao5
Solues de virtualizao5
O KVM: origem6
Arquitetura6
Gerenciamento de memria do Linux7
Exerccio de nivelamento 1 Gerenciamento de memria do Linux7
Gerenciamento de memria no KVM7
Exerccio de fixao 1 Pr-requisitos do hardware9
Exerccio de fixao 2 Instalao do KVM9

iii

Exerccio de fixao 3 Criando mquina virtual Linux10


Teclas de atalho11
Iniciando as mquinas virtuais12
Interfaces de rede13
Redes virtuais14
Configurando uma rede privada entre mquinas virtuais14
Acessando a rede do host15
Automatizando a configurao de redes virtuais15
Snapshots16
Gerenciando snapshots17
Roteiro de Atividades 119
Atividade 1.1 Gerenciando snapshots19
Atividade 1.2 Gerenciando a interface de rede19
Atividade 1.3 Convertendo mquinas virtuais20

2. Administrao de mquinas virtuais com KVM


Virtualizao no Linux21
Ferramentas para gerenciamento de mquinas virtuais21
QEMU-KVM22
Eucalyptus23
OpenNebula23
Nimbus24
oVirt24
Plataforma em nuvem Xen24
OpenQRM24
Virt-Manager24
Instalao do gerenciador grfico Virt-Manager 24
Exerccio de fixao 1 Instalando o pacote Virt-Manager25
Criando uma mquina virtual 25
Acessando a mquina virtual26
Configurando a interface de rede da mquina virtual26
Exerccio de fixao 2 Criando uma rede virtual27
Exerccio de fixao 3 Criando uma mquina virtual27
Exerccio de fixao 4 Importando uma mquina virtual27
Filtragem de pacotes28

iv

Hardware da mquina virtual28


Placa de vdeo29
Detalhes da mquina virtual30
Adicionando novo storage mquina virtual31
Migrao de mquinas virtuais32
Roteiro de Atividades 235
Atividade 2.1 Live Migration35
Atividade 2.2 Criando clones42

3. DNS e NFS
Introduo43
Domain Name Service (DNS)44
Por que utilizar DNS?44
Definies46
Domnio46
Zonas de autoridade47
Exerccio de fixao 1 DNS authoritative answer48
Registro de recursos48
Mapeamento direto e reverso51
Cliente e servidor DNS52
Servidor DNS52
Tipos de servidores DNS53
Servidores raiz DNS55
Estrutura do DNS no Linux55
Arquivo de configurao named.conf56
Arquivos de mapas da rede58
Exemplo de arquivo de mapa de rede60
Arquivo resolv.conf60
Exerccio de fixao 2 Servidor de DNS Cache61
DNS com IPv661
DNSSEC63
Implementao do DNSSEC66
Exerccio de fixao 3 DNSSec67
Domnios virtuais67
Testando o servidor DNS68

Network File System (NFS)68


Configurando um servidor NFS69
Exerccio de fixao 4 Instale o servidor NFS69
/etc/exports 70
/etc/hosts.allow e /etc/hosts.deny71
Iniciando os servios NFS72
Pr-requisitos 73
Iniciando o portmapper 73
Verificando a execuo do NFS73
Configurao de cliente NFS74
Montagem de sistemas de arquivos NFS em tempo de boot75
Otimizando o desempenho do NFS76
Tamanho de pacote e drivers de rede78
Overflow de pacotes fragmentados78
NFS sobre TCP79
NFS sncrono versus assncrono80
Segurana e NFS81
NFS e segurana: portmapper82
NFS para MS Windows82
Roteiro de Atividades 385
Atividade 3.1 Servidor de DNS Primrio85
Atividade 3.2 Servidor de DNS Secundrio85
Atividade 3.3 Exportando diretrio do servidor NFS85
Atividade 3.4 Configurao do Cliente NFS85
Atividade 3.5 Testando o funcionamento do servio NFS85

4. Servidor LDAP
Introduo87
LDAP87
Sem servio de diretrio 88
Com servio de diretrio88
Funcionamento do LDAP89
Organizao dos dados91
Exerccio de fixao 1 Estrutura de diretrio LDAP91
Tipos de dados e unidade bsica de informao91
Referncia e autenticao entre vrios servidores93

vi

Replicao94
Objetos e atributos LDAP95
Formato LDIF95
Classes LDAP96
Instalao do servidor LDAP96
Download do pacote97
Desempacotando o software97
Configurao do software98
Construindo o servidor98
Configurao do servidor LDAP99
Executando o servidor LDAP103
Criao e manuteno de base de dados104
Criando uma base de dados on-line104
Criando base de dados off-line105
Informaes e caractersticas adicionais106
Roteiro de Atividades 4107
Atividade 4.1 Instalao do servidor OpenLDAP107
Atividade 4.2 Usando o Migration Tools108
Atividade 4.3 Configurao do cliente Linux para uso do LDAP109
Atividade 4.4 Criao e teste de base de dados para ser adicionada
ao servidor OpenLDAP111
Atividade 4.5 Testando o funcionamento do LDAP112

5. DHCP, Telnet, FTP e SSH


Introduo113
DHCP114
Formato de uma mensagem DHCP115
Funcionamento do protocolo DHCP116
Edio de arquivos de configurao118
Base de dados119
Iniciando e parando o servidor121
Exerccio de fixao 1 Instalao do servidor DHCP122
Telnet122
Cliente Telnet122
Servidor Telnet123

vii

File Transfer Protocol (FTP)125


Funcionamento do FTP126
Tipos de servidor FTP 126
Estrutura de diretrios tpica 127
Problemas com firewall129
Secure Shell (SSH)129
OpenSSH 130
Configurao do servidor OpenSSH130
Comando ssh131
Estabelecendo conexo132
SCP132
SFTP133
Gerao de chaves133
Agente SSH134
Roteiro de Atividades 5135
Atividade 5.1 Configure o servidor DHCP135
Atividade 5.2 Configurao de um endereo IP fixo136
Atividade 5.3 Utilizao de redes compartilhadas136
Atividade 5.4 Servio Telnet137
Atividade 5.5 Servio FTP137
Atividade 5.6 Criao de uma conexo segura a um host remoto137
Atividade 5.7 Automatizar a criao de conexo segura com o servidor remoto por meio
do compartilhamento da chave pblica138
Atividade 5.8 Acesso de grupos a diretrio compartilhado no FTP138
Atividade 5.9 Transferncia de um arquivo de um host remoto para o host local e vice-versa138
Atividade 5.10 Criando uma conexo FTP segura com o comando SFTP138

6. Servidor web
Introduo139
Conceitos fundamentais139
Campos da URL140
Esquema de funcionamento142
Protocolo HTTP142
Tipos de pedidos143

viii

Servidor web proxy145


Domnio Virtual145
Secure Socket Layer (SSL)146
Servidores web147
Servidor web Apache147
Exerccio de fixao 1 Correlacione as colunas149
Roteiro de Atividades 6151
Atividade 6.1 Instalao do servidor web Apache151
Atividade 6.2 Configurao de servidores virtuais151
Atividade 6.3 Configurao de um servidor seguro151
Atividade 6.4 Usando .htaccess para definir permisso de acesso a um site 152
Atividade 6.5 Habilitando pginas pessoais de usurios152

7. Servidor de correio eletrnico (parte 1)


Introduo153
Correio eletrnico153
Protocolo SMTP155
Protocolo POP3157
Comandos POP3157
Protocolo IMAP159
Conexo e estados do IMAP160
Configuraes prvias do IMAP162
DNS163
Postfix165
Instalao do servidor Postfix166
Inicializao do servidor Postfix167
Configurao do servidor Postfix168
Roteiro de Atividades 7171
Atividade 7.1 Instalao e configurao do Postfix171
Atividade 7.2 Enviando e recebendo mensagens via Telnet174
Atividade 7.3 Enviando e recebendo mensagens175

ix

8. Servidor de correio eletrnico (parte 2)


Introduo 177
Mtodos de entrega177
mbox 178
maildir 178
Servidor para mltiplos domnios179
Domnios virtuais179
Controle de contedo181
Mail gateway182
Autenticao SMTP183
Servidor de e-mail corporativo185
Cyrus SASL186
Courier Maildrop 187
Courier Imap 187
Recomendaes de tuning188
Ajustes em consultas DNS188
Roteiro de Atividades 8193
Atividade 8.1 Configurao da modalidade de entrega maildir193
Atividade 8.2 Configurando servidores POP e IMAP193
Atividade 8.3 Configurando a autenticao POP e IMAP no LDAP194
Atividade 8.4 Utilizao de clientes POP e IMAP195

9. Servidor proxy Squid


Introduo197
Proxy198
Proxy Squid199
Instalao do Squid200
Configurao do Squid200
Listas de controle de acesso201
Configurao dos navegadores203
Proxy transparente204
Redirecionadores205

Roteiro de Atividades 9209


Atividade 9.1 Instalao e configurao do servidor proxy Squid209
Atividade 9.2 Configurao dos navegadores212
Atividade 9.3 Configurao de listas de controle de acesso212
Atividade 9.4 Configurao do SARG212
Atividade 9.5 Proxy transparente212

10. Servidor Samba


Introduo ao Samba213
Samba214
Samba e projetos relacionados215
Instalando o Samba216
Configurando o Samba218
Seo [homes]219
Compartilhamento de um disco Linux220
Como acessar o Windows do Linux221
Montagem de diretrios do Windows221
Configurao do Samba com SWAT222
Servidor primrio de domnio223
Configurando o PDC Samba223
Criao das contas de relao de confiana224
Criao manual de contas de relao de confiana224
Criao dinmica de contas de relao de confiana 225
Adio de clientes no domnio225
Roteiro de Atividades 10227
Atividade 10.1 Configurao do servidor Samba227
Atividade 10.2 Testando o funcionamento do Samba234
Atividade 10.3 Windows no domnio do Samba234
Atividade 10.4 Compartilhamentos234
Atividade 10.5 Excluindo usurios235
Atividade 10.6 Conhecendo o SWAT235

Bibliografia 237

xi

xii

Escola Superior de Redes


A Escola Superior de Redes (ESR) a unidade da Rede Nacional de Ensino e Pesquisa (RNP)
responsvel pela disseminao do conhecimento em Tecnologias da Informao e Comunicao (TIC). A ESR nasce com a proposta de ser a formadora e disseminadora de competncias
em TIC para o corpo tcnico-administrativo das universidades federais, escolas tcnicas e
unidades federais de pesquisa. Sua misso fundamental realizar a capacitao tcnica do
corpo funcional das organizaes usurias da RNP, para o exerccio de competncias aplicveis ao uso eficaz e eficiente das TIC.
A ESR oferece dezenas de cursos distribudos nas reas temticas: Administrao e Projeto
de Redes, Administrao de Sistemas, Segurana, Mdias de Suporte Colaborao Digital e
Governana de TI.
A ESR tambm participa de diversos projetos de interesse pblico, como a elaborao e
execuo de planos de capacitao para formao de multiplicadores para projetos educacionais como: formao no uso da conferncia web para a Universidade Aberta do Brasil
(UAB), formao do suporte tcnico de laboratrios do Proinfo e criao de um conjunto de
cartilhas sobre redes sem fio para o programa Um Computador por Aluno (UCA).

A metodologia da ESR
A filosofia pedaggica e a metodologia que orientam os cursos da ESR so baseadas na
aprendizagem como construo do conhecimento por meio da resoluo de problemas tpicos da realidade do profissional em formao. Os resultados obtidos nos cursos de natureza
terico-prtica so otimizados, pois o instrutor, auxiliado pelo material didtico, atua no
apenas como expositor de conceitos e informaes, mas principalmente como orientador do
aluno na execuo de atividades contextualizadas nas situaes do cotidiano profissional.
A aprendizagem entendida como a resposta do aluno ao desafio de situaes-problema
semelhantes s encontradas na prtica profissional, que so superadas por meio de anlise,
sntese, julgamento, pensamento crtico e construo de hipteses para a resoluo do problema, em abordagem orientada ao desenvolvimento de competncias.
Dessa forma, o instrutor tem participao ativa e dialgica como orientador do aluno para as
atividades em laboratrio. At mesmo a apresentao da teoria no incio da sesso de aprendizagem no considerada uma simples exposio de conceitos e informaes. O instrutor
busca incentivar a participao dos alunos continuamente.

xiii

As sesses de aprendizagem onde se do a apresentao dos contedos e a realizao das


atividades prticas tm formato presencial e essencialmente prtico, utilizando tcnicas de
estudo dirigido individual, trabalho em equipe e prticas orientadas para o contexto de atuao do futuro especialista que se pretende formar.
As sesses de aprendizagem desenvolvem-se em trs etapas, com predominncia de tempo
para as atividades prticas, conforme descrio a seguir:
Primeira etapa: apresentao da teoria e esclarecimento de dvidas (de 60 a 90 minutos).
O instrutor apresenta, de maneira sinttica, os conceitos tericos correspondentes ao tema
da sesso de aprendizagem, com auxlio de slides em formato PowerPoint. O instrutor
levanta questes sobre o contedo dos slides em vez de apenas apresent-los, convidando
a turma reflexo e participao. Isso evita que as apresentaes sejam montonas e que o
aluno se coloque em posio de passividade, o que reduziria a aprendizagem.
Segunda etapa: atividades prticas de aprendizagem (de 120 a 150 minutos).
Esta etapa a essncia dos cursos da ESR. A maioria das atividades dos cursos assncrona e
realizada em duplas de alunos, que acompanham o ritmo do roteiro de atividades proposto
no livro de apoio. Instrutor e monitor circulam entre as duplas para solucionar dvidas e
oferecer explicaes complementares.
Terceira etapa: discusso das atividades realizadas (30 minutos).
O instrutor comenta cada atividade, apresentando uma das solues possveis para resolv-la,
devendo ater-se quelas que geram maior dificuldade e polmica. Os alunos so convidados a
comentar as solues encontradas e o instrutor retoma tpicos que tenham gerado dvidas,
estimulando a participao dos alunos. O instrutor sempre estimula os alunos a encontrarem
solues alternativas s sugeridas por ele e pelos colegas e, caso existam, a coment-las.

Sobre o curso
O curso tem como objetivo ensinar a projetar, instalar, configurar e disponibilizar os principais
servios para internet em uma rede TCP/IP. Apresenta os conceitos associados a cada um dos
servios, alm da instalao e configurao do KVM como base para o ambiente de virtualizao, e autenticao nos servios com LDAP, com apoio intensivo de atividades prticas.

A quem se destina
Esse curso destinado formao de profissionais responsveis pela instalao, operao
e manuteno de plataforma computacional para conexo com a internet, gerentes de TI e
programadores que tenham os pr-requisitos necessrios.

Convenes utilizadas neste livro


As seguintes convenes tipogrficas so usadas neste livro:
Itlico
Indica nomes de arquivos e referncias bibliogrficas relacionadas ao longo do texto.

Largura constante
Indica comandos e suas opes, variveis e atributos, contedo de arquivos e resultado da sada
de comandos. Comandos que sero digitados pelo usurio so grifados em negrito e possuem
o prefixo do ambiente em uso (no Linux normalmente # ou $, enquanto no Windows C:\).

xiv

Contedo de slide
Indica o contedo dos slides referentes ao curso apresentados em sala de aula.

Smbolo
Indica referncia complementar disponvel em site ou pgina na internet.

Smbolo
Indica um documento como referncia complementar.

Smbolo
Indica um vdeo como referncia complementar.

Smbolo
Indica um arquivo de adio como referncia complementar.

Smbolo
Indica um aviso ou precauo a ser considerada.

Smbolo
Indica questionamentos que estimulam a reflexo ou apresenta contedo de apoio ao
entendimento do tema em questo.

Smbolo
Indica notas e informaes complementares como dicas, sugestes de leitura adicional ou
mesmo uma observao.

Permisses de uso
Todos os direitos reservados RNP.
Agradecemos sempre citar esta fonte quando incluir parte deste livro em outra obra.
Exemplo de citao: LOBO, Eduardo Augusto Oliveira; LO, Wagner Vieira. Administrao de
Sistemas Linux: Servios para Internet. Rio de Janeiro: Escola Superior de Redes, RNP, 2013.

Comentrios e perguntas
Para enviar comentrios e perguntas sobre esta publicao:
Escola Superior de Redes RNP
Endereo: Av. Lauro Mller 116 sala 1103 Botafogo
Rio de Janeiro RJ 22290-906
E-mail: info@esr.rnp.br

xv

Sobre os autores
Eduardo Lobo Analista de Informtica no Ministrio Pblico do Trabalho (MPT) e Professor dos Cursos de TI da Universidade Catlica de Braslia. Engenheiro Mecnico graduado pela Universidade Federal de Uberlndia e Mestre em Cincia da Computao pela
Universidade Federal de Santa Catarina, Florianpolis, 2001. Atuou em grandes empresas
no perodo de 1997-2000, como Analista de TI para o governo brasileiro em 2001, e como
Coordenador dos Cursos de Ps-Graduao Lato Sensu em Redes de Computadores da
Universidade Catlica de 2003 a 2005, e de Tecnologia em Segurana da Informao (TSI)
de 2007 a 2009. Participou do Projeto de Pesquisa CESMIC/UCB de 2003 a 2008. Atualmente administra o datacenter e a rede de dados/voz do MPT. reas de interesse incluem:
redes de computadores, storage e sistemas baseados em software livre.
Wagner Vieira Lo tem 25 anos de experincia na rea de TI, atuando como Analista de
Suporte e em Computao de Alto Desempenho, com foco em sistemas operacionais Unix/
Linux. Possui graduao em Matemtica pela Faculdade de Humanidades Pedro II, com
Ps-Graduao em Gesto da Inovao pelo LNCC/UCP. Atualmenteocupa o cargo deCoordenador de Tecnologia da Informao do Laboratrio Nacional de Computao Cientfica e
de Coordenador Administrativo do Ponto de Presena da RNP no Rio de Janeiro. Professor
do Instituto Superior de Tecnologia da Informao de Petrpolis, IST e da Escola Superior
de Redes da RNP, nas reas de Segurana da Informao e Sistemas Operacionais.
Bruno Alves Fagundes tecnlogo em Tecnologia da Informao e da Computao pelo
Instituto Superior de Tecnologia (2007) e especialista em Segurana de Redes pela Universidade Estcio de S (2011). Tem experincia em administrao de servidores Linux, gerenciamento de usurio, implementao e gerncia de servios de rede, clusters, segurana de
redes, shell script, PHP, Perl. Atualmente colaborador do LNCC, onde trabalha na administrao dos servidores e clusters do Laboratrio de Bioinformtica (LABINFO), provendo
infraestrutura para a realizao de pesquisas e processamento massivo de dados.
Francisco Marcelo M. Lima certificado Project Management Professional (PMP) e
Modulo Certified Security Officer (MCSO), Mestre em Engenharia Eltrica pela Universidade de Braslia (2009), Mestre em Liderana pela Universidade de Santo Amaro (2007) e
ps-graduado em Segurana de Redes de Computadores pela Universidade Catlica de
Braslia (2003). Atualmente exerce as funes de Coordenador dos Cursos de Redes de
Computadores e Segurana da Informao do IESB, e Analista em TI do MPOG cedido para
a Controladoria-Geral da Unio/PR. Atua tambm como instrutor/revisor dos cursos de
segurana e redes na ESR e instrutor/revisor dos cursos de planejamento estratgico (PDTI)
e gesto de contratos de TI (GCTI) na ENAP. Possui mais de 15 anos de experincia na rea
de Cincia da Computao, com nfase em Segurana da Informao, Redes e Construo
de Software, tendo exercido funes como: Coordenador Geral de TI do INCRA (DAS 4);
Coordenador do Curso de Segurana da Informao da Faculdade Rogacionista; Coordenador do Curso de Processamento de Dados e Segurana da Informao da Faculdade AD1,
Analista em Segurana da empresa Mdulo Security Solutions.
Sergio Ricardo Alves de Souza possui mais de 35 anos de experincia na rea de Administrao e Suporte de Sistemas. Trabalhou em empresas como: Burroughs (UNISYS), ARSA
(Infraero), Cobra Computadores, LNCC e outras. Consultoria e treinamento em empresas
como: Fiocruz, Jardim Botnico, Museu Goeldi, Cefet-MG, IBM Brasil. Participou do desenvolvimento e implantao de cursos profissionalizantes em Informtica em Petrpolis FAETC. Participou do projeto de criao do Instituto Superior de Tecnologia em Cincia da
Computao de Petrpolis. Possui Notrio Saber em Informtica pelo LNCC.

xvi

1
Entender o que virtualizao e o funcionamento de mquinas virtuais, os principais
tipos de hipervisores e uma alternativa open source de virtualizao, o KVM.

conceitos

Arquitetura e funcionamento do KVM, mtodos operacionais como criao de discos,


snapshots, converso do tipo de imagem e criao de mquinas virtuais.

Introduo virtualizao
11 Surgiu nos mainframes da IBM e ficou um pouco esquecida com o crescimento dos

computadores de menor porte.


11 Arquitetura x86 apresentava dificuldades na implementao da virtualizao.
11 VMware surge com um conceito eficiente de virtualizao para arquitetura x86.
11 AMD e Intel melhoram o suporte virtualizao de seus processadores, criando as
tecnologias AMD-V e Intel VT.
Apesar de muito badalada, a virtualizao no uma novidade no mundo da Tecnologia da
Informao. A ideia surgiu com a publicao de um artigo em 1959, escrito por Christopher
Strachey, que tratava do uso de multiprogramao em tempo compartilhado, que fazia com
que as mquinas utilizassem melhor os seus recursos. Esse artigo deu origem ao padro
Compatible Time Sharing System (CTSS), desenvolvido pelo MIT, e era usado como referncia na fabricao de mquinas de grande porte.
A IBM surgiu com as primeiras formas de virtualizao quando introduziu em seus mainframes
o conceito de multiprocessamento e memria virtual, o que permitia que vrias CPUS trabalhassem como uma s e ainda possibilitava uma abstrao da memria real para a memria
virtual. Em sua linha dos mainframes 370 e sucessores, a IBM oferecia uma mquina virtual
portada para vrias de suas plataformas.
Devido ao elevado preo dos mainframes e a popularizao dos computadores de arquitetura x86 (dcadas de 80 e 90), muitas empresas passaram a comprar vrios computadores
de menor porte para fazer o trabalho dos mainframes.

Captulo 1 - Kernel-based Virtual Machine KVM

objetivos

Kernel-based Virtual Machine


KVM

Como as mquinas de arquitetura x86 no eram projetadas para oferecer servio de virtualizao eficiente e sempre que se propunham a isso, acabavam superdimensionando os servidores, o que remetia poca dos mainframes. Foi ento que a VMware, em 1999, surgiu
com o conceito de virtualizao mais eficiente para a plataforma x86 e comeou a mudar o
mercado. Posteriormente, em 2005, a AMD e a Intel melhoraram o suporte virtualizao
em seus processadores, criando as tecnologias AMD-V e Intel VT.

Mquinas virtuais
Uma mquina virtual pode ser definida como uma camada de abstrao entre a camada

de hardware e a camada de software. Essa camada de abstrao permite o isolamento


entre as outras camadas.
11 Mquinas Virtuais de Processo.
11 Monitores de Mquinas Virtuais (VMM) ou hipervisores.
22 Paravirtualizao.
22 Virtualizao total.
A mquina virtual pode ser definida como uma camada de abstrao entre a camada de
hardware e a camada de software (Figura 1.1). Essa camada de abstrao permite o isolamento entre as outras camadas.

Camada de Software

Camada de Abstrao
(Virtualizao)
Figura 1.1
Camada de
abstrao.

Camada de Hardware

Mquinas virtuais de processo


Uma mquina virtual de processo nada mais do que uma aplicao que executa sobre

um Sistema Operacional A e emula o comportamento de um Sistema Operacional B.


Administrao de Sistemas Linux: Servios para Internet

Assim, aplicaes desenvolvidas para um Sistema Operacional B podem executar sobre

um sistema A (Figura 1.2).


Nesse modelo, o desempenho das mquinas virtuais sacrificado, j que existe uma traduo de um sistema para outro, uma vez que as mquinas executam em modo de usurio e
no tm acesso direto a alguns recursos do sistema.

Processo
do sistema B
Sistema Operacional B
Processo
Mquina virtual

do sistema A

Sistema Operacional A
Figura 1.2
Mquina virtual
de processo.

Hardware

Monitores de mquinas virtuais


Implementados como uma camada de software entre o hardware e o Sistema Operacional,

os monitores de mquinas virtuais, tambm chamados de hipervisores (hypervisors),


surgem para resolver as desvantagens das mquinas virtuais de processo. Como
possuem acesso direto ao hardware, conseguem explorar os recursos fsicos de E/S de
maneira mais eficiente. O desempenho tende a ser melhor, pois no executam em modo
usurio (Figura 1.3).

Processo
do sistema C
Sistema Operacional C
Monitor de Mquina
Virtual (hipervisor)
Hardware

Na arquitetura x86, os privilgios de acesso ao hardware e s operaes de sistema so


divididos em quatro nveis (nvel 0, 1, 2 e 3), com o objetivo de oferecer mais segurana
para o Sistema Operacional. Esses nveis so chamados de anis ou Rings e esto organizados de forma hierrquica: o nvel 0 o de maior privilgio e o 3, o nvel com mais restries. As aplicaes dos usurios rodam no nvel 3, enquanto o Sistema Operacional roda
no nvel 0 com o seu kernel controlando o acesso ao hardware.
Apesar da segurana oferecida pela arquitetura x86, essa implementao apresenta desafios para os sistemas virtualizados, j que a camada de virtualizao precisa ter acesso aos
recursos do hardware no nvel 0. Existem duas tcnicas utilizadas nos hipervisores para
permitir esse acesso: virtualizao total e paravirtualizao.

Virtualizao total
11 a tcnica que permite executar qualquer sistema sem a necessidade de alterao.
11 Nessa tcnica, todo o hardware da mquina simulado, assim como o conjunto de
instrues do processador.

Captulo 1 - Kernel-based Virtual Machine KVM

Figura 1.3
Monitores de
Mquinas Virtuais.

11 Geralmente, os dispositivos disponibilizados para as mquinas virtuais so padro de

mercado, o que torna muito mais simples a instalao e configurao dos sistemas guest.
Como podemos observar na Figura 1.4, o guest est rodando em um nvel superior ao nvel
esperado (Ring0). Isso porque o hipervisor fornece todo o ambiente para a mquina virtual
acreditar que est rodando diretamente no nvel mais privilegiado.

Aplicaes
de usurio

Anel 3

Execuo
direta das
solicitaes
de usurios

Anel 2

Anel 1

SO
convidado

Anel 0

VMM

Traduo
binria das
solicitaes
do SO
Figura 1.4
Virtualizao total.

Hardware do servidor

Paravirtualizao
11 A paravirtualizao apresenta uma Application Programming Interface (API) muito

semelhante ao hardware real.


11 Para as mquinas virtuais, ela responsvel pela comunicao entre o sistema guest
e o hipervisor.
11 Para isso foram criadas as hypercalls, que so system calls otimizadas para o hipervisor.
Dessa forma, fornecida uma interface de comunicao para o gerenciamento de memria,
controle de interrupes e operaes crticas do kernel para as mquinas virtuais. So
necessrias mudanas no Sistema Operacional do host para usar utilizar as hypercalls.

Administrao de Sistemas Linux: Servios para Internet

Anel 3

Aplicaes
de usurio
Execuo
direta das
solicitaes
de usurios

Anel 2

Anel 1

Anel 0

SO convidado
paravirtualizado
Camada de virtualizao

Hardware do servidor

Hypercalls
(chamadas ao
hipervisor) para
a camada de
virtualizao repor
as instrues no
virtualizveis do SO

Figura 1.5
Paravirtualizao.

Vantagens e desvantagens da virtualizao


Vantagens:

11 Gerenciamento Centralizado.
11 Facilidade de manuteno (clonagem e snapshot).
11 Melhor aproveitamento do espao fsico.
11 Melhor aproveitamento do hardware.
11 Reduz os ndices de emisso de CO2.
11 Aumento da disponibilidade (live migration).
11 Paradigma de um servidor por servio.
O principal apelo para aderir virtualizao a economia oferecida pela soluo: estima-se que
a utilizao dos servidores fique entre 2% e 15% do seu potencial mximo, mas existem outros
aspectos interessantes que podem pesar na hora de optar pela infraestrutura de virtualizao.
Existem alguns cuidados que devem ser tomados para evitar que a soluo de virtualizao
se torne um problema. Sero necessrias medidas que vo desde a redundncia dos equipamentos at a escolha do software ideal para gerenciar as mquinas virtuais.
Desvantagens:

11 Custos iniciais elevados de implementao.


11 Necessidade de mo de obra qualificada.
11 Muitos servios em um mesmo hardware.
11 Nmero desnecessrio de mquinas virtuais.
11 Desempenho comprometido.
No qualquer aplicao que deve ser virtualizada. Aplicaes com muito I/O ou que
consomem muita largura banda no devem ser virtualizadas, pois podem acabar comprometendo o desempenho das outras mquinas virtuais. Esses problemas podem ser sanados
com a aquisio de mais hardware, CPU e placa de rede, mantendo o resto da estrutura.

Solues de virtualizao
Principais solues de virtualizao no mercado:

11 Hyper-V.
11 Xen.
11 KVM.

VMware ESX
Possui poderosa infraestrutura e oferece muitos recursos avanados para gerenciamento e
administrao de um ambiente virtual, como VMotion (migrao de mquinas virtuais), recursos
de alta disponibilidade, tolerncia a falhas, Storage Motion, entre outros. Mesmo sendo considerada uma soluo de custo elevado, o principal software usado por grandes empresas.

Hyper-V
a soluo oferecida pela Microsoft para sistemas de virtualizao. utilizado principalmente em empresas de pequeno e mdio porte e possui recursos como Live Migration,

Captulo 1 - Kernel-based Virtual Machine KVM

11 VMware ESX.

Quick Migration e Dinamic Memory. oferecido de forma gratuita, entretanto necessrio


ter a licena do Windows Server para us-lo.

Xen
Baseado em Linux, menos popular que o Hyper-V e o VMware ESX, mas uma soluo
muito estvel. Fornece interface de administrao por linha de comando (CLI), alm de uma
alternativa grfica (GUI): XenClient essa a melhor indicao para quem j utiliza produtos
da Citrix (empresa que atua na rea de virtualizao, colaborao e cloud).

KVM
O KVM aparece como alternativa completa para sistemas de virtualizao baseados em
Linux. Assim como o Xen, fornece administrao por linha de comando e por interface
grfica, dispe de recursos de migrao online e offline, possui o sistema de otimizao
do gerenciamento de memria Kernel Samepage Merging (KSM), utiliza o protocolo QEMU
Monitor Protocol (QMP); que um protocolo Java Script Object Notation (JSON-based),
open source e permite adicionar CPUs e dispositivos PCI em tempo real.

O KVM: origem

Cloud
Ou cloud computing
(computao em
nuvem). O armazenamento de dados
feito em servios que
podero ser acessados
de qualquer lugar do
mundo, a qualquer
hora, no havendo
necessidade de instalao de programas ou
de armazenar dados.

O Kernel-based Virtual Machine (KVM) foi inicialmente desenvolvido pela empresa Qumranet
entre 2006 e 2007 e teve seu crescimento mais acentuado, em 2008, quando a empresa foi
adquirida pela RedHat, que a partir de ento incorporou o KVM s suas distribuies.
O KVM uma soluo completa de virtualizao para Linux com arquitetura x86 de 64 bits, e
explora as tecnologias de virtualizao Intel VT e AMD-V dos processadores mais recentes.
distribudo como um componente integrado do kernel a partir da verso 2.6.20 e transforma o Linux em um hipervisor estvel e de alto desempenho.

Arquitetura
Ao carregar o mdulo do KVM no Linux, o kernel exporta um dispositivo chamado /dev/kvm,
que fornece ao sistema um novo modo de execuo, alm dos modos j existentes kernel e
user, chamado de guest mode (Figura 9.6). Todos os processos no espao de usurio acessam
de forma compartilhada os dispositivos do /dev, entretanto, o dispositivo /dev/kvm permite
que uma mquina virtual tenha seu espao de endereo independente do kernel ou de qual Administrao de Sistemas Linux: Servios para Internet

quer outra mquina virtual, permitindo o seu isolamento, ou seja, cada processo que acessa o

dispositivo /dev/kvm recebe um mapa de endereos diferentes.

Normal
User
Process

Normal
User
Process

Guest
mode

Guest
mode

Qemu I/O

Qemu I/O

Linux Kernel

KVM
Driver

A estrutura do KVM divida em dois componentes bsicos:


11 KVM driver: um conjunto de mdulos do kernel que fornecem os drivers especficos
para o tipo de processador e a infraestrutura necessria para a virtualizao, atuando
como interface para o user space;

Figura 1.6
Arquitetura KVM.

11 User space: roda uma verso modificada do qemu, que gerencia E/S e funciona como um
espao virtual para os sistemas hspedes, alm de fornecer mecanismos de controle e
gerenciamento das mquinas virtuais;
As mquinas virtuais so tratadas como processos do Sistema Operacional, e por isso possvel usar os comandos do sistema para manipul-las. Junto com cada mquina, instanciado
um processo do qemu, levemente modificado, que intercepta qualquer solicitao de I/O feita
pela mquina e a emula. Alm das solicitaes de I/O, o qemu responsvel por emular os
dispositivos, como adaptadores grficos, dispositivos de rede, discos, entre outros.
11 i440FX PCI bridge e PIIX3 ISA bridge;
11 Cirrus CLGD 5446 PCI VGA;
11 Mouse e teclado PS/2;
11 Drive de disquete;
11 Adaptadores de rede PCI e ISA;
11 Portas seriais;
11 Placa de som Creative Sound Blaster 16;
11 PCI UHCI USB controller e Hub USB virtual.
A utilizao do KVM, junto com o qemu, permite que as mquinas virtuais rodem com baixo
overhead, tornando-o uma alternativa competitiva s opes do mercado.

Gerenciamento de memria do Linux


O Linux baseado no conceito de Memria Virtual e utiliza tcnicas de paginao de
memria, ou seja, quando um processo est rodando na mquina, no h alocao de toda
a memria de uma nica vez. Essa alocao feita de acordo com a necessidade, tornando a
utilizao da memria mais eficiente.
Quando a memria fsica totalmente utilizada ou um processo fica um determinado tempo
sem ser utilizado, o Linux move a memria de um processo para o swap. Como o swap
feito em disco, torna-se significativamente mais lento que a RAM.

Exerccio de nivelamento 1 e
Gerenciamento de memria do Linux

1. Memria fsica

FF Pode alocar grupos de pginas contguas.

2. Memria virtual

FF Responsvel pelo uso de endereamento de cada processo.


FF Gerencia a transferncia de pginas entre o disco e a memria.
FF Responsvel por alocar e desalocar pginas de memria.

Gerenciamento de memria no KVM


O KVM usa todos os benefcios do gerenciamento de memria do Linux. Como as mquinas
virtuais so processos para o host, o KVM pode alocar mais memria para os guests do que
realmente existe no host. No existe um bloco de memria fsica dedicado, os guests podem

Captulo 1 - Kernel-based Virtual Machine KVM

Relacione as colunas:

ser manipulados com comandos do Sistema Operacional. Utilizando o swap, possvel diminuir a quantidade de memria real necessria para os guests.
7

Swapping
O host escolhe algumas pginas de memria do guest e envia para o disco. Se o guest
necessitar daquela informao, o host trs de volta as pginas para a memria principal.
o mtodo mais confivel do ponto de vista do host, entretanto, para o guest pode no
ser a melhor escolha, porque o host no tem controle sobre os processos que esto em
execuo dentro do guest.

Balo de memria
Mais eficiente do que o swapping do ponto de vista do guest, o balo de memria funciona de

l
Quando o total de
memria usada pelos
guests maior do que
a memria fsica
disponvel, temos um
overcommit. Existem
alguns mecanismos
especficos para tratar
o overcommit em
sistemas de virtualizao.

forma cooperada: o guest se comunica com o host e informa quais pginas de memria podem
ser liberadas. Pelo fato de a escolha ser feita pelo guest, no possui tanta confiabilidade.
possvel obter informaes sobre esse mecanismo atravs do console do qemu. Exemplo:

(qemu) info ballon


ballon: actual 1024

Kernel Same-page Merging (KSM)


Realiza uma unificao das pginas de memria que so iguais. Dessa forma, as pginas
duplicadas so removidas e seu espao, liberado. Esse sistema oferece mais vantagem
quando existirem muitas mquinas virtuais homogneas.
Para melhorar o processo de gerenciamento de memria, foi desenvolvido um daemon
chamado ksmtuned, que gerencia dinamicamente os ajustes de memria do KSM, tomando
como base a quantidade de memria livre disponvel.

Live migration
Consistem em mover um guest de um host para outro. Dessa forma, libera a memria que
estava sendo utilizada.
O KVM usa todas as tcnicas para conseguir os melhores resultados no gerenciamento de
memria. Preferencialmente so utilizados os mtodos de balo de memria e KSM, em
seguida o live migration e, em ltimo caso, o swap.

Administrao de Sistemas Linux: Servios para Internet

Sistemas convidados suportados

O KVM est em constante aperfeioamento e desenvolvimento. A lista dos Sistemas Operacionais convidados suportados est disponvel na web.

Pr-requisitos do sistema
Conforme mencionado anteriormente, para que o KVM funcione, necessrio que voc
esteja utilizando um processador com suporte tecnologia de virtualizao AMD-V ou Intel
VT, verso do kernel igual ou superior a 2.6.20 e arquitetura de 64 bits.

w
Acesse a lista atualizada em
http://linux-kvm.org

Para verificar se o seu sistema tem suporte ao KVM, realize os seguintes passos:
1. Verificar compatibilidade do processador:

# egrep --color (vmx|svm) /proc/cpuinfo


flags

: fpuvme de psetscmsrpaemce cx8

apicsepmtrrpgemcacmovpat pse36 clflushdtsacpimmxfxsrsse sse2


sshttmpbesyscallnxrdtscplmconstant_tscarch_perfmonpebsbtsrep_
goodxtopologynonstop_tscaperfmperfpnipclmulqdq dtes64 monitor
ds_cplvmx est tm2 ssse3 cx16 xtprpdcm sse4_1 sse4_2 x2apic
popcntaesxsaveavxlahf_lm ida arattpr_shadowvnmiflexpriorityeptvpid
2. Verso do Kernel e arquitetura:

# uname a
Linux debian 2.6.32-5-amd64 #1 SMP Sun May 6 04:00:17 UTC 2012
x86_64 GNU/Linux

Exerccio de fixao 1 e
Pr-requisitos do hardware
Verifique se o Sistema Operacional tem suporte para as instrues de virtualizao dos
processadores AMD e Intel.
Verifique a verso do kernel e a arquitetura.

Instalao
11 Debian/Ubuntu:

# apt-get install kvm qemu-kvm qemu-utils


11 CentOS/Red Hat:

# yum install kvm kmod-kvm qemu


11 SUSE/OpenSuse:

# yast2 -i kvm qemu

Instale o KVM atravs do repositrio do Debian.

Criando imagens
Conforme j mencionamos, o KVM utiliza o qemu para realizar as tarefas de emulao da
mquina virtual e criao das imagens dos discos. O comando utilizado para criar imagens
de discos o qemu-img, que est disponvel no pacote qemu-kvm (para Debian).
Um recurso muito interessante do qemu-img que, ao criarmos um arquivo de 10Gb, o
comando cria um arquivo vazio, ou seja, quando executamos o comando para criar um
arquivo de 10Gb, na verdade criado um arquivo de aproximadamente 140Kb, que vai
aumentando de tamanho conforme vamos gravando as informaes dentro dele. Isso se
torna um recurso muito interessante quando no dispomos de muito espao em disco no
momento em que estamos criando as mquinas. possvel criar um disco que, no futuro,

Captulo 1 - Kernel-based Virtual Machine KVM

Exerccio de fixao 2 e
Instalao do KVM

ocupar espao maior do que o espao atualmente disponvel.


9

Tambm possvel criar um arquivo de disco com o comando dd. No exemplo a seguir criaremos um arquivo com 10Gb.

# dd if=/dev/zero of=disk.imgbs=10G count=5


Quando utilizamos o comando dd para criar os discos, eles j possuem o tamanho total,
enquanto que o arquivo criado com o comando qemu-img vai sendo ocupado conforme
vamos utilizando o espao disponvel.
Formatos de imagens suportados:
11 raw: o formato padro, facilmente exportado para outros emuladores.
11 cloop: Linux Compressed Loop images. til apenas para imagens de CD-ROM compactadas.
11 cow: copy-on-write. Existe apenas por razes histricas, no est disponvel para Windows.
11 qcow: antigo formato do qemu, atualmente substitudo pelo formato qcow2.
11 qcow2: formato atual do qemu, inclui suporte para mltiplos snapshots, encriptao AES
e compresso utilizando a biblioteca zlib.
11 vmdk: formato de imagem compatvel com VMware 3 & 4, ou 6.
11 vdi: formato de imagem compatvel com VirtualBox 1.1.
Criando imagem no formato qcow2 com o nome de winxp.img, com tamanho mximo de 5Gb:

# qemu-img create f qcow2 winxp.img 5G


Criando imagem compatvel com o VirtualBox, com o tamanho mximo de 10Gb:

# qemu-img create f vdi win7.vdi 10G


O comando qemu-img permite realizar a converso de arquivos de imagem em outros formatos. possvel converter uma imagem no formato do VMware para o formato do KVM.

# qemu-imgconvert f vmdkdebian.vmdk O qcow2 debian.img


Mais opes de converso podem ser encontradas acessando a manpage do comando:

# manqemu-img

Administrao de Sistemas Linux: Servios para Internet

Exerccio de fixao 3 e
Criando mquina virtual Linux

10

1. No diretrio /kvm/maquinas_virtuais, crie uma imagem de disco no formato qcow2 com

o nome linux.img e tamanho mximo de 20Gb.


2. Inicie a mquina virtual informando o arquivo ISO de instalao do Linux, disponvel

para o curso.
3. Inicie a instalao do Sistema Operacional na mquina virtual.

Utilizao
possvel criar e configurar mquinas virtuais somente pela linha de comando. No KVM
possvel modificar as configuraes das mquinas apenas trocando alguns atributos. O KVM
nos permite determinar a quantidade de memria, modelo das CPUs, drives de disquete,
discos rgidos, unidade de CD-ROM, USB, unidades de disco SD, entre outros.
Os parmetros bsicos para utilizar o KVM so:
11 -m megas: determina a quantidade de memria que ser utilizada pela mquina virtual.
Por padro, o valor expresso em Megabytes, mas possvel utilizar o sufixo G para
informar a quantidade em Gigabytes. Se esse parmetro for omitido, ser reservado
128 MB para a mquina virtual;
11 -hd[a,b,c,d] arquivo: especifica qual ser o arquivo ou dispositivo que ser carregado como
unidade de disco da mquina virtual. possvel informar at quatro unidades de disco.
11 -cdrom arquivo: especifica qual ser o arquivo ou dispositivo que ser montado como
unidade de CD-ROM na mquina virtual. No permitido utilizar -hdc e -cdrom ao
mesmo tempo.
11 -drive option[,options]: define um novo drive, similar s opes -hd[a,b,c,d] e cdrom.
Principais opes do comando:
22 file=filename: define o arquivo de imagem que ser utilizado.
22 if=interface: especifica o tipo de interface do disco: ide, scsi, sd, floppy, virtio etc.
22 bus=bus,int=int: especifica onde o dispositivo est conectado no host.
22 snapshot=on|off: ativa ou desativa o snapshot para a imagem.
11 -boot [order=drives][,onde=drives][,menu=on|off]: informa a ordem do boot. A ordem
padro para sistemas de arquitetura x86 : a, b (disquetes 1 e 2), c (primeira unidade de
disco), d (primeiro CD-ROM) e n (boot pela interface de rede).
11 -g WxH[xDEPTH]: modifica a resoluo padro que a mquina virtual iniciar. O padro
800x600x15.
11 -usb: ativa o suporte para dispositivos USB.
11 -devicedriver[,option[,...]]: adiciona um dispositivo na mquina virtual. As opes
variam de acordo com o drive informado. Para listar os tipos de devices drives suportados pelo KVM, execute o comando # kvm -device ?

Teclas de atalho
11 [Ctrl] + [Alt]: libera o cursor do mouse e o teclado.
11 [Ctrl] + [Alt] + [u]: retorna para a resoluo padro.
11 [Ctrl] +[Alt] + [f]: modo fullscreen.
11 [Ctrl] + [Alt] + [1]: mostra a sada de vdeo da mquina virtual.
11 [Ctrl] + [Alt] + [2]: muda para o console de comando do KVM, o monitor.
11 [Ctrl] + [Alt] + [3]: mostra a sada da porta serial.

Captulo 1 - Kernel-based Virtual Machine KVM

A relao completa das opes do comando est no manual do KVM (man kvm).

11

Iniciando as mquinas virtuais


Aps a criao da imagem do disco, devemos iniciar nossa mquina virtual. Para isso,
devemos utilizar o comando KVM:

# kvm -m 256 hda winxp.img


O parmetro m informa a quantidade de memria que ser alocada para a mquina virtual
(em MB), no nosso exemplo, alocamos 256MB. Como nossa imagem est vazia, devemos instalar um Sistema Operacional. Para isso, podemos informar que a mquina acessar o drive
de CD-ROM da mquina hospedeira. O parmetro -cdrom informa para a mquina virtual
qual ser o dispositivo ou imagem que ser usado como CD-ROM:

# kvm cdrom /dev/cdrom -m 256 hda winxp.img


# kvm cdrom /home/aluno/windowsXP.iso -m 256 hda winxp.img
Iniciando a mquina virtual com boot pelo CD-ROM:

# kvm cdrom /dev/cdrom -m 256 hda winxp.img boot d


Para iniciar a mquina virtual com um dispositivo USB, primeiro devemos identific-lo na
mquina hospedeira. O comando lsusb informa o endereo fsico do dispositivo.

# lsusb
[...]
Bus 002 Device 006: ID 0930:6544 Toshiba Corp. Kingston
DataTraveler2.0 ...
[...]
Agora usamos o parmetro -usb para informar onde est o dispositivo.

# kvm cdrom /dev/cdrom -m 256 hda winxp.img usb device usbhost,hostbus=2,hostaddr=6


Caso apaream mensagens de erro de permisso no terminal quando a mquina virtual
for iniciada, ser necessrio dar permisso para o usurio que est executando a mquina

Administrao de Sistemas Linux: Servios para Internet

escrever no dispositivo USB. No exemplo a seguir optamos por dar permisso para outros

12

usurios escreverem no dispositivo:

# chmod o+w /dev/bus/usb/002/006


Como todos os parmetros para iniciar a mquina virtual devem ser passados pela linha de
comando, uma boa prtica criar um arquivo Shell com esses parmetros.
Vamos criar um script para iniciar uma mquina Windows, com 512Mb de memria RAM, dois
discos rgidos, boot pela unidade C e com acesso ao drive de CD-ROM da mquina hospedeira.

# vi vmWindows.sh
#!/bin/bash
kvm cdrom /dev/cdrom m 512 hda \ /home/aluno/maquinas_virtuais/
windows.img -hdb \ /home/aluno/maquinas_virtuais/disco2.img -boot c

Interfaces de rede
O KVM cria uma rede virtual dentro do processo que contm a mquina virtual. Essa rede
composta por um servidor DHCP, um servidor DNS e um gateway. Por padro, a interface
eth0 vai funcionar atrs de um NAT, e o processo do KVM vai tunelar todo o trfego de rede
em espao de usurio. uma soluo muito prtica e funciona muito bem para solues
simples, entretanto, o desempenho fica limitado. Para solues mais complexas, onde queremos permitir o acesso externo a uma mquina virtual, necessrio mapear uma interface
TAP no host com uma interface no KVM.
A configurao de rede no KVM e feita pelo parmetro -net, as principais:
11 -net user[,option]: o modo default do KVM, no precisa de privilgios de administrador e configura a interface em NAT para acesso a internet. Possui vrias opes de
parmetro, onde possvel especificar o endereo MAC da interface, servidor de DNS,
servidor Wins, servidor DHCP, entre outros;
11 -net nic[,options]: cria uma nova interface de rede e conecta na VLAN n (por padro n=0).
possvel definir qual o modelo da interface (model=), endereo MAC, endereo IP, entre
outros. Para listar os modelos de interface disponveis, execute o comando
# kvm -netnic,model=?
11 -net tap[,options]: esse modo permite que o qemu crie uma bridge ligando a interface da
mquina virtual interface tap do host. Dessa forma, a mquina virtual ser acessvel
pela rede externa.
11 -net none: desativa as interfaces de rede na mquina virtual. Somente a interface de
loopback ativada.
Quando omitimos o parmetro -net, o KVM utiliza o modo user como padro.
Antes de especificar qual ser o driver utilizado pela sua interface de rede virtual, recomendado verificar quais os dispositivos disponveis. O comando # kvm -netnic,model=? listar
os drivers de rede suportados pelo KVM.

$ kvm -net nic,model=?


qemu: Supported NIC models: ne2k_pci,i82551,i82557b,i82559er,rtl8139,
e1000,pcnet,virtio
Podemos ainda definir qual ser o endereo MAC da interface de rede utilizando a opo
52:54:00:12:34:56.

# kvm -m 512 -hdalinux.img -net nic,model=rtl8139,macad


dr=52:54:00:12:34:56 -net user
Para adicionar novas interfaces de rede, basta incluir mais parmetros net no comando de
execuo da mquina virtual. Exemplo de uma mquina virtual com duas interfaces de rede:

# kvm net nic,model=rtl8139 net nic,model=rtl8139 m 512 hda


linux.img
Quando iniciamos uma mquina virtual, ela no est acessvel por nenhuma outra mquina
da rede, inclusive o prprio host. Como alternativa, podemos criar um redirecionamento de
porta tcp para permitir conexes SSH entre o host e o guest.

Captulo 1 - Kernel-based Virtual Machine KVM

macaddr. No exemplo a seguir, iniciaremos a mquina virtual com o endereo MAC

# kvm -m 512 -hdalinux.img -net nic -net user,hostfwd=tcp::5555-:22


13

Ao iniciarmos a mquina virtual com a opo hostfwd=tcp::5555-:22, criamos um redirecionamento da porta TCP 5555 do host para a porta 22 do guest. Com isso, conseguimos acessar
o guest com o comando ssh.

No host execute:
# ssh p 5555 aluno@localhost

Redes virtuais
11 Quando uma mquina virtual iniciada no KVM, ela fica isolada, ou seja, sem acesso

ao host ou a qualquer outra mquina da rede.


11 Para permitir a comunicao entre a mquina virtual e os outros equipamentos da
infraestrutura, devemos criar uma rede virtual.
Para que uma mquina virtual possa ser includa em uma rede virtual, ela precisa ser iniciada com pelo menos uma interface de rede do tipo tap, pois esse tipo de interface que
permite o mapeamento da interface da mquina virtual no host.
A criao das redes virtuais feita atravs de interfaces de rede do tipo bridge criadas no
host. Essas interfaces funcionaro como switches de camada 2, direcionando o trfego na
camada na enlace e, dessa forma, permitiro que as mquinas virtuais se comuniquem com
outras mquinas e com a internet.

Configurando uma rede privada entre mquinas virtuais


As interfaces do tipo bridge so criadas com comando brctl, que est disponvel no pacote
bridge-utils. Cada rede virtual representada por uma bridge, e cada interface das
mquinas virtuais mapeada em uma interface tapN.
Vamos imaginar o cenrio ilustrado na Figura 1.7: um host com trs mquinas virtuais, onde
cada mquina foi iniciada com uma interface de rede do tipo tap e o host tem uma bridge,
chamada br0, configurada com o endereo IP 192.168.0.1.
Para fazer com que todas as mquinas virtuais se comuniquem, precisamos de duas etapas:
1. Configurar as interfaces eth0 das mquinas virtuais com um IP da rede 192.168.0.0/24.

Administrao de Sistemas Linux: Servios para Internet

2. Adicionar as interfaces tapN na bridge configurada no host.

14

tap0

eth0
VM1

Bridge

192.168.0.1

tap1

eth0

tap2

eth0

VM2

VM3

Figura 1.7
Host configurado
com uma bridge
e trs mquinas
virtuais.

1. Criando a bridge no host:

# brctladdbr br0
2. Configurando o endereo IP:

# ifconfig br0 192.168.0.1


3. Adicionando as interfaces TAP das mquinas virtuais:

# brctladdrif br0 tap0


# brctladdrif br0 tap1
...
4. Configurando o endereo IP:

VM1 - # ifconfig eth0 192.168.0.2 netmask 255.255.255.0


VM2 - # ifconfig eth0 192.168.0.3 netmask 255.255.255.0
Para testar o funcionamento, execute o comando ping de uma mquina virtual para outra.

Acessando a rede do host


Existem duas formas de permitir que uma mquina virtual acesse a rede a qual o host est
conectado: atravs de NAT ou atravs do acesso direto.
Para permitir que as mquinas virtuais acessem a rede fazendo NAT, precisamos habilitar o
encaminhamento de pacotes e configurar o iptables do host.
1. Ativar o encaminhamento de pacotes e configurar o iptables:

# echo 1 > /proc/sys/net/ipv4/ip_forward


2. Configurar o iptables para realizar o encaminhamento dos pacotes:

# iptables -P FORWARD ACCEPT


# iptables -A POSTROUTING -t nat -s $VM_NETWORK -o $INTERNET_NIC -j
MASQUERADE
onde:

$INTERNET_NIC = eth1
A outra forma de permitir que uma mquina virtual acesse a rede do host adicionar uma
interface fsica do host na bridge que corresponde rede das mquinas. Dessa forma, a
interface do host adicionada encaminha os pacotes originados pelas mquinas virtuais para
a rede do host.

Automatizando a configurao de redes virtuais


possvel criar um script para automatizar a incluso de novas interfaces tap na bridge.
O arquivo /etc/kvm/kvm-ifup executado sempre que o KVM inicia uma mquina virtual. Podemos
modific-lo ou criar um novo arquivo para realizar incluso das mquinas na rede virtual.

Captulo 1 - Kernel-based Virtual Machine KVM

$VM_NETWORK = 192.168.0.0/24

15

O opo script do parmetro net permite especificar o caminho do script que ser executado na inicializao da mquina virtual.
Exemplo do script /etc/kvm/kvm-ifup modificado:

#!/bin/sh
set -x
switch=br0
if [ -n $1 ];then
/sbin/ip link set $1 up
sleep 0.5s
/usr/sbin/brctladdif $switch $1
exit 0
else
echo Error: no interface specified
exit 1
fi
Iniciando a mquina virtual com um script diferente do /etc/kvm/kvm-ifup:

# kvm -m 512 -hdaimagem.img -net nic -net tap,script=/var/adm/


scripts/kvm-tap.sh

Snapshots
O termo snapshot teve origem no universo da fotografia, onde era utilizado para designar
fotos instantneas. Atualmente, um termo muito usando em computao para designar
uma cpia de um sistema, filesystem, memria, banco de dados, entre outros em um determinado momento.
Diferente de um backup convencional, onde todos os dados so copiados em um intervalo
Administrao de Sistemas Linux: Servios para Internet

longo de tempo, um snapshot cria uma cpia do estado atual em alguns segundos. Isso

16

ocorre porque os snapshots trabalham apenas com ponteiros e praticamente no fazem a


movimentao dos dados.

O tamanho de um snapshot est relacionado modificao dos ponteiros dos


arquivos, e no ao seu tamanho real.

O KVM permite a criao de snapshots dos discos das mquinas virtuais, entretanto, apenas
o formato qcow2 tem suporte a essa tecnologia.

Gerenciando snapshots
11 Criando snapshots com o KVM:

#qemu-img snapshot -c snapshot1 \ /home/aluno/virtual_machines/


windows.img
11 Listando os snapshots de uma imagem:

# qemu-img snapshot -l /home/aluno/virtual_machines/windows.img


11 Restaurando um snapshot:

# qemu-img snapshot -a snapshot1 \ /home/aluno/virtual_machines/


windows.img
11 Excluindo um snapshot:

# qemu-img snapshot -d snapshot1 \ /home/aluno/virtual_machines/

Captulo 1 - Kernel-based Virtual Machine KVM

windows.img

17

18

Administrao de Sistemas Linux: Servios para Internet

Roteiro de Atividades 1
Atividade 1.1 Gerenciando snapshots
Nesta atividade, vamos explorar as funcionalidades dos snapshots. De acordo com o material apresentado, desenvolva as seguintes atividades:
1. Aps a instalao, desligue a mquina virtual Linux e tire um snapshot com o nome instalacao

(sem cedilha ou til).


2. Inicie a mquina virtual Linux e crie o arquivo /home/aluno/processos.txt com a lista

dos processos.
3. Desligue a mquina e restaure o snapshot instalacao.
4. Reinicie a mquina virtual e verifique o que aconteceu com o arquivo

/home/aluno/processos.txt.

Atividade 1.2 Gerenciando a interface de rede


Nesta atividade, utilizaremos os conceitos vistos na parte terica sobre como manipular as
interfaces de rede pela linha de comando do KVM.
1. Inicie a mquina virtual linux.img com duas interfaces de rede (uma do tipo nic) e defina o

modelo da interface (um como virtio e outro como do tipo tap).


No se esquea de verificar se a sua verso do KVM possui o driver virtual para esse
tipo de interface de rede.
2. Altere o endereo MAC das interfaces de rede.

Voc pode usar a linha de comando abaixo para gerar um endereo MAC aleatrio:

# printf %02x: $(( 0x$(od /dev/urandom -N1 -t x1 -An | \


cut -c 2-) & 0xFE | 002)); od /dev/urandom -N5 -t x1 -An\
| cut -c 2- | sed s/ /:/g
3. Configure a interface virtual eth0:0 do host com o endereo IP 192.168.X.10/24 e configure

a interface eth0 da mquina virtual com o endereo IP 192.168.X.20/24. Teste a comuni-

4. Crie uma bridge com o nome de lab e a configure com o endereo IP 192.168.X.1.
5. Adicione as interfaces tap, referentes mquina virtual, bridge lab.
6. Adicione uma rota para que todo o trfego da rede 192.168.X.0/24 passe pela bridge lab.
7. Teste a comunicao entre o host e a mquina virtual.

Captulo 1 - Roteiro de Atividades

cao entre o host e a mquina virtual com o comando ping. Obteve sucesso? Por qu?

19

Atividade 1.3 Convertendo mquinas virtuais


1. Converta a imagem da mquina virtual, criada no VirtualBox, que est no diretrio infor-

mado pelo instrutor para o formato qcow2 do KVM.

Administrao de Sistemas Linux: Servios para Internet

2. Inicie a mquina virtual e teste seu funcionamento.

20

2
Aprender o gerenciamento de mquinas virtuais, instalao de dispositivos, filtragem
de pacotes e configurao de interfaces.

conceitos

Gerenciamento de mquinas virtuais, Virt-Manager, bridges, libvirt, hardware


da mquina virtual e migrao de mquinas virtuais.

Virtualizao no Linux
11 Atualmente existem diversos softwares que permitem a criao de mquinas virtuais.

11 Os mais conhecidos no Linux so VMWare, VirtualBox e KVM.


O KVM um timo virtualizador gratuito disponvel para inmeros tipos de uso, inclusive em
ambientes corporativos com alta demanda de processamento e disponibilidade. O KVM
um subsistema do Linux que, quando utilizado com o Qemu, permite a criao de mquinas
virtuais que executam com baixo overhead, isto , o Sistema Operacional na mquina virtual
funciona em uma velocidade prxima da real (caso estivesse na mquina fsica).

Ferramentas para gerenciamento de mquinas virtuais


A administrao do ambiente virtualizado simplificado quando apoiado por ferramentas
grficas que auxiliam o administrador de sistemas no gerenciamento das mquinas virtuais.
No caso do KVM, destacamos as ferramentas de gerenciamento a seguir, que auxiliam o
gerenciamento.
11 QEMU-KVM;
11 Eucalipytus;
11 OpenNebula;
11 Nimbus;
11 Ovirt;
11 Plataforma em nuvem Xen;
11 OpenQRM;

Captulo 2 - Administrao de mquinas virtuais com KVM

objetivos

Administrao de mquinas
virtuais com KVM

11 Virt-Manager.
21

QEMU-KVM
Com esse pacote possvel executar a virtualizao no Linux utilizando somente a linha

de comando. Para tanto, alm de instalar o QEMU-KVM, necessrio recompilar o kernel


do Sistema Operacional com a flag CONFIG_KVM habilitada.
O QEMU-KVM deve ser obtido no site do KVM e compilado seguindo sua documentao.
Tambm necessrio instalar o mdulo kvm.ko, que gerado quando a flag CONFIG_KVM
habilitada, conforme o exemplo:

# modprobe kvm
Quando o mdulo KVM instalado, deve-se verificar se no h erro no dmesg, uma vez que
o mdulo pode ser carregado e, mesmo assim, apresentar algum problema.
O prximo passo criar a imagem de disco. Para tanto, necessrio utilizar a ferramenta
qemu-img e passar s opes desejadas, como, por exemplo, o tamanho da imagem, o
formato e o nome:

# qemu-img create <imagem><tamanho>


Note que podemos criar outros tipos de imagem, tais como qcow, qcow2, cow, vdi, vmdk, entre
outras, passando a opo -f.
Uma vez carregado esse mdulo, necessrio passar o parmetro enable-kvm para o
QEMU, para que este consiga gerenciar a mquina virtual de maneira eficiente, tirando
proveito das caractersticas de emulao dos processadores modernos, denominadas VT-d
e VT-X. Uma alternativa a utilizao do comando qemu-kvm, que j assume essa opo,
conforme o exemplo:

# qemu-kvm -hda <imagem> -m <quantidade de memoria em MB


A mensagem open /dev/kvm: No such file or directory um sinal de que o mdulo KVM
no foi habilitado corretamente. Em alguns casos, para o mdulo ser carregado corretamente,
deve-se habilitar a opo de virtualizao na BIOS do computador em questo.
Caso seja necessrio passar alguma imagem adicional, basta utilizar o parmetro -hd acompanhado de uma letra, como -hdb, -hdc etc. Caso queira tornar a imagem um CD-ROM, basta

Administrao de Sistemas Linux: Servios para Internet

utilizar a opo -cdrom. Exemplo prtico:

22

Crie um disco rgido virtual de 8 GB:

#qemu-img create -f raw debian-kde.raw 8G


11 -f raw: indica que o formato da imagem raw. Os principais formatos so raw e qcow2.
Instale um sistema no HD virtual criado com o comando anterior.

#kvm -m 512name maquina1 -drive file=/caminho/imagem.


iso,media=cdrom -drive file=/caminho/debian-kde.
raw,media=cdrom,cache=writeback
11 -m 512: indica que a VM ter 512 MB de memria RAM;
11 -drive file=: indica o caminho e o nome do arquivo de imagem de CD, e media=cdrom
indica que essa imagem ser a de um CD-ROM. A outra opo existente para media
media=disk, para indicar que um disco rgido.

A novidade no comando anterior cache=writeback, usado para melhorar a performance


do disco. O padro cache=writethrough, que mais seguro, porm possui desempenho
pior, principalmente quando usado com imagens no formato qcow2.
Os Sistemas Operacionais mantm um cache de pgina na memria RAM para melhorar o
desempenho de I/O de disco. As operaes de gravao so consideradas concludas aps
os dados terem sido copiados para o cache de pgina. As operaes de leitura so satisfeitas
a partir do cache de pgina, se os dados solicitados estiverem no cache. No ambiente do
KVM, tanto o Sistema Operacional do host quanto o do guest podem manter seus prprios
caches de pginas, resultando em duas cpias de dados na memria. Em geral, melhor
ignorar pelo menos um desses caches de pgina. As opes de cache so: writethrough,
writeback, unsafe e none.
11 cache=none: como o nome j sugere, desabilita o cache para leitura e gravao no host,
transformando todas as requisies de I/O do guest em operaes Direct I/O no host.
Para os outros trs modos, o cache ativado tanto para leitura quanto para gravao,
porm o cache de gravao tratado de forma diferente em cada caso.
11 cache=writethrough: far com que o cache de pgina do host seja usado para ler e
escrever dados, mas a confirmao de escrita ser enviada para o guest somente quando
os dados forem relatados como escrito pelo sistema de armazenamento.
11 cache=writeback: tambm usar o cache para ler e escrever, mas relatar os dados
escritos como concludos, assim que os dados estiverem presentes no cache de pgina
do host. Este seguro, desde que o host tambm seja. Se o host desligar por falta de
energia, pode ocorrer corrupo de dados no guest.
11 cache=unsafe: usar o cache para ler e escrever e no ser necessrio gravar os dados
no disco, podendo mant-los em cache. Se alguma coisa der errado, como o desligamento anormal do host, a imagem de disco da VM poder ser inutilizada.

Eucalyptus
Um dos pacotes de software livre mais populares para a construo de infraestruturas
de computao em nuvem o Eucalyptus (sigla que significa Elastic Utility Computing
Architecture for Linking Your Programs to Useful Systems). O que faz dele nico o fato de
face de computao em nuvem da Amazon). Alm disso, o Eucalyptus inclui o Walrus, que
um aplicativo de armazenamento em nuvem compatvel com o Amazon Simple Storage
Service (Amazon S3 a interface de armazenamento em nuvem da Amazon).
O Eucalyptus suporta KVM/Linux e Xen para hypervisors, e inclui a distribuio de cluster
Rocks para o gerenciamento de cluster.

OpenNebula
O OpenNebula outro aplicativo de software livre interessante (sob licena da Apache),
desenvolvido na Universidad Complutense de Madrid. Alm de dar suporte construo
em nuvem privada, o OpenNebula apoia a ideia de nuvens hbridas. Uma nuvem hbrida
permite combinar uma infraestrutura em nuvem privada com uma infraestrutura em nuvem
pblica (como a da Amazon), para permitir graus ainda maiores de escalada. O OpenNebula
suporta Xen, KVM/Linux e VMware, e amparado por elementos como libvirt, para o gerenciamento e introspeco.

Captulo 2 - Administrao de mquinas virtuais com KVM

sua interface ser compatvel com a Amazon Elastic Compute Cloud (Amazon EC2 a inter-

23

Nimbus
O Nimbus outra soluo IaaS com foco na computao cientfica. Com o Nimbus, podemos
arrendar recursos remotos (como os fornecidos pela Amazon EC2) e gerenci-los localmente
(configurar, implementar VMs, monitorar etc.). O Nimbus tem origem no projeto Workspace
Service (parte do Globus.org). Por depender da Amazon EC2, o Nimbus suporta Xen e KVM/Linux.

oVirt
O pacote oVirt uma ferramenta de gerenciamento de VM aberta que aumenta de um
pequeno nmero de VMs para milhares de VMs sendo executadas em centenas de hosts.
O pacote oVirt, desenvolvido pela Red Hat, um console de gerenciamento baseado na web
que, alm do gerenciamento tradicional, suporta a automao do gerenciamento em cluster
e do balanceamento de carga. A ferramenta oVirt foi composta na linguagem Python.

Plataforma em nuvem Xen


A Citrix integrou a Xen em uma plataforma IaaS, usando a Xen como um hypervisor ao incorporar outros recursos de software livre como o Open vSwitch. Uma vantagem interessante
da soluo Xen o foco no gerenciamento baseado em padres incluindo OVF, Distributed
Management Task Force (DTMF), Common Information Model (CIM) e a Virtualization
Management Initiative (VMAN) do projeto Kensho. A pilha de gerenciamento Xen suporta
garantias SLA em conjunto com mtricas detalhadas para estorno.

OpenQRM
caracterizada como uma plataforma de gerenciamento de datacenter. A OpenQRM fornece
console nico para gerenciar um datacenter virtualizado completo que plugvel, de
maneira arquitetnica, para permitir a integrao de ferramentas de terceiros. A OpenQRM
integra suporte para alta disponibilidade (atravs de redundncia) e suporta uma variedade
de hypervisors, incluindo KVM/Linux, Xen, VMware e Linux VServer.

Virt-Manager
O sistema de virtualizao do KVM conta com um sistema de gerenciamento chamado

Administrao de Sistemas Linux: Servios para Internet

Virt-Manager, que prov ambiente grfico atravs do qual se pode criar, configurar e alterar

24

os parmetros da mquina virtual a ser usada, incluindo memria, configuraes de rede e


disco. H tambm uma srie de utilitrios adicionais para efetuar algumas tarefas auxiliares:
11 virt-install: criao de mquinas virtuais novas;
11 virt-clone: criao de uma cpia de uma mquina virtual existente;
11 virt-img: criao de uma nova imagem de disco, a ser usado para simular um disco virtual;
11 virt-viewer: possibilita a interao com a interface grfica da mquina virtual.

Instalao do gerenciador grfico Virt-Manager


A execuo do pacote GDM instalar vrios outros pacotes para tornar possvel o login
grfico. Aps a instalao, faa login no host e abra no menu principal do Virt-Manager.

Para usar o Virt-Manager, preciso se certificar de que as camadas subjacentes estejam


devidamente iniciadas:

l
O ambiente grfico do
Virt-Manager pode ser
iniciado por meio do
comando virt-manager,
utilizando as credenciais do administrador
do sistema.

# apt-get install gdm


# modprobe kvm-{intel,amd} //(escolha apenas um)//
# modprobe tun //(a configurao de rede virtual depende disto)//
# /etc/init.d/libvirtd start

Exerccio de fixao 1 e
Instalando o pacote Virt-Manager
Instale e inicie o pacote Virt-Manager pelo repositrio do Debian.

Criando uma mquina virtual


Para criar uma mquina virtual no Virt-Manager, necessrio se conectar ao host.

Com a conexo realizada, a criao da mquina virtual seguir alguns passos bsicos para
definio de informaes como, por exemplo, o nome da mquina virtual, a forma de
instalao, tipo de Sistema Operacional e sua verso, quantidade de memria mxima e
espao mximo de hard disk que a mquina virtual utilizar. Ao final do processo de criao,
o sistema vai apresentar uma tela com as informaes gerais da mquina virtual.

Captulo 2 - Administrao de mquinas virtuais com KVM

Figura 2.1
Conexo do
gerenciador de
VMs.

25

Figura 2.2
Configurao da
mquina virtual.

Ao concluir a instalao, a mquina virtual far a instalao do Sistema Operacional.

Acessando a mquina virtual


Para acessar a mquina virtual a partir do Virt-Manager, basta clicar duas vezes sobre a
mquina virtual na aba principal e, ento, abrir uma nova janela que mostrar o contedo da
tela da mquina virtual, tanto o modo console quanto a interface grfica (quando apropriado).
Basta clicar com o boto direito sobre o nome da mquina virtual para mudar seu estado.
Por exemplo, para inici-la.
Tambm possvel acessar a mquina virtual atravs de uma conexo segura, como o
caso do SSH, ou mesmo por meio do protocolo VNC. Para acess-la via VNC, necessrio

VNC

instalar um servidor VNC na mquina virtual, iniciar o daemon vncd e ento conectar-se a

Virtual Network
Computing um
protocolo construdo
para possibilitar
interfaces grficas
remotas. Atravs desse
protocolo, um usurio
pode conectar-se a um
computador a distncia
e usar as suas funcionalidades visuais como se
estivesse sentado em
frente ao computador.

Administrao de Sistemas Linux: Servios para Internet

ela com um cliente VNC, como o vncviewer.

26

Configurando a interface de rede da mquina virtual


O KVM permite criar redes virtuais, recurso muito interessante para o administrador de
sistemas, pois permite criar redes isoladas dentro do mesmo ambiente virtualizado, viabilizando virtualizar todos os servios internos e externos da rede.
A interface grfica do Virt-Manager permite efetuar configuraes em todos os componentes da mquina virtual de forma bastante simplificada. Durante o processo de criao da
interface de rede da mquina virtual, possvel definir em qual rede virtual a interface de
rede dessa mquina virtual estar conectada.
Para configurar a interface de rede utilizando a interface grfica Virt-Manager, devemos
selecionar a mquina virtual e acessar o menu Host Details e, na aba de Redes Virtuais,
clicar em +, para adicionar rede. preciso inserir algumas informaes, como o nome da
rede virtual, endereo IP intervalo para alocao do servidor DHCP e qual rede fsica a rede
virtual dever estar conectada para comunicao com os clientes externos.

Aps criar a interface de rede virtual, adicione mquina virtual usando a opo I. Depois
clique em Show Virtual Machine Details/Add Hardware, e ento selecione Network,
escolha o Host Device previamente criado, e finalmente clique em Avanar e Concluir.
A nova interface de rede aparecer na lista de dispositivos da mquina virtual e poder ser
utilizada assim que a mquina virtual for inicializada.

Exerccio de fixao 2 e
Criando uma rede virtual
11 Crie uma rede virtual com o nome internet, ative o DHCP, configure a faixa dos IPs que
sero distribudos para 10.0.0.128 at 10.0.0.254, e escolha NAT como tipo de conexo.
11 Crie uma rede virtual chamada rede-local. No ative o DHCP: configure o endereo da
rede para 192.168.1.0/24 e marque que ser uma rede virtual isolada.
11 Crie uma rede virtual chamada windows. No ative o DHCP: configure o endereo da
rede para 192.168.2.0/24 e marque que ser uma rede virtual isolada.
Nosso objetivo montar uma estrutura semelhante da imagem a seguir:

Rede virtual: internet


10.0.0.0/24 - NAT e DHCP

eth0

eth0
Servidor Linux
virtual
eth2

eth1

Rede local
Estao Linux
virtual

eth1

estao-windows
virtual
Rede local 2

Rede virtual: rede local

Rede virtual: windows


192.168.2.0/24 - Isolada

Figura 2.3
Estrutura da rede
virtual.

Exerccio de fixao 3 e
Criando uma mquina virtual
Crie uma mquina virtual utilizando a imagem do Windows fornecida pelo instrutor e inclua
a mquina na rede virtual windows.

Exerccio de fixao 4 e
Importando uma mquina virtual
Crie uma nova mquina virtual chamada servidor e importe a imagem do disco virtual
criada no primeiro Captulo. Use a opo Import existing disk image. Inclua essa mquina
virtual na redes rede-local e internet.

Captulo 2 - Administrao de mquinas virtuais com KVM

192.168.1.0/24 - Isolada

27

Verifique no arquivo /etc/libvirt/quem/nome_da_mquina.xml se todas as informaes de


configurao da mquina virtual esto corretas.

Algumas verses do Virt-Manager apresentam um bug referente importao do


tipo de imagem do disco, sempre assumindo que a imagem do disco importado do
tipo RAW. Pode ser necessrio alterar para o tipo correto.

libvirt
A libvirt se encarrega de criar as interfaces virtuais e associ-las bridge que desejarmos.
Basta informarmos, na configurao das mquinas virtuais, o nome do dispositivo de bridge:
Sempre que possvel, utilizar tambm o virtio uma boa opo, pois esse driver reduz o
overhead decorrente da virtualizao de I/O. Trata-se de um driver paravirtualizado.

Filtragem de pacotes
possvel filtrar pacotes usando o netfilter/iptables na sua bridge. Nela, os pacotes des-

tinados mquina fsica usaro a cadeia INPUT, e os que forem destinados s mquinas
virtuais passaro pela cadeia FORWARD.
Como o filtro para a mquina local ser aplicado interface do bridge, necessrio utilizar
um mdulo do netfilter especfico para esse caso: o mdulo physdev (de physical device,
dispositivo fsico).
Dois exemplos de regras para negar conexes porta TCP 23 na interface br0, recebidas
pela interface fsica eth1 ou saindo da porta UDP 9876 pela interface fsica eth0:

# iptables -A INPUT -m physdev --device-in eth1 -p tcp --dport 23 -j


DROP
# iptables -A INPUT -m physdev --device-out eth0 -p udp --sport 9876
-j DROP
Alm disso, esse mdulo tambm necessrio para aplicar regras de filtragem s cadeias
de repassagem de pacotes FORWARD e POSTROUTING. Por exemplo, para negar na bridge a

Administrao de Sistemas Linux: Servios para Internet

repassagem de pacotes destinados ao IP 10.1.2.5:

# iptables -A FORWARD -m physdev --device-is-bridged -d 10.1.2.5 -j


DROP
Alguns outros procedimentos ainda mais especficos, como a completa desativao do
netfilter em dispositivos de bridge, so cobertos na documentao da Red Hat.
Se desejamos filtrar pacotes IP j na camada Ethernet, claramente violando o modelo TCP/IP
mas com benefcios potenciais de desempenho , talvez valha a pena experimentar o ebtables
(de Ethernet Bridge Tables). Trata-se de um filtro de frames Ethernet capaz de atuar tambm
na camada IP. O ebtables independente do netfilter/iptables, mas pode atuar em conjunto
com este para oferecer maior flexibilidade.

Hardware da mquina virtual


11 Na sua essncia, o hardware da mquina virtual idntico ao hardware da mquina
real, fazendo com que o Sistema Operacional na mquina virtual parea estar executando diretamente sobre um computador real.

28

11 Cada mquina virtual possui todas as caractersticas inerentes a um PC completo,

incluindo BIOS e configurao do Setup.


A mquina virtual formada pelo seu prprio hardware virtual. Ela tem seu processador,
memria, placa de rede, disco rgido e at mesmo pode usufruir de dispositivos como USB
e portas paralelas e seriais, de maneira independente da mquina fsica. natural que a
capacidade de processamento seja uma fatia do processador fsico. O mesmo acontece com
a memria e outros componentes.
Podemos definir uma mquina virtual como uma nova mquina (como se tivesse sido comprada), mas que existe dentro de outra mquina fsica. Uma mquina fsica pode ser fatiada
em vrias mquinas virtuais, cada uma pode conter um Sistema Operacional diferente, com
programas diferentes. No existe compartilhamento de arquivos ou partes de Sistemas
Operacionais entre as mquinas virtuais o isolamento entre elas total.
As placas de rede da mquina virtual podem ser conectadas a switches virtuais, que daro
acesso rede fsica ou no. A partir do momento em que criamos uma mquina virtual e
definimos seu tamanho, arquitetura de discos e rede, basta instalar o Sistema Operacional
escolhido e aplicativos desejados. Ao final desse processo a mquina virtual estar pronta
e ser idntica a uma mquina fsica, que poder compartilhar normalmente arquivos com
outra mquina virtual ou fsica atravs da rede.

Placa de vdeo
Para adicionar uma placa grfica Cirrus ao sistema virtual utilizando interface texto, basta
executar o comando:

#qemu-kvm -m 1024 -name f15 -drive file=/images/f15.img,if=virtio


-vga cirrus

Figura 2.4
Interface grfica de
configurao da MV
(placa de vdeo).

Captulo 2 - Administrao de mquinas virtuais com KVM

Para adicionar via interface grfica.

29

Detalhes da mquina virtual


11 Gerenciador de Performance.

11 Detalhes do Processador.
11 Alocao de Memria.
11 Opes de inicializao do sistema.
11 Detalhes do Armazenamento.
11 Dispositivo de udio.

Administrao de Sistemas Linux: Servios para Internet

Gerenciador de Performance
Na opo Performance (desempenho), sero apresentados quatro grficos sobre utilizao
do sistema que permitem monitorar a utilizao dos recursos do hardware:
11 CPU;
11 Memria;
11 Disk I/O;
11 Network I/O.

Detalhes do Processador
Nesse item sero apresentados detalhes sobre o processador da mquina virtual, com o
nmero de processadores alocados e o mximo que pode ser alocado pela mquina virtual.

Alocao de Memria
Nesse item apresentada a alocao de memria da mquina virtual, contendo informaes sobre a alocao atual. Nesse mdulo possvel alterar a quantidade de memria
alocada, em MB, pela mquina virtual.

30

Figura 2.5
Interface grfica de
configurao da MV
(overview).

Opes de inicializao do sistema


Podemos definir o dispositivo que vai inicializar o sistema virtual por meio do comando:

# qemu-kvm -drive file=/images/image1.raw,index=0,media=disk


Utilizando a interface grfica, podemos tambm definir o device que inicializar a mquina
virtual. E ainda podemos definir se a mquina virtual ser inicializada em tempo de boot do
host hospedeiro.

Detalhes do armazenamento
Nesse item ser detalhado o disco virtual alocado na mquina virtual, detalhando o Dispositivo de Destino, que se refere s informaes do dispositivo na mquina virtual, e o Caminho
de Origem, referente s informaes do dispositivo na mquina hospedeira.

Dispositivo de udio
Apresenta os detalhes do dispositivo de udio configurado na mquina virtual.

Adicionando novo storage mquina virtual


O QEMU fornece um simples controlador ATA/IDE por padro e funciona com quase todos
os Sistemas Operacionais. Alternativamente, o QEMU pode emular um controlador SCSI e
fornece os dispositivos virtualizados utilizando o framework VirtIO.

Linux

Windows

Others

Guest

Guest

Guests

QEMU

Image Formats

Backend

Figura 2.6
Estrutura do QEMU.

ATA

SCSI

Qcow2

VMDK / etc.

Virtio

Raw Posix

Host Kernel

Exemplos de comandos para adicionar um novo storage mquina virtual, por meio de linha
de comando:

#kvm drive file=/dev/volumes/maquina01,media=disk,index=0,boot=on,i


f=virtio
#kvm drive file=/dev/volumes/maquina01,media=disk,index=0,boot=on,i
f=ide
#kvm drive file=/dev/volumes/maquina01,media=disk,index=0,boot=on,i
f=scsi

Captulo 2 - Administrao de mquinas virtuais com KVM

Transports

31

Utilizando a interface grfica, devemos fazer da seguinte forma:

Migrao de mquinas virtuais


Com o ambiente j virtualizado, podem existir picos de uso da mquina virtualizada, algumas
vezes por falhas no escalonamento do projeto de virtualizao, de forma que a mquina fsica
no suporte toda a carga e cause lentido. Ao mesmo tempo, e possvel que existam outras
mquinas fsicas disponveis e ociosas. Assim, para melhor aproveitamento da capacidade
dos servidores, os operadores de TI podem efetuar migraes de mquinas virtualizadas para
outras mquinas fsicas, melhorando a velocidade de todos os processos e aproveitando ao
mximo os benefcios da virtualizao. A migrao pode ser feita de trs formas:
11 Static Migration: quando a mquina virtual e desligada usando os mtodos de seu
Sistema Operacional e logo em seguida e movida para outra mquina fsica;
11 Cold Migration: quando a mquina virtual e suspensa (exemplo: o Hibernar do sistema
Windows), usando mtodos de seu Sistema Operacional ou acionada a funo de Snapshot,
que salva o estado atual da mquina virtualizada. Aps acionado um dos dois procedimentos
citados, a mquina virtualizada e movida para outra mquina fsica e iniciado o sistema virtualizado em seu estado anterior;
11 Live Migration: quando o prprio monitor de mquinas virtuais, que executa a mquina
virtualizada, se incumbe de fazer a migrao sem paradas. Live Migration permite o
equilbrio de carga dinmica de associaes virtualizadas do recurso, a manuteno do
Administrao de Sistemas Linux: Servios para Internet

hardware sem tempo ocioso da mquina virtualizada e o apoio dinmico contra falhas do

32

sistema. Veja a seguir como fazer o Live Migration.


No host A, devemos iniciar o KVM normalmente:

#kvm drive file=/caminho/imagem-vm.img, ...


No host B, iniciar o KVM usando o mesmo comando usado para iniciar o host A, porm deve
ser includo o parmetro -incoming.

#kvm drive file=/caminho/imagem-vm.img, ... incoming tcp:0:4444


No monitor da mquina virtual em execuo no host A, execute o comando migrate:

(qemu) migrate -d tcp:host_b:4444


(qemu) info migrate
Migration status: active

Figura 2.7
Interface grfica
para adicionar novo
storage.

transferred ram: 17343 kbytes


remaining ram: 1023952 kbytes
total ram: 1057216 kbytes
Ao final do comando, a mquina virtual continuar sua execuo no host B.
Cuidados que devem ser observados:
11 As imagens ou dispositivos de discos virtuais devem estar acessveis no host de destino;
11 Interfaces tap devem estar na mesma rede local;
11 As verses do KVM devem ser exatamente a mesma;
11 Migrate -b envia os dispositivos de bloco juntos (block migration).
O maior desafio da migrao de mquinas virtuais e fazer com que a mquina virtualizada
se comporte da mesma maneira, aps a migrao entre os servidores fsicos.
Com o gerenciador Virt-Manager, e possvel executar o processo de migrao com apenas
alguns cliques, mas para que essa migrao ocorra, so necessrios alguns requisitos independentemente da ferramenta de gerenciamento utilizada.
11 obrigatrio que o disco virtualizado esteja acessvel entre a origem e destino exemplo:
Network File System (NFS) armazenado em pasta compartilhada;
11 As mquinas de origem e destino devem estar acessveis via rede;
11 As plataformas dos Sistemas Operacionais de origem e destino devem ser compatveis;
11 No caso de processadores com tecnologia de virtualizao sendo usada pela mquina virtual,

Captulo 2 - Administrao de mquinas virtuais com KVM

esta no poder ser migrada para outro servidor que no disponha dessa tecnologia.

33

34

Administrao de Sistemas Linux: Servios para Internet

Roteiro de Atividades 2
Atividade 2.1 Live Migration
Live Migration um recurso que permite que uma mquina virtual migre de um host para
outro sem interromper o seu funcionamento. Para realizar a migrao, so necessrias
algumas caractersticas no ambiente virtual, tais como:
11 Ter no mnimo dois hosts;
11 Os hosts devem ter o mesmo storage compartilhado;
11 Os hosts devem possuir a mesma configurao de rede virtual.
Esta atividade dever ser realizada em dupla. Chamaremos as mquinas dos alunos de
host1 e host2. O host1 dever estar configurado com o endereo IP 10.0.X.1/24 e o host2,
com o endereo 10.0.X.2/24.

Preparando o ambiente virtual


Passo1: Montando o filesystem do storage compartilhado.
Para que possamos realizar o Live Migration, necessitamos que todas as mquinas virtuais
do nosso ambiente sejam criadas em uma rea compartilhada por todos os hosts.
Utilizaremos o NFS (que ser visto em detalhes no Captulo 3) para realizar o compartilhamento dos dados entre os hosts do nosso ambiente virtual.
As mquinas host1 e host2 devero montar o filesystem compartilhado pelo servidor
do instrutor.

Montar o filesystem
Criar o ponto de montagem:

# mkdir /storagekvm
Montar o filesystem do servidor:

# mount -t nfs <IP_SERVIDOR_SALA_DE_AULA>:/storagekvm/duplaX /


storagekvm

Configurao dos hosts


clique sobre a aba Storage.
2. Clique sobre o boto com um sinal de +, localizado no canto inferior esquerdo.
3. Defina o nome do storage como rnp e selecione o tipo netfs: Diretrio de Rede Expor-

tado. Clique em Avanar.

Captulo 2 - Roteiro de Atividades

1. Abra o Virt-Manager e acesse o menu Editar, clique em Host Details e em seguida

35

4. Configure com as seguintes opes:

11 Target Path: /storagekvm;


11 Format: nfs;
11 Host Name: 10.0.X.1;

Administrao de Sistemas Linux: Servios para Internet

11 Source Path: /storagekvm/duplaX.

36

11 Passo 2: Criando uma mquina virtual no storage rnp.


1. Crie uma nova mquina virtual utilizando o arquivo /storagekvm/machineX.img como

disco virtual.
Na interface do Virt-Manager, clique sobre o nome do host (exemplo: localhost) com o
boto direito e escolha a opo Novo.

2. Determine o nome da mquina virtual como migration, marque a opo Import existing

disk image e clique em Avanar.

3. Informe o tipo de Sistema Operacional, a verso e em seguida clique sobre o boto

Browse... para localizar o arquivo de imagem de disco.

4. Ser exibida a janela de Storage Pools do Virt-Manager. Clique sobre o storage rnp e em

Captulo 2 - Roteiro de Atividades

seguida clique sobre o arquivo de imagem de disco linux.img.

37

5. Aps selecionar o arquivo que ser o disco da mquina virtual, clique em Avanar.

6. Informe a quantidade de memria e o nmero de processadores que sero utilizados

pela mquina virtual:


11 Memria: 512 MB;
11 Processadores: 1.

Administrao de Sistemas Linux: Servios para Internet

7. Em Advanced Options, especifique a rede virtual linux e clique em Concluir.

38

8. Inicie a mquina virtual no host1.

Passo 3: Adicionando novos hosts ao ambiente virtual.


Adicionando o host2 ao Virt-Manager do host1.
1. Abra o Virt-Manager e clique sobre o menu Arquivo. Em seguida, sobre Add Connection...

e selecione:
11 Hypervisor: QEMU/KVM;
11 Connection: Tnel remoto por SSH.

Como no estamos utilizando um servidor de DNS, ser necessrio informar o nome dos

10.0.X.1

host1

10.0.X.2

host2

Captulo 2 - Roteiro de Atividades

hosts do ambiente virtual no arquivo /etc/hosts. Exemplo:

39

Para que os hosts se conectem automaticamente, deve-se configurar o acesso SSH


sem senha.
2. Agora nosso ambiente virtual possui dois hosts conectados.

Passo 4: Migrando uma mquina virtual entre os hosts.


Agora que nosso ambiente est todo preparado, podemos iniciar o processo de Live
Migration da nossa mquina virtual.
1. Acesse o console da mquina virtual migration e execute o comando top, para que os

processos que esto rodando na mquina fiquem aparecendo.


2. No host1, com o boto direito do mouse, clique sobre o nome da mquina virtual migration

e em seguida clique em Migrate.

Administrao de Sistemas Linux: Servios para Internet

3. Em New host, selecione o host de destino (host2) e clique sobre o boto Migrate.

40

4. Clique em Advanced options, marque a opo Address, informe o endereo IP do host

de destino e clique sobre o boto Migrate.


5. Aguarde o processo de migrao da mquina virtual.

6. Ao final da migrao, a mquina virtual aparecer ligada no host2. Acesse o console dessa

Captulo 2 - Roteiro de Atividades

mquina e verifique se o comando top ainda est rodando.

41

Atividade 2.2 Criando clones


Para dar continuidade s atividades do curso, em muitos momentos precisaremos de
duas mquinas virtuais Linux. A gerao de clones de mquinas virtuais um recurso que
permite otimizar a criao de novas mquinas.

Administrao de Sistemas Linux: Servios para Internet

Utilizando esse recurso, crie um clone da mquina virtual servidor, chamado cliente-linux.

42

3
Conhecer os sistemas Domain Name Service (DNS) e Network File System (NFS).

Domain Name Service, sistema de traduo de endereos, Network File System,


sistema de arquivos em rede.

conceitos

Introduo
O estudo deste captulo se inicia com os conceitos do servio de resoluo de nomes (DNS),
abordando sua utilizao e execuo de maneira prtica e intuitiva, passando pela instalao, configurao e testes. Na segunda parte sero apresentados os conceitos e utilizao
do Network File System (NFS).
Na primeira parte so apresentados os conceitos e definies comuns ao servio DNS, tais como:
11 Espao de Nomes (DNS);
11 Domnio;
11 Zonas de autoridade;
11 Registro de recursos;
11 Mapeamento direto e reverso.
Em seguida, sero vistos os tipos e montagens tpicas de um servio DNS, que envolvem:
11 Servidor primrio;
11 Servidor(es) Secundrio(s);
11 Servidor Cache;
11 Servidores raiz da internet.
Na etapa seguinte so abordados os aspectos do DNS associados sua utilizao no Linux,
desde instalao e configurao, at formas de teste e diagnstico.
Por ltimo vm as atividades prticas:
11 Instalao do servidor DNS;
11 Configurao do servidor DNS Primrio;
11 Configurao do servidor DNS Secundrio.

Captulo 3 - DNS e NFS

objetivos

DNS e NFS

43

Domain Name Service (DNS)


O que o DNS?

11 Servio para traduo de nomes em endereos IP e vice-versa.


11 Tambm denominado Domain Name System ou Domain Name Server.
O Servio de Traduo de Nomes, ou simplesmente servio de nomes, um componente
dos servios em redes que permite a aplicativos e servios localizar e fazer referncia a
informaes em um ambiente de rede. Os nomes so parte crtica dos servios em redes,
pois ajudam na administrao de todos os recursos disponveis na rede.
Domain Name Service (DNS) fornece servios de nomes e diretrios em redes que implementam a pilha de protocolos Transmission Control Protocol/Internet Protocol (TCP/IP).
Podemos consider-lo como um sistema de banco de dados distribudo, que traduz nomes
de estaes em endereos, fornecendo informaes sobre roteamento e domnios.
O DNS essencial para os sites que se conectam diretamente internet. Porm, mesmo para
redes locais isoladas que utilizam protocolos da pilha TCP/IP, sempre faz sentido utiliz-lo.
particularmente importante para o sistema de correio eletrnico, pois nele que so definidos registros que identificam a mquina que manipula as correspondncias relativas a um
dado nome, identificando, assim, onde determinado usurio recebe suas correspondncias.

Por que utilizar DNS?


Primeiro motivo:

11 Mquinas possuem maior facilidade em lidar com nmeros.


11 Pessoas preferem usar nomes.
11 Exemplo:
22 Pgina da RNP.
22 Mais fcil usar www.rnp.br que http://200.130.77.75
Segundo motivo:
11 Torna o acesso aos servios de rede independente do endereo IP do servidor.
11 Troca do IP do servidor transparente para o usurio, pois a localizao do IP forne Administrao de Sistemas Linux: Servios para Internet

cida pelo servio DNS.

44

O esquema de endereamento utilizado pela internet baseado em endereos IPv4 (nmeros


de 32 bits utilizados especificamente pela camada de rede) no recomendado para uso em
navegadores e outros servios. Desse modo, um usurio da internet, ao usar seu navegador, pode digitar um endereo que lhe familiar, como www.rnp.br, em vez de algo como
200.130.77.75, possibilitando, dessa forma, que empresas e pessoas possam criar endereos
baseados em nomes, associando-os ao nome da empresa ou produto.
Cabe ao servio DNS fazer a associao entre o nome escolhido pelo usurio e o endereo
IPv4 de 32 bits.
Frequentemente o administrador de rede tem de mudar a faixa de endereo utilizada pelos
vrios servidores que controla. Tal alterao pode ser necessria pela mudana do bloco de
endereos disponibilizado, podendo ocorrer em funo de uma mudana de provedor de
acesso internet, o que provoca a alterao de endereos para o novo bloco de endereos
disponibilizado pelo novo provedor.

l
Um motivo adicional
para o uso de um
sistema de endereamento baseado em
nomes torn-lo
independente do
endereo IP em uso em
determinado momento.

Podem ainda ocorrer modificaes em funo da realocao de endereos do provedor ou


mesmo da prpria rede do usurio, por causa de rearranjos causados por ampliaes ou
modificaes na topologia da rede.
Desse modo, um usurio que acessa o servio via internet, ou mesmo via intranet, no precisa
se preocupar com alteraes na topologia e/ou endereamento do servidor, j que estar
acessando o servidor pelo nome, cabendo ao DNS manter essa associao atualizada.

arpa

com

gov

edu

mil

net

org

br

...

rnp

esr
Figura 3.1
Espao de nomes
do DNS.

Domnios genricos

Domnios geogrcos

O DNS um dos componentes bsicos da internet. Podemos consider-lo como um sistema


de banco de dados distribudos de nvel mundial, que traduz endereos simblicos de
estaes em endereos IP numricos e vice-versa.
Quando se usa servios no transparentes como Telnet, FTP, SSH e SFTP, o usurio pode
fornecer como argumento um endereo simblico de estao (o nome de um computador
hospedeiro). Funes resolvedoras (resolver functions) do DNS traduzem esse endereo
simblico para um endereo IP numrico.
O rpido crescimento da internet levou introduo dos conceitos de domnios e subdomnios DNS. Os domnios compem a estrutura bsica do DNS e podem ser comparados
a diretrios em um sistema de arquivos, com cada domnio aparecendo como subrvores
de informaes no espao de nomes de domnio. Um endereo simblico de estao em
um domnio deve ser nico, porm esse mesmo endereo simblico pode existir em outros
domnios. Os domnios so implementados como uma hierarquia, que pode ser vista como
uma rvore invertida, comeando no domnio-raiz, cujo endereo simblico real , ou
seja, um rtulo (label) nulo.
O domnio raiz implementado por um grupo de servidores de nomes chamados de servidores raiz. Os servidores raiz s tm informaes completas a respeito dos domnios de
topo, que se localizam imediatamente abaixo do domnio-raiz na rvore de hierarquia de
domnios. Os domnios de topo, por sua vez, tm apontadores para os servidores em domcompletas sobre todos os domnios, mas os seus apontadores podem indicar que outros
servidores podem fornecer a informao desejada. Assim, os servidores raiz podem at no
saber a resposta para uma pergunta, mas certamente sabero para quem direcion-la.

Captulo 3 - DNS e NFS

nios de nveis inferiores. Nenhum servidor, nem mesmo os servidores raiz, tem informaes

45

Definies
11 Domnio.

11 Zonas de autoridade.
11 Registro de recursos.
11 Mapeamento:
22 Direto.
22 Reverso.
A segurana da informao um ponto crtico para a sobrevivncia das organizaes na
era da informao. Vrios so os problemas envolvidos, no entanto a sociedade depende
das informaes armazenadas nos sistemas computacionais para tomadas de deciso em
negcios, uso de rgos do governo, entre outros contextos.
A informao pode existir em diversos formatos: impressa, armazenada eletronicamente,
transmitida pelo correio convencional ou eletrnico etc. Seja qual for o formato, meio de
armazenamento ou transmisso, recomenda-se que ela seja protegida adequadamente.
Sendo assim, de responsabilidade da segurana da informao proteg-la de vrios tipos
de ameaas, a fim de garantir a continuidade do negcio, minimizar riscos e maximizar o
retorno sobre os investimentos. Felizmente, crescente a conscientizao das organizaes
frente ao valor e as vulnerabilidades de seus ativos, no que diz respeito segurana.
Hoje, a segurana da informao determinante para assegurar competitividade, lucratividade, atendimento aos requisitos legais e a boa imagem da organizao junto ao mercado
e s organizaes, tanto no setor pblico quanto no setor privado. Em tais contextos, a
segurana da informao um componente que viabiliza negcios como o e-Gov (governo
eletrnico) ou e-commerce (comrcio eletrnico).

Domnio
11 Subrvore do espao de nomes DNS.

11 Nome de domnio completo, tambm denominado Fully Qualified Domain Name


(FQDN), consiste em:

Administrao de Sistemas Linux: Servios para Internet

22 Nome da mquina.

46

22 Nome do domnio.
22 Domnio de topo.
22 Exemplo:
33 www.rnp.br
33 www: mquina (ou host).
33 rnp: domnio.
33 br: domnio de topo (top level domain).
Se precisssemos lembrar todos os endereos IP das pginas da web que visitamos diariamente, ficaramos loucos. Seres humanos no so bons em lembrar sries de nmeros. No
entanto, somos bons na lembrana de palavras, e por isso usamos os nomes de domnios.
Voc possui, provavelmente, vrios nomes de domnios guardados em sua cabea. Exemplos: rnp.br, receita.fazenda.gov.br, g1.com.br, mit.edu, google.com etc.

As partes com, edu e br desses servidores so chamadas dedomnios principaisoudomnios de primeiro nvel. Existem vrios domnios principais, incluindo com, edu,
gov, mil, net e org, alm das siglas de duas letras de cada pas, para identificar a origem,
em ingls. No custa lembrar que os domnios registrados nos EUA no possuem a identificao (us).Em cada domnio principal existe uma enorme lista dedomnios secundrios.
Novos tipos de domnio foram criados para oferecer melhor identificao. Exemplos mais
conhecidos so: professor prof.br, pessoais nom.br, rede de televiso tv.br etc.
Um domnio uma subrvore do espao de nomes DNS. Um domnio completo, tambm
denominado de Fully Qualified Domain Name (FQDN), consiste basicamente em um nome
de mquina, um nome de domnio e um domnio de topo. O endereo www.rnp.br um
exemplo de FQDN, onde:
11 www: nome da mquina (ou host);
11 rnp: nome do domnio;
11 br: domnio de topo.
Cada subrvore considerada parte de um domnio. Nesse caso, rnp faz parte do
domnio br. Outra situao referente a subdomnios dentro da prpria rede. Considere o
endereo www.df.rnp.br, no qual df uma subrvore de rnp e faz parte desse domnio.
A seguir, alguns exemplos.
Domnio rnp:
11 www.rnp.br: mquina www no domnio rnp.br.
11 mail.rnp.br: mquina mail no domnio rnp.br.
Domnio df.rnp.br:
11 www.df.rnp.br: mquina www no domnio df.rnp.br.
11 mail.df.rnp.br: mquina mail no domnio df.rnp.br.

Zonas de autoridade
11 Tambm denominadas Start of Authority (SOA).

11 Domnios e zonas de autoridade no so sempre sinnimos:


22 Um nome de domnio se refere a um nico ponto no espao de nomes.
22 Uma zona de autoridade refere-se ao local no qual esto armazenados os dados
sobre as mquinas (hosts) do domnio.
Cada nome de domnio possui um registro de zona de autoridade que apresenta informaes
do domnio e da zona em que o domnio est inserido. Entre essas informaes, esto:
11 Nome do servidor de nomes primrio;

11 Nmero de srie (serial number) da zona;


11 Intervalo de refresh: indica o tempo, em segundos, que o servidor de nomes secundrio
deve verificar por atualizaes no servidor de nomes primrio;
11 Intervalo de retry: indica o tempo, em segundos, que o servidor de nomes secundrio
aguarda por uma resposta do servidor de nomes primrio, antes de indicar uma falha;

Captulo 3 - DNS e NFS

11 Endereo eletrnico (e-mail) do responsvel pelo domnio;

47

11 Tempo de expire: informa o tempo, em segundos, aps o qual o servidor no mais responde por informaes daquela zona;
11 Tempo minimum: informa o Time To Live (TTL) default caso o domnio no especifique
um TTL;
11 Tempo de vida, Time To Live (TTL): valor passado pelo servidor de nomes indicando, para a
mquina que originou a pergunta, o tempo que a informao pode ser mantida em cache.

Exerccio de fixao 1 e
DNS authoritative answer
Qual das alternativas abaixo representa uma resposta non-authoritative answer quando
realizamos uma consulta a um servidor de DNS?
(1) Indica que o tempo de vida (TTL) expirou.
(2) Representa uma resposta originada do cache local.
(3) Indica um erro no registro SOA.
(4) Retorna a informao do prximo servidor DNS.
(5) Indica que o cache do servidor de DNS est envenenado (DNS Poisoning).

Registro de recursos
11 Todos os domnios podem ter um conjunto de registro de recursos associado.

11 A verdadeira funo do DNS mapear nomes de domnio em registros de recurso.


Um registro de recurso composto por cinco campos. Embora eles sejam codificados em
binrio para maior eficincia, a maioria dos registros de recurso apresentada como texto
de ASCII, sendo uma linha por registro de recurso, como mostrado a seguir: Domnio,
Tempo de vida (TTL), Classe, Tipo e Valor.
O campo Domnio refere-se ao domnio para o qual esse registro aplicado. Normalmente,
existem muitos registros para cada domnio e cada cpia do banco de dados carrega informao sobre mltiplos domnios. Esse campo a chave primria de procura usada para
satisfazer as buscas. A ordem dos registros no banco de dados no significante. Quando
Administrao de Sistemas Linux: Servios para Internet

uma busca feita sobre um determinado domnio, so devolvidos todos os registros


pedidos, emparelhados em classe.
O campo Tempo de vida (Time To Live) d uma indicao do nvel de estabilidade do registro.
Informaes muito estveis recebem valor alto, como 86400 (o nmero de segundos em um
dia). Informaes altamente volteis tm um valor pequeno, como 60 (um minuto).
O terceiro campo de todo registro de recurso a Classe. Para informao de servidor
internet, sempre IN. Para informaes no relacionadas com a internet, so usados outros
cdigos, que na prtica so vistos raramente.
O campo Tipo fornece a informao do tipo de registro. Os tipos mais importantes so:
11 Start of Authority Information (SOA): contm informaes referentes ao servidor de
nomes DNS do domnio, verso do banco de dados DNS, e-mail do administrador responsvel pelo domnio etc;
11 A (Host Adress): mantm a tabela de endereos IP dos hosts mantendo compatibilidade com
a tabela antiga de hosts. Permite mapear um nome de host para um ou cada endereo IP;
48

11 Name Server Identification (NS): especifica os servidores de nomes responsveis pelo


domnio, zona ou subzona;
11 General Purpose Pointer (PTR): permite obter um nome de host, a partir do conhecimento do seu endereo IP. a contraparte do registro A;
11 Canonical Name Alias (CNAME): permite criar um apelido para um host. Esse registro til
para ocultar detalhes de implementao da sua intranet, por exemplo: ftp.marketing.corporao.com pode ser apenas um apelido do verdadeiro servidor que executa ftp do marketing;
11 Host Information (HINFO): permite identificar propriedades de hardware e do Sistema
Operacional do host que sero exibidas toda vez que o usurio acessar esse host.
A padronizao de identificao do tipo de CPU e do Sistema Operacional deve obedecer
aos nomes listados na RFC 1700;
11 MAIL Exchange (MX): mantm informaes referentes aos hosts responsveis pelo
e-mail do domnio.
Finalmente, ns temos o campo Valor. Esse campo pode ser um nmero, um nome de
domnio, ou um conjunto de caracteres ASCII. A semntica depende do tipo de registro.
Considere que todos os domnios podem ter associado um conjunto de registro de recursos.
Conforme mencionado anteriormente, uma zona de autoridade refere-se a um local onde
esto armazenados os dados sobre as mquinas do domnio.
Todos os registros de um determinado domnio esto em uma zona de autoridade responsvel por este. Nesse caso podemos ter, considerando os domnios df.rnp.br e rnp.br, duas
zonas de autoridade. A primeira responsvel pelas informaes referentes aos servidores
daquele domnio, e a segunda, responsvel pelas informaes dos servidores do outro
domnio. Nesse caso, podemos ter:
11 Servidor 1: SOA do domnio rnp.br e responsvel pelas informaes de DNS dessa rede;
11 Servidor 2: SOA do domnio df.rnp.br e responsvel pelas informaes de DNS dessa rede.
Esses servidores podem estar inclusive em localidades diferentes, sem relao direta
(primrio e secundrio) um com o outro.
Os registros do banco de dados do DNS possuem o seguinte formato:

<nome> <TTL> <classe> <tipo> <dados>


11 Nome: identifica o objeto. Exemplo: um computador.
11 TTL: tempo que o registro deve ser mantido em cache.
11 Classe: define o tipo de servidor.
22 Servidor Internet (IN): padro.
11 Tipo: define o tipo de registro.
11 Dados: dados especficos para o tipo de registro de recurso.

Os registros do banco de dados do DNS so formados por cinco campos:


11 Nome;
11 Time To Live (TTL);
11 Classe;
11 Tipo;

Captulo 3 - DNS e NFS

22 Exemplo: tipo A contm um endereo; tipo MX contm prioridade e endereo.

11 Dados.
49

<nome><TTL><classe><tipo><dados>
Exemplo:

www 604800 IN A 200.130.77.75


Tipo

Descrio

Valor

SOA

Incio de autoridade

Informaes do domnio e da zona

Mapeamento de nome para endereo

Endereo IPv4 (32 bits)

PTR

Mapeamento de endereo para nome

Alias para endereo IP

MX

Servidor de correio eletrnico

Domnio e prioridade

NS

Servidor de nomes

Nome de um servidor de nomes

CNAME

Nome cannico (para alias)

Nome no domnio

HINFO

Informaes sobre o computador

Recursos de hardware e software

TXT

Informaes textuais

Informao de uso geral

Relembrando: registro de recurso um conjunto de cinco campos, codificados normalmente


em ASCII, com cada registro ocupando uma linha do arquivo.
Cada registro composto por: name, Time To Live, type, class e value. Onde name o nome
do recurso (que pode ser um computador, uma impressora etc.), TTL o tempo de durao
da validade da informao em segundos, type o tipo de registro, class indica a que classe
a informao pertence e value o contedo, que depende do parmetro type. O parmetro
type pode ser:
11 Start Of Authority (SOA): contm informaes sobre o domnio e zona;
11 Address (A): endereo IPv4 com 32 bits;
11 Pointer (PTR): associa um endereo IP a um nome;
11 Mail eXchange (MX): identifica o servidor de correio eletrnico;
11 Name Server (NS): nome de um servidor de DNS no domnio;

Administrao de Sistemas Linux: Servios para Internet

11 Canonical NAME (CNAME): nome do recurso no domnio;


11 Hardware INFOrmation (HINFO): informaes pertinentes ao hardware;
11 TeXT (TXT): informaes gerais.
Alm desses parmetros, existem outros menos utilizados:
11 AAAA: mapeia nomes para endereos IPv6 com 128 bits;
11 ISDN: mapeia nomes para nmeros de telefone.
Todo domnio, sendo um simples host ou um domnio de nvel mais alto, pode ter um conjunto de registros de recurso associado a ele. Para um host qualquer, o registro de recurso
mais comum somente seu IP, embora existam muitos outros tipos de registros de recurso.
Quando um resolver envia um nome de domnio ao DNS, o que volta o registro de recurso
associado com aquele nome. Assim, a verdadeira funo de DNS mapear nomes de
domnio sobre registros de recurso.
Os tipos de dados definem o tipo de registro, o que muitas vezes permite identificar o tipo
de servidor.
50

Tabela 3.1
Tabela de tipos de
registros.

11 SOA: identifica o servidor Start of Authority do domnio;


11 A e PTR: identificam servidores utilizados respectivamente em mapeamento direto e
reverso;
11 MX: identifica um servidor de correio eletrnico do domnio. Deve ser acompanhado de um
nmero de prioridade caso exista mais de um servidor de correio eletrnico no domnio;
11 NS: indica o servidor de nomes do domnio;
11 CNAME: indica nome cannico, o que permite a um determinado servidor responder por
mais de um nome;
11 HINFO: indica informao sobre o hardware e software; pouco utilizado na prtica;
11 TXT: indica informaes de uso geral.

Mapeamento direto e reverso


O mapeamento direto utilizado na traduo de nomes em endereos IP, que ser utilizado
como destinatrio do pacote a ser transmitido pela rede.

DNS

Qual o endereo

Servidor

de mail.rnp.br?

DNS raiz

3
1

DNS

DNS

Servidor

Resposta:

Servidor

200.130.38.66

DNS local

DNS br

6
DNS

Figura 3.2
Mapeamento
direto.

Servidor
DNS rnp

A consulta segue um entre dois processos:


11 O computador do usurio encaminha uma consulta ao servidor DNS presente em sua
rede local. Como este no tem a informao em seu banco de dados, proceder com
vrias consultas at a determinao do endereo IP associado ao nome informado. Em
ltima instncia, quem informar o endereo IP associado o servidor DNS da rede de
destino. Todavia, para localizao do servidor DNS da rede de destino, feita uma consulta a um servidor raiz da internet para a determinao do domnio de topo. Em seguida
feita uma consulta sobre a mquina responsvel pelo DNS do domnio procurado. Por
ltimo feita uma consulta ao servidor DNS da rede de destino, que por sua vez infor11 O servidor DNS local j possui em cache o endereo procurado. Nesse caso. a resposta
enviada diretamente ao computador que fez a consulta, sem necessidade de encaminhar
consultas a outros servidores.
O mapeamento reverso utilizado na traduo de endereos IP em nomes, na consulta
encaminhada ao servidor DNS da rede local. O servidor DNS local consulta um servidor DNS
raiz e em seguida o servidor DNS na rede de destino. O nome ento passado ao computador que efetuou a consulta.

Captulo 3 - DNS e NFS

mar o endereo IP da mquina desejada.

51

Qual o nome da
mquina com IP
200.130.77.75?

DNS

Servidor

DNS

3
4

6
Resposta:

Servidor

www.rnp.br

DNS local

DNS raiz
Servidor
Resp.

Figura 3.3
Mapeamento
reverso.

Classe C
200.130.77

Cliente e servidor DNS


Resolver (resolvedor): cliente.

11 Efetua a montagem das consultas.


11 Biblioteca de rotinas link-editada a qualquer aplicao que deseja ter um endereo
traduzido.
11 Usa o arquivo /etc/resolv.conf para localizar o servidor DNS.
Named: servidor de nomes.
11 Daemon (servio) responde s consultas efetuadas.
O software de servios de nomes do DNS dividido conceitualmente em dois componentes:
11 Resolver (lado cliente): mdulo de software responsvel pela montagem das consultas;

11 Named (servidor de nomes): processo responsvel por responder s perguntas, fornecendo as respostas apropriadas.
A implementao mais comumente encontrada do DNS, tanto para o resolver quanto
para o servidor de nomes, chamada Berkeley Internet Name Domain Server (BIND) para
ambientes Unix.
O resolver no existe como um processo distinto executado no computador. Ele , na realidade, uma biblioteca de rotinas de software (chamadas cdigo do resolver) que ligada
(link-editada) a qualquer aplicao que deseja traduzir endereos. Essa biblioteca sabe como
Administrao de Sistemas Linux: Servios para Internet

solicitar do servidor de nomes informaes a respeito de uma determinada estao. Do

52

ponto de vista de uma aplicao, o acesso ao DNS se d pelo uso de um mdulo de software
chamado resolver, que faz parte da prpria aplicao, isto , ele no faz parte do ncleo do
Sistema Operacional (j os protocolos TCP/IP so ligados ao ncleo). Os protocolos TCP/IP no
ncleo no conhecem nada a respeito do DNS. Uma aplicao (ou um servio no transparente TCP/IP) precisa traduzir o endereo simblico de seu computador hospedeiro para um
endereo IP antes de poder iniciar uma conexo de transporte (TCP ou UDP), e o resolver
que faz essa traduo. O resolver se comunica como os servidores de nomes, geralmente,
por meio de conexes UDP. Para efetuar a traduo, o resolver contata um ou mais servidores de nomes na rede, conforme indicado no arquivo /etc/resolv.conf.

Servidor DNS
11 Quando um resolvedor efetua uma consulta, esta enviada a um servidor de nomes local.
11 Se o domnio consultado estiver sob a jurisdio do servidor de nomes, este retornar os dados oficiais.

Esse tipo de consulta


usado frequentemente
em diagnsticos e na
localizao de um
spammer ou hacker.

11 Ou consultar o cache, que armazena as consultas efetuadas recentemente.

22 As informaes no cache podem estar desatualizadas.


Servidores DNS fazem a traduo de nomes de domnio em nmeros IP. Isso pode parecer
um trabalho simples, e seria, se no fosse por quatro fatores:
11 Existem bilhes de endereos IP atualmente em uso, e a maioria das mquinas possuem
um nome;
11 A quantidade de solicitaes feitas aos servidores DNS alcana a casa de muitos bilhes
em apenas um dia;
11 Nomes de domnio e nmeros IP sofrem alteraes dirias;
11 Novos domnios so criados diariamente.
O sistema DNS um imenso banco de dados, e nenhum outro banco de dados recebe tantas
solicitaes. Nenhum banco de dados no planeta tem milhes de pessoas modificando seu
contedo, diariamente. Esses fatores que fazem o servio DNS ser to especial.
O daemon em execuo no servidor DNS escuta na porta 53 por consultas feitas a outros
computadores. O servidor procura localmente em sua base de dados ou encaminha a consulta a outros servidores (raiz, domnio de topo e domnio).
Caso o servidor responsvel pelo DNS no domnio seja consultado, retornar os dados oficiais.

Tipos de servidores DNS


Existem trs tipos de servidores DNS.

11 Servidor primrio (master):


22 Mantm as informaes completas sobre os domnios que administra.
22 Atualizaes devem ser feitas no servidor primrio.
11 Servidor secundrio (slave):
22 Mantm cpias dos dados disponibilizados no servidor primrio.
22 Atua mesmo com o servidor primrio indisponvel.
22 Podem existir mltiplos servidores secundrios.
11 Servidor cache (catching):
22 No mantm informaes sobre os domnios, apenas repassa as solicitaes recebidas para outros servidores remotos.
22 Mantm respostas de consultas efetuadas anteriormente.
22 Os dados possuem tempos de vida (TTL) para possibilitar o descarte de valores
desatualizados.
22 Utilizados tambm para aumento de disponibilidade e desempenho, aliviando a

Com o BIND, cada estao usa o cdigo do resolver, porm nem todas as estaes executam
o processo servidor de nomes. Uma estao que no executa um processo servidor de
nomes localmente e depende de outras estaes para conseguir as respostas para seus
servios de nomes chamada sistema resolvedor (resolver-only system). As configuraes
somente resolvedoras so comuns apenas em estaes sem disco (diskless). A grande
maioria das estaes executa localmente um processo servidor de nomes.

Captulo 3 - DNS e NFS

carga sobre os servidores primrio e secundrios.

53

O servidor de nomes do BIND executado como um processo distinto chamado named


(daemon). Os servidores de nomes so classificados de diferentes maneiras, dependendo do
modo como estejam configurados. As trs principais categorias de servidores de nomes so:
11 Servidor Primrio (master): servidor a partir do qual todos os dados a respeito de um
domnio so originados. O servidor primrio faz a carga das informaes a respeito do
domnio diretamente a partir de um arquivo de especificaes, no formato texto, criado
pelo administrador de sistemas. Os servidores primrios so autorizados, isto , tm
informaes completas e atualizadas a respeito de seus domnios. S pode existir um
nico servidor primrio para cada domnio. Em outras palavras, esse servidor executa o
servio DNS e a fonte autorizada de informaes sobre um domnio, obtendo informaes sobre o domnio de arquivos locais que devem ser mantidos pelo seu administrador;
11 Servidor Secundrio (slave): servidores para os quais uma base de dados completa,
referente a um determinado domnio, obtida a partir do servidor primrio. Uma base
de dados correspondente a um determinado domnio, replicada no servidor secundrio,
chamada de arquivo de zona. Copiar uma base de dados de um servidor primrio
para um servidor secundrio garante que ele sempre ter informaes atuais sobre um
domnio por meio de transferncias peridicas de arquivos de zona para esse domnio.
Os servidores secundrios so autorizados somente para seus domnios. Em outras
palavras, esse servidor executa o servidor DNS, mas obtm informaes sobre o domnio
que est servindo a partir do servidor primrio. Atende a consultas DNS mesmo que o
servidor primrio esteja indisponvel, atuando neste caso como um servidor de backup.
11 Servidor cache (catching): servidores recebem as respostas para todas as consultas de
servios de nomes que venham de outros servidores de nomes. Quando um servidor
cache recebe uma resposta para uma consulta, ele guarda essa informao para utiliz-la
em outras consultas que venham a ocorrer. A maioria dos servidores de nomes armazena
respostas em memria cache e as utiliza dessa maneira. O que torna os servidores de
catching importantes que essa tcnica a nica utilizada na construo de sua base de
dados para o domnio correspondente.
Servidores cache no so autorizados, isto , suas informaes podem estar incompletas
ou desatualizadas, apesar de geralmente estarem coerentes. Atuam somente para armazenamento de consultas prvias. Sua principal funo em uma determinada rede ou sub-rede
aumentar a confiabilidade e o desempenho de consultas DNS, aliviando a carga sobre os
Administrao de Sistemas Linux: Servios para Internet

servidores primrio e secundrios da rede.

54

Uma boa prtica, em redes de grande porte, a utilizao de um servidor primrio apoiado por
um ou dois servidores secundrios para toda a rede, colocando servidores de cache em determinadas sub-redes para aumento de desempenho e confiabilidade, conforme mencionado.

Servidor DNS
DNS

primrio

Transferncia

Transferncia

de zonas

de zonas

Servidor DNS

Servidor DNS
DNS

secundrio

DNS

secundrio

Consultas

Consultas

Consultas
Figura 3.4
Exemplo
esquemtico de
servidores DNS em
uma rede.

Estaes de usurio

Servidores raiz DNS


11 A zona de root o nvel mais alto na hierarquia do sistema DNS.

11 Essa zona acomoda a identificao dos 13 servidores raiz de DNS.


11 Mantida pela Internet Assigned Numbers Authority (IANA), vinculada Internet Corporation for Assigned Names and Numbers (ICANN).
11 Todo servidor DNS deve possuir uma referncia aos servidores raiz, utilizados como
ponto inicial de consulta pelos servidores DNS da rede.
O servio DNS essencial ao funcionamento dos principais protocolos utilizados na internet.
Como se trata de um ponto crtico para toda a rede mundial de computadores, esses treze

w Cada um desses treze servidores de responsabilidade de um operador, que os arranja em


servidores esto espalhados pelo planeta.

sua maioria em conjunto de mltiplos servidores, denominados clusters, localizados muitas


vezes em diferentes cidades e pases.

Estrutura do DNS no Linux


Servidor:

11 Executvel.
11 Arquivo de configurao named.conf.
11 Arquivo de mapas da rede (zonas).
11 Arquivo para localizao do servidor DNS (resolv.conf ).
Cliente:
11 Arquivo para localizao do servidor DNS (resolv.conf ).
Nos Sistemas Operacionais Linux, a estrutura existente funciona com servidores e clientes.
Nos servidores ficam todos os arquivos que compem o banco de dados DNS: configurao
(named.conf ), mapas de rede e o resolv.conf, que aponta para os servidores DNS.
Nos clientes, apenas o arquivo resolv.conf necessrio. Um servidor de DNS tem como
objetivo fazer a converso entre nomes de computadores e seus nmeros IP. O programa

Captulo 3 - DNS e NFS

Leia a relao
atualizada no site
http://www.root-servers.org

(daemon) responsvel pela tarefa o /usr/bin/named, que parte do pacote BIND.


55

Para o funcionamento correto do DNS, alguns arquivos so necessrios para a sua configurao. Os arquivos podem ter qualquer nome, mas devem estar definidos em named.conf
(aqui estamos usando os padres da internet).
11 /etc/bind/named.conf: principal arquivo de configurao do servidor DNS;
11 /etc/bind/db.root: arquivo que aponta para hosts externos, essencial quando o servidor
estiver sendo utilizando na internet;
11 etc/bind/db.local: responsvel pela resoluo direta do domnio localhost;
11 /etc/bind/db.127: responsvel pela resoluo reversa do domnio 127.0.0.0;
11 /etc/bind/db.empresa.com.br: responsvel pela resoluo direta do domnio
empresa.com.br;
11 /etc/bind/db.X.168.192: responsvel pela resoluo reversa do domnio empresa.com.
br, supondo que a rede possui endereo de rede 192.168.X.0/255.255.255.0.
A estrutura do servio DNS no Linux, assim como em outros sistemas, consiste em uma
arquitetura cliente/servidor. No servidor h alguns arquivos, como:
11 named: arquivo executvel (daemon);
11 named.conf: arquivo de configurao lido pelo executvel no momento de sua inicializao;
11 Arquivos de mapas da rede: arquivos com as informaes sobre o(s) domnio(s)
controlado(s) pelo servidor;
11 resolv.conf: arquivo utilizado pelo resolvedor, presente tanto no servidor quanto nas
estaes Linux.

Arquivo de configurao named.conf


O arquivo named.conf possui a seguinte estrutura:

11 Opes default.
11 Definio das zonas.
22 Cache.
22 Loopback reverso.
22 Domnio direto.

Administrao de Sistemas Linux: Servios para Internet

22 Domnio reverso.
Esse o arquivo que contm as informaes referentes a cada uma das zonas administradas.
Arquivo de configurao DNS: named.conf

******************************************************
options {
directory /var/named;
forwarders {
200.221.11.100;
200.221.11.101;
};
};
zone . IN {
type hint;
file caching-example/named.ca;

56

};
zone localhost IN {
type master;
file caching-example/localhost.zone;
allow-update { none; };
};
zone 0.0.127.in-addr.arpa IN {
type master;
file caching-example/named.local;
allow-update { none; };
};
zone site.local IN {
type master;
file site.local.zone;
allow-transfer { 192.168.0.1; };
};
zone rnp.br IN {

type slave;

file slave.rnp.br;

masters { 200.130.77.69; };

};
**************************************************************
11 options: descreve as opes de inicializao do BIND;
11 directory: diretrio onde ficam os arquivos de banco de dados do domnio;
11 forwarders: endereos IP dos servidores utilizados para solicitaes DNS quando o
servidor no souber resolver;
11 zone: zona que ser configurada;
11 type: o tipo de aplicao da zona no seu servidor DNS;
11 master: servidor primrio;
11 slave: servidor alternativo;
11 file: caminho do arquivo de banco de dados do domnio situado na pasta/var/named;
11 allow-update: especifica quais dos servidores da zona sero atualizados. No caso, nenhum;
plgio de DNS.
O arquivo /etc/bind/named.conf o principal arquivo do BIND e o responsvel pelas informaes usadas para que o servio seja realizado. O arquivo possui informaes referentes
ao diretrio onde esto os arquivos de dados do DNS, os servidores secundrios, as zonas
atendidas, entre outras informaes pertinentes.
O arquivo de configurao named.conf possui uma srie de clusulas que so lidas pelo daemon.

Captulo 3 - DNS e NFS

11 allow-transfer: servidores que possuem a permisso de serem slaves. Assim, evita

Essas clusulas so estruturas que agrupam statements relacionadas, que so como diretivas
57

que norteiam o controle do comportamento do servidor em relao a vrias situaes.


Relao de clusulas que podem ser utilizadas:
11 Access Control List (ACL): define uma ou mais listas de controle de acesso, grupo de
hosts e usurios;
11 Controls: descreve e controla o acesso ao canal de controle utilizado pelo administrador
com a chave rndc;
11 include: no propriamente uma clusula, mas referncia a outros arquivos onde podem
ser colocadas clusulas que influenciam no funcionamento do servidor, e que esto em
separado normalmente por questes de segurana ou facilidade de administrao;
11 key: define chaves utilizadas em operaes que exigem autenticao;
11 logging: define o nvel de log e a localizao dos arquivos de log;
11 lwres: propriedades do BIND quando usa um resolvedor leve;
11 options: statements para controle de opes genricas ou globais, que podem ser sobrepostas por configuraes nos arquivos de zona;
11 server: define o comportamento do servidor ao responder ou acessar um servidor remoto;
11 trusted-keys: define opes para acessos que exigem autenticao;
11 view: controla as funcionalidades do BIND em funo do endereo do host;
11 zone: define as zonas mantidas pelo servidor.
As informaes disponibilizadas por meio dos statements no arquivo de configurao podem
ainda ser consideradas em razo da funo que controlam:
11 queries: controlam o comportamento das queries;
11 transfer: controlam o comportamento das transferncias de zonas;
11 operations: controlam o comportamento do servidor;
11 security: controlam o comportamento do servidor em relao segurana;
11 statistics: controlam o comportamento da parte de log do servidor.
Uma lista completa dos statements pode ser encontrada na documentao do BIND 9.

Administrao de Sistemas Linux: Servios para Internet

Arquivos de mapas da rede

58

11 Exemplo de arquivo de mapa de rede:


11 Zona de domnio direto: rede exemplo.com

; arquivo db.zone
$TTL 604800
@

IN

SOA

mar.exemplo.com. root.mar.exemplo.com. (

2 ; Serial

604800 ; Refresh

86400 ; Retry

2419200
; Expire

604800 )

; Negative Cache TTL

@ IN NS
mar.exemplo.com.
localhost IN

A 127.0.0.1

mar IN A
200.130.77.130
sol IN A
200.130.77.131

Esse o arquivo que contm os nomes dos nmeros IP de cada mquina desse domnio.
Arquivo de configurao DNS: mapas de rede

*************************************************************
;
; Configuraes do domnio site.local.
;
$TTL
@

86400

IN

SOA

ns01.site.local. root. (
2007071500; Serial
28800

; Refresh

14400

; Retry

3600000 ; Expire
86400

; Minimum


604800)

; TTL

;
; Definio dos Servidores de Nome.
;
IN

NS

ns01.site.local.

IN

NS

ns02.site.local.

;
; Definio dos Mail Exchanger.
;
IN

MX

10 mail.site.local.

;
; Definio dos endereos de Hosts.
;
localhost

IN

127.0.0.1

ns01

IN

192.168.0.254

ns02

IN

192.168.0.1

mail

IN

192.168.0.10

mysql
www

IN
IN

A
A

192.168.0.9
201.26.142.72

**************************************************************
11 Serial: nmero serial da zona, deve ser incrementado sempre que for feita alguma alterao, para que os servidores secundrios possam se atualizar;
11 Refresh: nmero de segundos entre pedidos de atualizao oriundos dos servidores
11 Retry: nmero de segundos que os servidores secundrios vo esperar para refazer uma
consulta que falhou;
11 Expire: nmero de segundos que um servidor, master ou slave, esperar para considerar
a informao expirada, se ele no conseguir alcanar o servidor de nomes primrio;
11 Minimum: o TTL default caso o domnio no especifique um TTL;

Captulo 3 - DNS e NFS

secundrios;

59

11 Time to Live (TTL): nmero de segundos que um nome de domnio cacheado localmente antes de expirar e retornar para os servidores de nomes de autoridade para
atualizao das informaes.
Conforme mencionado anteriormente, o funcionamento do servidor DNS baseado em
zonas controladas por mapas de rede. Os arquivos de mapas de rede so os arquivos que
contm as informaes de cada uma das zonas atendidas pelo servidor DNS. So de dois
tipos: traduo direta e traduo reversa. So os arquivos onde cada um dos computadores
que pertencem a uma empresa so descritos, com nome, endereo IP e servidor de e-mail,
entre outras informaes, como Time To Live (TTL), serial para controle de alteraes etc.
Um servidor DNS necessita de pelo menos quatro arquivos com mapas de rede:
11 root.servers: mantm uma relao dos servidores raiz da internet; normalmente ficam
em um arquivo denominado named.ca;
11 localhost: permite a resoluo do nome localhost para o endereo de loop local 127.0.0.1;
11 direct-map: apoiam o processo de converso de um nome em um endereo IP;
11 reverse-map: apoiam o processo de converso de um endereo IP em um nome.

Exemplo de arquivo de mapa de rede

Zona de domnio reverso: rede 200.130.77:

; arquivo db.77.130.200
$TTL 604800
@

IN

SOA

mar.exemplo.com. root.mar.exemplo.com. (

; Serial

604800
; Refresh
86400
; Retry
2419200
; Expire

604800 )

; Negative Cache TTL

;
NS mar.exemplo.com.
@ IN
PTR mar.exemplo.com.
130 IN
PTR sol.exemplo.com.
131 IN

Administrao de Sistemas Linux: Servios para Internet

Arquivos com os mapas de rede:

60

11 root.servers (arquivo db.root): servidores raiz da internet;


11 localhost (arquivo db.local): informaes sobre o nome localhost;
11 direct-map (arquivo db.zone): informaes sobre o domnio da rede;
11 reverse-map (arquivo db.77.130.200): informaes sobre a rede 200.130.77.0.

Arquivo resolv.conf
O arquivo /etc/resolv.conf usado pelas mquinas Linux para localizar o servidor DNS.
11 Diretivas:
22 nameserver.
33 Endereo IP do servidor DNS.

22 search.

33 Especifica os domnios a serem utilizados na busca pelo host a que se deseja


conectar.
33 A adio de muitos domnios pode causar lentido na resoluo dos nomes.
22 domain.
33 Alternativa diretiva search.
Esse o arquivo responsvel por indicar quem so os servidores de nome para consultas de
DNS. Ele contm uma lista de domnios ao qual pertence a mquina e os servidores de nome
que sero consultados.
Arquivo de configurao DNS resolv.conf

*********************************************
search site.local
nameserver 192.168.0.254
nameserver 192.168.0.1
*********************************************
11 search: especifica os domnios aos quais a mquina pertence;
11 nameserver: especifica o endereo IP dos servidores DNS;
11 domain: alternativa ao search.
Adicionalmente a essas zonas, outras podem ser includas. Devem ser includas zonas para
cada rede ou domnio adicional sob responsabilidade do servidor, alm de zona para lidar
com servidor secundrio. O arquivo /etc/resolv.conf o arquivo que possui a informao do
computador que est rodando o servio DNS e o domnio a ser utilizado.
O arquivo resolv.conf utilizado pelo resolvedor (resolver) das mquinas Linux para localizar
o servidor DNS. A principal informao desse arquivo o endereo IP do servidor DNS,
informado pela diretiva nameserver <Endereo IP>.
Pode ainda ser utilizada a diretiva search ou domain, til em consultas DNS quando informado somente o nome do host em vez do endereo completo (FQDN). Vrios domnios podem
ser adicionados, o que deve ser evitado, pois causar uma consulta DNS em cada um deles.

Exerccio de fixao 2 e
Servidor de DNS Cache

DNS com IPv6


Com o desenvolvimento do IPv6, surgiu a necessidade de se prover um servio de
nomes que suporte esse novo protocolo. Foi criado um novo registro que armazena
endereos no formato do IPv6.
11 AAAA.
Um novo domnio foi criado para a resoluo de reverso, descrito na RFC 3152.

Captulo 3 - DNS e NFS

Instale e configure o servidor de DNS apenas com a funo de cache.

61

11 ip6.arpa.
Dois tipos de consultas podem ser feitas em um DNS:
11 Resoluo de nomes.
11 Resoluo de endereo reverso.

Com o desenvolvimento do IPv6, surge a necessidade de se prover um servio de nomes que


suporte esse novo protocolo. Para isso, foi criado um novo registro que armazena endereos
no formato do IPv6, o AAAA. Esto em fase de desenvolvimento novos tipos de registros
que facilitaro a manuteno desse servio. Alm disso, um novo domnio foi criado para a
resoluo de reverso, o ip6.arpa, descrito na RFC 3152.
Como servidor de nomes, pode-se utilizar o BIND verso 9, cuja implementao a mais
robusta. Dois tipos de consultas podem ser feitas em um DNS:
11 Resoluo de nomes: name to address lookups (forward lookups);
11 Resoluo de endereo reverso: address to name lookups (reverse lookups).

Resoluo de Nomes
Para Resoluo de Nomes (forward lookups), usado o tipo AAAA. Os registros AAAA so
paralelos e semelhantes aos Registros A no IPv4. Em um nico endereo possvel especificar um endereo IPv6 completo. Por exemplo:

www.ipv6.br.

IN A

200.160.4.22

www.ipv6.br.

IN AAAA 2001:12ff:0:4::22

Resoluo de Endereo Reverso


Para resoluo de reverso, foi adicionado o registro PTR ip6.arpa, responsvel por traduzir
endereos IPv6 em nomes. Em sua representao, omitir sequncia de zeros no permitido e o bit menos significativo colocado mais esquerda.
O arquivo de configurao named.conf deve ser editado e includa uma nova zona, a reversa,
procedendo da seguinte forma com a configurao:

Administrao de Sistemas Linux: Servios para Internet

Arquivo: named.conf

62

*********************************************
zone 0.0.0.0.1.2.f.f.1.0.0.2.ip6.arpa {
type master;
file 2001:12ff:0000.ip6.arpa;
};
*********************************************
Passamos, assim, a responder pelo reverso do bloco que foi cedido. Tal prefixo j deve ter
sido delegado pelo provedor de endereos IPv6, da mesma forma como ocorre na delegao
de subdomnios.
A forma como se declara o registro reverso semelhante ao IPv4, ou seja, comeando pelo
ltimo dgito hexadecimal do endereo, e denominado de nibble format.

Arquivo: 2001:12ff:0000.ip6.arpa

*********************************************
$TTL 86400
@

IN

SOA

ns.ipv6.br.

root.ipv6..br. (

2001112201
3H

; refresh

15M

; retry

1W

; expiry

1D )
IN

NS

; minimum

ns.ipv6.br.

2.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.4.0.0.0 IN PTR www.ipv6.br.


*********************************************

DNSSEC
11 Domain Name System SECurity Extensions (DNSSEC) tem por objetivo adicionar mais

segurana ao sistema de resoluo de nomes.


11 Passou a ser um padro internacional que estende a tecnologia DNS, garantindo a
autenticidade e a integridade das informaes.
11 Utiliza o mecanismo de criptografia de chaves pblicas.
11 Criado para solucionar alguns problemas encontrados no atual sistema de resoluo
de nomes.
11 O objetivo da extenso DNSSEC assegurar o contedo do DNS e impedir os ataques.
Tem por objetivo adicionar mais segurana ao sistema de resoluo de nomes, reduzindo o
risco de manipulao das informaes por terceiros. Passou a ser um padro internacional,
que estende a tecnologia DNS, garantindo a autenticidade e a integridade das informaes.
Utiliza o mecanismo de criptografia de chaves pblicas. Foi criado para solucionar alguns
problemas encontrados no atual sistema de resoluo de nomes, como as falsas resolues
que criam oportunidades para alteraes de dados em diversos tipos de transaes, como
por exemplo, compras eletrnicas No protocolo DNS, um ataque onde a informao corrompida extremamente difcil de ser detectado e, na prtica, impossvel de ser prevenido.
O objetivo da extenso DNSSEC assegurar o contedo do DNS e impedir estes ataques,
validando os dados e garantindo a origem das informaes.
11 Prov segurana para a resoluo de endereos.

11 Sua verificao ocorre antes de outras aplicaes de segurana, tais como, ssl, ssh,
sftp, PGP etc.
11 Permite que se obtenha com preciso o endereo IP, por meio dos seguintes servios:
22 Autenticao da origem.
22 Integridade dos dados.
22 Prova de inexistncia.

Captulo 3 - DNS e NFS

11 Funciona como um caminho alternativo para a verificao de autenticidade da informao.

63

O sistema DNSSEC permite que se obtenha com preciso o endereo IP, atravs dos
seguintes servios:
11 Autenticao da origem: a informao somente pode ser originada do servidor DNS
autoritativo do domnio;
11 Integridade dos dados: a informao recebida exatamente a mesma fornecida pelo
servidor DNS autoritativo do domnio;
11 Prova de inexistncia: no caso de uma resposta negativa fornecida pelo servidor DNS autoritativo do domnio, pode-se comprovar que essa informao est correta. Dependendo do
tipo de ataque, isso pode ser suficiente para que o sistema DNSSEC o interrompa.
11 Para que esses servios possam ser ativados, o DNSSEC necessita que todas as solici-

taes sejam assinadas digitalmente.


11 Novos Registros de Recursos passam a ser criados durante o processo de assinatura digital:
22 DNSKEY.
22 RRSIG.
22 Delegatin Signer (DS).
22 NSEC.
Para que esses servios possam ser ativados, o DNSSEC necessita que todas as solicitaes
sejam assinadas digitalmente, usando uma ou mais chaves privadas e um algoritmo assimtrico de criptografia. Novos Registros de Recursos (RRs) passam a ser criados durante o
processo de assinatura digital, usando o utilitrio dnssec-signzone.
11 DNSKEY: armazena as chaves pblicas utilizadas para a assinatura do domnio;
11 RRSIG: armazena as chaves privadas utilizadas para a assinatura dos Rrset;
11 Delegation Signer (DS): ponteiro para a prxima cadeia de confiana;
11 Next Secure (NSEC): permite autenticar uma resposta negativa.

DNSKEY
um Resource Record que armazena a chave pblica da zona de autoridade.

Administrao de Sistemas Linux: Servios para Internet

exemplo.com.

64

900

IN

DNSKEY 256 3 5 (

AwEAAeZPN2yMs9q6kgYjFUblEwjCnWWcPq+TGcJrD5ga

XXAbP5MAqIkgZ5J4TU1mmpL1A8gMfd/wUmBkVipXR8FK

HRajBZSRfgeKnKaQtrxNZ32Ccts2F6Ylv9WaLXtiqebg

OZtuJFpQr6pnIt/FoOI+I7BUSNrX28VTq4jXu/qTrmM/ ); key

id = 62745

RRSIG
um Resouce Record que contm a assinatura de um RRset (conjunto de RR com o mesmo
nome de domnio, classe e tipo) especfico de uma determinada chave DNSKEY. Possui uma
validade inicial e final.

exemplo.com.

900 IN RRSIG SOA 5 3 900 20070617200428 (

20070518200428 62745 mar.exemplo.com

glEeCYyd/CCBfzH64y0RAQf9OxYDsI4xuBNaam+8DZQZ

xeoSLQEEtwmp6wBtQ7G10wSM9nEjRRhbZdNPNKJMp2PE

lLLgLI+BLwdlz0t8MypcpLOaTm9rc7pP7UR5XLzU1k8D

m6ePW1bNkId7i0IPSghyoHM7tPVdL2GW51hCujA= )

Delegation Signer (DS)


um hash do registro de recurso DNSKEY. Serve para informar a existncia de uma cadeia
de confiana entre um domnio e seus subdomnios. Indica que a zona delegada est assinada e qual a chave que foi utilizada.
O Registro de Recurso DS um ponteiro para a cadeia de confiana, que garante a autenticidade das delegaes de uma zona at um ponto de confiana.

exemplo.com. IN DS 817 5 1 EAEC29E4B0958D4D3DFD90CC70C6730AD5880DD3


possvel obter os DS da zona utilizando o sistema Whois.

$whois rnp.br
% Copyright (c) Nic.br
% The use of the data below is only permitted as described in
% full by the terms of use (http://registro.br/termo/en.html),
% being prohibited its distribution, comercialization or
% reproduction, in particular, to use it for advertising or
% any similar purpose.
% 2012-02-16 17:42:15 (BRST -02:00)
domain:
owner:
ownerid:

rnp.br
Associao Rede Nacional de Ensino e Pesquisa
003.508.097/0001-36

country:

BR

owner-c:

RCO217

admin-c:

NES

tech-c:

FRK16

billing-c: RCO217
nserver:

teyr.na-cp.rnp.br 200.130.25.17 2001:12f0:3f:3::11

nsstat:

20120216 AA

nslastaa:
nserver:

20120216

Captulo 3 - DNS e NFS

responsible: Nelson Simes Silva

bellana.nc-rj.rnp.br 200.143.193.3 2001:12f0:3e:102::3


65

nsstat:
nslastaa:

20120216 AA
20120216

nserver:

lua.na-df.rnp.br 200.130.77.69 2001:12f0:3d:102::45

nsstat:

20120216 AA

nslastaa:

20120216

dsrecord:

51124 RSA/SHA-1 4ED9FC74C63C99E52E2FC492517C73AEFAC316F2

dsstatus:

20120216 DSOK

dslastok:

20120216

created:

before 19950101

changed:

20111125

status:

published

Next Secure (NSEC)


Permite autenticar uma resposta negativa, com pr-assinatura, sem a necessidade de
chaves on-line para assinatura, diminuindo a possibilidade de ataque DOS.

exemplo.com 900 IN NSEC ns1.exemplo.com. NS SOA RRSIG NSEC DNSKEY

Implementao do DNSSEC
11 Utilizar o aplicativo dnssec-keygen para a gerao das chaves do domnio.
11 Usar o aplicativo dnssec-signzone para assinar o arquivo de zona do domnio.
11 Atualizar o arquivo named.conf para referenciar o novo arquivo de zona.
11 Reiniciar o Bind.
11 Adicionar o DS no site do registro.br.
11 Aguardar a nova publicao no site do registro.br.

Administrao de Sistemas Linux: Servios para Internet

1. Utilizar o aplicativo dnssec-keygen para a gerao das chaves do domnio.

66

$ dnssec-keygen -r /dev/urandom -f KSK -aRSASHA1 -b 1024 -ZONE


exemplo.com
O comando vai gerar dois arquivos, com as extenses .key e .private.
2. Usar o aplicativo dnssec-signzone para assinar o arquivo de zona do domnio.

$ dnssec-signzone -S -z -o exemplo.com db.exemplo.com


O comando vai gerar um novo arquivo de zona com a extenso .signed. O perodo de validade das chaves de 30 dias e as chaves devero ser revalidadas antes de sua expirao.
Para isso, altere o serial no registro SOA e repita o processo.
3. Atualizar o arquivo named.conf para referenciar o novo arquivo de zona.

zone exemplo.com{
type master;

file db.exemplo.com.br.signed;
};
4. Reiniciar o Bind.
5. Adicionar o DS no site do registro.br.

$ cat dsset-exemplo.com | head -1


exemplo.com. IN DS 817 5 1 EAEC29E4B0958D4D3DFD90CC70C6730AD5880DD3
Copiar os dados de Key Tag e Digest do arquivo dsset-exemplo.com para a interface no site
do registro.br
6. Aguardar a nova publicao no site do registro.br.

Exerccio de fixao 3 e
DNSSec
So vantagens de se implementar o DNSSEC:
FF Fornece autenticao da origem da informao.
FF Evita ataque do tipo DDOS.
FF Evita ataques do tipo Man-in-the-Middle e Spoofing.
FF Garante a integridade dos dados DNS.
FF Reduz o consumo de energia, sendo boa prtica na TI verde.
FF Evitar a manipulao da memria cache (Pharming, Phishing etc.).
FF Garante a integridade dos dados do usurio.
FF independente dos algoritmos criptogrficos.

Domnios virtuais
11 Um domnio virtual uma entrada DNS em um servidor que responde por mltiplos

endereos IP.
11 Necessrio caso se deseje que um mesmo servidor DNS responda por vrios
endereos IP.
11 Exemplo:
22 Permitir que uma nica mquina atenda por:
33 www.virtual1.exemplo.com: 192.168.1.10
33 www.virtual2.exemplo.com: 192.168.1.20
22 Utiliza recurso de IP aliasing presente no kernel do Linux.

mente arquivos de mapas da rede.


Domnios virtuais so entradas no DNS para permitir que um servidor possa responder por
mais de um nmero IP; so necessrios para que um nico servidor DNS responda a solicitaes por mais de um nmero IP.

Captulo 3 - DNS e NFS

33 Algumas vezes necessrio recompilar o kernel e depois configurar normal-

67

Testando o servidor DNS


Para testar o servidor DNS, podem ser utilizados os seguintes comandos:

11 nslookup (em desuso).


11 dig (atual).
Comando dig:
11 Ferramenta flexvel para consultas DNS, que apresenta informaes detalhadas
sobre o endereo consultado.
11 Exemplo:
22 dig x 200.130.77.75
22 dig www.rnp.br
Exemplo de utilizao do comando dig:

dig www.rnp.br

; <<>> DiG 9.2.4 <<>> www.rnp.br


;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53116
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.rnp.br. IN
A
;; ANSWER SECTION:
www.rnp.br.

290 IN A

200.143.193.5

www.rnp.br.

290 IN A

200.130.77.75

Administrao de Sistemas Linux: Servios para Internet

;; Query time: 19 msec

68

;; SERVER: 172.19.0.2#53(172.19.0.2)
;; WHEN: Fri Sep 29 16:49:21 2006
;; MSG SIZE rcvd: 60

Network File System (NFS)


O NFS foi desenvolvido para permitir que mquinas possam montar uma partio de disco
em uma mquina remota como se fosse em um disco local, permitindo o compartilhamento
de arquivos na rede. Este captulo aborda a teoria desse servio, configurao, otimizao
de desempenho e ajustes, sendo que ao final sero praticadas a configurao do servidor e
do cliente, e ainda testes de funcionamento.

Desenvolvido para permitir que mquinas montem parties de disco em mquinas remotas.

11 Compartilhamento na rede.
Outros sistemas:
11 Samba.
11 AFS.
11 Entre outros.
H outros sistemas que proveem uma funcionalidade similar ao NFS; o Samba, por exemplo,
prov servios de arquivos aos clientes Windows; o Andrew File System (AFS), um projeto
open-source da IBM que prov um mecanismo de compartilhamento de arquivos com caractersticas de performance e segurana adicional. Algumas das caractersticas do AFS foram
includas na verso 4 do NFS.
Vantagens do NFS: maturidade e sistema padro suportado por diversas plataformas.

Configurando um servidor NFS


Instalar:

11 nfs-kernel-server.
11 nfs-commom.
11 portmap.

Exerccio de fixao 4 e
Instale o servidor NFS
Instale o servio NFS no servidor 192.168.X.1. Para isso, necessrio que estejam instalados
trs pacotes: nfs-kernel-server, nfs-common e portmap.
Arquivos de configurao:

11 /etc/exports.
11 /etc/hosts.allow.
11 /etc/hosts.deny.
Para configurar um servidor NFS, necessrio fazer a configurao do servio NFS, por meio
de seus arquivos de configurao, e disparar a execuo do servio.
O arquivo /etc/exports contm uma lista de entradas; cada entrada indica um volume compartilhado e como cada um est compartilhado. Uma entrada desse arquivo similar a:

directory machine1(option11,option12) machine2(option21,option22)


Onde:
11 directory: indica o diretrio que se deseja compartilhar e pode ser um volume inteiro. Ao
tambm sero compartilhados;
11 machine1 e machine2: mquinas clientes que tero acesso ao diretrio especificado em
directory. As mquinas podem ser listadas usando endereos IP ou nomes (por exemplo,
machine.company.com ou 192.168.0.8). Usar endereos IP mais confivel e mais seguro;
11 optionxx: lista de opes para cada mquina, que descrever o tipo de acesso que a
mquina ter. Algumas opes importantes sero examinadas a seguir.

Captulo 3 - DNS e NFS

compartilhar um diretrio, todos os diretrios abaixo dele no mesmo sistema de arquivos

69

/etc/exports
Lista entradas, com cada uma indicando um volume compartilhado.

11 directory machine1 (option11, option12).


11 machine2 (option21, option22).
11 Opes:
22 ro
22 rw
22 no_root_squash
22 no_subtree_check
22 sync
Opes do arquivo /etc/exports:
11 ro: diretrio compartilhado apenas para leitura; a mquina cliente no ser capaz de
escrever. Essa a opo default.
11 rw: a mquina cliente ter acesso de leitura e escrita ao diretrio;
11 no_root_squash: por default, qualquer pedido feito pelo superusurio na mquina
cliente tratado como se fosse feito pelo usurio nobody no servidor. Se no_root_squash
for selecionado, ento o superusurio na mquina cliente ter o mesmo nvel de acesso
aos arquivos no sistema como superusurio no servidor, o que pode ter srias implicaes de segurana, mas pode ser necessrio se quisermos executar trabalhos administrativos na mquina cliente que envolvam diretrios exportados;
11 no_subtree_check: se apenas uma parte do volume exportada, uma rotina chamada
subtree checking verifica se um dado arquivo requisitado do cliente est na parte adequada do volume. Se o volume inteiro for exportado, desabilitar essa opo aumentar a
velocidade de transferncias;
11 sync: por default, os comandos exportfs usam o comportamento async, indicando para
a mquina cliente que um processo de escrita num dado arquivo est completo quando
o NFS finalizar a escrita no sistema de arquivos. Esse comportamento pode causar corrupo nos dados, em caso de reinicializao do servidor, o que pode ser prevenido pela

Administrao de Sistemas Linux: Servios para Internet

opo sync.

70

Um exemplo:
11 /usr/local 192.168.0.1 (ro) 192.168.0.2 (ro)
11 /home 192.168.0.1 (rw) 192.168.0.2 (rw)
Outro exemplo:
11 /usr/local 192.168.0.0/255.255.255.0 (ro)
11 /home 192.168.0.0/255.255.255.0 (rw)
Para usar netgroups NIS, basta anexar o nome do netgroup com um caractere @.
Suponha que temos duas mquinas clientes, slave1 e slave2, que tm endereos IP

192.168.0.1 e 192.168.0.2, respectivamente, e que queremos compartilhar binrios e alguns


diretrios com essas mquinas. Uma configurao tpica para /etc/exports pode ser:

/usr/local

192.168.0.1 (ro) 192.168.0.2 (ro)

/home

192.168.0.1 (rw) 192.168.0.2 (rw)

Sendo assim, h um compartilhamento read-only para slave1 e slave2, porque eles devem
provavelmente conter os binrios. Por outro lado, alguns diretrios necessitam ser exportados read-write, se os usurios quiserem efetuar escritas sobre eles.
Ao se tratar com uma rede de grande porte, primeiro pode-se acessar uma grande faixa de
mquinas especificando uma rede e uma mscara. Por exemplo, se quiser permitir o acesso
para todas as mquinas com endereos IP entre 192.168.0.0 e 192.168.0.255, ento podemos
ter as seguintes entradas:

/usr/local

192.168.0.0/255.255.255.0 (ro)

/home

192.168.0.0/255.255.255.0 (rw)

Para especificar um netgroup NIS no seu arquivo exports, simplesmente anexe o nome do
netgroup com um caractere @.
Outro formato que pode ser utilizado, em vez de hostnames, algo do tipo *.foo.com ou
192.168.
Algumas precaues devem ser tomadas em relao ao que pode e o que no pode ser
exportado. Primeiro, se um diretrio exportado, seus diretrios pai e filho no podem ser
exportados se eles estiverem no mesmo sistema de arquivos. Porm, a exportao de ambos
os diretrios pode no ser necessria, uma vez que listar o diretrio pai no arquivo /etc/exports
far com que todos os diretrios sejam exportados, dentro do sistema de arquivo.

/etc/hosts.allow e /etc/hosts.deny
11 Especificam os hosts que podem usar servios numa dada mquina.

11 hosts.allow analisado antes do servidor responder a um pedido


11 Se a mquina no se associa a uma entrada em hosts.allow, o servidor ento verifica
hosts.deny.
Esses dois arquivos so utilizados para controlar o acesso aos servios TCP do seu computador, especificando as mquinas que, na rede, podem ou no usar esses servios. Cada
linha dos arquivos composta pelo nome do servio e de uma lista de mquinas, que
podem (allow) ou no podem (deny) usar o servio. Ao receber uma solicitao de uma
mquina qualquer, o servidor faz o seguinte:
11 Primeiro, verifica no arquivo hosts.allow se a mquina est includa nele. Se estiver, seu
acesso estar permitido.
11 Caso contrrio, o servidor verifica no arquivo hosts.deny se a mquina est includa nele;
se estiver, o acesso negado.
11 Se a mquina no estiver em nenhum dos dois arquivos, o acesso tambm permitido.
Alm de controlar os servios inetd, tais como telnet e FTP, esses arquivos tambm podem
daemon a ter seu acesso restringido o portmapper, que tem como funo informar a porta
em que cada servio responde. Restringir o acesso ao portmapper a melhor defesa contra
qualquer um que queira invadir o seu sistema a partir do NFS, porque usurios no autorizados no podero encontrar os daemons NFS. Todavia, h dois pontos a considerar:
11 Restringir o acesso ao portmapper no suficiente se algum intruso j souber, por
alguma razo, como encontrar todos os daemons;

Captulo 3 - DNS e NFS

ser utilizados para restringir a conexo aos daemons envolvidos no servio NFS. O primeiro

71

11 Se o Network Information Service (NIS) est sendo executado, restringir portmapper


tambm restringir pedidos ao NIS. Em geral, tambm aconselhvel negar acesso a
endereos IP aos quais no seja preciso permitir acesso explicitamente. O primeiro passo
para fazer isso adicionar a seguinte entrada ao arquivo /etc/hosts.deny:

portmap:ALL
Adicione entradas para cada um dos daemons NFS:

lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
11 Restringir acesso a portmapper a melhor defesa contra ataques a NFS.

11 hosts.deny:

portmap:ALL, lockd:ALL, mountd:ALL, rquotad:ALL, statd:ALL


11 hosts.allow.

service: host [ou network/netmask], host [ou network/netmask]

Alguns administradores de sistemas preferem colocar a entrada ALL:ALL no arquivo


/etc/hosts.deny, fazendo com que o acesso seja negado a todos os hosts, a menos que seja
explicitamente permitido. Depois, necessrio adicionar uma entrada ao hosts.allow para
disponibilizar o acesso aos hosts. As entradas em hosts.allow seguem o formato:

service: host [ou network/netmask], host [ou network/netmask]


Onde host o endereo IP de um cliente e pode ser possvel, em algumas verses, usar o
nome DNS do host, embora no seja aconselhvel. Suponha que desejamos permitir acesso
a slave1.foo.com e slave2.foo.com e que os endereos IP dessas mquinas sejam 192.168.0.1 e
192.168.0.2, respectivamente. Teramos, portanto, as seguintes entradas para /etc/hosts.allow:

portmap: 192.168.0.1, 192.168.0.2

Administrao de Sistemas Linux: Servios para Internet

Para verses recentes do nfs-utils, pode-se adicionar:

72

lockd: 192.168.0.1, 192.168.0.2


rquotad: 192.168.0.1, 192.168.0.2
mountd: 192.168.0.1, 192.168.0.2
statd: 192.168.0.1, 192.168.0.2

Iniciando os servios NFS


Pr-requisitos:
11 Verso do kernel que suporte NFS e verso adequada de nfs-utils.
Iniciando o portmapper.
11 Localizado em /sbin e, algumas vezes, em /usr/sbin.

Pr-requisitos
O servidor NFS deve ser configurado. Primeiro, preciso ter os pacotes apropriados instalados. Isso consiste principalmente numa verso de kernel que suporte NFS e uma verso
adequada do pacote nfs-utils.
Em seguida, antes de iniciar o NFS, verifique se a rede TCP/IP est funcionando corretamente na sua mquina. Feito isso, j possvel iniciar o NFS e execut-lo aps reboot da
mquina, pois os scripts de inicializao j detectam que o arquivo /etc/exports foi configurado e inicializar o NFS. Se no funcionar corretamente, alguns daemons precisaro ser
inicializados para executar os servios NFS.

Iniciando o portmapper
NFS depende do daemon portmapper, tambm chamado portmap ou rpc.portmap. Ele
deve estar localizado em /sbin e, algumas vezes, em /usr/sbin. Distribuies mais recentes
do Linux inicializam esse daemon no processo de boot; de qualquer modo, importante ter
certeza de que ele est executando antes de trabalhar com o NFS. Digite:

ps aux | grep portmap


Daemons do pacote nfs-utils.

11 rpc.nfsd: daemon do NFS que faz a maior parte do trabalho.


11 rpc.lockd e rpc.statd: controlam os acessos de leitura e gravao de arquivos.
11 rpc.mountd: manipula os pedidos iniciais de montagem de file systems.
11 rpc.rquotad: gerencia as quotas de disco dos usurios em volumes exportados.
Lockd chamado pelo nfsd sob demanda, portanto no se preocupe em inici-lo. Statd
precisa ser iniciado separadamente. Distribuies Linux mais recentes tm scripts de inicializao para esses daemons.
Os daemons citados so parte do pacote nfs-utils e podem estar nos diretrios /sbin ou /usr/sbin.
Se a distribuio em uso no inclu-los nos scripts de inicializao, ento devemos adicion-los
e executar configurao para que iniciem na seguinte ordem:
1. rpc.portmap
2. rpc.mountd
3. rpc.nfsd, rpc.statd
4. rpc.lockd (se necessrio)

Verificando a execuo do NFS


11 Consulte o portmapper com o comando rpcinfo -p.
11 Se portamapper, nfs e mountd no estiverem listados, retorne e tente novamente
inicializar os daemons.

Captulo 3 - DNS e NFS

5. rpc.rquotad

73

11 A sada algo como:

program vers proto port


100000

tcp

111 portmapper

100000

udp

111 portmapper

...

Para fazer isso, consulte o portmapper com o comando rpcinfo -p para verificar os servios
que esto executando. A sada algo como:

program ver proto port program ver

proto port

100000

2 tcp

111

portmapper

100003 3

udp 2049 nfs

100000

2 udp

111

portmapper

100024 1

udp 944 status

749

rquotad

100024 1

100011

1 udp

tcp 946 status

100011

2 udp

749

rquotad

300019 1

tcp 830 amd

100005

1 udp

759

mountd

300019 1

udp 831 amd

100005

1 tcp

761

mountd

100021 1

udp 1042

nlockmgr
100005

3 tcp

771

100005

2 tcp

mountd

100021 3

udp 1042 nlockmgr

766

mountd

100021 4

udp 1042

769

mountd

100021 1

tcp 1629

771

mountd

100021 3

tcp 1629

2049 nfs

100021 4

tcp 1629

nlockmgr
100005

3 udp

nlockmgr
100005

3 tcp

nlockmgr
100003

2 udp

nlockmgr

Administrao de Sistemas Linux: Servios para Internet

Essa sada indica que as verses 2 e 3 do NFS, a verso 1 do rpc.statd e as verses 1, 3 e 4 do rpc.

74

lockd esto funcionando. H tambm outros servios listados, dependendo do NFS estar sobre
TCP ou UDP. O Linux usa UDP por default, a menos que TCP seja explicitamente requisitado.
Se no estiverem listados os servios portmapper, nfs e mountd, ento necessrio
retornar e inicializar novamente os daemons.

Configurao de cliente NFS


Montagem de diretrios remotos:
11 Cliente NFS deve executar o portmapper.
11 No cliente e no servidor so necessrios os daemons:
22 rpc.statd.
22 rpc.lockd.

Exemplo:

# mount master.foo.com:/home

/mnt/home

Antes de comear, deve-se ter certeza de que o cliente tem suporte para montagem NFS.
Se estiver sendo usado o kernel com o sistema de arquivos /proc, possvel verificar o
arquivo /proc/filesystems e ter certeza de que h uma linha contendo NFS. Se no, digite
insmod nfs para ter certeza de que o NFS foi compilado como um mdulo; caso contrrio,
necessrio construir ou fazer download de um kernel com suporte para NFS.
Para usar uma mquina como cliente NFS, necessrio que o portmapper esteja rodando
nela. Para usar o controle de acesso de arquivos NFS, ser necessrio tambm que rpc.statd
e rpc.lockd estejam rodando no cliente e no servidor. Distribuies mais recentes iniciam
esses servios por default, em tempo de boot.
Com portmap, lockd e statd executando, o administrador deve ser capaz de montar o
diretrio remoto de seu servidor da mesma forma que montado um disco local, com o
comando mount. Suponha que um dado servidor chamado master.foo.com e que queremos
montar o diretrio /home em slave1.foo.com. Basta digitar:

# mount master.foo.com:/home /mnt/home


O diretrio /home em master aparecer como diretrio /mnt/home em slave 1 (do ltimo exemplo).

Montagem em tempo de boot:


11 O tipo de sistema de arquivos tem de ser NFS e dump e fsck devem ter valor zero.
Modos de falha:
11 Soft:
22 Se um arquivo falha, o cliente NFS reportar erro.
22 Pode causar corrupo de arquivos e perda de dados.
22 No se recomenda esse tipo de configurao.
11 Hard:
22 Quando o servidor NFS voltar ao estado on-line, o programa continuar do ponto
em que parou.
22 Recomenda-se esse tipo de configurao.

Montagem de sistemas de arquivos NFS em tempo de boot


Sistemas de arquivos NFS podem ser adicionados no arquivo /etc/fstab da mesma maneira
que os sistemas de arquivos locais. A nica diferena que o tipo de sistema de arquivos
ser setado para NFS, e dump e fsck tero de ser ajustados para zero. Ento, para o
exemplo, a entrada no /etc/fstab seria:

mountpoint

fs-type

options

dump fsck

...
master.foo.com:/home /mnt

nfs

rw

...
Se estiver sendo usado um automounter como amd ou autofs, as opes nos campos cor-

Captulo 3 - DNS e NFS

# device

respondentes das listagens do mount seriam similares, se no idnticas.


75

Opes de montagem
H vrias opes a considerar em relao forma pela qual o cliente NFS manipula uma
falha (crash) no servidor ou queda da rede. Existem dois modos de falha distintos:5
11 Soft: se um arquivo falha, o cliente NFS reportar um erro para o processo na mquina
cliente requisitando o acesso ao arquivo. No se recomenda esse tipo de configurao,
porque pode causar corrupo de arquivos e perda de dados;
11 Hard: o processo no pode ser interrompido ou encerrado, a menos que isso seja especificado, aps uma queda no servidor. Quando o servidor NFS voltar ao estado on-line, o
programa continuar do ponto em que parou. Recomenda-se o uso dessa configurao.
Considerando o exemplo anterior, a entrada fstab seria:

# device

mountpoint fs-type

options

dump fsck

...
master.foo.com:/home /mnt/home nfs

rw,hard,intr 0

...
Tamanho do bloco:

11 rsize e wsize especificam o tamanho.


22 No h um tamanho que funcione bem em todos ou na maioria dos setups.
22 Escolher um tamanho de bloco correto um fator importante para o desempenho.

Configurando o tamanho de bloco para otimizar a velocidade de transferncia


As opes de montagem rsize e wsize especificam o tamanho dos blocos de dados que o
cliente e o servidor passam um para o outro.
Os valores default podem ser muito grandes ou muito pequenos; no h um tamanho que
funcione bem em todos ou na maioria dos setups. Por outro lado, algumas combinaes de
kernels Linux e placas de rede no podem manipular blocos muito grandes. No entanto, se

Administrao de Sistemas Linux: Servios para Internet

eles podem manipular blocos maiores, um tamanho maior pode ser mais rpido.

Escolher o tamanho de bloco correto um fator importante na performance e


crucial se o servidor NFS tiver de ser usado em ambientes de produo.

Otimizando o desempenho do NFS


11 O desempenho do NFS pode ser aumentado com o ajuste de tamanhos dos buffers
de transferncia de dados.
11 Valores adequados mudam de acordo com o caso.
11 Recomendvel fazer alguns testes para determinar esses valores.
Uma anlise cuidadosa de seu ambiente, cliente e servidor, o primeiro passo necessrio
para otimizar o desempenho do NFS.

Importantes configuraes de otimizao no lado cliente esto relacionadas aos tamanhos


dos buffers de transferncia de dados, especificados pelas opes rsize e wsize do
comando mount.

76

Tamanho dos blocos:

11 rsize e wsize do comando mount.


Exemplos de medio:

# time dd if=/dev/zero of=/mnt/home/testfile bs=16k count=16384


# time dd if=/mnt/home/testfile of=/dev/null bs=16k
Os valores mais adequados devem ser setados em /etc/fstab.
As opes rsize e wsize do comando mount especificam o tamanho dos blocos de dados
que o cliente e o servidor trocam um com o outro. Se as opes rsize e wsize no so especificadas, sero usados valores default de cada verso NFS. O default mais comum 4 K.
Para o NFSv3, o limite especfico para o servidor. No servidor Linux, o tamanho mximo do
bloco definido pelo valor constante NFSSVC_MAXBLKSIZE, encontrado no arquivo-fonte
./include/linux/nfsd/const.h.
Os defaults podem ser grandes ou pequenos demais, dependendo da combinao de kernel
e hardware. Por outro lado, algumas combinaes de kernels do Linux de determinadas
placas de rede no podem manipular blocos muito grandes. No entanto, se blocos maiores
podem ser manipulados, um tamanho maior representa mais rapidez.
recomendado experimentar e encontrar rsize e wsize que funcionem to rpido quanto
possvel. Pode-se testar a velocidade de suas opes com alguns comandos simples, se o
ambiente de rede no for to pesado. Note que seus resultados podem variar a menos que
sejam utilizados benchmarks mais complexos, como Bonnie, Bonnie++ ou IOzone.
O comando dd a seguir transfere 16 K para a partio montada. Para saber o tempo gasto,
basta digitar:

# time dd if=/dev/zero of=/mnt/home/testfile bs=16k count=16384


Um arquivo de 256 Mb de bytes zerados criado. Em geral, deve-se criar um arquivo que
tenha, pelo menos, duas vezes o tamanho da memria RAM do servidor. Certifique-se de
que existe espao suficiente em disco. Agora, leia novamente o arquivo na mquina cliente a
partir de /dev/null, digitando:

# time dd if=/mnt/home/testfile of=/dev/null bs=16k


Repita o procedimento algumas vezes e obtenha uma mdia.
Para a determinao dos valores mais adequados, deve-se utilizar ferramentas de

benchmark como:
11 Bonnie.
11 Bonnie++.
11 IOzone file system benchmark.

O teste deve durar algumas horas e ser repetido para diferentes valores.
Em seguida, desmonte e monte novamente com um tamanho de bloco maior e menor. Eles
devem ser mltiplos de 1.024 e no podem exceder o tamanho mximo do bloco permitido pelo
sistema. O NFSv3 suportar at 64 K, se permitido. O tamanho do bloco deve ser uma potncia
de dois, j que a maioria dos parmetros (como tamanhos de bloco do sistema e tamanho do
pacote de rede) so potncias de dois. Aps montar com tamanho maior, acesse o sistema de

Captulo 3 - DNS e NFS

11 NFS benchmark.

arquivos montado e explore-o um pouco para ter certeza de que tudo est como esperado.
77

Lembre-se de editar /etc/fstab para refletir o rsize/wsize mais adequado. Se os resultados


parecem inconsistentes, ou suscitam dvidas, pode ser necessrio o uso de analisadores
que executam testes com vrios valores de rsize e wsize. O benchmark deve ser executado para cada valor de rsize e wsize que seja de interesse.

Tamanho de pacote e drivers de rede


Comando nfsstat:

11 Verifica as transaes NFS, estatsticas de clientes, servidores e da rede etc.


Comando tracepath:
11 Verifica o tamanho do pacote de rede.
/proc/net/snmp:
11 Informaes sobre o comportamento corrente da rede.
Para anlise mais extensiva do comportamento NFS em particular, pode ser utilizado o
comando nfsstat para verificar transaes NFS, estatsticas de clientes e servidores, estatsticas da rede e assim por diante. A opo -o net mostrar o nmero de pacotes descartados em relao ao nmero total de transaes.
Em transaes UDP, a estatstica mais importante o nmero de retransmisses, devido
aos pacotes descartados, overflows, congestionamentos, timeouts etc. Isso ter efeitos no
desempenho do NFS e deve ser monitorado cuidadosamente. Note que nfsstat ainda no
implementa a opo -z, que zera todos os contadores, ento os valores dos contadores
devem ser anotados antes de executar os benchmarks. Para resolver problemas de rede,
pode-se reconfigurar o tamanho do pacote usado pelas placas de rede.
O tamanho do pacote de rede pode ser determinado com o comando tracepath: da mquina
cliente, digite tracepath server 2049 e o MTU do caminho dever ser informado. Pode-se
ento ajustar o MTU da sua placa de rede igual ao MTU do caminho, usando a opo MTU
para ifconfig, e verificar se h nmero menor de pacotes descartados.
Em adio, o comando netstat -s dar as estatsticas coletadas para o trfego dos protocolos
suportados. Em /proc/net/snmp podem ser obtidas informaes sobre o comportamento
corrente da rede.

Administrao de Sistemas Linux: Servios para Internet

Overflow de pacotes fragmentados

78

11 rsize ou wsize maiores que o MTU da rede podem causar fragmentao de pacotes

quando se usa NFS sobre UDP e quando a fragmentao requer recursos de CPU.
11 Pacotes podem ser descartados.
22 Rotas de fragmentos diferentes.
22 Capacidade do servidor NFS.
A utilizao de rsize ou wsize maior do que o MTU da sua rede causar fragmentao de
pacotes IP quando usarmos NFS sobre UDP. A fragmentao e montagem de pacotes requer
uma quantidade significativa de recursos de CPU. Em adio, a fragmentao de pacotes
tambm expe o trfego na rede a riscos de no confiabilidade, j que um pedido RPC
completo deve ser retransmitido se um pacote fragmentado UDP descartado por alguma
razo. Qualquer aumento de retransmisses RPC impacta na possibilidade de timeouts
maiores, e isso o pior impedimento em termos de desempenho para o NFS sobre UDP.

Pacotes podem ser descartados por vrias razes. Se a topologia da sua rede complexa,
rotas de fragmentos podem ser diferentes, fazendo com que nem todos os fragmentos
cheguem ao servidor para remontagem. A capacidade do servidor NFS pode ser outro fator
de impacto, j que o kernel tem um limite de fragmentos que pode colocar em buffer antes
de disparar os pacotes. Com kernels que suportam o sistema de arquivos /proc, possvel
monitorar os arquivos:
11 /proc/sys/net/ipv4/ipfrag_high_thresh
11 /proc/sys/net/ipv4/ipfrag_low_thresh
Uma vez que o nmero de pacotes fragmentados e no processados atinja o nmero especificado pelo ipfrag_high_thresh (em bytes), o kernel simplesmente iniciar o envio dos pacotes
fragmentados at que o nmero de pacotes incompletos atinja o nmero especificado em
ipfrag_low_thresh.
Outro contador para monitorar o IP: ReasmFails no arquivo /proc/net/snmp, representando
o nmero de falhas de remontagem de fragmentos.

NFS sobre TCP


Vantagens:

11 Funciona melhor que UDP em determinadas redes.


11 Melhor desempenho.
11 Manipula melhor as diferenas de velocidade de rede.
Desvantagem:
11 No um protocolo stateless como o UDP.
O overhead gerado pelo protocolo TCP resultar em menor performance do que UDP
sobre condies ideais de rede.
O uso de TCP tem uma vantagem e uma desvantagem em relao utilizao de TCP sobre UDP.
11 Vantagem: TCP funciona melhor do que UDP em determinadas redes. Quando se usa TCP,
um pacote descartado pode ser retransmitido sem a retransmisso do pedido RPC inteiro,
resultando em melhor desempenho. Em adio, TCP manipular diferenas de velocidade
de rede melhor do que UDP, devido ao fluxo de controle bsico no nvel de rede.
11 Desvantagem: TCP no um protocolo stateless como o UDP. Se o servidor parar no
meio de uma transmisso de pacotes, os compartilhamentos sero desmontados e
remontados. O overhead gerado pelo protocolo TCP resultar em menor performance do
que UDP sob condies ideais de rede, mas o custo no crtico.
Duas opes do comando mount timeo e retrans controlam o comportamento de pedidos
UDP quando o cliente sofre timeouts devido aos pacotes descartados, congestionamento de
rede e assim por diante.

at que o cliente decida que no vai esperar uma resposta do servidor e tentar enviar o
pedido novamente. O valor default de 7 dcimos de segundo.

Captulo 3 - DNS e NFS

11 Opo -o timeo: permite a designao do tempo, em dcimos de segundo, que levar

79

11 Opo -o retrans: define o nmero de timeouts permitidos antes de o cliente desistir e


exibir a mensagem de que o servidor no responde. O valor default de trs tentativas.
Uma vez que o cliente mostra essa mensagem, ele continuar a tentar enviar o pedido,
mas apenas uma vez antes de mostrar a mensagem de erro se outro timeout ocorrer.
Quando o cliente restabelece contato, ele estar usando os valores corretos de retrans e
mostrar uma mensagem OK no servidor.
A critrio do administrador da rede, esses valores podem ser ajustados, caso esteja havendo
quantidade excessiva de retransmisses ou se deseje aumentar o tamanho do bloco de
transferncia sem contar timeouts e retransmisses.
11 Timeout e valores de retransmisso.

11 timeo e retrans controlam o comportamento de pedidos UDP quando o cliente


sofre timeouts.
11 Nmero de instncias de nfsd.
11 A maioria dos scripts de inicializao disparam oito instncias desse daemon.
11 Pode ser modificado, via argumento, para /etc/rc.d/init.d/nfs (no Red Hat).
A maioria dos scripts de inicializao iniciam oito instncias de nfsd. No h um nmero
timo de instncias, todavia, um servidor mais pesado pode requerer mais instncias. Pode
ser utilizado pelo menos um daemon por processador, mas de quatro a oito por processador pode ser melhor.
A utilizao a partir do kernel 2.4 pode verificar como cada thread nfsd est sendo usada
no arquivo /proc/net/rpc/nfsd. Os ltimos dez nmeros daquele arquivo indicam o nmero
de segundos de uso de thread em porcentagem do mximo permitido. Para aumentar o
nmero de instncias nfsd, inicie o nfsd usando o nmero de instncias no argumento
RPCNFSDCOUNT do script de inicializao NFS:

/etc/rc.d/init.d/nfs (no Red Hat)


/etc/init.d/nfs-kernel-server (no Debian)

NFS sncrono versus assncrono


Administrao de Sistemas Linux: Servios para Internet

Comportamento assncrono de NFSv3.

80

11 async.
11 Servidor responde a pedido dos clientes assim que processado e manipulado pelo
sistema de arquivos local.
11 No espera pelo armazenamento dos dados em meio estvel.
O comportamento de NFSv3 usado pelo exportfs assncrono. Esse valor default permite
que o servidor responda aos pedidos clientes to brevemente quanto so processados e
manipulados os pedidos pelo sistema de arquivos local, sem esperar que os dados sejam
escritos em meios de armazenamento estvel.
A opo async da lista de exportao do servidor pede ao servidor que informe ao cliente
que todos os dados foram escritos para armazenamento estvel, independentemente do
protocolo usado. Para seguir um comportamento sncrono, o sistema de arquivos do servidor Linux deve ser exportado com a opo sync.

Note que especificar uma exportao sncrona resultar na situao em que nenhuma
opo ser vista na lista de exportao do servidor. Para exportar sistemas de arquivos,
podem ser usadas diferentes opes:

# /usr/sbin/exportfs -o rw,sync *:/usr/local


# /usr/sbin/exportfs -o rw *:/tmp
Parmetros do sistema de arquivos exportado:

# /usr/sbin/exportfs v
/usr/local *(rw)
/tmp *(rw,async)
Exportao assncrona:

11 /proc/fs/nfs/exports.
22 Mostra a lista de opes de exportao.
11 Clientes podem explicitamente insistir em comportamento sncrono total, independente de protocolo, usando a opo O SYNC ao abrir arquivos.
Se o kernel for compilado com o sistema de arquivos /proc, o arquivo /proc/fs/nfs/exports
tambm mostrar a lista completa de opes de exportao.
Quando o comportamento sncrono especificado, o servidor no concluir um pedido NFSv2
at que o sistema de arquivos local tenha escrito todos os dados no disco. O servidor concluir
um pedido assncrono NFSv3 sem esse delay e retornar o status dos dados para informar ao
cliente os dados que devem ser mantidos em cache e os dados que podem ser descartados de
maneira segura. H trs valores possveis de status, definidos em include/linux/nfs.h:
11 NFS_UNSTABLE: os dados no foram armazenados e confirmados em armazenamento
estvel no servidor e devem ser colocados em cache no cliente at que um pedido de confirmao do cliente garanta que o servidor enviou os dados para armazenamento estvel;
11 NFS_DATA_SYNC: os meta dados no foram enviados para armazenamento estvel, e
devem ser colocados em cache no cliente. Uma confirmao subsequente necessria;
11 NFS_FILE_SYNC: dados e meta dados no podem ser colocados em cache, e uma confirmao subsequente no precisa ser enviada para a faixa coberta por esse pedido.
Em adio ao comportamento sncrono, o cliente pode explicitamente insistir em comportamento sncrono total, independente do protocolo, abrindo todos os arquivos com a opo
O-SYNC. Nesse caso, todas as respostas aos pedidos dos clientes vo esperar at que os

Segurana e NFS
Passos para que um cliente possa acessar um arquivo num diretrio remoto:

11 Montagem: segurana provida por /etc/exports.


11 Acesso aos arquivos: no especfico do NFS, mas parte do controle de acesso do
sistema de arquivos no cliente.
Com NFS, h dois passos requeridos para que um cliente ganhe acesso a um arquivo contido
em um diretrio remoto no servidor.

Captulo 3 - DNS e NFS

dados atinjam o disco do servidor.

81

O primeiro passo o de montagem. O acesso montagem conseguido atravs da mquina


cliente tentando atingir o servidor. Para tal, a segurana provida pelo arquivo /etc/exports,
que lista os nomes ou endereos IP para mquinas que possam acessar o ponto de compartilhamento. Se algum for capaz de efetuar spoofing, por exemplo, poder acessar os
pontos de montagem. Uma vez que a mquina foi montada num dado volume, seu Sistema
Operacional ter acesso a todos os arquivos naquele volume, e tambm acesso de escrita se
o volume tiver sido exportado com a opo rw.
O segundo passo o acesso aos arquivos, uma funo de controle de acesso do sistema de
arquivos no cliente e no uma funo especializada do NFS. Uma vez que um drive montado,
as permisses do usurio e do grupo nos arquivos determinam controle de acesso.

NFS e segurana: portmapper


O portmapper mantm uma lista dos servios em execuo em determinadas portas.

11 Algumas distribuies do Linux no se preocupam com a segurana do portmapper.


Como tornar mais seguro?
11 Editar /etc/hosts.deny e incluir a linha:
22 portmap:ALL
O portmapper mantm uma lista dos servios em execuo em determinadas portas. Essa
lista usada por uma mquina conectada para ver as portas que ela deseja acessar para
obter determinados servios.
Algumas distribuies do Linux no se preocupam com a segurana do portmapper; com
isso, a maneira mais fcil de fazer essa verificao executando strings e verificando se
foram lidos arquivos relevantes, como /etc/hosts.deny e /etc/hosts.allow. Supondo que o
portmapper seja /sbin/portmap, pode-se fazer a verificao com o comando:

# strings /sbin/portmap | grep hosts


Numa mquina segura, a sada seria algo como:

/etc/hosts.allow
/etc/hosts.deny

Administrao de Sistemas Linux: Servios para Internet

@(#) hosts_ctl.c 1.4 94/12/28 17:42:27

82

@(#) hosts_access.c 1.21 97/02/12 02:13:22


Primeiro, editamos /etc/hosts.deny, que deve conter a linha portmap: ALL, que negar o
acesso a todos. Aps isso, execute rpcinfo -p apenas para verificar se o portmapper realmente est lendo o arquivo /etc/hosts.deny. Os arquivos /etc/hosts.allow e /etc/hosts.deny
produzem efeito imediatamente aps salvos. No h necessidade de inicializar daemons.
Fechar portmapper para todo mundo uma medida drstica, ento podemos abri-lo novamente
editando /etc/hosts.allow, listando todas as mquinas que devem acessar servios na mquina.

NFS para MS Windows


11 Existem verses exclusivas do servidor NFS para o Windows, como o ProNFS.
11 possvel criar um servidor NFS ou acessar qualquer cliente NFS.

Existem verses exclusivas do servidor NFS para o Windows, como o ProNFS. Com esse
programa possvel criar um servidor NFS ou acessar qualquer cliente NFS. A diferena
que no preciso necessariamente montar o diretrio exportado no computador e acessar
os clientes pelo ambiente de rede do Windows.
Ao instalar o ProNFS como padro, ele no vai instalar a verso cliente. Para efetuar a instalao do cliente, selecione a opo Custom durante o processo e, no menu de seleo, clique
no campo NFS Client for NFS Network. Aps reiniciar o computador, verifique se o servidor NFS

Captulo 3 - DNS e NFS

pode ser encontrado pelo utilitrio NFSProbe, na aba Programas do menu Iniciar.

83

84

Administrao de Sistemas Linux: Servios para Internet

Roteiro de Atividades 3
Nestas atividades, os alunos devem trabalhar com duas mquinas virtuais (servidor e cliente).
Ambas devem estar na mesma rede. Como regra, o endereo 192.168.X.1 ser o do servidor
Linux e o endereo 192.168.X.2 ser do cliente Linux. Teste o funcionamento da rede atravs
do comando ping.

Atividade 3.1 Servidor de DNS Primrio


Considerando a rede 192.168.X.0/255.255.255.0, cujo domnio empresa.com.br, configure
o servidor de DNS Primrio de modo que ele tenhas as seguintes mquinas registradas:
11 servidor.empresa.com.br: 192.168.X.1 (NS)
11 email.empresa.com.br: 192.168.X.4 (MX)
11 cliente.empresa.com.br: 192.168.X.2
11 windows.empresa.com.br: 192.168.X.3
11 www.empresa.com.br: 192.168.X.1 (CNAME)
11 pop.empresa.com.br: 192.168.X.4 (CNAME)
11 smtp.empresa.com.br: 192.168.X.4 (CNAME)
No se esquea de configurar a resoluo de nomes reversa.

Atividade 3.2 Servidor de DNS Secundrio


Configurar o servidor de DNS Secundrio na mquina virtual cliente (192.168.X.2). Lembre-se de
informar o endereo do servidor secundrio no parmetro allow-transfer do Servidor Primrio.
Os arquivos de zona que forem transferidos devem ser gravados no diretrio /etc/bind/sec do
servidor secundrio.

Atividade 3.3 Exportando diretrio do servidor NFS


Crie e exporte o diretrio /dados para a mquina cliente (192.168.X.2).

Atividade 3.4 Configurao do Cliente NFS


Instale o cliente NFS na mquina cliente (192.168.X.2), monte o diretrio /dados do servidor
mquina cliente for reiniciada o diretrio /dados seja montado automaticamente.

Atividade 3.5 Testando o funcionamento do servio NFS


No servidor, crie um arquivo chamado teste no diretrio /dados e verifique se este aparece
no cliente. Depois edite o arquivo teste, pelo cliente, adicionando a data atual ao contedo
do arquivo, volte ao servidor e verifique se o arquivo foi alterado.

Captulo 3 - Roteiro de Atividades

no diretrio /mnt/remoto e realize as configuraes necessrias para que sempre que a

85

86

Administrao de Sistemas Linux: Servios para Internet

4
Entender o funcionamento do servio de diretrio, do protocolo LDAP e da soluo
OpenLDAP; compreender o funcionamento, objetos, atributos e instalao do LDAP;
instalar OpenLDAP, com execuo do servidor e criao e manuteno de base de dados.

conceitos

Servidor LDAP, uso do script Migration tools para exportao de contas e grupos da
mquina, incluso de usurios e troca de senhas com PAM.

Introduo
Conheceremos os conceitos de servio de diretrio e o protocolo Lightweight Directory
Access Protocol (LDAP), alm da soluo OpenLDAP, em aspectos relacionados instalao,
configurao e testes.
Na primeira parte, abordaremos o funcionamento, objetos e atributos do protocolo LDAP.
Na etapa seguinte ser abordada a instalao da implementao OpenLDAP, e em seguida o
arquivo de configurao e suas diferentes formas.
A execuo do servidor, bem como a criao e a manuteno da base de dados, sero os
objetos do final deste captulo, onde sero colocados em prtica os conceitos adquiridos.

LDAP
11 Um diretrio similar a uma base de dados.

11 Pode replicar informaes e reduzir tempo de resposta.


11 H diferentes maneiras de prover um servio de diretrios.
11 Mtodos distintos permitem armazenamentos diferentes de informao.
11 Protocolo baseado no acesso a servios de diretrios X.500, executa sobre protocolos
de transporte orientados para conexo.
Um diretrio uma base de dados especializada para leitura e busca das informaes nela
contidas. Diferentemente de um banco de dados tradicional, em que existe grande volume
de operaes de escrita e de leitura, no servio de diretrio as operaes so predominantemente de leitura. Alm disso, os diretrios podem ter habilidade para replicar informaes,
obtendo confiabilidade e disponibilidade enquanto podem reduzir o tempo de resposta.

Captulo 4 - Servidor LDAP

objetivos

Servidor LDAP

87

H diferentes maneiras de prover um servio de diretrios. Mtodos diferentes permitem


diferentes tipos de informaes a serem armazenadas no diretrio, impem diferentes requisitos na forma como as informaes podem ser referenciadas, consultadas, atualizadas etc.
LDAP um protocolo cliente/servidor para acessar servios de diretrios, especificamente
servios baseados em X.500. LDAP executa sobre TCP/IP ou outros servios de transferncia
orientados para conexo.

l
A especificao do
protocolo pode ser
encontrada na RFC 4511.

As informaes em uma base LDAP so organizadas hierarquicamente, na forma de uma


rvore. Essa estrutura representa geralmente a organizao geogrfica ou hierrquica
de uma determinada organizao. A partir de uma raiz, pode-se deslocar pela rvore at
chegar a cada unidade organizacional, departamento, funo, pessoa, equipamento etc.
Cada entrada, conforme ser explicado adiante, identificada por nome nico denominado
Distinguished Name (DN).

Sem servio de diretrio


Um servio de diretrio fundamental para estruturas de sistemas distribudos, pois acessvel a
todas as aplicaes e prov concepo simples de usurios, recursos e outros objetos necessrios.
Quando o servio de diretrio est ausente em uma rede, cada aplicao possui sua prpria
base de dados para autenticar os clientes, cada uma com uma poltica de segurana diferente, de complexidade e tempos de expirao distintos, impondo ao usurio a necessidade
de memorizar diferentes senhas.
Um novo usurio na rede demandar a criao de contas de acesso e senha em cada um
dos sistemas. Do mesmo modo, a remoo de um usurio exigir a sua excluso em cada
uma das bases. Assim, a ausncia de um servio de diretrio implica em perda de produtividade e agilidade no cadastramento de usurios, alm de possibilitar brechas de segurana
ao manter usurios com acesso a determinados sistemas na rede, mesmo que por curto
perodo de tempo. Em resumo, a administrao se torna mais complexa.
Aplicao 1

Registro de usurio

Aplicao 2

Registro de usurio

Aplicao 3

Registro de usurio

Administrao de Sistemas Linux: Servios para Internet

Cliente da aplicao 1

88

Cliente da aplicao 2

Cliente da aplicao 3

Com servio de diretrio


A utilizao de servio de diretrio possibilita a manuteno de base de dados nica. Prov
abstrao lgica para uso por usurios, aplicaes e outros recursos na rede, o que permite
a usurios acessar os servios de rede de maneira mais transparente.

Figura 4.1
Aplicaes
acessando bases
de dados diversas.

O recurso mais comum de utilizao de servio de diretrio est associado a catlogos de


endereo, o que pode manter informaes como: nome, e-mail, nmeros de telefone, cargo,
empresa etc.
Esse cadastro pode ser utilizado por quaisquer tipos de aplicaes que suportem comunicao no padro LDAP, tais como: sistemas para controle de acesso fsico s instalaes da
empresa; aplicaes de correio eletrnico e groupware; aplicaes disponveis na intranet
ou internet; sistemas de folha de pagamento e financeiros.
Por exemplo: a manuteno de um cadastro nico com todas as informaes sobre os
funcionrios da empresa, podendo englobar desde os dados cadastrais at informaes
sobre as permisses de acesso a cada sistema e rea da empresa. Desse modo, um funcionrio admitido recentemente pode ter seus dados inseridos em um nico local e ser visto
imediatamente por todos os sistemas que dele necessitarem. Ou, no caso inverso, um
funcionrio demitido ou em frias pode ter seus privilgios restringidos imediatamente.
Aplicao 1
LDAP
Cliente da aplicao 1
Aplicao 2

LDAP

Aplicao 3

LDAP

Registro de usurio

Cliente da aplicao 2
Figura 4.2
Aplicaes
acessando a
mesma base de
dados.

Cliente da aplicao 3

Funcionamento do LDAP
Baseado no modelo cliente/servidor:

11 Cliente requisita ao servidor.


11 Servidor responde ou aponta para outro servidor LDAP.

O servio de diretrios LDAP baseado no modelo cliente/servidor. Um cliente LDAP


conecta-se a um servidor LDAP e efetua requisies. O servidor responde ou ento aponta
para onde o cliente pode coletar mais informaes (por exemplo, outro servidor LDAP).
Independente de qual servidor LDAP um cliente se conecta, tudo deve apresentar a mesma
viso de diretrio, isto , um nome apresentado por um servidor LDAP referencia a mesma
entrada em outro servidor LDAP.
Operaes:
11 Consulta.
11 Atualizao.
11 Autenticao e controle.

Captulo 4 - Servidor LDAP

As RFCs 4510, 4511 e


4513 incluem definies
sobre as especificaes, formatos,
esquemas e autenticao, entre outras
informaes.

11 Tudo sob uma nica viso.

89

Search operation
Returned entry
Result code
Cliente LDAP

Servidor LDAP

Figura 4.3
Operao de busca
simples.

Search operation
First entry returned
Second entry returned
Nth entry returned
Cliente LDAP

Result code

Servidor LDAP

Figura 4.4
Operao de busca
com mltiplos
resultados.

O protocolo LDAP consiste em nove operaes distribudas em trs categorias:


1. Operaes de consulta:
11 search: operao de busca por um (Figura 4.3) ou mltiplos resultados (Figura 4.4);
11 compare: operao de comparao com determinada entrada.
2. Operaes de atualizao:
11 add: operao de adio de uma ou mais entradas na base;
11 delete: operao de remoo de dados da base;
11 modify: operao de modificao de dados da base;
11 modify DN (rename): operao de modificao da posio de dados na base.
3. Operaes de autenticao e controle:
11 bind: operao de autenticao;
11 unbind: operao de cancelamento da autenticao;

Administrao de Sistemas Linux: Servios para Internet

11 abandon: operao da cancelamento unilateral da consulta.


Open connection and bind
Bind result
Search operation
First entry returned
Second entry returned
Result of search operation
Cliente LDAP

Unbind operation
Close connection

Em uma operao LDAP tpica, necessrio um conjunto de passos para permitir o estabelecimento da conexo, autenticao, consulta, retorno dos dados e encerramento da conexo:
11 Estabelecimento da conexo e solicitao de autenticao: open connection and bind.
11 Resultado da autenticao: bind result.

90

Servidor LDAP
Figura 4.5
Operao LDAP
tpica.

11 Operao de consulta: search operation.


11 Retorno de um ou mltiplos resultados: entries return.
11 Solicitao de cancelamento da autenticao: unbind operation.
11 Encerramento da conexo: close connection.

Organizao dos dados


dc= rnp,dc=br
ou=bsa

ou=rjo

ou=operacoes

ou=hardware

ou=gerentes

ou=funcionarios

Figura 4.6
Estrutura do
diretrio.

cn=Pedro Silva
A base de dados LDAP pode ser representada na forma de uma rvore que representa os
objetos de uma organizao (unidade organizacional, departamento, funo, pessoa, equipamentos, entre outros).
Cada entrada (objeto) de um diretrio possui um nome distinto DN, que uma forma de
identificar cada entrada de forma nica no diretrio. Uma entrada composta por um conjunto de atributos, e cada atributo descreve uma caracterstica particular do objeto. Cada
atributo tem um tipo e um ou mais valores. O tipo descreve a espcie de informao contida
nos atributos, e o valor o prprio dado.
No exemplo apresentado, consta uma entrada Pedro Silva, um funcionrio do departamento
de operaes da filial BSA da organizao RNP. Essa organizao da rvore descrita na RFC
no item Naming model, que descreve a organizao e a forma de se referir aos dados.

Exerccio de fixao 1 e
Estrutura de diretrio LDAP
Monte uma estrutura de diretrio para uma empresa de TI cujo domnio empresa.com.br.
11 Possui os servios de Samba, Proxy, E-mail e Intranet.
11 A empresa possui funcionrio CLT e terceirizados.
11 Todos tm acesso aos servios Samba e Proxy.

Tipos de dados e unidade bsica de informao


Atributos
Tipo

Valores

cn

Aluno1

sn

ESR

Captulo 4 - Servidor LDAP

11 Somente os CLTs possuem acesso a e-mail e intranet.

91

Atributos
uid

aluno1

telephoneNumber

+55 61 32434300

mail

pedro.silva@rnp.br

Tabela 4.1
Uma entrada com
os atributos.

As entradas em uma base de dados podem ser apresentadas no formato LDAP Data
Interchange Format (LDIF), utilizado para a importao ou exportao de dados a partir do
servidor LDAP.
Exemplo de entrada no formato LDIF e seus atributos:
dn: distinguished name
dc: domain component ou organizational unit
cn: commom name
sn: surname

dn: uid=aluno1, ou= operacoes, dc= rnp, dc= br


objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: Aluno1 ESR
givenName: Aluno1
sn: ESR
uid: aluno1
mail: aluno1@ucb.br
Telephonenumber: +55 61 32434300
Os tipos de dados e a representao da unidade bsica de informao so descritos na RFC
Administrao de Sistemas Linux: Servios para Internet

4512, que trata dos modelos de informao (Information Models).

92

dc= rnp,dc=br
ou=bsa

ou=rjo

Figura 4.7
Diretrio
distribudo.

A utilizao de um servio de diretrio normalmente tem como objetivo a centralizao da


informao em uma nica base de dados. No entanto, isso no quer dizer que esses dados
devem ficar centralizados fisicamente em um nico lugar.

Empresas ou organizaes que possuem suas instalaes dispersas geograficamente em


mltiplos locais podem, por questes administrativas ou de desempenho, manter os dados
de cada localidade localmente, embora todos agrupados em uma nica base de dados.
Desse modo, as informaes acessadas mais frequentemente por determinada localidade
ficam disponveis localmente. Caso haja necessidade de acessar dados mantidos por outras
filiais, isso pode ser feito de modo transparente.

Referncia e autenticao entre vrios servidores


Servidor 1

Servidor 2

Servidor 1

Servidor 2
4

a) Busca distribuda

b) Autenticao de duas parties

Um servidor pode manter somente parte da rvore, estando o restante dela em outros
servidores. Nesse caso, cada servidor possui uma referncia sobre o local onde esto as
outras partes da rvore. Ao receber uma consulta sobre determinados dados que estejam
em outro servidor, o servidor que recebeu a solicitao repassa a referncia ao cliente que a
solicitou (Figura 4.8a):
1. Cliente envia pedido de busca para o Servidor 2;
2. Servidor 2 retorna referncia (referral) do Servidor 1 ao cliente;
3. Cliente envia pedido de busca para o Servidor 1;
4. Servidor 1 retorna as entradas associadas busca.
Outra associao comum diz respeito relao de confiana entre servidores LDAP. Nesse
caso, um cliente autenticado em um determinado servidor pode ter sua solicitao encaminhada a outro servidor sem necessidade de nova autenticao (Figura 4.8b):
1. Cliente conecta e autentica no Servidor 1;
2. Servidor retorna cdigo de sucesso ao cliente;
3. Cliente envia pedido de busca para o Servidor 1;
4. Servidor encaminha pedido para o Servidor 2.
Uma variao desse caso o Servidor 1 informar ao Servidor 2 que o cliente j est autenticado, repassando a consulta para que o Servidor 2 a responda diretamente.

Captulo 4 - Servidor LDAP

Figura 4.8
Relacionamento
entre servidores.

93

Replicao
Servidor master

Servidor slave

Servidor master

Servidor slave

Falha servidor

a) Consulta master

b) Consulta slave

Figura 4.9
Consulta simples.

A utilizao de servio de diretrio possibilita ganhos em vrios aspectos no ambiente de


rede, mas torna o ambiente dependente do servio, uma vez que sua indisponibilidade
impede que usurios efetuem login em suas mquinas ou acessem sua lista de contatos,
entre outros.
Em virtude disso, em muitos casos necessria a utilizao de um servidor principal
(master) acompanhado de um ou mais servidores secundrios (slaves).

Desse modo, a indisponibilidade de um servidor ou da rede, caso este esteja em


outro segmento de rede, no impedir o funcionamento do servio de diretrio
(Figura 4.9).

No servidor primrio estar em execuo o daemon SLAPD, enquanto que em cada servidor
secundrio estar em execuo o daemon slurpd.
As configuraes a serem utilizadas pelo SLAPD sero lidas de um arquivo denominado
/usr/local/etc/openldap/slapd.conf ou de uma base LDAP localizada em
/usr/local/etc/openldap/slapd.d.
A primeira opo (com slapd.conf) mais amplamente utilizada e dever ser usada por

Administrao de Sistemas Linux: Servios para Internet

enquanto, principalmente se o servio de diretrio estiver sendo gerenciado por algum aplica-

94

tivo especfico designado para este fim (backend). A desvantagem dessa abordagem a necessidade de reiniciar o servidor quando modificaes forem realizadas no arquivo de configurao.
A segunda opo, que utiliza uma base de dados LDAP para armazenar as configuraes do servidor, no necessita da reinicializao do servidor a cada modificao no arquivo de configurao.
Modicaes de cliente
Atualizaes

Cliente

Servidor 1

Servidor 2

master

slave

leitura

leitura

e escrita
Consultas

Figura 4.10
Consulta a
mltiplos
servidores.

Utilizando uma soluo que contemple vrios servidores, cada um deles pode atender s
operaes de consulta (mais frequentes), enquanto somente o servidor master pode efetuar
operaes de escrita na base de dados. As modificaes so replicadas para os servidores
slaves (Figura 4.10).
O mecanismo da replicao envolve as seguintes etapas:
1. O cliente LDAP envia uma operao de modificao para o servidor slave;
2. O servidor slave retorna uma referncia (referral) do servidor master ao cliente;
3. O cliente LDAP envia a operao de modificao ao servidor master;
4. O servidor master efetua a operao, atualiza o arquivo de log e envia mensagem de
sucesso ao cliente;
5. O daemon slurpd, presente no servidor master, percebe a operao pela modificao do
arquivo de log e notifica o servidor slave via LDAP;
6. O servidor slave efetua a modificao e envia mensagem de sucesso ao daemon slurpd.

Objetos e atributos LDAP


SLAPD prov suporte a diferentes bases de dados:

11 BDB.
11 LDBM.
11 SHELL.
11 PASSWD.
BDB indicado para aplicaes que requerem:
11 Transaes.
11 Habilidade na recuperao de crashes e falhas.
O daemon servidor LDAP, denominado SLAPD, prov suporte a diferentes bases de dados:
11 Berkeley DataBase (BDB): base transacional de alta performance;
11 DataBase Manager (LDBM): base mais leve baseada no DBM;
11 SHELL: interface para scripts shell;
11 PASSWD: interface para o arquivo /etc/passwd.
BDB indicado para acesso de leitura/escrita de bases de dados, com uma mistura de operaes de leitura e escrita. usado em aplicaes que requerem:
11 Transaes, incluindo mudanas na base de dados e desfazendo alteraes no confirmadas;
11 Habilidade de recuperao de crashes e falhas de hardware sem perda das transaes

Formato LDIF
11 Importa e exporta informaes de diretrio entre servidores de diretrios baseados
em LDAP.
11 Descreve um conjunto de mudanas aplicadas a um diretrio.
11 Armazena informaes em hierarquia orientada a objetos de entrada.

Captulo 4 - Servidor LDAP

confirmadas.

95

Para importar e exportar informaes de diretrio entre servidores de diretrios baseados


em LDAP ou para descrever um conjunto de mudanas aplicadas a um diretrio, o formato
de arquivo LDIF para transferncia de dados LDAP tipicamente usado. Um arquivo LDIF
armazena informaes numa hierarquia orientada a objetos de entrada. O pacote LDAP j
vem com um utilitrio para converter arquivos LDIF para o formato BDB.
No LDAP, uma classe objeto define a coleo de atributos que pode ser usada para definir
uma entrada. O padro LDAP prov os seguintes tipos de classes:
11 Grupos no diretrio, incluindo listas no ordenadas de objetos ou grupos de objetos;
11 Localizaes, tais como nome do pas e descrio;
11 Organizaes no diretrio;
11 Pessoas no diretrio.

Classes LDAP
11 Grupos no diretrio, incluindo listas no ordenadas de objetos ou grupos de objetos.

11 Localizaes como nome do pas e descrio.


11 Organizaes no diretrio.
11 Pessoas no diretrio.
11 Existem classes para descrever quase todos os tipos de objetos de que se necessita.
22 Classes atuais podem ser estendidas, se necessrio.
Uma entrada pode pertencer a mais de uma classe de objetos. A estrutura das classes do
servidor determina a lista total de atributos requeridos e permitidos para uma entrada particular. Por exemplo, a entrada para uma pessoa definida pela classe person, mas tambm
pode ser definida por atributos em inetOrgPerson, groupOfNames.
Qualquer pedao especfico de informao associado com um atributo descritivo. Por
exemplo, cn ou commonName um atributo usado para armazenar um nome de usurio.
Um usurio identificado como Aluno2 ESR pode ser representado no diretrio como:

cn: Aluno2 ESR


Cada pessoa do diretrio definida por uma coleo de atributos da classe person. Outros

l
Informaes sobre as
classes de objetos e os
atributos associados
podem ser conferidas
na RFC 4519
Lightweight Directory
Access Protocol (LDAP):
Schema for User
Applications.

Administrao de Sistemas Linux: Servios para Internet

atributos usados nessa classe incluem:

givenname: Aluno2
surname: ESR
mail: aluno2.esr@rnp.br
O atributo ObjectClass lista a classe a qual uma entrada pertence.

Instalao do servidor LDAP


Passos para a instalao do servidor LDAP:
11 Instalar os pacotes pr-requeridos (se ainda no estiverem instalados).
11 Fazer download do servidor.
11 Desempacotar o software.
11 Configurar os makefiles.
11 Construir os servidores.

96

Pr-requisitos:

11 Bibliotecas OpenSSL (SSL/TLS) e Kerberos.


22 BDB requer Sleepycat Software Berkeley DB v.4.
22 OpenLDAP suporta pthreads POSIX e Mach Cthreads, entre outras.
Distribuies do LDAP:
11 Servidor da Universidade de Michigan.
11 Servidor OpenLDAP.
Configurao do software:
11 Fontes OpenLDAP so distribudas com um script de configurao.
Requisitos necessrios para a instalao do LDAP:
11 Bibliotecas OpenSSL (SSL/TLS): so parte do sistema base LDAP;
11 Servios de autenticao Kerberos: clientes e servidores LDAP suportam servios de
autenticao baseados em Kerberos;
11 OpenLDAP: suporta autenticao SASL/GSSAPI;
11 Base de dados: Barkeley Data Base (BDB) requer Sleepycat Software Berkeley DB;
11 Threads: LDAP projetado para dispor as vantagens de threads; OpenLDAP suporta
pthreads POSIX, Mach Cthreads, entre outras;
11 TCP Wrappers: SLAPD suporta TCP Wrappers se estiver pr-instalado.
Passos necessrios:

11 Fazer download do pacote.


11 Prefira a ltima verso estvel (stable release).
11 Desempacotar o software.

Download do pacote
Existem algumas implementaes de servidores LDAP:
11 Servidor LDAP, da Universidade de Michigan (em geral a base das outras solues);
11 Netscape Directory Server;
11 OpenLDAP;
11 Fedora Directory Server;
11 Sun Directory Server.
Entre as verses livres consideradas prontas e maduras, a mais utilizada o OpenLDAP.
O servidor OpenLDAP baseado na ltima verso do servidor da Universidade de Michigan.
utilizado o OpenLDAP.

Desempacotando o software
Para desempacotar o pacote LDAP, podemos usar a combinao:

# gunzip openldap-VERSION.tgz | tar xvf # cd openldap-VERSION

Captulo 4 - Servidor LDAP

H listas de discusso e documentao disponveis. Nas atividades deste Captulo ser

97

Substituir VERSION pelo nmero da verso a ser utilizada.

Passos necessrios:

11 Configurar makefiles com o comando:

./configure -- [parmetros]
11 Construir os servidores:
22 make depend: constri as dependncias.
22 make: constri o servidor.
22 make test: executa testes.
22 make install: instala binrios e manual.

Configurao do software
As fontes do servidor OpenLDAP so distribudas com um script para configurar opes
como diretrios de instalao, compilador e flags de linker.
No diretrio onde foi desempacotado o software, use o comando:

# ./configure -- help
Sero apresentadas todas as opes que podem ser customizadas com o script de configurao antes de construir o software.
possvel especificar algumas variveis de ambiente com o comando env antes de executar
o script de configurao:
11 CC: especifica um compilador C alternativo;
11 CFLAGS: especifica flags adicionais do compilador;
11 CPPFLAGS: especifica flags do pr-processador C;
11 LDFLAGS: especifica flags de linker;
11 LIBS: especifica bibliotecas adicionais.

Administrao de Sistemas Linux: Servios para Internet

Construindo o servidor

98

Aps configurar o software, construa as dependncias usando o comando:

# make depend
Depois, construa o servidor usando o comando:

# make
Para garantir construo correta, deve ser feito teste com:

# make test
Instale os binrios e as pginas de manual:

# make install

Configurao do servidor LDAP


Arquivo /etc/slapd.conf
11 Todas as configuraes do SLAPD so conseguidas por meio do arquivo /etc/slapd.conf.

11 Diretivas do arquivo de configurao:


22 Global: aplicadas a todos os backends e databases, exceto no caso de sobreposio.
22 Backend specific: aplicadas a todas as instncias de bases de dados do mesmo tipo.
22 Database specific: marca o incio da definio de uma nova instncia de base de dados
Todas as configuraes do SLAPD so obtidas por meio do arquivo /etc/slapd.conf. As diretivas
do arquivo de configurao so separadas em global, backend specific e database specific.

Formato do arquivo de configurao


O arquivo slapd.conf consiste em trs tipos de informao: global, backend specific e database
specific. Diretivas globais podem ser sobrepostas por diretivas backend e database.
A distribuio do OpenLDAP contm um arquivo de configurao-exemplo que ser instalado em /etc/openldap. Definies de esquemas (tipos de atributos e classes de objetos)
esto disponveis em /etc/openldap/schema.

Diretivas globais
Diretivas globais se aplicam a todos os backends e databases, a menos que haja sobreposio na definio das respectivas diretivas. Por exemplo:

access to <what> [by <who><accesslevel><control>]


(garante acesso, especificado por accesslevel, a um conjunto de entradas e/ou atributos,
especificados por <what>, por um ou mais requisitantes especificados por <who>).

attributetype<RFC4517 Syntaxes and Matching Rules>


Define um tipo de atributo. Por exemplo:

access to * by * read (garante a leitura para todos)


defaultaccess {none | compare | search | read | write}
(especifica o acesso default aos requisitantes quando nenhuma diretiva de acesso tiver
sido especificada).

include <filename>
(especifica que SLAPD deve ler informaes de configurao adicionais de determinado
arquivo antes de continuar com a prxima linha do arquivo corrente).

Diretivas aplicadas a todas as instncias de bases de dados do mesmo tipo e, dependendo


da diretiva, pode ser sobrescrita por diretivas database.
backend <type> (marca o incio de uma definio backend).
Type pode ser um dos seguintes:
11 Berkeley DB: bdb.

Captulo 4 - Servidor LDAP

Diretivas backend

11 DNS SRV: dnssrv.


99

11 Lightweight DBM: ldbm.


11 Entre outros.

# global configuration directives

<global config directives>


# backend definition
backend <typeA>
<backend-specific directives>
# first database definition & config directives
database <typeA>
<database-specific directives>

Diretivas database
database <type> (marca o incio da definio de uma nova instncia de base de dados).
<type> (pode ser de qualquer tipo, como na diretiva Backend).
readonly {on | off} (coloca a base de dados no modo read-only).
replica host =<hostname>[:<port>]
[bindmethod={simple | kerberos | sasl}]
[binddn=<DN>]
(Especifica uma replicao para essa base de dados).

replogfile <filename> (especifica o nome do arquivo de log de replicaes para o


SLAPD que far o log de mudanas).
H outros tipos de diretivas:

Diretivas database BDB


directory <directory> (indica o diretrio onde residem os arquivos BDB contendo a
Administrao de Sistemas Linux: Servios para Internet

base de dados e ndices associados).

100

Por default: <directory> /usr/local/var/openldap-data

Observe que essas diretivas se aplicam no caso em que o database considerado BDB.

1. # example config file global configuration section.


2. include /usr/local/etc/schema/core.schema
3. referral ldap://root.openldap.org
4. access to * by * read

Exemplo de arquivo de configurao


O arquivo a seguir um exemplo de slapd.conf que define duas bases de dados para manipular diferentes partes da rvore X.500, ambas instncias da base de dados BDB.

# arquivo slapd.conf
1. # example config file - global configuration section
2. include /usr/local/etc/schema/core.schema
3. referral ldap://root.openldap.org
4. access to * by * read
11 A linha 1 um comentrio.
11 A linha 2 inclui outro arquivo de configurao que contm definies de esquemas.
11 A linha 3 contm a diretiva referral para indicar consultas remotas para uma das bases de
dados referenciadas no servidor na porta padro 389 no host root.openldap.org.
11 A linha 4 um controle de acesso global.
6. database bdb

7. suffix dc=example,dc=com
8. directory /usr/local/var/openldap-data
9. rootdn cn=Manager,dc=example,dc=com
10. rootpw secret
20. index uid pres,eq
21. index cn,sn,uid pres,eq,approx,sub
22. index objectClass eq

# Continuao arquivo slapd.conf


5. # BDB definition for the example.com
6. database bdb
7. suffix dc=example,dc=com
8. directory /usr/local/var/openldap-data
9. rootdn cn=Manager,dc=example,dc=com
10. rootpw secret
11. # replication directives
12. replogfile /usr/local/var/openldap/slapd.replog
13. replica host=slave1.example.com:389

15. bindmethod=simple credentials=secret


16. replica host=slave2.example.com
17. binddn=cn=Replicator,dc=example,dc=com
18. bindmethod=simple credentials=secret
19. # indexed attribute definitions

Captulo 4 - Servidor LDAP

14. binddn=cn=Replicator,dc=example,dc=com

101

20. index uid pres,eq


21. index cn,sn,uid pres,eq,approx,sub
22. index objectClass eq
23. # database access control definitions
24. access to attr=userPassword
25. by self write
26. by anonymous auth
27. by dn=cn=Admin,dc=example,dc=com write
28. by * none
29. access to *
30. by self write
31. by dn=cn=Admin,dc=example,dc=com write
32. by * read
34. database bdb

35. suffix dc=example,dc=net


36. directory /usr/local/var/openldap-data-net
37. rootdn cn=Manager,dc=example,dc=com
38. index objectClass eq
39. access to * by users read

# Continuao arquivo slapd.conf


33. # BDB definition for example.net
34. database bdb

Administrao de Sistemas Linux: Servios para Internet

35. suffix dc=example,dc=net

102

36. directory /usr/local/var/openldap-data-net


37. rootdn cn=Manager,dc=example,dc=com
38. index objectClass eq
39. access to * by users read
Essa forma de configurao est sendo descontinuada nas novas verses do LDAP. Em seu
lugar est sendo criado o arquivo slapd-config (formato cn=config). Nesse novo formato sero
usados arquivos tipo LDIF, que no devem ser editados ou ter seu contedo alterado diretamente: sempre devemos usar as ferramentas do LDAP: ldapadd, ldapdelete ou ldapmodify.

Convertendo slapd.conf para o formato cn=config


11 A converso pode ser feita utilizando o aplicativo slaptest.

11 slaptest -f /usr/local/etc/openldap/slapd.conf -F /usr/local/etc/openldap/slapd


11 Teste a converso com o rootdn e rootpw conforme a seguir:
22 ldapsearch -x -D cn=config -w VerySecret -b cn=config

Executando o servidor LDAP


11 SLAPD projetado para executar como servidor stand alone.

11 Vantagens como caching e gerenciamento de concorrncia.


11 Opes de linhas de comando:

-f <filename>
-n <service-name>
-u user -g group
-d <level> | ?
11 Inicializao do servidor LDAP:

# /usr/local/etc/libexec/slapd [<option>]
11 Encerramento do servidor LDAP:

# kill INT `cat /usr/local/var/slapd.pid`

O daemon SLAPD projetado para executar como um servidor stand alone, permitindo
vantagens como caching e gerenciamento de concorrncia, entre outras.
Algumas das opes que podem ser passadas para SLAPD:
11 f <filename>: especifica um arquivo de configurao alternativo para SLAPD; o default
normalmente /etc/openldap/slapd.conf;
11 n <service-name>: especifica o nome do servio usado para login e outros propsitos.
O nome pode ser os nomes, ou UID e GID, respectivamente;
11 d <level>: indica o nvel de debug para visualizao dos logs associados execuo do
SLAPD; do servio default slapd;
11 u user -g group: indica usurio e grupo, respectivamente, para executar SLAPD; user e group.

Inicializando o servidor LDAP


Para executar o servidor, utilize o comando:

vistas anteriormente)

Encerrando o servidor LDAP


Para encerrar o servio de maneira segura, use o comando:

# kill -INT `cat /usr/local/var/slapd.pid`


Nesse momento, vale ressaltar que o SLAPD escreve seu PID no arquivo chamado slapd.pid no
diretrio configurado em slapd.conf. Ele tambm escreve seus argumentos no arquivo chamado

Captulo 4 - Servidor LDAP

# /etc/libexec/slapd [<option>] (option uma das opes de linha de comando

slapd.args, no diretrio configurado em slapd.conf, por exemplo, em /usr/local/var/slapd.args.


103

Criao e manuteno de base de dados


On-line:

11 Geralmente utilizado para adicionar poucas entradas.


Off-line:
11 Geralmente usado para adicionar grandes bases de dados.
11 Usa utilitrios especiais providos pelo SLAPD.
11 Faz leitura de slapd.conf e do arquivo LDIF.
11 Produz os arquivos de ndice da base de dados de maneira direta.
H duas maneiras de criar uma base de dados. Pode-se criar uma base de dados on-line usando
LDAP. Com esse mtodo, inicializado SLAPD e adicionadas entradas usando o cliente LDAP
escolhido. A segunda maneira fazer essa criao off-line, usando utilitrios especiais providos
pelo SLAPD. Esse mtodo melhor quando estamos trabalhando com bases de grande porte ou
especificamente se desejamos garantir que a base de dados no seja acessada enquanto est
sendo criada.

Criando uma base de dados on-line


O pacote OpenLDAP vem com um utilitrio chamado ldapadd, usado para adicionar
entradas enquanto o servidor LDAP est executando. Nesse caso, devemos configurar
algumas opes em slapd.conf antes de iniciar SLADP.
11 suffix <dn> (indica as entradas que sero mantidas pela base de dados.)
11 directory /usr/local/tudelft (indica onde os arquivos ndice devem ser criados.)
11 rootdn <dn> e rootpw <passwd> (indicam um DN e senha que podem ser usados para
autenticar a entrada de super-usurio na base de dados. Se o SASL est sendo usado como
um mecanismo para autenticao em vez de LDAP, a linha rootpw pode ser descartada.)
11 index {<attrlist> | default} [press,eq,aprox,sub,none] (indica as definies de ndice desejadas.)
11 Entre outros.

Administrao de Sistemas Linux: Servios para Internet

On-line:

104

11 ldapadd -f entrada.ldif -x D

\\ cn=Admin,dc=example,dc=com -w secret

11 Deste modo:
22 rootdn
33 cn=Admin, dc=example, dc=com
22 rootpw como secret
Aps especificar tais opes, use o comando:

# ldapadd -f /tmp/newentry -x -D cn=Admin, dc=example, dc=com -w


secret
Essa linha assume rootdn como cn=Admin, dc=example, dc=com e rootpw como secret
(pode ser uma senha encriptada SHA-1 em slapd.conf ). Caso no deseje especificar a senha
na linha de comando, use a opo -W em vez de -w.

Criando base de dados off-line


Para criar off-line, so necessrias algumas ferramentas que fazem a leitura do arquivo de
configurao slapd.conf e uma entrada no arquivo LDIF contendo uma representao das
entradas a adicionar. Elas produzem os arquivos de ndice da base de dados, de maneira
direta. Opes como suffix, directory e index devem ser especificadas.
Aps isso, use o comando:

# slapadd -l <inputfile> -f <slapdconfigfile> [-d <debuglevel>] [-n


<integer> | -b <suffix>]
-l <inputfile> (especifica o arquivo LDIF contendo as entradas a adicionar no formato
texto).

-f <slapdconfigfile> (indica o arquivo de configurao SLAPD que cria os ndices).


-d <debuglevel> (indica o nvel de debug).
-n <databasenumber> ou -b <suffix> (indicam a base de dados a modificar).
Off-line:

11 slapadd: entrada da base de dados.


11 slapdindex: gerao dos arquivos de ndice.
11 slapcat: copia o contedo da base de dados em um arquivo no formato LDIF.
s vezes, necessrio gerar ndices novamente atravs do comando:

# slapindex -f <slapdconfigfile> [-d <debuglevel>] [-n


<databasenumber> | -b <suffix>]
O programa slapcat usado para fazer dump da base de dados para um arquivo LDIF e sua
sintaxe :

# slapcat -l <filename> [-d <debuglevel>] [-n <databasenumber>]


importante ressaltar que LDIF usado para representar entradas LDAP em formato de
texto simples. A forma bsica de uma entrada :

# comment
dn: <distinguished name>
<attrdesc>:<attrvalue>
<attrdesc>:<attrvalue>

11 ldapsearch: pesquisa entradas nas bases de dados LDAP.


11 ldapdelete: remove entradas das bases de dados LDAP.
11 ldapmodify: modifica entradas nas bases de dados LDAP.
ldapsearch uma interface Shell para a chamada de sistema ldap_search, usada para pesquisar entradas nas bases de dados LDAP. Exemplo:

# ldapsearch -u -b o=rnp,c=br cn=Pedro Silva sn mail

q
Captulo 4 - Servidor LDAP

Alguns utilitrios LDAP:

105

ldapdelete uma interface shell para a chamada ldap_delete, usada para remover entradas
das bases de dados LDAP. Exemplo:

# ldapsearch cn=Pedro Silva,o=rnp,c=br


ldapmodify uma interface shell para as chamadas ldap_modify e ldap_add, usadas para
modificar entradas nas bases de dados LDAP. Exemplo:

# ldapmodify -b -r -f /tmp/entrymods

Informaes e caractersticas adicionais


Ferramentas de migrao LDAP:

11 Coleo de scripts Perl usada para converter arquivos de configurao para o formato LDIF.
11 teis no uso do servidor LDAP para autenticar usurios, converter NIS e arquivos de
senha para LDIF.
A autenticao usando LDAP suportada na operao de bind. Tipos de autenticao:
11 Annima.
11 Simples.
11 Autenticao SASL.
Coleo de scripts em Perl usados para converter arquivos de configurao para o formato
LDIF, muito teis para autenticar usurios via servidor LDAP. Podem ser usados tambm
para converter NIS e arquivos de senhas para o formato LDIF, fazendo com que esses
arquivos sejam compatveis com o servidor LDAP.
Para acessar servios LDAP, o cliente LDAP primeiro deve autenticar-se para o servio, ou
seja, deve informar ao servidor LDAP que est acessando os dados de modo que o servidor
pode decidir o que o cliente poder ver e fazer.
No LDAP, a autenticao suportada na operao de bind. O LDAP suporta trs tipos de
autenticaes: annima, simples e SASL. Um cliente que envia um pedido de autenticao
sem fazer um bind tratado como um cliente annimo.
A autenticao simples consiste em enviar ao servidor LDAP o DN completamente qualifi-

Administrao de Sistemas Linux: Servios para Internet

cado do cliente e sua senha (no criptografada).

106

A autenticao Simple Authentication and Security Layer (SASL) especifica um protocolo cujos
dados so transferidos entre o cliente e o servidor, utilizando canais encriptados (como SSL)
suportados pelo servidor LDAP, que diminuem a exposio da senha. Com SASL, o LDAP pode
suportar qualquer tipo de autenticao combinada entre o cliente e o servidor LDAP.
Ferramentas LDAP grficas:

11 KDirAdm.
11 Directory Administrator.
11 GQ.
11 LDAP Browser.
11 KDirAdm: ferramenta de gerncia de diretrios LDAP escrita para KDEv2 e mais recentes;
11 Directory Administrator: aplicao GNOME para gerenciamento de usurios e grupos;
11 GQ: cliente LDAP grfico escrito para GNOME;
11 LDAP Browser/Editor: ferramenta para administrao e visualizao.

Roteiro de Atividades 4
Atividade 4.1 Instalao do servidor OpenLDAP
Ser realizada a instalao do servidor LDAP a partir do repositrio Debian.
1. Instale os seguintes aplicativos:

# apt-get install slapd ldap-utils db4.8-util acl attr migrationtools


libpam-ldap libnss-ldap nscd gzip
Sero feitas as seguintes perguntas:
11 Senha do admin: rnpesr
11 Confirme a senha: rnpesr
11 Identificador de Recurso Uniforme do Servidor LDAP; no servidor, informe: ldap://127.0.0.1.
11 O nome distinto da base de procura: dc=empresa,dc=com,dc=br
22 Verso LDAP: 3
22 Conta LDAP para o root: cn=admin,dc=empresa,dc=com,dc=br
22 Password da conta root do LDAP: rnpesr
22 Tornar a conta root local o administrador da base de dados? Sim.
22 A base de dados LDAP requer autenticao? No.
22 Conta LDAP para o root: cn=admin,dc=empresa,dc=com,dc=br
22 Password da conta root do LDAP: rnpesr
2. Reconfigurao do pacote SLAPD:

#dpkg-reconfigure slapd
Sero feitas as seguintes perguntas:
11 Omitir a configurao do Servidor OpenLdap? No.
11 Informe o nome de domnio DNS: empresa.com.br
11 Informe o nome de sua organizao: Empresa.
11 Senha do admin: rnpesr
11 Confirme a senha: rnpesr

11 Voc deseja que sua base de dados seja removida? No.


11 Mover a base de dados antiga? Sim.
11 Permitir protocolo LDAPv2? No.
3. Inicie o servidor LDAP:

# /etc/init.d/slapd start
4. Depois de iniciado o servidor LDAP, podemos test-lo com a seguinte consulta:

# ldapsearch -x -b -s base (ObjectClass=*)

Captulo 4 - Roteiro de Atividades

11 Backend da base de dados: BDB

107

5. Se aparecer no console o resultado a seguir, est tudo certo:

# extended LDIF
# LDAPv3
# base<> with scope base
# filter: (ObjectClass=*)
# requesting: ALL
#
dn:
objectClass: top
objectClass: OpenLDAProotDSE
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1

Atividade 4.2 Usando o Migration Tools


Migration Tools um conjunto de scripts que permite importar as contas locais do Sistema
Operacional Linux para o LDAP.
1. Edite o arquivo /usr/share/migrationtools/migrate_common.ph e substitua padl.com pelo
seu domnio empresa.com.br, e dc=padl,dc=com por dc=empresa,dc=com,dc=br.

# Default DNS domain


$DEFAULT_MAIL_DOMAIN = empresa.com.br;

Administrao de Sistemas Linux: Servios para Internet

# Default base

108

$DEFAULT_BASE = dc=empresa,dc=com,dc=br;
2. Gere as bases de dados para exportao:

# cd /usr/share/migrationtools
# ./migrate_base.pl > /tmp/base.ldif
# ./migrate_passwd.pl /etc/passwd /tmp/passwd.ldif
# ./migrate_group.pl /etc/group /tmp/group.ldif
3. Edite o arquivo /tmp/base.ldif e remova os registros:

dn: dc=com,dc=br
dc: com
objectClass: top

objectClass: domain
dn: dc=empresa,dc=com,dc=br
dc: empresa
objectClass: top
objectClass: domain
4. Adicione na base LDAP os registros:

# ldapadd -x -W -D cn=admin,dc=empresa,dc=com,dc=br < /tmp/base.


ldif
# ldapadd -x -W -D cn=admin,dc=empresa,dc=com,dc=br < /tmp/
passwd.ldif
# ldapadd -x -W -D cn=admin,dc=empresa,dc=com,dc=br < /tmp/group.
ldif
# /etc/init.d/slapd restart

Atividade 4.3 Configurao do cliente Linux para uso do LDAP


Para que as mquinas possam se autenticar na base de dados do LDAP, ser necessrio configurar o PAM e o NSS para consultarem o servidor do LDAP. Vamos configurar o servidor e
o cliente Linux para se autenticarem na base do LDAP, que est rodando na mquina virtual
servidor (192.168.1.1).

Instalao dos pacotes


No servidor Linux os pacotes j foram instalados na Atividade 1.
No cliente Linux:

# apt-get install libnss-ldap libpam-ldap nscd


Responda as perguntas informando o endereo do servidor do LDAP:
11 Endereo para consulta de usurios no LDAP? ldap://192.168.1.1/
11 Nome da base de pesquisa? dc=empresa,dc=com,dc=br
11 Verso do protocolo LDAP a ser utilizada? 3
11 Conta LDAP para o root? cn=admin,dc=empresa,dc=com,dc=br
11 Senha da conta root do LDAP? Rnpesr

11 A base de dados LDAP requer autenticao? No

Configurando a autenticao pelo LDAP


Devemos criar ou editar os arquivos /etc/libnss-ldap.secret e /etc/pam_ldap.secret contendo a
Password Root DN como texto puro, ou seja, apenas uma linha com senha, sem as aspas.
Isso facilitar o administrador do LDAP via linha de comando, pois no ser necessrio
informar a senha toda vez que se fizer alguma alterao na base LDAP. Mas tome cuidado
com esse arquivo, pois ningum que estiver logado no servidor poder l-lo.

Captulo 4 - Roteiro de Atividades

11 Privilgios especiais LDAP para o root? Sim

109

1. Verifique o contedo do arquivo /etc/libnss-ldap.secret. Caso no exista, insira a senha do


servidor LDAP:

rnpesr
2. Mudando a permisso do arquivo /etc/libnss-ldap.secret:

# chmod 600 /etc/libnss-ldap.secret


3. Verifique o contedo do arquivo /etc/pam_ldap.secret. Caso no exista, insira a senha do
servidor LDAP:

rnpesr
4. Mudando a permisso do arquivo /etc/pam_ldap.secret:

# chmod 600 /etc/pam_ldap.secret


5. Verifique a configurao do arquivo /etc/libnss-ldap.conf

base dc=empresa,dc=com,dc=br
uri ldap://192.168.1.1
ldap_version 3
rootbinddn cn=admin,dc=empresa,dc=com,dc=br
6. Verifique a configurao do arquivo /etc/pam_ldap.conf

base dc=empresa,dc=com,dc=br
uri ldap:// 192.168.1.1
ldap_version 3
rootbinddn cn=admin,dc=empresa,dc=com,dc=br
7. Edite o arquivo /etc/ldap/ldap.conf

BASEdc=empresa,dc=com,dc=br
URI

ldap://192.168.1.1

8. Necessitamos agora configurar o Name Service Switch (NSS) para usar LDAP atravs do

Administrao de Sistemas Linux: Servios para Internet

arquivo /etc/nsswitch.conf:

110

passwd:

compat ldap

group:

compat ldap

shadow:

compat ldap

hosts:

files dns

networks:
protocols:
services:
ethers:
rpc:
netgroup:

files
db files
db files
db files
db files
ldap

9. Reinicie o servio NSCD:

# /etc/init.d/nscd restart
10. Para usar o LDAP, as configuraes do Plugabe Autentication Module (PAM) devem ser alteradas. O diretrio de configurao /etc/pam.d/. Edite o arquivo /etc/pam.d/common-password
e remova o atributo use_authok:

password [success=1 user_unknown=ignore default=die]

pam_ldap.so

try_first_pass
11. Edite o arquivo /etc/pam.d/common-session e inclua a linha a seguir no final do arquivo:

session optional pam_mkhomedir.so skel=/etc/skel/ umask=077


12. O teste pode ser feito com a ferramenta getent, da seguinte forma:

# getent passwd
# getent shadow
# getent group
Se voc visualizar o contedo semelhante aos arquivos locais (/etc/passwd, /etc/shadow,
/etc/group) porque no h nenhuma informao extra no LDAP.

Atividade 4.4 Criao e teste de base de dados para ser adicionada


ao servidor OpenLDAP
1. Crie o arquivo /root/aluno2.ldif:

dn: uid=aluno2,ou=People,dc=empresa,dc=com,dc=br
uid: aluno2
cn: aluno2
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$1$9Dt/Yo2O$hou4BMnIf9S8Cn70RcAxg0
shadowLastChange: 13865

shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1005
gidNumber: 1010
homeDirectory: /home/aluno2
gecos: aluno2,,,

Captulo 4 - Roteiro de Atividades

shadowMax: 99999

111

2. Crie o arquivo /root/grupo.ldif:

dn: cn=rnp,ou=Group,dc=empresa,dc=com,dc=br
objectClass: posixGroup
objectClass: top
cn: rnp
userPassword: {crypt}x
gidNumber: 1010
3. Adicione o arquivo /root/grupo.ldif base:

# ldapadd -x -D cn=admin,dc=empresa,dc=com,dc=br -w rnpesr -f /


root/grupo.ldif
4. Adicione o arquivo /root/aluno2.ldif base:

# ldapadd -x -D cn=admin,dc=empresa,dc=com,dc=br -w rnpesr -f /


root/aluno2.ldif
5. Troque a senha do usurio aluno2:

# passwd aluno2

Atividade 4.5 Testando o funcionamento do LDAP


1. Na mquina cliente, abra um novo console ou terminal e tente logar como usurio do
LDAP criado a partir do arquivo:

login: aluno2
2. Verifique no arquivo /etc/passwd do servidor se o usurio do LDAP existe:

# cat /etc/passwd
3. Voc no deve ter encontrado o usurio aluno2. Para encontr-lo, execute:

# getent passwd

Administrao de Sistemas Linux: Servios para Internet

4. Com os grupos ocorre a mesma coisa; por meio do arquivo /etc/group no possvel visu-

112

alizar o grupo RNP criado no LDAP. Para v-lo, use:

# getent group

5
Aprender teoria e prtica do servio DHCP, conhecer formas de transferncia de
arquivos entre computadores, entender o funcionamento do File Transfer Protocol
(FTP), analisar formas seguras de transferncia de arquivos, envolvendo encriptao
e autenticao, inclusive na administrao remota de outros servidores e backup.

conceitos

DHCP, Telnet, FTP, servio SSH.

Introduo
11 Dynamic Host Configuration Protocol (DCHP).

22 Instalao do servidor DHCP.


22 Configurando e iniciando o servidor DHCP.
11 Configurando e iniciando o servidor Telnet.
11 File Transfer Protocol (FTP).
11 Secure Shell (SSH).
22 Instalando e configurando o servidor SSH.
22 Gerao e utilizao de chaves de autenticao.
22 Transferncia de arquivos segura utilizando SCP e SFTP.
O estudo deste captulo est dividido em trs partes: DHCP, Telnet e SSH. Na primeira parte
so abordados aspectos tericos e prticos do servio DHCP, sendo examinadas algumas
possibilidades de uso dessa soluo. Na segunda parte veremos a teoria relacionada ao
Telnet, um importante servio utilizado em muitas redes, com uma abordagem das configuraes prticas desse servio.
Na terceira parte sero estudadas as formas de transferncia de arquivos entre computadores, como o servio FTP, associadas a grupos de usurios e pastas. Conheceremos formas
seguras de transferncia de arquivos, que envolvem encriptao e autenticao, inclusive na
administrao remota de outros servidores e backup.

Captulo 5 - DHCP, Telnet, FTP e SSH

objetivos

DHCP, Telnet, FTP e SSH

113

DHCP
11 Protocolo de rede cuja funo atribuir informaes TCP/IP para as mquinas clientes.

11 As informaes so concentradas em um servidor (DHCP), que passa para as


mquinas informaes como:
22 Endereo IP e mscara de rede.
22 Gateway.
22 Servidor DNS.
22 Domnio.
O protocolo Dynamic Host Configuration Protocol (DHCP) prov, atravs de um servidor
DHCP, informaes para estaes IP em uma rede. Consiste em dois componentes: um
protocolo para distribuir parmetros de configurao especficos a partir de um servidor
DHCP; e um mecanismo para alocao de endereos de rede para as estaes. baseado na
arquitetura cliente e servidor, onde o servidor DHCP distribui endereos IP e parmetros de
configurao de rede para as estaes, tais como: mscara de sub-rede; endereo do roteador de sada (gateway); informaes de domnio e outras que sero mencionadas adiante.
Existem alguns protocolos que proveem recursos utilizados pelo protocolo DHCP, tais como:
BOOTP; Reverse Address Resolution Protocol (RARP), atravs do Dynamic RARP (DRARP);
Trivial File Transfer Protocol (TFTP) e Internet Control Message Protocol (ICMP).
11 BOOTP: mecanismo de transporte de informaes de configurao. Permite que estaes diskless obtenham um endereo IP, alm do endereo IP do servidor BOOTP, e um
arquivo a ser carregado em memria para fins de boot. Pode ser utilizado ainda como
relay para servidores DHCP, eliminando a necessidade de um servidor DHCP em cada
rede fsica.
11 RARP: protocolo que permite a obteno de um endereo IP a partir de um endereo
MAC. Uma estao envia uma mensagem em broadcast na rede com a finalidade de que
o servidor DHCP lhe fornea um endereo IP.
11 TFTP: protocolo utilizado para transferncia de arquivos, no qual cada pacote confirmado (ACK) individualmente.
11 ICMP: protocolo utilizado para permitir que estaes localizem roteadores por meio de
Administrao de Sistemas Linux: Servios para Internet

mensagens ICMP Redirect.

114

Motivao:

11 Ferramenta que facilita a administrao de redes.


Funcionalidades:
11 Controla a forma de atribuio de endereos IP s mquinas cliente da rede.
11 Estabelecimento de faixas de endereos utilizados.
11 Informaes para as mquinas clientes referentes aos endereos do roteador de
sada (gateway), servidor DNS e domnio.
O servio DHCP foi projetado para suportar as RFCs associadas aos requisitos para funcionamento das estaes (host requirements). Aps a obteno dos parmetros por meio do protocolo DHCP, as estaes devem ser capazes de trocar pacotes com qualquer outra na internet.

O DHCP suporta trs mecanismos para alocao de endereos IP:


11 Alocao automtica.
11 Alocao dinmica.
11 Alocao manual.
O DHCP suporta trs mecanismos para alocao de endereos IP:

11 Alocao automtica: um endereo IP atribudo permanentemente para uma estao;


11 Alocao dinmica: um endereo IP atribudo para uma estao por um perodo determinado de tempo;
11 Alocao manual: um endereo IP atribudo para uma estao pelo administrador da
rede, o que feito por meio do arquivo de configurao do DHCP.
Pode-se utilizar um ou mais desses mecanismos ao mesmo tempo em uma determinada
rede. Uma estao cliente deve ser capaz de descobrir os parmetros necessrios ao seu
funcionamento, inserindo-os automaticamente em seu sistema sem interveno manual.
Do mesmo modo, o servidor deve funcionar de maneira automtica sem a necessidade de
interveno manual do administrador para o funcionamento de cada estao cliente, exceto
em casos especiais onde seja necessrio fixar determinado endereo a um cliente especfico.
Deve ainda suportar estaes que utilizem o protocolo BOOTP (RFC 2132), IPv6 (RFC 4361),
SIP (RFC 3319) e IEEE 1394 (RFC 2855).

Formato de uma mensagem DHCP


OP (1)

HTYPE (1)

HLEN (1)

HOPS (1)

XID (4)
SECS (2)

FLAGS (2)
CIADDR (4)
YIADDR (4)
SIADDR (4)

CHADDR (16)
SNAME (64)
Figura 5.1
Formato de
mensagens DHCP
indicando campos e
tamanho em bytes.

FILE (128)
OPTIONS (varivel)

Captulo 5 - DHCP, Telnet, FTP e SSH

GIADDR (4)

115

Campos em uma mensagem DHCP:


11 OP: numa mensagem DHCP, uma solicitao e uma resposta possuem os mesmos
campos. O que as diferenciam o contedo desse campo. A informao 1 indica uma
solicitao (BOOTREQUEST), a informao 2 indica uma resposta (BOOTREPLY);
11 HTYPE (Hardware Address Type): informa o padro de rede utilizado pelo adaptador
de rede;
11 HLEN (Hardware Address Length): valor 6 para endereo MAC;
11 HOPS: quantidade de roteadores pelos quais a mensagem dever passar;
11 XID (Transaction ID): nmero aleatrio escolhido pelo cliente, utilizado em solicitaes e
respostas associadas;
11 SECS: segundos desde que o cliente iniciou processo de aquisio ou renovao de endereo;
11 FLAGS: primeiro bit 1 para broadcast; demais reservados para uso futuro;
11 CIADDR (Client IP Address): preenchido somente no cliente que est em processo de
renovao;
11 YIADDR (Your Client IP Address): endereo IP cliente;
11 SIADDR: endereo IP do prximo servidor a ser utilizado no processo de boot; retornado
pelo servidor;
11 GIADDR: endereo IP do roteador da rede local, utilizado quando o boot realizado por
meio deste;
11 CHADDR (Client Hardware Address): endereo de hardware do cliente;
11 NAME: Server Host Name (opcional);
11 FILE: nome do arquivo de boot; nulo em mensagem DHCPDISCOVER; caminho completo
de arquivo em DHCPOFFER;
11 OPTIONS: parmetros opcionais. Esse campo utilizado para informar que tipo de resposta ou solicitao DHCP (DHCPDISCOVER, DHCPOFFER etc.) est sendo enviada para o
cliente ou para o servidor.

Funcionamento do protocolo DHCP

Administrao de Sistemas Linux: Servios para Internet

Lado cliente

116

Mensagens

Lado servidor

DHCPDISCOVER
Determina
Recebe
resposta
Cliente DHCP

DHCPOFFER

congurao

DHCPREQUEST
DHCPACK

Commit

DHCPRELEASE

Inicializao

Libera lease

Servidor DHCP

completa

Tempo

Durante a obteno dos parmetros de configurao necessrios, algumas mensagens so


trocadas entre o servidor e o cliente DHCP. A seguir descrita a sequncia desses comandos
com seus respectivos significados:

Figura 5.2
Funcionamento do
protocolo DHCP.

11 Cliente envia mensagem broadcast DHCPDISCOVER. Inclui o endereo fsico, podendo


incluir sugesto de endereo IP e durao do lease.
11 O servidor pode responder com uma mensagem DHCPOFFER, que inclui um endereo
IP disponvel no campo YIADDR e outros parmetros em OPTIONS. O servidor verifica a
disponibilidade do endereo IP antes de disponibiliz-lo.
11 O cliente envia uma mensagem DHCPREQUEST que inclui o identificador do servidor
DHCP. Isso necessrio para o caso de o cliente receber respostas de mais de um servidor DHCP.
11 O servidor, aps receber a mensagem, salva as configuraes e responde com uma mensagem DHCPACK contendo as configuraes ofertadas anteriormente.
11 O cliente efetua uma verificao utilizando o protocolo ARP com o endereo fornecido.
Caso perceba que o endereo j est em uso, envia uma mensagem DHCPDECLINE. Caso
o cliente receba uma mensagem DHCPNACK, o processo reiniciado.
11 O cliente pode ainda liberar o endereo informando seu CHADDR.
Caso o cliente j saiba o endereo IP, desejando apenas renov-lo, enviar diretamente um
DHCPREQUEST.
Verificaes iniciais:

11 Verificar se o daemon dhcpd est instalado.


11 Verificar a existncia do arquivo dhcpd.leases.
11 Escolher o esquema de interao com o servio Domain Name Service (DNS).
necessrio efetuar algumas verificaes antes da edio do arquivo de configurao e
ativao do servidor DHCP. Entre elas: verificar se o daemon est instalado e verificar a sua
localizao, assim como a existncia do arquivo com a base de dados e a forma de interao
com o servio DNS.
1. Verificar se o daemon est instalado:
Verificar localizao do daemon dhcpd.

# whereis dhcpd
2. Criao do arquivo dhcpd.leases:
Verificar existncia do arquivo dhcpd.leases, que dever existir quando da execuo do
servidor DHCP.

Deve retornar algo do tipo: /var/lib/dhcp/dhcpd.leases.


Caso o arquivo dhcpd.leases no exista, dever ser criado.

# touch /var/lib/dhcp/dhcp.leases
3. Escolha do esquema de interao com o DNS:
Existem dois mtodos de interao entre o DHCP e o DNS:
11 ddns-update-style interim: permite a utilizao de mecanismo failover. Esse mecanismo possibilita que dois ou mais servidores DHCP dividam o conjunto de endereos IP disponveis.

Captulo 5 - DHCP, Telnet, FTP e SSH

# find / name dhcpd.leases

117

11 ddns-update-style ad-hoc: opo desatualizada, que no deve ser utilizada.


Deve-se escolher o mtodo a ser utilizado pelo servidor. A opo deve ser includa no
incio do arquivo /etc/dhcpd.conf.

Edio de arquivos de configurao


Inicialmente deve-se criar o arquivo de configurao dhcpd.conf, que consiste em:

11 Informaes de cabealho.
11 Parmetros.
11 Declaraes.
11 Comentrios.
As opes podem ser:
11 Globais, posicionadas antes das { }.
11 Especficas para cada cliente.
O arquivo de configurao dhcpd.conf dever ser editado, incluindo-se nele os valores
passados como parmetros de configurao s estaes cliente. Possui uma estrutura com
quatro componentes: cabealho, parmetros, declaraes e comentrios.
11 Cabealho: esquema de interao entre DHCP e DNS, conforme visto anteriormente;
11 Parmetros: como, quando e quais informaes devem ser enviadas aos clientes. Os
parmetros iniciados pela palavra option no so obrigatrios e no interferem no funcionamento do servidor; no entanto, a ausncia de alguns deles pode causar problemas
para as estaes clientes;
11 Declaraes: informaes sobre a topologia da rede, incluindo sub-redes, endereos
fixos destinados a clientes especficos e especificao de domnio;
11 Comentrios: linhas iniciadas com # so consideradas como comentrios.
Quaisquer mudanas nos arquivos de configurao somente tero efeito aps a
reinicializao do servidor.
Exemplo de arquivo de configurao com alguns valores tpicos:

Administrao de Sistemas Linux: Servios para Internet

# Arquivo dhcpd.conf

118

ddnsupdatestyle interim;
subnet 192.168.0.0 netmask 255.255.255.0 {
option routers 192.168.0.254;
option subnetmask 255.255.255.0;
option domainname linux.lan;
option domainnameservers 192.168.0.253;
option timeoffset 18000;
range 192.168.0.2 192.168.0.250;
}

O contedo do arquivo de configurao apresentado indica:


11 Interao com DNS: ddns-update-style interim.
11 Servidor responsvel por distribuir informaes na rede: 192.168.0.0/255.255.255.0
11 Parmetros option utilizados:
22 routers: indica gateway.
22 subnet mask: mscara de sub-rede.
22 domain name: nome do domnio.
22 domain name servers: endereo do servidor DNS.
22 time offset: tempo de lease, representado em segundos; o valor 0xffffffff utilizado
para representar o infinito.

Base de dados
Podem ainda ser utilizadas:

11 Redes compartilhadas.
11 Grupos.
11 Endereos IP estticos, utilizando DHCP.
Outro exemplo de arquivo de configurao, neste caso para duas sub-redes:

# Arquivo dhcpd.conf
# Redes compartilhadas
ddnsupdatestyle interim;
sharednetwork name {
option routers 192.168.1.254;
option domainname linux.lan;
option domainnameservers 192.168.0.253;
more parameters for rede2 sharednetwork
subnet 192.168.0.0 netmask 255.255.255.240 {
parameters for subnet
range 192.168.0.2 192.168.0.14;

subnet 192.168.0.16 netmask 255.255.255.240 {


parameters for subnet
range 192.168.0.17 192.168.0.30;
}
}

Captulo 5 - DHCP, Telnet, FTP e SSH

119

Trecho de arquivo de configurao:

subnet 192.168.0.0 netmask 255.255.255.240 {


range 192.168.0.2 192.168.0.14;
}
subnet 192.168.0.0 netmask 255.255.255.240 {
range 192.168.0.17 192.168.0.30;
}

host onca {
option hostname onca.linux.lan;
hardware ethernet 00:D0:B7:89:7E:5E;
fixed address 192.168.0.2;
}

A seguir apresentado outro exemplo de arquivo de configurao, neste caso com a


incluso de grupo e de IP fixos para determinadas mquinas da rede:

# Arquivo dhcpd.conf
ddnsupdatestyle interim;
group {
option routers 192.168.1.254;
option subnet mask 255.255.255.0;
option domainname rede.com;
option domainnameservers 192.168.0.253;
option timeoffset 18000;

Administrao de Sistemas Linux: Servios para Internet

host onca {
option hostname onca.linux.lan;
hardware ethernet 00:D0:B7:89:7E:5E;
fixed address 192.168.0.2;
}
host tigre {
option hostname tigre.linux.lan;
hardware ethernet 00:D0:B7:89:01:D1;
fixed address 192.168.0.3;
}
}
120

Iniciando e parando o servidor


11 Red Hat/Fedora: service dhcp <parmetro>

22 Parmetro: start, stop ou restart.


11 Debian: /etc/init.d/dhcpd <parmetro>
22 Parmetro: start, stop ou restart.
Observao: o arquivo dhcpd.leases dever existir.
Quando o servidor dispe de mais de uma interface de rede, pode-se especificar que este funcione somente para determinada interface. Essa funcionalidade extremamente til quando
o servidor encontra-se conectado a uma rede interna a qual deve prover DHCP, e a uma rede
externa a qual no se deseja acesso ao DHCP. Para isso, edite o arquivo /etc/sysconfig/dhcpd
atribuindo a interface ao parmetro DHCPARGS. Exemplo com a interface eth0:

# Arquivo /etc/sysconfig/dhcpd
# Command line options here
DHCPARGS=eth0
Podem ser passados parmetros como:
11 p <porta>: especifica a porta na qual o servidor DHCP atuar; padro 67 e 68;
11 f <nmero da porta>: executa o servidor em foreground;
11 d - modo debugging: os logs so gerados para a tela, em vez de /var/log/messages;
11 cd <nome do arquivo>: especifica a localizao do arquivo de configurao dhcpd.conf.
Originalmente em /etc/dhcpd.conf;
11 lf <nome do arquivo>: especifica a localizao do banco de dados do DHCP. Originalmente em /var/lib/dhcp/dhcpd.leases.
Configurando um cliente DHCP:

11 A configurao pode ser efetuada utilizando-se linha de comando ou interface grfica.


11 Red Hat/Fedora.
22 Arquivo /etc/sysconfig/network-scripts/ifcfg-eth0 se a interface a ser utilizada for eth0.
11 Debian.
22 Arquivo /etc/network/interfaces
A configurao de um cliente DHCP pode ser efetuada em dois momentos: durante a instalao do Sistema Operacional; ou em qualquer momento se for realizada pelo usurio com

Durante o processo de instalao do Sistema Operacional, surgir uma mensagem solicitando que seja escolhida a opo de configurao da rede: automtica (DHCP) ou manual.
Escolhendo a opo automtica, a mquina iniciar o processo para obteno dos parmetros de rede.
Aps o processo de instalao, a configurao pode ser feita por meio de interface grfica
ou linha de comando. Para a configurao por linha de comando, o arquivo a ser editado
/etc/sysconfig/network-scripts/ifcfg-eth0, nas distribuies Red Hat/Fedora, ou no arquivo
/etc/network/interfaces, no Debian.

Captulo 5 - DHCP, Telnet, FTP e SSH

privilgios de administrador da mquina.

121

Exerccio de fixao 1 e
Instalao do servidor DHCP
Instale o servidor de DHCP na mquina virtual SERVIDOR, verifique se o servio est funcionando e se o arquivo dhcp.leases foi criado. Se o arquivo dhcp.leases no foi gerado, ser
necessrio cri-lo manualmente.

Telnet
11 O objetivo principal a conexo a mquinas remotas de forma padronizada, tanto

em rede local quanto pela internet.


11 Prov comunicao bidirecional, orientada conexo.
11 Permite o acesso e a utilizao de recursos computacionais da mquina remota.
11 A desvantagem que login, senha e dados trafegam em texto plano sem encriptao.
22 Recomenda-se utilizar SSH, deixando Telnet somente para onde no h cliente SSH.
O Telnet um protocolo orientado conexo, que se utiliza de Transmission Control
Protocol (TCP), sendo utilizado para transmisso bidirecional de caracteres para uso geral,
baseada em trs conceitos principais:
11 Concepo de um terminal virtual de rede;
11 Princpio de opes negociadas;
11 Viso simtrica de terminais e processos.
Quando uma conexo Telnet estabelecida, cada extremidade considerada a origem e a
terminao de um terminal virtual de rede (Network Virtual Terminal NVT). Um NVT um
dispositivo imaginrio que prov uma representao de um terminal. Todos os hosts, tanto
o cliente quanto o servidor, mapeiam as caractersticas de seus dispositivos locais de modo
a parecerem um NVT, uns para os outros. Denomina-se servidor o lado que prov algum
servio, e cliente o lado que utiliza esse servio e que normalmente inicia a comunicao.
Telnet usa uma codificao USA-ASCII de 7 bits em um campo de 8 bits. Apesar de o Telnet
ser bidirecional e full-duplex, o NVT visto como uma comunicao half-duplex com buffer.
Os dados so acumulados at completar uma linha de dados, que ento transmitida.

Administrao de Sistemas Linux: Servios para Internet

A maior desvantagem do Telnet que todo o trfego na rede em texto plano. Desse modo,

122

todos os dados enviados, incluindo login e senha, podem ser interceptados para ferramentas
de captura ativas na rede. Recomenda-se a utilizao de Telnet somente quando no houver
cliente SSH disponvel. Outra possibilidade a utilizao de Telnet em redes internas seguras
ou Virtual Private Network (VPN).

Cliente Telnet
$ telnet <nome do servidor>
11 open <nome do servidor>: inicia uma sesso.
11 close: encerra sesso e retorna ao modo de comando.
11 exit: encerra sesso e sai do Telnet.
11 ?: exibe menu de ajuda.

Para que um host inicie uma conexo com um servidor, necessrio que o daemon telnetd
esteja disponvel e em execuo. Uma sesso Telnet pode ser estabelecida entre mquinas
independentemente dos Sistemas Operacionais, e pode ser utilizada para acessar servidores, roteadores, switches etc. Exemplo de conexo com Telnet:

$ telnet leao.linux.lan
Trying leao.linux.lan ...
Connected to leao.linux.lan (192.168.0.3)
Escape character is ^]
Debian Sarge Kernel 2.6.153
login:
password:
Last login: Seg Out 16 09:32:54 from onca.linux.lan
$ netstat nr
Kernel IP routing table
Destination Gateway Genmask Flags
192.168.0.0

0.0.0.0

127.0.0.0 0.0.0.0

255.255.255.0 U

255.0.0.0

0.0.0.0 192.168.0.1
0.0.0.0 UG
$ exit

Servidor Telnet

11 Necessrio instalar servidor Telnet.


22 No Red Hat: telnetd deve ser instalado.
22 No Fedora: telnetd deve ser instalado.
22 No Debian: telnetd deve ser instalado.
11 Utiliza inetd (Debian) e xinetd (Red Hat/Fedora).
11 Recomendvel configurar para utilizar xinetd.
Verses antigas do Red Hat tm o telnetd instalado por padro. Verses atuais Red Hat/

Red Hat/Fedora
# rpm -ivh <pacote telnet>.rpm
# chkconfig telnet on
chkconfig telnet off
Debian
# apt-get install telnetd

(instala Telnet)

(ativa Telnet)
(para desabilitar)

Captulo 5 - DHCP, Telnet, FTP e SSH

Fedora devem ser instaladas manualmente.

123

No Debian o servidor Telnet utiliza inetd, em vez de xinetd. Para parar o servidor, deve-se
comentar a linha do Telnet no arquivo /etc/inetd.conf, reiniciando o servidor inetd em
seguida com o comando:

# /etc/init.d/inetd restart
O xinetd possui maior flexibilidade que o inetd, por permitir a utilizao de filtros de acesso
baseados, por exemplo, em endereo IP de origem. Para trocar o inetd pelo xinetd, necessrio instalar o pacote xinetd e criar o arquivo de configurao /etc/xinetd.d/telnet.
Formas de melhorar a segurana:
11 Utilizar somente em redes locais seguras.
11 Utilizar VPNs se dados trafegarem em redes pblicas.
11 Mudar a porta utilizada pelo servidor.
22 Melhora parcial.
22 Ferramentas portscan podem detectar a nova porta.
11 Restringir o acesso por IP de origem.
Alm da utilizao do Telnet somente em redes locais seguras ou com VPN em redes
pblicas, pode-se ainda utilizar dois mtodos adicionais para melhorar um pouco a segurana: troca da porta utilizada pelo servidor; restrio do acesso a alguns IPs.

# Arquivo /etc/xinetd.d/telnet
# default: on
# description: The telnet server serves telnet sessions
# unencrypted username/password pairs for authentication.
service stelnet
{

flags

= REUSE

socket_type

Administrao de Sistemas Linux: Servios para Internet

wait

124

user
server

= stream

= no
= root

= /usr/sbin/in.telnetd

log_on_failure
disable

port

= 7777

only_from
}

+= USERID

= no

= 192.168.0.2 127.0.0.1 192.168.0.1

File Transfer Protocol (FTP)


Transferncia de arquivo confivel de/para servidores de arquivos.

11 Upload: transferncia de arquivos para um servidor.


11 Download: transferncia de arquivos de um servidor.
Tipos de arquivos transferidos:
11 Arquivos texto: manipulados como sendo compostos por uma cadeia de caracteres
ASCII ou EBCDIC.
11 Arquivos binrios: formados por uma sequncia de octetos transferidos sem qualquer converso.
O protocolo File Transfer Protocol (FTP) est entre os meios mais populares utilizados para
transferncia de arquivos pela internet. Grande nmero de servidores FTP est disponvel
tanto na internet quanto em redes locais, utilizados para distribuio de contedo, documentos etc. Muitos servidores web se utilizam do recurso FTP como meio para disponibilizar
arquivos e programas. A facilidade de acesso aos dados e a confiabilidade provida pelo
Transmission Control Protocol (TCP) so fatores que estimulam seu uso.
Todas as distribuies Linux vm com um servidor FTP embutido, o qual pode estar ativado
ou desativado. Existem ainda outros servidores FTP amplamente utilizados e que podem ser
instalados, entre eles o VSFTPD e o PROFTPD.
Esse servio pode ser configurado para permitir o acesso a todo e qualquer usurio, denominado annimo, ou para restringir o acesso a determinados usurios. Em ambos os casos
pode-se determinar quem acessa o qu, e os privilgios que possui nas pastas que acessa.
Pode-se ainda efetuar ajustes para facilitar a passagem por meio de firewalls, para utilizao
de mltiplos servidores virtuais, e tambm para permitir a utilizao por grupos de usurios.
Tipos de acesso:

11 Por usurio normal.


22 Permite o acesso por parte de usurios cadastrados no servidor.
22 O usurio pode navegar no sistema de arquivos do servidor.
11 Por usurio annimo:
22 Permite o acesso por parte de qualquer usurio.
22 Restringe a rea de acesso ao sistema de arquivos do servidor.
O administrador de um servidor FTP tem pleno controle sobre quem pode acessar o qu.
Pode-se ainda relacionar usurios cadastrados a determinadas pastas. Em todos os casos os
privilgios de leitura, escrita, criao ou remoo de arquivos e pastas podem ser controlados.
De modo geral h dois tipos de usurios:
11 Usurio normal: usurio cadastrado. Possui login e senha, e por meio deles acessa
determinadas pastas e arquivos;
11 Usurio annimo: usurio que acessa o servio sem ser autenticado. De modo geral
possui somente permisso de leitura, podendo efetuar download de arquivos considerados pblicos.

Captulo 5 - DHCP, Telnet, FTP e SSH

Nesse caso, pode-se escolher entre permitir ou restringir o acesso de usurios annimos.

125

Nos dois casos podemos conceder privilgios de leitura (download) e escrita (upload) a
determinadas pastas e arquivos. Entretanto, recomenda-se manter o usurio com acesso
somente para leitura e na pasta pblica. Caso no seja necessrio um usurio annimo,
desejvel ainda bloquear o acesso a esse tipo de usurio.

Funcionamento do FTP

Baseado no estabelecimento de conexes entre o cliente e o servidor:


11 Conexo de controle: usada na transferncia de arquivos.
11 Conexo de dados: uma para cada arquivo transferido.
Conexo de controle
controle

controle

dados

dados

Cliente FTP

Conexes de dados

Servidor FTP

Figura 5.3
Funcionamento
do FTP.

O protocolo FTP baseado em conexes TCP. No entanto, existem dois tipos de conexo:
11 Conexo de controle: estabelecida e mantida durante todo o tempo de sesso; por
essa conexo que so enviados os comandos;
11 Conexes de dados: estabelecidas sempre que solicitada uma transferncia de dados.
Cada um desses arquivos transferido em uma conexo separada. Pode haver mltiplas
conexes simultneas.

Tipos de servidor FTP


FTP ativo
Conexo de controle
De: porta alta cliente Para: porta 21 servidor

Conexo de dados
Cliente FTP

De: porta 20 servidor Para: porta alta cliente

Servidor FTP

Administrao de Sistemas Linux: Servios para Internet

FTP passivo

126

Conexo de controle
De: porta alta cliente Para: porta 21 servidor

Conexo de dados
Cliente FTP

De: porta alta cliente Para: porta alta servidor

Servidor FTP

Um servidor FTP pode funcionar no modo passivo ou ativo. Nos dois casos existem as conexes
de controle e as conexes de dados. A diferena est na parte que origina cada conexo.

Servidor FTP ativo


O cliente se conecta ao servidor por meio de uma conexo de controle, que se origina em
uma porta alta do cliente e se destina porta 21 do servidor. Quando solicitado o envio
de arquivos, o servidor inicia uma conexo de dados que se origina na porta 20 do servidor
e se destina a uma porta alta no cliente. Desse modo, a conexo de controle iniciada pelo
cliente, e as conexes de dados so iniciadas pelo servidor.

Figura 5.4
Tipos de Servidores
Ativo e Passivo.

O acesso a um servidor ativo muitas vezes bloqueado pelo firewall da rede, uma vez que as
conexes de dados so iniciadas por mquinas de fora da rede e com destino a mquinas na
rede interna.

A resposta ao comando ls, que lista os diretrios do servidor, enviada pela porta 20.

Servidor FTP passivo


O cliente se conecta ao servidor por meio de uma conexo de controle, que se origina em
uma porta alta do cliente e se destina porta 21 do servidor. A diferena que, quando
solicitada a transferncia de arquivos, a conexo de dados iniciada por uma porta alta do
cliente e se destina a uma porta alta no servidor. Desse modo, o servidor nunca inicia uma
conexo TCP, que sempre iniciada pelo cliente. Essa opo funciona melhor quando o
cliente est protegido por um firewall.
No Linux o padro para servidores FTP o modo passivo.

Configurao:
11 Servidor ativado sob demanda no inetd (Debian) ou xinetd (Red Hat/Fedora).
Arquivos de configurao:
11 ftpaccess: define autorizaes para acesso.
11 ftpconversions: permite converso de arquivos.
11 ftphosts: permite o controle de acesso a contas no servidor.
11 ftpusers: lista usurios que no acessam FTP.

Alguns arquivos de configurao devem ser editados antes da inicializao do servidor FTP
embutido na instalao no Linux, tais como:
11 ftpaccess: define autorizaes de acesso a arquivos, o nmero mximo de falhas de
login e controles gerais de comportamento do servidor.
11 ftpconversions: permite a converso dos arquivos antes que sejam transferidos.
11 ftphosts: permite o controle de acesso a contas no servidor, podendo permitir ou negar
o acesso a determinados usurios, hosts ou redes.
11 ftpusers: lista os usurios, normalmente de sistema, que no podem acessar o servidor FTP.

Estrutura de diretrios tpica

/bin

Figura 5.5
Estrutura de
diretrios.

Executveis
usados pelo
servidor
(daemon)

/dev
Alguns sistemas
usam dispositivos
especiais

/etc

/pub
Diretrio pblico
disponvel para
acesso annimo

/usr

/lib
Bibliotecas
usadas pelo
servidor (daemon)

Captulo 5 - DHCP, Telnet, FTP e SSH

/ftp

127

Em uma estrutura de diretrios tpica existe o diretrio pub, alm dos diretrios referentes
ao binrio (daemon) e bibliotecas utilizadas. Esse diretrio indicado como o diretrio raiz
para usurios annimos.
Alguns comandos FTP:

11 Controle, conexo e sesso.


22 open, close, quit e bye.
11 Envio e recebimento de arquivos:
22 get, mget, put, mput e binary.
11 Diretrios e lista de arquivos.
22 ls, dir e cd.
11 Remoo e criao de arquivos e pastas.
22 delete, rename, rmdelete e mkdir.
Alguns comandos utilizados para conexo ao servidor FTP e envio ou recebimento de arquivos:
11 ?: ajuda dos comandos.
11 binary: coloca as transferncias em modo binrio.
11 bye: termina a sesso de FTP e sai.
11 cd: muda de diretrio a ser trabalhado.
11 close: termina apenas sesso do FTP.
11 delete: remove um arquivo do servidor.
11 dir: cria uma lista de arquivos do diretrio.
11 get: recebe um arquivo.
11 help: exibe a ajuda do servidor local.
11 cd: muda o diretrio.
11 ls: lista o contedo dos diretrios.
11 rmdelete: remove vrios arquivos.
11 mget: recebe vrios arquivos.

Administrao de Sistemas Linux: Servios para Internet

11 mkdir: cria um diretrio no servidor.

128

11 mput: envia vrios arquivos.


11 open: conecta a um servidor FTP.
11 put: envia um arquivo.
11 pwd: exibe o nome do diretrio atual.
11 quit: termina a sesso do FTP e sai.
11 recv: recebe um arquivo.
11 rename: renomeia um arquivo.
Problemas com firewalls:
11 Firewalls normalmente no aceitam conexes de entrada.
Consideraes de segurana:
11 Restrio de acesso a usurios.
11 Envio de arquivo como annimo (Anonymous Upload).

11 Mudar banner de saudao.

11 Utilizao de SCP como alternativa ao FTP.

Problemas com firewall


Firewalls normalmente no aceitam conexes de entrada. Desse modo, um cliente inicia uma
conexo ao servidor FTP normalmente. Entretanto, ao utilizar os comandos ls, dir ou get, o que
inicia uma conexo de dados originada do servidor FTP em direo ao cliente, a transao
bloqueada impedindo a utilizao do servio. Para isso so possveis duas solues:
1. Utilizar o servidor FTP em modo ativo: criar regras que permitam o funcionamento das
conexes de controle e de dados. Em especial o estabelecimento de uma conexo originada do servidor FTP, caso no seja permitido utilizar servidor passivo.
2. Utilizar o servidor FTP em modo passivo: criar regras que permitam o estabelecimento de
conexes de controle e de dados originadas a partir do cliente.
11 Restrio de acesso a usurios: adicionar restrio de usurios do sistema que
possuem privilgios de acesso e que por isso no podem utilizar o FTP.
11 Acesso de usurios annimos: caso seja permitido o acesso a usurios annimos, verificar se a pasta pblica possui permisso somente de leitura.
11 Mudar banner de saudao: trocar o valor da diretiva ftpd_banner. O valor padro traz
indicaes do sistema, informaes que podem ser utilizadas por usurios maliciosos.
11 Utilizao de SCP como alternativa ao FTP: a adoo de medidas de segurana pode
prevenir uma invaso ou utilizao indevida do servio. Todavia, os dados transmitidos,
inclusive login e senha, so transmitidos em texto plano. Considere a utilizao de Secure
Copy (SCP) ou Secure FTP (SFTP) para a transmisso de arquivos sigilosos.

Secure Shell (SSH)


11 Permite a utilizao de um terminal remoto e conexes para transferncia de

arquivos entre clientes e servidores.


11 Utiliza autenticao para estabelecer sesso.
11 Utiliza encriptao para transmisso de dados.
Secure Shell (SSH) surgiu como uma substituio ao Remote Shell (RSH), que permite
conectar um shell a uma mquina remota. O RSH possui dois problemas:
1. Do mesmo modo que o Telnet, todo o trfego feito em texto plano, no garantindo a

2. Os arquivos /etc/hosts.equiv e ~/.rhosts listam mquinas e usurios autenticados, podendo


fazer conexo RSH sem futuras autenticaes.
SSH encripta todo o trfego, incluindo a senha ou chave de autenticao. Tambm usa
chaves de hosts para identificao dos dois hosts envolvidos na comunicao.
A verso do SSH1 era aberta at o release 1.2.12. A partir da verso 1.2.13, a licena mudou
para comercial. O OpenSSH tem a licena GPL, e foi desenvolvido a partir do SSH verso
1.2.13, tendo implementado tambm as caractersticas do protocolo SSH2. Se possvel,
deve-se usar clientes e servidores que suportem SSH2.

Captulo 5 - DHCP, Telnet, FTP e SSH

privacidade da informao;

129

OpenSSH
11 Implementao open source do SSH.

11 Soluo amplamente utilizada em ambiente Linux.


11 Existem ainda OpenSSH Secure Copy (SCP) e Secure FTP (SFTP).
22 SCP e SFTP so utilizados como alternativa ao FTP.
11 OpenSSH utilizado como alternativa ao Telnet.
22 A utilizao de SSH no restrito ao mundo Linux.
22 Existem vrios clientes Windows para acesso ao SSH e SCP.
OpenSSH uma implementao open source do SSH. Desde a verso 2.9, usa chaves RSA
como padro. O pacote OpenSSH possui os seguintes componentes:
11 ssh: cliente SSH (console remoto);
11 sshd: servidor de shell seguro SSH;
11 scp: programa para transferncia de arquivos entre cliente e servidor;
11 ssh-keygen: gera chaves de autenticao para o SSH;
11 sftp: cliente FTP com suporte para comunicao segura;
11 ssh-add: adiciona chaves de autenticao DSA ou RSA ao programa de autenticao;
11 ssh-agent: agente de autenticao, sua funo armazenar a chave privada para autenticao via chave pblica (DSA ou RSA);
11 ssh-keyscan: escaneia por chaves pblicas de autenticao de hosts especificados. O
principal objetivo ajudar na construo do arquivo local know_hosts.

Configurao do servidor OpenSSH


11 Requer o pacote:

22 openssh-server
11 Editar arquivo de configurao:
22 /etc/ssh/sshd_config

Administrao de Sistemas Linux: Servios para Internet

11 Ativar o servio sshd.

130

11 A configurao de um cliente OpenSSH requer os pacotes:


22 openssh-clients
22 openssh
Para utilizao do servio OpenSSH, necessrio que a mquina remota, denominada
servidor, tenha o pacote opensshserver instalado. necessrio ainda que o arquivo de
configurao esteja com a configurao correta, e opcionalmente que o binrio sshd esteja
configurado para iniciar juntamente com o sistema.
Embora o OpenSSH esteja pronto para execuo logo aps instalado, recomenda-se que
alguns ajustes sejam feitos no arquivo de configurao, o que eleva a segurana do sistema.
Entre os ajustes possveis:
11 Escolha da porta em que o servio opera (o padro 22);
11 Verso do SSH utilizada (o padro 2,1);
11 Acesso mquina como root (o padro no);

11 Ignora arquivos .rhosts e .shosts (o padro sim);


11 Permitir senhas em branco (o padro no);
11 Servidor SFTP: opo padro habilitar servidor SFTP.
Logo, recomenda-se:
11 Mudar a porta utilizada;
11 Quanto verso, ajustar para aceitar somente a verso SSH2;
11 No permitir acesso como root pelo OpenSSH;
11 Ignorar arquivos .rhosts e .shosts, uma vez que eles autorizam logins subsequentes sem senha;
11 No permitir senhas em branco;
11 Habilitar a utilizao do servidor SFTP (opcional).
A seguir so apresentados alguns parmetros do arquivo de configurao.

Comando ssh
Permite efetuar login e executar comandos em uma mquina remota. Exemplo:

11 Comando: # ssh usuario1@leao.linux.lan


11 Efetua conexo mquina leao.linux.lan, autenticando-se como usuario1.
11 Ser solicitada senha.
11 Em seguida ser concedido acesso mquina remota.
Parte do contedo do arquivo /etc/ssh/ssh_config:

# /etc/ssh/ssh_config
Port 22
Protocol 2,1
ListenAddress 0.0.0.0
PermitRootLogin no
X11Forwarding no
CheckMail no
RSAAuthentication yes
DSAAuthentication yes

RhostsRSAAuthentication no
IgnoreRhosts yes
PasswordAuthentication yes
PermitEmptyPasswords no

Captulo 5 - DHCP, Telnet, FTP e SSH

RhostsAuthentication no

131

Estabelecendo conexo
11 Ao conectar-se pela primeira vez a determinado servidor, exibida a seguinte mensagem:

22 The authenticity of host leao.linux.lan (192.168.0.3) cant be established.


22 RSA key fingerprint is 51:2f:c5:95:38:a3:6d:3e:43:ff:1e:ef:4c:f0:c6:01.
22 Are you sure you want to continue connecting (yes/no)?
11 Respondendo yes, a mquina remota adicionada em uma lista de mquinas
conhecidas (known_hosts).
Ao conectar-se pela primeira vez a determinado servidor, uma mensagem apresenta uma
chave e solicita a confirmao de que se trata da mquina que se quer acessar.
The authenticity of host leao.linux.lan (192.168.0.3) cant be established.
RSA key fingerprint is 51:2f:c5:95:38:a3:6d:3e:43:ff:1e:ef:4c:f0:c6:01.
Are you sure you want to continue connecting (yes/no)?5
Respondendo yes, a mquina remota adicionada em uma lista de mquinas conhecidas
(known_hosts). Nas prximas vezes que for feito login nesse mesmo host, apenas a senha
ser solicitada. Aps o estabelecimento da conexo, solicitada a senha do usurio remoto
(root ou outro usurio qualquer).
Em acessos subsequentes, caso seja apresentada uma mensagem de aviso do tipo
Warning: Remote host identification has changed. Someone could be eavesdropping on you
right now, pode estar ocorrendo uma das seguintes situaes:
11 A mquina remota no a desejada, sendo no caso uma impostora. Nesse caso no
digite nenhuma senha. Convm informar ao administrador da mquina remota.
11 Outra situao aquela em que a mquina remota teve seu sistema ou o OpenSSH reinstalado. Nesse caso a chave pblica localizada no arquivo known_hosts deve ser removida
conforme instrues na mensagem.

SCP
11 Permite a cpia de arquivos entre hosts de forma segura.

Administrao de Sistemas Linux: Servios para Internet

11 Utiliza os mesmos mecanismos de segurana do SSH.


11 Exemplo de utilizao:

# scp <usuarioremoto>@<hostremoto>:<diretorio/arquivo> <pasta


local>/<arquivolocal>
# scp usuario1@leao.linux.lan:/tmp/teste.txt
22 Copia o arquivo texte.txt do computador remoto leao.linux.lan para o diretrio atual.
O Secure Copy (SCP) uma alternativa ao FTP na transferncia de arquivos e faz parte do
pacote OpenSSH. Ao contrrio do FTP, que no um mtodo seguro e cujos dados trafegam
em texto plano, no SCP a conexo autenticada e os dados criptografados. Outra vantagem
do SCP o fato de os comandos serem similares ao comando cp. Desse modo, a transferncia
de um ou mais arquivos entre duas mquinas pode ser feita com um comando do tipo:

# scp usuario1@leao.linux.lan:/tmp/teste.txt
Podem ainda ser transferidos todos os arquivos de uma determinada pasta:

# scp R usuario1@leao.linux.lan:/home/usuario1/pasta/*
132

R (recursividade): todas as pastas e arquivos a partir da pasta.


Ou ainda na direo contrria:

# scp * usuario1@leao.linux.lan:/home/usuario1/

SFTP
11 Permite realizar de forma segura a transferncia de arquivos entre hosts.

11 Utiliza os mesmos mecanismos de segurana do SSH.


11 Exemplo de utilizao:

# sftp usuario@<hostremoto>

Assim como o SCP, o SFTP uma alternativa segura ao FTP na transferncia de arquivos e
tambm utiliza criptografia para transmisso de dados. Uma vantagem do SFTP em relao
ao SCP ocorre quando no sabemos exatamente a localizao do arquivo a ser transferido.
A seguir apresentado um exemplo de acesso, no qual efetuado o download do
arquivo teste.txt:

# sftp 192.168.0.1
Connecting to 192.168.0.1
root@192.168.0.1s password:
sftp> ls
pasta1
pasta2
pasta3
sftp> cd pasta1
sftp> ls
teste.txt
sftp> get teste.txt
teste.txt 100% 10KB 12.3KB/s

Gerao de chaves
ssh-keygen -t <tipo>
11 Onde <tipo> pode ser:
22 rsa1: gera chaves no padro RSA para a verso SSH1.
22 rsa: gera chaves no padro RSA para a verso SSH2.
22 das: gera chaves no padro DSA apenas para verso SSH2.
22 ecdsa: gera chaves no padro ECDSA apenas para verso SSH2.

Captulo 5 - DHCP, Telnet, FTP e SSH

sftp> exit

133

Em algumas situaes pode ser necessria a utilizao de scripts que copiaro arquivos de
um servidor para outro, o que geralmente ocorre em situaes de replicao de contedo
entre servidores espelho, de backup, de armazenamento de logs etc. Nesses casos, esses
scripts precisaro acessar o servidor remoto para enviar ou buscar arquivos sem a utilizao
de senha. Para isso podem ser geradas chaves de encriptao baseadas em endereos IP
dos dois servidores.
Para evitar que um usurio ou administrador de um servidor acesse livremente o
outro, recomenda-se a criao de usurios com poucos privilgios nas duas mquinas.
A seguir, os passos necessrios:
11 Gerar a chave com o comando ssh-keygen -t <tipo>;
11 Copiar o arquivo id_rsa.pub, se for escolhido o tipo RSA para a mquina de destino;
11 No destino deve ser criada uma pasta oculta .ssh com permisso 700;
11 O usurio deve incluir o arquivo id_rsa.pub no arquivo authorized_keys na mquina remota.

Agente SSH
11 Permite automatizar a autenticao atravs de um agente SSH.

11 Senha solicitada apenas uma vez em cada sesso Linux.


11 As chaves so removidas aps o encerramento da sesso.
A automatizao do acesso por SSH sem senha pode ser feita com a utilizao de um agente
SSH. Essa opo deve ser considerada em situaes em que o servidor remoto vai ser acessado repetidas vezes ao longo de um perodo, mas o acesso sem senha no deve ser tornado
permanente. Nesse caso usa-se um meio termo no qual a senha ser armazenada por determinado Shell, que, enquanto estiver aberto, acessar o servidor sem senha. Para isso so
usados dois comandos:
11 ssh-agent $SHELL: cria uma sesso com o shell padro;

Administrao de Sistemas Linux: Servios para Internet

11 ssh-add: acrescenta as chaves ao agente SSH.

134

Roteiro de Atividades 5
Nestas atividades os alunos devem trabalhar com trs mquinas virtuais:
11 Servidor Linux.
11 Cliente Linux.
11 Cliente Windows.

Atividade 5.1 Configure o servidor DHCP


O objetivo do servio Dynamic Host Configuration Protocol (DHCP) automatizar a distribuio de endereos e configuraes do protocolo TCP/IP para quaisquer dispositivos conectados a uma rede, como computadores, impressoras, hubs e switches.
Para configurar um servidor DHCP no Linux, altere o arquivo /etc/dhcpd.conf. Esse servio
tambm usa o arquivo /var/lib/dhcp/dhcpd.leases para armazenar o banco de dados de endereos alugados para clientes.
11 Configure o servidor com o endereo IP 192.168.1.1/24 na interface conectada rede
virtual rede-local;
11 Configure o servidor de DHCP para distribuir os endereos da faixa 192.168.1.10 at
192.168.1.20;
11 Teste o funcionamento com o cliente Linux;
11 Quais informaes podem ser encontradas no arquivo /var/lib/dhcp.leases?
1. Edite o arquivo de configurao /etc/dhcp/dhcpd.conf com os parmetros desejados:

#Rede a qual se aplica


subnet 192.168.1.0 netmask 255.255.255.0 {
# Roteador padro
option routers 192.168.1.254;
# Mscara de rede
option subnet-mask 255.255.255.0;
# Configuraes de DNS

option domain-name-servers 192.168.1.1;


# Configuraes WINS
option netbios-name-servers 192.168.1.1;
# Definio de horrio 18000 = Brasil
option time-offset -18000;
# Definies do Range IP

Captulo 5 - Roteiro de Atividades

option domain-name empresa.com.br;

range 192.168.1.10 192.168.1.20;


135

default-lease-time 21600;
max-lease-time 43200;
}
Reinicie o servidor DHCP:

# /etc/init.d/isc-dhcp-server restart
1. Verifique o contedo do arquivo dhcpd.leases;
2. Verifique o contedo do arquivo de dhcpd.lease antes da inicializao do cliente.
3. O arquivo no deve possuir nenhuma entrada.
4. Reinicie a interface de rede da estao de trabalho Linux.
Verifique se no arquivo de configurao da interface (/etc/network/interfaces) est descrito
que ser feita pesquisa por um servidor de DHCP. Exemplo:

auto eth1
iface eth1 inet dhcp
5. Verificar a existncia do arquivo dhcp.leases:

# find / -name dhcpd.leases


/var/lib/dhcp/dhcpd.leases
6. Verifique o contedo do arquivo de dhcpd.lease aps a inicializao do cliente.
O arquivo deve possuir uma entrada para a mquina cliente. Como existiro diversas
estaes de trabalho configuradas como servidor DHCP, provvel que alguns servidores
no consigam distribuir endereos. Isso acontece porque, quando o cliente DHCP envia a
requisio, ele receber o endereo IP do servidor DHCP que responder primeiro.
7. Reinicie o cliente e verifique as alteraes no arquivo de lease.
8. Reinicie a interface de rede do Windows algumas vezes avaliando as modificaes em
dhcpd.leases.

Administrao de Sistemas Linux: Servios para Internet

Atividade 5.2 Configurao de um endereo IP fixo

136

Configure o servidor de DHCP para sempre fornecer o endereo 192.168.1.3 para a interface
de rede com o endereo MAC 00:D0:B7:01:D1 (mquina virtual Linux).

Atividade 5.3 Utilizao de redes compartilhadas


Para realizar esta atividade, necessrio que o servidor esteja configurado com o endereo
IP 192.168.1.1 na interface conectada rede virtual rede-local (exemplo: eth1) e com o endereo IP 192.168.2.1 na interface conectada rede virtual windows (exemplo: eth2).
A mquina cliente-linux deve ter apenas a conexo com a rede virtual rede-local.
A mquina Windows deve ter apenas a conexo com a rede virtual Windows.
11 Configure o servidor DHCP para fornecer os endereos 192.168.1.100 192.168.1.130 na
interface eth1;

11 Configure o servidor DHCP para fornecer os endereos 192.168.2.30 192.168.2.50 na


interface eth2;
11 Utilize a opo shared-network.

Atividade 5.4 Servio Telnet


Todos os servidores DHCP das mquinas virtuais devem estar desativados. Para desativar o
servio DHCP na inicializao do Debian, utilize o binrio rcconf. Recomenda-se que todas as
estaes sejam reiniciadas.
Esta atividade pode ser feita tanto pelo cliente Windows quando pelo cliente Linux. importante que tanto a mquina cliente quanto o servidor estejam na mesma rede.
O servio Telnet permite a um administrador de rede controlar remotamente um equipamento, executando aplicaes e comandos como se o teclado de sua estao estivesse
conectado diretamente estao remota.
O protocolo Telnet no realiza a criptografia de trfego de rede fim a fim, ou seja, um
atacante poderia, capturando pacotes de rede, observar todos os comandos enviados pelo
administrador para a estao de trabalho remota.
Instale o servio de Telnet no servidor Linux e teste a conexo a partir do cliente. Lembre-se
de que para ativar o servio do Telnet no Linux ser necessrio utilizar o xinetd.

Atividade 5.5 Servio FTP


Esta atividade pode ser feita tanto pelo cliente Windows quando pelo cliente Linux. importante que tanto a mquina cliente quanto o servidor estejam na mesma rede.
O protocolo File Transfer Protocol (FTP) permite a um usurio remoto transferir grandes
arquivos para um servidor ou vice-versa.
11 Instale e configure o pacote vsftpd no servidor Linux;
Parmetros importantes: listen, local_enable e write_enable.
11 Crie um novo usurio chamado usuario1 pertencente ao grupo users;
11 Utilizando esse usurio, acesse a partir da mquina virtual cliente o servio de FTP.

Atividade 5.6 Criao de uma conexo segura a um host remoto


Nesta atividade, os alunos devero utilizar o cliente e o servidor Linux, verifique se ambos esto
na mesma rede, se o servidor possui o endereo 192.168.1.1 e o cliente, o endereo 192.168.1.2.

cifra todo o trfego de rede gerado entre administrador e estao remota.


11 Instale o servio SSH no servidor.
11 A partir do cliente Linux (192.168.1.2), utilize o comando ssh para acessar o servidor Linux
(192.168.1.1) e em seguida execute o comando hostname.

Captulo 5 - Roteiro de Atividades

Devido s vulnerabilidades encontradas no servio Telnet, foi criado o protocolo SSH, que

137

Atividade 5.7 Automatizar a criao de conexo segura com o servidor remoto


por meio do compartilhamento da chave pblica
Nesta atividade os alunos devero utilizar o cliente e o servidor Linux, verifique se ambos
esto na mesma rede e se o servidor possui o endereo 192.168.1.1 e o cliente possui o
endereo 192.168.1.2.
Escolha uma nica estao para gerar a chave a ser utilizada para a autenticao.
O objetivo estar apto a configurar um servidor para permitir acesso SSH sem senha para
uma mquina cliente.
11 Utilizando o usuario1 criado na Atividade 5.5, configure o acesso SSH a partir do cliente
Linux para o servidor Linux.
11 Ser necessrio criar uma chave pblica para o usuario1 na mquina cliente (veja o
manual do comando ssh-keygen).

Atividade 5.8 Acesso de grupos a diretrio compartilhado no FTP


Esta atividade pode ser feita tanto pelo cliente Windows quando pelo cliente Linux. importante que tanto a mquina cliente quanto o servidor estejam na mesma rede.
Em algumas situaes interessante compartilhar um mesmo diretrio para diversos usurios do FTP.
11 Crie o grupo usuarios-ftp no LDAP;
11 Crie o diretrio /home/usuarios-ftp e conceda as devidas permisses ao grupo;
11 Crie os usurios usuarioftp1 e usuarioftp2 e defina o diretrio /home/usuarios-ftp como
seu homedir;
11 Inclua os usurios usuarioftp1 e usuarioftp2 no grupo usuarios-ftp;
11 Testar o funcionamento.
Ateno para os parmetros do arquivo /etc/vsftpd.conf local_enable, write_enable e

Administrao de Sistemas Linux: Servios para Internet

local_umask.

138

Atividade 5.9 Transferncia de um arquivo de um host remoto para o host


local e vice-versa
Nesta atividade os alunos devero utilizar o cliente e o servidor Linux. Verifique se ambos
esto na mesma rede e se o servidor possui o endereo 192.168.1.1 e o cliente possui o
endereo 192.168.1.2.
1. Utilize o comando scp para transferir um arquivo do cliente Linux para o servidor.

Atividade 5.10 Criando uma conexo FTP segura com o comando SFTP
Nesta atividade os alunos devero utilizar o cliente e o servidor Linux.
1. Verifique se ambos esto na mesma rede e se o servidor possui o endereo 192.168.1.1 e
o cliente possui o endereo 192.168.1.2.
2. Utilize o comando SFTP para transferir um arquivo do servidor para o cliente Linux.

6
Instalar e configurar o servidor web Apache, em verso compilada e atravs do
cdigo-fonte, configurar servidores virtuais e o servidor web seguro, usando
certificados digitais, habilitar no Apache o recurso de publicao de pginas pessoais.

conceitos

Fundamentos de servidores web: arquitetura, esquema de funcionamento, protocolo


HTTP, servidor Apache, recursos comuns a servidores web como proxy web, domnio
virtual e servidor seguro (SSL).

Introduo
Este captulo aborda os conceitos fundamentais de servidores web, como arquitetura,
esquema de funcionamento, protocolo HTTP, servidores web, servidor Apache e a instalao
e testes com o servidor Apache.
Na primeira parte so apresentados os conceitos iniciais, arquitetura e protocolo. Em
seguida so abordados os recursos comuns aos diversos servidores web atualmente disponveis, tais como:
11 Proxy web;
11 Domnio virtual;
11 Servidor seguro (SSL).
Por ltimo so apresentados os recursos do servidor web Apache, inclusive sua instalao,
configurao e testes.

Conceitos fundamentais
World Wide Web (WWW):
11 Desenvolvida para permitir o acesso a informaes organizadas em forma de hipertexto.
11 Permite a recuperao de informao:
22 Texto.
22 Imagens (estticas e animadas).
22 udio etc.
11 Baseada na arquitetura cliente/servidor.

q
Captulo 6 - Servidor web

objetivos

Servidor web

139

11 O servidor armazena um conjunto de arquivos de dados que so transferidos

para o cliente.
Identificao de servidores, servios e arquivos de modo uniforme.
22 Uniform Resource Locator (URL).
A internet, muitas vezes denominada World Wide Web (WWW), permite um grande e variado
trnsito de informaes, tais como textos, documentos, contedos multimdia, mensagens etc.
Umas das ferramentas mais utilizadas para o envio e a recuperao de informaes so os
servidores web, que permitem o envio de textos, mensagens, imagens e udio. Para isso, um
determinado servidor web pode usar pginas estticas, que so nada mais do que arquivos
presentes no sistema de arquivos do servidor, ou pginas dinmicas, que so contedos
gerados dinamicamente e sob demanda para o cliente que as solicita. Essa ltima forma
muito utilizada em transaes pela internet. Nesse caso, o contedo pode ser gerado pelo
prprio servidor web que atende ao pedido dos clientes, ou ento por outro servidor acoplado que processa e repassa o contedo.
A comunicao web lida com um processo do tipo cliente/servidor. Nesse caso um cliente
(navegador web) envia uma solicitao ao servidor web, que processa a solicitao e envia
a resposta ao cliente. A solicitao enviada pelo cliente consiste em uma Uniform Resource
Locator (URL), por exemplo: http://www.rnp.br. Essa solicitao enviada para o servidor
web, que encaminha o contedo associado a esse endereo, que pode conter textos,
imagens e udio.
A sigla URL era anteriormente conhecida por Universal Resource Locator.

Campos da URL
Protocolo: // servidor [:porta] / caminho / arquivo

11 Indica o servio desejado:


22 Hyper Text Transfer Protocol (HTTP).
22 File Transfer Protocol (FTP).
22 MAILTO (para correio eletrnico).

Administrao de Sistemas Linux: Servios para Internet

22 Terminal Network (Telnet).

140

22 File (para arquivo local).


A solicitao enviada pelo cliente consiste em uma URL, que possui componentes como:
protocolo, servidor, porta, caminho e arquivo. Essas informaes servem para designar o
servio, protocolo e porta que devem ser acessados e utilizados na obteno dos dados.
Desse modo, mesmo quando vrios servios diferentes esto disponveis no servidor em
questo, cada um pode trabalhar de modo independente do outro. Logo poderemos ter em
uma mesma mquina diversos servios, como servidor web, servidor FTP, servidor DNS etc.
Servidor [:porta]
11 Indica o endereo do servidor desejado.
11 Pode ser um Fully Qualified Domain Name (FQDN): nome da mquina, domnio e
domnio de topo.
11 Ou somente o nome da mquina para acessos a partir da mesma rede.

Caminho:

11 Indica o caminho no sistema de arquivos do servidor web.


Arquivo:
11 Indica o arquivo desejado.
Um servidor web pode possuir grande quantidade de informao, dispersa por uma grande
quantidade de arquivos e pastas. Por isso, necessrio que o cliente, ao buscar por determinado dado, informe o caminho completo at ele, o que usualmente feito por meio da
digitao da URL no navegador, ou de um clique em determinado link disponvel em determinada pgina da internet.
O caminho indica em qual pasta ou arquivo a partir de uma pasta raiz est o dado procurado. Essa pasta raiz normalmente no coincide com a raiz do sistema no qual o servidor
web est instalado.

Exemplo de URL
Acesso pgina principal da RNP.

11 http://www.rnp.br:80/index.html
22 Protocolo: http
22 Servidor: www.rnp.br
22 Porta: 80
22 Caminho: /
22 Arquivo: index.html
Ou simplesmente:
11 www.rnp.br
Entre as vrias informaes de uma URL, usamos: protocolo, servidor, porta, caminho e
arquivo. Alguns desses dados podem ser omitidos quando digitamos a URL no navegador ou
em um link da pgina web. Logo, o acesso a determinada pgina web pode ser feito digitando, por exemplo: http://www.rnp.br:80/index.html ou www.rnp.br
No exemplo apresentado, no foi necessrio, ao informar uma URL no navegador, passar
o protocolo, porta e arquivo. Isso possvel porque os navegadores web encaminham por
padro uma consulta utilizando o protocolo HTTP e a porta padro 80. O servidor web, por
sua vez, envia como resposta a pgina padro especificada em seu arquivo de configurao,

Captulo 6 - Servidor web

nesse caso, index.html.

141

Esquema de funcionamento
URL / HTTP
HTML / MIME
Web Browser

Web Server

Figura 6.1
Esquema de
funcionamento:
transferncia
de dados entre
cliente (browser) e
servidor.

Internet

Web Browser

Web Server

Dispositivo
de arquivos

Servidor web
11 Todos os web sites tm processos servidores que escutam a porta TCP 80, aguardando
conexes dos clientes.
11 Aps estabelecida uma conexo, o cliente envia uma solicitao e o servidor envia uma
resposta.
11 O protocolo que define as solicitaes e respostas vlidas chamado de HyperText
Transfer Protocol (HTTP).

Cliente web
11 Disponibiliza um mecanismo de busca, transferncia e apresentao de dados contidos
em servidores web.
11 O navegador, tambm denominado browser, busca a pgina solicitada, interpreta seu
texto, seus comandos de formatao e apresenta os dados na tela.
11 Entre os navegadores mais conhecidos hoje esto: Netscape, Mozilla, Firefox, Thunderbird,
Konqueror, Internet Explorer, Safari. Alm do Lynx, um navegador de linha de comando

Administrao de Sistemas Linux: Servios para Internet

muito utilizado em testes e/ou em computadores sem a interface grfica instalada.

142

Protocolo HTTP
Hyper Text Transfer Protocol (HTTP).

11 Protocolo utilizado para a transferncia de informaes na web, utilizando TCP.


11 Interao consiste em um pedido ASCII, seguido por uma resposta Multipurpose
Internet Mail Extensions (MIME).
22 MIME uma forma padronizada para o envio de mensagens de diferentes tipos
e codificaes.
22 Tipos: texto, imagens, vdeo, udio, aplicaes etc.
O protocolo HTTP um protocolo de camada de aplicao utilizado em sistemas distribudos, colaborativos e de hipermdia. Sua primeira verso HTTP/0.9 est em uso desde 1990,
sendo at ento um protocolo simples para transferncia de dados brutos pela internet.

A verso HTTP/1.0 melhorou o protocolo ao permitir a transferncia de mensagens no


formato MIME, contendo metadados e modificadores nas solicitaes e respostas. No
entanto, no suportava caching, proxies hierrquicos, conexes persistentes ou hosts virtuais.
A verso HTTP/1.1 foi desenvolvida para atender a essas necessidades, e ainda s necessidades adicionais de buscas, atualizaes de front-end, incluindo um amplo conjunto de
mtodos e cabealhos que indicam a finalidade da solicitao. As mensagens so passadas
em um formato semelhante ao das mensagens de e-mail, utilizando o formato MIME.
O HTTP ainda um protocolo genrico para outros sistemas internet, como SMTP, NNTP e
FTP, permitindo que diversas aplicaes possam acessar contedo hipermdia.

Tipos de pedidos
Pedidos simples
11 Pedido:

22 GET e pgina desejada sem a verso do produto.


11 Resposta:
22 Pgina sem cabealho, MIME e codificao.
O protocolo HTTP um protocolo do tipo pedido/resposta. O cliente envia um pedido ao
servidor na forma de um mtodo de requisio, Universal Resource Identifiers (URI), verso
do protocolo e uma mensagem em formato tipo MIME contendo modificadores de requisio, informaes do cliente e contedo.
A resposta do servidor enviada com uma linha de status que inclui a verso do protocolo,
um cdigo de sucesso ou erro seguido de uma mensagem do tipo MIME, que contm informaes do servidor, metadados e o corpo da mensagem.

Pedidos completos
11 Pedido:

22 Verso do protocolo, comando (mtodo utilizado), pgina desejada, verso do


protocolo e cabealhos.
11 Resposta:
22 Pgina com cabealho.
11 Respostas com cdigos de trs dgitos:
22 1xx: informao.
22 2xx: sucesso.
22 3xx: redirecionamento.
22 4xx: erro Cliente.

Quando um pedido enviado, uma resposta retorna contendo um cdigo e o contedo solicitado. O cdigo retornado pode indicar sucesso ou fracasso da operao.
Alguns cdigos possveis:
11 100: Continue.
11 101: Switching Protocols.

Captulo 6 - Servidor web

22 5xx: erro Servidor.

143

11 200: Ok.
11 201: Created.
11 202: Accepted.
11 203: Non-Authoritative Information.
11 204: No Content.
11 205: Reset Content.
11 206: Partial Content.
11 300: Multiple Choices.
11 301: Moved Permanently.
11 302: Found.
11 303: See Other.
11 304: Not Modified.
11 305: Use Proxy.
11 307: Temporary Redirect.
11 400: Bad Request.
11 401: Unauthorized.
11 402: Payment Required.
11 403: Forbidden.
11 404: Not Found.
11 405: Method Not Accepted.
11 406: Not Acceptable.
11 407: Proxy Authentication Required.
11 408: Request Time-out.
11 409: Conflict.
11 410: Gone.
11 411: Lenght Required.
11 412: Precondition Failed.
Administrao de Sistemas Linux: Servios para Internet

11 413: Request Entity Too Large.

144

11 414: Request URI Too Long.


11 500: Internal Server Error.
11 501: Not Implemented.
11 502: Bad Gateway.
11 503: Service Unavailable.
11 504: Gateway Time-out.
11 505: HTTP Version Not Supported.

Mtodos
11 GET: pedido para ler uma pgina.
11 HEAD: pedido para ler o cabealho de uma pgina web.
11 PUT: pedido para gravar uma pgina web.

11 POST: insero de um recurso.


11 DELETE: remove uma pgina web.
11 LINK / UNLINK Conecta /: quebra a conexo existente entre dois recursos.
Os mtodos so utilizados tanto para solicitaes de pginas web quanto para o envio de
informaes inseridas pelos usurios nessas pginas. Por exemplo: mtodo GET para soli-

citar uma determinada pgina web; mtodo PUT para gravar uma pgina web; mtodo POST
para inserir um recurso.

Servidor web proxy


Servidores proxy: usurios podem configurar seus browsers com proxies para proto-

colos que no so capazes de reconhecer.

Pedido FTP
Resposta FTP
Browser HTTP

Pedido HTTP

Pedido FTP

Resposta HTTP

Resposta FTP

Browser HTTP

Proxy FTP

Servidor FTP

O servidor proxy pode ser um programa executando na mesma mquina do navegador ou


pode estar em uma outra mquina em algum ponto da rede, servindo a outros navegadores.
Os usurios podem ainda configurar seus navegadores com proxies para protocolos que
os navegadores no so capazes de reconhecer. A utilizao de servidores proxy tem ainda
como objetivos:
11 Cache: atuao como servidor cache, aliviando o trfego em determinados links e agilizando a resposta.
11 Controle de contedo: atua em conjunto com um firewall para limitar os dados que
podem trafegar na rede, restringindo determinados protocolos.

Domnio Virtual
11 Diferentes sites so hospedados em um mesmo servidor web.

22 Exemplos: www.exemplo.com e www.exemplo.org


11 Utilizado por grandes empresas e/ou provedores de internet.
11 Elimina a necessidade de mltiplos servidores.
11 Facilitando a administrao do servidor web.
11 Economia de recursos.
11 Hardware, software e infraestrutura.

Captulo 6 - Servidor web

Figura 6.2
Esquema de
funcionamento do
servidor web-proxy.

Servidor FTP

145

Domnio Virtual (Virtual Hosting) uma tcnica que permite a hospedagem de mltiplos
sites no mesmo servidor, com cada um deles contendo pginas e contedos diversos. Esse
recurso amplamente utilizado por grandes empresas, provedores de internet, datacenters
etc. Sua grande vantagem a eliminao da necessidade de servidores dedicados a cada um
dos sites que hospeda, permitindo que uma grande empresa que possua sites diferentes
associados cada diviso e/ou produto possa agrup-los num nico servidor, o mesmo
valendo para provedores de internet e datacenters, que podem reunir em uma nica
mquina os diversos clientes que possui.
Vantagens:
11 Facilidade de administrao: em virtude da reduo da quantidade de servidores a
administrar, requer menor quantidade de hardware e software, o que facilita a aquisio,
configurao e backup.
11 Economia de recursos: menor demanda de recursos de infraestrutura, como espao
fsico e consumo de energia.
Quando utilizado Domnio Virtual, deve-se ficar atento necessidade de o servidor
DNS resolver cada um dos endereos utilizados, para isso devendo possuir um alias
(CNAME) para cada site hospedado.

Secure Socket Layer (SSL)


11 Camada de conexo segura.

11 Mtodo de criptografia desenvolvido pela Netscape.


11 Suporta diversos protocolos de criptografia.
11 Fornece autenticao entre o servidor e o cliente.
22 Garantida por uma terceira parte denominada Certification Authority (CA) ou simplesmente Autoridade Certificadora.
22 Verisign, Tawte e CAcert.
22 ICPBrasil: PR, Serpro, Serasa, Certisign, SRF e CEF.
Para a disponibilizao de uma conexo segura entre o cliente (navegador) e o servidor web

Administrao de Sistemas Linux: Servios para Internet

necessria a utilizao de dois recursos:

146

11 Criptografia: para evitar que um elemento intermedirio na rede tome conhecimento do


contedo trafegado;
11 Autenticao: para garantir que a pgina acessada seja realmente a que se deseja, e no
uma pgina impostora.
O protocolo Secure Socket Layer (SSL) ou camada de conexo segura prov uma criptografia
fim-a-fim entre o cliente e o servidor. Suporta diversos protocolos e foi desenvolvido inicialmente pela Netscape para facilitar transaes na internet.
O funcionamento se d em duas etapas:
11 Autenticao: o cliente solicita a uma entidade certificadora, entre as vrias disponveis
em sua relao, que autentique o servidor que se deseja acessar. O cliente pode ou no
ser autenticado.
11 Criptografia: o cliente e o servidor escolhem um protocolo de criptografia comum;
a partir de ento a comunicao considerada segura.

Em geral, o cliente procura autenticar o servidor, o que acontece frequentemente em transaes


Business-to-Consumer
(B2C)

Business-to-Consumer (B2C).

Transao entre
empresa e consumidor,
utilizada em compras
ou transaes bancrias
pela internet.

Os casos em que o servidor procura autenticar o cliente so mais raros; entre eles, podemos
citar a declarao de impostos pela internet, por meio de certificados digitais, para comprovar a identidade das partes envolvidas.

Servidores web
Existe atualmente grande quantidade de navegadores (browsers) de internet.

Considerando os principais que possuem capacidade para executar em ambiente Linux/Unix:


11 Cdigo livre e licena GPL (ou similar):
22 Apache HTTP Server, Apache Tomcat Server, AOL Server, JigSaw e Tux Web Server.
11 Cdigo fechado e licena proprietria:
22 IBM HTTP Server, Sun Java System Web Server e Zeus Web Server.

Ao analisar os servidores web atualmente disponveis, podemos considerar algumas caractersticas associadas a recursos e disponibilidade.
Em relao aos recursos disponveis, podemos considerar:
11 Autenticao: autentica um usurio por meio de um login e senha, com texto plano ou
criptografado (HMAC);
11 Criptografia (SSL e TLS Transport Layer Security): suporte conexo encriptada;
11 Domnio virtual: suporte a mltiplos sites com um nico endereo IP;
11 Contedo dinmico (cgi-bin, Servlet, SSI, PHP e ASP): suporte gerao de pginas interativamente;
11 Mdulos (carregados dinamicamente): capacidade de carregar mdulos sob demanda;
11 Compresso de contedo: capacidade de comprimir contedo enviado ao usurio para
economizar largura de banda;
11 Limitao de usurios e/ou largura de banda: capacidade de limitar largura de banda
e/ou nmero de conexes inclusive por usurio, evitando saturar o servidor ou a rede;
11 Modo de execuo (espao de usurio ou ncleo do sistema): forma de acesso aos
recursos do sistema, especialmente memria e processador.
Considerando a disponibilidade:
11 Sistemas Operacionais em que pode ser executado;
11 Cdigo livre: cdigo-fonte disponvel ou no;
11 Tipo de licena: tipo de licena disponibilizada;

Servidor web Apache


Considerado um dos mais populares servidores HTTP de cdigo aberto. Possui todos os
recursos mais utilizados, como:
11 Autenticao: texto plano ou criptografado (HMAC).
11 Criptografia: SSL e TLS.
11 Domnio virtual.

Captulo 6 - Servidor web

11 Custo de aquisio.

147

11 Contedo dinmico: cgi-bin, Servlet, SSI, PHP, ASP, entre outros.

11 Mdulos: capacidade de carregar mdulos sob demanda.


11 Compresso de contedo: economia de largura de banda.
11 Limitao de usurios e/ou largura de banda: limitar largura de banda e/ou nmero
de conexes, inclusive por usurio.
11 Modo de execuo: espao de usurio.
O servidor web Apache contava, em novembro de 2011, com 65% do percentual de sites
ativos na internet (conforme pesquisa da Netcraft Web Server Survey http://netcraft.com),
tendo seus concorrentes, Microsoft, Nginx e Google, respectivamente 15,66%, 8,54% e 3,47%.
Enquanto servidor padro da internet, o servidor Apache suporta todos os recursos anteriormente mencionados e utilizados atualmente em grande parte dos sites, como: autenticao, criptografia, domnio virtual, contedo dinmico, carga de mdulos sob demanda,
compresso de contedo e limitao de acesso. Compatvel com os protocolos padro de
internet, incluindo o HTTP/1.1 (RFC 2616).
11 Instalao relativamente simples.

11 Composto de daemon que atua na porta 80 (http) e 443 (https), ou qualquer outra
porta a seguir da 1024.
11 Somente o root pode executar ou parar o servidor.
22 Ativa vrios processos filho que escutaro e respondero s solicitaes.
11 Mantm vrios processos em execuo, com mltiplas threads em cada um.
22 Mltiplos processos: estabilidade.
22 Mltiplas threads: maior capacidade em atender solicitaes, consumindo
menos recursos.
O servidor web Apache possui instalao relativamente simples, podendo ser instalado a
partir de pacotes prontos ou ser compilado durante o processo de instalao.
Para ser colocado em execuo, deve ser ativado o daemon, o que pode ser feito somente
pelo root. Esse daemon executa algumas tarefas iniciais bsicas, como ativar os arquivos de
log e em seguida ativar os processos filhos, que escutaro e respondero s solicitaes dos

Administrao de Sistemas Linux: Servios para Internet

clientes (browsers). O processo httpd principal executa com privilgio de root, enquanto os

148

demais executam com menos privilgios.


O Apache conta com dois tipos de mdulos: mdulos core, de multiprocessamento e
demais mdulos.

Mdulo core e de multiprocessamento


Core so recursos sempre disponveis para suporte a mltiplos mdulos de multiprocessamento, inclusive para diversos Sistemas Operacionais. Outros mdulos:
11 mod_auth_basic e mod_auth_digest: autenticao simples e MD5;
11 mod_cache: cache de contedo baseado em URI;
11 mod_ccgid: execuo de scripts CGI;
11 mod_dbd: controla conexes com bancos de dados SQL;
11 mod_filter: permite configurao contextualizada de filtro de contedo;
11 mod_headers: permite a reconfigurao de cabealhos;

11 mod_proxy: implementa um proxy ou gateway para o servidor Apache;


11 mod_proxy_balancer: permite operaes de balanceamento de carga;
11 mod_ssl: suporte criptografia SSL e TLS.

Exerccio de fixao 1 e
Correlacione as colunas
Correlacione as colunas de acordo com as diretivas do Apache.
1. ErrorLog

FF Modifica o usurio e o grupo que executaro o Apache.

2. LogLevel

FF Define a localizao e o formato do arquivo de log de acessos.

3. CustomLog

FF Permite associar o Apache a um IP especfico e/ou portas,


alm do default.

4. AccessFileName

FF Define a localizao do arquivo de log de erros.

5. Listen

FF Define o diretrio raiz de um domnio.

6. User/Group

FF Define o nvel de log do servidor.

7. ServerAdmin

FF Define o diretrio onde sero armazenados os arquivos de


configurao do servidor, erro e log.

8. ServerRoot

FF Permite definir um nome enviado de volta aos clientes.

9. ServerName

FF Define o nome do arquivo utilizado para controlar o acesso


s pginas.
FF Define o endereo de e-mail para o qual o servidor httpd
envia mensagens quando h erros.

Captulo 6 - Servidor web

10. DocumentRoot

149

150

Administrao de Sistemas Linux: Servios para Internet

Roteiro de Atividades 6
Atividade 6.1 Instalao do servidor web Apache
Esta atividade pode ser feita tanto pelo cliente Windows quando pelo cliente Linux. importante que tanto a mquina cliente quanto o servidor estejam na mesma rede.

Instalao atravs do repositrio Debian


1. Execute os comandos:

# apt-get update
# apt-get install apache2
2. Para testar a instalao, abra o navegador da estao de trabalho Windows ou Linux e
acesse a URL correspondente ao endereo IP do servidor (exemplo: http://192.168.1.1).

Atividade 6.2 Configurao de servidores virtuais


Ao utilizar servidores virtuais, podem existir duas situaes:
11 Mltiplos sites para um nico endereo IP;
11 Mltiplos sites, cada um com um determinado IP.
O primeiro caso o mais usual, e ser praticado nesta atividade. O segundo caso envolve
suporte a mltiplos endereos fsicos e no ser considerado nesta atividade.
No Apache, a partir da verso 2.0, as configuraes dos domnios virtuais disponveis esto no
diretrio /etc/apache2/sites-available e os sites habilitados no diretrio /etc/apache2/sites-enable.
Para evitar possveis diferenas entre esses dois arquivos, adotada a soluo de criar um
link simblico no diretrio /etc/apache2/sites-enable, apontando para o arquivo no diretrio
/etc/apache2/sites-available. Esse procedimento realizado pelo comando a2ensite.

Lembre-se de associar o endereo IP do servidor web no servidor DNS de sua rede


para responder a solicitaes destinadas ao site meusite.empresa.com.br.

11 Crie uma entrada no servidor de DNS para o domnio meusite.empresa.com.br;


11 Configure um virtual host no servidor Apache para o site meusite.empresa.com.br;

11 Crie o arquivo index.html com um texto de boas-vindas, para ser exibido quando o
domnio for acessado.

Atividade 6.3 Configurao de um servidor seguro


O protocolo HTTP no possui nenhum recurso de criptografia e, por consequncia, todo o
trfego de rede gerado entre cliente e servidor poderia ser visualizado por um atacante.
Para aumentar a segurana de aplicaes web, interessante habilitar o suporte a conexes
cifradas atravs do SSL.
11 Instale o OpenSSL;

Captulo 6 - Roteiro de Atividades

11 Crie o diretrio /var/www/meusite , que ser usado como diretrio root do virtual host;

11 Crie um certificado digital auto assinado para o seu site;


151

# openssl req -new -x509 -days 365 -nodes -out /etc/apache2/apache.


pem -keyout /etc/apache2/apache.pem
11 Habilite o mdulo SSL no Apache (veja o comando a2enmod);
11 Configure o virtual host do site meusite.empresa.com.br para utilizar o protocolo HTTPS.

Atividade 6.4 Usando .htaccess para definir permisso de acesso a um site


O arquivo .htaccess permite que sejam feitas modificaes na configurao do servidor por
diretrio. Esse arquivo pode conter uma ou vrias diretrizes de configurao, que sero
aplicadas ao diretrio atual e a todos os seus subdiretrios.
11 Crie um diretrio chamado restrito dentro do diretrio root do virtual host
meusite.empresa.com.br.
11 Configure o servidor Apache para que aceite a autenticao de usurios vlidos no LDAP
quando tentarem acessar o endereo meusite.empresa.com.br/restrito.
Para permitir autenticao pelo LDAP necessrio instalar o mdulo
libapache-authznetldap-perl.
11 Teste o funcionamento.
Ser necessrio alterar a configurao do VirtualHost. Pesquise a diretiva AllowOverride.

Atividade 6.5 Habilitando pginas pessoais de usurios


O mdulo userdir habilita um usurio a ter seu site dentro da sua pasta pessoal.
11 Habilite o mdulo userdir no Apache usando o comando a2enmod;
11 Pesquise sobre as configuraes do mdulo userdir e faa as configuraes necessrias
para que os novos usurios possam ter acesso s pginas pessoais;
11 Adicione o usurio webuser;

Administrao de Sistemas Linux: Servios para Internet

11 Crie uma pgina de boas-vindas e teste o funcionamento.

152

7
objetivos

Servidor de correio eletrnico


(parte 1)
Projetar, instalar e configurar um servidor de correio eletrnico Postfix, entender
o funcionamento do correio eletrnico e dos protocolos SMTP, POP e IMAP e
conhecer os recursos da ferramenta Postfix.

conceitos

Servidor Postfix, teste do servidor com Telnet e envio de mensagem para usurios
atravs do shell de comando.

Introduo
O estudo deste captulo tem como objetivo capacitar o aluno a projetar, instalar e configurar
um servidor de correio eletrnico Postfix. Sero apresentados conceitos tericos, o funcionamento do correio eletrnico e os protocolos SMTP, POP e IMAP. Em seguida, aspectos e
recursos da ferramenta Postfix. Por ltimo, veremos a parte prtica envolvendo instalao,
configurao e testes com o servidor de correio eletrnico Postfix, no qual so incentivadas
boas prticas de configurao e administrao.

11 Tambm denominado e-mail (eletronic mail).

11 Desenvolvido para permitir a troca de mensagens entre usurios por meio eletrnico.
11 Permite o envio de arquivos anexados s mensagens.
11 Documentos, planilhas, imagens, vdeos etc.

Figura 7.1
Troca de
mensagem.

O correio eletrnico um dos servios mais usados na internet, permitindo que usurios conectados em qualquer ponto da rede troquem mensagens entre si e com outros. Atravs dessas
mensagens podem ser enviados textos e arquivos anexados, como documentos, planilhas,

Captulo 7 - Servidor de correio eletrnico (parte 1)

Correio eletrnico

imagens, vdeos e outros. uma ferramenta extremamente importante no incremento da produtividade, pois integra e aproxima os usurios com a facilitao da troca de informaes.
153

Origens do correio eletrnico

11 Criado originalmente em 1965 para a troca de mensagens entre usurios


de mainframes.
11 Em 1966, j permitia a troca de mensagens entre diferentes computadores.
11 Em 1971 surgiu o smbolo @.
11 Com o surgimento da internet, seu uso foi multiplicado.
O correio eletrnico foi criado em 1965, originalmente para troca de mensagens entre usu-

rios de computadores de grande porte. Logo foi adaptado para troca de mensagens por meio
de terminais remotos. Em 1969, j com a ARPANET, surgiu a utilizao do smbolo @ como
separador entre nome de usurio e domnio. Com a internet, a utilizao do e-mail foi multiplicada, tornando-se juntamente com o acesso pgina web um dos servios mais utilizados.

Funcionamento do correio eletrnico

Baseado em dois subsistemas:


11 Agente de transferncia de mensagens Mail Transport Agent (MTA).
11 Agente de usurio Mail User Agent (MUA).

MTA1

MTA2

MUA1

Figura 7.2
Funcionamento do
correio eletrnico.

MUA2

Durante o processo de envio de mensagens so utilizados dois tipos de programas: de transporte e de usurio. O primeiro tipo cuida do envio da mensagem entre a origem e o destino.
O segundo permite ao usurio ler e escrever suas mensagens. Tambm denominados respectivamente de agentes de transferncia de mensagens e agentes de usurio.
Agentes de transferncia de mensagens ou Mail Transfer Agent (MTA):
11 Permitem o deslocamento das mensagens da origem ao destino;

Administrao de Sistemas Linux: Servios para Internet

11 So os programas (daemons) que executam no ISP (provedor de internet);

154

11 Exemplo: Sendmail, Postfix, Qmail e Exlm.


Agentes de usurio ou Mail User Agent (MUA):
11 Permitem aos usurios ler e escrever suas mensagens;
11 So os programas de e-mail no computador do usurio. Exemplos: Eudora, Evolution,
KMail, Outlook e Mozilla Thunderbird.
Protocolos utilizados no envio de mensagens:
11 Simple Mail Transfer Protocol (SMTP).
11 Post Office Protocol (POP) ou Internet Message Access Protocol (IMAP).

SMTP
Figura 7.3
Protocolos
utilizados.

SMTP

POP3/IMAP

POP3/IMAP

Ao longo do processo de envio de uma mensagem, so utilizados alguns protocolos, tais como:
Simple Mail Transfer Protocol (SMTP), Post Office Protocol (POP3) e Internet Message Access
Protocol (IMAP). O primeiro utilizado na transferncia de mensagens entre os MTAs, enquanto
os outros dois podem ser utilizados no envio de mensagens do MUA para o MTA e vice-versa.
O usurio, ao escrever sua mensagem, pode faz-lo desconectado da rede (off-line). Para
enviar suas mensagens, deve estar conectado rede, seja ela local ou discada. De maneira
simplificada, podemos afirmar que as mensagens so colocadas em uma espcie de caixa de
entrada do servidor de correio eletrnico.
O servidor de correio eletrnico fica constantemente verificando se existem mensagens a
serem enviadas. Caso a mensagem seja destinada a usurios no mesmo servidor, encaminhada a uma caixa de entrada para que sejam distribudas para os usurios. Se a mensagem
for destinada a outro servidor de correio, solicitada uma conexo com esse servidor,
sendo ento encaminhada a mensagem a ele, que analogamente coloca a mensagem em
uma caixa de entrada para posterior distribuio aos seus usurios.

Protocolo SMTP
11 O objetivo do protocolo SMTP transferir mensagens de maneira confivel e eficiente.

11 Independe do subsistema de transmisso e requer somente um meio de transmisso confivel.

SMTP - origem

Comandos / Respostas SMTP


e mensagens (mail)

SMTP - destino

O protocolo SMTP objetiva transferir mensagens de maneira confivel e eficiente, sendo


independente do subsistema de transmisso, requerendo somente um meio de transmisso
confivel. orientado conexo e utiliza o protocolo Transmission Control Protocol (TCP).
O SMTP funciona do seguinte modo: como resultado da requisio do usurio, o SMTP-origem estabelece uma conexo com o SMTP-destino. O SMTP-destino pode tanto ser o
destino final, quanto um intermedirio. Os comandos so gerados pelo SMTP-origem e
enviados ao SMTP-destino. As respostas fazem o caminho inverso.
Com a conexo estabelecida, o SMTP-origem envia um comando MAIL indicando a origem
da mensagem. Caso o SMTP-destino aceite, retornada uma mensagem OK (cdigo 250).
O SMTP-origem envia ento o destinatrio da mensagem. Duas situaes podem ocorrer:
na primeira, se o destinatrio no existir no SMTP-destino, enviada uma mensagem de
ERRO (cdigo 550) informando que o usurio no existe. Na segunda, se o usurio existe,
enviada uma mensagem OK (cdigo 250). Mltiplos destinatrios podem ser aceitos.
Em seguida o SMTP-origem envia o comando DATA. O SMTP-origem informa o cdigo 354
(iniciar mensagem) e informa que a mensagem deve terminar com uma linha constando

Captulo 7 - Servidor de correio eletrnico (parte 1)

Figura 7.4
Protocolo SMTP.

somente um ponto (<CRLF>.<CRFL>). Aps o envio dos dados, o SMTP-destino confirma com OK.
155

Para o estabelecimento da conexo, o SMTP-origem envia uma mensagem no seguinte formato:

SMTP-destino (R): 220 <identificao SMTP-destino> Service ready


SMTP-origem (S): HELO <identificao SMTP-origem>
SMTP-destino (R): 250 <identificao SMTP-destino>
Para o encerramento:

S: QUIT
R: 221 <identificao SMTP-destino> Service closing transmission
channel
Exemplo de uma transao SMTP:
11 SMTP-origem (S): MAIL FROM:<Smith.Alpha.ARPA>
11 SMTP-destino (R): 250 OK
11 S: RCPT TO:Jones@Beta.ARPA
11 R: 250 Ok
11 S: DATA
11 R: 354 Start mail input; end with <CRLF>.<CRLF>
11 S: ...etc. etc. etc.
11 S: <CRLF>.<CRLF>
11 R: 250 Ok
A seguir so apresentados alguns cdigos de reply do protocolo SMTP:
11 211 System status, or system help reply
11 220 <domain> Service ready
11 221 <domain> Service closing transmission channel
11 250 Requested mail action okay, completed
11 251 User not local; will forward to <forward-path>
11 354 Start mail input; end with <CRLF>.<CRLF>
Administrao de Sistemas Linux: Servios para Internet

11 421 <domain> Service not available, closing transmission channel


11 450 Requested mail action not taken: mailbox unavailable [mailbox busy]
11 451 Requested action aborted: local error in processing
11 452 Requested action not taken: insufficient system storage
11 500 Syntax error, command unrecognized
11 501 Syntax error in parameters or arguments
11 502 Command not implemented
11 503 Bad sequence of commands
11 504 Command parameter not implemented
11 550 Requested action not taken: mailbox unavailable [mailbox not found, no access]
11 551 User not local; please try <forward-path>
11 552 Requested mail action aborted: exceeded storage allocation
11 553 Requested action not taken: mailbox name not allowed [mailbox syntax incorrect]
11 554 Transaction failed
156

Protocolo POP3
Permite a uma estao acessar suas mensagens no servidor de modo simples.

Servidor conectado internet mantm as mensagens.


11 Periodicamente buscadas por uma estao.
No permite muitas opes para a manipulao de mensagens.
11 Geralmente as mensagens so baixadas (download) e em seguida removidas do servidor.
11 Operaes mais complexas so feitas pelo protocolo IMAP4.
O protocolo Post Office Protocol Version 3 (POP3) surgiu para resolver um problema.
Estaes que no esto permanentemente conectadas a uma rede IP necessitam receber e
tratar suas mensagens. O protocolo POP3 utilizado por estaes para buscar suas mensagens em servidores que as esto armazenando temporariamente.
Em um servio POP3, existem duas entidades:
11 Cliente: quem faz uso do servio POP3;
11 Servidor: disponibiliza o servio POP3.
Desse modo, quando um agente de usurio em um cliente deseja enviar uma mensagem
a um MTA, uma conexo SMTP estabelecida e todas as mensagens so entregues a esse
MTA, responsvel pelo envio.
O funcionamento do protocolo ocorre do seguinte modo:
11 O servidor (POP3) em execuo escuta a porta TCP 110.
11 Quando um cliente deseja utilizar o servio, uma conexo estabelecida com o servidor.
11 No estabelecimento da conexo, o servidor envia uma saudao.
11 Em seguida so trocados pedidos (comandos) e respostas at o fechamento da conexo.
Os comandos utilizados consistem de palavras-chave com trs ou quatro caracteres de comprimento, seguidos de um ou mais argumentos, onde cada argumento possui at quarenta
caracteres de comprimento.
As respostas consistem de um indicador de status, de uma palavra-chave e de informaes
adicionais. Todas as respostas terminam com um par de <CRLF>. As mensagens de status
so: +OK quando positivas e -ERR quando negativas. As respostas podem conter mlti046, que equivale ao caractere . seguido de um par de <CRLF>.

Comandos POP3
11 Autenticao: USER name; PASS string e QUIT.
11 Transao: STAT; LIST [msg]; RETR msg; DELE msg; NOOP; RSET e QUIT.
Comandos POP3 (opcionais):
11 Autenticao: APOP name digest.
11 Transao: TOP msg n e UIDL [msg].
11 Respostas POP3:
22 +OK e -ERR.

Captulo 7 - Servidor de correio eletrnico (parte 1)

plas linhas. Cada linha termina com <CRLF>. A ltima linha consiste de um cdigo decimal

157

Os comandos utilizados no protocolo POP3 podem ser divididos em:


Comandos de autenticao (Authorization State) o cliente se identifica junto ao servidor:
11 USER name: identifica o usurio.
11 PASS string: senha do usurio.
11 QUIT: finaliza a sesso.
11 APOP: identifica a mailbox e a string MD5 de autorizao.
Comandos de transao (Transaction State) o cliente solicita aes por parte do servidor:
11 STAT: lista o tamanho das mensagens.
11 RETR msg: solicita envio de mensagem.
11 RSET: desmarca mensagem.
11 NOOP: testa o servidor

11 TOP msg n: lista cabealho e corpo da mensagem.


11 DELE msg: marca mensagem para remoo
11 LIST [msg]: lista mensagens.
11 UIDL [msg]: informa identificador da mensagem.
11 QUIT: direciona para Update State.
Comando de atualizao (Update State):5
11 QUIT: remove mensagens e finaliza.
Respostas:
11 +OK: resposta positiva a comandos.
11 -ERR: resposta negativa a comandos.
Exemplo:
11 Uma sesso pode ter uma autenticao em texto plano ou com a senha criptografada
(comando APOP).
11 Em seguida, so obtidas informaes sobre as mensagens disponveis (comandos

Administrao de Sistemas Linux: Servios para Internet

STAT e LIST).
11 Na sequncia, as mensagens so recuperadas (download) e marcadas para remoo.
11 Durante o encerramento as mensagens so excludas e a sesso encerrada.
Exemplo de uma sesso do POP3:
Servidor (S): <wait for connection on TCP port 110>
Cliente (C): <open connection>
S: +OK POP3 server ready
<1896.697170952@dbc.mtview.ca.us>
C: APOP mrose
c4c9334bac560ecc979e58001b3e22fb
S: +OK mroses maildrop has 2 messages (320 octets)
C: STAT
158

C: LIST 55
S: +OK 2 messages (320 octets) 5
S: 1 120
S: 2 200
S: .
C: RETR 1
S: +OK 120 octets
S: <the POP3 server sends message 1>
S: .
C: DELE 1
S: +OK message 1 deleted
C: RETR 2
S: +OK 200 octets
S: <the POP3 server sends message 2>
S: .
C: DELE 2
S: +OK message 2 deleted
C: QUIT
S: +OK dewey POP3 server signing off
S: +OK 2 320 (maildrop empty)5

(maildrop empty)

C: <close connection>

Protocolo IMAP
11 Permite a um cliente acessar e manipular mensagens no servidor.

se fossem pastas locais.


11 Permite: criar; remover; renomear; verificar por novas mensagens; incluir e remover
flags; dar busca em mensagens, cabealho, texto e outras partes.
11 Mensagens identificadas por nmeros (identificador nico).
O protocolo IMAP, assim como o POP3, responsvel pela manipulao de mensagens entre
o servidor de e-mail e o cliente. O IMAP mais recente e possui mais funes que o POP3.
O POP3 foi projetado para manipular mensagens off-line a partir de um nico cliente; desse
modo, efetua o download da mensagem, que em seguida removida do servidor.
J o protocolo IMAP fornece a opo de leitura das mensagens sem necessariamente
remov-las do servidor, o que permite, entre outros recursos: a leitura das mensagens a
partir de mltiplos clientes instalados, por exemplo, em um computador de escritrio e em

Captulo 7 - Servidor de correio eletrnico (parte 1)

11 Atua de maneira a permitir uma manipulao da caixa postal (pastas remotas) como

um computador porttil; utilizao de webmail e acesso conta de correio eletrnico por


meio de pgina web.
159

Prov ainda uma srie de recursos para manipulao de mensagens no servidor, tais como:
possibilidade de criar, remover e renomear pastas; ativar ou remover marcadores (flags);
Multipurpose Internet Mail Extensions (MIME) parsing: permite a busca e a seleo de
mensagens por dados do cabealho, corpo ou anexos. Permite ainda suporte a acesso concorrente a caixas de mensagens compartilhadas. O cliente no precisa conhecer o formato
utilizado para o armazenamento das mensagens.

Exemplo de uma transao IMAP:


11 Uma conexo IMAP consiste em uma saudao inicial seguida por iteraes feitas
entre um cliente e um servidor.
11 Essas iteraes possuem uma solicitao enviada pelo cliente e uma resposta enviada
pelo servidor.
11 Cada resposta inclui os dados solicitados e o resultado da consulta.
11 Essas iteraes so linhas de texto finalizadas com um <CRLF>.
O protocolo IMAP4, denominado IMAP verso 4 reviso 1, orientado conexo e
utiliza a porta TCP 143.

Conexo e estados do IMAP


1. Conexo sem pr-autenticao: OK.
2. Conexo pr-autenticada: PREAUTH.
3. Conexo rejeitada: BYE.
4. LOGIN ou AUTHENTICATE bem-sucedido.
5. Comando SELECT ou EXAMINE bem-sucedido.
6. Comando CLOSE ou falha no comando SELECT ou EXAMINE
7. Comando LOGOUT ou desligamento do servidor ou conexo encerrada.

Conexo estabelecida

Figura 7.5
Protocolo IMAP.

Administrao de Sistemas Linux: Servios para Internet

SERVER GREETING

160

NOT AUTHENTICATED

AUTHENTICATED

SELECTED

7
LOGOUT

Fim da conexo

Para recuperar uma mensagem ou para efetuar uma entre as vrias opes possveis,
inicialmente estabelecida uma conexo TCP. Aps estabelecida uma conexo, ocorre uma
operao de saudao (server greeting), e em seguida a conexo muda de estado, podendo
estar em um dos seguintes estados:
11 server greeting: saudao inicial do servidor;
11 not authenticated (no autenticado): o cliente deve fornecer credenciais (login e senha)
antes de encaminhar qualquer comando. Conexes pr-autenticadas passam diretamente ao estado seguinte;
11 authenticated (autenticado): o cliente deve selecionar uma caixa de mensagens antes de
emitir comandos relacionados s mensagens;
11 selected (selecionado): estado alcanado aps uma caixa de mensagens ser selecionada;
11 logout: estado alcanado aps uma operao de LOGOUT do cliente ou por aes unilaterais do cliente ou do servidor.
Comandos vlidos em qualquer estado:

11 CAPABILITY
11 NOOP
11 LOGOUT
Estado: Not Authenticated.
11 AUTHENTICATE
11 LOGIN
11 STARTTLS
Comandos:
11 CAPABILITY: solicita lista de recursos suportados pelo servidor.
11 NOOP: utilizado para zerar algum contador de inatividade (time-out); no solicita nada.
11 LOGOUT: o cliente informa ao servidor que terminou suas atividades e deseja encerrar.
11 AUTHENTICATE: comando para iniciar autenticao (SASL) com o servidor.
11 LOGIN: utilizado para identificar o cliente, sendo informados usurio e senha em texto
11 STARTTLS: comando para iniciar autenticao TLS.
Estado Authenticated:
11 Comandos vlidos em qualquer estado:
11 CAPABILITY, NOOP, LOGOUT, SELECT, EXAMINE, CREATE, DELETE, RENAME, SUBSCRIBE, UNSUBSCRIBE, LIST, LSUB, STATUS e APPEND.
Estado Selected:
11 Vlidos em qualquer estado:
22 CAPABILITY, NOOP e LOGOUT.
11 Vlidos em Authenticated:
22 SELECT, EXAMINE, CREATE, DELETE, RENAME, SUBSCRIBE, UNSUBSCRIBE, LIST, LSUB,
STATUS, APPEND, CHECK, CLOSE, EXPUNGE, SEARCH, FETCH, STORE, COPY e UID.

Captulo 7 - Servidor de correio eletrnico (parte 1)

plano.

161

Comandos:
11 SELECT: seleciona uma caixa de mensagens para acess-las;
11 EXAMINE: comando anlogo ao SELECT, porm acessa mensagem em modo de leitura
(read-only);
11 CREATE: cria uma caixa de mensagens;
11 DELETE: remove uma caixa de mensagens e todas as mensagens em seu interior. No
remove caixa de entrada (INBOX), somente seu contedo;
11 RENAME: renomeia uma caixa de mensagens existente;
11 SUBSCRIBE: adiciona uma caixa de mensagens a um servidor de notcias;
11 UNSUBSCRIBE: remove uma caixa de mensagens de um servidor de notcias;
11 LIST: efetua busca baseada em parmetros, inclusive caractere curinga;
11 LSUB: similar ao LIST, porm utiliza os servidores de notcia;
11 STATUS: solicita o status de uma determinada caixa de mensagens;
11 APPEND: comando para adicionar informao de mensagens a uma determinada caixa
de entrada.
11 CHECK: solicita uma atualizao (checkpoint) da caixa de mensagens atual.
11 CLOSE: remove as mensagens marcadas para excluso.
11 EXPUNGE: remove as mensagens marcadas para excluso, confirmando sequencialmente.
11 SEARCH: busca por mensagens de acordo com o critrio especificado.
11 FETCH: busca dados associados com a mensagem selecionada.
11 STORE: armazena na caixa de mensagens as modificaes efetuadas nas mensagens.
11 COPY: copia uma determinada mensagem para o final da caixa de mensagens de destino.
11 UID: funciona de dois modos. No primeiro em conjunto com COPY, FETCH ou STORE,
efetua a operao especfica sobre a mensagem. No segundo, em conjunto com SEARCH,
retorna as mensagens solicitadas.

Configuraes prvias do IMAP


Para funcionar corretamente, o servio de correio eletrnico depende de configurao

Administrao de Sistemas Linux: Servios para Internet

adequada de:

162

11 Hostname; firewall; sincronizao de relgio do sistema; Syslog e DNS.


22 Hostname: servidor deve possuir um FQDN.
22 Conectividade: firewall deve permitir trfego na porta 25 SMTP.
Para o funcionamento correto do servio de correio eletrnico, alguns itens do servidor
devem estar adequadamente configurados. No ajustar esses itens pode causar erros no
esperados durante a operao do sistema, como o extravio ou descarte indevido de mensagens pelo MTA de origem, intermedirio ou mesmo de destino.
Entre os itens mais importantes esto:
11 Hostname;
11 Conectividade;
11 System Time;
11 Timestamps;

11 Syslog;
11 DNS.

Hostname
Um servidor deve possuir um endereo Fully Qualified Domain Name (FQDN), por exemplo
mail.linux.lan. O hostname utilizado para saudao a outro servidor. O servidor pode
estar repassando mensagens para outros servidores, que verificam o hostname efetuando
uma consulta reversa ao DNS, descartando a mensagem cuja origem no foi adequadamente confirmada.

Conectividade
O firewall deve permitir conexes de entrada e sada na porta 25 utilizada pelo protocolo SMTP.
11 System Time e Timestamps: relgio do sistema deve estar sincronizado.

11 Syslog: ferramenta para anlise e diagnstico de problemas.


11 DNS: configurao afeta desempenho e aceitao de mensagens.

System Time e Timestamps


importante que o relgio do sistema esteja sincronizado utilizando, por exemplo, o
Network Time Protocol (NTP). A utilizao desse tipo de recurso facilita o processo de
implantao e ajustes, principalmente ao contatar outros postmasters. Permite ainda uma
melhor anlise dos cabealhos e mensagens de log.

Syslog
Ferramenta do Sistema Operacional utilizada na anlise e diagnstico de problemas.
O servidor Postfix utiliza log padro do Linux. Logo o servio syslogd deve estar em execuo, e no arquivo /etc/syslog.conf devem constar entradas associadas ao servidor de
mensagens. Por exemplo:

# arquivo /etc/syslog.conf
mail.none; authpriv.none; cron.none

-/var/log/messages

mail.* -/var/log/maillog

Neste arquivo deve ser utilizado <tab> em vez de espao.

DNS
extremamente importante estar com o servio DNS do domnio funcionando corretamente antes de ativar o servidor Postfix. Ao enviar mensagens, o MTA precisa resolver o
endereo do servidor de destino, assim como o servidor de destino deve efetuar uma confirmao da origem por meio de uma consulta reversa ao DNS.
Servidor de e-mail deve estar registrado no DNS do domnio.
11 Permitindo que qualquer servidor na internet possa enviar mensagens a esse servidor.
11 Existem trs tipos de entradas que devem estar presentes no DNS:

Captulo 7 - Servidor de correio eletrnico (parte 1)

cron.* -/var/log/cron

163

22 A: associa um FQDN a um endereo IP.


22 PTR: associa IP ao FQDN; utilizado para autenticar mensagens.
22 MX: informa o servidor responsvel pelas mensagens nesse domnio.
O servidor DNS do domnio deve possuir entradas associadas ao servidor de e-mail do
domnio. Isso necessrio porque, na maior parte dos casos, o MTA do destino efetuar
uma autenticao da origem verificando a autenticidade do FQDN informado. Logo, o DNS
deve ser capaz de informar os servidores responsveis por mensagens no domnio.
Muitos sistemas no incluem a entrada PTR (utilizada pelo endereamento reverso), o que
acaba causando uma rejeio de mensagens, pois o MTA do destino, ao no obter o FQDN
associado, descarta a mensagem supondo que ela seja spam.
Outro cuidado a ser tomado no incluir entradas CNAME ao servidor de e-mail. O protocolo SMTP exige que o servidor de e-mail seja A ou MX.
Havendo mais de um servidor responsvel por mensagens no mesmo domnio, deve ser
atribuda prioridade s entradas MX.
Utilize o comando dig para testar o funcionamento do servidor DNS.

Exemplo:
11 dig mail.linux.lan MX
22 Retorna informao do servidor de e-mail do domnio linux.lan.
11 dig x 200.130.77.75
22 Verificao do FQDN associado ao endereo IP.
Utilize sempre o comando dig para testar o funcionamento do servidor DNS, verificando as
respostas por ele devolvidas.
Exemplo:

# dig mail.linux.lan MX
; <<>> DiG 9.2.2 <<>> mail.linux.lan MX
;; global options: printcmd

Administrao de Sistemas Linux: Servios para Internet

;; ->>HEADER<<- opcode: QUERY, status:NOERROR, id: 23929


;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION
; mail.linux.lan.

IN

;; ANSWER SECTION
; mail.linux.lan. 86400 IN

MX

10

mail.linux.lan.

; mail.linux.lan. 86400 IN

MX

20

mail2.linux.lan.

NS

mar.linux.lan.

;; AUTHORITY SECTION
; mar.linux.lan. 86400 IN
;; Query time: 10 msec
;; Server: 172.25.0.130#53

164

MX

Postfix

O servidor de e-mail Postfix:


11 Consiste em uma Mail Transport Agent (MTA).
A instalao e configu- l
rao do Postfix podem
ser feitas de maneira
intuitiva. A instalao
padro relativamente
segura e simples.
Todavia necessrio
conhecer os parmetros para ajust-los.
Recomenda-se que
alguns ajustes sejam
feitos antes de colocar o
servidor em produo.
Outros podero ser
feitos com o servidor
em produo,
especialmente ajustes
em filtros de contedo e
controle de spam.

11 Capaz de aceitar mensagens de outros MTAs e usurios.


11 Possui ainda outros subprogramas (distribuio e tratamento de mensagens localmente).
11 Consolida-se como principal substituto do Sendmail.
11 Prope velocidade, facilidade de administrao e segurana.
O Postfix um Mail Transport Agent (MTA) que envia mensagens de um Mail User Agent
(MUA), ou cliente de e-mail, para um servidor remoto utilizando o protocolo SMTP. Pode
ainda receber mensagens de outros MTA e encaminh-las (relay) para outros MTAs.
A responsabilidade do Postfix se resume a receber ou enviar mensagens para outros
MTAs. A distribuio de mensagens ao usurio final, utilizando o protocolo POP3 ou IMAP,
de responsabilidade de outros servidores.
Existem atualmente muitos MTAs que podem ser utilizados dependendo dos requisitos
necessrios, incluindo: funcionalidades; facilidade de instalao, configurao e manuteno; robustez; entre outros.
Segurana e estabilidade so outras caractersticas positivas do servidor, devido ao seu
arranjo modular, e ao fato de que cada componente executa com o mnimo de privilgio
no sistema. Possui ainda ampla conectividade com outras aplicaes, tais como: banco de
dados; servio de diretrio LDAP etc.
O Postfix possui funcionamento semelhante ao de um roteador quando avalia pacotes IP.
Ao receber a mensagem, o Postfix avalia o destino (destinatrio) e a origem (remetente) para
decidir para aonde encaminhar a mensagem.

Mensagem (Origem)

Mensagem (Destinatrio)

Postx

SMTP

SMTP

UUCP

LMTP

QMQP

Postx
local
pipe

sendmail

Figura 7.7
Conexes e Mapas.

transport

virtual

aliases

De modo anlogo a um roteador, o Postfix tambm recebe mensagens por mltiplas origens
e pode encaminh-las tambm a mltiplos destinos. Uma mensagem pode chegar por meio
do sendmail local, por uma conexo SMTP, Unix to Unix Copy (UUCP), ou mesmo Quick Mail
Queuing Protocol (QMQP). O destino dessa mensagem pode ser uma caixa local, outro servidor
SMTP, uma conexo Local Mail Transfer Protocol (LMTP), ou ainda um pipe para um programa.

Captulo 7 - Servidor de correio eletrnico (parte 1)

Figura 7.6
Funcionamento
do Postfix.

165

Para determinar se as mensagens que chegam sero aceitas, ou mesmo para determinar
o mtodo que ser utilizado para encaminhar a mensagem, o Postfix faz uso dos mapas,
que impem permisses ou restries baseadas na origem, destino, e mesmo no contedo das mensagens.

transport

aliases

.forward

resolve

local

mailbox

local
rewrite
sendmail

maildrop

Internet

RBL

pickup
cleanup

incoming

active

qmgr

smtp

Internet

canonical

virtual

deferred

relocated

pipe

UUCP etc.

smtpd

access

Fazem parte da arquitetura do Postfix os seguintes componentes:


11 sendmail: comando Postfix para emular o Sendmail. Mantm compatibilidade com programas que chamam por /usr/sbin/sendmail. Melhor utilizar SMTP em vez de Sendmail por
razo de desempenho;
11 maildrop: Sendmail envia mensagem para maildrop queue e notifica pickup;
11 pickup: coleta a mensagem no maildrop queue, efetua o denominado sanity check e passa
a mensagem ao cleanup;
11 smtpd: cuida da comunicao com outros programas de e-mail; protege o restante do sistema;
11 rewrite: age sob demanda do cleanup, reescrevendo endereos para o padro user@fqdn;
11 cleanup: verifica formatao da mensagem e a envia para incoming queue;
11 incoming: entrada de mensagem; mensagens no prontas possuem cdigo 0600. Mensa-

Administrao de Sistemas Linux: Servios para Internet

gens prontas possuem cdigo 0700 e so coletadas pelo qmgr;

166

11 active: mensagens prontas para envio, mas no necessariamente em processo de envio;


11 deferred: mensagens cujo envio falhou para pelo menos um dos destinatrios;
11 resolve: resolve o endereo considerando transport, nexthop, destinatrio e flags;
11 qmgr: parte principal do Postfix, envia tarefas para SMTP, local, LMTP e pipe;
11 local: responsvel pela entrega das mensagens, utiliza o formato mbox ou maildir;
11 smtp: cliente Postfix para enviar mensagens a destinatrios remotos;
11 pipe: interface de sada para outros mecanismos de transporte de mensagens.

Instalao do servidor Postfix


Pr-requisitos:
11 Instalao do Linux.
11 Configuraes prvias.
11 DNS.

Figura 7.8
Arquitetura
do Postfix.

11 Remover MTA anterior da instalao do novo MTA.

22 No necessrio no Red Hat/Fedora ou Debian.


Instalao:
11 Red Hat/Fedora:

rpm Uvh <nome pacote>.rpm


11 Debian:

apt-get install postfix

Para a instalao do servidor Postfix, necessrio um servidor com o Sistema Operacional


Linux e acesso internet. Todas as distribuies Linux j vm com um MTA instalado, que
a princpio trata apenas localmente as mensagens. O MTA que normalmente acompanha
as distribuies o Sendmail, Postfix ou Exim. O administrador do sistema pode optar por
manter o programa instalado, e nesse caso modifica as configuraes que permitem ao
servidor executar as tarefas de envio, recebimento ou encaminhamento de mensagens
oriundas ou destinadas a outras estaes ou domnios.
As distribuies Linux suportam somente um MTA instalado. Desse modo, antes de instalar o
novo programa, recomenda-se desinstalar o programa anterior. Para as distribuies Debian
e Red Hat/Fedora, no necessria a etapa de desinstalao. No Debian, ao se instalar o novo
programa, o instalador APT automaticamente remove o anterior. Para o Red Hat/Fedora,
existe um aplicativo system-switch-mail que permite optar por um entre os MTAs instalados.
Em resumo:
11 Red Hat/Fedora: instalar o servidor a partir de um pacote com o comando:

rpm Uvh <nome pacote>.rpm


11 Debian: instalar o servidor com o comando:

apt-get install postfix

Inicializao do servidor Postfix


Para iniciar a execuo do servidor Postfix:

22 service postfix start (restart se j estiver iniciado).


11 Debian:
22 /etc/init.d/postfix start (restart se j estiver iniciado).
Informaes so lidas nos arquivos de configurao.
11 O principal arquivo main.cf , que contm diretivas (chave = valor) e referncias a
outros arquivos.
Ao ser iniciado, o servidor Postfix l as configuraes do arquivo de configurao main.cf.
Opcionalmente, pode-se incluir configuraes adicionais em outros arquivos de configurao, referenciando-os em main.cf. Para iniciar o servidor, deve-se chamar o binrio
/etc/init.d/postfix <parmetro>.
O parmetro pode ser: start, stop, restart ou reload. Exemplo: /etc/init.d/postfix restart

Captulo 7 - Servidor de correio eletrnico (parte 1)

11 Red Hat/Fedora.

167

O arquivo de configurao main.cf possui um conjunto de diretivas que norteiam o comportamento do servidor de e-mail Postfix. Nesse arquivo informado se o servidor cuidar
somente de mensagens locais do sistema ou de determinada rede ou domnio; os destinos
permitidos para o envio de mensagens; as redes a partir das quais so aceitas mensagens;
se esse servidor encaminha mensagens oriundas de outros servidores (relay) etc.

Configurao do servidor Postfix


Parmetros a serem ajustados inicialmente.

11 $myhostname.
22 Nome enviado durante a saudao entre MTAs, refere-se ao contedo aps a @.
33 Exemplo: usuario@mail.linux.lan
11 $mydomain domnio atual (opcional).
22 Determinado automaticamente se myhostname estiver configurado; contedo
aps o . depois da @.
11 $mydestination.
22 Aceita mensagens para o domnio listado.
22 Exemplo: mydestination = $mydomain

Configurao do servidor Postfix para um nico domnio


O servidor de e-mail Postfix possui centenas de diretivas (parmetros) que podem ser
inseridas em seu arquivo de configurao. No necessrio configurar cada uma delas, pois
todas possuem um valor padro (default) assumido quando a diretiva omitida no arquivo
de configurao.
Cada diretiva possui o formato: parmetro = valor. Pode ainda referenciar o contedo de
outra diretiva: outro_parametro = $parametro. Nesse caso, o contedo de parametro ser
atribudo a outro_parametro. Pode ainda aceitar mltiplos valores. Exemplos:

myhostname = mail.linux.lan
myorigin = $myhostname

Administrao de Sistemas Linux: Servios para Internet

mydestination = $myhostname localhost.$mydomain localhost


Entre as diretivas que devem ser configuradas inicialmente esto:
11 $myhostname: nome enviado durante a saudao entre MTAs, refere-se ao contedo
aps o caractere @. Exemplo: usuario@mail.linux.lan
11 $mydomain: domnio atual (opcional), determinado automaticamente se o myhostname
estiver configurado. Contedo aps . depois do caractere @.
11 $mydestination: aceita mensagens para o domnio listado. Exemplo: mydestination =
$mydomain.
11 $myorigin: domnio que aparece em mensagens enviadas a outras mquinas. Utilizado
para garantir que mensagens estejam com remetente no formato FQDN.
11 $mynetworks_style: especifica de onde sero aceitas mensagens. Valores aceitos:
22 host: quando o servidor aceita somente mensagens da mquina local;
22 subnet : quando o servidor aceita mensagens de mquinas pertencentes sua sub-rede;
22 class: quando o servidor aceita mensagens originrias de servidores com endereo IP
de classe igual sua.
168

11 $mynetworks: lista de clientes autorizados a efetuar relay a partir desse servidor.


O valor um endereo de rede no formato Classless Inter-Domain Routing (CIDR), por
exemplo: 192.168.0.0/24.
Parmetros a serem ajustados inicialmente:

11 $myorigin:
22 Domnio que aparece em mensagens enviadas a outras mquinas.
22 Utilizado para garantir que mensagens estejam com remetente no formato FQDN.
11 $mynetworks_style:
22 Especifica de onde sero aceitas mensagens.
11 $mynetworks:
22 Lista de clientes SMTP autorizados a efetuar relay a partir desse servidor.
Sempre que os arquivos de configurao forem modificados, devem ser lidos novamente
para que seus novos valores entrem em vigor. Recomenda-se utilizar nesse caso o parmetro reload, que faz com que o servidor leia as novas informaes sem reiniciar. O parmetro restart faz com que o servidor tenha sua execuo interrompida e reiniciada, o que
causa a indisponibilidade do servidor por alguns momentos.
11 necessrio associar nome de e-mail a usurios.

22 Normalmente o Postfix somente entrega mensagens a usurios do sistema.


11 Pode ser necessrio separar o nome do usurio da conta de e-mail.
22 Restries administrativas e/ou de segurana.
22 Necessidade de criar arquivo de aliases.
22 Exemplo:
33 usurio uc0003
33 email joao@mail.linux.lan
Uma configurao adicional diz respeito associao entre contas de e-mail e contas de usurio
no sistema. Normalmente o Postfix somente entrega mensagens a usurios do sistema.
Porm, usualmente pode-se desejar desmembrar o nome do usurio da conta no sistema.
Existem diversas razes para isso, principalmente questes de segurana e administrativas.
A primeira trata da no divulgao das contas de usurio (login) na internet. A segunda pela

Para efetuar essa associao, devemos editar um arquivo de mapas denominado


/etc/postfix/aliases, incluindo as associaes desejadas.

# arquivo /etc/postfix/aliases
usuario1 uc0001
usuario2 uc0002
joao uc0003
Em seguida, deve-se atualizar os mapas com o comando postalias hash:/etc/postfix/aliases e,
na sequncia, recarregar o Postfix.

Captulo 7 - Servidor de correio eletrnico (parte 1)

razo de nem todos os usurios possurem contas de e-mail.

169

170

Administrao de Sistemas Linux: Servios para Internet

Roteiro de Atividades 7
Atividade 7.1 Instalao e configurao do Postfix
Para realizar esta atividade, necessrio que o servidor DNS esteja configurado para o
domnio empresa.com.br com o registro MX email.empresa.com.br apontando para o endereo IP do servidor Linux.
O servidor Postfix pode ser instalado de vrios modos: a partir do cdigo-fonte ou a partir
de instaladores como apt ou synaptic. Nesta atividade, apresentada a instalao com o apt
no Debian, que efetua o download a partir do repositrio.
Por questo de segurana, ser instalado o suporte ao protocolo TLS e gerado certificado
digital para acesso cifrado.
1. Efetue a instalao do servidor Postfix com suporte a TLS.

# apt-get install postfix libsasl2-2 sasl2-bin libsasl2-modules libdbdev procmail


Sero realizadas as seguintes perguntas:
11 Tipo de configurao? Site internet.
11 Mail name? email.empresa.com.br.
2. Reconfigurao do Postfix:

# dpkg-reconfigure postfix
Sero realizadas as seguintes perguntas:
11 Tipo geral de configurao? Site internet.
11 Nome de mensagens? email.empresa.com.br.
11 Para aonde deve ir o mail para o root? Em branco.
11 Outros destinos para os quais aceitar mensagens? Em branco (para nenhum) email.
empresa.com.br, localhost.empresa.com.br, empresa.com.br, localhost.
11 Forar atualizaes sncronas na fila de mensagem? No.
11 Redes locais? 127.0.0.0/8, 192.168.1.0/24.
11 Usar o procmail para realizar a entrega local? Yes.

11 Caractere de extenso de endereo local: +


11 Qual protocolo de internet utilizar? Todos.
3. Modificaes no arquivo /etc/postfix/main.cf:

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)


biff = no
append_dot_mydomain = no
# paramentros TLS

Captulo 7 - Roteiro de Atividades

11 Tamanho mximo da caixa de mensagem: 0.

171

smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_
scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_
scache
myhostname = email.empresa.com.br
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = email.empresa.com.br, localhost.empresa.com.br,
empresa.com.br, localhost
mynetworks = 127.0.0.0/8, 192.168.1.0/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_

Administrao de Sistemas Linux: Servios para Internet

mynetworks,reject_unauth_destination

172

smtpd_tls_auth_only = no
smtp_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

4. Execute os seguintes comandos para ativar o suporte a plain login:

# echo pwcheck_method: saslauthd >> /etc/postfix/sasl/smtpd.conf


# echo mech_list: plain login >> /etc/postfix/sasl/smtpd.conf
5. Adicione o usurio postfix ao grupo sasl:

# adduser postfix sasl


6. Criao dos certificados digitais:

# mkdir /etc/postfix/ssl
# cd /etc/postfix/ssl/
# openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
# chmod 600 smtpd.key
Criando a CA
# openssl req -new -key smtpd.key -out smtpd.csr
# openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out
smtpd.crt
# openssl rsa -in smtpd.key -out smtpd.key.unencrypted
# mv -f smtpd.key.unencrypted smtpd.key
Criando o certificado do servidor de email
# openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out
cacert.pem -days 3650
7. Reinicie o servidor Postfix:

# /etc/init.d/postfix restart
8. Configurao da autenticao com saslauthd. Para o Postfix executar na forma chrooted
em /var/spool/postfix preciso realizar as seguintes modificaes:

# mkdir -p /var/spool/postfix/var/run/saslauthd
9. Remova o diretrio /var/run/saslauthd:

# rm rf /var/run/saslauthd

# ln s /var/spool/postfix/var/run/saslauthd /var/run/saslauthd
11. Edite o arquivo /etc/default/saslauthd e ative o saslauthd.
Configure o Start para Yes START=yes e modifique a linha OPTIONS=-c para
OPTIONS=-c -m /var/spool/postfix/var/run/saslauthd -r.
12. Reinicie o saslauthd:

# /etc/init.d/saslauthd restart

Captulo 7 - Roteiro de Atividades

10. Crie um link simblico do diretrio saslauthd:

173

13. Para verificar se SMTPd com suporte a TLS est funcionando, execute:

# telnet localhost 25
14. Aps estabelecer a conexo com o Postfix execute o comando ehlo para verificar o tipo de
servidor e e-mail:

ehlo localhost
Devem aparecer as linhas 250-STARTTLS e 250-AUTH= LOGIN PLAIN

Atividade 7.2 Enviando e recebendo mensagens via Telnet


Nesta atividade ser efetuado o teste de envio de mensagem com Telnet, diretamente no
servidor de e-mail. Este teste visa averiguar o funcionamento do servidor de e-mail sem a
influncia de configuraes de clientes de e-mail (MUA).
1. Crie os usurios usuario1 e usuario2.
possvel criar o usurio pela linha de comando ou utilizar o phpldapadmin. Verifique as atividades do Captulo 4. No se esquea de criar o home do usurio e dar as
devidas permisses.
2. Conecte-se ao servidor de e-mail estabelecendo uma conexo:

$ telnet localhost 25
3. Envie um HELO:

HELO localhost
4. Informe o remetente da mensagem:

MAIL From: usuario1@email.empresa.com.br


5. Informe o destinatrio da mensagem:

RCPT To: usuario2@email.empresa.com.br


6. Digite o corpo da mensagem:

Administrao de Sistemas Linux: Servios para Internet

DATA

174

Isto eh um teste
. // digite uma linha somente com ponto . para encerrar mensagem
7. Encerre a conexo:

QUIT
8. Autentique como usuario2:

# su - usuario2
9. Verifique a chegada de mensagens:

# mail

Atividade 7.3 Enviando e recebendo mensagens


Nesta atividade ser efetuado o teste de envio de mensagem com as contas de usurios criadas
previamente. Esta atividade visa: testar o funcionamento completo da soluo de e-mail,
incluindo a distribuio de mensagens na caixa do usurio; analisar os logs gerados pelo envio
das mensagens; averiguar os aplicativos que esto em execuo e a finalidade de cada um.
11 Abra um terminal como root e fique monitorando o contedo do arquivo /var/log/mail.log
(pode utilizar o comando tail).
11 Em outro terminal, logar como usuario1 e enviar uma mensagem para o usurio2.
11 Em um terceiro terminal, logar como usuario2 e verificar as mensagens.
11 O que voc consegue identificar analisando os arquivos de log?
11 Qual a funo de cada um dos aplicativos envolvidos na troca de mensagens (postfix,

Captulo 7 - Roteiro de Atividades

procmail e bind)?

175

176

Administrao de Sistemas Linux: Servios para Internet

8
Servidor de correio eletrnico
(parte 2)
o uso de domnios virtuais, controlar o contedo, mail gateways e autenticao SMTP,
aprender as boas prticas para um servidor de e-mail corporativo e orientaes para
ajuste de performance, realizar a troca do mtodo de entrega para maildir, configurao
dos servidores POP e IMAP e testes com os clientes com esses protocolos.

conceitos

Configurao do servio de entrega/maildir; configurao do servio de recebimento


POP/IMAP; configurao do cliente para acesso a e-mail via servio POP.

Introduo
O estudo deste captulo visa complementar o aprendizado da administrao do servio de
correio eletrnico, onde so ministrados os mtodos de entrega de mensagens e a utilizao
de domnios virtuais. So abordados o controle de contedo, mail gateways e a autenticao
SMTP, alm de recomendaes de boas prticas para um servidor de e-mail corporativo,
complementadas com orientaes para ajuste de desempenho. Ao final, so praticados a
troca do mtodo de entrega para maildir, a configurao dos servidores POP e IMAP e testes
com os clientes utilizando esses protocolos.

Mtodos de entrega
11 Aps receber uma mensagem, um MTA chama outra aplicao para efetuar a entrega

na caixa de mensagens do usurio.


11 As mensagens destinadas a determinado usurio ficaro em sua caixa postal at que
ele as recupere.
11 Existem algumas formas de armazenar as mensagens de cada usurio:
22 mbox
22 maildir
Aps receber uma mensagem, um MTA chama uma aplicao que se encarregar de entregar
a mensagem da caixa de mensagens do usurio apropriado. Essas mensagens ficaro disponveis at que o usurio venha recuper-las, atravs dos protocolos POP ou IMAP.
As mensagens devero ento ser armazenadas apropriadamente no servidor, uma vez que

Captulo 8 - Servidor de correio eletrnico (parte 2)

objetivos

Administrar o servio de correio eletrnico, os mtodos de entrega de mensagens e

podero ficar disponveis ao usurio por tempo indeterminado. Existem vrias formas de
fazer isso. As mais usuais: mbox, maildir ou banco de dados relacional (SQL).
177

mbox
11 Formato padro para caixa de mensagens.

11 Mensagens de um usurio armazenadas em um nico arquivo.


22 From usuario1@linux.lan Qui Set 12 18:34:00 2006
22 Received: 12 Set 18:33:59 -0300
22 From: usuario2@linux.lan
22 To: usuario1@linux.lan
22 Subject: ol
22 Corpo da mensagem
O formato mbox o formato padro utilizado em sistemas baseados em Unix. As mensagens de cada usurio ficam em um nico arquivo, normalmente localizado em /var/spool/mail.
Uma variante dessa opo o uso do formato mbox para armazenamento das mensagens
em $HOME/Mailbox, a soluo mais comum e suportada pela maioria dos MUAs.
O arquivo possui todas as mensagens em sequncia. Cada mensagem comea em uma
linha iniciada por From. Essa linha no faz parte do cabealho da mensagem utilizada
pelo sistema para localizar o incio de cada mensagem. Embora o mbox seja amplamente
difundido no Linux e funcione adequadamente em um sistema local, no a melhor forma
de tratar mensagens em um servidor de e-mail.

Esse formato no suportado pelo IMAP. Desse modo, o usurio fica limitado a
utilizar o protocolo POP3 para recuperar suas mensagens.

maildir
Formato recomendado atualmente e suportado pelo protocolo IMAP. A caixa de mensagens

do usurio organizada em vrias pastas, geralmente maildir, contendo outras trs pastas:
11 new
11 cur

Administrao de Sistemas Linux: Servios para Internet

11 tmp

178

O maildir o formato recomendado atualmente, por ser o mais confivel. Alm disso, o
formato suportado pelo protocolo IMAP. Nesse formato a caixa de mensagens do usurio
organizada em vrias pastas. Cada pasta contm as mensagens distribudas em uma
mensagem por arquivo, alm de um arquivo de ndice. Geralmente uma pasta denominada
maildir contm outras trs pastas:
11 new: para mensagens no lidas;
11 cur: para mensagens lidas;
11 tmp: para mensagens em processo de entrega.
Um dos maiores benefcios do formato maildir a confiabilidade, em razo das mensagens
estarem distribudas uma por arquivo, podendo ser localizadas pelo arquivo de ndice associado. Alm disso, compatvel com o protocolo IMAP, no qual possvel: recuperar somente
os cabealhos de cada mensagem e manipular cada pasta e as mensagens dentro dela.

A simples instalao do Postfix no cria as pastas utilizadas pelo maildir. Nesse caso existem
duas opes: a primeira usar o utilitrio maildirmake, que acompanha o programa Courier
Maildrop; a segunda opo criar as pastas normalmente, o que pode ser feito de vrios
modos. O mais recomendado criar as pastas com as devidas permisses em /etc/skel.
Desse modo, cada novo usurio criado ter automaticamente as pastas prontas.

Servidor para mltiplos domnios


Postfix pode enviar, receber e armazenar mensagens para mais de um domnio.

Para isso, existem dois mtodos:


11 Virtual alias domains:
22 Expande o nmero de domnios pelo qual o servidor responde.
11 Virtual mailbox domains:
22 Cria caixas de mensagens virtuais.
22 Elimina a necessidade do usurio de possuir conta local na mquina.
O mtodo mais simples de responder por mltiplos domnios acrescent-los aos domnios
que esto listados no parmetro de configurao mydestination e adicionar os usurios ao
arquivo /etc/passwd do Linux. Porm, se o nmero de usurios for muito grande, administr-los um problema; alm disso, no possvel, para o sistema, diferenciar a que domnio
pertence um usurio, pois todos sero do domnio principal. Com o uso do virtual alias
domain, cada domnio virtual possui suas prprias configuraes e os endereos de e-mail
so direcionados tanto para contas locais como para endereos remotos. medida que
aumenta o nmero de domnios e consequentemente o de usurios, torna-se indesejvel
fornecer uma conta para cada usurio. Com o uso de virtual mailbox domains, alm de no
ser necessria a traduo de cada endereo de e-mail para um endereo diferente (alias),
no necessria a criao de contas no sistema Linux.

Domnios virtuais
O Postfix, por padro, reconhece como destino final somente os nomes especificados no

parmetro mydestination; denominado de domnio cannico.


Para domnios adicionais (virtuais), necessrio:
11 Estabelecer o alias do nome de domnio virtual.

11 Configurar o Postfix para receber mensagens dos domnios virtuais.


O Postfix reconhece por padro, como destino final, os nomes especificados no parmetro
mydestination, o que denominado de domnio cannico. Para que funcione como destino
final para domnios adicionais ou virtuais, necessrio que sejam efetuadas algumas configuraes adicionais:
11 Estabelecer o alias do nome de domnio virtual;
11 Criar um mapa com os destinatrios;
11 Configurar o Postfix para receber mensagens dos domnios virtuais;
11 Recarregar as configuraes.

Captulo 8 - Servidor de correio eletrnico (parte 2)

11 Criar um mapa com os destinatrios.

179

Estabelecer o alias do nome de domnio virtual


Informar ao Postfix que o destinatrio padro para outros domnios alm do prprio do sistema.
No parmetro virtual_alias_domains definida a utilizao de um mapa com os domnios virtuais.
O valor desse parmetro um arquivo contendo os domnios virtuais. Por exemplo:

# arquivo /etc/postfix/virtual_alias_domains
dominiovirtual.com 20061210
Aps a criao desse arquivo, deve ser gerado um mapa indexado com o comando postmap:

# postmap hash:/etc/postfix/virtual_alias_domains

Criar um mapa com os destinatrios


Nesta etapa deve ser criado um arquivo /etc/postfix/virtual_alias_maps com os endereos do
domnio virtual. Por exemplo:

# /etc/postfix/virtual_alias_maps
postmaster@dominiovirtual.com usuario1@exemplo.com55

usuario1@exemplo.com

abuse@dominiovirtual.com usuario1@exemplo.com55

usuario1@exemplo.com

usuario1@dominiovirtual.com usuario1@exemplo.com55

usuario1@exemplo.com

usuario2@dominiovirtual.com usuario2@exemplo.com55

usuario2@exemplo.com

Aps a criao desse arquivo, deve ser gerado um mapa indexado com o comando postmap,
conforme segue:

# postmap hash:/etc/postfix/virtual_alias_maps

Configurar o Postfix para receber mensagens dos domnios virtuais


Edite o arquivo de configurao main.cf, incluindo os parmetros e valores apropriados:

# /etc/postfix/main.cf
virtual_alias_domains = hash:/etc/postfix/virtual_alias_domains

Administrao de Sistemas Linux: Servios para Internet

virtual_alias_maps = hash:/etc/postfix/virtual_alias_maps

Recarregar configuraes do Postfix


# /etc/init.d/postfix reload ou service postfix reload

Testando o envio de mensagem para endereo virtual


# echo test | /usr/sbin/sendmail \ postmaster@dominiovirtual.com

Verificando arquivo de log


# tail /var/log/mail.log
Deve ser visualizado da seguinte maneira:

Dez 11 11:20:50 mail postfix/pickup[17850]: B84629AB38: uid=0


from=<root>
Dez 11 11:20:50 mail postfix/cleanup[17863]: B84629AB38: messageid=<20061210092050. B84629AB38@mail.exemplo.com>

180

Dez 11 11:20:50 mail postfix/gmgr[17851]: B84629AB38: from=<root>@


mail.exemplo.com>, size 282, nrcpt=1 (queue active)
Dez 11 11:20:50 mail postfix/local[17866]: B84629AB38: to=<usuario1@
exemplo.com>, orig_to=<postmaster@dominiovirtual.com>, relay=local,
delay=0, status=sent (mailbox)

Controle de contedo
Controle de contedo efetuado por ferramentas embutidas ou externas.

11 Embutidas: resolvem problemas mais simples.


22 Restrictions:

33 Supervisiona o dilogo SMTP.


22 Checks:
33 Examina o contedo da mensagem e bloqueia mensagens com determinados
ttulos e tipos de anexos potencialmente perigosos.
11 Externas: lidam com problemas mais complexos.
22 Delegam a filtragem de mensagens a aplicaes externas.
22 Onde o controle de cabealho e corpo da mensagem j no conseguem atuar.
22 Em geral efetuam varredura procurando por vrus ou worms e detectando spams.
O assunto de controle de contedo em trfego de mensagens de e-mail bem amplo. Sero
abordados neste curso apenas alguns aspectos que permitem iniciar o controle. O estudo mais
aprofundado ser necessrio medida que tais controles forem sendo colocados em prtica.
No Postfix o controle de contedo pode ser dividido em duas partes:
11 Ferramentas embutidas: visam em geral resolver problemas simples;
11 Ferramentas externas: lidam com problemas mais complexos.
As ferramentas embutidas efetuam dois tipos de controle:
11 Restrictions: supervisiona o dilogo SMTP, aceitando ou rejeitando mensagens com base
no remetente (mail from), destinatrio (rcpt), IP ou hostname.
11 Checks: examina o contedo da mensagem, verificando cabealho, corpo da mensagem,
simples, o administrador deve tomar cuidado com a complexidade das expresses regulares
utilizadas. Em geral utilizado para bloquear mensagens originadas de certos tipos de programas; com determinados ttulos (subject); e tipos de anexos potencialmente perigosos.
11 As ferramentas externas atuam onde o controle de cabealho e corpo da mensagem no conseguem atuar, em geral efetuando varredura procurando por vrus ou worms e detectando
spams. Os daemons pipe, SMTP e LMTP podem delegar a filtragem de mensagens a aplica-

es externas. Em geral instala-se o programa amavisd-new como um intermedirio entre os


daemons citados e as ferramentas de antispam (por exemplo, SpamAssassin) ou antivrus.

A filtragem ideal no atingida em um primeiro momento, devendo ser implementada e


testada aos poucos:
11 Colocar poucas restries e test-las.
11 Colocar em uso somente aps avaliar o impacto.

Captulo 8 - Servidor de correio eletrnico (parte 2)

anexos e cabealhos de mensagens anexadas. Apesar de funcionamento relativamente

11 Parmetro warn_if_reject para testar restries.


181

Observao importante: a filtragem ideal no atingida em um primeiro momento, por isso


deve ser implementada e testada aos poucos. Deve-se colocar poucas restries, test-las e

somente depois coloc-las efetivamente em uso.


necessrio ainda considerar a questo dos falsos positivos e negativos. No primeiro
pode-se rejeitar e-mails que a princpio no deveriam estar sendo rejeitados, e no segundo
caso ocorre o inverso.

Mail gateway
Tambm denominado smarthost.

11 Servidor de mensagens que conecta duas redes distintas.


11 De um lado, recebe o trfego de mensagens da internet e, do outro, repassa as men-

O Postfix possui um
parmetro warn_if_
reject extremamente
til para avaliar o
impacto de uma regra
de rejeio. Esse
parmetro permite que
o log registre a
mensagem que seria
rejeitada. Desse modo,
pode-se avaliar o
impacto de determinada regra sem
descartar mensagens.

sagens para o servidor de e-mail verdadeiro.


11 Protege o servidor tanto de conexes quanto de contedos maliciosos.
Um mail gateway tambm denominado smarthost um servidor que conecta duas redes
distintas. De um lado, recebe o trfego de mensagens da internet; do outro, repassa as
mensagens para o servidor de e-mail verdadeiro. Desse modo, protege o servidor tanto de
conexes quanto de contedos maliciosos.
Para quem est na rede externa, o mail gateway aparece como o destinatrio final das mensagens, j que ele que consta nos registros DNS. Logo, todo o trfego de mensagens que

DNS

entra na rede passa por esse servidor.

(Sistema de Nomes de
Domnios, na sigla em
ingls) um sistema
de gerenciamento de
nomes hierrquico e
distribudo com duas
definies: examinar e
atualizar seu banco de
dados e resolver nomes
de domnios em endereos de rede (IP).

Por outro lado, para a rede interna o mail gateway aparece como gateway para todas as
mensagens que saem da rede. Configurando ento o mail gateway para repassar somente
mensagens originadas do servidor de e-mail, aliado a um firewall que bloqueie qualquer
trfego SMTP saindo da rede (exceto pelo mail gateway), temos um controle do trfego
SMTP de entrada e sada impedindo o servidor de e-mail de receber diretamente um ataque
oriundo da internet. Para isso so necessrias permisses para:
11 Servidor interno utilizar mail gateway como relay;
11 Estabelecer os domnios que faro relay para a rede interna;
11 Estabelecer o host para o qual sero feitos os relays;

Administrao de Sistemas Linux: Servios para Internet

11 Definir destinatrios para os quais ser feito relay.


Para seu funcionamento, devemos:
11 Configurar servidor interno para utilizar gateway como relay.
11 Estabelecer os domnios que faro relay para a rede interna.
11 Estabelecer o host para o qual sero feitos os relays.
11 Atualizar e gerar um mapa indexado.
Para seu funcionamento, preciso:
11 Definir destinatrios para os quais ser feito relay.
11 Recarregar configuraes do Postfix.
1. Configurar servidor interno para utilizar gateway como relay.

Deve-se adicionar no mail gateway a lista de servidores para o qual sero encaminhadas
as mensagens que saem. Editar o arquivo main.cf, incluindo os endereos permitidos.

mynetworks = 127.0.0.0/8 172.25.0.0/24


182

2. Estabelecer os domnios que sero feitos de relay para a rede interna.


Configurar o mail gateway para aceitar mensagens da rede externa para o servidor interno.

relay_domains = exemplo.com
3. Estabelecer o host para o qual sero feitos os relays.
Configurar o mail gateway informando para qual servidor na rede interna devem ser
encaminhadas as mensagens. Editar o arquivo /etc/postfix/transport:

exemplo.com smtp:[mail.servidor.exemplo.com]
Aps a criao desse arquivo, deve ser gerado um mapa indexado com o comando postmap:

# postmap hash:/etc/postfix/transport
Definir o parmetro transport_maps, no arquivo main.cf, ajustando a configurao:

transport_maps = hash:/etc/postfix/transport
4. Definir destinatrios para os quais ser feito relay.
Em geral um gateway repassa para o servidor interno tudo o que recebe, inclusive spams,
vrus e mensagens para usurios no existentes. Para evitar esse efeito deve ser includo um
mapa de usurios vlidos. Criar o arquivo /etc/postfix/relay_recipients e inserir os registros:

usuario1@exemplo.com OK
usuario2@exemplo.com OK
Aps a criao desse arquivo deve ser gerado um mapa indexado com o comando postmap:

# postmap hash:/etc/postfix/relay_recipients
5. Recarregar configuraes do Postfix:

# /etc/init.d/postfix reload ou service postfix reload

Autenticao SMTP
11 No princpio, os servidores encaminhavam mensagens de qualquer cliente para

qualquer destino.

11 Autenticao SMTP uma maneira de identificar clientes independente do endereo IP.


11 Outras abordagens:
22 SMTP-after-POP e SMTP-after-IMAP; relay baseado em certificados; e Virtual
Private Network (VPN).
A autenticao SMTP (SMTP AUTH) uma maneira de identificar clientes independentemente de seu endereo IP, tornando possvel a um servidor de e-mail efetuar relay de mensagens de clientes, mesmo que estes estejam em redes no confiveis.
11 Identificao de clientes a partir da rede de origem.
11 Somente mensagens de determinados segmentos de rede seriam enviadas.

Captulo 8 - Servidor de correio eletrnico (parte 2)

11 Com o surgimento do spam, houve a necessidade de se efetuar algum tipo de controle.

183

LAN

Internet
Cliente
IP no convel
IP convel
Servidor

Servidor

Cliente

Relay
Figura 8.1
Autenticao SMTP.

No SMTP-after-POP e SMTP-after-IMAP, o cliente se autentica no servidor IMAP ou POP. Aps


a autenticao, o servidor registra em uma base de dados o endereo IP atual do cliente, por
um curto perodo de tempo. Desse modo, quando o cliente tentar enviar uma mensagem, o
servidor libera a mensagem aps consultar essa base de dados.
Na autenticao SMTP, o servidor oferece um SMTP AUTH ao cliente, que envia suas credenciais
ao servidor. Aps a validao, esse certificado permite o encaminhamento de mensagens.
No relay baseado em certificados, o servidor SMTP oferece uma conexo TLS com o cliente,
que envia seu certificado para o servidor. Aps verificar se o certificado est entre os que
podem ser aceitos, passa a encaminhar mensagens desse cliente.
A utilizao de VPN concede aos clientes uma conexo ao servidor por meio de rede virtual
segura, no tendo relao com configurao SMTP no servidor. Em razo do controle de
endereos IP possudos, pode ser utilizado um controle baseado no endereamento IP.
SMTP AUTH.

11 O servidor oferece SMTP AUTH ao cliente.


22 Cliente envia suas credenciais ao servidor.
22 Aps validar o certificado, permite o encaminhamento de mensagens.

LAN

Internet

Cliente

Administrao de Sistemas Linux: Servios para Internet

SMTP AUTH

184

IP

Cliente

Servidor

Servidor
Relay
Figura 8.2
Autenticao
SMTH AUTH.

Comparando-se essas quatro opes, podemos chegar s seguintes concluses:


11 TLS: funciona bem, no entanto no suportado por um grande nmero de clientes, alm
de o manuseio de certificados ser relativamente complicado;
11 VPN: exige trabalho adicional de configurao e manuteno para cada usurio;
11 SMTP-after-POP: no resolve inteiramente o problema, uma vez que vulnervel
a IP spoofing;

11 SMTP AUTH: resolve o problema inicial proposto. suportado por uma gama relativamente
grande de clientes, entre os quais: Eudora; Fetchmail; JavaMail; Mozilla; Mulbery; Mutt; Netscape; Novell Evolution; Outlook Express; Outlook; PalmOS Eudora; Pine; entre outros.
Apesar do Postfix incluir suporte a SMTP AUTH, essa opo no habilitada por padro.
necessrio verificar se a biblioteca SASL est instalada, o que pode ser feito com o comando:

# ldd `postconf -h daemon_directory`/smtpd


A sada gerada deve conter uma linha indicando a presena da biblioteca libsasl2.so. Caso
ela no esteja presente necessrio reinstalar o Postfix. Instrues podem ser obtidas na
documentao disponvel.

Servidor de e-mail corporativo


Uma soluo completa de e-mail corporativo deve considerar uma srie de boas

prticas, contendo:
11 Postfix.
11 Cyrus SASL.
11 Courier Maildrop.
11 Courier Imap.
11 OpenLDAP.
Os itens abordados at permitem a montagem de servidores de correio eletrnico que
atendem a uma ampla gama de redes, que vo de algumas dezenas at vrias centenas de
usurios. Para ambientes em que devem ser suportados milhares de usurios e para fins de
facilitar a administrao, recomenda-se uma abordagem um pouco diferente. Nessa abordagem proposta a utilizao de algumas ferramentas associadas ao Postfix: Cyrus SASL,
Courier Maildrop, Courier Imap e OpenLDAP.
Sero abordados neste curso os conceitos e a aplicabilidade dessa utilizao, que em
conjunto com os assuntos dos outros Captulos fornecero subsdios para que os alunos
possam posteriormente e por conta prpria implementar suas prprias solues.
Autentica e
envia e-mail

Postx
Envia
para LDA

Courier
Maildrop

Valida destinatrios
e verica endereo
de origem

Cliente

OpenLDAP

Recebe e
gerencia e-mail

Autentica
destinatrios

Obtm localizao de
mailbox e permisses
Entrega para
mailbox

Obtm regra para


novas mensagens

Virtual

Regras Filtro

Acessa mailbox
e gerencia e-mail

Courier IMAP

Captulo 8 - Servidor de correio eletrnico (parte 2)

Figura 8.3
Servidor de e-mail
corporativo.

185

11 Postfix: delega a autenticao do usurio para o servidor LDAP quando os usurios


tentam conectar-se a ele utilizando SMTP AUTH. Quando uma mensagem chega, o Postfix
consulta ainda o LDAP para verificar os usurios locais e aliases. Ao receber a mensagem,
o Postfix entrega-a para o Courier Maildrop, que o Local Delivery Agent (LDA).
11 Courier Maildrop: responsvel pela entrega local das mensagens, pergunta ao LDAP pela
localizao das caixas de mensagens. Pode verificar ainda mensagens por meio de regras
de filtragem de spam baseadas em uma pasta denominada .spam.
11 Courier Imap: utilizado pelo usurio que se conecta para recuperar suas mensagens.
As credenciais do usurio so verificadas junto ao servidor LDAP, que ainda informa onde
localizar as mensagens e os identificadores de usurio (UID) e de grupo (GID), que devem
ser utilizados.
O propsito de utilizao do servio de diretrio OpenLDAP evitar a necessidade de
criao de conta de usurio no sistema para conta de e-mail. Utilizando contas locais baseadas em /etc/passwd, o Linux est limitado a 65.536 usurios, o que tem ainda implicaes
de segurana, pois no h associao entre contas de usurio no sistema e contas de e-mail.

Cyrus SASL
Baseado em trs camadas: interface de autenticao; mecanismo e mtodo.

11 Interface de autenticao informa ao cliente que uma autenticao e um mecanismo


de autenticao esto disponveis.
11 O mecanismo utilizado pelo SMTP AUTH define a estratgia a ser utilizada pela autenticao. Recomenda-se utilizar o PLAIN LOGIN ou CRAM-MD5.
11 O mtodo de autenticao manipula o mecanismo cuidando da comunicao entre a
aplicao e a base de dados.
Cyrus SASL prov um mtodo de autenticao segura a ser utilizado pelo SMTP AUTH.
baseado em trs camadas: interface de autenticao; mecanismo e mtodo.
O propsito da interface de autenticao informar ao cliente que esto disponveis uma
autenticao e um mecanismo de autenticao. Essa interface implementada pelo servio
e protocolo em uso, como por exemplo o SMTP.
O mecanismo utilizado pelo SMTP AUTH define a estratgia a ser utilizada pela autenticao.
Administrao de Sistemas Linux: Servios para Internet

Recomenda-se utilizar o PLAIN LOGIN ou CRAM-MD5, embora outros mtodos possam ser

186

suportados, tais como: GSSAPI, KERBEROS_V4, NTLM e OTP.


No PLAIN LOGIN as credenciais so enviadas utilizando PLAIN como mecanismo, atravs
de strings com codificao de 64 bits que podem ser facilmente decodificadas e utilizadas
inclusive por clientes que no seguem a RFC, como por exemplo o Outlook Express.
O CRAM-MD5 e seu sucessor DIGEST-MD5 utilizam um mecanismo de senha (segredo)
compartilhada baseada em desafio. O servidor gera um desafio baseado em um segredo e o
cliente responde provando que conhece o segredo.
O mtodo de autenticao manipula o mecanismo, cuidando da comunicao entre a aplicao que oferece a autenticao SMTP e a base de dados que armazena as credenciais.
So dois os mtodos: saslauthd Daemon que executa com privilgios de root e pode
acessar alguns tipos de bases, como por exemplo /etc/shadow; e auxprop servio para
trabalhar em conjunto com plugins. Cyrus SASL pode utilizar:
11 Imap: servidor Imap para verificao de credenciais;

11 Kerberos: verifica tickets Kerberos;


11 Ldap: verifica credenciais no LDAP;
11 Pam: utiliza Pluggable Authentication Modules (PAM);
11 Passwd/shadow: base de dados do sistema;
11 Sasldb2: base de dados prpria do Cyrus SASL;
11 SQL: dados armazenados em servidores SQL.

Courier Maildrop
11 Agente local para a entrega de mensagens.

11 Recebe mensagens do Postfix e as armazena em caixas de mensagens no formato


maildir.
11 Pode ainda aplicar filtros nas mensagens.
Courier Maildrop um agente local para a entrega de mensagens que recebe mensagens
de um agente de transporte (Postfix) e armazena-as em caixas de mensagens no formato
maildir. Pode ainda aplicar filtros nas mensagens.
Um recurso adicional interessante a utilizao conjunta com cotas em diretrios, uma vez
que nesse formato as mensagens de cada usurio ficam em diretrios separados.
A instalao do Courier Maildrop exige a criao de usurio e grupo especficos:

# useradd -u 1003 vmail


# groupadd -g 1003 vmail
Para efetuar a instalao, utilize as seguintes opes quando for constru-lo:

# ./configure --enable-restrict-trusted=1 --enable-trustedusers=root vmail --enable-trusted-groups=root vmail --enablemaildirquota --enable-trashquota --enable-maildropldap


Aps essa etapa, execute os comandos make install-strip e install-man para instalar os binrios e o manual. Efetue ainda os seguintes ajustes de permisso em razo do daemon pipe
do Postfix (que no executa como root):

# chmod u+s /usr/local/bin/maildrop


# chown root:vmail /usr/local/bin/maildrop

Courier Imap
11 Oferece os servios:

22 POP.
22 POP-SSL.
22 IMAP.
22 IMAP-SSL.
11 Suporta o formato maildir.
Courier Imap suporta o formato maildir e oferece os servios POP, POP-SSL, IMAP e IMAP-SSL

Captulo 8 - Servidor de correio eletrnico (parte 2)

# chmod 750 /usr/local/bin/maildrop

para os clientes que a ele se conectam para manipulao das mensagens.


187

Para a instalao, utilize as seguintes opes quando for constru-lo:

# ./configure --enable-workarounds-for-imap-client-bugs --enableunicode --without-authpgsql --without-socks --with-redhat make


O parmetro --with-redhat deve ser utilizado somente em distribuies baseadas em Red
Hat. Em seguida, execute os comandos make install e install-configure.
necessria ainda a criao dos certificados para autenticao, que pode ser feita manualmente
ou por meio do utilitrio mkimapdcert, executado automaticamente ao iniciar o imapd-ssl.

Recomendaes de tuning
11 Ajustes bsicos.

11 Identificao de gargalos.
11 Ajustes para alto volume de trfego.
O Postfix rpido, e essa uma de suas principais caractersticas. Todavia, como muitos
outros programas, pode ter seu desempenho aumentado com alguns ajustes. Alm disso,
algumas situaes, como limitaes de hardware, software ou flutuaes bruscas (como um
pico no volume de spam) podem afetar sua performance.
Entre os ajustes bsicos, alguns itens sempre merecem ser verificados para maior garantia
de ausncia de problemas inesperados. Podemos citar: ajustes em consultas DNS; verificar
se o servidor est atuando como relay, recusando mensagens para usurios inexistentes,
bloqueando mensagens oriundas de redes da lista negra ou reduzindo a frequncia de
retransmisses.
Gargalos afetam o desempenho do sistema, eventualmente sobrecarregando o servidor
e causando nos usurios a percepo da ocorrncia de problemas. Ao chegar ao servidor,
durante seu processamento, uma mensagem movida de uma fila para outra. As filas so:
11 Incoming: todas as mensagens que entram so colocadas nessa fila pelo daemon clean,
e quando ficam prontas o qmgr notificado;
11 Deferred: mensagens que j foram enviadas a alguns destinatrios, mas com falha para
um ou mais destinatrios, aguardam nessa fila por nova varredura do qmgr;

Administrao de Sistemas Linux: Servios para Internet

11 active: mensagens nessa fila esto prontas para envio, mas ainda no foram enviadas;

188

11 maildrop: aguardam nessa fila mensagens enviadas pelo comando sendmail e que ainda
no foram enviadas para as filas do Postfix pelo daemon pickup.
Para alto volume de trfego, considere utilizar um servidor em separado para mensagens
que chegam. Separe ainda, se for o caso, a mquina que efetua filtragem de vrus, desabilitando nessa mquina consultas DNS, uma vez que ela encaminhar as mensagens sempre
para um mesmo destino.

Ajustes em consultas DNS


11 DNS deve estar funcionando adequadamente.
22 Efetuar teste com o comando dig.
11 Verificar:
22 Arquivo resolv.conf.
22 Saturao de trfego na rede.

22 Configuraes do firewall.

33 Disponibilizao de um servidor cache DNS.


Quando o sistema possui alto volume de trfego, importante que o DNS esteja configurado
adequadamente, sobretudo se a verificao de origem atravs do Fully Qualified Domain
Name (FQDN) est sendo efetuada.
Utilize o comando dig para efetuar uma consulta DNS. Recomenda-se efetuar esse teste
duas vezes verificando o tempo de resposta na primeira e segunda consultas. Os valores
obtidos variam de rede para rede; no entanto, no primeiro teste o valor dever ser superior
a 100 ms, enquanto que em uma segunda consulta dever ficar por volta de 10 ou 20 ms,
indicando que o servidor DNS est efetuando cache corretamente.
Persistindo os problemas, verifique:
11 As configuraes do arquivo resolv.conf, principalmente os servidores indicados na diretiva nameservers;
11 Problemas de trfego na rede; caso a rede esteja saturada, verifique a possibilidade de
otimizar a utilizao da banda, ou mesmo priorizar o trfego dos servidores DNS;
11 Configuraes do firewall;
11 Disponibilizao de um servidor cache DNS caso o servidor DNS esteja sobrecarregado
ou no esteja no mesmo segmento de rede do servidor de e-mail e se queira aliviar o
trfego na rede e melhorar o tempo de resposta.
Verificar se o servidor est atuando como relay.

11 Carga desnecessria no servidor e na rede.


11 Servidor acabar includo em listas negras.
11 Permita o envio de mensagens somente de clientes:
22 Listados no parmetro mynetworks.
22 Autenticados via SMTP.
22 Autenticados com certificados TLS.
Verifique se o servidor no est atuando como um relay aberto. Deixar o servidor efetuando
relay de qualquer origem extremamente prejudicial, pois alm de submeter o servidor
de e-mail a uma carga desnecessria, essa atitude far com que o servidor acabe sendo
sejam recusadas por muitos destinos.
Permita somente o envio de mensagens de clientes listados no parmetro mynetworks no
arquivo de configurao; de clientes autenticados via SMTP e de clientes que se autentiquem
utilizando certificados TLS.
Recusando mensagens para usurios inexistentes.
11 Servidor deve recusar mensagens para usurios inexistentes.
22 Caso aceite, enviar mensagens com notificaes de no entrega de mensagens,
causando acmulo de mensagens na fila de sada.
11 Configure os parmetros:
22 local_recipient_maps
22 relay_recipient_maps

Captulo 8 - Servidor de correio eletrnico (parte 2)

includo em listas negras (black lists), fazendo com que as mensagens legtimas da rede

189

Configure o servidor para recusar mensagens de usurios inexistentes. Caso o Postfix aceite
esse tipo de mensagem, o sistema acabar enviando mensagens com notificaes de no
entrega de mensagens (undeliverable messages), causando acmulo de mensagens na fila
de sada. Alm disso, essas mensagens ocuparo grande espao no sistema.
Outra questo surge quando o servidor est atuando como relay; nesse caso, o servidor
de destino acabar enviando de volta mensagens (bounce) no entregues, utilizando o
Return-Path do cabealho. Para esses ajustes, configure os parmetros local_recipient_maps
e relay_recipient_maps (caso o servidor esteja atuando como relay para outro servidor na
rede interna).
Caso o servidor esteja recebendo muitas mensagens de volta (bounce), e isso esteja se
tornando um problema, verifique na internet a lista de servidores que no aceitam suas
mensagens de volta. Caso o servidor esteja listado nessa lista, inclua-o em sua lista negra,
o que pode ser feito automaticamente com o parmetro:

check_rhsbl_sender dsn.rfc-ignorant.org
Bloqueando mensagens oriundas de redes da lista negra.

11 Existem atualmente vrios tipos de listas negras, inclusive de DNS.


22 A utilizao de listas reduz a carga de spam no servidor.
Reduzindo a frequncia de retransmisses.
11 Quando h grande nmero de mensagens no entregues na primeira tentativa:
22 Usar um relay para fallback.
22 Aumentar o tempo entre as tentativas.
Existem atualmente vrios tipos de listas negras, inclusive de DNS, que listam endereos IP,
faixas de endereos IP ou mesmo domnios.
Essas listas contm poucos falsos positivos em razo dos critrios utilizados para incluso.
A utilizao dessas listas far com que o servidor receba carga menor de spam.
Outra questo surge quando o servidor tem grande nmero de mensagens que no so
entregues na primeira tentativa. Existem duas alternativas:

Administrao de Sistemas Linux: Servios para Internet

11 Usar um relay para fallback; delega tentativas malsucedidas a outro servidor, que se

190

encarrega desse tipo de mensagem.


11 Aumentar o tempo entre as tentativas pelo parmetro maximal_backoff_time para diminuir a frequncia com que uma mesma mensagem entra novamente na fila de sada. Faz
com que tentativas de envio de mensagens a servidores que estejam fora do ar sejam
feitas em intervalos maiores.

Gargalos na incoming queue


Lentido em consultas externas. Exemplo: LDAP.
As mensagens que chegam so colocadas nessa fila pelo cleanup com permisso 0600 at
que estejam completas e prontas para processamento, quando sua permisso alterada
para 0700. Em condies normais a fila incoming quase no possui mensagens 0600.
Caso ocorram picos de recebimento de mensagens anterior da capacidade do qmgr, essa
fila pode crescer consideravelmente. Nesse caso, o que pode estar retardando o qmgr o
servio trivial-rewrite, sobretudo por lentido nas consultas LDAP ou SQL.

Gargalos na maildrop queue


Retardo decorrente de excesso de mensagens ou de consumo excessivo de CPU devido

s verificaes do pickup.
Mensagens enviadas pelo comando sendmail e ainda no coletadas pelo daemon pickup
permanecem na fila maildrop. Mensagens enviadas pelo comando sendmail mesmo com o
Postfix fora de execuo vo para essa fila. O pickup periodicamente verifica essa fila ou
realiza a verificao quando notificado da chegada de novas mensagens pelo postdrop.
Executando em uma nica thread, processa somente uma mensagem por vez, verificando
cabealho, corpo e outras informaes, demandando muito processamento de entrada e
sada de disco. Retardos causados nessa fila so decorrentes de excesso de mensagens ou
consumo excessivo de CPU devido s verificaes do pickup.
Convm observar que quando a fila active estiver cheia, o cleanup diminui a injeo de mensagens. A fila active possui limite de 20 mil mensagens.

Evite que uma quantidade excessiva de mensagens seja entregue via pickup. Caso
necessrio, utilize opes alternativas de injeo de mensagens por meio de programas como mini_sendmail.

Gargalos na deferred queue


Havendo grande volume de mensagens nessa fila, pode-se tentar ajustar diminuindo o

tempo mnimo e aumentando o tempo mximo das mensagens, agilizando o envio de mensagens com pouco tempo na fila, sem provocar muitas tentativas para todas as mensagens.
Quando o Postfix no consegue entregar a mensagem para algum dos destinatrios, esta
colocada na fila deferred. O qmgr verifica periodicamente essa fila conforme especificado no
parmetro queue_run_delay. Uma frao das mensagens periodicamente reinjetada na fila
active de acordo com o tempo de espera, que varia entre os valores de minimal_backoff_time
e maximal_backoff_time, respectivamente o tempo mnimo e mximo que cada mensagem
aguarda antes de ser recolocada para envio. Cada nova tentativa dobra o tempo de vida
da mensagem na fila. Mensagens com tempo menor possuem tentativas mais frequentes
e mensagens mais antigas tm tempo maior entre as tentativas. Havendo grande volume
aumentando o tempo mximo das mensagens, o que agiliza um pouco o envio de mensagens com pouco tempo na fila sem provocar muitas tentativas para todas as mensagens.

Gargalos na active queue


11 Quando o destino funciona a uma velocidade muito menor, causa acmulo nessa fila.
11 Caso a fila active esteja realmente lenta:
22 Reduzir a injeo de mensagens nessa fila.
22 Aumentar o throughput incrementando a concorrncia (quantidade de processos
SMTP em execuo) ou reduzindo a latncia (melhorias no DNS, mapas).
O qmgr tenta enviar cada mensagem dessa fila para seu destino. Quando o destino funciona com velocidade muito menor, provoca certo acmulo nessa fila. Caso o destino saia
do ar por alguns momentos, o qmgr considera esse destino como morto e transfere todas

Captulo 8 - Servidor de correio eletrnico (parte 2)

de mensagens nessa fila pode ser feita a tentativa de ajuste diminuindo o tempo mnimo e

191

as mensagens para deferred, o que libera a fila active, mas entrega muitas mensagens na fila
deferred. Caso a fila active esteja realmente lenta, existem dois modos de resolver o problema: reduzir a injeo de mensagens nessa fila ou aumentar o throughput. Para aumentar
o throughput pode ser incrementada a concorrncia (quantidade de processos SMTP em
execuo) ou reduzida a latncia (melhorias no DNS, mapas).
O aumento da concorrncia pode ser feito pela modificao do valor no parmetro
default_process_limit no main.cf.
Para modificao baseada no destinatrio, utilize o utilitrio qshape, que apresenta na
forma de uma tabela o total de mensagens na fila baseadas no destinatrio. Podem ser
utilizados os comandos:

# qshape -s hold
# qshape deferred
# qshape incomming active deferred
Por ltimo, deve-se evitar recarregar ou reiniciar o servidor, quando possvel. Apesar de a
fila active em memria estar vazia, a fila active em disco pode conter muitas mensagens, que

Administrao de Sistemas Linux: Servios para Internet

so devolvidas fila incoming, demandando muito consumo de memria.

192

Roteiro de Atividades 8
Atividade 8.1 Configurao da modalidade de entrega maildir
Pr-condio
Para realizar esta atividade necessrio que o servidor DNS esteja configurado para o
domnio empresa.com.br com o registro MX email.empresa.com.br apontando para o endereo IP do servidor Linux.
Ao instalar e configurar o servio de correio eletrnico, a modalidade de entrega das mensagens mbox.
1. Crie a estrutura de diretrios do maildir no home dos usurios usuario1 e usuario2.
2. Configure o postfix para entregar as mensagens na modalidade maildir.
3. Envie uma mensagem de teste e verifique se o a entrega foi realizada.

Atividade 8.2 Configurando servidores POP e IMAP


Os protocolos POP e IMAP so utilizados pelos programas cliente (MUA) para recuperar
mensagens armazenadas no servidor de e-mail. Nesta atividade so configurados os servidores POP e IMAP, que so testados com Telnet.
1. Instale o Courier-IMAP/Courier-POP3.
Sero realizadas as seguintes perguntas:
11 Criar os diretrios para administrao web? Responda No.
11 Requer certificado SSL? Responda Ok.
2. Para acessar o servidor POP3, digite o comando a seguir. Dever retornar uma mensagem
informando que o servidor est pronto:

# telnet localhost 110 // 110 porta utilizada pelo protocolo POP3


Connected do localhost
Escape character is ^]
+OK Hello there
3. Para acessar o servidor IMAP, digite o comando a seguir. Dever retornar uma mensagem

# telnet localhost 143 // 143 porta utilizada pelo protocolo IMAP


Connected do localhost
Escape character is ^]
+ OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE ......

Captulo 8 - Roteiro de Atividades

informando que o servidor est pronto:

193

4. Teste de autenticao do POP3:

# telnet localhost 110


Trying 0.0.0.0...
Connected to 0.
Escape character is ^].
+OK Hello there
user usuario1
+OK Password required.
pass senha
+OK logged in.
list
+OK POP3 clients that break here,
they violate STD53.
1 401

Atividade 8.3 Configurando a autenticao POP e IMAP no LDAP


Altere a configurao do SASL para que possa realizar a autenticao a partir da base do LDAP.
1. Instale o pacote libsasl2-modules-ldap para permitir que o SASL realize consultas base
do LDAP.

# apt-get install libsasl2-modules-ldap


2. Altere o arquivo /etc/defaults/saslauthd e atribua o valor ldap para o parmetro MECHANISMS.

# vi /etc/defaults/saslauthd
MECHANISMS=ldap

Administrao de Sistemas Linux: Servios para Internet

3. Adicione as seguintes linhas no arquivo /etc/postfix/sasl/smtpd.conf:

194

# vi /etc/postfix/sasl/smtpd.conf
pwcheck_method: saslauthd
mech_list: plain login
auxprop_plugin: ldap
ldapdb_uri: ldap://192.168.1.1
ldapdb_id: admin
ldapdb_pw: rnpesr
ldapdb_mech: DIGEST-MD5

4. Crie o arquivo /etc/saslauthd.conf e coloque as seguintes informaes nele:

# vi /etc/saslauthd.conf
ldap_servers: ldap://192.168.1.1/
ldap_search_base: ou=people,dc=empresa,dc=com,dc=br
ldap_auth_method: bind
ldap_filter: uid=%U
5. Reinicie o saslauthd e o Postfix:

#/etc/init.d/saslauthd restart
#/etc/init.d/postfix restart
6. Testando o funcionamento:

# testsaslauthd u aluno p rnpesr


0: OK Success.

Atividade 8.4 Utilizao de clientes POP e IMAP


Os programas cliente (MUA) utilizam-se dos protocolos POP ou IMAP para recuperar mensagens no servidor de e-mail. Nesta atividade configurado um cliente para o recebimento de
mensagens com esses protocolos.
1. Instale um cliente de e-mail como o Icedove (Thunderbird) ou Evolution na mquina
cliente Linux;
2. Configure o cliente de e-mail para enviar e receber as mensagens do usuario2.
3. Instale o cliente de e-mail Thunderbird na mquina Windows;
4. Configure o cliente de e-mail para enviar e receber mensagens do usuario1;

Captulo 8 - Roteiro de Atividades

5. Troque mensagens entre os usurios e verifique o comportamento do servidor.

195

196

Administrao de Sistemas Linux: Servios para Internet

9
Entender o que servidor proxy, fazer a instalao e configurao do servidor Squid
na verso compilada, configurar regras de acesso ACL, emitir relatrio de acesso
internet usando SARG e ativar o servio de proxy transparente.

a contedos, redirecionamento, proxy transparente.

Introduo
Conceitos iniciais:

conceitos

Proxy, soluo Squid, configuraes no servidor e no cliente, restrio de acesso

11 Proxy.
11 Proxy Squid.
Configurao Squid:
11 Servidor e cliente.
22 Restringindo o acesso internet.
22 Restringindo o acesso a determinadas pginas.
22 Proxy transparente.
Este captulo aborda os conceitos associados ao servio proxy e sua aplicabilidade,
sendo estudados:
11 Conceitos iniciais de proxy;
11 Soluo Squid;
11 Configuraes necessrias no servidor e no cliente;
11 Restrio de acesso aos contedos, incluindo redirecionamento;
11 Proxy transparente.
Em seguida so praticados:
11 Instalao e configurao do Squid;
11 Configurao do navegador;
11 Utilizao de proxy transparente e de listas de controle de acesso que limitam e modelam
o trfego, considerando vrios aspectos.

Captulo 9 - Servidor proxy Squid

objetivos

Servidor proxy Squid

197

Proxy

11 Tem por funo limitar o tipo de trfego.


11 Atua na camada de aplicao (7), analisando o contedo dos pacotes.
22 Pode barrar pacotes que contenham, por exemplo, palavras inapropriadas.
22 Diferentemente de um filtro de contedo que analisa trfego baseado em camada
de rede (3) ou de transporte (4).
O servio proxy tem por funo limitar o tipo de trfego que passa por ele. Instalado na
borda de uma rede, efetua o monitoramento dos pacotes e, se for o caso, barra o trnsito.

De modo anlogo ao filtro de pacotes que, baseado na faixa de endereos IP (camada 3) ou


porta (camada 4), impede o trfego de determinadas informaes, o proxy atua em camadas
mais altas, podendo limitar determinados tipos de protocolos, por exemplo o ICMP (ping).
Por funcionar analisando o trfego, pode examinar o contedo do pacote na camada 7 (aplicao). Um exemplo clssico procurar nos pacotes por palavras que constem em uma lista
proibitiva, tal como sexo. Todo pacote que contiver essa palavra ser descartado, impedindo o acesso a pginas que contenham contedo imprprio ou estranho s necessidades
da rede, seja uma rede residencial, de empresa ou de escola.

Web proxy cache:


11 Atua como cache.
11 Reserva uma rea em memria para armazenar os contedos acessados com maior
frequncia.
11 Ao buscar uma informao que tenha sido acessada previamente, o servidor proxy
cache a entrega diretamente sem busc-la na internet.

Outra finalidade do proxy atuar como cache. Nesse caso, o servidor reserva uma rea em
memria para armazenar os contedos estticos acessados com maior frequncia pelos

usurios de rede interna. Quando o usurio busca por determinada informao, o servidor
proxy cache o entrega diretamente sem acess-lo na internet. Considere por exemplo um
grande portal de notcias da internet. A primeira pessoa a acess-lo far com que o contedo dessa pgina fique armazenado no cache do servidor. As prximas pessoas que acessarem essa mesma pgina, dentro do tempo de expirao programado, obtero o contedo

Administrao de Sistemas Linux: Servios para Internet

do servidor, em vez do contedo da internet.


Portanto, essas duas solues apresentam, por motivos diferentes, melhoria no trfego da rede.
O proxy bloqueia o trfego considerado inadequado pela poltica de utilizao da rede da
empresa, enquanto o cache contribui para reduzir o montante de trfego no link externo da rede.

11 Acesso internet efetuado atravs de um proxy.


11 Geralmente o proxy est associado a um firewall.
11 Funciona como filtro de contedo e como web proxy cache.

Internet

Servidor Proxy

Web

A utilizao de um web proxy cache possibilita grande economia de recursos, com impacto
tanto na velocidade quanto no controle de acesso.

198

Estudos prvios
realizados pela Rede
Nacional de Ensino e
Pesquisa (RNP) indicam
economia de at 35%
no trfego no link
externo. Outro estudo
indica que 17% do
trfego da internet j
acessado a partir de
web proxy cache.

Figura 9.1
Funcionamento do
proxy cache.

Na velocidade, o impacto ocorre de duas maneiras. Na primeira, os usurios conseguem


acessar as pginas mais rpido, uma vez que elas so carregadas a partir do cache, que est
mais prximo do usurio. A segunda maneira indireta e se aplica a todos os usurios que
acessam dados na internet, que por estar com carga menor do que estaria sem o cache
apresenta desempenho mais elevado.
O controle de acesso cada vez mais necessrio, em empresas de qualquer tamanho. Com a
maior penetrao obtida pela internet, os benefcios proporcionados so evidentes, como:
11 Agilidade na troca de informaes com outras empresas, funcionrios e clientes;
11 Relacionamentos pessoais e familiares;
11 Comrcio eletrnico;
11 Distribuio e compartilhamento de contedo etc.
Aliado a esses fatores, h a ampliao constante da largura de banda por parte de empresas
e usurios domsticos, incentivando-os a utilizar servios antes inviveis. Esse cenrio gera
demanda sempre crescente de largura de banda.
Desse modo, extremamente necessrio, em especial por parte de empresas, a definio
de uma poltica de utilizao de rede em que todos os envolvidos tenham plena conscincia
do modo como devem utilizar os recursos disponibilizados. Faz-se necessrio o controle
do registro de todos os acessos, bloqueando aqueles considerados indevidos, reduzindo a
utilizao de largura de banda em aes estranhas s atividades da empresa, mantendo-a
disponvel e melhor preparada para a prtica de atividades legtimas. Essa poltica tambm
diminui a circulao de vrus, worms, programas piratas e outros males que apresentam
riscos s empresas.

Proxy Squid
O Squid um dos proxies mais utilizados na internet.

11 Considerado simples e confivel.


11 Praticamente obrigatrio em qualquer tipo de organizao com servios de internet.
22 De pequenas empresas aos grandes provedores de acesso.
11 Funciona tanto como um servidor proxy quanto como um web cache.
11 Vantagens de um proxy (entre eles o Squid):
22 Capacidade de armazenar documentos da internet.
22 Bloquear o acesso a determinadas pginas.
Squid um dos proxies mais utilizados na internet. Considerado simples e confivel, um
recurso praticamente obrigatrio em qualquer tipo de organizao que utilize servios de

Foi originado de um projeto da ARPA, cujo mentor foi Duane Wessels, do National Laboratory
for Applied Network Research, tendo posteriormente obtido a denominao de Squid. tanto
um servidor proxy quanto um web cache. Como proxy possui caractersticas especiais para a
filtragem de pacotes, suportando vrios protocolos, como HTTP e FTP. Pode ainda atuar como
um proxy reverso, funcionando nesse caso como um acelerador para um servidor web.
A grande vantagem de um proxy (como o Squid) a capacidade de armazenar documentos
da internet. Possui tambm o recurso de criao de regras de acesso, que permitem ou
bloqueiam o acesso a determinadas pginas. Com isso, pode-se vetar a navegao em sites

Captulo 9 - Servidor proxy Squid

internet, desde pequenas empresas aos grandes provedores de acesso.

199

pornogrficos, salas de bate-papo, servios de mensagens instantneas ou de compartilha-

mento de arquivos. Frequentemente associado a um firewall, estando inclusive instalado


na mesma mquina.

Instalao do Squid
A instalao pode ser feita a partir de vrias fontes:

11 .rpm
11 .deb
11 apt
11 Cdigo-fonte.
Pode ser instalado a partir de pacotes prontos.
11 No entanto, para adicionar alguns recursos, ser necessrio recompilar o Squid
atravs do arquivo fonte.
11 Recomendamos a instalao da ltima verso estvel.
A instalao do Squid pode ser feita a partir de:
11 Pacote .rpm, utilizado por distribuies RedHat/Fedora;
11 Pacote .deb, para distribuies Debian;
11 Do arquivo fonte, compilando-o localmente;
11 Instaladores que se utilizam de repositrios na internet, como o caso do apt.
Inicialmente pode-se instal-lo a partir de pacotes prontos; no entanto, deve-se obter
tambm os arquivos fontes, uma vez que para adicionar alguns recursos ao Squid necessrio recompil-lo. recomendado ainda instalar a ltima verso estvel.
Considerando que squid-3.1.20.tar.gz seja a verso estvel, a instalao pode ser efetuada
com o comando:

# wget http://www.squid-cache.org/Versions/v3/3.1/squid-3.1.20.tar.gz
Aps essa etapa, ser necessrio criar um usurio e um grupo para o Squid, procedendo-se
em seguida com a compilao por meio dos comandos:

Administrao de Sistemas Linux: Servios para Internet

# ./configure

200

# make
# makeinstall
Aps a instalao, preciso editar o arquivo de configurao squid.conf.

Configurao do Squid
Arquivo squid.conf:
11 Possui grande nmero de parmetros.
22 Porta, quantidade de memria, localizao de arquivos de log.
22 Listas de controle de acesso (ACL).
11 recomendvel ir incluindo ACL aos poucos.
11 Verificar efetividade de cada parmetro.

Mais informaes
podem ser obtidas na
pgina oficial do Squid:
http://www.squid-cache.org/

O arquivo de configurao do squid.conf possui grande nmero de parmetros que podem


ser utilizados. Ao colocar o Squid em funcionamento pela primeira vez, recomendvel
incluir os parmetros aos poucos, especialmente o ACL, justamente para que se possa perceber a efetividade de cada um. Alguns desses parmetros:
11 http_port: nmero da porta utilizada pelo servidor, em geral 3128;
11 cache_mem: quantidade de memria RAM utilizada pelo proxy web (em MB), default 256 MB;
11 cache_dir: define vrios parmetros de cache, como tipo de armazenamento, diretrio
de cache, quantidade em MB, nmero de diretrios de primeiro nvel, nmero de diretrios de segundo nvel. Exemplo: cache_dirufs /usr/local/squid/var/cache 500 16 256;
11 access_log: localizao do arquivo com logs de acesso ao contedo web;
11 cache_log: arquivo com informaes de log;
11 cache_store_log: arquivo com detalhes sobre objetos armazenados; registra objetos que
entraram e saram, e o tempo de permanncia;
11 pid_filename: nmero do processo Squid em execuo;
11 visible_hostname: nome do host apresentado em mensagens de erro;
11 cache_effective_user: nome dos processos criados pelo Squid;
11 cache_effective_group: grupo do dono dos processos criados pelo Squid;
11 acl REDE 192.168.0.0/255.255.255.0: exemplo de lista de controle de acesso;
11 http_accessallow REDE: informa o que fazer com a lista de controle de acesso.

Listas de controle de acesso


Access Control List (ACL).

11 Regras de acesso utilizadas pelo sistema.


11 Controlam quem pode acessar o que e quando.
22 Por meio de um conjunto de regras encadeadas.
11 Permitem bloquear ou liberar determinados tipos de acesso.
11 Limitam consumo de banda.
As listas de controle de acesso ou Access Control Lists (ACLs) so regras de acesso utilizadas
pelo sistema para controlar quem pode acessar o que e quando. Por meio de um conjunto
de regras encadeadas, permite bloquear ou liberar determinados tipos de acesso, alm de
limitar o consumo de banda em determinadas situaes.
Entre os parmetros que podem ser utilizados:

11 Destino da requisio;
11 Horrio da requisio;
11 Endereo MAC;
11 Disponibilidade de banda;
11 Filtros baseados em strings ou expresses regulares.

Captulo 9 - Servidor proxy Squid

11 Origem da requisio;

201

Para um bom entendimento do funcionamento das ACLs, necessrio considerar:


11 As diretivas do arquivo squid.conf so lidas de cima para baixo, com cada solicitao de
acesso comparada com cada regra de acesso, at que seja encontrada uma que combine
ou at que seja atingido o final do arquivo.
11 A ltima regra deve sempre bloquear todas as solicitaes de acesso. Desse modo, caso
nenhuma regra prvia corresponda solicitao efetuada, haver uma ltima que bloqueia o acesso.
11 No criar regras redundantes, desnecessrias ou que exijam resoluo DNS, para no
diminuir o desempenho do proxy.
11 Para um grande nmero de diretivas ou para maior flexibilidade, utilize o Squid associado
a outros programas, como o Squirm, SquidGuard ou DansGuardian.
As ACLs possuem uma sintaxe prpria, com diretivas para controle e tipos de regras

de acesso.
11 acl rede src 192.168.1.0/24
11 http_accessdeny rede
Existe um grande nmero de classes para controle de acesso:
11 Hora/data, porta, protocolo etc.
11 Nmero mximo de conexes a partir de um nico endereo IP.
ACLs possuem uma sintaxe prpria, com diretivas para controle e tipos de regras de acesso.
Considere o exemplo:

acl rede src 192.168.1.0/24


http_accessdeny rede
A primeira linha associa a lista de controle de acesso rede ao intervalo de endereos definido por 192.168.1.0/24.
A segunda linha informa que os elementos da lista de controle de acesso rede devem ter seu
acesso bloqueado ao servio http.
O tipo de uma regra pode ser:

Administrao de Sistemas Linux: Servios para Internet

11 scr: baseada no endereo IP de origem;

202

11 dst: baseada no endereo IP de destino;


11 scrdomain: baseada no domnio do cliente que solicita o acesso;
11 dstdomain: baseada no domnio do servidor de destino da solicitao;
11 srcdomain e dstdomain: tipos que solicitam resoluo DNS e devem ser evitados.
Existe um grande nmero de classes para controle de acesso por:
11 Hora e data;
11 Porta;
11 Protocolo;
11 Mtodos get ou post;
11 Tipo de navegador;
11 Usurio logado;

11 Tipo de contedo (MIME type) solicitado atravs de cabealho content-type;


11 Nmero mximo de conexes a partir de um nico endereo IP.

Exemplos de ACLs
Lista de acesso users permite o acesso durante o horrio do almoo de segunda a sexta,

no horrio das 12:00 s 13:55, negando acesso em outras ocasies.

acluserssrc 192.168.1.0/24
aclalmoco time MTWHF 12:00-13:55
http_accessallowusersalmoco
http_accessdenyusers
Exemplo 1
ACL com controle de data e hora. A lista de acesso users permite o acesso durante o almoo
de segunda a sexta, no horrio de 12h at 13h55, negando acesso nos demais horrios.

acl users src 192.168.1.0/24


aclalmoco time MTWHF 12:00-13:55
http_access allow users almoco
http_access deny users
Exemplo 2
ACL com controle de tipos de arquivos, negando acesso a arquivos .mp3, .avi, .zip e .exe. Pode
ser til para impedir o download de msicas, vdeos e executveis.

acl mp3 url_regex i.*\.mp3$


aclaviurl_regex i.*\.avi$
acl zip url_regex i.*\.zip$
aclexeurl_regex i.*\.exe$
http_access deny all mp3
http_access deny all avi
http_access deny all zip
http_access deny all exe

Configurao dos navegadores


Navegadores suportam configurao de proxy.
No navegador Mozilla Firefox:
11 Menu ferramentas.
11 Opes.
11 Menu Avanado.
11 Rede.

Captulo 9 - Servidor proxy Squid

http_accessallowall

203

11 Determine como o Firefox conecta-se internet.

11 Configurao manual do proxy.


11 Informar o endereo IP e porta utilizados.
Qualquer um dos navegadores disponveis pode ser configurado para acesso via proxy.
De modo geral, por meio de uma interface de configurao, possvel informar os dados do
servidor, como endereo IP e porta.
11 Mozilla Firefox: deve-se acessar o menu Ferramentas, Opes, Menu Avanado,
Rede, determinar como o Firefox conecta-se internet, fazer a configurao manual do
proxy e, finalmente, informar o endereo IP e porta utilizados.
11 Internet Explorer: entre no menu Ferramentas, Opes da internet. Selecione a aba
Conexes e clique no boto Configuraes da LAN. Na janela Configuraes da rede
local (lan), na seo Servidor proxy, marque a opo para usar um servidor proxy e
informe o endereo IP e a porta utilizada pelo servidor proxy.

Proxy transparente
Resolve dois problemas:

11 Necessidade de configurao de cada navegador instalado na rede.


11 Controle de usurios mais experientes que removem as configuraes do proxy,
evitando assim o controle de trfego.
A utilizao de proxy transparente resolve dois problemas. O primeiro a necessidade de
configurao de cada navegador instalado na rede. O segundo ocorre quando um usurio
com um pouco mais de experincia remove as configuraes do proxy, evitando o controle
de trfego.
Desse modo, a utilizao de proxy fica oculta, e os usurios usam-no mesmo que no
queiram. Facilita ainda a implementao da poltica de segurana, pois tira do navegador a
configurao para acesso ao proxy. Todas as solicitaes feitas na porta 80 so redirecionadas para o Squid, que pode ento controlar o trfego por meio das ACLs.
Para configurao do proxy transparente so necessrias trs etapas:

Administrao de Sistemas Linux: Servios para Internet

11 Recompilar o kernel para adicionar suporte ao proxy transparente;

204

11 Recompilar o Squid para adicionar suporte ao proxy transparente;


11 Incluir uma regra no firewall iptables.
Para recompilar o kernel necessrio marcar em Opes gerais:
11 Em Networking support: marcar Sysctl support.
11 Em Networking options: marcar Network Packet Filtering e TCP/IP Networking.
11 Em Networking options, opo IP: Netfilter Configuration: marcar Connection tracking, IP tables support, Full NAT e REDIRECT target support.
11 Em File Systems: marcar /procfilesystem support.

Antes de recompilar o kernel, carregue as configuraes em vigor e depois efetue as


modificaes mencionadas.

Na configurao so necessrias trs etapas para adicionar suporte ao proxy transparente:

11 Recompilao do kernel.
11 Recompilao do Squid.
11 Incluso de uma regra no firewall iptables.
Em seguida, recompile o kernel com os comandos:
11 make clean;
11 makedep;
11 makebzImage;
11 make modules;
11 makemodules_install.
Aps a recompilao do kernel, necessrio recompilar o Squid para adicionar suporte ao
proxy transparente, o que pode ser feito a partir do diretrio com os arquivos fontes do
Squid, atravs dos seguintes comandos:

# ./configure --enable-linux-netfilter
# make
# make install
Por ltimo, deve-se incluir uma regra no firewall iptables para redirecionar o trfego da
porta 80 para o Squid. A regra :

# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j


REDIRECT --to-port 3128
Onde 3128 a porta do Squid.

Redirecionadores
Ferramentas que permitem ao administrador da rede redirecionar determinadas

pginas acessadas pelos usurios.


Normalmente em dois casos:
11 Desvio de downloads.
11 Advertncia de usurios.
Os redirecionadores de URL so ferramentas que permitem ao administrador da rede
redirecionar determinadas pginas acessadas pelos usurios, o que normalmente feito em

11 Desvio de downloads;
11 Advertncia de usurios.
Esses redirecionadores adicionam recursos ao Squid, que j tem entre suas funcionalidades
o bloqueio a palavras e pginas proibidas.
No primeiro caso o administrador, aps observar grande volume de downloads de um ou
mais arquivos a partir da internet, pode optar por disponibilizar esse arquivo localmente e
redirecionar todos os pedidos, economizando volume de trfego no link de internet.

Captulo 9 - Servidor proxy Squid

dois casos:

205

Um segundo exemplo ocorre quando o usurio acessa pginas com contedo proibido.
Nesse caso, o acesso redirecionado para uma pgina com advertncias. Entre os redirecionadores, podemos citar:
11 Jesred;
11 Squirm;
11 SquidGuard;
11 DansGuardian.
A seguir, abordaremos a instalao e a utilizao do Squirm.
Entre os redirecionadores, podemos citar:

11 Jesred.
11 Squirm.
11 SquidGuard.
11 DansGuardian.
O Squirm um redirecionador desenvolvido para trabalhar em conjunto com o Squid, de fcil
instalao e recomendado na documentao do Squid. Para instal-lo, recomendado efetuar
o download na pgina do desenvolvedor. Em seguida deve-se desempacotar o arquivo:

# tar -xvfsquirm-versao.tar
Aps desempacotar o Squirm e antes de compil-lo, deve-se compilar a biblioteca regex.o:

# cd regex
# ./configure
# make clean
# make
# cp -p regex.oregex.h
No diretrio do Squirm:

# cd ..

Administrao de Sistemas Linux: Servios para Internet

# make

206

# makeinstall
necessrio ainda modificar o owner do executvel do Squirm, configurando o mesmo do Squid:

# chownsquid.squid /usr/local/squirm/bin/squirm
No Squirm, devem ser editados os dois arquivos de configurao:
11 squirm.local
22 Endereos das redes locais.
11 squirm.pattern
22 Regras a serem utilizadas:

regexi^http://www\.porno\.com\.br/.*http://www/advertencia.htm

Para a configurao do Squirm, devem ser editados os dois arquivos de configurao:


11 squirm.local
11 squirm.pattern
No arquivo squirm.local devem ser includos os endereos das redes locais. Por exemplo:
11 127.0.0
11 192.168.0
No arquivo squirm.pattern devem ser includas as regras utilizadas, no seguinte formato:
regex|regexi<padro><redirecionamento>.
Por exemplo:

regexi ^http://www\.porno\.com\.br/.* http://www/advertencia.htm


Onde advertencia.htm a pgina para a qual os usurios so redirecionados.
Podemos adicionar vrias regras, onde cada uma pode redirecionar para uma pgina diferente. O Squirm desnecessrio quando se utiliza iptables com NAT.
Caso a necessidade seja ainda de utilizao para redirecionamento associado a bloqueio de
contedo, pode-se utilizar as ferramentas SquidGuard ou DansGuardian, pois alm do redirecionamento, elas podem ainda efetuar bloqueio de acesso baseado em listas negras.

Captulo 9 - Servidor proxy Squid

A mesma soluo pode ser obtida com Squid e Squirm.

207

208

Administrao de Sistemas Linux: Servios para Internet

Roteiro de Atividades 9
Esta atividade pode ser feita tanto pelo cliente Windows quando pelo cliente Linux.
importante que tanto a mquina cliente quanto o servidor estejam na mesma rede.
Teste o funcionamento da rede atravs do comando ping.
Para realizar este Roteiro de Atividades, necessrio que o servidor esteja configurado com duas placas de rede: uma delas deve possuir rota e acesso internet.
Vamos supor que a nossa interface eth0 ser a interface com acesso internet, configurada
pelo DHCP do laboratrio.
1. No servidor, ative o ip_forward, editando o arquivo /etc/sysctl.conf e inserindo a linha a seguir:

net.ipv4.ip_forward=1

Atividade 9.1 Instalao e configurao do servidor proxy Squid


Nesta atividade, ser feita a instalao a partir do repositrio Debian. Observe que sero
instalados os pacotes iptables ( firewall), SARG (gerador de relatrio de acesso) e apache2
(servidor web para publicao dos relatrios do SARG).
Caso o SARG no esteja disponvel na lista padro de repositrios, devemos incluir um novo
repositrio conforme orientao do instrutor. Em seguida, efetue a instalao dos pacotes
squid, iptables, sarg e apache2.
1. As configuraes a seguir devero estar descritas no arquivo /etc/squid/squid.conf com as
modificaes necessrias de acordo com a caracterstica de cada rede local.
Cada comando recebeu um comentrio para facilitar o entendimento. Ainda assim, no
deixe de ler o manual do Squid para obter mais informaes.

#Porta utilizada pelo Cliente


http_port 3128
#Porta utilizada para troca de informaes entre Proxies
icp_port 3130
# nome do proxy

#Manter configurao Default


acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
#Configuraes do Cache
cache_mem 96 MB
cache_swap_low 75

Captulo 9 - Roteiro de Atividades

visible_hostname cache.empresa.com.br

209

cache_swap_high 95
maximum_object_size 900 MB
minimum_object_size 0 KB
maximum_object_size_in_memory 32 KB
#Configuraes do diskd
cache_dir ufs /var/spool/squid 20000 64 256
#path dos Logs
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log none
# definir o rotate log
logfile_rotate 10
#no emula o log do Apache
#emulate_httpd_log on
#opes de FTP
ftp_user admin@empresa.com.br
ftp_passive on
#Manter as configuraes Default
refresh_pattern ^ftp:

refresh_pattern ^gopher:
refresh_pattern .

1440


1440

0%
20%

1440
4320

#acl defaults

Administrao de Sistemas Linux: Servios para Internet

acl all src all

210

acl manager proto cache_object


acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl SSL_ports port 443 563
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443 563
acl Safe_ports port 70
acl Safe_ports port 210

20%

10080

acl Safe_ports port 1025-65535


acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl CONNECT method CONNECT
#Acesso pgina do cache manager
http_access allow manager localhost
http_access deny manager
#Acesso Defaults
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow SSL_ports
#ACLS e regras de acesso
# Permitir o acesso ao servidor proxy a partir da rede interna
acl rede src 192.168.1.0/255.255.255.0
http_access allow rede
#regra default
http_access deny all
#Configuracoes defaults
http_reply_access allow all
icp_access allow all
miss_access allow all
never_direct allow all
2. Parar o servio do squid:

3. Criar a rvore de diretrios de cache:

# squid z
4. Reiniciar o servio:

# /etc/init.d/squid start

Captulo 9 - Roteiro de Atividades

# /etc/init.d/squid stop

211

Atividade 9.2 Configurao dos navegadores


Nesta atividade, ser feita a configurao do navegador Internet Explorer. Essa configurao
dever ser feita em todas as mquinas de usurio que acessaro a internet por meio do
servidor proxy squid.
Configure o navegador para acessar a internet passando pelo servidor Proxy.

Atividade 9.3 Configurao de listas de controle de acesso


Nesta atividade, ser configurado o proxy squid com a utilizao de listas de controle de
acesso por endereo por MAC, IP, hora, tipo de arquivo e sites restritos.
O Squid avalia as regras de acesso por procedncia, ou seja, a primeira regra com a qual a solicitao se adequar ser a regra aplicada pelo servidor. Esse comportamento faz com que todas as
regras listadas a seguir devam anteceder a linha http_access deny all do arquivo de configurao.
11 Limitar o acesso internet para o endereo MAC da estao Windows: procure pela
diretiva arp;
11 Limitar o acesso internet para o endereo IP do cliente Windows: procure pela diretiva src;
11 No permitir o acesso internet nos horrios de 0h as 6h e de 19h as 23:59h, durante os
dias da semana;
11 Proibir o download de arquivos com extenso .mp3 e .avi;
11 Restringir o acesso ou pesquisa de algumas palavras, como por exemplo: sexo, playboy,
sexy etc.;
11 Proibir o acesso a uma lista de sites.

Atividade 9.4 Configurao do SARG


SARG um gerador de relatrio de acesso e uso de internet. Com essa ferramenta possvel
identificar e controlar os sites que os usurios esto acessando durante o dia de trabalho.
Configure o SARG para que seja possvel visualizar o relatrio. Fique atento aos parmetros
output_dir e access_log.

Administrao de Sistemas Linux: Servios para Internet

Atividade 9.5 Proxy transparente

212

Altere a configurao do servidor Proxy para que os clientes possam realizar o acesso
internet de forma transparente. Lembre-se de remover a configurao de proxy dos navegadores dos clientes.
Precisaremos criar uma regra no iptables para realizar o redirecionamento dos pacotes.
Exemplo:

# Redirecionar os pacotes da porta 80 para porta 3128


iptables -I PREROUTING -t nat -p tcp -s 192.168.1.0/24 -dport 80 -j
REDIRECT -to-port 3128
#Ativar o servico de NAT
iptables -t nat -I POSTROUTING -s 192.168.1.0/24 -j MASQUERADE

10
Instalar e configurar o Samba, instalar o SWAT e o Servidor Primrio de Domnio
ou Primary Domain Controller (PDC), controlar informaes de usurios e
autenticao para clientes Windows.

conceitos

O servidor Samba, compartilhamento de um disco Linux, acesso ao Windows do


Linux, montagem de diretrios do Windows e configurao do Samba com SWAT.

Introduo ao Samba
11 Samba e projetos relacionados.

11 Instalao e configurao do servidor Samba.


22 Seo (homes).
22 Compartilhamento de um disco Linux.
22 Acesso ao Windows do Linux.
22 Montagem de diretrios do Windows.
22 Configurao do Samba com SWAT.
22 Servidor primrio de domnio.
O estudo deste captulo se inicia pelos conceitos do servio Samba, abordado desde suas
origens, passando por aspectos tcnicos importantes, e concluindo com sua instalao,
configurao e testes relevantes nas situaes reais em que est inserido.
Na primeira parte ser apresentada a teoria e projetos relacionados ao Samba.
Em seguida, estudaremos a instalao e a configurao do Samba, com especial ateno aos
parmetros mais importantes e seo (homes) de seu arquivo de configurao. Apresentaremos ainda o compartilhamento de um disco Linux, o acesso ao Windows a partir do Linux
e a montagem de diretrios do Windows.
Na sequncia apresentaremos o SWAT, uma interface web para administrao do Samba.
Na etapa seguinte veremos o Servidor Primrio de Domnio ou Primary Domain Controller
(PDC), e como colocar o Samba para atuar como PDC, controlando as informaes sobre
usurios e autenticao para clientes Windows.

Captulo 10 - Servidor Samba

objetivos

Servidor Samba

213

Atividades prticas:
11 Configurao do servidor Samba;
11 Verificao do funcionamento do servidor Samba;
11 Configurao de uma mquina Windows para autenticar no Samba;
11 Adicionar e remover usurios;
11 Compartilhamento de diretrio;
11 Utilizao do SWAT.

Samba
11 Conjunto de aplicaes baseadas no protocolo Server Message Block (SMB).

11 Possibilita a comunicao com todas as estaes da rede que utilizam SMB:


22 Famlia Windows.
22 XENIX-Net.
22 IBM Lan Server.
22 3COM3 + OPEN.
O Samba um conjunto de aplicaes baseadas no protocolo Server Message Block (SMB),
possibilitando a comunicao com todas as estaes da rede que utilizam SMB, como
estaes WinXP, WinNT, Vista, Win7 e Win8. Outros Sistemas Operacionais que utilizam o
protocolo SMB: XENIX-Net (SCO UnixWare), IBM Lan Server e 3COMs3 + OPEN.
As ferramentas do Samba permitem que mquinas Linux compartilhem unidades de disco
e impressoras com servidores ou estaes Windows. Com o Samba, todas as mquinas
Linux de uma rede podem ser vistas como uma ou mais pastas lgicas para os usurios
do Windows. Uma mquina Windows utilizando TCP/IP e NetBEUI visualiza os recursos do
Samba em mquinas Linux da mesma maneira que em uma rede Windows. Com a ferramenta smbfs, as mquinas Linux podem se conectar aos recursos compartilhados em
mquinas Windows (diretrios e impressoras). Um cliente Linux visualiza um servidor de
arquivos SMB como um sistema de arquivos Linux.
11 Ferramentas Samba permitem que mquinas compartilhem unidades de disco e

Administrao de Sistemas Linux: Servios para Internet

impressoras, independente do Sistema Operacional.

214

11 Ferramenta smbfs.
22 Mquinas Linux podem usar os recursos compartilhados em mquinas Windows.

Terminologia
11 Server Message Block (SMB): protocolo de compartilhamento de arquivos e impressoras
da Microsoft;
11 Common Internet File System (CIFS): por volta de 1996, a Microsoft decidiu que o SMB
necessitava da palavra internet; ento, passou a ser chamado de CIFS;
11 Direct-Hosted: mtodo de prover compartilhamento de servios sob a porta 445/TCP,
usando apenas DNS para resoluo de nomes em vez de WINS;
11 Inter-Process Communication (IPC): mtodo para comunicar informaes especficas
entre programas;

11 Network Basic Input/Output System (NetBIOS): no um protocolo; um mtodo de


comunicao atravs de um protocolo existente, que controla as funes essenciais do
trfego de entrada/sada via rede. Deve ficar claro que NetBIOS um padro de transporte, no um protocolo;
11 NetBIOS Extended User Interface (NetBEUI): um protocolo, no um padro. No rotevel,
ou seja, o trfego no lado de um roteador ser incapaz de se comunicar com o outro lado;
11 NetBIOS over TCP (NBT): permite o uso continuado do trfego NetBIOS sobre TCP/IP.
Como resultado, nomes NetBIOS so semelhantes a endereos IP, e tipos de nomes
NetBIOS so conceitualmente equivalentes a portas TCP/IP. assim que acontece o
compartilhamento de arquivos e diretrios em Windows, que se baseiam em trs portas:
NetBIOS Name Service (nbname) via UDP porta 137, NetBIOS Datagram Service via UDP
porta 138 e NetBIOS Session Service (nbsession) via TCP porta 139. A resoluo de nomes
feita via WINS, broadcasts NetBIOS e DNS.

Samba e projetos relacionados


Projetos diretamente relacionados ao Samba:

11 Server Message Block File System (SMBFS).


22 Permite a montagem de compartilhamentos SMB.
Projetos diretamente relacionados ao Samba:
11 Common Internet File System Virtual File System (CIFS VFS).
22 Sucessor do SMBFS, provendo funcionalidades avanadas de sistemas de arquivos
de rede.
22 Inclui suporte a DFS.
22 Segurana por sesso de usurio.
22 Caching distribudo.
H dois projetos de sistemas de arquivos para Linux diretamente relacionados ao Samba:
SMBFS e CIFS VFS. Ambos esto disponveis no prprio kernel do Linux.
Server Message Block File System (SMBFS) permite que faamos a montagem de compartilhamentos SMB e tenhamos acesso como em qualquer outro diretrio, o que til se
desejamos montar sistemas de arquivos sem um servidor SMBFS.
Tradicionalmente, SMB usa porta 137 UDP (NetBIOS name service ou netbios-ns), porta
128 UDP (NetBIOS datagram service) e porta 139 TCP (NetBIOS session service).
Em geral, sesses SMB so estabelecidas na seguinte ordem:
11 TCP Connection: estabelecimento de conexo TCP 3-way handshake para a porta
11 NetBIOS Session Request: define o nome NetBIOS da mquina local e o nome do servidor a ser acessado;
11 SMB Negotiate Protocol: determina o protocolo a usar, que ser um dos seguintes:
PC Network Program 1.0 (Core) e Microsoft Networks 1.03 (Core Plus), apenas para o
modo de nvel de segurana de compartilhamento, entre outros;
11 SMB Session Startup: senhas so encriptadas (ou no) de acordo com um dos seguintes
mtodos: Null (nenhuma encriptao); Cleartext (nenhuma encriptao); LM e NTLM;
NTLM; NTLMv2;

Captulo 10 - Servidor Samba

139/TCP ou 445/UDP;

215

11 SMB Tree Connect: conexo a um nome compartilhado (por exemplo, \\servername\share),


conexo a um tipo de servio (por exemplo, IPC$ named pipe).
Common Internet File System Virtual File System (CIFS VFS) o sucessor para o SMBFS.
A inteno desse mdulo prover funcionalidades avanadas de sistemas de arquivos de
rede, incluindo suporte a Distributed File System (DFS) segurana por sesso de usurio,
caching distribudo seguro (oplock), entre outros.
H outras implementaes open source de clientes CIFS, como jCIFS Project, que prov um
toolkit SMB cliente escrito em Java.

Instalando o Samba
Pacotes:

11 samba-common: componentes comuns ao servidor e clientes.


11 Samba: componentes do servidor.
11 samba-client: para que um cliente Linux acesse uma mquina Windows.
Compilao:
11 necessrio especificar a localizao de sbm.conf.
11 Compile com make.
11 Verifique se os daemons smbd e nmbd esto rodando.
Muitas distribuies j incluem todos os pacotes Samba. Caso uma determinada distribuio
no possua tais pacotes, necessrio instal-los manualmente atravs de rpm ou apt-get.
Geralmente, so instalados trs pacotes:
11 samba-common: instala os componentes compartilhados tanto pelo pacote samba-client
quanto pelo pacote samba;
11 samba: instala os componentes do servidor;
11 samba-client: possibilita que um cliente Linux acesse uma mquina Windows.
A verso mais recente de Samba est disponvel no formato de cdigo-fonte. Aps executar o
download do cdigo-fonte, necessrio ler o arquivo Readme. O arquivo docs/Samba3-HOWTO.pdf
descreve como executar a instalao a partir do cdigo-fonte.

Administrao de Sistemas Linux: Servios para Internet

O prximo passo envolve a configurao do Samba de acordo com o seu Sistema Ope-

216

racional. Para configurar programas fonte de acordo com seu Sistema Operacional, ser
necessrio criar o script configure. Para cri-lo execute os seguintes comandos:

# cd samba-X.X.X/source3
# ./autogen.sh
Para montar os binrios, execute o programa ./configure. Isso vai configurar o Samba automaticamente para o seu sistema.

# ./configure
Para compilar, execute o comando make.

# make
Uma vez que a compilao ocorreu sem erro, execute o comando make install para instalar
os binrios e os manual do Samba.

# make install
Aps a instalao, necessrio verificar se os daemons smbd e nmbd esto rodando.
Vale ressaltar que o servidor Samba composto por dois ou trs daemons:
11 nmbd: manipula todos os pedidos de registro e resoluo de nomes e deve ser o primeiro comando inicializado como parte do processo de inicializao do Samba.
11 smbd: manipula todos os servios baseados em TCP/IP para operaes em arquivos e
impresso, alm de gerenciar autenticaes locais; deve ser inicializado aps nmbd.
11 winbindd: deve ser inicializado quando o Samba membro de um domnio Windows
NT4 ou ADS, e tambm quando o Samba tem relaes com outros domnios, com a
funo de verificar o arquivo smb.conf, procurando a presena dos parmetros idmap uid
e idmap gid.
Principais arquivos:

11 smbclient: cliente SMB para mquinas Linux.


11 smbstatus: mostra as conexes ativas na mquina local.
11 /etc/samba/smb.conf: arquivo de configurao do Samba.
11 smbcontrol: envia mensagens para os daemons nmbd, smbd e winbindd.
11 smbutil: interface de controle para requisies.
11 smbspool: envia um arquivo para uma impressora associada ao SMB.
11 smbpasswd: altera a senha dos usurios do Samba.
Os daemons esto localizados no diretrio /usr/sbin. Os daemons SMB /usr/sbin/smbd e
/usr/sbin/nmbd iniciam a partir do diretrio /etc/rc.d/init.d no Red Hat Linux.
A seguir, apresenta-se uma breve descrio dos principais arquivos em uma instalao
Samba. Os arquivos binrios so armazenados em /usr/bin.
11 smbclient: cliente SMB para mquinas Linux. Permite que uma mquina Linux acesse um
servidor SMB, atravs de uma interface do tipo FTP;
11 smbstatus: mostra as conexes ativas na mquina local;
11 /etc/samba/smb.conf: arquivo de configurao do Samba;
11 smbcontrol: envia mensagens para os daemons nmbd, smbd e winbindd;
11 smbutil: interface de controle para requisies;
11 smbspool: envia um arquivo para uma impressora associada ao SMB;
11 smbpasswd: altera a senha dos usurios do Samba.
Como testar o arquivo de configurao? Para validar o contedo de smb.conf, use o proSe no, dar uma mensagem de erro. Use o comando:

# testparm /etc/samba/smb.conf

Execute sempre esse teste, em situaes de mudanas de configurao do smb.conf.

Captulo 10 - Servidor Samba

grama testparm. Se testparm executar corretamente, listar todos os servios carregados.

217

Configurando o Samba
Parmetros globais.

11 Configurar variveis que o Samba utiliza.


11 Cada seo representa um compartilhamento no servidor.

Exemplo de smb.conf
[global]
workgroup = WKG
netbios name = MYNAME
[share1]
path = /tmp
[share2]
path = /my_shared_folder
comment = Some random les

Figura 10.1
Exemplo smb.conf.

Todas as sees do arquivo smb.conf iniciam com um cabealho de seo delimitado por
[] [global], [homes], [printers] etc. Na seo [global], so configuradas as variveis que o
Samba utiliza para definir a forma como devem ser compartilhados todos os recursos.
Cada seo em smb.conf representa um compartilhamento no servidor Samba. A seo
global especial, j que contm configuraes que se aplicam ao servidor Samba completo
e no a um compartilhamento particular.

Descrio dos principais parmetros


11 workgroup: o nome do grupo de trabalho Windows ou do nome do domnio WinNT.
Se o nome Grupo, um sistema Windows ver esse nome na rede;
11 server string: fornece uma descrio do servidor Samba que ser visvel a todas as
mquinas Windows. Escreva um texto que descreva o tipo de servidor que possumos;
11 printcap name: especifica onde est localizado o arquivo de definio de impressoras do
Linux. Todas as definies de impressoras no Linux podem ser encontradas nesse arquivo;

Administrao de Sistemas Linux: Servios para Internet

11 load printers: indica para o Samba que ele deve tornar as impressoras locais acessveis

218

para qualquer cliente SMB. Se esse parmetro est setado, no necessrio configurar
as impressoras individualmente.

Parmetros globais
11 workgroup.
11 server string.
11 printcap name.
11 load printers .
11 printing.
11 log file.
11 security.
11 dns proxy.

Descrio dos principais parmetros:


11 printing: seleciona o sistema de impresso utilizado; normalmente no necessrio
alterar o valor padro;
11 log file: indica o nome do arquivo que deve ser utilizado para armazenar as informaes de
log. Por padro, criado um arquivo de log para cada cliente que acessa o servidor Samba;
11 security: um dos parmetros mais importantes da seo Global. Ele indica como o
Samba deve administrar a autenticao dos clientes. Existem quatro variantes: share,
user, server e domain. Se for selecionado user, o servidor Samba faz uma requisio ao
cliente para fornecer um usurio e uma senha para autenticao. Essa soluo mais
adequada quando os usurios possuem o mesmo nome e senha, tanto no Windows
quanto no Linux. Se for selecionado share, o servidor Samba requisita uma senha para
cada recurso compartilhado. Se for selecionado server ou domain, o servidor Samba
requisita um usurio e uma senha do cliente, e faz a autenticao utilizando outro servidor SMB. Para isso, necessrio setar o parmetro password server, que indica o nome
do servidor SMB que deve ser utilizado para autenticao;
11 dns proxy: se estiver setado como yes, o daemon nmbd tentar tratar os nomes de
NetBIOS como nomes de domnios de internet, atravs do protocolo DNS. Normalmente,
essa opo fica desabilitada.

Seo [homes]
11 Permite compartilhar os diretrios home dos usurios automaticamente.

11 Ao se logar, um usurio Windows receber como seu diretrio home o diretrio compartilhado pelo Samba.
11 Permite aos usurios de ambas as plataformas, Linux e Windows, possurem apenas
um diretrio home, acessvel a ambos os sistemas.

Exemplo

Se um cliente tenta se conectar a um recurso compartilhado que no existe no arquivo smb.


conf, o Samba procurar pela seo [homes] de compartilhamento no seu arquivo de configurao. Se a seo existir, o nome do recurso compartilhado ser entendido como um nome de
usurio Linux, o qual ser usado para testar a sua existncia no banco de dados do servidor
Samba. Se existir, o Samba assume que o cliente um usurio Linux tentando se conectar ao
seu diretrio home no servidor.
Por exemplo, imagine que um computador cliente esteja se conectando a um servidor
Samba pela primeira vez, e tenta se conectar a um compartilhamento de nome [maria]. No
arquivo smb.conf no existe compartilhamento com esse nome, mas existe a seo [homes],
ento o Samba procura por maria no arquivo passwd do Linux e encontra o registro
maria. O Samba ento valida a senha informada pelo cliente, no arquivo passwd se ela no
estiver criptografada, ou no arquivo smbpasswd se senha criptografada estiver em uso. Se a

Captulo 10 - Servidor Samba

Figura 10.2
Exemplo da
seo homes.

[homes]
comment = Diretrios pessoais dos usurios
netbios name = MYNAME
browseable = no
writable = yes

senha informada estiver correta, ento o Samba sabe que ela tem direito de acesso e criar
um compartilhamento de nome [maria].
219

A seguir a configurao da seo [homes], que permite que os usurios Windows acessem
seus diretrios do Linux:

[homes]
comment = Diretrios pessoais dos usurios
browseable = no
writable = yes
A mquina Linux precisa fazer parte da LAN para que os usurios Windows possam acessar
seus diretrios compartilhados. Desta forma, um usurio local pode se conectar a um disco
rgido do servidor Samba pelo Windows Explorer.

Compartilhamento de um disco Linux

Alguns parmetros:
11 adminusers.
11 comment.
11 copy.
11 create mode.
11 browseable.
11 Entre muitos outros.

Exemplo 1

Exemplo 2

[public]
comment = Diretrio Pblico
path = /home/data
public = yes
writable = yes
printable = yes

[public]
comment = Diretrio Pblico
path = /home/data
public = yes
writable = yes
printable = no
write list = @grupo

Figura 10.3
Exemplos de seo
public.

Administrao de Sistemas Linux: Servios para Internet

A configurao do arquivo smb.conf para compartilhar um disco Linux relativamente simples.

220

11 O Exemplo 1 apresenta alguns parmetros de configurao de seo [public].


11 O Exemplo 2 mostra o que deve ser feito para tornar o diretrio acessvel a todos, mas
com permisso de escrita somente para um determinado grupo.
Alguns parmetros especficos dos compartilhamentos:
11 adminusers: lista de usurios que possuiro privilgios administrativos do compartilhamento;
11 browseable: parmetro booleano (yes, no) que indica se o compartilhamento ser
visvel na lista de compartilhamentos disponveis;
11 comment: informa uma descrio do compartilhamento;
11 copy v: permite clonar compartilhamentos, isto , o compartilhamento foi duplicado, e os
novos parmetros adicionados revogam os parmetros do compartilhamento que foi copiado;
11 create mode: define com quais permisses os arquivos sero criados no compartilhamento.

w
Para parmetros
adicionais, consulte
o site
http://www.samba.org

Como acessar o Windows do Linux


11 Duas maneiras.

11 Executando o programa smbclient.


11 Montando um diretrio lgico do Windows com um sistema de arquivos local.
11 Usando smbclient.
11 Para visualizar diretrios, servios e servidores disponveis no servidor.
11 Para acessar um recurso disponvel no servidor.
11 Para enviar mensagens para o servidor.
H duas maneiras de acessar dados de um servidor Windows a partir do Linux. Na primeira,
deve-se executar o programa smbclient, que possui uma interface FTP na linha de comando. Na
segunda pode-se montar um diretrio lgico do Windows com um sistema de arquivos local.
Antes de utilizar o smbclient, necessrio que a mquina Windows possua algum compartilhamento. Lembre-se de atualizar o arquivo /etc/hosts com os endereos IP e os nomes de
todas as mquinas da rede, caso a mquina no acesse um servidor DNS.
Com o smbclient, possvel visualizar os diretrios que so acessveis em um certo servidor,
alm dos servios disponveis, dos servidores acessveis e dos grupos de trabalho ou domnios visveis, da seguinte forma:

# smbclient -L <servidor>
Para acessar um recurso disponvel em um determinado servidor, utilize o seguinte comando:

# smbclient //<servidor>/<recursos> [<senha>]


Por exemplo, se desejar acessar uma pasta compartilhada em uma mquina Windows
chamada tunisia, a sintaxe :

# smbclient //tunisia/Documentos
O parmetro -M permite o envio de mensagens para o servidor. Sua sintaxe :

# smbclient -M <servidor>

Montagem de diretrios do Windows


necessrio que todas as ferramentas do Samba estejam instaladas, inclusive o

suporte a smbf.
Comandos:
11 Montagem:

11 Desmontagem:

umount <ponto de montagem>

Para acessar um servidor Windows de um cliente Linux, por montagem, necessrio que
todas as ferramentas do Samba estejam instaladas, e o kernel do Linux deve estar com o
suporte a smbfs compilado.

Captulo 10 - Servidor Samba

mount -t smbfs //<servidor>/<recurso> <ponto de montagem> <opes>

221

A sintaxe padro do comando mount :

# mount -t smbfs //tunisia/Documents /mnt/windocs


Tunisia o nome do servidor Windows e /mnt/windocs deve existir antes da execuo de
smbmount. O comando smbmount utiliza o comando mount com a opo -t smbfs para executar suas operaes.
tambm possvel especificar um usurio e uma senha:

# mount -t smbfs o username=usuario,password=123456 //tunisia/


Documents /mnt/windocs
Para desmontar um diretrio, pode-se utilizar o seguinte comando:

# umount <ponto de montagem>

Configurao do Samba com SWAT


Samba Web Administration Tool (SWAT).

11 Utilitrio de configurao que pode ser acessado, via web, no endereo


http://localhost:901
22 Basta fornecer a senha de root para acessar.
11 Logins e senhas devem ser os mesmos que os usurios utilizaro para se logar
no Windows.
O Samba pode ser configurado com o SWAT, um utilitrio de configurao acessvel via web,
no endereo http://127.0.0.1:901. Basta fornecer a senha de root para acess-lo.
Antes devem ser criados logins para todos os usurios que forem acessar o servidor; por sinal,
os logins e senhas devem ser os mesmos que os usurios utilizaro para se logar no Windows.
Ao abrir o SWAT, pode-se observar vrios links para a documentao disponvel sobre o
Samba, que pode ser consultada para obteno de detalhes sobre o sistema.
Samba Web Administration Tool (SWAT).

11 Terminadas as configuraes:

Administrao de Sistemas Linux: Servios para Internet

22 O servidor aparecer no ambiente de redes.


22 Os compartilhamentos podem ser acessados de acordo com as permisses que
tiverem sido configuradas.
22 Podem ser mapeados como unidades de rede.
Acesse primeiro a seo Password, onde devero ser cadastrados todos os usurios que
tero acesso s pastas compartilhadas atravs do Samba. Em seguida, acesse a seo
Globals, que engloba todas as configuraes de rede e de acesso.
Nas opes Workgroup e NetBios name, identifique o nome do computador e de seu respectivo grupo de trabalho.
Na seo Security, indique User, o que permitir definir os usurios que tero acesso
ao sistema.
A opo Hosts Allow deve incluir os endereos IP de todos os computadores que tero
permisso para acessar o servidor. Para liberar acesso a todos os IPs da rede, basta indicar a
primeira parte do IP (netid). A opo Hosts Deny, ao contrrio, especifica mquinas dentro do
escopo configuradas na opo Hosts Allow, que no tero permisso para acessar o servidor.
222

As pastas a serem compartilhadas com as estaes podem ser configuradas atravs da


seo Shares. Para criar um compartilhamento, basta escrever seu nome no campo no
topo da tela e clicar no boto Create Share. Depois de criado um compartilhamento,
escolha-o na lista e clique no boto Choose Share para configur-lo. O campo Path indica
qual pasta ser compartilhada.

Os usurios s tero permisso para acessar pastas que o login permite acessar.
Terminadas as configuraes, o servidor aparecer no ambiente de redes, como se fosse um
servidor Windows. Os compartilhamentos podem ser acessados de acordo com as permisses que tiverem sido configuradas e podem ser mapeados como unidades de rede, entre
outros recursos.

Servidor primrio de domnio


11 Ideia que simplifica tarefas administrativas da rede.

11 nico servidor armazena informaes sobre usurios e autenticao.


11 Perfis armazenados no controlador de domnio.
11 Controlador de domnio gerencia todas as requisies de autenticao.
A ideia de controlador de domnio primrio simplifica vrias tarefas administrativas da rede, pois
permite que um nico servidor armazene as informaes sobre os usurios de um domnio e
fornea autenticao para esses usurios. Os perfis dos usurios so armazenados no controlador de domnio, que gerencia todas as requisies de autenticao, permitindo que os usurios acessem diferentes recursos da rede, sem necessitar de mltiplas autenticaes.
As seguintes funcionalidades so implementadas quando se utiliza o Samba como Primary
Domain Controller (PDC):
11 Login no domnio para clientes NT e Windows;
11 Perfis de usurio;
11 Polticas de segurana do sistema.
A implementao de um PDC Samba pode ser dividida em duas fases:
1. Configurar o PDC Samba;
2. Criar as relaes de confiana das mquinas e adicionar os clientes ao domnio.

Configurando o PDC Samba


O primeiro passo para criar um PDC funcional entender os parmetros necessrios no
remos todos os parmetros. No entanto, vlido ressaltar alguns detalhes:
11 necessrio que as senhas sejam criptografadas (encrypt passwords = yes);
11 O servidor precisa suportar logins de domnio;
11 O servidor necessita do compartilhamento chamado [netlogon];
11 O servidor deve ser o browser mestre do domnio para que os clientes Windows possam
identific-lo como controlador de domnio;
necessrio utilizar o parmetro global domain admin group para definir os usurios e

Captulo 10 - Servidor Samba

smb.conf. Todos os parmetros so encontrados nas man pages do Samba. No detalha-

grupos considerados administradores do domnio.


223

Criao de contas de relao de confiana.

11 Conta utilizada para autenticar uma mquina cliente no servidor.


22 Senha serve para que a mquina se comunique com o controlador de domnio.
Num PDC, cada conta armazenada em duas partes.
11 Uma conta do Samba, armazenada em:
22 smbpasswd
11 Uma conta do Linux, armazenada em:
22 /etc/passwd

Criao das contas de relao de confiana


Uma conta de relao de confiana uma conta utilizada para autenticar uma mquina
cliente (em vez de um usurio) no servidor.
A senha da conta de relao de confiana serve para que a mquina se comunique em
segurana com o controlador de domnio, evitando que uma mquina no autorizada com o
mesmo nome de NetBIOS se adicione ao domnio e obtenha acesso s contas dos usurios.
Os clientes utilizam contas de relao de confiana.
Um PDC Samba armazena cada conta em duas partes:
11 Uma conta do Samba, armazenada no arquivo smbpasswd;
11 Uma conta do Linux, normalmente armazenada em /etc/passwd.
Dois modos de criao:

11 Manual:
22 Deve-se criar uma conta Linux e uma conta no Samba.
11 Dinmica:
22 necessrio configurar:
33 smb.conf
22 Adicionar o parmetro:

Administrao de Sistemas Linux: Servios para Internet

33 add user script


A adio de clientes ao domnio varia de acordo com a verso do Windows.
H duas maneiras de criar contas de relao de confiana:
11 Criao manual: cria normalmente a conta do Samba e a conta Linux;
11 Criao dinmica: cria a conta de relao de confiana no momento em que o cliente
adicionado ao domnio.
A criao dinmica mais recomendada por motivos de segurana.

Criao manual de contas de relao de confiana


Primeiro, necessrio criar uma conta Linux em /etc/passwd, o que pode ser feito utilizando
o comando useradd. Por exemplo:

# useradd -g 100 -d /dev/null -c machine nickname -s /bin/false


machine_name$
# passwd -1 machine_name$

224

Essa entrada no arquivo /etc/passwd lista o nome da mquina com um caractere $ adicionado no final; no possui senha e shell. Por exemplo, a mquina chamada tunisia possuiria,
nesse caso, as seguintes caractersticas:

tunisia$:x:505:501:machine nickname:/dev/null:/bin/false
Onde machine nickname pode ser uma descrio que identifica a mquina cliente e machine_
name indica o nome NetBIOS da mquina cliente que ser adicionada ao domnio. O caractere $ deve ser adicionado ao final do nome NetBIOS, ou o Samba no reconhecer a conta
como de relao de confiana.
Uma vez que a conta Linux esteja criada, o prximo passo criar uma conta no Samba, com
o comando smbpasswd:

# smbpasswd -a -m machine_name

Criao dinmica de contas de relao de confiana


Essa criao feita atravs da configurao do servidor Samba, de modo que ele crie as
contas quando necessrio, no momento em que mquinas clientes so adicionadas ao
domnio. Para tanto, necessrio adicionar o parmetro add user script no arquivo de
configurao smb.conf.
A seguir apresentado um exemplo de script para a criao de usurio para um sistema Red Hat:

[global]
...
add user script = /usr/sbin/useradd -d /dev/null -g 100 -s /bin/false
-M %u

Adio de clientes no domnio


Esse processo varia de acordo com a verso do Windows. No Windows 2000, por exemplo,
quando um usurio faz uma requisio para adicionar uma mquina ao domnio, o Windows
pede uma conta e uma senha que tenham privilgios para adicionar clientes no domnio.
Uma conta de administrador do Samba deve ser informada.
No Windows NT, por outro lado, se a conta de relao de confiana foi criada manualmente
no servidor Samba, adicione o nome do domnio em Identification Changes, mas no
marque a opo Create a Computer Account in the Domain, uma vez que nesse caso a
conta j criada utilizada para adicionar a mquina no domnio. Se a conta de relao de
confiana criada dinamicamente, adicione o nome do domnio no menu Identification

Captulo 10 - Servidor Samba

Changes e selecione Create a Computer Account in the Domain.

225

226

Administrao de Sistemas Linux: Servios para Internet

Roteiro de Atividades 10
Atividade 10.1 Configurao do servidor Samba
Esta atividade deve ser feita pelo cliente Windows. importante que tanto a mquina
cliente quanto o servidor estejam na mesma rede. Como sugesto, vamos considerar que
a mquina virtual Windows est com o endereo IP 192.168.1.3 e o servidor Linux, com o
endereo IP 192.168.1.1.
Samba um servidor e um conjunto de ferramentas que permite que mquinas Linux
e Windows se comuniquem entre si, compartilhando servios (arquivos, diretrios e
impresso) atravs dos protocolos Server Message Block (SMB) e Common Internet File
System (CIFS), equivalentes implementao NetBEUI no Windows. O Samba uma das
solues em ambientes Unix capaz de interligar redes heterogneas.

Instalando o Samba
Efetue a instalao do servidor Samba conforme orientao do
instrutor:
Durante a instalao podero ser feitas as seguintes perguntas:
P: Nome do Domnio/Grupo de Trabalho
R: EMPRESA
P: Modificar smb.conf para usar as configuraes WINS fornecidas
via DHCP?
R: No
Verificao da verso do Samba:
#smbd -V

Configurando o LDAP
a. Adicionar o schema do samba base de dados do LDAP:

Copiar o arquivo /usr/share/doc/samba-doc/examples/LDAP/samba.


schema.gz para o diretrio de schemas do ldap.
# cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/

Descompactar o arquivo
#gunzip /etc/ldap/schema/samba.schema.gz
Parando o servio do ldap
# /etc/init.d/slapd stop

Captulo 10 - Roteiro de Atividades

ldap/schema

227

b. Criar o arquivo /root/ldap_schema.conf contendo as linhas a seguir:

include /etc/ldap/schema/core.schema
include /etc/ldap/schema/collective.schema
include /etc/ldap/schema/corba.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/duaconf.schema
include /etc/ldap/schema/dyngroup.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/java.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/openldap.schema
include /etc/ldap/schema/ppolicy.schema
include /etc/ldap/schema/samba.schema
c. Criar o diretrio /tmp/output_ldif

# mkdir /tmp/output_ldif
d. Utilize o comando slapcat para converter os arquivos de schema.

# slapcat f /root/ldap_schema.conf F /tmp/output_ldif n0 s


cn={12}samba,cn=schema,dc=config > /root/samba.ldif
e. Edite o arquivo /root/samba.ldif conforme a seguir:

No topo do arquivo altere:


dn: cn={12}samba,cn=schema,cn=config

Administrao de Sistemas Linux: Servios para Internet

...

228

cn: {12}samba
Para:
dn: cn=samba,cn=schema,cn=config
...
cn: samba
Remova as ltimas linhas do arquivo:
structuralObjectClass: olcSchemaConfig
entryUUID: 8c5a75ca-963f-187d-acff-2f64fd123c95
creatorsName: cn=config
createTimestamp: 20080827045234Z

entryCSN: 20120523452234.309955Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20120527045345Z
f. Adicione o schema base do LDAP:

# ldapadd -Y EXTERNAL -H ldapi:/// -f /root/samba.ldif


g. Crie o arquivo chamado /root/samba_index.ldif contendo os ndices que devem ser
criados para o funcionamento do Samba.

dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: uidNumber eq
olcDbIndex: gidNumber eq
olcDbIndex: loginShell eq
olcDbIndex: memberUid eq,pres,sub
olcDbIndex: uniqueMember eq,pres
olcDbIndex: sambaSID eq
olcDbIndex: sambaPrimaryGroupSID eq
olcDbIndex: sambaGroupType eq
olcDbIndex: sambaSIDList eq
olcDbIndex: sambaDomainName eq
olcDbIndex: default sub
h. Utilize o comando ldapmodify para alterar os ndices da base de dados.

# ldapadd -Y EXTERNAL -H ldapi:/// -f /root/samba_index.ldif

Configurando o smbldap-tools
Obtendo o SID

Anote este numero, pois vamos precisar dele no futuro


Acesso o diretrio do smbldap-tools
# cd /etc/smbldap-tools
Copiar os modelos dos arquivos de configurao
#cp /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz .
#cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf .

Captulo 10 - Roteiro de Atividades

# net getlocalsid

Descompactar o arquivo smbldap.conf


229

# gunzip smbldap.conf.gz
Configurao smbldap.conf
SID=S-1-5-21-1669739004-1474045143-3185410112
sambaDomain=EMPRESA
slaveLDAP=192.168.0.1
slavePort=389
masterLDAP=192.168.0.1
masterPort=389
ldapTLS=0
ldapSSL=0
verify=none
suffix=dc=empresa,dc=com,dc=br
usersdn=ou=People,${suffix}
computersdn=ou=Hosts,${suffix}
groupsdn=ou=Group,${suffix}
idmapdn=ou=Idmap,${suffix}
sambaUnixIdPooldn=sambaDomainName=${sambaDomain},${suffix}
scope=sub
hash_encrypt=SSHA
crypt_salt_format=%s
userLoginShell=/bin/bash
userHome=/home/%U

Administrao de Sistemas Linux: Servios para Internet

userHomeDirectoryMode=700
userGecos=System User
defaultUserGid=513
defaultComputerGid=515
skeletonDir=/etc/skel
defaultMaxPasswordAge=45
userSmbHome=\\SERVIDOR\%U
userProfile=\\SERVIDOR\%U\profile
userHomeDrive=H:
userScript=netlogon.bat
mailDomain=empresa.com.br
230

with_smbpasswd=0
smbpasswd=/usr/bin/smbpasswd
with_slappasswd=0
slappasswd=/usr/sbin/slappasswd
Configurao smbldap_bind.conf
slaveDN=cn=admin,dc=empresa,dc=com,dc=br
slavePw=rnpesr
masterDN=cn=admin,dc=empresa,dc=com,dc=br
masterPw=rnpesr
Popule o banco do ldap com as informaes novas
# smbldap-populate

Configurando o Samba
[global]
workgroup = EMPRESA
netbios name = servidor
server string = %h server
dns proxy = no

log level = 2
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d

security = user

encrypt passwords = true


passdb backend = ldapsam:ldap://192.168.1.1/
obey pam restrictions = no
unix password sync = no
ldap passwd sync = yes
passwd program = /usr/sbin/smbldap-passwd %u

Captulo 10 - Roteiro de Atividades

admin users = root

passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\


231

spassword:* %n\n *password\supdated\ssuccessfully* .


pam password change = yes

ldap ssl = no
ldap admin dn = cn=admin,dc=empresa,dc=com,dc=br
ldap suffix = dc=empresa,dc=com,dc=br
ldap group suffix = ou=Group
ldap user suffix = ou=People
ldap machine suffix = ou=Hosts
ldap idmap suffix = ou=Idmap
ldap delete dn = Yes
add user script = /usr/sbin/smbldap-useradd -m %u
add machine script = /usr/sbin/smbldap-useradd -t 0 -w %u
add group script = /usr/sbin/smbldap-groupadd -p %g
add user to group script = /usr/sbin/smbldap-groupmod -m %u %g
delete user script = /usr/sbin/smbldap-userdel %u
delete group script = /usr/sbin/smbldap-groupdel %g
delete user from group script = /usr/sbin/smbldap-groupmod -x %u
%g
set primary group script = /usr/sbin/smbldap-usermod -g %g %u
domain master = yes
domain logons = yes

Administrao de Sistemas Linux: Servios para Internet

enable privileges = yes

232

logon path = \\%N\%U\profile


logon home = \\%N\%U
logon script = netlogon.bat
[homes]
comment = Home Directories
browseable = no
read only = no
create mask = 0700
directory mask = 0700
valid users = %S

[netlogon]
comment = Network Logon Service
path = /home/samba/netlogon
guest ok = yes
browseable = no
[profiles]
comment = Users profiles
path = /home/samba/profiles
guest ok = no
browseable = no
create mask = 0600
directory mask = 0700
[printers]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
guest ok = no
read only = yes
create mask = 0700
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes

Verificar as configuraes com o comando testparm


# testparm
Criar o diretorio /home/samba/netlogon
# mkdir p /home/samba/netlogon
Criar o diretorio /home/samba/profiles
# mkdir p /home/samba/profiles

Captulo 10 - Roteiro de Atividades

guest ok = no

# chmod 777 /home/samba/profiles


233

Armazenar a senha do LDAP


# smbpasswd w rnpesr
Reiniciar o servio do samba
# /etc/init.d/samba restart
Criar o usurio root do samba
# smbpasswd a root

Atividade 10.2 Testando o funcionamento do Samba


1. Adicione o usurio alunosmb no LDAP;
2. Adicione a estao Windows utilizando os scripts do smbldap-tools.

Atividade 10.3 Windows no domnio do Samba


Para esta atividade o aluno dever iniciar sua mquina virtual Windows e certificar-se de que
ela est com o endereo IP 192.168.1.3.
1. Faa o login como administrador;
2. Clique em Iniciar > Painel de Controle > Sistema e Segurana > Sistema >
Configuraes Avanadas de Sistema.
3. Na janela que se abrir, clique sobre a aba Nome do Computador.
4. Clique sobre o boto Alterar.
5. Marque a opo Membro de Domnio.
6. Informe o nome do domnio do samba: EMPRESA.
7. Clique sobre o boto OK e aguarde.
8. Entre com o login e senha do usurio root do Samba.
9. Clique em OK e aguarde a mensagem de boas-vindas.

Administrao de Sistemas Linux: Servios para Internet

10. Reinicie o Windows e faa o login no domnio EMPRESA com o usurio alunosmb.

234

Atividade 10.4 Compartilhamentos


1. Crie um o diretrio /home/dados e utilize o Samba para compartilh-lo com os usurios
cadastrados em seu sistema. O nome do compartilhamento dever ser [dados];
2. Cadastre um novo usurio no samba chamado alunosmb2 e realize o login na
estao Windows;
3. Com o usurio alunosmb2m, acesse o compartilhamento \\servidor\dados, grave um
arquivo com a data atual e faa o logout do Windows;
4. Acesse a mquina Windows com o usurio alunosmb e verifique se o arquivo criado pelo
usurio alunosmb2 est disponvel no compartilhamento;
5. Crie um script para mapear automaticamente o compartilhamento [dados] na unidade M:
sempre que um usurio efetuar o logon no domnio.

Atividade 10.5 Excluindo usurios


Remova os usurios alunosmb e alunosmb2, criados nas atividades anteriores. No se
esquea de verificar se foram removidos tanto do LDAP quando do Samba.

Atividade 10.6 Conhecendo o SWAT


SWAT uma interface web para configurao. Uma grande vantagem do SWAT permitir a configurao remota de um servidor Samba, j que s necessrio acessar a mquina pela internet.
1. Verifique se o SWAT est instalado no servidor.
2. Para habilitar o SWAT, crie o arquivo /etc/xinetd.d/swat conforme abaixo:

service swat {
port = 901
socket_type = stream
wait = no
only_from = 192.168.1.1
user = root
server = /usr/sbin/swat
log_on_failure += USERID
disable = no
}

Captulo 10 - Roteiro de Atividades

3. No servidor Samba, abra o navegador e acesse o endereo: http://localhost:901

235

236

Administrao de Sistemas Linux: Servios para Internet

Bibliografia
11 ARKILLS, Brian. LDAP Directories Explained An Introduction and Analysis.
Addison-Wesley, 2003.
11 CHIN, Liou Kuo. Rede Privada Virtual VPN. News Generation. Boletim
bimestral sobre tecnologia de redes. Rede Nacional de Ensino e Pesquisa
(RNP). Volume 2, nmero 8, 1998.
11 Documentao de Domnios Virtuais Apache:
http://httpd.apache.org/docs/2.2/vhosts/
11 Documentao de Mdulos Apache: http://modules.apache.org
11 Documentao Oficial Apache: http://www.apache.org/docs
11 FERREIRA, Rubem E. Linux Guia do Administrador do Sistema. Rio de
Janeiro: Editora Novatec, 2003.
11 FILHO, Joo Eriberto Mota. Descobrindo o Linux. 2 ed. Rio de Janeiro:
Editora Novatec, 2007.
11 HILDEBRANDT, Ralf. Postfix Start of the Art Message Transport. No Starch
Press, 2005.
11 KUROSE, James F.; ROSS, Keith W. Redes de Computadores e a Internet.
Pearson Addison-Wesley, 2006.
11 LANGFELDT, N. DNS Howto: http://www.tldp.org/HOWTO/DNS-HOWTO.html
11 LAUREANO, Marcos. Mquinas virtuais e emuladores: conceitos, tcnicas
e aplicaes. So Paulo: Novatec, 2006.
11 LIMA, Joo P. Administrao de Redes Linux. Editora Terra, 2003.
11 Linux Magazine: http://www.linux-magazine.com/w3/issue/86/Kernel_
Based_Virtualization_With_KVM.pdf
11 LIU, C.; ALBITZ, P. DNS & BIND. 5 ed. O Reilly Media, 2006.
11 MARCELO, Antnio. Squid Configurando o Proxy para Linux. Brasport, 2006.

11 NFSv4: www.nfsv4.org
11 OpenLDAP: http://www.openldap.org
11 Openswan: http://www.openswan.org

Bibliografia

11 NFS Linux: nfs.sourceforge.net/nfs-howto

237

11 PINTO, L.; CESARIO M.; Monteiro. M. Cache: melhor aproveitamento dos


recursos na Internet. Boletim bimestral sobre tecnologia de redes da Rede
Nacional de Ensino e Pesquisa (RNP). Volume 1, nmero 2, 1997.
11 RFC 1034 Domain names: concepts and facilities
11 RFC 1035 Domain names: implementation and specification
11 RFC 1661 The Point-to-Point Protocol (PPP)
11 RFC 1939 Post Office Protocol (POP3) Version 3
11 RFC 2131 Dynamic Host Configuration Protocol
11 RFC 2132 DHCP Options and BOOTP Vendor Extensions
11 RFC 2616 Hypertext Transfer Protocol: HTTP/1.1
11 RFC 3396 Encoding Long Options in the Dynamic Host Configuration
Protocol (DHCPv4)
11 RFC 3501 IMAPv4 Internet Message Access Protocol Version 4rev1
11 RFC 3947 Negotiation of NAT-Traversal in the IKE
11 RFC 4251 The Secure Shell (SSH) Protocol Architecture
11 RFC 4510 Lightweight Directory Access Protocol (LDAP): Technical
Specification Road Map
11 RFC 4511 Lightweight Directory Access Protocol (LDAP): The Protocol
11 RFC 4519 Lightweight Directory Access Protocol (LDAP): Schema for User
Applications
11 RFC 765 File Transfer Protocol (FTP)
11 RFC 821 Simple Mail Transfer Protocol (SMTP)
11 RFC 854 Telnet Protocol Specification
11 RFC 855 Telnet Option Specifications
11 RICCI, Bruno. Squid Soluo definitiva. Rio de Janeiro: Cincia Moderna, 2005.
11 Samba Project: http://www.samba.org

Administrao de Sistemas Linux: Servios para Internet

11 Squid: http://www.squid-cache.org

238

11 Squirm: http://squirm.foote.com.au
11 TANENBAUM, Andrew S.; STEEN, Maarten Van. Sistemas Distribudos:
princpios e paradigmas. 2 edio. Editora Pearson, 2010.
11 TERPSTRA, J. Samba-3 by Example: http://us4.samba.org/samba/docs
11 The IMAP Connection: http://www.imap.org
11 The Postfix Homepage: http://www.postfix.org
11 TS, Jay; ECKSTEIN, Robert; COLLIER-BROWN, David. Using Samba. 2 ed.
11 VERNOOIJ, R.; TERPSTRA, J.; CARTER, G. The Official Samba-3 Howto and
Reference Guide. http://us4.samba.org/samba/docs
11 http://libvirt.org

11 http://pic.dhe.ibm.com/infocenter/lnxinfo/v3r0m0/topic/liaat/
liaatbestpractices_pdf.pdf
11 http://pubs.vmware.com/vsphere-51/index.jsp
11 http://technet.microsoft.com/en-us/windowsserver/dd448604
11 http://us4.samba.org/samba/docs
11 http://wiki.qemu.org/Manual
11 http://www.gta.ufrj.br/ensino/CPE758/artigos-basicos/cap4-v2.pdf
11 http://www.gta.ufrj.br/grad/08_1/virtual/artigo.pdf
11 http://www.juliobattisti.com.br/artigos/windows/tcpip_p9.asp
11 http://www.linux-kvm.org/
11 http://www.rootlinux.com.br/documentos/downloads/apostila-dns.pdf
11 http://www.tldp.org/HOWTO/DHCP/index.html
11 http://www.tldp.org/HOWTO/DNS-HOWTO.html
11 http://www.xen.org/support/documentation.html
11 https://access.redhat.com/site/documentation/pt-BR/Red_Hat_Network_

Bibliografia

Satellite/5.4/html/Reference_Guide/ch-virtualization.html

239

240

Administrao de Sistemas Linux: Servios para Internet

Eduardo Lobo Analista de Informtica no


Ministrio Pblico do Trabalho (MPT) e
Professor dos Cursos de TI da Universidade Catlica de Braslia. Engenheiro
Mecnico graduado pela Universidade
Federal de Uberlndia e Mestre em
Cincia da Computao pela Universidade Federal de Santa Catarina, Florianpolis, 2001. Atuou em
grandes empresas no perodo de 1997-2000, como Analista de
TI para o governo brasileiro em 2001, e como Coordenador dos
Cursos de Ps-Graduao Lato Sensu em Redes de Computadores da Universidade Catlica de 2003 a 2005, e de Tecnologia em
Segurana da Informao (TSI) de 2007 a 2009. Participou do
Projeto de Pesquisa CESMIC/UCB de 2003 a 2008. Atualmente
administra o datacenter e a rede de dados/voz do MPT. reas de
interesse incluem: redes de computadores, storage e sistemas
baseados em software livre.
Wagner Vieira Lo tem 25 anos de experincia na rea de TI, atuando como Analista de Suporte e em Computao de
Alto Desempenho, com foco em sistemas
operacionais Unix/Linux. Possui graduao em Matemtica pela Faculdade de
Humanidades Pedro II, com Ps-Graduao em Gesto da Inovao pelo LNCC/UCP. Atualmenteocupa
o cargo deCoordenador de Tecnologia da Informao do Laboratrio Nacional de Computao Cientfica e de Coordenador
Administrativo do Ponto de Presena da RNP no Rio de Janeiro.
Professor do Instituto Superior de Tecnologia da Informao de
Petrpolis, IST e da Escola Superior de Redes da RNP, nas reas
de Segurana da Informao e Sistemas Operacionais.
Bruno Alves Fagundes tecnlogo em
Tecnologia da Informao e da Computao pelo Instituto Superior de
Tecnologia (2007) e especialista em
Segurana de Redes pela Universidade
Estcio de S (2011). Tem experincia
em administrao de servidores Linux,
gerenciamento de usurio, implementao e gerncia de
servios de rede, clusters, segurana de redes, shell script,
PHP, Perl. Atualmente colaborador do LNCC, onde trabalha
na administrao dos servidores e clusters do Laboratrio de
Bioinformtica (LABINFO), provendo infraestrutura para a
realizao de pesquisas e processamento massivo de dados.
Francisco Marcelo M. Lima certificado Project Management Professional
(PMP) e Modulo Certified Security
Officer (MCSO), Mestre em Engenharia
Eltrica pela Universidade de Braslia
(2009), Mestre em Liderana pela Universidade de Santo Amaro (2007) e ps-graduado em Segurana de Redes de
Computadores pela Universidade Catlica de Braslia (2003).
Atualmente exerce as funes de Coordenador dos Cursos de
Redes de Computadores e Segurana da Informao do IESB,
e de Analista em TI do MPOG cedido para a Controladoria-Geral da Unio/PR. Possui mais de 15 anos de experincia na
rea de Cincia da Computao, com nfase em Segurana da
Informao, Redes e Construo de Software.

Eduardo Lobo Analista de Informtica no


Ministrio Pblico do Trabalho (MPT) e
Professor dos Cursos de TI da Universidade Catlica de Braslia. Engenheiro
Mecnico graduado pela Universidade
Federal de Uberlndia e Mestre em
Cincia da Computao pela Universidade Federal de Santa Catarina, Florianpolis, 2001. Atuou em
grandes empresas no perodo de 1997-2000, como Analista de
TI para o governo brasileiro em 2001, e como Coordenador dos
Cursos de Ps-Graduao Lato Sensu em Redes de Computadores da Universidade Catlica de 2003 a 2005, e de Tecnologia em
Segurana da Informao (TSI) de 2007 a 2009. Participou do
Projeto de Pesquisa CESMIC/UCB de 2003 a 2008. Atualmente
administra o datacenter e a rede de dados/voz do MPT. reas de
interesse incluem: redes de computadores, storage e sistemas
baseados em software livre.

Bruno Alves Fagundes tecnlogo em


Tecnologia da Informao e da Computao pelo Instituto Superior de
Tecnologia (2007) e especialista em
Segurana de Redes pela Universidade
Estcio de S (2011). Tem experincia
em administrao de servidores Linux,
gerenciamento de usurio, implementao e gerncia de
servios de rede, clusters, segurana de redes, shell script,
PHP, Perl. Atualmente colaborador do LNCC, onde trabalha
na administrao dos servidores e clusters do Laboratrio de
Bioinformtica (LABINFO), provendo infraestrutura para a
realizao de pesquisas e processamento massivo de dados.
Francisco Marcelo M. Lima certificado Project Management Professional
(PMP) e Modulo Certified Security
Officer (MCSO), Mestre em Engenharia
Eltrica pela Universidade de Braslia
(2009), Mestre em Liderana pela Universidade de Santo Amaro (2007) e ps-graduado em Segurana de Redes de
Computadores pela Universidade Catlica de Braslia (2003).
Atualmente exerce as funes de Coordenador dos Cursos de
Redes de Computadores e Segurana da Informao do IESB,
e de Analista em TI do MPOG cedido para a Controladoria-Geral da Unio/PR. Possui mais de 15 anos de experincia na
rea de Cincia da Computao, com nfase em Segurana da
Informao, Redes e Construo de Software.

e Pesquisa qualificada como


uma Organizao Social (OS),
sendo ligada ao Ministrio da
Cincia, Tecnologia e Inovao
(MCTI)

responsvel

pelo

LIVRO DE APOIO AO CURSO

Programa Interministerial RNP,

O curso ensina a projetar, instalar, configurar e disponibilizar os principais servios para internet em uma rede
TCP/IP. Apresenta os conceitos associados a cada um dos
servios, e a instalao e configurao do KVM como base
para o ambiente de virtualizao. Aborda a autenticao
nos servios com LDAP, com apoio intensivo de atividades prticas.
Este livro inclui os roteiros das atividades prticas e o contedo dos slides apresentados em sala de aula, apoiando
profissionais na disseminao deste conhecimento em
suas organizaes ou localidades de origem.

Administrao de Sistemas Linux Servios para Internet

Wagner Vieira Lo tem 25 anos de experincia na rea de TI, atuando como Analista de Suporte e em Computao de
Alto Desempenho, com foco em sistemas
operacionais Unix/Linux. Possui graduao em Matemtica pela Faculdade de
Humanidades Pedro II, com Ps-Graduao em Gesto da Inovao pelo LNCC/UCP. Atualmenteocupa
o cargo deCoordenador de Tecnologia da Informao do Laboratrio Nacional de Computao Cientfica e de Coordenador
Administrativo do Ponto de Presena da RNP no Rio de Janeiro.
Professor do Instituto Superior de Tecnologia da Informao de
Petrpolis, IST e da Escola Superior de Redes da RNP, nas reas
de Segurana da Informao e Sistemas Operacionais.

A RNP Rede Nacional de Ensino

Administrao de
Sistemas Linux

Servios para
Internet
Eduardo Lobo
Wagner Vieira Lo
Bruno Alves Fagundes
Francisco Marcelo M. Lima

que conta com a participao dos


ministrios da Educao (MEC), da
Sade (MS) e da Cultura (MinC).
Pioneira no acesso Internet no
Brasil, a RNP planeja e mantm a
rede Ip, a rede ptica nacional
acadmica de alto desempenho.
Com Pontos de Presena nas
27 unidades da federao, a rede
tem mais de 800 instituies
conectadas. So aproximadamente
3,5 milhes de usurios usufruindo
de uma infraestrutura de redes
avanadas para comunicao,
computao e experimentao,
que contribui para a integrao
entre o sistema de Cincia e
Tecnologia, Educao Superior,
Sade e Cultura.

Ministrio da
Cultura
Ministrio da
Sade
Ministrio da
Educao
ISBN 978-85-63630-22-3

9 788563 630223

Ministrio da
Cincia, Tecnologia
e Inovao

Você também pode gostar