Sei sulla pagina 1di 220

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.

uma Organizao Social (OS),


sendo ligada ao Ministrio da
Cincia, Tecnologia e Inovao
(MCTI)

responsvel

pelo

Programa Interministerial RNP,

LIVRO DE APOIO AO CURSO

Andr Ramos Carneiro possui graduao em Tecnlogo em Tecnologia da


Informao e Comunicao pelo
Instituto Superior de Tecnologia em
Cincia da Computao (2006). Trabalha
com suporte Linux desde 2005 e
atualmente Tecnologista do Laboratrio
Nacional de Computao Cientfica, onde trabalha com
administrao de servidores, gerncia de contas de usurios,
implementao de novos servios, suporte a plataformas de
processamento de alto desempenho, compilao de aplicaes cientficas, administrao de storage e backup. Tem
experincia na rea de Cincia da Computao, com nfase em
Computao de Alto Desempenho, atuando principalmente
nos seguintes temas: previso numrica de tempo, processamento paralelo, aplicaes cientficas e I/O paralelo.

e Pesquisa qualificada como

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.

Administrao de Sistemas Linux Servios para Internet

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.

A RNP Rede Nacional de Ensino

Administrao de
Sistemas Linux

Servios para
Internet
Wagner Vieira Leo
Bruno Alves Fagundes
Andr Ramos Carneiro

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-55-1

Ministrio da
Cincia, Tecnologia
e Inovao

9 788563 630551

ads4.capa-NPE-V3.0.0.indd 1

27/04/2016 14:06:54

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
Wagner Vieira Leo
Bruno Alves Fagundes
Andr Ramos Carneiro

Administrao de
Sistemas Linux:

Servios para
Internet
Wagner Vieira Leo
Bruno Alves Fagundes
Andr Ramos Carneiro

Rio de Janeiro
Escola Superior de Redes
2016

Copyright 2016 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 Nacional

Leandro Marcos de Oliveira Guimares


Edio
Lincoln da Mata
Reviso Tcnica
Bruno Alves Fagundes
Coordenao Acadmica de Administrao de Sistemas
Renato Duarte
Equipe ESR (em ordem alfabtica)
Adriana Pierro, Alynne Pereira, Celia Maciel, Derlina Miranda, Edson Kowask,
Elimria Barbosa, Evellyn Feitosa, Felipe Nascimento, Lourdes Soncin, Luciana Batista,
Luiz Carlos Lobato e Yve Marcial.
Capa, projeto visual e diagramao
Tecnodesign
Verso
3.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
Lo, Wagner Vieira

Administrao de sistemas Linux: servios para internet / Wagner Vieira Lo ... [et. al.]

3. ed. Rio de Janeiro: RNP/ESR, 2016.

216 p. : il. ; 27,5 cm.

ISBN 978-85-63630-55-1


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 ESRxi
A quem se destinaxii
Convenes utilizadas neste livroxiii
Permisses de usoxiii
Comentrios e perguntasxiv
Sobre os autoresxiv

1. DNS
Introduo1
Domain Name Service (DNS)2
Por que utilizar DNS?2
Definies4
Domnio4
Zonas de autoridade5
Exerccio de fixao 1 DNS authoritative answer6
Registro de recursos6
Mapeamento direto e reverso9
Resolver (resolvedor): cliente10
Servidor DNS11
Tipos de servidores DNS11
Servidores raiz DNS13
Estrutura do DNS no Linux13
iii

Arquivo de configurao named.conf14


Arquivos de mapas da rede17
Exemplo de arquivo de mapa de rede18
Arquivo resolv.conf19
Exerccio de fixao 2 Servidor de DNS Cache19
Delegao de domnios20
Servio em CHROOT21
DNS com IPv621
DNSSEC23
Implementao do DNSSEC25
Exerccio de fixao 3 DNSSec26
Domnios virtuais26
Testando o servidor DNS27
Boas prticas para administrao do DNS27

2. NFS
Network File System (NFS)29
Instalando e configurando um servidor NFS30
Exerccio de fixao 1 Instale o servidor NFS30
Iniciando os servios NFS33
Pr-requisitos 33
Iniciando o portmapper 33
Verificando a execuo do NFS34
Configurao de cliente NFS35
Montagem de sistemas de arquivos NFS em tempo de boot36
NFS sobre TCP36
NFS sncrono versus assncrono37
Segurana e NFS38
NFS e segurana: portmapper39

3. Servidor LDAP
Introduo41
Servios de diretrio41
Sem servio de diretrios42
Com servio de diretrio42
LDAP43
Funcionamento do LDAP44
iv

Estrutura da base LDAP45


LDIF49
Formas de conexo no LDAP50

4. LDAP Avanado
Schemas53
Classes de objetos54
Atributos55
Gerenciando schemas56
Mdulos56
Manipulao da base57
Gerenciamento de Logs59
Cliente LDAP60
Pacotes para instalao cliente60
Segurana do Servidor LDAP62
Criptografia das mensagens Cliente Servidor LDAP64
Replicao da base LDAP66
Replicao Master X Slave66
Replicao Master x Master67
Diretrios distribudos67
Ferramentas grficas67
Backup e Restore68
Backup69
Restore69
Atividade de Fixao Elaborando uma soluo de backup da base do LDAP69

5. Servidor web
Introduo71
Conceitos fundamentais71
Servidor web74
Cliente web74
Protocolo HTTP74
Requisio (request)75
Respostas (response)76
Domnio virtual79
Servidores web80
v

6. Servidor proxy Squid


Proxy83
Proxy Squid85
Instalao86
Configurao86
Listas de controle de acesso87
Configurao dos navegadores92
Proxy transparente92
Redirecionadores94
Relatrios94
Sarg95

7. Servidor de correio eletrnico (parte 1)


Introduo97
Correio eletrnico97
Origens do correio eletrnico98
Protocolo SMTP99
Protocolo POP3101
Comandos POP3101
Comandos de autenticao (Authorization State)102
Comandos de transao (Transaction State)102
Comandos de atualizao (Update State)102
Respostas102
Protocolo IMAP103
Conexo e estados do IMAP104
Configuraes prvias106
Postfix108
Instalao do servidor Postfix110
Inicializao do servidor Postfix111
Configurao do servidor Postfix111
Teste da entrega dos e-mails115
Fila de e-mail e IDs da fila117

vi

8. Servidor de correio eletrnico (parte 2)


Introduo 119
Mtodos de entrega119
mbox 120
maildir 120
Servidor para mltiplos domnios121
Domnios virtuais121
Estabelecer o alias do nome de domnio virtual122
Criar um mapa com os destinatrios122
Configurar o Postfix para receber mensagens dos domnios virtuais122
Recarregar configuraes do Postfix 122
Testando o envio de mensagem para endereo virtual122
Verificando arquivo de log 122
Controle de contedo123
Mail gateway124
SMTP autenticado126
Servidores secundrios126
Endereos especiais127
Servidor de e-mail corporativo127
Cyrus SASL e Dovecot SASL 128
Courier Maildrop 131
Courier Imap 131
Recomendaes de tuning132
Ajustes em consultas DNS133
Gargalos na incoming queue 135
Gargalos na maildrop queue 135
Gargalos na deferred queue 135
Gargalos na active queue 136
Prticas Antispam136
Recomendaes do Antispam.br139

vii

9. Samba
Introduo141
Samba141
Daemons143
nmbd143
smbd144
winbindd144
Conjunto de ferramentas144
Conceitos145
Samba ADS146
Instalao e configurao147
Instalao147
Principais parmetros de configurao149
Parmetros de configurao para administrao de contas152
Backends de contas154
smbpasswd154
tdbsam154
ldapsam155
Modelos de segurana155
Segurana no nvel do usurio155
Modo de Segurana Domain (Segurana ao Nvel de Usurio)156
Modo de Segurana ADS (Segurana ao Nvel de Usurio)156
Contas de usurios, grupos e mquinas157
Samba como PDC159
Parmetros de controle do domnio161
Parmetros de ambiente162
Compartilhamento NETLOGON162
Compartilhamento PROFILE163
Servio de Logon na Rede de Domnio163
Configuraes adicionais163
Integrao com o OpenLDAP164
Configurao do OpenLDAP 165
Inicializao da base de dados LDAP Configurando o smbldap-tools166
Configurando o Samba PDC para acessar a base de dados LDAP169
Configurao de compartilhamento171
Atividades administrativas172

viii

Gerenciamento de Conta de Usurios174


Criar conta174
Remover conta174
Listar conta175
Outros comandos 175
Gerenciamento de Grupos177
Gerenciamento de conta de mquinas178
Alterar as polticas das contas do domnio179

10. DHCP, FTP e SSH


Introduo181
DHCP181
Campos em uma mensagem DHCP183
Funcionamento do protocolo DHCP185
Edio de arquivos de configurao186
Exemplos de configurao188
Iniciando e parando o servidor189
File Transfer Protocol (FTP)190
Funcionamento do FTP191
Tipos de servidor FTP 192
Servidor FTP ativo192
Servidor FTP passivo192
Problemas com firewall193
Secure Shell (SSH)194
OpenSSH 195
Configurao do servidor OpenSSH195
Comando ssh196
Estabelecendo conexo197
SCP197
SFTP198
Gerao de chaves199
Agente SSH200

ix

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.

xi

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; Conhecimento dos conceitos tericos
associados a cada um dos servios, com a apresentao de cenrios que facilitem a sua compreenso; Autenticao nos servios, sempre que possvel, com o uso de LDAP; Os servios
so instalados e testados com o uso intensivo de atividades prticas; Conhecimento de boas
prticas para a utilizao bem ajustada dos servios de produo.

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

xii

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:\).

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: TORRES, Pedroet al. Administrao de Sistemas Linux: Redes e Segurana.
Rio de Janeiro: Escola Superior de Redes, RNP, 2013.

xiii

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

Sobre os autores
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. Atualmente ocupa o cargo
de Coordenador 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 gerencia de servios de rede, computao de alto desempenho, segurana de redes, shell script, PHP, Perl, solues de
storage e backup. Atualmente tecnologista no Laboratrio Nacional de Computao
Cientfica e professor na Escola Superior de Redes na rea de Sistemas Operacionais.
Andr Ramos Carneiro possui graduao em Tecnlogo em Tecnologia da Informao e
Comunicao pelo Instituto Superior de Tecnologia em Cincia da Computao (2006).
Trabalha com suporte Linux desde 2005 e atualmente Tecnologista do Laboratrio
Nacional de Computao Cientfica, onde trabalha com administrao de servidores,
gerncia de contas de usurios, implementao de novos servios, suporte a plataformas
de processamento de alto desempenho, compilao de aplicaes cientficas, administrao de storage e backup. Tem experincia na rea de Cincia da Computao, com nfase
em Computao de Alto Desempenho, atuando principalmente nos seguintes temas: previso numrica de tempo, processamento paralelo, aplicaes cientficas e I/O paralelo.

xiv

1
Conhecer o sistema Domain Name Service (DNS).

Domain Name Service sistema de traduo de endereos.

conceitos

Introduo
O estudo deste captulo apresenta o conceito do servio de resoluo de nomes (DNS),
abordando sua utilizao e execuo de maneira prtica e intuitiva, passando pela instalao,
configurao e testes.
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.
11 Delegao de domnios
11 Servio em chroot.
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.

Captulo 1 - DNS

objetivos

DNS

Por ltimo vm as atividades prticas:


11 Instalao do servidor DNS;
11 Configurao do servidor DNS Primrio;
11 Configurao do servidor DNS Secundrio.

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:

Administrao de Sistemas Linux: Servios para Internet

22 Pgina da RNP.

22 Mais fcil usar www.rnp.br que http://200.130.35.237


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 fornecida pelo servio DNS.
O esquema de endereamento utilizado pela internet baseado em endereos IPv4, com
32 bits, ou IPV6, com 128 bits, 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.35.237 ou
2001:12f0:b01:101::ed, 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 IP.

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.

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

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 a seguir do domnio-raiz na rvore de hierarquia de domnios. Os domnios de topo, por sua vez, tm apontadores para os servidores em domnios de nveis inferiores.
Nenhum servidor, nem mesmo os servidores raiz, tem informaes completas 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 1 - DNS

Figura 1.1
Os domnios
genricos, como
net ou org,
e os geogrficos,
como rnp.

Definies
11 Domnio.

11 Zonas de autoridade.
11 Registro de recursos.
11 Mapeamento:
22 Direto.
22 Reverso.
11 Delegao de domnio.
11 Servio com chroot.
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.

Administrao de Sistemas Linux: Servios para Internet

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


(FQDN), consiste em:
22 Nome da mquina.
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.
4

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 Endereo eletrnico (e-mail) do responsvel pelo domnio;

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;
11 Tempo de expire: informa o tempo, em segundos, aps o qual o servidor no mais res-

Captulo 1 - DNS

11 Nmero de srie (serial number) da zona;

ponde por informaes daquela zona;


5

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 a seguir 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
uma busca feita sobre um determinado domnio, so devolvidos todos os registros
pedidos, emparelhados em classe.

Administrao de Sistemas Linux: Servios para Internet

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;
11 Name Server Identification (NS): especifica os servidores de nomes responsveis pelo
domnio, zona ou subzona;
6

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.
22 Exemplo: tipo A contm um endereo; tipo MX contm prioridade e endereo.
Os registros do banco de dados do DNS so formados por cinco campos:

11 Time To Live (TTL);


11 Classe;
11 Tipo;
11 Dados.

Captulo 1 - DNS

11 Nome;

<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;
11 Canonical NAME (CNAME): nome do recurso no domnio;
11 Hardware INFOrmation (HINFO): informaes pertinentes ao hardware;
11 TeXT (TXT): informaes gerais.
Administrao de Sistemas Linux: Servios para Internet

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.
11 SOA: identifica o servidor Start of Authority do domnio;
11 A e PTR: identificam servidores utilizados respectivamente em mapeamento direto
e reverso;
8

Tabela 1.1
tabela de tipos de
registros.

11 MX: identifica um servidor de correio eletrnico do domnio. Deve ser acompanhado de um

Esse tipo de consulta


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

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 1.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 informar o endereo IP da mquina desejada;
11 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
raiz e em seguida o servidor DNS na rede de destino. O nome ento passado ao computador que efetuou a consulta.

Captulo 1 - DNS

encaminhada ao servidor DNS da rede local. O servidor DNS local consulta um servidor DNS

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.

Classe C
200.130.77

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.
22 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
solicitar do servidor de nomes informaes a respeito de uma determinada estao.
Administrao de Sistemas Linux: Servios para Internet

Do ponto de vista de uma aplicao, o acesso ao DNS se d pelo uso de um mdulo de

10

Figura 1.3
O mapeamento
reverso em
funcionamento.

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, esse retornar os dados oficiais.
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 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
carga sobre os servidores primrio e secundrios.

Captulo 1 - DNS

22 Mantm respostas de consultas efetuadas anteriormente.

11

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.
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 nesse 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
Administrao de Sistemas Linux: Servios para Internet

catching importantes que essa tcnica a nica utilizada na construo de sua base de

12

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
servidores primrio e secundrios da rede.

Servidor DNS
DNS

primrio

Transferncia

Transferncia

de zonas

de zonas

Servidor DNS

Servidor DNS
DNS

secundrio

DNS

secundrio

Consultas

Consultas

Consultas

Figura 1.4
Tipos de
servidores DNS.

Uma boa prtica, em


redes de grande porte,
o uso 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.

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
servidores esto espalhados pelo planeta.
Cada um desses treze servidores de responsabilidade de um operador, que os arranja em
sua maioria em conjunto de mltiplos servidores, denominados clusters, localizados muitas
vezes em diferentes cidades e pases.

Estrutura do DNS no Linux


11 Servidor:

22 Executvel.
22 Arquivo de configurao named.conf.
22 Arquivo de mapas da rede (zonas).
22 Arquivo para localizao do servidor DNS (resolv.conf ).
11 Cliente:
22 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
(daemon) responsvel pela tarefa o /usr/bin/named, que parte do pacote BIND. Para o
funcionamento correto do DNS, alguns arquivos so necessrios para a sua configurao.

Captulo 1 - DNS

Estaes de usurio

13

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.

Administrao de Sistemas Linux: Servios para Internet

22 Domnio direto.
22 Domnio reverso.
Esse o arquivo que contm as informaes referentes a cada uma das zonas administradas.
Arquivo de configurao DNS: named.conf
acl interno { 172.16.72.0/24; 192.168.0.1/24; };
acl externo { 200.138.35.230; };
options {
directory /var/named;
forwarders {
200.221.11.100;
200.221.11.101;
externo;
};
allow-transfer { none; };
allow-query { interno; externo; };

14

allow-recursion { interno; };
};
zone . IN {
type hint;
file caching-example/named.ca;
};
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; externo; };
};
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-transfer: servidores que possuem a permisso de serem slaves. Assim, evita


plgio de DNS.
11 allow-query: define as mquinas que podem fazer consultas no servidor de DNS.

Captulo 1 - DNS

11 allow-update: especifica quais dos servidores da zona sero atualizados. No caso, nenhum;

15

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.
Essas clusulas so estruturas que agrupam statements relacionadas, que so como diretivas
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 (Remote Name Daemon Control);
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;
Administrao de Sistemas Linux: Servios para Internet

11 operations: controlam o comportamento do servidor;

16

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.

Arquivos de mapas da rede

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

localhost

mar.exemplo.com.

IN

127.0.0.1

mar

IN

200.130.77.130

sol

IN

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

IN

mysql
www

192.168.0.9
IN

Captulo 1 - DNS

201.26.142.72

17

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
secundrios;
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;
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. (

Administrao de Sistemas Linux: Servios para Internet

; Serial

604800
86400

; Refresh
; Retry

2419200

; Expire

604800 )

; Negative Cache TTL

;
@

IN

NS

mar.exemplo.com.

130

IN

PTR

mar.exemplo.com.

131

IN

PTR

sol.exemplo.com.

Arquivos com os mapas de rede:


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.

18

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

Exerccio de fixao 2 e
Servidor de DNS Cache
Instale e configure o servidor de DNS apenas com a funo de cache.

Captulo 1 - DNS

consulta DNS em cada um deles.

19

Delegao de domnios
Como sabemos, o sistema DNS funciona atravs da delegao, onde um servidor aponta
para outro, sucessivamente, at que a informao que se procura seja encontrada. Essas
conexes no so criadas por acaso, e exigem uma sincronizao por parte dos administradores dos diversos domnios.
Suponhamos ento que seja feito o registro do domnio exemplo.com.br. Durante o
processo de registro de domnios, ser necessrio indicar no mnimo dois servidores DNS
que estejam respondendo pelo domnio exemplo.com.br. Caso esses servidores estejam
corretamente configurados, e as demais informaes necessrias estejam tambm corretas,
o processo finalizado com a insero de registros NS para o novo domnio nos servidores
raiz do domnio BR.
Supondo que os servidores DNS do domnio exemplo.com.br sejam ns1.exemplo.com.br e
ns2.exemplo.com.br, os registros inseridos nos servidores do REGISTRO.BR tero a forma:
exemplo.com.

IN

NS

ns1.exemplo.com.

IN

IN

NS

ns2.exemplo.com.

IN

exemplo.com.

ns1.exemplo.com.
192.168.0.1
ns2.exemplo.com.
192.168.0.2

Servidores DNS, entretanto, podem atender a dezenas ou centenas de domnios. Se quisermos registrar o domnio outroexemplo.com.br, sob a responsabilidade dos mesmos
servidores DNS, o servidor raiz do domnio BR, dever conter apenas os seguintes registros:
outroexemplo.com.

IN

NS

ns1.exemplo.com.

outroexemplo.com.

IN

NS

ns2.exemplo.com.

At agora vimos duas delegaes. Os servidores do domnio raiz delegaram para o


REGISTRO.BR autoridade sobre todos os domnios terminados em BR. O REGISTRO.BR,
por sua vez, realizou a delegao de autoridade sobre o domnio exemplo.com.br para os
servidores DNS ns1.exemplo.com.br e ns2.exemplo.com.br. Em outras palavras, os termos
delegao de autoridade significam simplesmente que se algum desejar obter informaes
corretas sobre computadores que terminam em exemplo.com.br devem encaminhar suas
perguntas para um dos dois servidores registrados do domnio. O REGISTRO.BR no ter em

Administrao de Sistemas Linux: Servios para Internet

seus registros nenhuma informao alm do nome dos servidores DNS e do domnio a que

20

servem. Tudo o mais foi delegado. O administrador do domnio exemplo.com.br tem total
liberdade para registrar quantos computadores quiser dentro do domnio sobre o qual possui
autoridade. Ele pode inclusive continuar delegando autoridade para outros subdomnios.
O domnio exemplo.com.br tem representaes em todas as capitais do Brasil e cada um
desses subdomnios se inicia pelo nome da capital onde est sediado. O administrador do
servio DNS do domnio raiz poder realizar a delegao de autoridade para os domnios
regionais, incluindo registros do tipo:
sergipe.exemplo.com.

IN

NS

ns.aracaju.exemplo.com.

Pernambuco.exemplo.com.

IN

NS

ns.recife.exemplo.com.

ceara.exemplo.com.

IN

NS

ns.fortaleza.exemplo.com.

maranhao.exemplo.com.

IN

NS

ns.saoluis.exemplo.com.

para.exemplo.com.

IN

NS

ns.para.exemplo.com.

amazonas.exemplo.com.

IN

NS

ns.amazonas.exemplo.com.

O administrador da base de Aracaju pode delegar autoridade para os representantes


em diferentes regies do estado de Sergipe. A restrio que o administrador da base
de Aracaju tem autoridade sobre o domnio aracaju.exemplo.com.br e pode criar apenas
nomes de computadores que terminem com esse nome.

Servio em CHROOT
Em servidores UNIX, possvel executar o BIND em um ambiente chroot (usando a funo
chroot ()), especificando a opo -t para named. Isso pode ajudar a melhorar a segurana
do sistema, colocando o BIND em uma sandbox, que vai limitar os danos causados se um
servidor for comprometido.
Outro recurso til a capacidade de executar o daemon como um usurio sem privilgios (-u
usurio). Sugerimos a execuo como um usurio sem privilgios ao usar o recurso chroot.
Aqui est um exemplo de comando para carregar o BIND em uma sandbox chroot, no
diretrio /var/named, e com opo de setuid para o usurio 202:
/usr/local/sbin/named

-u

202

-t

/var/named

Para que um ambiente chroot possa funcionar corretamente em um diretrio especfico (por
exemplo, /var/named), voc ter de criar um ambiente que inclui tudo o que o BIND precisa
para ser executado. Do ponto de vista do BIND, o diretrio /var/named a raiz do sistema
de arquivos. Ao contrrio de verses anteriores do BIND, voc normalmente no precisar
compilar o BIND estaticamente nem instalar bibliotecas compartilhadas sob a nova raiz. No
entanto, dependendo do seu Sistema Operacional, voc necessitar criar alguns arquivos,
tais como /dev/zero, /dev/random, /dev/log e /etc/localtime.

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.
11 ip6.arpa.
Dois tipos de consultas podem ser realizadas 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

Captulo 1 - DNS

resoluo de reverso, o ip6.arpa, descrito na RFC 3152.

21

Como servidor de nomes, podemos utilizar o BIND verso 9, cuja implementao a mais
robusta. Dois tipos de consultas podem ser realizadas 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:
Arquivo: named.conf
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.

Administrao de Sistemas Linux: Servios para Internet

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

22

$TTL 86400
@

IN

SOA

ns.ipv6.br.

root.ipv6..br. (

2001112201

IN

NS

3H

; refresh

15M

; retry

1W

; expiry

1D)

; 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 esses ataques,
validando os dados e garantindo a origem das informaes.
11 Prov segurana para a resoluo de endereos;
11 Funciona como um caminho alternativo para a verificao de autenticidade da informao;
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.
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, podemos comprovar que essa informao est correta. Dependendo do
tipo de ataque, isso pode ser suficiente para que o sistema DNSSEC o interrompa;

es 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);

Captulo 1 - DNS

11 Para que esses servios possam ser ativados, o DNSSEC necessita que todas as solicita-

22 NSEC.
23

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.
exemplo.com.

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
Administrao de Sistemas Linux: Servios para Internet

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)

24

domain:
owner:

rnp.br
Associao Rede Nacional de Ensino e Pesquisa

ownerid:

003.508.097/0001-36

responsible: Nelson Simes Silva


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:

20120216

nserver:

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

nsstat:

20120216 AA

nslastaa:

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.
1. Utilizar o aplicativo dnssec-keygen para a gerao das chaves do domnio.

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

Captulo 1 - DNS

$ dnssec-keygen -r /dev/urandom -f KSK -a RSASHA1 -b 1024 -ZONE exemplo.com

25

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:
( ) Fornece autenticao da origem da informao.
( ) Evita ataque do tipo DDOS.
( ) Evita ataques do tipo Man-in-the-Middle e Spoofing.
( ) Garante a integridade dos dados DNS.
( ) Reduz o consumo de energia, sendo boa prtica na TI verde.
( ) Evitar a manipulao da memria cache (Pharming, Phishing etc.).

Administrao de Sistemas Linux: Servios para Internet

( ) Garante a integridade dos dados do usurio.


( ) 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.
Exemplo:
Permitir que uma nica mquina atenda por:
11 www.virtual2.exemplo.com: 192.168.1.10
11 www.virtual2.exemplo.com: 192.168.1.20
Utiliza recurso de IP aliasing presente no kernel do Linux. Algumas vezes necessrio
recompilar o kernel e depois configurar normalmente arquivos de mapas da rede.

26

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.

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:
A
;www.rnp.br. IN
;; ANSWER SECTION:
www.rnp.br.

290

IN

200.143.193.5

www.rnp.br.

290

IN

200.130.77.75

;; Query time: 19 msec


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

Boas prticas para administrao do DNS


11 Limitao de transferncia de zonas.

11 Separao de servidores.
11 Uso de privilgios mnimos.
11 Cuidado com informaes sensveis no DNS.
11 DNS reverso.
11 Contato no DNS.

Limitao de transferncia de zonas


As limitaes de transferncias de zona devem ser aplicadas a todos os servidores com
autoridade para um domnio, independente de eles serem mestres ou escravos. Um
equvoco comum limitar as transferncias de zona no servidor mestre e no faz-lo nos

Captulo 1 - DNS

11 Poltica de backup.

servidores escravos.
27

Separao de servidores
Uma prtica recomendvel separar a funo de servidor com autoridade (mestre ou
escravo) da funo de servidor recursivo. Isso minimiza a eficcia de ataques de envenenamento de cache DNS. Na prtica, essa separao significa que os servidores que possuem
autoridade para uma ou mais zonas respondem somente a consultas relativas a essas zonas;
por sua vez, os servidores recursivos no possuem autoridade sobre nenhuma zona DNS.

Uso de privilgios mnimos


Em ambientes Unix, muitas vezes possvel executar o servidor DNS em uma jaula chroot().
Verses mais recentes do BIND permitem tambm que ele seja executado com permisses
de um usurio diferente de root. Consulte a documentao do seu software.

Cuidado com informaes sensveis no DNS


Informaes sobre configurao de sistemas na sua rede devem ser consideradas sensveis,
pois podem ser usadas por um atacante para facilitar o comprometimento desses sistemas
(ajudando-o a identificar mquinas com sistemas que possuam vulnerabilidades conhecidas,
por exemplo). Em vista disso, o mais prudente evitar registrar esse tipo de informao no DNS.

DNS reverso
Um DNS reverso mal configurado ou inexistente pode causar alguns transtornos. O primeiro
deles que muitos sites negam o acesso a usurios com endereos sem DNS reverso ou
com o reverso incorreto. Em segundo lugar, erros na configurao do DNS depem contra a
competncia tcnica da equipe de administrao de redes responsvel pelo domnio, e isso
pode vir a causar dificuldades quando for necessrio interagir com equipes de outras redes.

Contato no DNS
Cada domnio registrado em um servidor DNS possui uma srie de parmetros de configurao no registro de SOA (Start of Authority). Um desses parmetros o e-mail do responsvel pelo domnio, que muitas vezes tambm usado para comunicar problemas de
segurana envolvendo esse domnio.

Poltica de backup

Administrao de Sistemas Linux: Servios para Internet

A importncia dos backups na administrao de sistemas nunca pode ser minimizada. Sem

28

eles, muitos dados so simplesmente irrecuperveis caso sejam perdidos devido a uma
falha acidental ou a uma invaso.

2
Conhecer o sistema Network File System (NFS).

conceitos

Network File System sistema de arquivos em rede.

Network File System (NFS)


Desenvolvido para permitir que mquinas montem parties de disco em

mquinas remotas.
11 Compartilhamento na rede.
11 Outros sistemas:
22 Samba.
22 AFS.
22 Entre outros.
Este captulo apresenta os conceitos e a utilizao do 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. Esse captulo aborda a teoria desse servio, configurao, otimizao de
desempenho e ajustes, sendo que no final sero praticadas a configurao do servidor e do
cliente, e ainda testes de funcionamento.
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.
Captulo 2 - NFS

objetivos

NFS

29

Instalando e configurando um servidor NFS


Pacotes de instalao:

11 nfs-kernel-server.
11 nfs-commom.
22 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.

Exerccio de fixao 1 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.

Arquivo /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

Administrao de Sistemas Linux: Servios para Internet

O arquivo /etc/exports contm uma lista de entradas, onde cada entrada indica um volume

30

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 compartilhar um diretrio, todos os diretrios a seguir dele no mesmo sistema de
arquivos 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.

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 em um 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 opo sync.
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 podemos 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

/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 @.

Captulo 2 - NFS

ter as seguintes entradas:

31

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.

Arquivos /etc/hosts.allow e /etc/hosts.deny


11 Especificam os hosts que podem usar servios em uma 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
ser utilizados para restringir a conexo aos daemons envolvidos no servio NFS. O primeiro
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

Administrao de Sistemas Linux: Servios para Internet

alguma razo, como encontrar todos os daemons;

32

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:


11 lockd:ALL
11 mountd:ALL
11 rquotad:ALL
11 statd:ALL

Restringir acesso a portmapper a melhor defesa contra ataques a NFS.


11 hosts.deny:
22 portmap:ALL, lockd:ALL, mountd:ALL, rquotad:ALL, statd:ALL
11 hosts.allow.
22 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
que o acesso aos hosts seja habilitado. 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

Para verses recentes do nfs-utils, podemos adicionar:


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 em uma 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.

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:

Captulo 2 - NFS

Iniciando o portmapper

ps aux | grep portmap

33

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: gerncia 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)
5. rpc.rquotad

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.
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
Administrao de Sistemas Linux: Servios para Internet

que esto executando. A sada algo como:

34

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

100011

1 udp

749

rquotad

100024 1

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

mountd

100021 3

udp 1042 nlockmgr

100005

2 tcp

766

mountd

100021 4

udp 1042 nlockmgr

100005

3 udp

769

mountd

100021 1

tcp 1629 nlockmgr

100005

3 tcp

771

mountd

100021 3

tcp 1629 nlockmgr

100003

2 udp

2049 nfs

100021 4

tcp 1629 nlockmgr

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.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: o tipo de sistema de arquivos tm 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 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.

Captulo 2 - NFS

22 Pode causar corrupo de arquivos e perda de dados;

35

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 configurado para NFS, e dump e fsck tero de ser ajustados para zero. Ento, para o
exemplo, a entrada no /etc/fstab seria:
# device

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 correspondentes das listagens do mount seriam similares, se no idnticas.

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:
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: rsize e wsize especificam o tamanho.


11 No h um tamanho que funcione bem em todos ou na maioria dos setups.

Administrao de Sistemas Linux: Servios para Internet

11 Escolher um tamanho de bloco correto um fator importante para o desempenho.

36

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.
11 Opo -o timeo: permite a designao do tempo, em dcimos de segundo, que levar
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;
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.

NFS sncrono versus assncrono


Comportamento assncrono de NFSv3.

11 async.

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

Captulo 2 - NFS

11 Servidor responde a pedido dos clientes assim que processado e manipulado pelo

escritos em meios de armazenamento estvel.


37

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 NFS 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 con-

Administrao de Sistemas Linux: Servios para Internet

firmao do cliente garanta que o servidor enviou os dados para armazenamento estvel;
11 NFS_DATA_SYNC: os metadados 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
dados atinjam o disco do servidor.

Segurana e NFS
Passos para que um cliente possa acessar um arquivo em um 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.

38

Com NFS, h dois passos requeridos para que um cliente ganhe acesso a um arquivo contido
em um diretrio remoto no servidor.
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 em um 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, podemos fazer a verificao com o comando:
# strings /sbin/portmap | grep hosts

Em uma mquina segura, a sada seria algo como:


/etc/hosts.allow
/etc/hosts.deny
@(#) hosts_ctl.c 1.4 94/12/28 17:42:27
@(#) 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
Captulo 2 - NFS

editando /etc/hosts.allow, listando todas as mquinas que devem acessar servios na mquina.

39

40

Administrao de Sistemas Linux: Servios para Internet

3
Entender o funcionamento do servio de diretrio, do protocolo LDAP e da soluo
OpenLDAP; compreender o funcionamento, objetos e atributos; Instalao do
OpenLDAP; Execuo do servidor; Criao e manuteno da base de dados.

conceitos

Servidor LDAP, rvore de informao do diretrio (DIT), detalhes da rvore de


configurao e ferramentas para migrao da base.

Introduo
Servios de Diretrio

11 Protocolo LDAP:
22 Funcionamento
22 Estrutura da Base
22 Formato LDIF
22 Formas de conexo
Neste captulo, vamos conhecermos 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,
em seguida veremos como est organizada a rvore de configurao no formato cn=config e
por fim apresentaremos uma forma de importar as contas do sistema para a base do LDAP.
A execuo do servidor, bem como a criao da base, sero os objetos finais deste captulo,
onde sero colocados em prtica os conceitos adquiridos.

Servios de diretrio
O que um servio de diretrio?
Servio de diretrio X SGBDs tradicionais
DIT (Directory Information Tree)

Captulo 3 - Servidor LDAP

objetivos

Servidor LDAP

41

uma base de dados especialmente desenvolvida para armazenar informaes que necessitam de um grande volume de consultas, ou seja, operaes de leitura e escrita no so
prioridade nesse tipo de base.
Diferentemente dos servios de bancos de dados tradicionais que armazenam suas informaes em tabelas, um servio de diretrio armazena suas informaes de forma hierrquica.
Essa organizao chamada de Directory Information Tree (DIT) ou rvore de Informao
do Diretrio. Apresentaremos mais detalhes sobre uma DIT no decorrer deste captulo.
Geralmente utilizamos um servio de diretrio para armazenar informaes sobre os
recursos e os usurios de uma rede de computadores. Sua principal vantagem centralizar
todas as informaes em um nico lugar, facilitando assim o trabalho dos administradores
de sistemas.

Sem servio de diretrios

Diferentes aplicaes utilizam bases de dados distintas


Quando no possumos um servio de diretrios disponvel na rede, cada aplicao deve

manter sua prpria base de dados para autenticao dos clientes. Consequentemente, cada
base ter sua prpria poltica de segurana, possibilitando que o usurio tenha uma senha
diferente em cada servio.
Esse cenrio terrvel para os administradores de sistemas, pois a cada incluso, alterao
ou excluso de um usurio, ser necessria a repetio dos procedimentos em todas as
bases de dados de todos os sistemas disponveis. Isso reduzir a produtividade da equipe,
alm de possibilitar brechas de segurana ao manter usurios com acesso a determinados
servios at que o processo tenha sido realizado em todas as bases de dados.
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

Cliente da aplicao 2

Cliente da aplicao 3

Com servio de diretrio


Diferentes aplicaes utilizam a mesma base de dados

Um servio de diretrio fundamental para estruturas de sistemas distribudos. A centralizao das contas dos usurios em um nico local facilita muito a vidas dos administradores
de sistemas e permite que os usurios acessem os servios de maneira mais transparente.
Qualquer operao em um objeto do servio de diretrios ser executada uma nica vez em um
nico lugar, e todos os sistemas tero acesso os dados imediatamente. Esses dados podem ser
acessados por qualquer aplicao ou sistema que suportem comunicao padro LDAP.

42

Figura 3.1
Aplicaes
acessando bases
de dados distintas

Aplicao 1
LDAP
Cliente da aplicao 1
Aplicao 2

LDAP

Aplicao 3

LDAP

Registro de usurio

Cliente da aplicao 2

Cliente da aplicao 3

LDAP
11 Protocolo baseado no acesso a servios de diretrio X.500

11 Executa sobre protocolos de transporte orientados a conexo


11 Determina o conjunto de regras que controlam o funcionamento do servio de diretrio
um protocolo cliente/servidor utilizado para acessar servios de diretrio baseados em X.500.
O LDAP foi desenvolvido na Universidade do Michigan como uma alternativa ao protocolo DAP.
O protocolo DAP era baseado no padro OSI de sete camadas, o que o tornava um protocolo
pesado; j o protocolo LDAP foi desenvolvido sobre o sistema TCP/IP, que ao ser comparado
com o DAP era considerado mais leve, da o termo LightWeight na sigla do protocolo.
A RFC 4510 contm a relao de todas as RFCs que descrevem o protocolo:
11 LDAP: The Protocol [RFC4511];
11 LDAP: Directory Information Models [RFC4512];
11 LDAP: Authentication Methods and Security Mechanisms [RFC4513];
11 LDAP: String Representation of Distinguished Names [RFC4514];
11 LDAP: String Representation of Search Filters [RFC4515];
11 LDAP: Uniform Resource Locator [RFC4516];
11 LDAP: Syntaxes and Matching Rules [RFC4517];
11 LDAP: Internationalized String Preparation [RFC4518];
11 LDAP: Schema for User Applications [RFC4519].
Assim como qualquer protocolo, o LDAP determina o conjunto de regras que controlam
o funcionamento de um servio de diretrios, ou seja, ele especifica como ser realizada
a conexo, comunicao e a transferncia dos dados. As formas de armazenamento, o
Sistema Operacional e o gerenciador de banco de dados no fazem parte do protocolo
essas so caractersticas especficas de cada implementao do LDAP.
Empresas e instituies dos mais variados tipos e tamanhos possuem uma infinidade de
servios que necessitam da autenticao dos usurios. Tarefas como realizar o login em
estaes de trabalho, acessar contas de e-mail, acessar sistemas de gesto, sistemas de
controle de estoque etc. so realizadas o tempo todo.

Captulo 3 - Servidor LDAP

Figura 3.2
Aplicaes
acessando a
mesma base de
usurios.

43

Funcionamento do LDAP

11 Baseado no modelo cliente/servidor


11 Cliente realiza uma requisio ao servidor
11 Servidor responde ou encaminha a requisio para outro servidor LDAP
11 Todos os servidores apresentam a mesma viso do diretrio
O LDAP uma aplicao cliente/servidor. Normalmente o servidor utiliza a porta 389 TCP
para conexes sem criptografia, e a porta 636 para conexes com SSL.
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 o cliente se conecte, todos devem apresentar a


mesma viso do diretrio.

A utilizao do LDAP recomendada para aplicaes que necessitam realizar muitas consultas base, pois ele foi projetado para atender a grandes volumes de consultas em um
curto espao de tempo, aplicaes que necessitam realizar muitas operaes de escrita
provavelmente no tero um desempenho satisfatrio.

Operaes:
11 Consulta (search e compare)
11 Atualizao (add, delete, modify e modifyDN)
11 Operao e controle (bind, unbind, abandon)
O protocolo LDAP consiste em nove operaes distribudas em trs categorias: consulta;
atualizao e autenticao e controle.
Consulta:
11 search: operao de busca por um (Figura 3.3) ou mltiplos (Figura 3.4) resultados;

Administrao de Sistemas Linux: Servios para Internet

11 compare: operao de comparao com determinada entrada.

44

Search operation
Returned entry
Result code
Cliente LDAP

Servidor LDAP

Figura 3.3
Operao simples
de busca.

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

Result code

Servidor LDAP

Figura 3.4
Operao de busca
com mltiplos
resultados.

Atualizao:
11 add: operao de adio de um 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: operao de modificao da posio ou renomear dados na base;
Autenticao e controle:
11 bind: operao de autenticao;
11 unbind: encerra uma conexo LDAP;
11 abandon: operao de cancelamento unilateral de uma operao.
Open connection and bind
Bind result
Search operation
First entry returned
Second entry returned
Result of search operation
Cliente LDAP

Unbind operation

Servidor LDAP

Close connection

Estrutura da base LDAP


DIT (Directory Information Tree)

11 Objetos
22 Corresponde a um conjunto de atributos (pares chave/valor) que armazenam
informaes
22 Atributos normais
22 Atributos operacionais
11 LDAP ObjectClass
11 LDAP Schema
Uma base LDAP ou diretrio LDAP onde as informaes esto armazenadas. Essa base
deve seguir o modelo X.500, conforme mencionamos anteriormente.
Os objetos de uma base LDAP so organizados hierarquicamente, formando uma estrutura
de rvore conhecida como DIT (Directory Information Tree). Cada vrtice da DIT um objeto
e suas arestas definem a relao entre eles.
Captulo 3 - Servidor LDAP

Figura 3.5
Operao tpica
de acesso a base
do LDAP.

45

dc= rnp,dc=br

ou=Salvador

ou=Rio de Janeiro

ou=diretoria

ou=operacoes

ou=gerentes

ou=Belm

ou=funcionrios

cn=Joo da Silva

cn=Pedro Souza

Na figura 3.6 temos um exemplo de uma DIT. O vrtice mais ao topo (com o nome rnp.br)
chamado de raiz e a base da nossa rvore. Uma DIT deve ter uma nica raiz e todos os outros
objetos estaro relacionados a ela, sendo assim dizemos que a DIT uma rvore enraizada.
As arestas que ligam os vrtices nos permitem perceber a relao de hierarquia entre os
objetos. Por exemplo: vamos considerar que o nosso objetivo obter as informaes referentes ao vrtice Pedro Souza. Analisando nossa rvore percebemos que ele est abaixo
dos vrtices funcionrios, operaes, Rio de Janeiro e rnp.br, portanto, para conseguirmos chegar at o nosso alvo precisaremos passar por toda a hierarquia da nossa rvore
comeando pela raiz seguindo os vrtices at chegar ao objeto que contm os valores que
desejamos recuperar.
Outra forma de ilustrar essa organizao fazer uma comparao com o sistema de arquivos
do Linux, onde todas as informaes esto organizadas debaixo de uma nica raiz. Organizando nossa DIT como uma rvore de diretrios ela ficara semelhante imagem a seguir:
rnp.br
|__ Salvador

Administrao de Sistemas Linux: Servios para Internet

|__ Rio de Janeiro

46

|__ operacoes

|__ gerentes

|__ funcionarios

|__ Joo da Silva

|__ Pedro Souza

|__ Belem
|

|__ diretoria

Uma DIT pode refletir a organizao poltica, geogrfica e/ou organizacional da empresa ou
instituio, sendo uma prtica muito comum basear-se em nomes j existentes, como os
domnios de DNS, para definio dos nveis mais bsicos da hierarquia.

Figura 3.6
Exemplo de uma
rvore de diretrio.

Cada vrtice da nossa rvore pode representar uma pessoa, unidade organizacional, impressora, documento, grupo de pessoas ou qualquer outra coisa. Essa representao geralmente
chamada de registro ou objeto e corresponde a um conjunto de atributos (pares chave/valor)
que armazenam informaes que permitem caracterizar essa representao.
Existem dois tipos de atributos:
11 Atributos normais: atributos que caracterizam o objeto, como por exemplo:
displayName, mail etc.;
11 Atributos operacionais: so utilizados pelo servidor para funcionalidades operacionais
e/ou administrativas, como por exemplo: armazenar a data de criao de um objeto.
Esses atributos normalmente no so exibidos nos resultados das consultas.

LDAP ObjectClass
Determina as caractersticas de um objeto, ou seja, corresponde ao conjunto de atributos que ele pode ter. Todo objeto criado a partir de uma ou mais objectClasses. Uma
objectClass pode ser derivada de outra objectClass, que por sua vez tambm pode ser
derivada de outra objectClass. Dessa forma, podemos ter uma hierarquia de classes com
superclasses e subclasses que facilitam o nvel de abstrao para a criao dos schemas.

LDAP Schema
Contm todas as definies de objetos e atributos que podem ser utilizados pelo servidor
LDAP. aqui que so definidos quais atributos so obrigatrios e quais so opcionais em
uma determinada classe, se um atributo deve receber uma string ou um nmero inteiro,
quais os critrios de pesquisa podem ser utilizados para um determinado atributo etc.

Relative Distinguished Name (RDN)


RDN o atributo que contm um nome nico dentro de um determinado nvel da DIT

Todo objeto deve possuir um atributo RDN


Recomenda-se utilizar atributos obrigatrios dos schemas desejados
possvel utilizar mais de um atributo para definir um RDN
Assim como no sistema de arquivos do Linux no podemos ter dois arquivos com o mesmo
nome dentro de um diretrio, no LDAP ns no podemos ter dois objetos com o mesmo
RDN dentro do mesmo nvel da nossa rvore, e o motivo muito simples: o nosso servio
de diretrio utiliza o RDN para identificar o nosso objeto, portanto, o RDN deve possuir um
valor nico dentro daquele nvel da nossa rvore.
O RDN o atributo que armazena o nome nico relacionado ao objeto imediatamente
superior, ou seja, podem existir vrios objetos com o mesmo RDN, desde que no estejam
no mesmo nvel da nossa rvore.

11 cn=Pedro Souza
11 ou=Rio de Janeiro
11 ou=funcionrios

Captulo 3 - Servidor LDAP

Exemplos de RDNs:

47

Distinguished Name (DN)


Forma de identificao de um objeto em relao a toda a base do LDAP

Formado pela concatenao do atributo RDN do objeto desejado mais os atributos RDN
de todos os objetos imediatamente anteriores at a raiz da base
11 Analogia com o sistema de arquivos do Linux:
22 RDN = caminho relativo de um arquivo
22 DN = caminho absoluto de um arquivo
O Distinguished Name ou DN a forma de identificao de um objeto em relao a toda
base do LDAP. Ele no um atributo do objeto, mas formado a partir da concatenao do
seu prprio atributo RDN seguido por todos os atributos RDN dos objetos superiores at
a raiz da rvore. Por exemplo: vamos voltar figura 3.6 onde escolhemos o vrtice Pedro
Souza, o RDN desse objeto cn=Pedro Souza, o objeto imediatamente superior possui o
RDN ou=funcionarios, o objeto imediatamente superior ou=funcionarios possui o RDN
ou=operacoes, o objeto imediatamente superior possui o RDN ou=Rio de Janeiro e por fim o
objeto imediatamente superior a raiz da nossa rvore. Se juntarmos todos esses atributos
RDN teremos o DN no nosso objeto: cn=Pedro Souza,ou=funcionarios,ou=operacoes,
ou=Rio de Janeiro,dc=rnp,dc=br.
Exemplos de DNs:
11 ou=Salvador,dc=rnp,dc=br
11 cn=funcionarios,ou=operacoes,ou=Rio de Janeiro,dc=rnp,dc=br
Podemos notar que o DN representado de baixo para cima na nossa rvore, ou seja, aps
localizarmos o objeto que desejamos identificar devemos seguir as arestas que o ligam at a
raiz da nossa DIT dessa forma conseguimos montar o caminho para chegar ele.
Para facilitar o entendimento podemos fazer uma analogia ao sistema de arquivos do Linux, onde:
11 RDN: caminho relativo de um arquivo, exemplo: resolv.conf;
11 DN: caminho absoluto de um arquivo, exemplo: /etc/resolv.conf.

Administrao de Sistemas Linux: Servios para Internet

dc= rnp,dc=br
RDN: dc=rnp,dc=br
DN: dc=rnp,dc=br
ou=Rio de Janeiro
RDN: ou=Rio de Janeiro
DN: ou=Rio de Janeiro,dc=rnp,dc=br
ou=operacoes
RDN: ou=operacoes
DN: ou=operacoes,ou=Rio de Janeiro,dc=rnp,dc=br
ou=funcionrios
RDN: ou=operacoes
DN: ou=funcionrios,ou=operacoes,ou=Rio de Janeiro,dc=rnp,dc=br
cn=Pedro Souza
RDN: ou=operacoes

DN: cn=Pedro Souza,ou=funcionrios,ou=operacoes,ou=Rio de Janeiro,dc=rnp,dc=br


ou=gerentes
RDN: ou=operacoes
DN: ou=gerentes,ou=funcionrios,ou=operacoes,ou=Rio de Janeiro,dc=rnp,dc=br

48

Figura 3.7
Exemplos de DN
e RDN.

Podemos utilizar qualquer atributo para determinar o RDN de um objeto, ficando a cargo
do administrador definir qual ser o mais indicado para cada caso. muito importante que
o RDN seja um atributo com valor nico para aquele ramo da rvore. Em caso de dvida
sobre qual atributo usar, recomendado utilizar algum atributo definido como obrigatrio
no schema. Existem casos em que possvel combinar dois ou mais atributos, formando um
multi-valued RDN.
Exemplo DN:
dn: cn=Pedro Souza+uid=psouza,ou=funcionarios,ou=operacoes,ou=Rio de
Janeiro,dc=rnp,dc=br

LDIF
Formato utilizado para comunicao com o diretrio LDAP

Compatvel com a grande maioria dos servios de diretrio


Arquivo de texto simples com sintaxe especfica:
<atributo>: <valor>
ATENO: Espaos no final da linha fazem parte do valor de um atributo
LDIF (LDAP Data Interchange Format) o formato utilizado para comunicao com o diretrio LDAP. Atravs dele podemos importar ou exportar informaes do diretrio, adicionar,
excluir ou modificar objetos, modificar configuraes do diretrio etc.
A maioria dos servios de diretrio suportam esse formato, garantindo assim grande
interoperabilidade entre eles. Um arquivo LDIF um arquivo de texto simples com a sintaxe
conforme exemplo a seguir:
# isso um comentrio
dn: <distinguished name>
<atributo> : <valor>
<atributo> : <valor>

Arquivo LDIF simples com duas entradas, onde cada nova entrada deve ser separada da
entrada anterior por uma linha em branco.
dn: ou=Salvador,dc=rnp,dc=br
objectclass: top
objectclass: organizationalUnit
ou: Salvador
dn: cn=Pedro de Souza,ou=funcionarios,ou=operacoes,ou=Rio de
Janeiro,dc=rnp,dc=br
objectclass: person
objectclass: organizationalPerson
cn: Pedro de Souza
sn: Souza
uid: psouza

Captulo 3 - Servidor LDAP

objectclass: top

49

Quando um valor possuir algum caractere especial, o nome do atributo dever possuir mais
um caractere :, seguido do valor do atributo codificado em base64.
Exemplo:
dn: uid=jsilva,ou=funcionarios,ou=operacoes,ou=Rio de Janeiro,dc=rnp,dc=br
objectClass: top
objectClass: account
objectClass: posixAccount
uid: jsilva
cn: Sm/Do28gZGEgU2lsdmEK
#cn: Joo da Silva
userPassword: {crypt}X5/DBrWPOQQaI
loginShell: /bin/bash
uidNumber: 1010
gidNumber: 1010
homeDirectory: /home/jsilva

Ao analisar esses exemplos, comeamos a identificar os atributos que sero utilizados pelo
nosso servidor LDAP. Vamos comentar com mais detalhes o ltimo exemplo.
11 Linha 1: Apresenta o Distinguished Name. atravs dele que conseguimos identificar de
maneira nica o objeto em nossa rvore. O atributo escolhido para o RDN foi o uid;
11 Linhas 2, 3 e 4: Descrevem quais so as objectClasses do nosso objeto, ou seja, so elas
que vo determinar quais sero os atributos que poderemos utilizar para caracterizar
nosso objeto;
11 Linha 5: Identificador do usurio UID;
11 Linha 6: Common Name, est codificado em base64, pois possui caracteres especiais;
11 Linha 7: Toda linha que comea com o caractere # ser ignorada;
11 Linha 8: Contm o hash da senha do usurio;
11 Linha 9: Define o shell do usurio;
11 Linha 10: Deve possuir um valor inteiro para identificao do usurio, equivalente ao UID
do Linux;
Administrao de Sistemas Linux: Servios para Internet

11 Linha 11: Deve possuir um valor inteiro para identificao do grupo primrio do usurio,

50

equivalente ao GID do Linux;


11 Linha 12: Caminho absoluto para o diretrio home do usurio.
Para criar o arquivo LDIF, voc precisar saber quais os atributos podem ser utilizados e o
que cada um representa. Conforme mencionamos anteriormente, essas definies podem
ser encontradas nos schemas que esto carregados no diretrio. Mais frente veremos
como consultar essas informaes.

Formas de conexo no LDAP


Conexo sem criptografia porta 389 TCP
Conexo com criptografia porta 636 TCP
Conexo atravs de socket arquivo de socket no servidor

Podemos nos conectar ao servidor LDAP de trs formas diferentes:


URL

Protocolo

Transporte

ldap:///

LDAP

TCP porta 389

ldaps:///

LDAP sobre SSL

TCP porta 636

ldapi:///

LDAP

IPC (Unix-domain socket)

Conforme mencionamos anteriormente o servidor LDAP utiliza a porta 389 TCP para
conexes sem criptografia e a porta 636 para conexes com SSL, entretanto caso o servidor
tenha sido configurado em uma porta diferente da padro devemos adicionar o caractere
: aps o nome/IP do servidor seguido do nmero da porta que dever ser utilizada para a
conexo, exemplo: ldap://192.168.0.1:123 ou ldaps://192.168.0.1:321.
Para conexes atravs de socket (IPC) o path completo do arquivo deve ser codificado e
informado na URL. Vamos supor que o socket corresponda ao arquivo /var/run/slapd/ldapi,
nesse exemplo a URL de conexo ser conforme exibida abaixo:
ldapi://%2var%2run%2slapd%2ldapi

Existem vrias formar de converter um PATH em uma URL vlida, vamos citar um exemplo
utilizando o perl:
perl -MURI::Escape -e print uri_escape(/var/run/slapd/ldapi);

Agora basta utilizar o caminho codificado na hora de realizar a conexo com o servidor:

Captulo 3 - Servidor LDAP

ldapadd -H ldapi://%2var%2run%2slapd%2ldapi -D cn=admin,dc=empresa,dc=com,dc=br

51

52

Administrao de Sistemas Linux: Servios para Internet

4
Entender melhor o funcionamento dos schemas e das classes de objetos, ativar
mdulos, habilitar o uso de criptografia na comunicao entre o cliente e o servidor,
conhecer os comandos para manipulao e configurao da base e conhecer alguns
clientes grficos.

conceitos

Schemas e classes de objetos, configurao de cliente, uso de criptografia na


comunicao entre o cliente e o servidor, formas de manipulao, configurao,
backup e restore da base.

Schemas
Obtendo informaes sobre os schemas carregados no servidor.

11 Primeiro passo
# slapcat -b cn=config| grep ^dn
11 Segundo passo
# slapcat -b cn=config -a cn={0}core
Para adicionar informaes base precisamos saber quais so os atributos que podem ser
utilizados para caracterizar nossos objetos, conforme mencionamos no captulo anterior, os
schemas so responsveis por definir como as informaes podero ser armazenadas na
nossa base. Para sabermos quais atributos podemos utilizar devemos consultar os schemas
que esto carregados no nosso servidor.
O primeiro passo utilizar o comando slapcat para listar o DN de todos os schemas carregados.
# slapcat -b cn=config| grep ^dn

O segundo passo utilizar novamente o comando slapcat para realizar o dump de um


schema desejado. Exemplo:
# slapcat -b cn=config-a cn={0}core

Outra forma de consultar os arquivos de schemas e acess-los dentro do sistema de arquivos.


Quando realizamos a instalao do openLDAP atravs dos repositrios os arquivos de schemas
mais comuns ficam armazenados no diretrio /etc/ldap/schema ou /etc/openldap/schema.

Captulo 4 - LDAP Avanado

objetivos

LDAP Avanado

Tanto os arquivos quanto a sada do comando slapcat esto no formato LDIF.


53

Classes de objetos
11 Criadas pela diretiva olcObjectClasses

11 Elementos da criao de uma ObjectClass:


22 OID
22 NAME
22 SUP
22 STRUCTURAL | ABSTRACT | AUXILARY
22 MUST
22 MAY
As diretivas olcObjectClasses criam as objectClasses que estaro disponveis no servidor.
Uma objectClass rene um conjunto de atributos e determina como os objetos devero ser
criados na base do servidor. Para um atributo ser utilizado em um objeto, ele precisa pertencer a uma classe de objetos.
olcObjectClasses: ( 2.5.6.6 NAME person DESC RFC2256: a person SUP top
STRUCTURAL MUST ( sn $ cn ) MAY ( userPassword $ telephoneNumber $ seeAlso $
description ) )

11 olcObjectClasses: inicia a definio de uma classe de objetos;


11 2.5.6.6: o Object Identifier (OID), nmero fornecido e gerenciado pela IANA, e deve ser
nico para cada atributo da base;
11 NAME: nome da classe de objetos;
11 SUP: define qual a objectClass imediatamente superior, formando assim uma hierarquia de classes de objetos;
11 STRUCTURAL: indica que essa classe pode armazenar valores na estrutura da base;
11 MUST: especifica quais so os atributos que devem ser obrigatrios;
11 MAY: lista de atributos opcionais.
Existem trs tipos de classes de objetos:

Administrao de Sistemas Linux: Servios para Internet

11 STRUCTURAL: podem armazenar valores na base;

54

11 ABSTRACT: classes que no existem de verdade, mas so necessrias por questes


de organizao;
11 AUXILARY: define as classes de objetos que fazem parte de outras classes, permitindo
melhorar o nvel de abstrao para definio dos objetos.

Atributos
11 Criados pela diretiva olcAttributeTypes

11 Principais elementos da criao de um atributo:


22 OID
22 NAME
22 EQUALITY
22 SUBSTR
22 SYNTAX
22 DESC
22 SUP
11 Vantagens e desvantagens de criar atributos e objectClasses
As diretivas olcAttributeTypes descrevem cada um dos atributos que fazem parte do
schema. Vamos analisar o exemplo do atributo name:
olcAttributeTypes: ( 2.5.4.41 NAME name

EQUALITY caseIgnoreMatch

SUBSTR caseIgnoreSubstringMatch

SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768})

11 olcAttributeTypes: indica que ser iniciada a definio do atributos;


11 2.5.4.41: o OID fornecido, gerenciado pela IANA e deve ser nico para cada atributo da
base;
11 NAME: nome do atributo;
11 EQUALITY: indica o comportamento do atributo e seus subordinados, quando for utilizando em filtros de pesquisa;
11 SUBSTR: indica o comportamento do atributo e seus subordinados, quando for utilizado
em filtros de pesquisa parcial usando caracteres curinga, como por exemplo, o caractere *;
11 SYNTAX: indica qual o OID do tipo de dado que ser armazenado nesse atributo.
O nmero entre chaves representa a quantidade de caracteres do atributo. O valor
1.3.6.1.4.1.1466.115.121.1.15 corresponde ao tipo Directory string syntax.
Existe tambm a diretiva SINGLE-VALUE, que determina que o atributo aceita apenas um
valor, quando essa no especificada o atributo pode receber vrios valores. Cada valor
separado por um caractere de espao.Agora veremos um exemplo de atributo que herda as
caractersticas de outro.

DESC RFC2256: organizational unit this objetct belongs to

SUP name)

11 olcAttributeTypes: indica que ser iniciada a definio do atributos;


11 2.5.4.11: o OID fornecido e gerenciado pela IANA e deve ser nico para cada atributo
da base;
11 NAME: nome do atributo;
11 DESC: descrio detalhada sobre o atributo;

Captulo 4 - LDAP Avanado

olcAttributeTypes: ( 2.5.4.11 NAME ou organizationUnitName )

55

11 SUP: indica qual o atributo imediatamente superior. Essa opo permite criar uma hierarquia de atributos. Dessa forma, o atributo herda as caractersticas do atributo name.
Podemos criar nossos prprios schemas para uma base LDAP. Entretanto, essa
escolha deve ser feita com muito critrio, pois ferramentas que no conhecem os
schemas que criamos no vo conseguir manipular os objetos corretamente.

Gerenciando schemas
11 Instalar novos schemas:

22 Possui o arquivo ldif


22 Adicion-lo a base ldap com o comando ldapadd
O modo de configurao cn=config no possui suporte para desinstalar um schema sem
parar o servidor.
Para instalar um novo schema no servidor, necessrio ter o arquivo no formato ldif e
adicion-lo a base com o comando a seguir.
# ldapadd -h 192.168.0.1 -w senhasecreta -x -D cn=admin,cn=config -f /caminho/
para/arquivo/novo-schema.ldif

O modelo de configurao cn=config ainda no possui suporte a excluso dos schemas carregados sem interromper o servio. Para remover um schema, ser necessrio parar o servidor e
excluir os arquivos correspondentes ao schema. O diretrio que contm os arquivos referentes
aos schemas carregados geralmente /diretorio_de_instalacao/ldap.d/cn=config/cn=schema.
Debian/Ubuntu
# cd /etc/ldap/ldap.d/cn\=config/cn\=schema

RedHat/CentOS
# cd /etc/openldap/ldap.d/cn\=config/cn\=schema

Exclua o aquivo ldif correspondente ao mdulo que deseja remover e em seguida inicie o
servidor.

Administrao de Sistemas Linux: Servios para Internet

# rm cn={idx}novo-schema.ldif

Mdulos
Funcionalidades adicionais podem ser carregadas em mdulos
O atributo olcModulePath contm a localizao dos mdulos no disco
Carregados atravs do atributo olcModuleLoad
O OpenLDAP um servidor que possui diversas funcionalidade organizadas em mdulos
que podem ser carregadas conforme a necessidade do administrador. Na rvore do diretrio os mdulos ficam organizados em cn=config,cn=modules. O atributo olcModulePath
define a localizao dos mdulos no disco, geralmente em /usr/lib/ldap, e os mdulos so
adicionados a partir de arquivos LDIF conforme o exemplo a seguir:
dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: nome-do-modulo

56

Manipulao da base
Comandos para manipulao da base

11 slaptest
11 slapcat
11 slapadd
11 slappasswd
11 slapindex
11 ldapsearch
11 ldapadd
11 ldapmodify
11 ldapdelete
11 ldapmodrdn
Saber manipular as informaes da base LDAP uma tarefa muito importante para um
administrador de sistemas e nem sempre temos ferramentas grficas para nos auxiliar
nessa tarefa. Eis os principais comandos disponveis no Linux para manipulao das informaes da base LDAP:
slaptest: utilizado para verificar a configurao do servidor openldap. Verifica tanto um
arquivo (formato antigo) quanto o diretrio cn=config(formato novo). Esse comando muito
til quando temos de fazer modificaes diretamente na base do servidor ou para realizar a
migrao do modo de configurao slapd.conf para o modo cn=config.
Testando a configurao de um arquivo:
# slaptest -f /etc/ldap/ldap.conf

Testando a configurao no formato cn=config


# slaptest -F /etc/ldap/slapd.d/

slapcat: gera um dump da base do servidor no formato LDIF. O parmetro -b permite escolher o sufixo da base que ser utilizado, e o parmetro -a permite o uso de filtros.
# slapcat -b cn=config
# slapcat -a (uid=aluno)

slapadd: adiciona novos objetos diretamente na base do LDAP, no precisando que o servidor esteja no ar. Pode receber um arquivo LDIF como entrada ou ler a partir da entrada
padro. Esse comando geralmente s est disponvel no servidor.

-h permite definir qual ser o algoritmo de criptografia da senha valores vlidos para o
parmetro -h: {CRYPT}, {MD5}, {SMD5}, {SSHA} e {SHA}.
Exemplos:
# slappasswd -h {SHA} -s minhasenha

slapindex: atualiza os ndices da base. O daemon do servidor no deve estar rodando


durante essa operao. possvel atualizar todos os ndices ou apenas os ndices desejados:

Captulo 4 - LDAP Avanado

slapppasswd: utilitrio para gerar senhas para serem utilizadas em arquivos LDIF. A opo

57

Exemplos:
# slapindex
# slapindex uid

ldapsearch: ferramenta para realizar pesquisas na base do servidor LDAP. Pode retornar
um ou mais objetos e possui uma srie de opes para criao dos filtros de pesquisa, ordenao, definio de escopo, verso do protocolo etc.
Exemplos:
Listando todos os objetos a seguir de ou=usuarios, dc=empresa, dc=com, dc=br
# ldapsearch -D cn=admin,dc=empresa,dc=com,dc=br -b ou=usuarios,dc=empresa,dc=c
om,dc=br -W

Exibindo somente os atributos uid e cn da consulta anterior:


# ldapsearch -D cn=admin,dc=empresa,dc=com,dc=br -b ou=usuarios,dc=empresa,dc=co
m,dc=br -W uid cn

ldapadd: conecta no servidor para adicionar um novo objeto base.


Exemplo: considerando que o arquivo /tmp/novousuario.ldif possua o contedo a seguir:
dn: uid=pedro,dc=empresa,dc=com,dc=br
objectClass: person
cn: pedro Silva
sn: silva
title: operador
mail: pedrosilva@empresa.com.br
uid: pedro
# ldapadd -D cn=admin,dc=empresa,dc=com,dc=br -W -f /tmp/novousuario.ldif

ldapmodify: permite realizar modificaes nos objetos da base. Recebe um arquivo LDIF
como parmetro ou l a partir da entrada padro. Se for usando com o parmetro -a tem a
mesma funo do comando ldapadd.
dn: uid=aluno,ou=usuarios,dc=empresa,dc=br

Administrao de Sistemas Linux: Servios para Internet

changetype: modify

58

replace: mail
mail: novoemail@dominio.com.br

Adicionando um novo atribuito a um objeto.


dn: uid=pedro,ou=usuarios,dc=empresa,dc=br
changetype: modify
add: telephoneNumber
telephoneNumber: 12 3456-7890

Excluindo um atributo de um objeto.


dn: uid=professor,ou=usuarios,dc=empresa,dc=br
changetype: modify
delete: mail
# ldapmodify -D cn=admin,dc=empresa,dc=br -w senhasecreta -f /tmp/arquivo.ldif

Caso o arquivo LDIF tenha mais de uma modificao, elas devem ser separadas por
uma linha em branco.
ldapdelete: exclui um objeto da base do LDAP.
# ldapdelete uid=aluno,ou=usuarios,dc=empresa,dc=com,dc=br

ldapmodrdn: modifica o RDN do objeto.


uid=aluno,ou=usuarios,dc=empresa,dc=com,dc=br
uid=aluno-novo
# ldapmodrdn -D cn=admin,dc=empresa,dc=com,dc=br -w senha -r -f /tmp/arquivo.ldif

Gerenciamento de Logs
11 Registra os logs via syslogd utilizando a facilidade LOCAL4

11 As modificaes devem ser feitas via arquivo LDIF


22 olcLogFile
22 olcLogLevel
O Openldap registra seus logs via syslogd usando a facilidade LOCAL4 por padro. Para realizar qualquer modificao do sistema de armazenamento de logs preciso criar um arquivo
LDIF com as diretivas adequadas.
11 olcLogFile: indica o caminho do arquivo de logs;
11 olcLogLevel: configura a sensibilidade do sistema de logs.
dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats
# ldapmodify -Y EXTERNAL -H ldapi:/// -f configuracao-log.ldif

Nmero

Hexa

Logname

Descrio

-1

0xFFFF

any

Habilita todos os tipos de log

0x0000

Desabilita o registro de logs

0x1

trace

trace function calls

0x2

packets

Habilita o registro de pacotes de debug

0x4

args

Pacotes de debug com mais informaes

0x8

conns

Gerenciamento da conexo

16

0x10

BER

Pacotes enviados e recebidos

32

0x20

filter

Registra apenas informaes referentes a filtros de


busca

64

0x40

config

Logs referentes as configuraes do servidor

128

0x80

ACL

Logs referentes ao processamento das ACLs

Captulo 4 - LDAP Avanado

A tabela a seguir apresenta os nveis de log que podem ser utilizados:

59

Nmero

Hexa

Logname

Descrio

256

0x100

stats

Registra os logs de operaes/conexes/resultados


de buscas (default)

512

0x200

stats2

Logs referente aos objetos enviados

1024

0x400

shell

Comunicao entre backends shell

2048

0x800

parse

Registra debug referente aos objetos acessados

4096

0x1000

cache

caching (no utilizado)

8192

0x2000

index

indexing (no utilizado)

16384

0x4000

sync

Logs de replicao (syncrepl)

32768

0x8000

none

Registra apenas mensagens crticas que no esto


categorizadas

Cliente LDAP
Para acessar os servios LDAP, o cliente pode utilizar os trs tipos de autenticao:

11 Annima
11 Simples
11 SASL
Para acessar os servios LDAP, o cliente deve se autenticar informando suas credenciais.
Aps esta etapa a aplicao direciona o cliente de acordo com o que ele pode ver e fazer.
No LDAP, a autenticao pode ser de trs tipos: annima, simples e SASL.
11 Annima: quando o cliente que envia um pedido de autenticao sem fazer um bind.
Ser tratado como um cliente annimo;
11 Simples: consiste em enviar ao servidor LDAP o DN do cliente e sua senha (no criptografada);
11 SASL (Simple Authentication and Security Layer): especifica um protocolo cujos dados
sero transferidos entre o cliente e o servidor utilizando canais encriptados, como SSL,

Administrao de Sistemas Linux: Servios para Internet

por exemplo, diminuindo assim a exposio da senha.

60

Pacotes para instalao cliente


11 PAM Pluggable Authentication Modules

22 Instalao
22 Configurao
11 NSS Name Service Switch
22 Instalao
22 Configurao
O PAM (Pluggable Authentication Modules) um conjunto de bibliotecas que so utilizadas
pelas aplicaes para autenticar os usurios no Linux, e o NSS (Name Service Switch) uma
interface que determina onde as bases de dados para autenticao sero obtidas. Precisaremos instalar e configurar os esses pacotes com suporte ao LDAP.

Debian/Ubuntu
# apt-get install libpam-ldap libnss-ldap

Um assistente ser executado logo aps a instalao dos pacotes. Responda as perguntas
de acordo com a configurao do seu ambiente.
Exemplo:
11 LDAP URI: ldap://192.168.0.1
11 DN da base: dc=empresa,dc=com,dc=br
11 Verso do protocolo suportada: 3
11 A base do LDAP necessita de login: no
11 Conta de administrador do LDAP: cn=admin,dc=empresa,dc=com,dc=br
11 Senha: senhasecreta
RedHat/CentOS
# yum install openldap openldap-clients nss-pam-ldapd

Aps a instalao, devemos executar o comando authconfig-tui, que vai iniciar uma interface
para auxiliar a configurao do cliente.
# authconfig-tui

Em Informaes do Usurio, marque Utilizar LDAP e em Autenticao marque a opo Utilizar


autenticao LDAP. Na prxima tela, informe o endereo do servidor LDAP e o DN da base.
Exemplo:
11 Servidor: ldap://192.168.0.10
11 DN da base: dc=empresa,dc=com,dc=br

Pluggable Authentication Modules


Aps esses procedimentos, os assistentes tero configurado os arquivos do PAM para
permitir o acesso de usurios da base do LDAP. Tambm podemos realizar as mudanas
manualmente editando os arquivos referentes a cada mdulo do PAM.
Debian/Ubuntu
auth

[success=1 default=ignore] pam_ldap.so use_first_pass

account

[success=1 default=ignore] pam_ldap.so

password

[success=1 user_unknown=ignore default=die] pam_ldap.so use_authtok

try_first_pass
optional pam_ldap.so

RedHat/CentOS
auth

sufficient

pam_ldap.so use_first_pass

account

[default=bad success=ok user_unknown=ignore] pam_ldap.so

password

sufficient pam_ldap.so use_authtok

session

optional pam_ldap.so

Captulo 4 - LDAP Avanado

session

61

Uma funcionalidade interessante que podemos explorar no PAM a possibilidade de o


sistema criar o homedir dos usurios automaticamente quando o login for realizado. Para
utilizar esse recurso, necessrio configurar a funcionalidade editando o arquivo correspondente ao mdulo session do PAM e adicionar a linha.
session

required pam_mkhomedir.so skel=/etc/skel umask=0022

Debian/Ubuntu
/etc/pam.d/common-session

RedHat/CentOS
/etc/pam.d/system-auth

Name Service Switch


Agora precisamos informar para o sistema de onde as informaes referentes aos logins e
senhas sero obtidas. Para isso precisamos editar o arquivo /etc/nsswitch.conf. O arquivo
organizado em duas colunas: a primeira indica o nome da base de dados e a segunda coluna
indica de onde o sistema vai obter as informaes referentes base. Podemos colocar
vrios valores para a segunda coluna, e o sistema vai listar os dados na ordem em que aparecem no arquivo.
Precisamos alterar a configurao para indicar que as bases de password, group e shadow
sejam consultadas a partir do servidor LDAP.
password:

ldap files

group:

ldap files

shadow:

ldap files

Dessa forma, o sistema vai consultar primeiro as informaes do servidor LDAP. Caso no
encontre, realizar a busca no sistema de arquivos do Sistema Operacional.
Utilize o comando getent para verificar se as configuraes funcionaram corretamente.
Como resultado deve aparecer uma relao com todos os usurios cadastrados no LDAP
mais os usurios locais. Para que a consulta seja somente aos usurios do LDAP basta
remover o parmetro files, entretanto se o servidor do LDAP estiver fora do ar no ser

Administrao de Sistemas Linux: Servios para Internet

possvel acessar a mquina com uma conta local.

Ao utilizar a autenticao do LDAP, recomendado desativar o daemon do nscd para


evitar o cache de informaes desatualizada.

Segurana do Servidor LDAP


11 Qual o valor da informao armazenada na base do servidor?
11 Qual problema o acesso indevido pode causar a empresa ou instituio?
11 Recurso ACL (Access Control List)
22 Sintaxe:
access to <o que> [ by <quem> [ <acesso> ] [ <controle> ] ]+
Um servio de diretrio pode ser utilizado para diversas finalidades, e quanto mais informao armazenada nele, mais cuidado devemos ter com a sua segurana. Um diretrio

62

pode conter dados confidenciais que no podem ser acessados por outros usurios ou ser
utilizado para controlar o acesso a um determinado servio. O acesso indevido a essas informaes pode causar grandes problemas para uma empresa ou instituio.
Um recurso que pode ser implantado para melhorar a segurana do sistema o uso de uma
lista de controle de acesso: ACLs no servidor LDAP, que permite controlar o que, quem e
como os dados podem ser acessados.
Sintaxe:
access to <o que> [ by <quem> [

<acesso> ] [ <controle> ] ]+

11 o que: atributo para o qual o controle ser aplicado;


11 quem: usurio ou elemento da base;
11 acesso: determina o nvel de acesso do parmetro quem;
11 controle: permite configurar como ser o comportamento da ACL.
Exemplo 1:
olcAccess: {0}to attrs=userPassword,shadowPassword,shadowLastChange

by self write

by annonymous auth

by dn=cn=admin,dc=empresa,dc=com,dc=br write

by * none

11 o que: atributos userPassword, shadowPassword e shadowLastChange


11 quem: self, annonyous, cn=admin,dc=empresa,dc=com,dc=br e *
11 acesso: write, auth, write e none
11 controle: no definido, est usando o valor padro (stop)
Essa ACL responsvel pelo acesso aos atributos userPassword, shadowPassword e
shadowLastChange, e controla quatro nveis de acesso:
11 1: usurio dono do atributo (self) tem permisso para alter-lo (write);
11 2: fora a autenticao, pois exigida a autenticao para usurios no autenticados
(annonymous);
11 3: usurio cn=admin,dc=empresa,dc=com,dc=br tem permisso para alterar os atributos;
11 4: todos os outros usurios que no se enquadram em nenhum dos controles anteriores
no tero permisso (none) para alterar esses atributos.
Exemplo 2:
olcAccess: {1}to dn.base= by * read
o que: dn.base=

Devido ordem de
interpretao das ACLs,
crie suas regras mais
restritivas primeiro e
depois siga com as
menos restritivas.

acesso: read

Essa ACL determina que todos os usurios tero acesso apenas de leitura aos objetos da
base. Uma soluo bem interessante para consultas genricas realizadas ao servidor.
Observe que as ACLs possuem um nmero entre os caracteres de chaves {N}. Esse nmero
um ndice que determina a ordem em que as ACLs sero interpretadas pelo servidor. Dessa
forma, no nosso exemplo, primeiro ser interpretada a ACL com o ndice 0 e, caso a conexo
no atenda a nenhum dos critrios, ser interpretada a ACL com ndice 1.

Captulo 4 - LDAP Avanado

quem: *

63

Criptografia das mensagens Cliente Servidor LDAP


11 Suporte aos mtodos criptogrficos:

22 SSL (Secure Sockets Layer)


22 TLS (Transport Layer Security)
Os servidores LDAP tem suporte aos mtodos criptogrficos Secure Sockets Layer (SSL) e
o Transport Layer Security (TLS), para estabelecer conexes seguras entre os clientes e o
servidor. A segurana de ambos est garantida pela biblioteca do OpenSSL e eles diferem
apenas na forma de funcionamento. Enquanto o modo SSL precisa que os clientes se
conectem a uma porta especfica (geralmente a 636), o modo TLS utiliza a porta padro do
LDAP, mas precisa que o cliente tenha um certificado vlido do servidor com a chave para
a criptografia das mensagens. A utilizao da criptografia impede que os pacotes trocados
entre os clientes e o servidor sejam lidos por outros usurios da rede.

Criando a Autoridade Certificadora


Para utilizar as vantagens necessrio:

11 Criar uma Autoridade Certificadora (AC)


11 Criar Certificados
11 Assinar certificados
Para usufruir das vantagens da criptografia, ser necessria a criao de uma Autoridade
Certificadora (AC) para emisso e assinatura dos certificados de todos os hosts envolvidos
na comunicao. O OpenSSL possui um script CA.sh, que cria a Autoridade Certificadora AC
dentro dos padres do sistema.
necessrio criar o diretrio onde os certificados sero armazenados.
# mkdir /etc/ldap/ssl

Execute o script CA.sh e responda as perguntas que sero feitas.


# /usr/lib/ssl/misc/CA.sh

-newca

Criando os certificados
Administrao de Sistemas Linux: Servios para Internet

Com a Autoridade Certificadora criada, podemos comear a emitir os nossos certificados.

64

Vamos utilizar o comando openssl para a criao do arquivo. Ateno ao preenchimento do


campo Common Name. Esse campo deve ser preenchido com o FQDN do nosso servidor.
# openssl req -new -nodes -keyout newreq.pem -out newreq.pem

Assinando o certificado
A Autoridade Certificadora ser a responsvel pela assinatura dos certificados dos servidores.
# /usr/lib/ssl/misc/CA.sh

-sign

recomendado renomear o arquivo para facilitar sua identificao.


Certificado da AC
# cp demoCA/cacert.pem cacert.pem

Certificado do servidor
# mv newcert.pem

servidor.pem

Chave do servidor
# mv newreq.pem

servidorkey.pem

Configurando o Transport Layer Security no servidor


Alterando a configurao do servidor LDAP

A configurao do TLS necessita de um arquivo LDIF, contendo as informaes apontando o


caminho para os certificados.
# vi /tmp/ssl.ldif
dn: cn=config
add: olcTLSCipherSuite
olcTLSCipherSuite: NORMAL
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ldap/ssl/cacert.pem
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ldap/ssl/servidor.pem
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ldap/ssl/servidorkey.pem

Com os certificados criados e o servidor OpenLDAP configurado, podemos forar que todas
as conexes sejam criptografadas para garantir que ningum conseguir acessar a base por
um meio inseguro. O atributo olcSecurity permite essa configurao. Essa configurao deve
ser realizada no arquivo security.ldif, e conter as configuraes da base do servidor.
# vi /tmp/security.ldif
dn: cn=config
changetype: modify
add: olcSecutiry
olcSecurity: ssf=1 update_ssf=112 simple_bind=64
# ldapmodify -Y EXTERNAL -H ldapi:/// -f /tmp/security.ldif

Para testar o funcionamento, adicione o parmetro -ZZ e faa referncia ao FQDN do servidor nas consultas.

=br -w senhasecreta -b dc=empresa,dc=com,dc=br

Configurando Secure Sockets Layer no servidor


Para habilitar o LDAP necessrio:
11 Ativar a porta 636 do servio ldaps
11 Configurar o cliente para usar SSL

Captulo 4 - LDAP Avanado

# ldapsearch -ZZ -H ldap://servidor.empresa.com.br D cn=admin,dc=empresa,dc=com,dc

65

A configurao do SSL necessita que o servio seja habilitado para a porta do ldaps. Para
isso, preciso editar o arquivo /etc/default/slapd.
SLAPD_SERVICES=ldap:/// ldapi:///

Por
SLAPD_SERVICES=ldap:/// ldapi:/// ldaps:///

Reinicie o servidor do OpenLDAP e teste a conexo informando o protocolo ldaps.


# ldapsearch -H ldaps://servidor.empresa.com.br -D cn=admin,dc=empresa,dc=com,dc=br
-w senhasecreta -b dc=empresa,dc=com,dc=br

Configurando o cliente SSL


Para que os clientes possam se conectar ao servidor utilizando o SSL, ser necessrio modificar a configurao do arquivo ldap.conf e informar a URI para o protocolo ldaps.
URI ldaps://servidor.empresa.com.br

O certificado da AC deve ser enviado e includo no diretrio de todos os clientes, informado


no parmetro TLS_CACERTDIR. possvel desabilitar a verificao do certificado comentando a linha TLS_CACERTDIR e adicionando a linha TLS_REQCERT never.

Replicao da base LDAP


11 Replicao Master X Slave

11 Replicao Master x Master


11 Diretrios distribudos
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, faz
com que a importncia de disponibilidade seja prioridade na infraestrutura. Em virtude disso,
configurar um ambiente que garanta alta disponibilidade dos servios cada dia mais comum
em grandes empresas. No sistema OpenLDAP existem duas tcnicas de replicao da base,
que so o slurpd e o syncrepl. O sluprd foi descontinuado a partir da verso 2.4 por apre Administrao de Sistemas Linux: Servios para Internet

sentar uma srie de limitaes que foram implementadas no syncrepl.

66

O syncrepl um mdulo do OpenLDAP que permite replicao do ambiente, onde o servidor


pode assumir duas funes distintas: Master (provedor) ou Slave (consumidor).

Replicao Master X Slave


Nesse modo de replicao, temos apenas um servidor mster, que o responsvel por executar todas as modificaes na base do LDAP, enquanto os servidores Slave apenas realizam
consultas e retornam as respostas para os clientes.

Modicaes de cliente
Atualizaes

Servidor 1

Servidor 2

master

slave

leitura

leitura

e escrita

Cliente
Figura 4.1
Replicao
Master x Slave.

Consultas

Replicao Master x Master


Em um ambiente de replicao Master x Master, temos dois ou mais servidores capazes de
atualizar as informaes da base do LDAP. Em alguns casos, essa soluo pode ser interessante, pois garantimos que alm da consulta as atualizaes tambm ficaro disponveis
caso um servidor Master falhe.

Provedor B
Replica

Provedor A

Replica
L

Escreve

Replica

Figura 4.2
Replicao
Master x Master.

Cliente

Provedor C

L e escreve

Diretrios distribudos
Esse modelo de replicao permite maior flexibilidade ao administrador. Alm de criar uma
cpia da base em outros servidores, podemos determinar quais informaes devem ser
replicadas para cada um. Para configurar esse modelo de replicao, necessrio utilizar o

Ferramentas grficas
Ferramentas grficas auxiliam a administrao da base do LDAP.
11 Apache Directory Studio
11 Phpldapadmin
11 LDAP Admin

Captulo 4 - LDAP Avanado

mdulo referral do OpenLDAP.

67

Como vimos at agora, a administrao da base do LDAP um pouco trabalhosa, pois precisamos criar arquivos LDIF para realizar qualquer tipo de modificao. Nesse aspecto, as
ferramentas grficas so um recurso muito interessante, pois auxiliam os administradores
menos experientes a gerenciar a base do servidor.
11 Apache Directory Studio: mantido pela Apache Software Foundation, uma ferramenta
muito completa que permite navegar pela base de dados, possui um editor de arquivos
LDIF, editor de schemas e multiplataforma, com verses em ingls, francs e alemo;
11 Phpldapadmin: aplicao web baseada em php, que permite navegar e gerenciar o servidor LDAP. Entre as suas funcionalidades podemos destacar: permite a criao e edio
dos objetos baseado em templates, cpias recursivas, suporte a importao e expor-

tao da base no formato LDIF, navegao em forma de rvore, incremento automtico


de nmeros UID etc.;
11 LDAP Admin: cliente LDAP para gerenciamento da base de dados, permite navegar,
pesquisar, modificar, criar, remover, copiar objetos entre servidores, importar e exportar
objetos em formato LDIF, suporte a SSL e o uso de templates.
Utilize o comando apropos para pesquisar em todos as pginas de manual pela palavra slapd.
# apropos slapd

Backup e Restore
11 Backup

slapcat
# slapcat > /tmp/backup.ldif
ldapsearch
# ldapsearch -D cn=admin,dc=empresa,dc=com,dc=br -w senhasecreta -b
dc=empresa,dc=com,dc=br -LLL > /tmp/backup.ldif
11 Restore
22 Indicando o arquivo que contm o backup da base
# slapadd -f /tmp/backup.ldif

Administrao de Sistemas Linux: Servios para Internet

22 Utilize o comando slapindex para recriar todos os ndices

68

# slapindex -v
22 Inicie o servidor do openLDAP.
# service slapd start
To importante quanto manter um servio bem configurado e funcionando ter a garantia
de recuperao contra possveis desastres. Gerenciar e monitorar a realizao do backup
uma tarefa muito importante de um administrador de sistemas. Para fazer o backup de uma
base LDAP, podemos utilizar os comandos slapcat ou ldapsearch. A sada desses comandos
ser um arquivo LDIF contendo todos os objetos da base que podero ser restaurados
quando necessrio.
Existem duas ferramentas que podemos utilizar para realizar o backup da base de dados do
LDAP, os comandos slapcat e ldapsearch.

Para mais detalhes


sobre as diretivas de
configuraes do
OpenLDAP, acesse a
documentao oficial
em www.openldap.org/
doc ou leia as pginas
de manual do Linux.

Backup
slapcat
# slapcat > /tmp/backup.ldif

ldapsearch
# ldapsearch -D cn=admin,dc=empresa,dc=com,dc=br -w senhasecreta -b
dc=empresa,dc=com,dc=br -LLL > /tmp/backup.ldif

A principal diferena que no comando slapcat no precisamos informar o DN do administrador da base. No comando ldapsearch, usamos a opo -LLL para garantir que a sada no
possuir nenhum tipo de comentrio ou informao referente verso do LDIF gerado.

Restore
Aps certificar-se de que a base do LDAP est vazia e que o servidor no est rodando,
execute o comando slapadd indicando o arquivo que contm o backup da base.
# slapadd -f /tmp/backup.ldif

Utilize o comando slapindex para recriar todos os ndices


# slapindex -v

Inicie o servidor do openLDAP.


# service slapd start

Atividade de Fixao e
Elaborando uma soluo de backup da base do LDAP
1. Crie um script que realiza o dump da base de dados, armazena o resultado em um
diretrio especfico, compacta o arquivo LDIF gerado e envia o relatrio para o e-mail do
administrador.

Captulo 4 - LDAP Avanado

2. Configure o cron para que esse script seja executado todos os dias s 23:00h.

69

70

Administrao de Sistemas Linux: Servios para Internet

5
Aprender a instalar e configurar o servidor web Apache, configurar servidores virtuais
e o servidor web seguro, usando certificados digitais, utilizao do arquivo.htacces
e gerenciamento de mdulos no servidor web Apache.

conceitos

Fundamentos de servidores web: arquitetura, esquema de funcionamento, protocolo


HTTP, servidor Apache, recursos comuns a servidores 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 e, por ltimo, so apresentados os recursos do servidor
web Apache, inclusive sua instalao, configurao e testes.

Conceitos fundamentais
World Wide Web (WWW (World Wide Web):

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.
11 O servidor armazena um conjunto de arquivos de dados que so transferidos para o
cliente.
11 Identificao de servidores, servios e arquivos de modo uniforme.
11 Uniform Resource Locator (URL)

Captulo 5 - Servidor web

objetivos

Servidor web

71

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. Esta
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 URL (Uniform
Resource Locator), 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 URL possui uma estrutura conforme ilustrada na figura 5.1.

11 Uniform Resource Locator (URL)

Protocolo://

servidor

[:porta]

caminho

arquivo

11 Protocolo: indica o servio desejado, exemplosHyper Text Trasnfer Protocol (HTTP), File
Transfer Protocol (FTP), File (para um arquivo local) etc.;
11 Servidor[:porta]: representa o endereo do servidor desejado, pode ser um nmero IP
ou um Fully Qualified Domain Name (FQDN) seguido do nmero da porta. Se nmero da
porta for omitido ser considerada a porta default para o protocolo utilizado;
11 Caminho: indica o caminho no sistema arquivos do servidor;
11 Arquivo: corresponde ao arquivo desejado.
11 Protocolo:

11 Indica o servio desejado:

Administrao de Sistemas Linux: Servios para Internet

11 Hyper Text Transfer Protocol (HTTP (Hyper Text Transfer Protocol).

72

11 File Transfer Protocol (FTP (File Transfer Protocol).


11 MAILTO (para correio eletrnico).
11 Terminal Network (Telnet (Terminal Network).
11 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.
Um servidor web pode possuir grande quantidade de informao, dispersa por uma grande
quantidade de arquivos e pastas.

Figura 5.1
Formato bsico
da URL.

11 Servidor [:porta]
11 Indica o endereo do servidor desejado.
11 Pode ser um Fully Qualified Domain Name (FQDN (Fully Qualified Domain Name):
nome da mquina, domnio e domnio de topo.
11 Ou somente o nome da mquina para acessos a partir da mesma rede.
11 Caminho:
11 Indica o caminho no sistema de arquivos do servidor web.
11 Arquivo:
11 Indica o arquivo desejado.

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.
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,
nesse caso, index.html.

URL / HTTP
HTML / MIME
Web Browser

Web Server

Internet

Web Browser

Web Server

Dispositivo
de arquivos

11 Servidor Web
11 Utilizam a porta TCP 80 por padro
11 Aps estabelecida uma conexo o cliente envia uma solicitao e o servidor envia
uma resposta.
11 O protocolo utilizado para comunicao o Hyper Text Transfer Protocol (HTTP)

Captulo 5 - Servidor web

Figura 5.2
Transferncia de
dados entre cliente
e servidor.

73

11 Cliente Web

22 O navegador, tambm chamado de browser, busca a pgina solicitada, interpreta o


contedo e apresenta as informaes.
22 Entre os navegadores mais conhecidos podemos citar: Google Chrome, Firefox,
Safary e Internet Explorer.

Servidor web
Os servidores web, por padro, ficam aguardando conexes na porta 80 TCP. Aps estabelecida
a conexo o cliente envia uma solicitao e o servidor envia uma resposta. O protocolo que
define as solicitaes e respostas vlidas chamado de Hyper Text Transfer Protocol (HTTP).

Cliente web
Disponibiliza um mecanismo de busca, transferncia e apresentao de dados contidos
em servidores web. O navegador, tambm denominado browser, busca a pgina solicitada,
interpreta seu texto, seus comandos de formatao e apresenta os dados na tela.Entre os
navegadores mais conhecidos hoje esto: Google Chrome, Firefox, Internet Explorer e Safari.
Existe tambm o Lynx, um navegador de linha de comando muito utilizado em testes e/ou
em computadores sem a interface grfica instalada.

Protocolo HTTP
Hyper Text Transfer Protocol (HTTP).

Protocolo utilizado para a transferncia de informaes na web, utilizando TCP.


11 HTTP/0.9
11 HTTP/1.0
11 HTTP/1.1
11 HTTP/2.0
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
Administrao de Sistemas Linux: Servios para Internet

formato Multipurpose Internet Mail Extensions(MIME), contendo metadados e modifica-

74

dores 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. A verso
HTTP/2.0 foi lanada em 18 de fevereiro de 2015, e representa uma mudana significativa
em relao verso anterior. A principal vantagem da nova verso permitir que as pginas
possam ser carregadas com maior velocidade. Para isso o protocolo vai trabalhar com multiplexao, permitindo que uma nica conexo baixe mltiplos arquivos simultaneamente e o
retorno desses arquivos ser feito de forma assncrona e paralela.

As verses mais recentes dos principais navegadores possuem suporte para a verso 2 do
protocolo j os servidores ainda esto em fase experimental de implementao, mas j
podem ser utilizados em ambientes de testes.
O HTTP um protocolo do tipo requisio/resposta, e toda comunicao feita atravs de
mensagens no formato ASCII (texto puro). Em uma comunicao tpica, o cliente solicita um
documento ao servidor e o servidor envia ou no o documento para o cliente. O servidor
no armazena nenhuma informao de estado entre as requisies. Isso porque cada requisio completamente independente da outra.
Uma mensagem HTTP formada por uma linha inicial que determina se a mensagem uma
requisio ou uma resposta, seguida por um conjunto de linhas que compem os cabealhos, uma linha em branco (delimitador do cabealho) e por fim o corpo da mensagem
(quando houver).
Mensagens HTTP

11 Formato da mensagem:
[ linha do tipo da mensagem ]
[ linhas de cabealho ]
linha em branco
[ corpo da mensagem ]
As mensagens do protocolo HTTP podem ser de dois tipos: requisio e resposta

Requisio (request)
Mensagem enviada pelo cliente (browser) para o servidor web.

Formato:
[Request Type] espao [URI] espao [HTTP version]
Cabealhos
Mtodos (Request Types):
11 GET
11 HEAD
11 PUT
11 POST
11 DELETE
11 LINK/UNLINK
Uma mensagem de requisio enviada por um cliente tem os seguintes campos: tipo de
requisio (mtodo), uma Universal Resource Identifiers (URI), verso do protocolo, uma
mensagem em formato tipo MIME contendo os cabealhos da requisio e informaes do
cliente e contedo (quando houver).
Formato de uma requisio feita pelo protocolo HTTP:
[Request Type] espao [URI] espao [HTTP version]
Exemplo:
GET /diretorio/pagina.html HTTP/1.1
Host: www.rnp.br

Captulo 5 - Servidor web

Mais informaes sobre


a verso 2 do protocolo
HTTP podem ser
encontradas nas RFCs
7540 e RFC7541.

User-agent: Mozilla/4.0

75

Os mtodos so utilizados tanto para solicitaes de pginas web quanto para o envio de
informaes inseridas pelos usurios nessas pginas. atravs deles que informamos ao
servidor o tipo de requisio que estamos realizando. Os principais mtodos so:
11 GET: recupera qualquer recurso identificado por uma URI disponibilizada do servidor. o
mtodo padro para requisies de contedo atravs de uma URL;
11 HEAD: idntico ao mtodo GET, entretanto no possui o corpo da mensagem na resposta;
11 PUT: solicita que o contedo da mensagem seja armazenado na URL especificada
no servidor;
11 POST: utilizado para enviar algum recurso para o servidor. Geralmente utilizado em
formulrios de pginas web;
11 DELETE: solicita que o servidor remova o recurso identificado na requisio;
11 LINK / UNLINK: conecta/finaliza a conexo existente entre dois recursos.

Cabealho (header)
Utilizados para enviar informaes adicionais

No fazem parte do contedo da mensagem


Existem quatro tipos de cabealhos HTTP:
11 General-header
11 Request-header
11 Response-header
11 Entity-header
Os cabealhos so utilizados para enviar informaes adicionais que no fazem parte do
contedo da mensagem. Cada campo do cabealho colocado em uma linha e o caractere
: separa o nome do valor do campo. Existem quatro tipos de cabealhos HTTP.
11 General-header: informaes adicionais sobre a mensagem transmitida;
11 Request-header: permite ao cliente enviar informaes referentes aos formatos dos
documentos esperados como resposta;
11 Response-header: permite ao servidor enviar informaes adicionais que no esto

Administrao de Sistemas Linux: Servios para Internet

presentes nas informaes de status;

76

11 Entity-header: utilizado para definir meta informaes sobre o corpo da mensagem.


A RFC2616 descreve todos os campos dos cabealhos HTTP.

Respostas (response)
Quando um servidor recebe um pedido ele sempre envia uma resposta para o cliente.
Toda resposta possui um cdigo de status
11 Formato das respostas:
[HTTP version] [Status code] [Status Message]
Cabealhos
--linha em branco
Resposta

Quando um servidor recebe um pedido, ele sempre vai retornar uma resposta ao cliente. As
respostas so enviadas 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 os cabealhos e o
corpo da mensagem.
Exemplo:
HTTP/1.1 200 OK
Date: Fri, 14 Aug 2015 02:29:07 GMT
Content-Type: text/html
[ Outros cabealhos... ]
<html>... Inicio do contedo da resposta

Cdigos de status
Toda resposta sinalizada com um cdigo de status. Esse cdigo utilizado para informar
se a requisio foi atendida ou no. Os cdigos so formados por trs dgitos e divididos em
cinco classificaes. O primeiro dgito representa a classificao e os outros dois identificam
o status dentro da classificao. A tabela a seguir apresenta os principais cdigos de status
do protocolo HTTP.
1xx - Informao

3xx - Redirecionamento

100 Continue

300

Multiple Choices

101

301

Moved Permanently

2xx - Sucesso

302 Found

200 OK

303

See Other

201 Created

304

Not Modified

202 Accepted

305

Use Proxy

203

Non-Authoritative Information

306

204

No Content

307

205

Reset Content

206

Partial Content

Temporary Redirect

4xx - Erro no cliente

5xx - Erro no Servidor

400

500

Internal Server Error

401 Unauthorized

501

Not Implemented

402

502

Bad Gateway

403 Forbidden

503

Service Unavailable

404

Not Found

504

Gateway Time-out

405

Method Not Allowed

505

HTTP Version Not Supported

406

Not Acceptable

407

Proxy Authentication Required

Bad Request

Payment Required

Captulo 5 - Servidor web

Switching Protocols

77

4xx - Erro no cliente


408

Request Timeout

409

Conflict

5xx - Erro no Servidor

410 Gone
411

Length Required

412

Precondition Failed

413

Request Entity Too Large

414

Request-URI Too Long

415

Unsupported Media Type

416

Requested Range Not Satis fiable

417

Expectation Failed

Testando a comunicao HTTP


O netcat uma ferramenta muito utilizada para testar a comunicao HTTP.

Tabela 5.1
Principais cdigos
de status do
protocolo HTTP.

Criando uma requisio:


11 $ nc http://www.rnp.br 80
11 GET / HTTP/1.1
11 Host: www.rnp.br
11 - - linha em branco - Para os administradores de servios, fundamental utilizar ferramentas que permitam
testar sua disponibilidade e que permita identificar de forma rpida as possveis causas
do problema. Uma ferramenta muito utilizada nos testes de comunicao entre cliente/
servidor HTTP o Netcat, que permite simular a comunicao permitindo visualizar as respostas enviadas pelo servidor.

O Netcat uma ferramenta utilizada para escrever dados em conexes de rede


Administrao de Sistemas Linux: Servios para Internet

usando o protocolo TCP/IP.

78

Criando uma requisio


# nc http://www.rnp.br 80
GET / HTTP/1.1
Host: www.rnp.br
- - linha em branco - -

Resposta recebida
HTTP/1.1 200 OK
Date: Fri, 14 Aug 2015 16:29:36 GMT
Server: Apache
Etag: 1439566915-0
X-Content-Type-Options: nosniff

X-Frame-Options: SameOrigin
Content-Language: pt-br
Link: </home>; rel=canonical,</node/1>; rel=shortlink
Cache-Control: public, max-age=0
Last-Modified: Fri, 14 Aug 2015 15:41:55 GMT
Expires: Sun, 19 Nov 1978 05:00:00 GMT
Vary: Cookie,Accept-Encoding
Transfer-Encoding: chunked
Content-Type: text/html; charset=utf-8
9133
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML+RDFa 1.0//EN
http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd>
...

Domnio virtual
Diferentes sites so hospedados em um mesmo servidor web.

Exemplos: www.exemplo.com e www.exemplo.org


Utilizado por grandes empresas e/ou provedores de internet.
Elimina a necessidade de mltiplos servidores.
Facilitando a administrao do servidor web.
Economia de recursos.
Hardware, software e infraestrutura.
Domnio Virtual (Virtual Hosting) uma tcnica que permite a hospedagem de mltiplos
sites no mesmo servidor, onde cada um deles contm 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 em um 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. Requer
menor quantidade de hardware e software;
11 Menor demanda de recursos de infraestrutura, como espao fsico, consumo de energia,
e de refrigerao.

DNS resolver cada um dos endereos utilizados, para isso devendo possuir um alias
(CNAME) para cada site hospedado.

Captulo 5 - Servidor web

Quando utilizado Domnio Virtual, deve-se ficar atento necessidade de o servidor

79

Servidores web
Existem vrios sistemas desenvolvidos para prover o servio web, podemos classificar

em dois grandes grupos:


Cdigo livre e licena GPL (ou similar):
11 Apache HTTP Server,
11 Nginx,
11 Lighttpd,
11 HTTP Explorer,
11 HFS HTTP File Server.
Cdigo fechado e licena proprietria:
11 IBM HTTP Server,
11 Internet Information Services,
11 LiteSpeed Web Server,
11 Oracle HTTP Server.
Existem grandes quantidades de sistemas desenvolvidos para prover o servio web, desde
licenciamento livre e proprietrio.
Cdigo livre e licena GPL (ou similar):
11 Apache HTTP Server;
11 Nginx, Lighttpd;
11 HTTP Explorer;
11 HFS HTTP File Server.
Cdigo fechado e licena proprietria:
11 IBM HTTP Server;
11 Internet Information Services;
11 LiteSpeed Web Server;

Administrao de Sistemas Linux: Servios para Internet

11 Oracle HTTP Server.

80

Aspectos relevantes para escolha do servidor web:


11 Autenticao
11 Criptografia
11 Domnio Virtual
11 Contedo dinmico
11 Facilidade de adicionar funcionalidades
11 Compactao de contedo
11 Restries a usurios e controle de banda
11 Modo de execuo

Ao avaliar as solues disponveis, deve-se levar em considerao alguns recursos que


devem ser considerados fundamentais em um servidor web, e daro peso na tomada de
deciso e escolha da soluo. Algumas delas so:
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

Captulo 5 - Servidor web

recursos do sistema, especialmente memria e processador.

81

82

Administrao de Sistemas Linux: Servios para Internet

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

conceitos

Proxy, soluo Squid, configuraes no servidor e no cliente, restrio de acesso a


contedo, redirecionamento, autenticao, proxy transparente.

Proxy
Tem por funo limitar o tipo de trfego.

Atua na camada de aplicao (7), analisando o contedo dos pacotes.


Pode barrar pacotes que contenham, por exemplo, palavras inapropriadas.
Diferentemente de um filtro de contedo que analisa trfego baseado em camada de
rede (3) ou de transporte (4).
Um servidor proxy atua como um intermedirio em uma rede, que recebe as requisies
das mquinas cliente e as encaminha para aos respectivos servidores de destinos. Quando
um cliente se conecta a um servidor proxy para solicitar uma pgina web ou um arquivo, o
servidor avalia a requisio do cliente e decide se encaminha o pedido para o servidor de
destino. Quando a requisio for respondida, o proxy encaminha a resposta para o cliente e
pode armazenar uma cpia localmente para atender uma nova requisio idntica no futuro.
Existem vrias aplicaes de proxy disponveis no mercado, como: Apache (utilizando o
mdulo mod_proxy), HAProxy, Microsoft ISA Server, Nginx, Privoxy, Squid, Varnish, WinGate,
Winconnection, Tinyproxy etc.
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

Captulo 6 - Servidor proxy Squid

objetivos

Servidor proxy Squid

lista proibitiva, tal como sexo. Todo pacote que contiver essa palavra ser descartado,
83

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, vo obtero
contedo 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.

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

Acesso internet efetuado atravs de um proxy.


Geralmente o proxy est associado a um firewall.
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
Administrao de Sistemas Linux: Servios para Internet

tanto na velocidade quanto no controle de acesso.

84

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 Melhoria na comunicao pessoal;
11 Comrcio eletrnico;
11 Distribuio e compartilhamento de contedo etc.

Figura 6.1
Funcionamento de
um proxy cache.

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 o uso
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.

Considerado simples e confivel.


Praticamente obrigatrio em qualquer tipo de organizao com servios de internet.
De pequenas empresas aos grandes provedores de acesso.
Funciona tanto como um servidor proxy quanto como um web cache.
Vantagens de um proxy (entre eles o Squid):
11 Capacidade de armazenar documentos da internet.
11 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
internet, desde pequenas empresas aos grandes provedores de acesso.
Foi originado de um projeto da ARPA, cujo mentor foi DuaneWessels, do NationalLaboratory
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

Mais informaes
podem ser obtidas na
pgina oficial do Squid:
http://www.squid-cache.org/.

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, podemos vetar a navegao em sites
pornogrficos, salas de bate-papo, servios de mensagens instantneas ou de compartilhamento de arquivos. Frequentemente associado a um firewall, estando inclusive instalado
na mesma mquina.

Captulo 6 - Servidor proxy Squid

servidor web.

85

Instalao
Debian/Ubuntu

# apt-get install squid3


RedHat/CentOS
# yum install squid
O Squid por ser instalado a partir do seu cdigo-fonte ou atravs de pacotes compilados
disponveis nos repositrios oficiais da maioria das distribuies.
Debian/Ubuntu
# apt-get install squid3

RedHat/CentOS
# yum install squid

Configurao
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 as ACLs, justamente para que se possa
perceber a efetividade de cada um.
Nas distribuies Debian/Ubuntu, o arquivo de configurao fica localizado no
diretrio /etc/squid3, e nas distribuies baseadas em RedHat/CentOS, o arquivo est
localizado no diretrio /etc/squid.

Principais parmetros de configurao:

11 http_port
11 auth_param
11 cache_mem
11 cache_dir

Administrao de Sistemas Linux: Servios para Internet

11 access_log

86

11 visible_hostname
11 acl
11 http_access
Principais parmetros de configurao:
11 http_port: nmero da porta utilizada pelo servidor, em geral 3128;
11 auth_param: define qual ser o mtodo de autenticao que o squid vai utilizar.
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: arquivo que armazenar o PID do processo do Squid;
11 visible_hostname: nome do host apresentado em mensagens de erro;
11 cache_effective_user: usurio dono dos processos criados pelo Squid;
11 cache_effective_group: grupo do dono dos processos criados pelo Squid;
11 acl: cria um elemento de ACL;
11 http_access: controle de acesso para protocolo http.

Listas de controle de acesso


Access Control Lists (ACLs) so regras de acesso utilizadas pelo sistema para controlar

quem pode acessar o que e quando.


11 As diretivas do arquivo squid.conf so lidas de cima para baixo
11 A ltima regra deve sempre bloquear todas as solicitaes de acesso
11 No criar regras redundantes, desnecessrias ou que exijam resoluo DNS
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.
Para um bom entendimento do funcionamento das ACLs, necessrio considerar:
11 As diretivas do arquivo squid.conf so lidas de cima para baixo. Cada solicitao de acesso
comparada com cada regra 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, pois isso
pode acabar reduzindo 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 do Squid so compostas por dois elementos distintos: elemento de ACL (ACL element)
por exemplo, os pacotes originados na rede 192.168.0.0/24, enquanto uma lista de acesso
corresponde a permitir ou rejeitar a passagem de um pacote pelo servidor.
acl rede src 192.168.0.0/24

--- elemento de ACL

http_access deny rede

--- lista de acesso

Principais tipos de elementos de ACL:


11 src: endereo IP de origem (cliente);
11 dst: endereo IP de destino (servidor);

Captulo 6 - Servidor proxy Squid

e lista de acesso (accesslist). Um elemento de ACL o que caracteriza um determinado pacote,

87

11 myip: til quando o servidor possuir mais de um endereo na mesma rede, serve para
determinar atravs de qual endereo IP o servidor recebeu o pacote;
11 arp: Ethernet (MAC) address;
11 srcdomain: nome de domnio do cliente;
11 dstdomain: nome de domnio do servidor;
11 srcdom_regex: expresso regular para nome de domnio do cliente;
11 dstdom_regex: expresso regular para nome de domnio do servidor;
11 src_as: nmero do Sistema Autnomo da origem (cliente);
11 dst_as: nmero do Sistema Autnomo do destino (servidor);
11 time: data e hora;
11 url_regex: expresso regular para URL;
11 urlpath_regex: expresso regular para URL-path, no considerando protocolos e hostnames;
11 port: porta de destino do servidor;
11 myport: nmero da porta local na qual o cliente se conectou;
11 myportname: nome da porta local na qual o cliente se conectou;
11 proto: protocolo de transferncia (http, ftpetc.);
11 method: mtodo HTTP (get, post etc.);
11 http_status: cdigo de status do protocolo HTTP (200 302 404 etc.);
11 browser: expresso regular para o cabealho user-agent das requisies HTTP;
11 referer_regex: expresso regular para o cabealho http-referer das requisies HTTP;
11 ident: nome do usurio;
11 ident_regex: expresso regular para nome do usurio;
11 proxy_auth: autenticao de usurios por um agente externo;
11 proxy_auth_regex: expresso regular para autenticao de usurios por um agente externo;
11 snmp_community: string que indica o nome da comunidade SNMP;
11 maxconn: limite mximo de conexes feitas por um nico endereo IP (cliente);
11 max_user_ip: limite mximo de endereos IP que um usurio pode se autenticar ao proxy;

Administrao de Sistemas Linux: Servios para Internet

11 req_mime_type: expresso regular para o cabealho content-type das requisies HTTP.


Principais tipos de listas de acesso:
11 http_access: controla o acesso porta http;
11 icp_access: permite que caches vizinhos faam requisies ao seu cache atravs do
protocolo ICP;
11 miss_access: permite o encaminhamento (forward) atravs do cache do servidor;
11 no_cache: define respostas que no devero ser armazenadas no cache;
11 always_direct: requisies que sero sempre encaminhadas diretamente aos servidores
de origem;
11 never_direct: requisies que nunca sero encaminhadas diretamente aos servidores
de origem;
11 snmp_access: controla acesso ao agente SNMP do squid;
11 cache_peer_access: define quais requisies sero encaminhadas a um servidor cache
vizinho.
88

w
A lista completa de
elementos de ACL e
listas de acesso podem
ser encontrados em
http://wiki.squid-cache.
org/SquidFaq/SquidAcl

Baseada na URL
Fazendo o uso de expresses regulares, podemos criar uma ACL que restrinja o acesso a
URLs que casam com um determinado padro. No exemplo a seguir criaremos uma ACL que
vai negar o acesso a qualquer URL que termine com os caracteres .mp3. Isso pode ser til
para impedir o download de msicas.
acl

mp3 url_regex

-i

http_access deny all

.*\.mp3$

mp3

Data e hora
ACL com controle de data e hora, permitindo que determinados endereos IP acessem a internet
em um intervalo de tempo determinado. Para esse exemplo precisaremos criar dois ACL
elements, o primeiro chamado usurios para determinar a origem das requisies, enquanto
o segundo, chamado almoo, definir o horrio e os dias da semana em que o acesso ser liberado. Quando o Squid avaliar regras, os pacotes recebidos da rede 192.168.0.0/24, de segunda
a sexta entre 12h00 e 13h55 sero liberados. Se os critrios dos elementos de ACL usurios e
almoo no forem satisfeitos, essa regra no ser executada, e o Squid vai avaliar a prxima
regra que nega o trfego http dos pacotes da rede 192.168.0.0/24.
acl

usuarios

acl

almoco

src

time

192.168.0.0/24
MTWHF

http_access

allow

http_access

deny

12:00-13:55

usuarios

almoco

usuarios

Utilizando arquivos externos


Podemos utilizar arquivos externos para complementar a configurao de nossas ACLs.
No exemplo a seguir vamos criar o arquivo /etc/squid/ips-bloqueados.conf com uma lista de
endereos IP que sero utilizados na criao do nosso elemento de ACL. Chamaremos esse
elemento de ACL de bloqueados e, em seguida, utilizaremos o controle de acesso http_access
para negar o acesso. O arquivo deve conter apenas um endereo IP por linha.
# vi

/etc/squid/ips-bloquados.txt

192.168.0.20
192.168.0.54
192.168.0.68
acl

bloqueados src

http_access deny

/etc/squid/ips-bloquados.conf

bloqueados

No squid a diretiva auth_param responsvel pela configurao do esquema de autenticao


do servidor e com ela podemos definir diversos mtodos de autenticao. O cliente utilizar
o esquema que for mais conveniente de acordo com a ordem das diretivas auth_param no
arquivo de configurao.
Sintaxe:
auth_param

esquema

parmetros

[configuraes]

Captulo 6 - Servidor proxy Squid

Autenticao

89

Esquemas
A diretiva auth_param responsvel pela configurao do esquema de autenticao, os

trs pricipais esquemas so:


11 Basic
11 Digest
11 Ntlm
Basic
o esquema mais simples e transmite o login e a senha do usurio em texto puro ou como
um conjunto de caracteres codificados em base64. Existem vrios programas que podem
ser utilizados pelo squid para explorar esse esquema de autenticao. Esses programas
geralmente so ativados usando a diretiva --enable-basic-auth. Como exemplo podemos
citar os helpers NCSA, NIS, LDAP, PAM, SASL, MSNT-multi-domain, getpwnam etc.Parmetros
especficos do esquema basic:
11 credentialsttl timetolive: define por quanto tempo a autenticao ser vlida;
11 casesentivive on|off: especifica se nomes de usurios sero case sensitive.
Digest
Mais seguro que o sistema basic, utiliza funes de hash para criptografar as mensagens
envidas pelos agentes de usurio. Os programas helpers so ativados com a diretiva
--enable-auth-digest. O esquema digest adiciona o conceito de nonce (nmero utilizado
uma vez). O nonce um nmero aleatrio gerado pelo squid e utilizado para melhorar a
segurana na troca de mensagens.
Parmetros especficos do esquema digest:
11 nonce_garbage_interval time: intervalo de tempo em que o squid vai limpar o cache nonce;
11 nonce_max_duration time: tempo que um nonce ser vlido;
11 nonce_max_count nmero: nmero mximo de vezes que um nonce pode ser utilizado.
Ntlm
Interface de comunicao entre o squid e o protocolo NT LanMan, da Microsoft, permite que
Administrao de Sistemas Linux: Servios para Internet

o navegador do cliente troque pacotes NTLMSSP com o programa autenticador at que a


autenticao seja concluda. Os programas helpers so ativados atravs da diretiva --enableauth-ntlm. Parmetros especficos do esquema ntlm:
11 keep_alive on|off: faz com que o squid force o fechamento das conexes iniciais
durante a negociao do esquema de autenticao com o browser.

Parmetros comuns para todos os esquemas


11 program cmdline
11 realm string
program cmdline

Determina o caminho completo do programa que ser utilizado para realizar a autenticao.
realm string
Texto que ser apresentado aos usurios durante a solicitao de autenticao.

90

l
No possvel utilizar a
autenticao em um
ambiente configurado
com proxy transparente. Para usufruir
dessa funcionalidade
ser necessrio que o
endereo do servidor
proxy e porta estejam
explicitamente
configurados nas
mquinas cliente.

children number of children [startup=N] [idle=N] [concurrency=N] [queue-size=N]


Especifica o nmero de processos que sero utilizados para gerenciar os pedidos de
autenticao do squid. Caso todos os processos estejam ocupados, as novas requisies de
autenticao ficaro em uma fila aguardando para serem atendidas.
11 startup: permite definir o nmero inicial de processos de autenticao;
11 idle: especifica o nmero de processos que devem ficar disponveis para atender as
requisies de autenticao at o limite determinado em numberofchildren;
11 concurrency: nmero de requisies concorrentes que cada processo poder responder.
O valor default 0, garantindo que cada processo trate apenas uma requisio por vez;
11 queue-size: nmero mximo de requisies que podem ficar na fila. As requisies que
ficarem por mais de trsminutos acima do limite da fila sero abortadas pelo squid. O
valor default 2*numberofchildren.
Exemplos de configurao
Autenticao NTLM com controlador de domnio SAMBA.
auth_param

ntlm

/usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp

auth_param

ntlm

realm Proxy Squid

auth_param

digest children 20 statup=0 idle=1

auth_param

ntlm

keep_alive on

Autenticao Digest usando arquivo com login e senha.


auth_param

digest

program /usr/lib/squid3/digest_file_auth

-c /etc/squid3/

password-file
auth_param

digest

realm Proxy Squid

auth_param

digest

children 10 statup=0 idle=1

auth_param

digest

nonce_garbage_interval 5 minutes

auth_param

digest

nonce_max_duration 30 minutes

auth_param

digest

nonce_max_count 50

Autenticao bsica usando arquivo com login e senha.


auth_param

basic

program /usr/lib/squid3/basic_ncsa_auth

auth_param

basic

realm Proxy Squid

auth_param

basic

children 10 statup=0 idle=1

/usr/etc/passwd

Autenticao bsica usando LDAP.


auth_param

basic

program /usr/lib/squid3/basic_ldap_auth -v 3 -R -b

-f uid=%s -H ldap://192.168.0.1
auth_param

basic

realm Proxy Squid

auth_param

basic

children 10 statup=0 idle=1

A diretiva auth_param apenas determina como o squid vai processar a autenticao. Para
que possa ser solicitada a autenticao do usurio, ser necessrio utilizar ACLs baseadas
em login como proxy_auth, proxy_auth_regex etc.
acl

autenticados

http_access

allow

proxy_auth

REQUIRED

autenticados

Captulo 6 - Servidor proxy Squid

dc=empresa,dc=com,dc=br -D cn=admin,dc=empresa,dc=com,dc=br -w senha-secreta

91

Configurao dos navegadores


A maioria dos navegadores do mercado tem suporte a configurao de Proxy.

11 Firefox
11 Internet Explorer
11 Google Chrome
A maioria dos navegadores disponveis no mercado podem ser configurados para acessar a
internet atravs de um servidor 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: acesse o menu Editar> Preferncias> Avanado>Rede, determine
como o Firefox conecta-se internet, faa a configurao manual do proxy e, finalmente,
informe 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 sesso Servidor proxy, marque a opo para usar um servidor proxy e
informe o endereo IP e a porta utilizada pelo servidor proxy;
11 Google Chrome: acesse as configuraes do navegador atravs da URL chrome://settings.
Na opo Rede, clique sobre o boto Alterar configuraes de proxy.... O Google Chrome
utiliza as configuraes de proxy do Sistema Operacional, portanto a janela de configurao padro do sistema utilizado ser aberta para a configurao.

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

Administrao de Sistemas Linux: Servios para Internet

de trfego.

92

Desse modo, o uso de proxy fica oculto, 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:
11 Certificar-se de que o servidor Linux est com o encaminhamento de pacotes ativado
(ip_forward)
11 Certificar-se de que o Squid foi compilado/instalado com suporte ao Proxy transparente
11 Incluir as regras no Iptables

Para configurao do proxy transparente, so necessrias trs etapas:


1. Certificar-se de que o Linux est com ao encaminhamento de pacotes ativado (ip_forward)
Essa funcionalidade permite que o Linux faa o encaminhamento de pacotes entre as
interfaces de rede. Para verificar qual a configurao atual do seu sistema, execute o
comando a seguir:
# cat /proc/sys/net/ipv4/ip_forward

O valor 0 indica que a funcionalidade est desativada e o valor 1 indica que ela est ativada.
Para ativar durante a execuo do sistema, faa:
# echo 1 > /proc/sys/net/ipv4/ip_forward

Ou:
# sysctl -w net.ipv4.ip_forward=1

Para ativar permanentemente, edite o arquivo /etc/sysctl.confe altere o valor da opo


ip_forward para 1.
# vi /etc/sysctl.conf
net.ipv4.ip_forward=1

Para aplicar a modificao sem precisar reiniciar a mquina.


# sysctl -p /etc/sysctl.conf

2. Certificar-se de que o Squid foi compilado e configurado com suporte ao proxy transparente:
Se o squid foi compilado, importante certificar-se de que a opo --enable-Linux-netfilter foi
utilizada; caso contrrio, ser necessrio recompilar o software adicionando essa opo. Para as
verses instaladas a partir do repositrio, essa funcionalidade j vem habilitada por padro.
Utilize o comando squid -v para verificar todas as opes que foram utilizadas na compilao
do squid.
Debian/Ubuntu
# squid3 -v

RedHat/CentOS
# squid -v

Para configurar o squid em modo transparente, devemos editar o arquivo de configurao e

http_port 3128 transparent

Salve o arquivo e reinicie o squid.


3. Incluir uma regra no firewall iptables:
Incluir uma regra no firewall iptables para redirecionar o trfego da porta 80 para o Squid
(porta 3128):
# Redirecionar os pacotes da porta 80 para porta 3128
iptables -t nat -A PREROUTING -s 192.168.0.0/255.255.255.0 -p tcp --dport 80 -j

Captulo 6 - Servidor proxy Squid

adicionar a opo transparent na diretiva http_port.

REDIRECT --to-port 3128

93

#Ativar o servio de NAT


iptables -t nat -I POSTROUTING -s 192.168.0.0/255.255.255.0 -j MASQUERADE

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
dois casos:
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.
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 Squirm: baseado em expresses regulares, rpido e com baixo consumo de memria;
11 Jesred: derivado do squirm 1.0 betaB, chega a ser de duas a trs vezes mais rpido que a
verso original;
11 SquidGuard: baseado em blacklists e permite autenticao em uma base dados MySQL
ou LDAP;

Administrao de Sistemas Linux: Servios para Internet

11 DansGuardian: sua principal diferena est na utilizao de um filtro adaptativo que

94

avalia o contedo das pginas acessadas e, baseado em um conjunto de regras, decide se


a pgina ser acessvel ou no.

Relatrios
Ferramenta fundamental para o administrador de sistemas

Auxilia no monitoramento do bom uso da rede


Argumento para solicitao de novos recursos para infraestrutura
Implementar restries no acesso Internet uma tima alternativa para impedir que os
usurios utilizem a rede para fins que esto em desacordo com as polticas da empresa,
entretanto, sabemos que praticamente impossvel mapear todos os endereos que devem
ser bloqueados. Ora somos restritivos demais e acabamos proibindo o acesso a sites autnticos, ora somos permissivos demais, permitindo que muitos usurios acessem pginas que
provavelmente estariam bloqueadas.

Em um ambiente com o
squid configurado
como servidor proxy, o
Sarg a principal
ferramenta para
gerao de relatrios.

Um administrador de sistemas deve estar preocupado com a qualidade do acesso internet


na sua rede. Ele deve garantir que os recursos esto sendo utilizados da maneira mais
adequada aos objetivos da empresa. Uma boa ferramenta para isso a emisso de relatrios peridicos que permitem identificar os horrios de pico de utilizao, URLs suspeitas,
usurios que esto fazendo mal uso dos recursos computacionais, entre outras.

Sarg
Gera os relatrios baseado nos logs do servidor squid.

Funcionamento simples: o sarg l o arquivo de log do squid e gera um arquivo HTML


com relatrio.
Informaes agrupadas pelo IP ou login do usurio do squid.
O Sarg (Squid Analysis Report Generator) uma ferramenta que permite ao administrador
gerar relatrios baseados nas informaes armazenadas nos logs do sevidor proxy squid.
Com esses relatrios, podemos identificar quais pginas foram mais acessadas pelos usurios, total de consumo de banda, data e hora do acesso, entre outras informaes.
O funcionamento simples: o Sarg l o arquivo de log gerado pelo squid (geralmente o
arquivo /var/log/squid/access.log) e cria um conjunto de pginas HTML contendo as informaes de relatrio. As informaes so agrupadas pelo endereo IP das mquinas e, caso o
squid esteja configurado para exigir autenticao, o login dos usurios ser exibido ao invs
do endereo IP.

Instalao
A instalao pode ser feita atravs do pacote disponvel nos repositrios da distribuio ou
atravs da compilao do cdigo-fonte. Como existem distribuies que no possuem o pacote
do sarg em seus repositrios oficiais, vamos abordar a instalao a partir do cdigo-fonte.
Para instalao a partir do cdigo-fonte, ser necessrio satisfazer algumas dependncias
para prosseguir com a instalao. A mquina precisar teros pacotes:
11 Compilador gcc;
11 Bilioteca GD e arquivos de desenvolvimento (gd e gd-devel);
11 make;
11 autoconf;
11 perl-GD;
11 Servidor web.
Obtenha a verso mais recente do sarg no site oficial: http://sourceforge.net/projects/sarg/.
Descompacte o arquivo e acesse o diretrio que contm o cdigo-fonte:
# tar
# cd

zxvf sarg-versao.tar.gz
sarg-versao

Configure o ambiente e inicie a compilao.


#./configure
# make
# make

install

Captulo 6 - Servidor proxy Squid

95

Configurao
O arquivo sarg.conf contm as diretivas de configurao do Sarg. Os principais parmetros so:
LANGUAGE
Permite definir qual ser a linguagem dos relatrios gerados
output_dir
Indica o caminho onde os arquivos HTML sero gerados. Para que os relatrios fiquem disponveis atravs do navegador, esse diretrio deve ser acessvel pelo servidor web.
access_log
Especifica o caminho para o arquivo de log do squid que ser utilizado para gerar o relatrio.
Gerando os relatrios
O comando sarg gera os relatrios de acesso de acordo com o arquivo de configurao.
O parmetro -d utilizado para definir um intervalo de datas para a gerao dos arquivos
de relatrio. Exemplo:
Gera o relatrio de acesso do dia 25 de outubro de 2015.
# sarg -d 25/10/2015-25/10/2015

Todos os parmetros de execuo do sarg podem ser visualizados com o comando sarg -h.
Caso no seja especificado um intervalo de data, o sarg vai gerar o relatrio agrupando todo
o perodo de acesso registrado no arquivo de log.
Para visualizar os relatrios acesse, via browser, o diretrio configurado no parmetro
output_dir no servidor web.Exemplo:

Administrao de Sistemas Linux: Servios para Internet

http://192.168.0.1/squid-reports

96

l
Fique atento ao
rotacionamento dos
logs! Para relatrios
dirios, configure o
rotacionamento de logs
do squid para daily e
deixe a ltima verso
sem compactao. No
sarg configure o
parmetro access_log
para ler o arquivo de
log rotacionado. Ex: /
var/log/squid/access.
log.1 e configure o
crontab para executar
o comando sarg.

7
Projetar, instalar e configurar um servidor de correio eletrnico Postfix; Entender o
funcionamento do correio eletrnico e dos protocolos SMTP, POP e IMAP;
Conhecer os recursos da ferramenta Postfix.

conceitos

Servidor Postfix; Teste do servio 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.

Correio eletrnico
Tambm denominado e-mail (eletronic mail).

Desenvolvido para permitir a troca de mensagens entre usurios por meio eletrnico.
Permite o envio de arquivos anexados s mensagens.
Documentos, planilhas, imagens, vdeos etc.
O correio eletrnico um dos servios mais usados na internet, permitindo que usurios
conectados em qualquer ponto da rede troquem mensagens. Atravs dessas mensagens
podem ser enviados textos e arquivos anexados, como documentos, planilhas, 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.

Captulo 7 - Servidor de correio eletrnico (parte 1)

objetivos

Servidor de correio eletrnico


(parte 1)

97

Figura 7.1
Troca de
mensagem.

O protocolo IMAP4, denominado IMAP verso 4 reviso 1, orientado conexo e


utiliza a porta TCP 143.

Origens do correio eletrnico


Criado originalmente em 1965 para a troca de mensagens entre usurios de mainframes.

Em 1966, j permitia a troca de mensagens entre diferentes computadores.


Em 1971 surgiu o smbolo @.
Com o surgimento da internet, seu uso foi multiplicado.
O correio eletrnico foi criado em 1965, originalmente para troca de mensagens entre usurios de computadores de grande porte. Logo foi adaptado para troca de mensagens por meio
de terminais remotos. Em 1969, j com a ARPANET, surgiu o uso do smbolo @ como separador
entre nome de usurio e domnio. Com a internet, a utilizao do e-mail foi multiplicada,
tornando-se, em conjunto com o acesso s pginas 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

Administrao de Sistemas Linux: Servios para Internet

MUA1

Durante o processo de envio de mensagens so utilizados dois tipos de programas: de transporte e de usurio (tambm denominados respectivamente de agentes de transferncia
de mensagens e agentes 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.
Agentes de transferncia de mensagens ou Mail Transfer Agent (MTA):
11 Permitem o deslocamento das mensagens da origem ao destino;
11 So os programas (daemons) que executam no ISP (provedor de internet);
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: Eudora, Evolution, KMail, Outlook
e Mozilla Thunderbird.

98

MUA2

Figura 7.2
Funcionamento do
correio eletrnico.

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

Transfere mensagens de maneira confivel e eficiente.


No depende do subsistema de transmisso.
Requer somente um meio de transmisso confivel.
Orientado a conexo e utiliza o TCP.
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 SMTPdestino final, quanto um intermedirio. Os comandos so gerados pelo SMTP-origem e
enviados ao SMTP-destino. As respostas fazem o caminho inverso.

Figura 7.4
Protocolo SMTP.

SMTP - origem

Comandos / Respostas SMTP


e mensagens (mail)

SMTP - destino

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 somente

Captulo 7 - Servidor de correio eletrnico (parte 1)

-origem estabelece uma conexo com o SMTP-destino. O SMTP-destino pode tanto ser o

um ponto (<CRLF>.<CRFL>). Aps o envio dos dados, o SMTP-destino confirma com OK.
99

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:


SMTP-origem (S): MAIL FROM:<Smith.Alpha.ARPA>
SMTP-destino (R): 250 OK
S: RCPT TO:Jones@Beta.ARPA
R: 250 Ok
S: DATA
R: 354 Start mail input; end with <CRLF>.<CRLF>
S: ...etc. etc. etc.
S: <CRLF>.<CRLF>
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>
11 421 <domain> Service not available, closing transmission channel
11 450 Requested mail action not taken: mailbox unavailable [mailbox busy]

Administrao de Sistemas Linux: Servios para Internet

11 451 Requested action aborted: local error in processing

100

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

Protocolo POP3
Permite um cliente acessar as mensagens no servidor de modo simples.

11 As mensagens acessadas periodicamente so, geralmente, baixadas


(feito o download para a mquina cliente) e em seguida removidas do servidor
Servidor conectado internet armazena as mensagens.
No permite muitas opes para a manipulao de mensagen
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.
No 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 so 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 em 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 mltiplas linhas. Cada linha termina com <CRLF>. A ltima linha consiste de um cdigo decimal

Comandos POP3
Autenticao:
11 USER name; PASS string e QUIT.
Transao:
11 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].
Respostas POP3:
11 +OK e -ERR.

Captulo 7 - Servidor de correio eletrnico (parte 1)

046, que equivale ao caractere . seguido de um par de <CRLF>.

101

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 as mensagens;
11 UIDL [msg]: informa o identificador da mensagem;
11 QUIT: direciona para Update State.

Comandos de atualizao (Update State)


11 QUIT: remove mensagens e finaliza.

Respostas
11 +OK: resposta positiva a comandos;
11 -ERR: resposta negativa a comandos.

Administrao de Sistemas Linux: Servios para Internet

Exemplo de uma sesso POP3:

102

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

C:

LIST

S:

+OK 2 messages (320 octets)

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:
S:
C:

+OK dewey POP3 server signing off


+OK 2 320

(maildrop empty)

<close connection>

Protocolo IMAP
Permite a um cliente acessar e manipular mensagens no servidor.

Atua de maneira a permitir uma manipulao da caixa postal (pastas remotas) como
se fossem pastas locais.
Permite:
11 criar; remover; renomear; verificar por novas mensagens;
11 incluir e remover flags;
11 realizar buscas em mensagens, cabealho, corpo do e-mail e outras partes.
Mensagens so 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
um computador porttil; utilizao de webmail e acesso conta de correio eletrnico por
meio de pgina web.
Fornece 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; busca e 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

Captulo 7 - Servidor de correio eletrnico (parte 1)

partir de mltiplos clientes instalados, por exemplo, em um computador de escritrio e em

pelo servidor.
103

11 Cada resposta inclui os dados solicitados e o resultado da consulta.


11 Essas iteraes so linhas de texto finalizadas com um <CRLF>.

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

SERVER GREETING

NOT AUTHENTICATED

AUTHENTICATED

SELECTED

Administrao de Sistemas Linux: Servios para Internet

LOGOUT

104

Fim da conexo

Nesse arquivo, deve ser utilizado <tab> em vez de espao.


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:
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;

Figura 7.5
Protocolo IMAP.

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; logout: estado alcanado aps uma operao de LOGOUT do cliente ou por aes
unilaterais do cliente ou do servidor.
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
plano;
11 STARTTLS: comando para iniciar autenticao TLS.
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 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.

Captulo 7 - Servidor de correio eletrnico (parte 1)

11 CHECK: solicita uma atualizao (checkpoint) da caixa de mensagens atual;

105

Configuraes prvias
Para funcionar corretamente, o servio de correio eletrnico depende de configurao

adequada de:
11 Hostname:
11 Conectividade:
11 Sincronizao de relgio do sistema:
11 Log: Registro de atividades do servidor
11 DNS.
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 Log;
11 DNS.

Hostname
O servidor deve possuir um endereo Fully Qualified Domain Name (FQDN).

usado para a saudao a outro servidor.


O servidor pode realizar uma consulta reversa ao DNS para confirmar a origem
Um servidor deve possuir um endereo Fully Qualified Domain Name (FQDN), por exemplo,
mail.empresa.com.br. O hostname utilizado para saudao a outro servidor. O servidor
pode estar repassando mensagens para outros servidores, que verificam o hostname efetu Administrao de Sistemas Linux: Servios para Internet

ando uma consulta reversa ao DNS, descartando a mensagem cuja origem no foi adequa-

106

damente confirmada.

Conectividade
O firewall deve permitir trfego nas portas utilizadas pelo servidor:

11 25 (SMTP) e 465 (SMTPS se utilizado)


11 143 (IMAP se utilizado) e 993 (IMAPS se utilizado)
11 110 (POP se utilizado) e 995 (POPS se utilizado);
O firewall deve permitir conexes de entrada e sada na porta 25 utilizada pelo protocolo SMTP.

System Time e Timestamps


System Time e Timestamps:
11 relgio do sistema deve estar sincronizado atravs do NTP
11 Facilita a anlise dos cabealhos e verificao de logs

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.

rsyslog
Log: configurar a ferramenta para anlise e diagnstico de problemas.

Ferramenta do Sistema Operacional utilizada na anlise e diagnstico de problemas.


O servidor Postfix utiliza log padro do Linux. Logo, o servio rsyslog deve estar em execuo, e no arquivo de configurao devem constar entradas associadas ao servidor de
mensagens. Por exemplo:
Red Hat / CentOS
Arquivo: /etc/rsyslog.conf
mail.none; authpriv.none; cron.none

-/var/log/messages

mail.* -/var/log/maillog

Debian / Ubuntu Server


Arquivo: /etc/rsyslog.d/50-default.conf
mail.* -/var/log/mail.log
mail.err /var/log/mail.err

DNS
Servidor de e-mail deve estar registrado no DNS do domnio.

11 Isso possibilita que qualquer servidor na internet possa enviar mensagens a esse
servidor.
Trs tipos de entradas que devem estar presentes no DNS:
11 A: associa um FQDN a um endereo IP.
11 PTR: associa IP ao FQDN; utilizado para autenticar mensagens.
11 MX: informa o servidor responsvel pelas mensagens nesse domnio
extremamente importante estar com o servio DNS do domnio funcionando corretaendereo do servidor de destino, assim como o servidor de destino deve efetuar uma confirmao da origem por meio de uma consulta reversa ao DNS.
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.

Captulo 7 - Servidor de correio eletrnico (parte 1)

mente antes de ativar o servidor Postfix. Ao enviar mensagens, o MTA precisa resolver o

107

Havendo mais de um servidor responsvel por mensagens no mesmo domnio, deve ser
atribuda prioridade s entradas MX.
Utilize sempre o comando dig para testar o funcionamento do servidor DNS, verificando as
respostas por ele devolvidas.
Exemplo:
# dig mail.empresa.com.br MX
; <<>> DiG 9.2.2 <<>> mail.empresa.com.br MX
;; global options: printcmd
;; ->>HEADER<<- opcode: QUERY, status:NOERROR, id: 23929
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION
; mail.empresa.com.br.

IN

MX

;; ANSWER SECTION
; mail.empresa.com.br. 86400
IN MX 10 mail.empresa.com.
br.
; mail.empresa.com.br. 86400
IN MX 20 mail2.empresa.com.
br.
;; AUTHORITY SECTION
86400
IN NS mar.empresa.com.br.
; mar.empresa.com.br.
;; Query time: 10 msec
;; Server: 172.25.0.130#53

Postfix
O servidor de e-mail Postfix:

Consiste em uma Mail Transport Agent (MTA).


11 Capaz de aceitar mensagens de outros MTAs e usurios.
Possui ainda outros subprogramas (distribuio e tratamento de mensagens localmente).
Consolida-se como principal substituto do Sendmail.
Tem foco em velocidade, facilidade de administrao e segurana.

Administrao de Sistemas Linux: Servios para Internet

O Postfix um MTA que envia mensagens de um MUA, ou cliente de e-mail, para um servidor

108

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.
A instalao e configurao 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.

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 funcionamento do Postfix 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.
Figura 7.6
Funcionamento
do Postfix

Mensagem (Origem)

Figura 7.7
Conexes e mapas.

Mensagem (Destinatrio)

Postx

SMTP

SMTP
LMTP

UUCP

Postx

QMQP

local
pipe

sendmail

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

Captulo 7 - Servidor de correio eletrnico (parte 1)

Figura 7.8
Arquitetura
do Postfix.

109

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 do 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. Mensagens prontas possuem cdigo 0700 e so coletadas pelo qmgr;
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 Servidor Linux instalado e conectado Internet.


11 Configuraes prvias.
Remover MTA pr-instalado pelo Sistema Operacional
11 Se necessrio
Instalao:
Administrao de Sistemas Linux: Servios para Internet

11 Red Hat/CentOS: yum install


11 Debian/Ubuntu Server: apt-get install
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.
Antes de instalar o postfix, recomenda-se desinstalar o servidor anterior, caso exista.
Em resumo:
Red Hat / CentOS
yum erase SERVIDOR_ANTERIOR
yum install postfix

110

Debian/Ubuntu Server
apt-get purge SERVIDOR_ANTERIOR
apt-get install postfix

Inicializao do servidor Postfix


Inicializao:

11 Red Hat/CentOS
22 root# systemclt <parmetro> postfix
11 Debian/Ubuntu Server
22 root# service postfix <parmetro>
O parmetro pode ser: start, stop, restart ou reload.
Ao ser iniciado, o servidor Postfix l as configuraes do arquivo de configurao main.cf.
Opcionalmente, podemos incluir configuraes adicionais em outros arquivos de configurao, referenciando-os em main.cf. Para iniciar o servidor:
Red Hat/CentOS
root# systemclt <parmetro> postfix

Debian/Ubuntu Server
root# service postfix <parmetro>

O parmetro pode ser: start, stop, restart ou reload.


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.
O arquivo de configurao pode ser editado utilizando um editor de texto ou atravs do

Configurao do servidor Postfix


Arquivos de configurao main.cf e master.cf
Sintaxe:
11 diretiva = valor
Principais diretivas de configurao:
myhostname
mydomain
myorigin
mydestination
mynetworks
inet_interfaces

Captulo 7 - Servidor de correio eletrnico (parte 1)

comando postconf -e parmetro=valor.

111

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 parmetro ser
atribudo a outro_parametro. Pode ainda aceitar mltiplos valores.
Exemplos:
myhostname = mail.empresa.com.br
myorigin = $mydomain
mydestination = $myhostname localhost.$mydomain localhost $mydomain

Entre as diretivas que devem ser configuradas inicialmente esto:


11 $myhostname: nome enviado durante a saudao entre MTAs. Por padro, configurado com o FQDN do servidor;
11 $mydomain: domnio do sistema de e-mail, determinado automaticamente se o
myhostname estiver configurado;
11 $mydestination: aceita mensagens para os domnios listados:
22 Exemplo: mydestination = $mydomain, exemplo.com.br.
11 $myorigin: domnio que aparece em mensagens enviadas a outras mquinas. Utilizado
para garantir que mensagens estejam com remetente no formato FQDN;
11 $inet_interfaces: interface de rede por onde o servidor receber as mensagens.
Por padro configurado com o valor all:
22 Exemplo: inet_interfaces = $myhostname, localhost
11 $mynetworks_style: especifica de onde sero aceitas mensagens. Valores aceitos host:
quando o servidor aceita somente mensagens da mquina local; subnet: quando o servidor aceita mensagens de mquinas pertencentes sua sub-rede; class: quando o servidor aceita mensagens originrias de servidores com endereo IP de classe igual sua;
Administrao de Sistemas Linux: Servios para Internet

11 $mynetworks: lista de clientes autorizados a efetuar relay a partir desse servidor.

112

O valor um endereo de rede no formato Classless Inter-Domain Routing (CIDR):


22 Por exemplo: mynetworks = 192.168.0.0/24, 127.0.0.0/8
Por padro, o Postfix armazena os e-mails no arquivo /var/spool/mail/$USUARIO ou
/var/mail/$USUARIO, no formato mbox. Essa configurao pode ser alterada atravs do
parmetro $home_mailbox.
Geralmente os e-mails so armazenados em:

11 /var/spool/mail/ ou /var/mail
Comando postfix check
Mapas de aliases
Sempre que os arquivos de configurao forem modificados, o comando postfix check deve
ser executado para verificar a sintaxe. Estando Ok, eles 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. 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 podemos 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 o
fato de nem todos os usurios possurem contas de e-mail.
Para efetuar essa associao, devemos editar um arquivo de mapas denominado
/etc/postfix/aliases, incluindo as associaes desejadas.
usuario1 uc0001
usuario2 uc0002
joao uc0003

Em seguida, deve-se atualizar os mapas com o comando newaliases e, na sequncia,


recarregar o Postfix.

Configurao do servidor Postfix com TLS


SSLg TLS:

11 Autenticao e sesses criptografadas


Para habilitar o TLS no Postfix:
11 Obter os certificados
11 Configurar os parmetros:
22 smtpd_tls_security_level
22 smtpd_tls_auth_only
22 smtpd_tls_key_file
22 smtpd_tls_cert_file
22 smtpd_tls_CAfile
22 smtpd_tls_loglevel

22 smtpd_tls_session_cache_timeout
22 tls_random_source
22 smtp_tls_security_level
O Transport Layer Security (TLS), anteriormente chamado de Secure Socket Layer (SSL),
fornece autenticao baseada em certificados e sesses criptografadas. Uma sesso criptografada protege a informao que est sendo transmitida atravs do SMTP ou em uma
autenticao SASL.
Os passos necessrios para habilitar o suporte ao TLS so:
11 Obter os certificados que so utilizados durante o estabelecimento da conexo TLS;
11 Adicionar os parmetros ao arquivo de configurao do Postfix para habilitar o TLS.

Captulo 7 - Servidor de correio eletrnico (parte 1)

22 smtpd_tls_received_header

113

Os certificados utilizados pelo Postfix so:


11 Certificado da AC: o certificado de uma Autoridade Certificadora AC opcional. Ele
utilizado quando um cliente deseja validar o certificado emitido pelo servidor Postfix.
Esse certificado pode ser de uma CA oficial ou de uma autoassinada, gerada dentro do
prprio servidor;
11 Certificado pblico do servidor: necessrio quando a conexo estabelecida;
11 Certificado privado do servidor: assinado pela CA e contm a chave privada do servidor.
Os certificados podem ser autoassinados ou de uma CA privada, que seja amplamente reconhecida. A primeira opo mais simples, rpida e sem custo. O inconveniente que alguns
browers podem no aceitar o certificado e uma mensagem de certificado no confivel
emitida aos usurios. A segunda opo a geralmente envolve um custo. Porm, h a opo
de utilizar o site StartSSL (www.startssl.com) para obter um certificado gratuito, confivel e
que aceito pela maioria dos browsers e clientes de e-mail.
Os parmetros necessrios para a configurao do Postfix so:
11 smtpd_tls_security_level = VALOR: desabilitado por padro. Se configurada com may,
habilita o suporte ao STARTTLS para os clientes remotos, mas no obriga o uso da
encriptao via TLS. Para forar o uso do TLS, esse parmetro deve ser configurado com
o valor encrypt;
11 smtpd_tls_auth_only = VALOR: desabilitado por padro. Se configurado com o valor
yes, faz com que as autenticaes SASL no sejam aceitas atravs de conexes
no criptografadas;
11 smtpd_tls_key_file = /caminho/chave.pem: configura o arquivo com a chave RSA
privada, no formato PEM, do servidor SMTP Postfix.
22 * A chave privada deve ser acessvel sem uma senha, ou seja, no deve ser criptografada.
11 smtpd_tls_cert_file = /caminho/certificado.pem: configura o arquivo com o certificado
RSA, no formato PEM, do servidor SMTP Postfix;
11 smtpd_tls_CAfile = /caminho/certificadoCA.pem: configura o arquivo com o certificado
da CA, no formato PEM;
11 smtpd_tls_loglevel = VALOR: habilita o registro adicional, no log do Servidor SMTP

Administrao de Sistemas Linux: Servios para Internet

Postfix, das atividades TLS. Os valores possveis so:

114

22 0 (Valor padro) Desabilita o log das atividades TLS;


22 1 Registra somente uma mensagem de sumrio ao completar o TLS Handshake;
22 2 Registra tambm as atividades durante as negociaes do TLS;
22 3 Registra tambm o dump, em hexadecimal e ASCII, do processo de negociao do TLS;
22 4 Registra tambm o dump, em hexadecimal e ASCII, da transmisso finalizada, aps
o STARTTLS;
22 * A utilizao de valor igual ou maior que 2 s recomendada em casos de problemas
no funcionamento do servidor.
11 smtpd_tls_received_header = VALOR: configurada com o valor yes, faz com que o
Servidor SMTP do Postix produza cabealhos de mensagens Received: que incluem
informao sobre o protocolo e o cifrador utilizado;

11 smtpd_tls_session_cache_timeout = SEGUNDOS: especifica a validade, em segundos,


do cache de informao da sesso TLS do Servidor SMTP do Postfix. Aps esse tempo,
uma limpeza de cache realizada;
11 tls_random_source = dev:/dev/urandom: a fonte externa para o pool do Gerador de
Nmero Pseudoaleatrio (PRNG) do tlsmgr;
11 smtp_tls_security_level = VALOR: define o nvel de segurana do TLS do cliente SMTP do
Postfix. As opes mais utilizadas so:
22 none: no utilizar o TLS;
22 may: utilizar o TLS se for suportado pelo servidor SMTP. Caso contrrio, utilizar o
plaintext;
22 encrypt: obrigatoriamente utilizar o TLS.
Para que o Postfix inicie o servidor SMTP ouvindo na porta 465 (smtps), necessrio descomentar ou incluir as seguintes linhas no arquivo /etc/postfix/master.cf:
smtps

inet

smtpd

-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_tls_security_level=encrypt
-o smtpd_reject_unlisted_recipient=no
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject

Para verificar se o suporte ao TLS est habilitado no servidor SMTP do Postfix, estabelecer
uma conexo utilizando o telnet:
# telnet localhost 25

Aps estabelecer a conexo, executar o comando ehlo para verificar se o TLS est sendo
oferecido pelo servidor:
ehlo localhost

Na lista deve aparecer a linha 250-STARTTLS.

Usando o comando telnet:


11 # telnet localhost 25
22 >helo mail.empresa.com.br
22 >mail from: usuario1
22 >rcpt to: usuario2
22 >data
22 >E-mail de teste
22 >.
22 >quit

q
Captulo 7 - Servidor de correio eletrnico (parte 1)

Teste da entrega dos e-mails

115

possvel testar se o servidor Postfix est funcionando corretamente e entregando as mensagens, atravs do comando Telnet (em negrito esto os comandos smtp a serem digitados):
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is ^].
220 ESMTP SERVIDOR
helo mail.empresa.com.br
...
mail from: usuario1

rcpt to: usuario2


data
354 End data with <CR><LF>.<CR><LF>

Para terminar a
mensagem (comando
data), necessrio
digitar uma linha s
com o caractere .
(ponto).

E-mail de teste
.
250 Ok: queued as #QUEUE-ID
quit

Testando com uma conexo TLS:


Testando com uma conexo TLS

22 # openssl s_client connect localhost:25 starttls smtp


22 >mail from: usuario1
22 >rcpt to: usuario2
22 >data
22 >E-mail de teste
22 >.
22 >quit
# openssl s_client -connect localhost:25 -starttls smtp
...

Administrao de Sistemas Linux: Servios para Internet

mail from: usuario1

116

rcpt to: usuario2


data
354 End data with <CR><LF>.<CR><LF>
E-mail de teste
.
250 Ok: queued as #QUEUE-ID
quit

Para verificar se o e-mail foi entregue, basta executar o comando mail. Se tudo estiver Ok, o
e-mail deve estar na caixa de entrada da conta. Caso o e-mail no esteja na caixa de entrada,
possvel verificar a fila de e-mail e o arquivo de log do servidor.
Outra forma de enviar um e-mail de teste atravs do comando:
echo E-mail de teste | mail -s Teste usuario1

Fila de e-mail e IDs da fila

Comando mailq
Consultando informaes sobre a entrega das mensagens
Buscando no arquivo de log

O entendimento da fila de e-mail do Postfix muito til. O Postfix colocar todo e-mail que
aceitou na sua fila, antes que outro processo pegue o e-mail e tente entreg-lo ao destinatrio. A fila do Postfix pode ser vista atravs do comando mailq.
Em um servidor muito ocupado, possvel ver centenas de e-mails parados por vrias
razes. Um exemplo pode ser visto a seguir:
04D8CA8C442

2399 Tue May 31 09:49:11

MAILER-DAEMON

(connect to mx.example.com [192.168.0.1]:25: Connection timed out)


info@example.com

O 04D8CA8C442 o ID da fila. Para descobrir o que aconteceu com esse e-mail, possvel
procurar no arquivo de log:
11 Red Hat / CentOS
# grep 04D8CA8C442 /var/log/mail.log

11 Debian / Ubuntu Server


# grep 04D8CA8C442 /var/log/mail.log

Resultado:
May 31 09:49:11 mx1 postfix/smtpd[4428]: 04D8CA8C442: client=web.
localnet[10.10.41.3]
May 31 09:49:11 mx1 postfix/cleanup[4473]: 04D8CA8C442: messageid=<20110531094911.0A73631F59D@newsletter.example.net>
May 31 09:49:11 mx1 postfix/qmgr[25512]: 04D8CA8C442: from=<>, size=2399, nrcpt=1
(queue active)
May 31 09:49:41 mx1 postfix/smtp[4945]: 04D8CA8C442: to=<info@example.com>,
relay=none, delay=30, delays=0.05/0.06/30/0, dsn=4.4.1, status=deferred (connect to

Os diferentes processos do Postfix que lidam com o e-mail so exibidos aps o postfix/.
O smtpd recebeu o e-mail vindo do servidor web.localnet. Ento, o processo cleanup
o coloca na fila de e-mail. O qmgr moveu o e-mail para a fila ativa e o smtp tentou
entreg-lo. No foi possvel contatar o servidor remoto mx.example.com, ento o Postfix
manteve o e-mail na fila. O cdigo da notificao do estado da entrega (Delivery Status
Notification DSN) foi 4.4.1. Todos os cdigos comeando com 4 representam erros temporrios, o que significa que o Postfix tentar entregar o e-mail novamente. Os cdigos
comeando com 5 representam erros permanentes, fazendo com que o Postfix descarte o
e-mail e informe ao remetente sobre a falha na entrega. Os cdigos comeando com
2 representam que a entrega foi bem-sucedida.

Captulo 7 - Servidor de correio eletrnico (parte 1)

mx.example.com [192.168.0.1]:25: Connection timed out)

117

Se a entrega tivesse sido bem-sucedida, a linha do postfix/smtp se pareceria com:


Jun

5 12:41:10 mail postfix/smtp[12044]: 2171CA860E0: to=<jonathan@example.

com>, relay=mx.example.com[192.168.0.1]:25, delay=0.32, delays=0.04/0/0.17/0.1,


dsn=2.0.0,

Administrao de Sistemas Linux: Servios para Internet

status=sent (250 2.0.0 Ok: queued as B0BAC736372)

118

8
Servidor de correio eletrnico
(parte 2)

e 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, alm de 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 o uso 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

Captulo 8 - Servidor de correio eletrnico (parte 2)

objetivos

Administrar o servio de correio eletrnico, os mtodos de entrega de mensagens

119

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 devem ento ser armazenadas apropriadamente no servidor, uma vez que
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).

mbox
Formato padro para caixa de mensagens.

Mensagens de um usurio armazenadas em um nico arquivo.


11 From usuario1@linux.lan Qui Set 12 18:34:00 2006
11 Received: 12 Set 18:33:59 -0300
11 From: usuario2@linux.lan
11 To: usuario1@linux.lan
11 Subject: ol
11 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.

Administrao de Sistemas Linux: Servios para Internet

maildir

120

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
11 tmp
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.

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 Criar um mapa com os destinatrios.
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;

Captulo 8 - Servidor de correio eletrnico (parte 2)

Domnios virtuais

11 Recarregar as configuraes.
121

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 o uso 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.com

abuse@dominiovirtual.com

usuario1@exemplo.com

usuario1@dominiovirtual.com

usuario1@exemplo.com

usuario2@dominiovirtual.com

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
virtual_alias_maps = hash:/etc/postfix/virtual_alias_maps

Administrao de Sistemas Linux: Servios para Internet

Recarregar configuraes do Postfix

122

# /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>
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, anexos e cabealhos de mensagens anexadas. Apesar de funcionamento
relativamente simples, o administrador deve tomar cuidado com a complexidade
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 aplicaes 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.
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.

Captulo 8 - Servidor de correio eletrnico (parte 2)

das expresses regulares utilizadas. Em geral utilizado para bloquear mensagens

123

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.
11 Parmetro warn_if_reject para testar restries.
Observao importante: a filtragem ideal no atingida em um primeiro momento; por isso,
deve ser implementada e testada aos poucos. Devemos 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
podemos 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 mensagens 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
Administrao de Sistemas Linux: Servios para Internet

SMTP de entrada e sada impedindo o servidor de e-mail de receber diretamente um ataque

124

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

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

postmap:
# postmap hash:/etc/postfix/relay_recipients

5. Recarregar configuraes do Postfix:


# /etc/init.d/postfix reload ou service postfix reload

Captulo 8 - Servidor de correio eletrnico (parte 2)

Aps a criao desse arquivo, deve ser gerado um mapa indexado com o comando

125

SMTP autenticado
Permitir o envio de mensagens sem autenticao do cliente pode facilitar o envio de

spam ou o abuso por parte de spammers.


Existem diferentes mecanismos de autenticao, no mnimo devem ser suportados
PLAIN, LOGIN e CRAM-MD5
11 Reservar a porta 25/TCP para comunicao entre MTAs
11 Usar porta 587/TCP para envio de mensagens
11 RFC4954
Normalmente, o protocolo SMTP trabalha sem utilizar autenticao e no diferencia se a
conexo est sendo feita por um cliente ou por outro MTA. A falta de autenticao por parte
de um cliente ao utilizar o MTA para o envio de mensagens pode facilitar o envio de spam ou
o abuso por parte de spammers.
Para evitar esse tipo de abuso, uma das medidas exigir que qualquer cliente, independentemente do endereo IP de origem, apresente credenciais de acordo com a RFC 4954, a no
ser que o destino da mensagem seja local.
Praticamente todos os MTAs possuem recursos de autenticao, sejam nativos ou por meio
de patches. H diferenas entre os mecanismos suportados pelos vrios MTAs e MUAs, mas
no mnimo devem ser suportados PLAIN, LOGIN e CRAM-MD5. Os dois primeiros so considerados inseguros, pois as credenciais passam pela rede em texto claro, o que pode ser
resolvido usando SMTP em canal seguro, pela porta 465/TCP.
Uma configurao que bastante efetiva contra abusos consiste em reservar a porta 25/TCP
somente para troca de mensagens entre MTAs e usar a porta 587/TCP para mensagens
enviadas por um cliente para o seu MTA. Costuma-se usar o termo MSA (Mail Submission
Agent) para o MTA configurado para responder pela porta 587/TCP.
Para o uso da porta de submisso, onde a autenticao obrigatria, necessrio que todos
os MUAs dos clientes reconfigurados para o uso da nova porta e fornecimento de credenciais.
Mais informaes sobre a adoo do padro de Message Submission e a diferenciao
entre os servios de submisso e de troca de mensagens podem ser encontradas na seo

Administrao de Sistemas Linux: Servios para Internet

Gerncia de Porta 25.

126

Servidores secundrios
bastante comum uma rede possuir dois (ou mais) servidores de correio eletrnico destinados recepo de mensagens: um principal, responsvel por entregar as mensagens
para as caixas postais dos destinatrios e outros secundrios que no fazem entrega de
mensagens diretamente aos destinatrios. Caso o servidor principal fique impossibilitado
de receber mensagens, os secundrios as recebem e as enfileiram, para retransmiti-las ao
principal quando esse estiver restabelecido.
Para evitar que servidores secundrios sejam abusados por spammers, alguns cuidados
devem ser tomados ao configur-los:
11 Todas as medidas antispam adotadas no servidor principal, como SPF, greylisting etc.,
devem, na medida do possvel, ser implementadas no servidor secundrio tambm, de
modo que o spam seja barrado igualmente em qualquer um deles;

11 O servidor secundrio deve saber para quais domnios ele pode fazer relay. Esse servidor
no deve ser configurado como null relay cliente, para evitar que sua combinao com o
servidor principal forme um relay aberto de segundo nvel;
11 O servidor principal deve assumir que o servidor secundrio confivel, e no fazer
testes de SPF nem colocar em greylisting mensagens que venham dele. Pois se ele foi
corretamente configurado, essas verificaes j foram feitas. Caso seja utilizado SPF,
podemos implementar SRS no servidor secundrio.

Endereos especiais
A RFC 2142 (Mailbox Names for Common Services, Roles and Functions) prev um conjunto de endereos especiais, que devem ser configurados como aliases para os e-mails do
pessoal responsvel pelas reas especficas.
Esses endereos devem estar corretamente configurados, de acordo com o descrito na
sesso sobre e-mails especiais e dados de WHOIS.

Servidor de e-mail corporativo


Uma soluo completa de e-mail corporativo deve considerar uma srie de boas pr-

ticas, contendo:
11 Postfix.
11 Cyrus SASL e Dovecot 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 o uso 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
Captulo 8 - Servidor de correio eletrnico (parte 2)

posteriormente e por conta prpria implementar suas prprias solues.

127

Autentica e
envia e-mail

Postx
Envia
para LDA

Courier
Maildrop

Valida destinatrios
e verica endereo
de origem

Recebe e
gerencia e-mail

Cliente

OpenLDAP

Autentica
destinatrios

Courier IMAP

Obtm localizao de
mailbox e permisses
Entrega para
mailbox

Obtm regra para


novas mensagens

Virtual

Acessa mailbox
e gerencia e-mail

Figura 8.1
Servidor de e-mail
corporativo.

Regras Filtro

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
Administrao de Sistemas Linux: Servios para Internet

de segurana, pois no h associao entre contas de usurio no sistema e contas de e-mail.

Cyrus SASL e Dovecot SASL


Suporte a autenticao atravs do Simple Authentication and Security Layer (SASL)

A configurao do SASL pode ser dividida em dois passos:


11 Configurar a implementao SASL para oferecer os mecanismos de autenticao
desejados
11 Configurar o Postfix para habilitar a autenticao atravs do SASL.
Os servidores SMTP precisam decidir se um cliente SMTP est autorizado a enviar e-mail
para destinos remotos ou somente para os destinos que so de responsabilidade do prprio
servidor. Geralmente, os servidores SMTP aceitam e-mails direcionados a destinos remotos
quando o endereo IP do cliente est na mesma rede (rede local) do endereo IP do servidor.
Os clientes SMTP que esto fora da rede do servidor SMTP precisam de uma maneira diferente para obter os mesmos privilgios dos que esto rede local. Para resolver esse problema,

128

o Postfix suporta a autenticao atravs do Simple Authentication and Security Layer: SASL
(RFC 4954). Utilizando o SASL, um cliente SMTP pode se autenticar em um servidor SMTP
remoto, lhe conferindo os mesmos privilgios de clientes que esto na rede local. O Postfix
utiliza implementaes existentes do SASL para conferir o suporte ao servidor SMTP.
A configurao da autenticao SASL no servidor SMTP do Postfix envolve dois passos diferentes:
11 Configurar a implementao SASL para oferecer uma lista de mecanismos adequados para
a autenticao e, dependendo da implementao do SASL utilizada, configurar os backends
de autenticao que verificam os dados de autenticao do cliente SMTP remoto;
11 Configurar o servidor SMTP do Postfix para habilitar a autenticao atravs do SASL.
Atualmente o Postfix suporta as implementaes Cyrus SASL e Dovecot SASL.
Para configurar a comunicao do Postfix com o Dovecot:
11 Instalar o pacote do Dovecot;
11 Editar o arquivo /etc/dovecot/conf.d/10-master.conf:
...
service auth {
...
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
...
}
...

11 Editar o arquivo /etc/dovecot/conf.d/10-master.conf


auth_mechanisms = plain login

11 Configurar o Postfix para utilizar a implementao do Dovecot, editando o arquivo


main.cf com as seguintes variveis:
#Habilita a autenticacao via SASL
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
#Defini o local do socket
smtpd_sasl_path = private/auth
#Habilita a interoperabilidade com os clientes SMTP remotos que implementam uma
verso obsoleta do comando AUTH
broken_sasl_auth_clients = yes
#Nao utilizar mecanismos que permitem autenticacao anonima
smtpd_sasl_security_options = noanonymous
#Nao utilizar mecanismos que permitem autenticacao anonima, mesmo com TLS
smtpd_sasl_tls_security_options = noanonymous

Captulo 8 - Servidor de correio eletrnico (parte 2)

#Especifica a utilizacao do plugin do Dovecot

129

Para configurar a autenticao SASL com Cyrus no Postfix:


11 Instalar o pacote do Cyrus;
11 Editar o arquivo de configurao do SASL com o contedo a seguir:
22 Red Hat / CentOS - /etc/sasl2/smtpd.conf
22 Debian / Ubuntu Server - /etc/postfix/sasl2/smtpd.conf
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN

11 Habilitar a verificao de senha atravs do shadows, editando o arquivo:


22 Red Hat / CentOS - /etc/sysconfig/saslauthd
22 Debian / Ubuntu Server - /etc/default/saslauthd
MECHANISMS=shadow

* O Cyrus SASL aceita os seguintes mecanismos de autenticao: sasldb getpwent kerberos5


pam rimap shadow ldap
11 Testar a autenticao do saslauthd:
testsaslauthd -u username -p password

11 Configurar o Postfix para utilizar a implementao do Cyrus, editando o arquivo main.cf


com as seguintes variveis:
#Habilita a autenticacao via SASL
smtpd_sasl_auth_enable = yes
#Especifica a utilizacao do plugin do Cyrus
smtpd_sasl_type = dovecot
#Habilita a interoperabilidade com os clientes SMTP remotos que implementam uma
verso obsoleta do comando AUTH
broken_sasl_auth_clients = yes
#Nao utilizar mecanismos que permitem autenticacao anonima
smtpd_sasl_security_options = noanonymous
#Nao utilizar mecanismos que permitem autenticacao anonima, mesmo com TLS

Administrao de Sistemas Linux: Servios para Internet

smtpd_sasl_tls_security_options = noanonymous

130

Para verificar se o servidor SMTP do Postfix est oferecendo suporte autenticao SASL,
estabelecer uma conexo utilizando o telnet:

# telnet localhost 25

E executar o comando ehlo para verificar os servios oferecidos pelo servidor:


ehlo localhost

Na lista, deve constar uma linha com 250-AUTH PLAIN LOGIN.


Com a configurao correta, o cliente consegue se autenticar. Aps a autenticao do utilizando o SASL, o servidor SMTP do Postfix pode decidir o que o cliente SMTP remoto possui
autorizao para fazer, como por exemplo enviar um e-mail para um destinatrio remoto.
Essa permisso no est habilitada por padro.

Configurando o filtro permit_sasl_authenticated na restrio smtpd_recipient_restrictions,


no arquivo main.cf, permite que os clientes SMTP autenticados via SASL enviem e-mails para
destinatrios remotos. Exemplo:
...
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
...outras regras
...

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 o uso conjunto 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-trusted-users=root vmail
--enable-trusted-groups=root vmail --enable-maildirquota --enable-trashquota
--enable-maildropldap

Aps essa etapa, execute os comandos make install-strip e install-man para instalar os bindo Postfix (que no executa como root):
# chmod 750 /usr/local/bin/maildrop
# chmod u+s /usr/local/bin/maildrop
# chown root:vmail /usr/local/bin/maildrop

Courier Imap
Oferece os servios:
11 POP.
11 POP-SSL.
11 IMAP.
11 IMAP-SSL.
Suporta o formato maildir.

Captulo 8 - Servidor de correio eletrnico (parte 2)

rios e o manual. Efetue ainda os seguintes ajustes de permisso em razo do daemon pipe

131

Courier Imap suporta o formato maildir e oferece os servios POP, POP-SSL, IMAP e
IMAP-SSL para os clientes que a ele se conectam para manipulao das mensagens.
Para a instalao, utilize as seguintes opes quando for constru-lo:
#./configure --enable-workarounds-for-imap-client-bugs --enable-unicode --withoutauthpgsql --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;

Administrao de Sistemas Linux: Servios para Internet

11 Deferred: mensagens que j foram enviadas a alguns destinatrios, mas com falha para

132

um ou mais destinatrios, aguardam nessa fila por nova varredura do qmgr;


11 active: mensagens nessa fila esto prontas para envio, mas ainda no foram enviadas;
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


DNS deve estar funcionando adequadamente.

11 Efetuar teste com o comando dig.


Verificar:
11 Arquivo resolv.conf.
11 Saturao de trfego na rede.
11 Configuraes do firewall.
22 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 o uso 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 Listados no parmetro mynetworks.


11 Autenticados via SMTP.
11 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
includo em listas negras (black lists), fazendo com que as mensagens legtimas da rede
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.

Captulo 8 - Servidor de correio eletrnico (parte 2)

Permita o envio de mensagens somente de clientes:

133

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

Administrao de Sistemas Linux: Servios para Internet

22 Aumentar o tempo entre as tentativas.

134

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:
11 Usar um relay para fallback; delega tentativas malsucedidas a outro servidor, que se
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.
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 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.

Gargalos na deferred queue


Havendo grande volume de mensagens nessa fila, podemos tentar ajustar diminuindo o

tempo mnimo e aumentando o tempo mximo das mensagens, agilizando o envio de men-

Quando o Postfix no consegue entregar a mensagem para algum dos destinatrios, esta
colocada na fila deferred. O qmgr verifica periodicamente a 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 de mensagens nessa fila, pode ser feita a tentativa de ajuste diminuindo o tempo mnimo e 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.

Captulo 8 - Servidor de correio eletrnico (parte 2)

sagens com pouco tempo na fila, sem provocar muitas tentativas para todas as mensagens.

135

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 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
so devolvidas fila incoming, demandando muito consumo de memria.

Prticas Antispam
Administrao de Sistemas Linux: Servios para Internet

Restries do servidor SMTP do Postfix

136

Blacklists, Realtime blacklists e Graylists


Sender Policy Framework (SPF)
Para tentar combater os spams no servidor de e-mail, as seguintes atividades podem ser
adotadas:
O Postfix fornece a habilidade de aplicar alguns filtros durante a sesso SMTP. Quando um
e-mail chega ao servidor SMTP, ele passa pelas seguintes etapas:
11 CLIENT: conexes TCP chegando atravs da porta 25;
11 HELO: o servidor de e-mail que est enviando a mensagem informa o seu nome;
11 MAIL FROM: o nome e o endereo de e-mail do remetente;
11 RCPT TO: o destinatrio do e-mail;
11 DATA: nessa etapa da sesso SMTP, o e-mail enviado;
11 QUIT: fim da sesso SMTP.

Atravs da configurao das restries do Servidor SMTP do Postfix possvel controlar


quais verificaes sero realizadas quando um e-mail recebido. Essas restries so definidas no arquivo de configurao main.cf, atravs dos parmetros:
11 smtpd_client_restrictions (Valor padro: vazio)
11 smtpd_helo_restrictions (Valor padro: vazio)
11 smtpd_sender_restrictions (Valor padro: vazio)
11 smtpd_recipient_restrictions (Valor padro: permit_mynetworks, reject_unauth_destination)
11 smtpd_data_restrictions (Valor padro: vazio)
Esses parmetros aceitam uma lista de restries, separados por vrgula. Algumas das restries mais utilizadas para cada filtro so:
11 reject_unknown_client_hostname: filtro aplicado restrio do cliente que rejeita
uma conexo quando, atravs de uma consulta DNS, o IP do cliente no confere com o
seu hostname;
11 reject_non_fqdn_helo_hostname: filtro aplicado restrio do comando HELO que rejeita
a requisio quando o hostname apresentado durante o HELO ou EHLO no um FQDN;
11 reject_invalid_helo_hostname: filtro aplicado restrio do comando HELO que rejeita
a requisio quando o hostname apresentado durante o HELO ou EHLO for malformado;
11 reject_unknown_helo_hostname: filtro aplicado restrio do comando HELO que
rejeita a requisio quando o hostname apresentado durante o HELO ou EHLO no
possui um registro A ou MX no DNS;
11 reject_non_fqdn_sender: filtro aplicado restrio do remetente que rejeita o e-mail
quando o endereo presente no MAIL FROM no est no formato FQDN;
11 reject_unknown_sender_domain: filtro aplicado restrio do remetente que rejeita o
e-mail quando o domnio presente no MAIL FROM no possuir um registro A e MX no DNS;
11 reject_unauth_destination: filtro aplicado restrio do destinatrio que rejeita o
e-mail quando o domnio presente no RCPT TO destinado a um domnio que no
hospedado pelo servidor Postfix, ou seja, que no est configurado nos parmetros
relay_domains, mydestination, virtual_alias_domains ou virtual_mailbox_domains;
11 reject_non_fqdn_recipient: filtro aplicado restrio do destinatrio que rejeita o
e-mail quando o domnio presente no RCPT TO no est no formato FQDN;

o e-mail quando o domnio presente no RCPT no possuir um registro A e MX no DNS;


11 reject_unauth_pipelining: rejeita o e-mail quando o cliente envia comandos SMTP antes
do tempo.

Para as restries de HELO funcionarem, necessrio configurar o parmetro


smtpd_helo_required com o valor yes.
As blacklists so listas que possuem os endereos IP de servidores responsveis por enviar
spams. possvel configurar o Postfix, atravs do filtro reject_rbl_client na restrio smtpd_
recipient_restrictions, para consultar diversas blacklists remotas em tempo real, chamadas
de Realtime Blacklists (RBL). Alguns exemplos de RBLs:
11 www.spamhaus.org: reject_rbl_client zen.spamhaus.org

Captulo 8 - Servidor de correio eletrnico (parte 2)

11 reject_unknown_recipient_domain: filtro aplicado restrio do destinatrio que rejeita

11 www.barracudacentral.org: reject_rbl_client b.barracudacentral.org


137

11 www.sorbs.net: reject_rbl_client dnsbl.sorbs.net


11 www.spamcop.net: reject_rbl_client bl.spamcop.net
O Sender Policy Framework (SPF) uma medida para prevenir o spoofing (falsificar, mascarar)
do endereo de origem, ou seja, algum servidor configurado de forma mal-intencionada para
se passar por outro. Para utilizar o SPF, criado um registro no DNS do domnio informando
uma lista de endereos IPs vlidos que so permitidos enviar e-mail em nome do domnio.
Dessa forma, qualquer um pode verificar se o e-mail foi enviado de um endereo IP (servidor)
vlido e com permisso para atuar como servidor de e-mail para o domnio.
Um exemplo de um registro SPF no DNS:
empresa.com.br.

IN

TXT

v=spf1 a mx ip4:192.0.2.32/27 -all

Nesse caso, a poltica estabelece que pode enviar mensagens em nome do domnio
empresa.com.br umamquina que satisfaa um dos seguintes critrios:
11 Seu endereo IP deve ser um RR tipo A do domnio empresa.com.br (a);
11 Seja designada como MX do domnio empresa.com.br (mx);
11 Pertena ao bloco de endereos IP 192.0.2.32/27 (ip4).
A clusula -all diz que devem ser recusados (-, prefixo Fail) e-mails partindo de qualquer
outro endereo IP (all).
As opes de prefixos so:
11 + Pass
11 - Fail
11 ~ SoftFail
11 ? Neutral
Para fazer com que o servidor SMTP do Postfix verifique o SPF, necessrio instalar o pacote
postfix-policyd-spf-python, configurar o filtro check_policy_service da restrio smtpd_recipient_restrictions com o valor unix:private/policyd-spf e incluir a seguinte seo no arquivo
master.cf do Postfix:
policy-spf

unix

spawn

Administrao de Sistemas Linux: Servios para Internet

user=nobody argv=/usr/bin/policyd-spf

138

O graylisting outra forma de reduzir a quantidade de spam recebida. Ele um intermedirio entre o whitilist (sempre aceitar e-mails de determinadas origens) e blacklist (sempre
recusar e-mails de determinadas origens), que recusa receber o e-mail durante alguns
minutos. Os servidores que esto enviando spams apenas tentam entregar o e-mail de
spam uma nica vez. Porm, os servidores legtimos de e-mail possuem uma fila de sada de
e-mail e, quando recebem um cdigo erro temporrio, tentam enviar o e-mail novamente.
Se o servidor que est enviando um e-mail ao destinatrio pela primeira vez, ento o
mecanismo de greylist retornar um cdigo de erro temporrio (delivery status 4.x.x),
que informa ao servidor do remetente para tentar enviar o e-mail novamente aps alguns
minutos. O servidor de destino registrar o endereo IP do servidor remetente e, aps um
determinado perodo (geralmente 10 minutos), o bloqueio removido e a prxima vez que o
e-mail for enviado ele ser aceito.
O lado negativo do greylist que h um atraso na entrega dos e-mails.

lMais informaes sobre


o SPF em www.
antispam.br/admin/spf
e www.openspf.org.

Para implementar o greylisting no servidor SMTP do Postfix, necessrio instalar o pacote


postgrey, configurar o filtro check_policy_service da restrio smtpd_recipient_restrictions
com o valor inet:127.0.0.1:10023, configurar o postgrey para iniciar na porta 10023
(POSTGREY_OPTS=--inet=10023) no arquivo:
11 Red Hat / CentOS:

O Antispam.br
(http://antispam.br),
site mantido pelo
Comit Gestor da
Internet no Brasil (CGI.
br), constitui uma fonte
de referncia sobre o
spam, alm de possuir
vrias informaes
teis, como boas
prticas, no combate
ao spam.

/etc/sysconfig/postgrey

11 Debian / Ubuntu Server:


/etc/default/postgrey

Por final, iniciar o servio do postgrey:


11 Red Hat / CentOS:
systemctl restart postgrey

11 Debian / Ubuntu Server


service postgrey restart

Recomendaes do Antispam.br
Relay aberto

Restringir ao mximo os endereos IP que tem permisso para usar o servidor como relay
Podemos utilizar o comando telnet para verificar se o Relay est aberto no servidor.
$ telnet mailserver.example.com 25
Trying 192.0.2.8
Connected to mailserver.example.com.

Relays abertos
Relays abertos so MTAs que transmitem mensagens de qualquer domnio, ou mesmo s
de domnios determinados, para qualquer outro, sem pedir autenticao, sem restringir
(ou restringindo muito pouco) a faixa de endereos IP de origem.
Os relays abertos so utilizados por spammers pelo fato de proverem anonimato. Para o
responsvel pelo MTA com relay aberto sendo abusado, as consequncias so o consumo de
recursos e a possvel incluso do MTA em listas de bloqueio. Alm disso, ele pode passar a
receber mensagens de erro e reclamaes sobre os spams enviados via seu MTA.
Os softwares atuais para servidores MTA costumam vir em sua maioria configurados por
padro para no aceitar a transmisso indiscriminada de mensagens. Normalmente esses
softwares permitem a manuteno de uma lista de domnios pelos quais um determinado
MTA responde e uma lista de endereos autorizados a usar seu relay.
importante, ao configurar um MTA, restringir ao mximo os endereos IP que tm permisso para us-lo como relay, se possvel limitando ao localhost.
H tambm casos em que dois MTAs, aparentemente bem configurados, agem como se
fossem um relay aberto. A mensagem chega ao primeiro MTA, retransmitida para o
segundo, que por sua vez a retransmite para qualquer outro servidor. Essa situao ocorre

Captulo 8 - Servidor de correio eletrnico (parte 2)

139

quando o primeiro MTA tem o segundo como seu mail hub e o segundo tem o primeiro na
lista de IPs autorizados a us-lo como relay. uma situao bem difcil de diagnosticar e fcil
de ser explorada.
Antes de tornar um servio de correio eletrnico pblico fundamental verificar se ele est
se comportando como relay aberto. Uma maneira fcil de fazer isso atravs de um telnet
pela porta adequada, digitando os comandos SMTP diretamente. A ferramenta openssl, com
o comando s_client, pode ser usada no caso de sesses cifradas. Exemplo:
myhost:~$ telnet mailserver.example.com 25
Trying 192.0.2.82...
Connected to mailserver.example.com.
Escape character is ^].

220 babbo.example.com ESMTP Sendmail 8.13.4/8.13.4;

Tue, 20 Sep 2005 16:31:04 -0300


helo myhost.example.net
250 babbo.example.org Hello IDENT:1008@myhost.example.net [192.0.2.44], pleased to
meet you
mail from: <john.doe@example.net>
250 2.1.0 <john.doe@example.net>... Sender ok

rcpt to: <fulano@example.edu>

550 5.7.1 <fulano@example.edu>... Relaying denied. Proper authentication required.


quit
221 2.0.0 babbo.example.com closing connection

Administrao de Sistemas Linux: Servios para Internet

Connection closed by foreign host.

140

9
Instalar o Samba; Configurar um Servidor Primrio de Domnio (PDC); Integrar o PDC
com uma base de autenticao LDAP; Controlar informaes de usurios e autenticao
para clientes Windows.

conceitos

Estrutura e funcionamento do Samba. SMB/CIFS. Compartilhamento de arquivos.


Autenticao atravs de LDAP

Introduo
O estudo deste captulo ter foco na utilizao do Samba no modo clssico, ou seja, como
um Servidor Primrio de Domnio estilo Windows NT4. Ele se inicia pelos conceitos do servio
Samba, passando por aspectos tcnicos importantes do seu funcionamento, e concluindo com
sua instalao, configurao e testes relevantes nas situaes reais em que est inserido.
Em seguida, estudaremos a instalao e a configurao do Samba, com especial ateno aos
parmetros e sees mais importantes de seu arquivo de configurao. Apresentaremos
ainda o compartilhamento de um disco Linux e a montagem de diretrios do Windows.

Samba
O que o 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.
11 Criado em 1991 por Andrew Tridgell
11 O nome baseado na em uma busca em um dicionrio por uma palavra que continha
as letras S, M e B.
O Samba um conjunto de aplicaes, executadas em um sistema Linux ou UNIX, que utiliza
o protocolo Server Message Block (SMB)/Common Internet File System (CIFS).

Captulo 9 - Samba

objetivos

Samba

141

Os Sistemas Operacionais Microsoft Windows utilizam o SMB para realizar comunicaes


cliente-servidor e compartilhar arquivos e impressoras. Ao suportar esse protocolo, o
Samba torna possvel que computadores utilizando sistemas UNIX/Linux participem das
comunicaes entre sistemas Windows.
O Samba nasceu no final de 1991, pelas mos de Andrew Tridgell, um australiano que na
poca era estudante do curso de PhD em cincias da computao. Ele precisava rodar um
software da DEC, chamado eXcursion, que trabalhava em conjunto com o Patchworks, um
software de compartilhamento de arquivos. O Patchworks era um software proprietrio,
que utilizava um protocolo sobre o qual no existiam muitas informaes disponveis.
Andrew decidiu estudar o protocolo, desenvolvendo um pequeno programa, chamado
sockspy, que era capaz de examinar o trfego da rede, capturando as mensagens enviadas
pelo cliente e as respostas do servidor. Com isso, ele foi capaz de implementar o suporte s
principais chamadas e desenvolveu um programa servidor, que era capaz de conversar com
os clientes rodando o Patchworks. Esse programa tambm funcionava em conjunto com
o LanManager da Microsoft, permitindo compartilhar arquivos de um servidor Unix com
mquinas rodando o MS-DOS.
O protocolo usado pelo Patchworks se revelou uma implementao do protocolo SMB,
que havia sido desenvolvida internamente pela DEC. Pouco depois, em janeiro de 1992, ele
disponibilizou o Server 0.1, que foi rapidamente seguido por uma verso aprimorada, o
Server 0.5. A verso seguinte (1.5), que foi lanada apenas em dezembro de 1993, passou
a se chamar smbserver. O nome Samba surgiu em 2004, devido impossibilidade de
continuar a usar o nome smbserver.
O novo nome surgiu a partir de uma simples busca dentro do dicionrio por palavras que
possussem as letras S, M e B, de Server Message Blocks, posicionadas nessa ordem. A
melhor alternativa que a busca retornou foi a palavra samba. Uma curiosidade que no
existiu um Samba 1.0, pois a primeira verso a utilizar o nome Samba foi a 1.6.05, que foi
a sucessora imediata do smbserver 1.6.4.
Funcionalidades
11 Controlador de Domnio NT ou AD;
11 Relaes de confiana entre Domnios Windows NT;

Administrao de Sistemas Linux: Servios para Internet

11 Diferentes modos de segurana;

142

11 Diferentes backends de base de dados de contas;


11 Compartilhamento e armazenamento de arquivos entre Windows e Linux;
11 Compartilhamento de impressoras;
11 Autenticao de clientes;
11 Resoluo de nome com WINS;
11 Integrao entre usurios de diferentes Sistemas Operacionais;
Ele cresceu muito desde ento, e agora fornece funcionalidades e caractersticas compatveis com instalaes de grande escala. Entre elas, podemos citar:
11 Substituir um Controlador de Domnio Windows NT ou um Controlador de Domnio
Windows AD;
11 Possui excelente interoperabilidade com Domnios Windows NT, assim como Domnios
Microsoft Active Directory;

11 Permite relaes de confiana completas entre Domnios Windows NT;


11 Possui diferentes modos de segurana, o que confere autenticao mais flexvel do que
as disponveis nos Controladores de Domnio Microsoft Windows NT;
11 Permite o uso de diferentes backends de base de dados de contas;
11 Compartilhamento de diretrios e espao de armazenamento entre clientes Windows e Linux;
11 Compartilhamento de impressoras instaladas no servidor entre clientes Windows e Linux;
11 Permite autenticar clientes que esto realizando login em domnios Windows;
11 Fornece resoluo de nome com Windows Internet Name Service (WINS);
11 Suporte a um mix de usurios que utilizam diferentes Sistemas Operacionais;
11 Integrao entre a autenticao de sistemas Linux e Windows, mantendo apenas uma
nica base de contas de usurios que funciona em ambos os sistemas.
Modos de operao

11 Controlador Primrio (e de Backup) de um Domnio Modo clssico


11 Controlador de Domnio Active Directory
11 Servidor Membro em um Domnio
11 Servidor Standalone
11 Servidor de Impresso
O servidor Samba pode operar como uma das seguintes formas:
11 Controlador Primrio (e de Backup) de um Domnio Windows NT4 Modo clssico (PDC/
BDC Primary Domain Controller/Backup Domain Controller);
11 Controlador de Domnio Active Directory (AD-DC: Active Directory Domain Controller);
11 Servidor Membro em um Domnio AD ou Domnio Windows NT4;
11 Servidor Standalone;
11 Servidor de Impresso Windows.

Daemons
Nmbd

11 Controla as requisies de registro e resoluo de nome


smbd
11 Gerencia os recursos compartilhados entre o servidor Samba e seus clientes
winbindd
11 Utilizado quando o servidor Samba possui uma relao de confiana com outro
domnio
O Samba contm vrios programas que fornecem funcionalidades diferentes, porm relacionadas. A maioria dos programas do Samba giram em torno de trs deamons no modo

nmbd
Esse daemon controla todas as requisies de registro e resoluo de nome. o principal
mecanismo envolvido na navegao na rede SMB. Ele tambm gerencia todos os protocolos
baseados em UDP. O daemon nmbd deve ser o primeiro iniciado durante o processo de

Captulo 9 - Samba

clssico, que so:

inicializao do Samba.
143

smbd
Esse daemon gerencia os recursos compartilhados entre o servidor Samba e seus clientes,
atravs de conexes TCP/IP. Ele fornece servios de acesso a arquivos, impresso e navegao aos clientes SMB. Ele tambm lida com todas as notificaes entre o servidor Samba
e seus clientes na rede, e responsvel pela autenticao de usurios, bloqueio de recursos
e compartilhamento de dados atravs do protocolo SMB. Deve ser iniciado imediatamente
aps o nmbd.

winbindd
Esse daemon deve ser iniciado quando o Samba membro de um Domnio NT ou AD.
Tambm necessrio quando o servidor Samba possui uma relao de confiana com outro
domnio. Ele utilizado para buscar informao sobre os usurios e grupos que esto em
servidores Windows NT, e permitir que o Samba autorize o acesso dos usurios atravs de
um servidor Windows NT/2000.

Conjunto de ferramentas
11 net

11 pdbedit
11 rpcclient
11 smbclient
11 smbcontrol
11 smbpasswd
11 smbspool
11 smbstatus
11 smbtar
11 testparm
A distribuio do Samba tambm contm um conjunto de ferramentas, utilizadas na administrao e operao. Os principais so:

Administrao de Sistemas Linux: Servios para Internet

11 net: um programa que pode ser utilizado para realizar administrao remota nos servi-

144

dores Samba;
11 pdbedit: um programa utilizado para o gerenciamento das contas de usurios que
residem em uma base de dados SAM;
11 rpcclient: um programa que pode ser utilizado para executar funes MS-RPC em
clientes Windows;
11 smbclient: um cliente parecido com o FTP, que pode ser utilizado para se conectar com
compartilhamentos SMB e realizar operaes neles;
11 smbcontrol: um utilitrio de administrao que envia mensagens ao nmbd ou smbd;
11 smbpasswd: um programa que permite a um administrador alterar as contas utilizadas
pelo Samba;
11 smbspool: um programa de fila de impresso, utilizado para enviar arquivos para
impressoras remotas que esto compartilhadas na rede SMB;

11 smbstatus: um programa que apresenta um relatrio atual das conexes de rede aos
compartilhamentos em um servidor Samba;
11 smbtar: um programa similar ao comando tar do Linux, para realizar backup dos dados
em compartilhamentos SMB;
11 testparm: um programa simples para realizar verificaes no arquivo de configurao
do Samba.

Conceitos
Samba utiliza o protocolo SMB/CIFS.

O SMB surgiu junto com o Windows 3.11.


NetBIOS: uma API para troca de mensagens entre microcomputadores ligados em rede.
NetBIOS foi expandido, dando origem ao protocolo NetBEUI
CIFS foi a evoluo do SMB, inclui diversos novos recursos
11 Como o uso de uma nica porta TCP (445) no lugar das trs portas (137 UDP,
138 UDP e 139 TCP)
Workgroup, herdado do SMB: Conjunto segmentado de computadores na mesma rede
Domnio NT: Workgroup utilizando uma mquina como controladora
SID: Identificador nico de Segurana
RID: Identificador Relativo
Como foi mencionado, o Samba utiliza o protocolo SMB/CIFS. O SMB surgiu junto com o
Windows 3.11. Esse protocolo governa o compartilhamento de arquivos e impressoras em
redes Microsoft, incluindo a navegao na rede, o estabelecimento de conexes e a transferncia de dados. Ele utiliza o NetBIOS para a troca de mensagens entre os hosts.
O NetBIOS (Network Basic Input Output) uma API para troca de mensagens entre microcomputadores ligados em rede. Foi originalmente desenvolvido pela IBM, em 1984, para
servir como uma extenso do BIOS da placa-me, oferecendo recursos de rede. Em 1985,
o NetBIOS foi expandido, dando origem ao protocolo NetBEUI (NetBIOS Extended User
Interface), que foi durante muito tempo o principal protocolo usado em redes locais, antes
da popularizao do TCP/IP.
O CIFS foi desenvolvido pela Microsoft como a evoluo do SMB, que inclui diversos novos
recursos, abandona o uso do NetBIOS (devido a problemas relacionados ao uso intensivo
de pacotes de broadcast e do UDP) e passa a utilizar uma nica porta TCP (445) no lugar das
trs portas (137 UDP, 138 UDP e 139 TCP) utilizadas pelo SMB.
Outro conceito importante no Samba o uso dos Workgroups e Domnios. O workgroup,
herdado do SMB, um conjunto segmentado de computadores na mesma rede, onde todos
esto no mesmo nvel e compartilham recursos. A segurana no acesso aos recursos
controlada pela prpria mquina, normalmente definida ao nvel do que compartilhado e

O modelo de rede ponto-a-ponto dos workgroups funciona razoavelmente bem, contanto


que o nmero de computadores na rede seja pequeno. Entretanto, em redes maiores,
a simplicidade dos workgroups se torna um fator limitante. Os workgroups oferecem
somente o nvel mais bsico de segurana. Para suportar as necessidades de grandes redes,
a Microsoft introduziu os domnios com o Windows NT 3, que essencialmente um work-

Captulo 9 - Samba

utilizando um usurio/senha para acessar cada compartilhamento que a mquina possui.

group de computadores SMB com uma adio: um computador atuando como controlador
145

de domnio (DC Domain Controller), que fica responsvel por armazenar todas as contas,
utilizadas pelo usurio para acessar os recursos existentes em outras mquinas, e scripts de
logon configurados para fazer ajustes, sincronismo, manuteno ou qualquer outra tarefa
programada pelo administrador do sistema.
O principal benefcio introduzido pela utilizao do Domnio o Single Sign-On (SSO). Ele
permite que os usurios em uma rede realizem o logon em qualquer estao de trabalho
que seja membro de um domnio, e acessem os recursos da rede (compartilhamento,
arquivos, impressoras etc.) como se estivessem em seus prprios computadores.
Um domnio fornece um identificador nico de segurana (SID). Os identificadores de
segurana das contas de usurios, mquinas e grupos do domnio so compostos do SID do
domnio mais um identificador relativo (RID), que nico para a conta. Os SIDs de conta (SID
do domnio mais o RID) podem ser utilizados para criar listas de controle de acesso (ACLs),
que so associadas aos recursos de rede.
Um tpico SID de domnio se parece com o seguinte formato:
S-1-5-21-726309263-4128913605-1168186429

Quando a conta criada, o Samba gera o RID dela de forma algortmica. O Linux utiliza uma
base de dados separada para os identificadores de usurio e de grupo (o UID e GID), mas o
Windows aloca o RID utilizando uma nica base. Um usurio Windows e um grupo Windows
no podem ter o mesmo RID. Assim como o UID 0 utilizado para o usurio root no Linux, a
conta Administrador do Windows possui o RID 500. O RID concatenado ao SID do domnio
Windows. Dessa forma, a conta Administrador de um domnio que possui o SID acima, ter o
seguinte SID de usurio:
S-1-5-21-726309263-4128913605-1168186429-500

O resultado que toda conta em uma rede Windows possui um identificador de


segurana globalmente nico.

Samba ADS
Disponvel a partir da Verso 4

Administrao de Sistemas Linux: Servios para Internet

Servidor Samba atua como um Controlador de Domnio AD

146

11 Possui sua prpria implementao do LDAP


11 Possui um KDC Kerberos
11 Possui um servidor DNS interno
11 Trabalha com apenas um daemon, chamado samba
A partir da verso 4, o Samba passou a suportar o ambiente de logon em domnios Active
Directory (AD), utilizados pelos Sistemas Operacionais Windows, da verso 2000 em diante.
A implementao do Controlador de Domnio AD do Samba inclui internamente seu prprio
servidor LDAP (no sendo possvel utilizar um servidor externo) e um Key Distribution
Center (KDC) Kerberos.

Diferentemente do modo clssico PDC do Samba, onde necessrio executar trs daemons
(smbd, nmbd e winbindd), o Samba AD s precisa da execuo de um nico daemon, chamado
samba, e a ferramenta para administrar os servios do AD chamada de samba-tool.
Como o DNS uma parte integral do AD, o Samba 4 passou a fornecer duas solues integradas
de DNS: um servidor DNS interno e um plugin para o BIND, utilizando o mecanismo BIND DLZ.
Toda a parte de integrao com LDAP, incluindo a inicializao da base de dados, realizada
internamente pela nova ferramenta de configurao e provisionamento do Samba.

Instalao e configurao
Instalao
Red Hat/CentOS

11 # yum install samba4 samba4-client samba4-common


ou
11 # yum install samba samba-client samba-common
Debian/Ubuntu Server
11 # apt-get install samba samda-doc
Iniciar/Para os servios
Red Hat/CentOS
11 root# systemctl nmb {start|stop|reload|restart|force-reload|status}
11 root# systemctl smb {start|stop|reload|restart|force-reload|status}
Debian/Ubuntu Server
11 root# service {start|stop|reload|restart|force-reload|status} nmbd
11 root# service {start|stop|reload|restart|force-reload|status} smbd
11 root# service {start|stop|reload|restart|force-reload|status} winbindd
recomendada a instalao dos pacotes binrios do Samba atravs do prprio gerenciador
de pacotes da distribuio Linux. Dessa forma, ele instalar tambm todas as dependncias
necessrias para instalar e executar o Samba.

Red Hat/CentOS
# yum install samba4 samba4-client samba4-common

ou
# yum install samba samba-client samba-common

Debian/Ubuntu Server

Iniciar/Para os servios
Red Hat/CentOS
root# systemctl nmb {start|stop|reload|restart|force-reload|status}
root# systemctl smb {start|stop|reload|restart|force-reload|status}

Captulo 9 - Samba

# apt-get install samba samda-doc

147

Debian/Ubuntu Server
root# service {start|stop|reload|restart|force-reload|status} nmbd
root# service {start|stop|reload|restart|force-reload|status} smbd
root# service {start|stop|reload|restart|force-reload|status} winbindd

Arquivo de configurao smb.conf


Arquivo texto /etc/samba/smb.conf

11 Sees:
22 Representam um compartilhamento ou um meta-servio
22 Definido pelo nome da seo entre colchetes. Ex: [secao1]
11 Atributos:
22 Definidos por pares de chave e valor, separados pelo sinal de igual. Ex: chave1
= valorA
22 Podem ser globais ou locais
11 Sees especiais:
22 [global]
22 [homes]
22 [profile]
22 [printers]
22 Comentrios: # ou ;
A configurao do Samba armazenada no arquivo smb.conf, que geralmente fica localizado
no diretrio Linux. Dessa forma, ele instalar tambm todas as dependnciocal correto de
onde o arquivo de configurao deve ficar, basta executar o seguinte comando:

root#

smbd -b | grep smb.conf

O arquivo smb.conf utiliza a mesma sintaxe de vrios antigos arquivos .ini do Windows 3.1.
Consiste de vrias sees, que so iniciadas colocando o nome da seo entre colchetes. Os
atributos de cada seo so representados por pares de chave e valor, separados pelo

Administrao de Sistemas Linux: Servios para Internet

sinal de igual (=). um simples arquivo de texto, ento possvel edit-lo com qualquer

148

editor de texto.
Cada seo no arquivo smb.conf representa um compartilhamento ou um meta-servio em
um servidor Samba. A seo [global] especial, tendo em vista que ela contm configuraes que so aplicadas ao servidor Samba. O Samba suporta vrios meta-servios, cada um
tendo seu propsito especfico. Por exemplo, o compartilhamento [homes] um meta-servio que faz com que o Samba fornea um compartilhamento do diretrio home pessoal
para cada usurio. O compartilhamento [printers] um meta-servio que estabelece um
suporte fila de impresso. A seo [profile] define um perfil de usurio quando o servidor
Samba usado como PDC de domnio.
As linhas iniciadas por # ou ; so tratadas como comentrio. Quebras de linha podem
ser especificadas com uma \ no final da linha. A seguir um exemplo de uma configurao
mnima do smb.conf:

[global]
workgroup = GRUPO
netbios name = SMBSERVER
map to guest = bad user
security = share
[homes]
guest ok = no
read only = no
[dados]
path = /data
comment = Meus arquivos
read only = No
guest ok = yes
Browseable = yes

importante validar o contedo do arquivo smb.conf antes de iniciar os daemons. Para isso,
basta executar o comando testparm:

root#

testparm /etc/samba/smb.conf

O testparm analisar o arquivo de configurao e reportar qualquer parmetro desconhecido ou com a sintaxe incorreta. Ele tambm verifica os erros de configurao mais comuns
e emite um aviso caso encontre algum.

Principais parmetros de configurao


11 server role

11 netbios name
11 workgroup
11 invalid users
11 valid users
11 log file
11 log level
11 os level
11 domain master
11 local master
11 preferred master
11 passdb backend

11 comment
11 browseable
11 guest
11 account

Captulo 9 - Samba

11 security path

149

11 public

11 write list
11 read list
11 available
11 printable
11 read only
11 create mask
11 directory mask
11 volume
Os parmetros de configurao esto documentados na pgina do man do smb.conf. Alguns
parmetros podem ser utilizados somente na seo [global], outras somente em sees de
compartilhamentos ou de meta-servios.
11 server role = funcao: parmetro utilizado na seo [global] que determina o modo
bsico de operao de um Servidor Samba e um dos parmetros mais importantes de
configurao. As opes de configurao aceitas so:
22 AUTO: esse o valor padro, e faz com que o Samba consulte o parmetro security
para determinar o modo de operao do servidor. Se o parmetro security no
estiver configurado, o Samba ser configurado como um simples servidor de arquivos,
no estando conectado a nenhum Domnio;
22 STANDALONE: nesse modo de operao, um cliente precisa primeiro realizar o
logon utilizando um usurio e uma senha vlidos. Senhas criptografadas so utilizadas por padro nesse modo;
22 MEMBER SERVER: nesse modo o Samba tentar validar o login/senha encaminhando
a solicitao de autenticao para o Controlador de Domnio. Esse modo s funcionar
corretamente se o comando net foi utilizado para adicionar esse servidor no domnio.
esperado que o parmetro encrypted passwords esteja configurado com o valor
yes;
22 CLASSIC PRIMARY DOMAIN CONTROLLER: nesse modo de operao, o Samba
executa como um Controlador Primrio de Domnio clssico, fornecendo os servios
Administrao de Sistemas Linux: Servios para Internet

de logon de domnio aos clientes;


22 CLASSIC BACKUP DOMAIN CONTROLLER: o Samba executa, nesse modo de operao, como um Controlador Backup de Domnio clssico, fornecendo servios de
logon de domnio aos clientes;
22 ACTIVE DIRECTORY DOMAIN CONTROLLER: nesse modo de operao, o Samba
executa como um Controlador de Domnio AD, fornecendo servios de logon de
domnio aos clientes.
11 netbios name = nome do servidor: parmetro utilizado na seo [global] que especifica o nome NetBIOS primrio do servidor Samba. Caso no seja ajustado, ele usar o
hostname da mquina como valor padro;
11 workgroup = grupo de trabalho ou domnio: parmetro utilizado na seo [global]
que especifica qual o nome do grupo de trabalho ou do domnio da mquina Samba;
11 invalid users = user1 user2 @group1: define uma lista de usurios, separados por
espao, que no tero acesso aos recursos do servidor ou compartilhamento. Nomes
comeados com @ so interpretados como grupos;
150

11 valid users = user1 user2 @group1: semelhante opo invalid users, mas permite
que somente os usurios especificados tenham acesso ao sistema;
11 log file= /caminho/arquivo: parmetro utilizado na seo [global] que define a localizao e nome do arquivo de log gerado pelo Samba;
11 log level = valor: parmetro utilizado na seo [global] que define o nvel de debug dos
daemons do Samba, variando de 0 (menos informao) a 9 (muita informao);
11 os level=num: parmetro utilizado na seo [global] que especifica o nvel do Sistema
Operacional. Esse nmero usado para as eleies NetBIOS para definir o master
browser local e o controlador de domnio. O valor pode ser de 0 a 255, e o padro 32;
11 domain master = valor: parmetro utilizado na seo [global] que especifica se o servidor tentar se tornar o master browser de domnio. Os valores que podem ser especificados so: yes (valor padro), no e auto. O valor padro auto;
11 local master = valor: parmetro utilizado na seo [global] que define se o servidor
participar ou no das eleies para master browser local. Os valores que podem ser
especificados so: yes e no;
11 preferred master = valor: parmetro utilizado na seo [global] que define se o
servidor Samba ter ou no vantagens de ganhar uma eleio local. O servidor poder se
tornar de forma garantida o master browser do domnio se essa opo for usada em conjunto com domain master = yes. Os valores podem ser yes, no e auto (valor padro);
11 passdb backend = tipo:local: parmetro utilizado na seo [global] que permite escolher qual o tipo de backend ser utilizado para armazenar as informaes das contas. O
valor dividido em duas partes, sendo a primeira o nome/tipo do backend e a segunda
(opcional) uma string definindo o local onde ser armazenada. Mais sobre esse assunto
no item Backends de contas;
11 security = valor: parmetro utilizado na sesso [global] que permite definir o Modo de
segurana do Samba e como os clientes respondem durante a autenticao. Esse parmetro um dos mais importantes e ser tratado mais detalhadamente no item Modelos
de Segurana;
11 path = /caminho/do/diretrio: parmetro utilizado em uma seo de compartilhamento para especificar qual diretrio o usurio ter acesso. No caso de um compartilhamento de impressora, especifica o diretrio do spool de impresso, onde os arquivos
sero armazenados antes de serem enviados para a impressora;
11 comment = Descrio do Compartilhamento: descrio do compartilhamento que
ser mostrada na janela de procura de rede ou no comando smbclient -L maquina;
11 browseable = valor: define se o compartilhamento ser ou no exibido na janela de
procura de rede. Mesmo no sendo exibido, o compartilhamento poder ser acessado.
Valores aceitos so yes e no;
11 guest account = username: conta que ser usada para fazer acesso sem senha (convidado) quando o parmetro guest ok ou public forem usados em um compartilhamento.
11 public = valor: permite aos usurios se conectarem ao compartilhamento sem fornecer uma senha, usando o usurio definido em guest account. Aceita os valores yes e
no. Esse parmetro possui o mesmo efeito do parmetro guest ok;
11 write list = usuario1 usuario2 @grupo1: lista de usurios, separados por espao ou vrgula,
que podero ler e gravar no compartilhamento. Caso o nome for iniciado por @, ser tratado
como um grupo UNIX e todos os usurios daquele grupo tero acesso de gravao;

Captulo 9 - Samba

Por padro, ela mapeada para o usurio nobody;

151

11 read list = usuario1 usuario2 @grupo1: lista de usurios separados por espao ou
vrgula que tero acesso de apenas leitura no compartilhamento. Caso o nome for iniciado por @, ser tratado como um grupo UNIX;
11 available = valor: parmetro utilizado para habilitar e desabilitar um compartilhamento. Aceita os valores yes e no;
11 printable = valor: especifica se o compartilhamento uma impressora (yes) ou um
compartilhamento de arquivo/diretrio (no). O padro no;
11 read only = valor: especifica se o compartilhamento somente para leitura (yes) ou
no (no) para todos os usurios. O parmetro writable um antnimo equivalente a esse
parmetro, s que utiliza as opes invertidas;
11 create mask = valor: mscara do modo padro para criao de arquivos no compartilhamento. Valor configurado como a mscara de criao de arquivos do Linux;
11 directory mask = valor: mscara do modo padro para a criao de diretrios no
compartilhamento. Valor configurado como a mscara de criao de diretrios do Linux;
11 volume = nome: parmetro utilizado para configurar o rtulo do volume de um compartilhamento.

Parmetros de configurao para administrao de contas


Parmetros para administrao automtica de contas

11 Adicionados na seo [global]


22 add user script: Adicionar um usurio
22 delete user script: Remover um usurio
22 add group script: Adicionar um grupo
22 delete group script: Remover um grupo
22 add user to group script: Adicionar um usurio a um grupo
22 delete user from group script: Remover um usurio de um grupo
22 set primary group script: Defini o grupo primrio
22 add machine script: Adicionar uma mquina
Os parmetros a seguir, definidos na seo [global], so utilizados para a administrao das
Administrao de Sistemas Linux: Servios para Internet

contas, principalmente durante operaes remotas executadas no servidor Samba:

152

11 add user script: caminho completo para o script/comando que ser executado como
root pelo smbd para criar uma conta de usurio;
11 delete user script: caminho completo para o script/comando que ser executado como
root pelo smbd para remover uma conta de usurio;
11 add group script: caminho completo para o script/comando que ser executado como
root pelo smbd para criar um grupo;
11 delete group script: caminho completo para o script/comando que ser executado como
root pelo smbd para remover um grupo;
11 add user to group script: caminho completo para o script/comando que ser executado
como root pelo smbd para adicionar uma conta de usurio a um grupo;
11 delete user from group script: caminho completo para o script/comando que ser executado como root pelo smbd para remover uma conta de usurio a um grupo;

11 set primary group script: caminho completo para o script/comando que ser executado
como root pelo smbd para definir o grupo primrio de um usurio;
11 add machine script: caminho completo para o script/comando que ser executado
como root pelo smbd para adicionar uma conta de mquina;
Os comandos definidos nesses parmetros, que podem apontar para as prprias ferramentas de administrao do Linux ou para scripts especficos, so executados para realizar
as operaes definidas sob demanda, como, por exemplo, quando uma mquina ingressa
no domnio. Se o parmetro add machine script estiver corretamente configurado, quando a
mquina ingressa no domnio, a conta de mquina automaticamente criada.

Variveis de substituio
Variveis de substituio

Podem ser configuradas em qualquer lugar do arquivo:


11 %U: login do usurio da sesso;
11 %G: grupo primrio do %U;
11 %h: hostname do servidor que est executando o Samba;
11 %m: o nome NetBIOS da mquina cliente;
11 %L: o nome NetBIOS do servidor Samba;
11 %M: o hostname da mquina cliente;
11 %I: endereo IP da mquina cliente;
11 %T: data e hora do Servidor Samba;
11 %$(envvar): o valor da varivel de ambiente definida no Linux
22 (Exemplo: $PATH, $SHELL, $HOSTNAME);
11 %u: login do usurio do servio/compartilhamento;
11 %g: grupo primrio do %u;
11 %H: o diretrio home do usurio %u.
Muitas das strings que so configuradas no arquivo smb.conf aceitam substituies. Por
exemplo, o parmetro path = /tmp/%u interpretado como path = /tmp/aluno se o
usurio conectado possuir o login aluno.
As mais comumente utilizadas so:
11 %U: login do usurio da sesso;
11 %G: grupo primrio do %U;
11 %h: hostname do servidor que est executando o Samba;
11 %m: o nome NetBIOS da mquina cliente;
11 %L: o nome NetBIOS do servidor Samba;

11 %I: endereo IP da mquina cliente;


11 %T: data e hora do Servidor Samba;
11 %$(envvar): o valor da varivel de ambiente definida no Linux (Exemplo: $PATH, $SHELL,
$HOSTNAME);
11 %u: login do usurio do servio/compartilhamento;

Captulo 9 - Samba

11 %M: o hostname da mquina cliente;

153

11 %g: grupo primrio do %u;


11 %H: o diretrio home do usurio %u.

Backends de contas
11 Backend: mecanismo utilizado para armazenar as contas

11 smbpasswd
22 Arquivo texto, similar ao passwd/shadow utilizado pelo Linux
11 tdbsam
22 Melhoria em relao ao smbpasswd
22 Armazena informaes estendidas SAM (Security Accoutn Manager)
22 Arquivo binrio no formato TDB (Trivial Database)
22 Recomendado para ambientes com um nico Controlador de Domnio
11 ldapsam
22 Possibilita a integrao e comunicao com um Servidor LDAP
22 Recomendado para ambientes que necessitam de mltiplos Controladores
de Domnio (Primrio e de Backup)
O passdb backend apenas um mecanismo para armazenar as contas. Essas contas so as
contas de usurios, contas de grupos, contas de relao de confiana de mquina e contas
de relao de confiana entre domnios. Os trs backends suportados pelo Samba so:
smbpasswd, tdbsam e ldapsam. Desses, apenas o ldapsam suporta armazenar ambas as
contas dos usurios Linux (POSIX) e Samba em um nico repositrio.

smbpasswd
Essa opo permite utilizar o arquivo smbpasswd, que um simples arquivo texto (ASCII)
contendo as senhas criptografadas e um campo de informao sobre a conta. Essa forma
de backend no armazena qualquer informao SAM, necessria para sistemas Windows a
partir da verso NT, e que utilizam os controles extras de segurana e acesso.

O uso desse backend no recomendado, e s deve ser utilizado em casos onde a


Administrao de Sistemas Linux: Servios para Internet

retrocompatibilidade necessria.

154

tdbsam
Esse backend fornece uma rica base de dados para servidores locais. Ele no recomendado para ambientes com mltiplos controladores de domnio (um PDC e um ou mais BDCs).
O backend tdbsam armazena as informaes do backend smbpasswd, mais as informaes
estendidas do SAM (Security Account Manager), presentes nos servidores Windows, tudo
em um nico arquivo binrio no formato TDB (Trivial Database). A incluso das informaes estendidas tornou possvel ao Samba implementar os mesmos controles de acesso de
contas e sistema existente nos servidores Windows.

ldapsam
Esse backend fornece acesso ao servio de diretrio LDAP, com suporte ao sistema de
gerenciamento distribudo de contas. O Samba possui um schema para integrar a operao
com o servidor LDAP.

Modelos de segurana
11 Segurana ao nvel do Usurio

11 Segurana ao nvel do Domnio


11 Segurana de Domnio AD
A rede SMB/CIFIS possui apenas dois nveis de segurana: ao nvel do usurio e ao
nvel do compartilhamento. Um servidor SMB informa ao cliente, durante a configurao
inicial da sesso, o nvel de segurana que o servidor est utilizando. O nvel que o cliente
receber afetar a forma como o cliente tenta se autenticar, mas no afetar diretamente
a forma como o servidor Samba realiza a segurana. No SMB, tudo iniciado e controlado
pelo cliente, e o servidor pode apenas informar ao cliente o que est disponvel e se uma
ao permitida.
O Samba possui trs formas de implementar a segurana ao nvel de usurio. Essas implementaes do Samba so chamadas de mtodos de segurana, e so: user (usurio), domain
(domnio) e ADS.

Segurana no nvel do usurio


Modelo padro do Samba

11 A mquina cliente envia uma solicitao ao servidor, fornecendo usurio/senha


11 No focado no compartilhamento/recurso que o usurio tem acesso
11 O servidor aceita ou recusa a conexo apenas com base nas credenciais
11 Aps a conexo ser aceita, no ser mais necessrio entrar com usurio e senha
11 Configurao Incluir na seo [global]:
22 security = use
Nesse nvel, o cliente envia um pedido de configurao de seo diretamente aps a
negociao do protocolo, fornecendo um username e uma senha. O servidor pode aceitar
ou recusar a combinao username/senha. Durante esse estgio, o servidor ainda no
tem informaes sobre qual compartilhamento o cliente tentar eventualmente utilizar, se
baseando somente nas informaes de username/senha e o nome da mquina cliente para
aceitar/rejeitar a seo.
Se o servidor aceitar as credenciais username/senha, o cliente espera ser capaz de montar
os compartilhamentos sem a necessidade de entrar com a senha novamente. esperado
configurado durante a inicializao da seo.
Para configurar esse nvel de segurana, basta incluir o seguinte parmetro na seo [global]
do arquivo de configurao smb.conf:
security = user

Captulo 9 - Samba

que todos os direitos de acesso utilizaro o conjunto de credenciais username/senha que foi

155

Modo de Segurana Domain (Segurana ao Nvel de Usurio)


Mecanismo central para armazenar as contas

Compartilhado entre os controladores de domnio


Um nico servidor PDC mantm a base de dados
Torna o Servidor Samba um Servidor Membro de um Domnio
As requisies de autenticao so encaminhadas diretamente para o PDC
11 Configurao Incluir na seo [global]:
22 security = domain
22 workgroup = NOME-DO-DOMINIO
Esse modo fornece um mecanismo para armazenar todas as contas de usurios e grupos
em um repositrio central e compartilhado. O repositrio centralizado compartilhado
entre controladores de domnio. Os servidores que atuam como controladores de domnio
fornecem os servios de autenticao e validao para todas as mquinas que participam
no contexto de segurana do domnio. O PDC responsvel por manter a integridade e
segurana da base de dados de conta. Os BDCs fornecem somente logon de domnio e
autenticao de servio.
O servidor Samba, quando est operando no modo security = domain, possui uma conta
de relao de confiana (uma conta de mquina) e faz com que todas as requisies de
autenticao sejam encaminhadas diretamente para os controladores de domnio, tornando
o Servidor Samba um servidor membro de domnio.
Para configurar o Samba como um Servidor Membro de Domnio, necessrio configurar os
seguintes parmetros no arquivo smb.conf:
security = domain
workgroup = DOMINIO1

Modo de Segurana ADS (Segurana ao Nvel de Usurio)


11 Utilizado para ingressar o Servidor Samba como membro de domnio AD

11 Configurao Incluir na seo [global]:


Administrao de Sistemas Linux: Servios para Internet

22 realm = kerberos.REALM

156

22 security = ADS
22 password server = kerberos.server
O Samba pode ingressar em um domnio Active Directory (AD) utilizando um mtodo de
segurana baseado em RPC estilo NT4. Isso possvel se o domnio estiver executando em
modo nativo. O AD em modo nativo permite membros de domnio estilo NT.
Para configurar o Samba para atuar dessa forma, necessrio realizar as seguintes configuraes no arquivo smb.conf:
realm = kerberos.REALM
security = ADS
password server = kerberos.server

O termo realm utilizado para descrever a arquitetura de segurana baseada em Kerberos, que utilizada pelo Microsoft ADS.

Essa configurao no faz com que o Samba atue como um Controlador de


Domnio AD.

Contas de usurios, grupos e mquinas


Toda operao no Linux necessita de um identificador de usurio (chamado UID), assim
como no Windows necessrio um identificador de segurana (chamado SID). O Samba
fornece duas maneiras para mapear um usurio Windows para um usurio Linux.
Na primeira, todas as contas na base de dados SAM do Samba necessitam de um UID do
Linux para qual a conta ser mapeada. Antes de adicionar uma conta de usurio no Samba,
necessrio que a conta local correspondente j exista na base de usurios do Linux. Todas
as contas na base SAM do Samba necessitam de uma conta de usurio Linux, que pode ser
uma conta local do sistema (passwd e shadow) ou uma conta em um Servidor NIS.
A segunda forma de mapear um SID Windows para um UID ou GID Linux atravs do parmetro idmap config, presente no arquivo smb.conf, e que utilizado para especificar um
range de UID/GID a serem utilizados no mapeamento. Esse mtodo utiliza uma tabela de
mapeamento SID UID/GID, chamada de IDMAP. O winbind o responsvel por manter e
gerenciar a tabela de mapeamento, e associar um SID a um UID ou GID.
O Samba consulta o Linux para obter um UID, atravs das funcionalidades passwd,
shadow e group, configuradas no arquivo de controle do NSS (nsswitch.conf ). A forma
como o NSS obter o UID pode ser configurada de diversas formas. possvel utilizar o winbindd e suas bibliotecas, fornecido pelo prprio Samba, ou utilizar o LDAP, por exemplo.
A conta de mquina, tambm conhecida como conta de relao de confiana, uma conta
especial, utilizada para autenticar uma mquina cliente no servidor que o controlador do
domnio. O propsito dessa conta fazer com que nenhum outro computador possa utilizar
o mesmo nome de uma mquina confivel e, assim, utilizar os compartilhamentos que ela
tem permisso de acesso. A senha da conta de mquina atua como um segredo compartilhado para a comunicao segura com o controlador do domnio. O nome da mquina deve
ser o nome NetBIOS do cliente que ingressar no domnio, acrescido do caractere $. Esse
caractere serve para que o Samba reconhea essa conta como uma conta de mquina.
Os principais mecanismos que o Samba oferece para armazenar a base de dado das
contas so o tdbsam e o ldapsam. O tdbsam armazena os dados de contas de usurio e de
mquina em um nico arquivo binrio no formato TDB (trivial database). Ele armazena as
seguintes informaes:
11 UNIX username: username da conta no Linux/UNIX;

11 Account Flags: uma string de 11 caracteres, cercada por colchetes, representando as


flags de controle da conta;
11 User SID: SID da conta de usurio no domnio;
11 Primary Group SID: SID do grupo primrio do usurio no domnio;
11 Full Name: nome completo do usurio;

Captulo 9 - Samba

11 NT username: username da conta no domnio NT;

157

11 Home Directory: diretrio home do usurio. Pode estar no formato UNC;


11 HomeDir Drive: especifica a letra do dispositivo ao qual o caminho do diretrio home
ser mapeado;
11 Logon Script: especifica o script (um arquivo .CMD, .EXE, ou .BAT) de logon do usurio,
que ser executado no lado cliente;
11 Profile Path: especifica o caminho do perfil do usurio;
11 Domain: especifica o nome do domnio ao qual o usurio pertence;
11 Account desc: uma breve descrio da conta. Similar ao campo GECOS das contas
UNIX/Linux;
11 Workstations: lista de mquinas, separadas por vrgula, nas quais o usurio pode realizar logon. Se vazio, o usurio pode realizar logon em qualquer mquina;
11 Logon time: o timestamp (data e hora) da ltima vez em que o usurio realizou logon;
11 Logoff time: o timestamp (data e hora) da ltima vez em que o usurio realizou logoff;
11 Kickoff time: o timestamp (data e hora) de quando o usurio deve ser deslogado automaticamente;
11 Password last set: o timestamp (data e hora) da ltima vez em que a senha do usurio
foi alterada;
11 Password can change: o timestamp (data e hora) a partir de quando a senha do usurio
pode ser alterada;
11 Password must change: o timestamp (data e hora) a partir de quando a senha do
usurio expira;
11 Last bad password: o timestamp (data e hora) da ltima vez em que ocorreu uma tentativa de logon que falhou;
11 Bad password count: nmero de tentativas de logon que falharam;
11 Logon hours: quantidade de horas em que o usurio pode permanecer logado;
As flags de controle utilizadas pelo Samba so:
11 D: a conta est desabilitada;
11 H: um diretrio home obrigatrio;

Administrao de Sistemas Linux: Servios para Internet

11 I: uma conta de relao de confiana entre domnios;


11 L: a conta foi bloqueada automaticamente;
11 M: uma conta de logon MNS (Microsoft Network Service);
11 N: a senha no obrigatria;
11 S: uma conta de relao de confiana de servidor;
11 T: conta Duplicada Temporariamente;
11 U: conta de usurio normal;
11 W: conta de relao de confiana de Workstation;
11 X: senha nunca expira.
O tdbsam recomendado para novas instalaes que no necessitem do LDAP.
O mecanismo ldapsam indicado para ambientes muito grandes e que necessitem da
implementao de servidores BDC, alm do PDC, para realizar a replicao da base de
dados de contas. O pacote do Samba inclui o arquivo de schema necessrio para integrar
com o servidor LDAP e armazenar as informaes utilizadas pelo Samba.
158

O objeto sambaSamAccount deve complementar as informaes da conta de usurio do


sistema Linux. Ele um objeto do tipo ObjectClass auxiliar, o que significa que ele pode ser
utilizado para ampliar as informaes da conta de usurio existente no diretrio LDAP, disponibilizando as informaes necessrias para o Samba poder gerenciar a conta.
Para poder armazenar toda informao da conta de usurio (Linux e Samba) dentro do
diretrio, necessrio utilizar as ObjectClass sambaSamAccount e posixAccount de forma
combinada. Entretanto, o smbd ainda obter a informao da conta de usurio Linux atravs
das bibliotecas do prprio sistema. Isso significa que o servidor Samba deve tambm ter a
biblioteca LDAP NSS instalada e funcionando corretamente.

Samba como PDC


PDC Controlador Primrio de Domnio

11 Servidor que registra e se divulga como um PDC


11 Fornece servio de logon de rede
11 Fornece compartilhamento especial NETLOGON
11 Inicia e mantm a base de dados do Domnio
Configurar o Servidor como PDC
11 Configurao correta da rede TCP/IP e da rede Windows;
11 Configurao correta do parmetro para definir a funo do servidor;
11 Configurao correta do servio do DNS;
11 Logons de domnio para os clientes Windows;
11 Configurao de perfis remotos ou forar o uso de perfil local;
11 Configurao das polticas de rede e de sistema;
11 Adio e gerenciamento de contas de usurios do domnio;
11 Clientes Windows como membros de domnio.
Um Controlador de Domnio uma mquina que capaz de atender s requisies de logon
das estaes de trabalho na rede. O Microsoft LanManager e o IBM LanServer eram dois
produtos iniciais que suportavam essa funcionalidade. Essa tecnologia se tornou conhecida
como o servio LanMan Netlogon.
Quando o Microsoft Windows NT 3 foi lanado, ele suportava um novo estilo de Controle de
Domnio e, com ele, uma nova forma de realizar o servio de logon de rede e que possua
funcionalidades estendidas. Esse servio se tornou conhecido como o NT NetLogon Service.
O Controlador Primrio de Domnio (Primary Domain Controller) um servidor SMB/CIFS que:
11 Registra e divulga a si mesmo como um controlador de domnio, atravs de mensagens
NetBIOS de broadcast ou registros em um servidor WINS;
11 Fornece o servio de logon de Rede;

O PDC desempenha um papel importante no domnio. ele quem inicia uma nova base de
dados para controle do domnio.

Captulo 9 - Samba

11 Fornecer um compartilhamento especial, chamado de NETLOGON.

159

Os seguintes passos so necessrios para configurar o Samba como um PDC estilo Windows
NT para clientes Windows:
11 Configurao correta da rede TCP/IP e da rede Windows;
11 Configurao correta do parmetro para definir a funo do servidor, no arquivo smb.conf;
11 Configurao correta do servio de resoluo de nomes;
11 Logons de domnio para os clientes Windows;
11 Configurao de perfis remotos ou forar o uso de perfil local;
11 Configurao das polticas de rede e de sistema;
11 Adio e gerenciamento de contas de usurios do domnio;
11 Configurar os clientes Windows para se tornarem membros de domnio.
Cada controlador Samba de domnio deve fornecer o servio de logon de rede, funcionalidade que configurada no Samba atravs do parmetro domain logons no arquivo de
configurao smb.conf.
O primeiro passo para criar um PDC Samba funcional entender os parmetros necessrios
no arquivo smb.conf. Um exemplo de configurao de um PDC pode ser visto a seguir:
[global]
server role = classic primary domain controller
workgroup = DOMINIO1
netbios name = SMBSERVER
passdb backend = tdbsam
os level = 33
preferred master = auto
domain master = yes
local master = yes
security = user
domain logons = yes
logon path = \\%L\profiles
logon drive = H:
logon home = \\%L\%U
add user script = /usr/sbin/useradd -m %u
Administrao de Sistemas Linux: Servios para Internet

delete user script = /usr/sbin/userdel -r %u


add group script = /usr/sbin/groupadd %g
delete group script = /usr/sbin/groupdel %g
add user to group script = /usr/sbin/usermod -G %g %u
add machine script = /usr/sbin/useradd -s /bin/false -d /var/lib/nobody -g
maquinamaquinas %u
logon script = logon.cmd
[netlogon]
path = /var/lib/samba/netlogon
read only = yes

[profiles]
path = %H/profiles

160

read only = no
create mask = 0600
directory mask = 0700
[homes]
comment = Diretorios Home
valid users = %S
read only = No
browseable = No

11 Definem o modo de operao e a estrutura do Domnio

11 server role
11 workgroup
11 netbios name
11 passdb backend
11 server role: parmetro que define o modo de operao padro do Servidor Samba;
11 workgroup: parmetro que define o nome do domnio, quando configurado como PDC;
11 netbios name: parmetro que configura o nome NetBIOS pelo qual o servidor Samba
ser conhecido. Por padro, configurado com o mesmo nome atribudo ao host no DNS;
11 passdb backend: onde toda a informao das contas de usurios e grupos ser armazenada. Os valores aceitveis para a configurao de um PDC so: tdbsam e ldapsam.

Parmetros de controle do domnio


11 Configuram o funcionamento do Domnio:

22 os level
22 preferred master
22 ddomain master
22 security
22 encrypt passowrds
22 domain logons
Os parmetros os level, preferred master, domain master, security, encrypt password e
domain logons so peas-chave para garantir o funcionamento do domnio e o suporte
logon de rede.
O os level deve ser configurado com um valor igual ou acima de 32. Um controlador de
domnio deve ser o DMB, deve ser configurado para utilizar o modo de segurana user, deve
suportar senhas encriptadas compatveis com o Windows, e deve fornecer o servio de

11 os level: para o PDC, esse valor deve ser configurado como igual ou acima de 32;
11 preferred master: deve ser configurado com o valor yes, para o nmbd forar uma
eleio do Master Browser do Domnio;
11 domain master: deve ser configurado com o valor yes, para que o servidor Samba seja

Captulo 9 - Samba

logon de rede (domain logons).

identificado como um Master Browser do Domnio;


161

11 security: deve ser configurado como user;


11 encrypt passowrds: parmetro que controla se as senhas criptografadas sero negociadas com o cliente. Alguns clientes Windows s conseguem se conectar com o Samba
utilizando o suporte s senhas criptografadas;
11 domain logons: deve ser configurado para yes, fazendo com que o Samba fornea o
servio de logon de rede, e funcione como um controlador de domnio estilo Windows NT.

Parmetros de ambiente
Facilita operaes de logon na rede

Fornece funcionalidades de controle


11 logon path
11 logon home
11 logon drive
11 logon script
Os parmetros logon path, logon home, logon drive e logon script so configuraes de
suporte ao ambiente que ajudam a facilitar as operaes de logon dos clientes. Tambm
ajudam a fornecer funcionalidades de controle automatizadas para diminuir as sobrecargas
do gerenciamento de rede.
11 logon path: esse parmetro especifica o diretrio onde os perfis remotos so armazenados. Tambm especifica o diretrio a partir do qual alguns diretrios, como rea de
Trabalho, Aplicaes e reas de Rede, so carregados e exibidos na mquina cliente.
Para desabilitar o perfil remoto, basta deixar esse parmetro em branco (logon path = );
11 logon home: esse parmetro especifica o local do diretrio home quando clientes
Windows realizam logon em um PDC Samba. Ele pode ser usado para garantir que os
perfis remotos sejam armazenados em um subdiretrio do diretrio home do usurio.
Para desabilitar o perfil remoto, basta deixar esse parmetro em branco (logon home = );
11 logon drive: a unidade de disco que ter o homedir do usurio mapeado;
11 logon script: esse parmetro especifica o arquivo de script batch (.bat) ou um arquivo de
comandos NT (.cmd) que ser executado na mquina cliente quando um usurio realizar

Administrao de Sistemas Linux: Servios para Internet

um login. O arquivo deve ser no estilo DOS, utilizando os finalizadores de linha CR/LF. O

162

caminho do script relativo ao compartilhamento [netlogon]. Essa opo s e til quando


o Samba configurado como um servidor de logon. Exemplo:
net time \\smbserver /set /yes
net use Z: \\smbserver\COMPARTILHAMENTO /yes

Se esse script for criado no Linux, ele deve ser convertido para DOS, utilizando o
comando unix2dos.

Compartilhamento NETLOGON
Compartilhamento especial
Definido para dar suporte ao logon de rede
Configura o local onde sero armazenados o scripts de logon e arquivos de poltica de grupo

Esse compartilhamento fundamental no suporte a logon e associao de domnio.


Ele fornecido em todos os controladores de domnio Microsoft e utilizado para fornecer scripts de logon, armazenar arquivos de poltica de grupo (NTConfig.POL), e localizar
outras ferramentas que podem ser necessrias para o processamento do logon.

Compartilhamento PROFILE
Compartilhamento especial

Utilizado para armazenar os perfis dos usurios


O diretrio especificado deve existir antes da realizao do logon
Esse compartilhamento utilizado para armazenar os perfis de rea de trabalho do usurio.
Cada usurio deve possuir um diretrio na raiz desse compartilhamento.
necessrio que o diretrio especificado no parmetro path nesse compartilhamento
exista antes do usurio realizar logon na rede e tambm que tenha as corretas permisses
de leitura e escrita. Se o diretrio profiles for especificado dentro do homedir do usurio, o
recomendado incluir esse diretrio dentro do skel. Exemplo:
mkdir /etc/skel/profiles

Dessa forma, toda vez que uma conda de usurio for criada, o diretrio profiles automaticamente criado.

Servio de Logon na Rede de Domnio


11 Executar o servio de netlogon

22 Configurar o parmetro domain logon com o valor yes


11 Somente o PDC configurar o parmetro domain master com o valor yes
Todos os controladores de domnio devem executar o servio netlogon (domain logon no
Samba). O PDC deve ser configurado com o parmetro domain master = yes.

Configuraes adicionais
Alguns itens adicionais a serem verificados e executados aps a configurao do Samba.
Reiniciar os servios do Samba:
11 Red Hat / CentOS
root# systemctl restart nmb
root# systemctl restart smb

11 Debian /Ubuntu Server


root# service nmbd restart
root# service winbindd restart

Adicionar a conta do usurio root no Samba. Essa conta essencial nas atividades regulares
de manuteno e administrao:
root#

smbpasswd -a root

New SMB password: XXXXXXXX

Captulo 9 - Samba

root# service smbd restart

Retype new SMB password: XXXXXXXX

163

Verificar as regras do iptables.


Pode ser necessrio liberar no firewall as portas utilizadas pelo Samba, que so:
11 Porta 137: servio de Nome NetBIOS Name Service;
11 Porta 138: servio de Datagrama do NetBIOS;
11 Porta 139: servio de Sesso NetBIOS Session Service;
11 Porta 445: servio de Diretrio Microsoft.
As regras mais simples para liberar a entrada nessas portas, no iptables, seriam:
root# iptables -A INPUT --dport 137 -m state --state NEW,ESTABLISHED -j ACCEPT
root# iptables -A INPUT --dport 138 -m state --state NEW,ESTABLISHED -j ACCEPT
root# iptables -A INPUT --dport 139 -m state --state NEW,ESTABLISHED -j ACCEPT
root# iptables -A INPUT --dport 445 -m state --state NEW,ESTABLISHED -j ACCEPT

Outra opo, utilizada somente em ambiente de testes, remover todas as regras do


firewall:
root# iptables -F

Integrao com o OpenLDAP


11 Necessrio em ambientes com PDC e BDCs

11 nico backend que permite utilizao distribuda


11 Alta disponibilidade atravs da replicao/sincronizao de Servidores LDAP
11 Todas as contas ficam centralizadas (uma nica conta para acessar Windows e Linux)
O principal fator que torna necessrio a integrao do Samba com o LDAP a implementao
de Servidores Samba BDCs, pois esse o nico backend de base de usurios que permite
o uso de forma distribuda. A operao de Alta Disponibilidade pode ser obtida atravs da
replicao/sincronizao do diretrio, e configurao de servidores master/slave. Outra
grande vantagem de integrar o Samba com o LDAP que todas as contas ficam centralizadas
em uma nica base, evitando assim a necessidade de criar uma conta para um usurio em
duas bases diferentes (Samba e NIS, por exemplo).
O OpenLDAP uma plataforma madura para hospedar a infraestrutura de diretrio orga Administrao de Sistemas Linux: Servios para Internet

nizacional, e pode incluir todas as contas Linux, diretrio de armazenamento de e-mail, e


muito mais. Da perspectiva do OpenLDAP, as contas do sistema Linux so armazenadas em
extenses do schema POSIX. O Samba fornece seu prprio schema para permitir o armazenamento dos atributos necessrios de conta. O backend LDAP utilizado para armazenar:
11 Contas de Usurios de Rede Windows;
11 Contas de Grupo Windows NT;
11 Informao de Mapeamento entre Grupos UNIX e Grupos Windows NT;
11 Mapeamento entre SIDs e UIDs.
A utilizao do Samba com o OpenLDAP torna necessrio armazenar as contas UNIX e as
contas de Rede Windows no backend LDAP. Isso significa que necessrio utilizar algumas
ferramentas para fazer a resoluo entre as contas. Basicamente, os passos para realizar a
integrao so:
11 OpenLDAP instalado e operacional;
11 Incluir o schema do Samba no OpenLDAP.
164

11 Configurar o Samba PDC para acessar a base de dados LDAP;


11 Inicializar o arquivo secrets.tdb do Samba;

Configurao do OpenLDAP
Incluir suporte ao objeto sambaSamAccount adicionar o schema do Samba

no OpenLDAP
11 Copiar o arquivo do schema
22 root# zcat /usr/share/doc/samba/examples/LDAP/samba.ldif.gz > /etc/ldap/
schema/samba.ldif
11 Carregar o schema
22 root# ldapadd -Q -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/samba.ldif
11 Criar ndices para os atributos mais utilizados
Para incluir suporte ao objeto sambaSamAccount em um servidor OpenLDAP, primeiro
necessrio copiar o arquivo samba.ldif para a diretrio de configurao do slapd. Esse
arquivo pode ser encontrado o diretrio examples/LDAP da distribuio do Samba, ou
atravs do pacote samba-doc:
root# zcat /usr/share/doc/samba/examples/LDAP/samba.ldif.gz > /etc/ldap/schema/
samba.ldif

Carregar o schema na configurao do OpenLDAP:


root# ldapadd -Q -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/samba.ldif

Para verificar se o novo esquema foi adicionado corretamente e est disponvel:


root# ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b
cn=schema,cn=config(objectClass=olcSchemaConfig) dn

recomendado que alguns ndices sejam mantidos sobre alguns dos atributos mais teis,
para agilizar as buscas realizadas nas classes de objeto sambaSamAccount, posixAccount e
posixGroup. Isso feito criando o arquivo samba_indice.ldif, com o contedo:
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: sambaSIDList eq
olcDbIndex: sambaDomainName eq
olcDbIndex: default sub

Se j existir a configurao de ndices no OpenLDAP, editar o arquivo samba_indice.ldif


para conter somente os ndices para os campos utilizados pelo Samba.

Captulo 9 - Samba

olcDbIndex: sambaGroupType eq

165

Utilizar o comando ldapmodify para carregar os novos ndices na configurao do


OpenLDAP:
root# ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f samba_indice.ldif

possvel verificar os novos ndices utilizando o comando ldapsearch:


root# ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=configolcDatabase={1}hdb
olcDbIndex

Inicializao da base de dados LDAP Configurando o smbldap-tools


Pacote com conjunto de ferramentas para gerenciar as contas
Inicializar a base do LDAP
11 I. Obter o SID do domnio Samba:
22 root# net getlocalsid
11 II. Editar o arquivo /etc/smbldap-tools/smbldap.conf
22 SID=SID DO DOMINIO
22 sambaDomain=DOMINIO
22 slaveLDAP=ldap://SERVIDOR/
22 masterLDAP=ldap://SERVIDOR/
22 ldapTLS= VALOR
22 verify= VALOR
22 dclientcert=/CAMINHO/CERTIFICADO
22 clientkey=/CAMINHO/CHAVE
22 suffix=BASE DN
22 usersdn=DN DOS USUARIOS
22 computersdn=DN DAS MAQUINAS
22 groupsdn=DN DOS GRUPOS
22 idmapdn=DN DOS MAPEAMENTOS

Administrao de Sistemas Linux: Servios para Internet

22 sambaUnixIdPooldn=VALOR
22 oscope=VALOR
22 hash_encrypt=VALOR
22 crypt_salt_format=%s
22 userLoginShell=SHELL
22 userHome=DIRETORIO
22 userHomeDirectoryMode=VALOR
22 userGecos=DESCRICAO
22 defaultUserGid=GID
22 defaultComputerGid=GID
22 skeletonDir=DIRETORIO
22 defaultMaxPasswordAge=NUMERO DE DIAS
22 userSmbHome=CAMINHO UNC
22 userProfile=CAMINHO UNC
166

22 userHomeDrive=LETRA:

22 userScript=SCRIPT.BAT
22 mailDomain=DOMINIO
11 III. Editar o arquivo /etc/smbldap-tools/smbldap_bind.conf
22 slaveDN=ADMIN DN
22 slavePw=SENHA
22 masterDN=ADMIN DN
22 masterPw=SENHA
11 IV. Popular a base do OpenLDAP:
22 root# smbldap-populate
O pacote smbldap-tools possui um bom conjunto de ferramentas para gerenciar as contas,
quando utilizando o Samba com o OpenLDAP. Essas ferramentas permitem o gerenciamento
da maioria dos componentes que so necessrios para as contas, especialmente para a
administrao de usurios, mquinas e grupos. Outro ponto positivo desse pacote que os
scripts contidos nele podem ser utilizados como parmetros no smb.conf.
Antes de adicionar as contas na base de dados do LDAP, necessrio criar a estrutura
onde sero armazenadas (caso ainda no exista). Para essa tarefa, ser utilizado o script
smbldap-populate.
Para inicializar e popular a base de dados do OpenLDAP com smbldap-populate, necessrio configurar o pacote smbldap-tools, editando os arquivos /etc/smbldap-tools/smbldap.
conf e /etc/smbldap-tools/smbldap_bind.conf, para se adequar s caractersticas do
ambiente. Para isso, os seguintes passos so necessrios:
Obter o SID do domnio Samba:
root# net getlocalsid
SID for domain SERVER is: S-1-5-21-3102374607-2088646784-3588851380

Editar o arquivo /etc/smbldap-tools/smbldap.conf. Esse o arquivo que contm toda a configurao do Samba e do OpenLDAP:
root# zcat /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz > /etc/smbldaptools/smbldap.conf

As variveis a serem configuradas no arquivo smbldap.conf so:


11 SID=SID DO DOMINIO: deve conter o SID do domnio, obtido atravs do comando net
getlocalsid;
11 sambaDomain=DOMINIO: domnio do Samba;
11 slaveLDAP=ldap://SERVIDOR/: endereo do servidor LDAP secundrio;

11 ldapTLS=VALOR: utilizado para configurar a criptografia na conexo com o OpenLDAP.


Aceita os valores 1, para utilizar o start_tls, ou 0, para desabilitar;

Captulo 9 - Samba

11 masterLDAP=ldap://SERVIDOR/: endereo do servidor LDAP principal;

167

11 verify=VALOR: define se verificar o certificado do servidor OpenLDAP. Aceita os


valores none (no verifica/solicita o certificado), optional (verifica o certificado, se
existir. Aceita a conexo mesmo se o certificado no existir ou no for vlido) e required
(s aceita a conexo se o certificado existir e for vlido);
11 clientcert=/CAMINHO/CERTIFICADO: certificado utilizado para se conectar ao servidor OpenLDAP;
11 clientkey=/CAMINHO/CHAVE: chave do certificado utilizada para se conectar ao servidor OpenLDAP;
11 suffix=BASE DN: define o DN da base da estrutura do diretrio no OpenLDAP. Exemplo
dc=empresa,dc=com,dc=br;
11 usersdn=DN DOS USUARIOS: define onde as contas dos usurios sero armazenadas
na estrutura do diretrio no OpenLDAP. Exemplo ou=usuarios,${suffix};
11 computersdn=DN DAS MAQUINAS: define onde as contas das mquinas sero armazenadas na estrutura do diretrio no OpenLDAP. Exemplo ou=maquinas,${suffix};
11 groupsdn=DN DOS GRUPOS: define onde as contas dos grupos sero armazenadas na
estrutura do diretrio no OpenLDAP. Exemplo ou=grupos,${suffix};
11 idmapdn=DN DOS MAPEAMENTOS: define onde os mapeamentos de UID/SID sero
armazenados na estrutura do diretrio no OpenLDAP. Exemplo ou=idmap,${suffix};
11 sambaUnixIdPooldn=VALOR: onde armazenar os prximos UID e GID disponveis para
as novas contas de usurios e grupos. Exemplo ${sambaDomain},${suffix};
11 scope=VALOR: escopo padro utilizado na estrutura do diretrio do OpenLDAP. Define
o ponto inicial de uma busca e at que nvel ela vai a partir da Base DN. Aceita os valores
base (busca somente no nvel da Base DN), one (realiza a busca em todas as entradas
um nvel a seguir da Base DN) e sub (realiza a busca em todas as entradas e em todos os
nveis a seguir da Base DN);
11 hash_encrypt=VALOR: encriptao da senha do Linux. Aceita os valores CRYPT,
MD5, SMD5, SSHA, SHA e CLEARTEXT;
11 crypt_salt_format=%s: se o parmetro hash_encrypt estiver configurado como
CRYPT, possvel configurar o formato do salt. O valor padro %s;
11 userLoginShell=SHELL: shell de login do usurio. Exemplo /bin/bash;

Administrao de Sistemas Linux: Servios para Internet

11 userHome=DIRETORIO: Diretrio home do usurio. Exemplo: /home/%U;

168

11 userHomeDirectoryMode=VALOR: permisso padro para o diretrio home do


usurio. Exemplo 700;
11 userGecos=DESCRICAO: campo de GECOS padro utilizado para a criao das contas
dos usurios. Exemplo Usurio do SAMBA;
11 defaultUserGid=GID: nmero do GID padro utilizado para a criao das contas dos
usurios. Exemplo 513;
11 defaultComputerGid=GID: nmero do GID padro utilizado para a criao das contas
de mquinas. Exemplo 515;
11 skeletonDir=DIRETORIO: diretrio skel utilizado para a criao das contas de usurios.
Exemplo /etc/skel;
11 defaultMaxPasswordAge=NUMERO DE DIAS: tempo padro, em dias, da validade
das senhas;
11 userSmbHome=CAMINHO UNC: o caminho no formato UNC para a localizao do

home drive do usurio (aceita a substituio %U para o username Mesmo valor do parmetro logon home do arquivo smb.conf). Exemplo \\SMBSERVER\%U;
11 userProfile=CAMINHO UNC: o caminho no formato UNC para a localizao do perfil
do usurio (aceita a substituio %U para o username Mesmo valor do parmetro
logon script do arquivo smb.conf ). Exemplo \\SMBSERVER\%U\profiles;
11 userHomeDrive=LETRA:: a letra para o mapeamento padro do home drive (Mesmo
valor do parmetro logon drive do arquivo smb.conf ). Exemplo H:;
11 userScript=SCRIPT.BAT: o nome do script padro utilizado para realizar o netlogon
do usurio (Mesmo valor do parmetro logon script do arquivo smb.conf). Exemplo:
logon.cmd;
11 mailDomain=DOMINIO: domnio adicionado ao atributo mail dos usurios. Exemplo:
empresa.com.br;
Editar o arquivo /etc/smbldap-tools/smbldap_bind.conf, onde as credenciais para conexo
com o servidor OpenLDAP so configuradas:
root# cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf /etc/smbldap-tools/.

Editar os seguintes parmetros no arquivo smbldap_bind.conf:


11 slaveDN=ADMIN DN: define o DN da conta do Administrador do servidor OpenLDAP
secundrio. Exemplo: cn=admin,dc=exemplo,dc=com,dc=br;
11 slavePw=SENHA: define a senha do DN da conta do Administrador do servidor
OpenLDAP secundrio;
11 masterDN=ADMIN DN: define o DN da conta do Administrador do servidor OpenLDAP
primrio. Exemplo: cn=admin,dc=exemplo,dc=com,dc=br;
11 masterPw=SENHA: define a senha do DN da conta do Administrador do servidor
OpenLDAP primrio;
Popular a base do OpenLDAP:
root# smbldap-populate

Esse comando vai ler os arquivos de configurao e criar a estrutura de diretrio (caso ainda
no exista) dentro do servidor OpenLDAP, conforme definido no arquivo smbldap.conf.

Configurando o Samba PDC para acessar a base de dados LDAP


Configuraes a serem realizadas no Servidor Samba, para habilitar a comunicao

com o LDAP
11 Parmetros na seo [global]
22 ldap admin dn = ADMIN DN
ldap ssl = valor
22 passdb backend = ldapsam:ldap://SERVIDOR[:porta]

22 ldap suffix = BASE DN


22 ldap user suffix = ou=usuarios
22 ldap group suffix = ou=grupos
22 ldap machine suffix = ou=maquinas

Captulo 9 - Samba

22 ldap delete dn = valor

169

Os seguintes parmetros devem ser configurados na seo [global] do arquivo smb.conf,


para habilitar o uso do LDAP:
11 ldap admin dn = ADMIN DN: define o DN da conta de administrador, utilizada para se
conectar ao servidor LDAP. A senha armazenada no arquivo secrets.tdb, atravs do
comando smbpasswd -w SENHA;
11 ldap ssl = valor: configura a conexo SSL com o servidor LDAP. Aceita os valores off, on
(valor padro) e start tls;
11 passdb backend = ldapsam:ldap://SERVIDOR[:porta]: configura o backend ldapsam
para se conectar ao servidor LDAP. Adicionalmente, pode ser configurada a porta de
acesso utilizada;
11 ldap delete dn = valor: especifica se uma operao de remoo realizada no ldapsam
apaga o registro inteiro, inclusive da base do LDAP, ou somente os atributos especficos
do Samba. Aceita os valores yes e no;
11 ldap suffix = BASE DN: especifica o DN da base do OpenLDAP, utilizada para armazenar o
objeto sambaDomain. Exemplo dc=empresa,dc=com,dc=br;
11 ldap user suffix = ou=usurios: esse parmetro especifica onde as contas dos usurios
sero adicionados na estrutura do diretrio no OpenLDAP. O valor configurado adicionado ao valor definido no parmetro ldap suffix;
11 ldap group suffix = ou=grupos: esse parmetro especifica onde as contas dos grupos
sero armazenados na estrutura do diretrio no OpenLDAP. O valor configurado adicionado ao valor definido no parmetro ldap suffix;
11 ldap machine suffix = ou=maquinas: esse parmetro especifica onde as contas das
mquinas sero armazenadas na estrutura do diretrio no OpenLDAP. O valor configurado adicionado ao valor definido no parmetro ldap suffix.

Configuraes adicionais
11 O Servidor Samba deve ser configurado como um cliente LDAP

11 Configurar a senha do rootDN


22 root# smbpasswd -W
11 Criar o usurio root do Samba (caso ainda no exista):
Administrao de Sistemas Linux: Servios para Internet

22 root# smbpasswd a root


11 Reiniciar o Samba
Para que o Sistema Linux do Samba consiga identificar as contas que esto dentro da base
do OpenLDAP como usurios vlidos, necessrio que o Sistema do Servidor do Samba seja
configurado como um cliente LDAP e que os pacotes NSS/PAM e o NSCD estejam instalados
e configurados com o suporte para utilizar o LDAP.
Outro passo configurar a senha do rootDN, definida no Samba atravs do parmetro ldap
admin dn. Essa a conta que o Samba utiliza para se autenticar e administrar a base de
dados do OpenLDAP:
root# smbpasswd -W

Criar o usurio root do Samba (caso ainda no exista):


root# smbpasswd a root

Aps a configurao do arquivo smb.conf, necessrio reiniciar os servios do Samba.


170

Configurao de compartilhamento
rea de armazenamento que ser compartilhada na rede

Definida como
11 [nome_do_compartilhamento]
possvel criar um compartilhamento pblico ou restrito a determinados usurios
Principais parmetros para configurar um compartilhamento
11 path
11 comment
11 browseable
11 guest account
11 public
11 guest only
11 write list
11 read list
11 valid users
11 invalid users
11 locking
11 available
11 read only
11 writable
11 create mask
11 directory mask
11 volume
Para criar um compartilhamento de rede, necessrio definir a rea que ser disponibilizada para armazenamento. A definio de um compartilhamento feita configurando uma
seo [nome_do_compartilhamento] no arquivo smb.conf. A seguir um exemplo da configurao de um compartilhamento chamado smbdados. Esse compartilhamento utilizar o
diretrio /mnt/dados e ser acessvel a todos os usurios.
[smbdados]
comment = Espao para Compartilhamento de Dados
path = /mnt/dados
writable = yes
public = yes

Para restringir o acesso ao compartilhamento, necessrio remover o parmetro public e

possvel criar vrios compartilhamentos, cada um configurado com diferentes controles de


acesso e utilizando diferentes reas de armazenamento.
Alguns dos principais parmetros utilizados para configurar o compartilhamento so: path,
comment, browseable, guest account, public, guest only, write list, read list, valid users,
invalid users, locking, available, read only, writable, create mask, directory mask e volume.

Captulo 9 - Samba

definir quais usurios tero direito de acesso, utilizando o parmetro valid users.

171

Atividades administrativas
Comandos de administrao pdbedit, smbpasswd e smbldap-tools
smbpasswd

11 Ferramenta bsica, similar aos programas passwd e yppasswd


11 No depende do backend
11 Utilizada para criar uma conta, alterar uma senha, habilitar/desabilitar uma conta,
entre outras atividades
pdbedit
11 Criado para administrar o backend tdbsam
11 Consegue configurar as polticas de segunraa
11 Alm de realizar as operaoes do smbpasswd, tambm pode:
22 Listar as informaes sobre as contas
22 Migrar as contas entre diferentes backends
22 Gerenciar polticas de contas
22 Gerenciar configuraes das polticas de acesso do domnio
smbldap-tools
11 Possui vrios comandos para administrar as contas
22 Criar, remover, modificar, listar, entre outras atividades
22 o nico que consegue alterar diretamente as informaes na base de dados do
OpenLDAP
22 S deve ser utilizado quando o Servidor Samba est integrado com o LDAP
A ferramenta smbpasswd similar aos programas passwd e yppaswd. Ela trabalha independentemente dos mtodos utilizados para armazenar as contas e as senhas, especificados
pelo parmetro passdb backend no arquivo smb.conf.
O smbpasswd funciona em um modo cliente/servidor, onde ele contacta o smbd local para
alterar a senha do usurio. Ele tambm capaz de alterar senhas de usurios de domnio

Administrao de Sistemas Linux: Servios para Internet

em servidores PDC Windows NT.

172

Outras aplicabilidades do smbpasswd:


11 Adicionar e remover contas de usurio ou de mquina;
11 Habilitar e desabilitar contas de usurio ou de mquina;
11 Configurar como NULL as senhas de usurios;
11 Gerenciar as contas de relao de confiana entre domnios.
Quando executado por um usurio normal, o comando smbpasswd permitir apenas a troca
da senha no Samba. Quando executado pelo usurio root, o comando aceita argumentos
opcionais, como o utilizado para especificar o usurio que ser alterado.
O pdbedit uma ferramenta que s pode ser executada pelo root. Ele utilizado para
gerenciar o passdb backend, assim como vrias configuraes de polticas de segurana das
contas do domnio. Alm de ser capaz de realizar todas as operaes do smbpasswd, ele
tambm pode:

11 Listar as informaes sobre as contas de usurios, grupos e mquinas;


11 Migrar as contas de usurios, grupos e mquinas entre diferentes mecanismos
de armazenamento;
11 Gerenciar polticas de contas;
11 Gerenciar configuraes das polticas de acesso do domnio.
Os principais controles de polticas da conta do Samba

11 maximum password age


11 minimum password age
11 min password length
11 password history
11 bad lockout attempt
11 lockout duration
Os principais controles de polticas da conta do Samba so:
11 maximum password age: a validade mxima das senhas, em segundos. O valor -1
representa que as senhas nunca expiram;
11 minimum password age: a validade mnima das senhas, em segundos. A senha no
pode ser alterada antes desse tempo;
11 min password length: o tamanho mnimo das senhas;
11 password history: nmero de senhas armazenadas que foram utilizadas previamente.
Utilizado para impedir o usurio de reutilizar a mesma senha;
11 bad lockout attempt: nmero de tentativas de logon que falharam antes da conta
ser bloqueada;
11 lockout duration: tempo de durao do bloqueio de conta, definido em minutos.
O pdbedit a nica ferramenta que pode gerenciar as configuraes de segurana, as polticas e flags de controle de conta. Uma funcionalidade interessante dele a capacidade de
importar e exportar informaes de um tipo de passdb backend para outro tipo
(Por exemplo: tdbsam > ldapsam).
O pdbedit, assim como o smbpasswd, necessita que uma conta de usurio POSIX j exista
na base de contas de usurios do sistema Linux. Nenhuma das duas ferramentas criar
automaticamente a conta no sistema.
O pacote smbldap-tools possui vrios comandos que so utilizados para administrar as
contas. Atravs deles possvel alterar todos os campos das contas armazenadas na base
de dados do OpenLDAP.

Os comandos de administrao do Samba possuem vrios parmetros, e so utilium dos comandos (man smbpasswd, man pdbedit etc.).

Captulo 9 - Samba

zados para as mais diversas atividades. recomendado estudar o manual de cada

173

Gerenciamento de Conta de Usurios


Criar conta

Utilizando o backend tdbsam


11 Criar a conta no Linux
22 root# useradd -c Descricao -m USUARIO
22 root# passwd USUARIO
11 Criar a conta no Samba
22 root# smbpasswd -a USUARIO
ou
22 root# pdbedit -a -u USUARIO

Utilizando o backend ldapsam (atravs do smbldap-tools)


11 root# smbldap-useradd -a -P USUARIO
Utilizando o backend tdbsam:
#Criar a conta no Linux
root#

useradd -c Descricao -m

root#

passwd USUARIO

USUARIO

#Criar a conta no Samba


root#

smbpasswd -a USUARIO

ou
root#

pdbedit -a -u USUARIO

Utilizando o backend ldapsam (atravs do smbldap-tools):


root#

smbldap-useradd -a -P USUARIO

Remover conta
Utilizando o backend tdbsam

Administrao de Sistemas Linux: Servios para Internet

11 root# pdbedit -x USUARIO

174

11 root# userdel USUARIO

Utilizando o backend ldapsam (atravs do smbldap-tools)


11 root# smbldap-userdel USUARIO
Utilizando o backend tdbsam:
root#

pdbedit -x USUARIO

root#

userdel USUARIO

Utilizando o backend ldapsam (atravs do smbldap-tools):


root# smbldap-userdel USUARIO

Listar conta
Utilizando o backend tdbsam

11 root# pdbedit -L
11 root# pdbedit -Lv USUARIO

Utilizando o backend ldapsam (atravs do smbldap-tools)


11 root# smbldap-userlist -u
11 root# smbldap-usershow USUARIO
Utilizando o backend tdbsam:
root#

pdbedit -L

root#

pdbedit -Lv USUARIO

Utilizando o backend ldapsam (atravs do smbldap-tools):


root#

smbldap-userlist -u

root#

smbldap-usershow USUARIO

Outros comandos
11 Verificar usurios conectados ao Servidor Samba

22 root# smbstatus

11 Alterar a informao da conta


22 root# pdbedit -r -fullname=Nome completo do Usurio USUARIO
ou
22 root# smbldap-usermod --givenName Nome --surName Sobrenome USUARIO

11 Alterar a data da expirao da senha


22 root# pdbedit --pwd-must-change-time=2017-01-01 --time-format=%Y-%m-%d
USUARIO
ou
22 root# smbldap-usermod --sambaExpire 2017-01-01 USUARIO

11 Alterao das flags da conta


22 root# pdbedit -r -c [DLX] USUARIO
ou

11 Desabilitar uma conta


22 root# smbpasswd -d USUARIO
ou
22 root# smbldap-usermod -I USUARIO

Captulo 9 - Samba

22 root# smbldap-usermod -H [DLX] USUARIO

175

11 Habilitar uma conta


22 root# smbpasswd -e USUARIO
ou
22 root# smbldap-usermod -J USUARIO

11 Alterar a senha
22 root# passwd USUARIO
22 root# pdbedit -a USUARIO
ou
22 root# smbldap-passwd USUARIO
Alguns outros comandos e exemplos de atividades administrativas que regularmente so
executados.
Verificar usurios conectados ao Servidor Samba
root# smbstatus

Alterar a informao da conta


root#

pdbedit -r -fullname=Nome completo do Usurio USUARIO

ou
root#

smbldap-usermod --givenName Nome --surName Sobrenome USUARIO

Alterar a data da expirao da senha


root#

pdbedit --pwd-must-change-time=2017-01-01 --time-format=%Y-%m-%d

USUARIO

ou
root#

smbldap-usermod --sambaExpire 2017-01-01 USUARIO

Alterao das flags da conta

Administrao de Sistemas Linux: Servios para Internet

root#

176

pdbedit -r -c [DLX] USUARIO

ou
root#

smbldap-usermod -H [DLX] USUARIO

Nesse exemplo, a conta ser bloqueada (D), ativar o bloqueio automtico (L) e a
senha no vai expirar (X).

Desabilitar uma conta


root#

smbpasswd -d USUARIO

ou
root#

smbldap-usermod -I USUARIO

Habilitar uma conta


root#

smbpasswd -e USUARIO

ou
root#

smbldap-usermod -J USUARIO

Alterar a senha
root#

passwd USUARIO

root#

pdbedit -a USUARIO

ou
root#

smbldap-passwd USUARIO

Gerenciamento de Grupos
Criar grupos
Utilizando o backend ldapsam (atravs do smbldap-tools):

11 root# smbldap-groupadd -a GRUPO


Mapear um grupo j existente
11 root# smbldap-groupmod -a GRUPO
Utilizando o backend ldapsam (atravs do smbldap-tools):
root#

smbldap-groupadd -a GRUPO

Esse comando criar o grupo UNIX/Linux e realizar o mapeamento automaticamente para


um grupo do Windows, associando um SID. Para realizar esse mapeamento a um grupo
UNIX/Linux j existente, necessrio executar o comando:
root#

smbldap-groupmod -a GRUPO

Remover grupo
Utilizando o backend ldapsam (atravs do smbldap-tools):

11 root# smbldap-groupdel GRUPO


Utilizando o backend ldapsam (atravs do smbldap-tools):
root#

smbldap-groupdel GRUPO

Listar grupo
Utilizando o backend ldapsam (atravs do smbldap-tools):

11 root# smbldap-grouplist -tS


11 root# smbldap-groupshow GRUPO

root#

smbldap-grouplist -tS

root#

smbldap-groupshow GRUPO

Captulo 9 - Samba

11 Utilizando o backend ldapsam (atravs do smbldap-tools):

177

Gerenciamento de conta de mquinas


A conta de mquina pode ser criada automaticamente quando o cliente ingressa em um
domnio e o parmetro add machine script est configurado no smb.conf. Os comandos para
criao manual esto descritos a seguir:

Criar conta de mquina


Utilizando o backend tdbsam:

11 root# useradd -g GRUPO-DE-MAQUINAS -M -d /dev/null -c MAQUINA DO DOMINIO


-s /bin/false NOME-DA-MAQUINA$
11 root# passwd -l NOME-DA-MAQUINA$
11 root# pdbedit -a -m -u NOME-DA-MAQUINA
Utilizando o backend ldapsam (atravs do smbldap-tools):
11 root# smbldap-useradd -W NOME-DA-MAQUINA
Utilizando o backend tdbsam:
root#

useradd -g GRUPO-DE-MAQUINAS -M -d /dev/null -c MAQUINA DO DOMINIO -s /

bin/false NOME-DA-MAQUINA$
root#

passwd -l NOME-DA-MAQUINA$

root#

pdbedit -a -m -u NOME-DA-MAQUINA

Utilizando o backend ldapsam (atravs do smbldap-tools):


root# smbldap-useradd -W NOME-DA-MAQUINA

Remover conta de mquina


Utilizando o backend tdbsam:

11 root# pdbedit -x -m -u NOME-DA-MAQUINA


11 root# userdel NOME-DA-MAQUINA$
Utilizando o backend ldapsam (atravs do smbldap-tools):
11 root# smbldap-userdel NOME-DA-MAQUINA$

Administrao de Sistemas Linux: Servios para Internet

Utilizando o backend tdbsam:

178

root#

pdbedit -x -m -u NOME-DA-MAQUINA

root#

userdel NOME-DA-MAQUINA$

Utilizando o backend ldapsam (atravs do smbldap-tools):


root#

smbldap-userdel NOME-DA-MAQUINA$

Listar conta de mquina


Utilizando o backend ldapsam:
11 root# smbldap-userlist -m
11 root# smbldap-usershow NOME-DA-MAQUINA$
Utilizando o backend ldapsam:
root#

smbldap-userlist -m

root#

smbldap-usershow NOME-DA-MAQUINA$

Alterar as polticas das contas do domnio


Listar as polticas
root#

pdbedit -P ?

root#

pdbedit -P NOME_DA_POLITICA

Alterar uma poltica


Listar as polticas

11 root# pdbedit -P ?
11 root# pdbedit -P NOME_DA_POLITICA
O comando para alterar uma poltica :
11 root# pdbedit -P NOME_DA_POLITICA -c VALOR
Exemplos:
11 Definir que o tamanho mnimo de senha seja de 8 caracteres:
22 root# pdbedit -P min password length -C 8
11 Definir que a validade mxima da senha seja de 90 dias:
22 root# pdbedit -P maximum password age -C 7776000
O comando para alterar uma poltica :
root#

pdbedit -P NOME_DA_POLITICA -c VALOR

Exemplos:
Definir que o tamanho mnimo de senha seja de 8 caracteres:
root#

pdbedit -P min password length -C 8

Definir que a validade mxima da senha seja de 90 dias:


pdbedit -P maximum password age -C 7776000

Captulo 9 - Samba

root#

179

180

Administrao de Sistemas Linux: Servios para Internet

10
Aprender a 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

Fundamentos, funcionamento e a estrutura do Dynamic Host Configuration Protocol


(DHCP), do File Transfer Protocol (FTP) e do SSH (Secure Shell).

Introduo
O estudo deste captulo est dividido em trs partes: DHCP, FTP 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 sero estudadas as formas de transferncia de arquivos entre computadores, com o servio FTP, associadas a grupos de usurios e pastas.
Na ltima parte conheceremos formas seguras de transferncia de arquivos, que envolvem
encriptao e autenticao, inclusive na administrao remota de outros servidores e backup.

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

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


clientes informaes como:
11 Endereo IP e mscara de rede.
11 Gateway.
11 Servidor DNS.
11 Domnio.
O protocolo Dynamic Host Configuration Protocol (DHCP) prov, atravs de um servidor
DHCP, informaes para estaes IP em uma rede. Possui dois componentes: (I) um proto-

Captulo 10 - DHCP, FTP e SSH

objetivos

DHCP, FTP e SSH

colo para distribuir parmetros de configurao especficos a partir de um servidor DHCP;


181

(II) 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 fornecem 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, o endereo IP do servidor BOOTP, e um arquivo
a ser carregado em memria para realizar o boot do sistema. 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 de 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
mensagens ICMP Redirect.
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. Aps a obteno dos parmetros por meio do protocolo DHCP, as
estaes devem ser capazes de trocar pacotes com qualquer outra na internet.

Administrao de Sistemas Linux: Servios para Internet

O DHCP suporta trs mecanismos para alocao de endereos IP:

182

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.
Podemos 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.
O Servidor deve ainda suportar estaes que utilizem o protocolo BOOTP (RFC 2132), IPv6
(RFC 4361), SIP (RFC 3319) e IEEE 1394 (RFC 2855).

OP (1)

HTYPE (1)

HLEN (1)

HOPS (1)

XID (4)
SECS (2)

FLAGS (2)
CIADDR (4)
YIADDR (4)
SIADDR (4)
GIADDR (4)
CHADDR (16)
SNAME (64)

Figura 10.1
Formato de uma
mensagem DHCP
indicando campos e
tamanho em bytes.

FILE (128)
OPTIONS (varivel)

Campos em uma mensagem DHCP


OP (Operation Code)

HTYPE (Hardware Address Type)


HLEN (Hardware Address Length)
HOPS
XID (Transaction ID)
SECS
FLAGS

YIADDR (Your Client IP Address)


SIADDR (Server IP Address)
GIADDR (Gateway IP Address)
CHADDR (Client Hardware Address)
SNAME (Server Name)
FILE (Boot Filename)

Captulo 10 - DHCP, FTP e SSH

CIADDR (Client IP Address)

OPTIONS
183

11 OP (Operation Code): em uma mensagem DHCP, uma solicitao e uma resposta


possuem os mesmos campos. O que as diferenciam o contedo do campo OP.
Os valores so:
22 1 = DHCPDISCOVER
22 2 = DHCPOFFER
22 3 = DHCPREQUEST
22 4 = DHCPDECLINE
22 5 = DHCPPACK
22 6 = DHCPNACK
22 7 = DHCPRELEASE
22 8 = DHCPINFORM
11 HTYPE (Hardware Address Type): informa o padro de rede utilizado pelo adaptador de
rede;
11 HLEN (Hardware Address Length): especifica o tamanho do endereo de hardware na
mensagem, valor 6 para endereo MAC;
11 HOPS: quantidade de roteadores pelos quais a mensagem dever passar;
11 XID (Transaction ID): nmero de identificao, gerado aleatoriamente pelo cliente, utilizado para associar uma requisio resposta recebida do servidor DHCP;
11 SECS: segundos desde que o cliente iniciou o processo de aquisio ou renovao de
endereo;
11 FLAGS: primeiro bit 1 para broadcast; demais reservados para uso futuro;
11 CIADDR (Client IP Address): campo preenchido pelo cliente com o endereo IP atual,
durante o processo de renovao;
11 YIADDR (Your Client IP Address): endereo IP que o servidor est atribuindo ao cliente;
11 SIADDR (Server IP Address): endereo IP, informado pelo servidor DHPC, do prximo
servidor a ser utilizado no processo de boot;
11 GIADDR (Gateway IP Address): endereo IP do roteador da rede local, utilizado quando
o boot realizado por meio deste;

Administrao de Sistemas Linux: Servios para Internet

11 CHADDR (Client Hardware Address): endereo de hardware do cliente;

184

11 SNAME (Server Name): campo opcional que define o nome do servidor DHCP;
11 FILE (Boot Filename): 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

Cliente envia DHCPDISCOVE


O servidor pode responder DHCPOFFER
O cliente envia DHCPREQUEST
O servidor salva as configuraes e responde com DHCPACK
O cliente realiza verificaes utilizando. Pode responder com DHCPDECLINE problema
com a configurao.
O servidor envia, se necessrio, DHCPNACK reiniciando o processo;

Lado cliente

Mensagens

Lado servidor

DHCPDISCOVER
Determina
Recebe
resposta
Cliente DHCP

DHCPOFFER
DHCPREQUEST
DHCPACK
DHCPRELEASE

Libera lease

Figura 10.2
Funcionamento do
protocolo DHCP

congurao

Commit

Servidor DHCP

Inicializao
completa

Tempo
Durante a obteno dos parmetros de configurao, algumas mensagens so trocadas
entre o servidor e o cliente DHCP. A seguir descrita a sequncia desses comandos com
seus respectivos significados:
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.
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.
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 conferir a sua
localizao, assim como a existncia do arquivo com a base de dados e a forma de interao

Captulo 10 - DHCP, FTP e SSH

Caso perceba que o endereo j est em uso, envia uma mensagem DHCPDECLINE. Caso

com o servio DNS.


185

Instalao do DHCP

11 Red Hat / CentOS: yum install dhcp


11 Debian / Ubuntu Server: apt-get install isc-dhcp-server
11 Criar o arquivo dhcpd.leases
11 Definir o esquema de interao com o DNS
1. Verificar se o daemon est instalado:
Conferir localizao do daemon dhcpd.
# whereis dhcpd

Instalar o Servidor do DHCP


Red Hat / CentOS
# yum install dhcp

Debian / Ubuntu Server


apt-get install isc-dhcp-server

2. Criao do arquivo dhcpd.leases:


Verificar existncia do arquivo dhcpd.leases, que dever existir quando da execuo do
servidor DHCP.

# find / name dhcpd.leases

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: ddns-update-style interim
permite o uso de mecanismo failover. Esse mecanismo possibilita que dois ou mais servidores DHCP dividam o conjunto de endereos IP disponveis.ddns-update-style ad-hoc:

Administrao de Sistemas Linux: Servios para Internet

opo descontinuada e que no deve ser utilizada.

186

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

Edio de arquivos de configurao


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 possui os valores a serem passados como parmetros


de configurao para as estaes clientes. 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 cliente;
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:
# Arquivo dhcpd.conf

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 empresa.com.br;

option domainnameservers 192.168.0.253;

default-lease-time 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 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 default-lease-time: tempo de lease, representado em segundos; o valor 0xffffffff
utilizado para representar o infinito;

Captulo 10 -

22 range: faixa de endereos IP que o servidor DHCP utilizar para configurar os clientes.

187

Exemplos de configurao
# Arquivo dhcpd.conf

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 empresa.com.br;

option domainnameservers 192.168.0.253;

default-lease-time 18000;

range 192.168.0.2 192.168.0.250;

Outro exemplo de arquivo de configurao, nesse caso para duas sub-redes com VLANs
diferentes:
# Arquivo dhcpd.conf
ddns-update-style interim;
default-lease-time -18000;
max-lease-time -18000;
option domain-name-servers 192.168.0.253;
#Rede vlan 10
subnet 192.168.10.0 netmask 255.255.255.0 {

option routers 192.168.10.254;

option domain-name rede10.empresa.com.br;

range 192.168.10.11 192.168.10.19;

}
#Rede vlan 20
subnet 192.168.20.0 netmask 255.255.255.0 {

option routers 192.168.20.254;

option domain-name rede20.empresa.com.br;

range 192.168.20.21 192.168.20.29;

Administrao de Sistemas Linux: Servios para Internet

Para que essa configurao com VLAN funcione corretamente, necessrio que as

188

interfaces estejam configuradas corretamente com o ID de cada VLAN e disponveis


para o DHCP.
A seguir, apresentado outro exemplo de arquivo de configurao. Nesse 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 empresa.com.br;

option domainnameservers 192.168.0.253;

default-lease-time 18000;

max-lease-time 18000;

host leao {

option hostname leao.empresa.com.br;

hardware ethernet 00:D0:B7:89:7E:5E;

fixed-address 192.168.0.2;

host tigre {

option hostname tigre.empresa.com.br;

hardware ethernet 00:D0:B7:89:01:D1;

fixed-address 192.168.0.3;

Iniciando e parando o servidor


Red Hat / CentOS

11 systemctl <parmetro> dhcpd


Debian / Ubuntu Server
11 service isc-dhcp-server <parmetro>
Parmetro: start, stop ou restart
Red Hat / CentOS
systemctl <parmetro> dhcpd

Debian / Ubuntu Server


service isc-dhcp-server <parmetro>
Parmetro: start, stop ou restart
Observao: o arquivo dhcpd.leases dever existir.

Quando o servidor dispe de mais de uma interface de rede, podemos especificar qual
interface o servidor utilizar para ouvir as requisies DHCP. Essa funcionalidade extremamente til quando o servidor se encontra conectado a uma rede interna a qual deve prover
DHCP, e a uma rede externa a qual no se deseja acesso ao DHCP. Por padro, o daemon do
DHCP s ouvir nas interfaces para as quais ele encontrar uma declarao de sub-rede no
arquivo de configurao dhcpd.conf. Se for necessrio restringir explicitamente quais interfaces ele utilizar, necessrio realizar os seguintes passos:
Red Hat / CentOS
root# cp /usr/lib/systemd/system/dhcpd.service /etc/systemd/system/
root# vi /etc/systemd/system/dhcpd.service
> ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd
--no-pid <nomes_das_interfaces>
root# systemctl --system daemon-reload
root# systemctl restart dhcpd.service

Editar a varivel INTERFACES, no arquivo /etc/default/isc-dhcp-server, adicionando


as interfaces a serem utilizadas.

Captulo 10 -

Debian / Ubuntu Server

189

Podem ser passados parmetros como:


11 -p <porta>: especifica a porta na qual o servidor DHCP atuar; padro 67 e 68;
11 -f: executa o servidor em foreground;
11 -d: modo debugging: os logs so gerados para a tela, em vez de serem enviados para /
var/log/messages;
11 -cf <nome do arquivo>: especifica a localizao do arquivo de configurao dhcpd.conf.
Originalmente em /etc/dhcp/dhcpd.conf;
11 -lf <nome do arquivo>: especifica a localizao do arquivo de lease. Originalmente em /
var/lib/dhcp/dhcpd.leases.
No Red Hat / CentOS, esses parmetros so configurados no arquivo /etc/systemd/
system/dhcpd.service, direto na linha de inicializao do daemon. J no Debian / Ubuntu
Server, so configurados na varivel OPTIONS do arquivo /etc/default/isc-dhcp-server.

A configurao de um cliente DHCP pode ser efetuada em dois momentos: (I) durante a
instalao do Sistema Operacional; (II) em qualquer momento, se for realizada pelo usurio
com privilgios de administrador da mquina.
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/CentOS, ou no arquivo
/etc/network/interfaces, no Ubuntu Server.

File Transfer Protocol (FTP)


Transferncia de arquivo confivel de/para servidores de arquivos.

11 Upload: transferncia de arquivos para um servidor.

Administrao de Sistemas Linux: Servios para Internet

11 Download: transferncia de arquivos de um servidor.

190

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. H vrios servidores FTP disponveis 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.
Existem vrios servidores FTP disponveis para o Linux. Entre os mais populares
esto 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 podemos determinar quem acessa o qu e os privilgios que possui nas pastas que
acessa. Podemos ainda efetuar ajustes para facilitar a passagem por meio de firewalls, para
utilizao de mltiplos servidores virtuais, e tambm para permitir o uso por grupos de
usurios. O administrador de um servidor FTP tem pleno controle sobre quem pode acessar
o qu. Nesse caso, podemos escolher entre permitir ou restringir o acesso de usurios annimos. Podemos 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.
Nos dois casos possvel 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 desse tipo de usurio.

Figura 10.3
Funcionamento
do FTP.

Funcionamento do FTP
Baseado no estabelecimento de conexes entre o cliente e o servidor:

1 Conexo de controle: usada na transferncia de arquivos.


1 Conexo de dados: uma para cada arquivo transferido.
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. atravs
dessa 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

Captulo 10 -

conexes simultneas.

191

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

FTP passivo
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


Cliente utiliza uma conexo de controle com o servidor

11 utilizado uma porta alta no cliente


11 utilizado a porta 21 no servidor
O servidor inicia a transferncia de arquivos
11 Origem na porta 20 do servidor
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.

Administrao de Sistemas Linux: Servios para Internet

O acesso a um servidor ativo muitas vezes bloqueado pelo firewall da rede, uma vez que as

192

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


Cliente utiliza uma conexo de controle com o servidor
11 utilizado uma porta alta no cliente
11 utilizado a porta 21 no servidor
O cliente que inicia a transferncia de arquivos
11 Origem em uma porta alta do cliente com destino a porta 20 do servidor

Figura 10.4
Tipos de Servidores
Ativo e 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
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;
11 mkdir: cria um diretrio no servidor;
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 firewall


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.

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 o uso do servio. Para isso so possveis duas solues:

Captulo 10 -

Firewalls normalmente no aceitam conexes de entrada. Desse modo, um cliente inicia

193

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.
Ao configurar o servidor FTP, recomendado levar em considerao as seguintes questes
relacionadas segurana:
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 o 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 criptografia com o FTP: a adoo de medidas de segurana pode prevenir
uma invaso ou utilizao indevida do servio. Por padro, os dados, inclusive login e
senha, so transmitidos em texto plano. Servidores como o VSFTPF e PROFTPD suportam
o uso do SSL/TLS. Como alternativa, possvel utilizar o Secure Copy (SCP) ou Secure FTP
(SFTP) para a transmisso de arquivos sigilosos;

Secure Shell (SSH)


Permite a utilizao de um terminal remoto e conexes para transferncia de arquivos

entre clientes e servidores.


Utiliza autenticao para estabelecer sesso.
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. Todo o trfego feito em texto plano, no garantindo a privacidade da informao;
2. Os arquivos /etc/hosts.equiv e ~/.rhosts listam mquinas e usurios autenticados, podendo

Administrao de Sistemas Linux: Servios para Internet

fazer conexo RSH sem futuras autenticaes.

194

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.

OpenSSH
Implementao open source do SSH.

Soluo amplamente utilizada em ambiente Linux.


Existem ainda OpenSSH Secure Copy (SCP) e Secure FTP (SFTP).
11 SCP e SFTP so utilizados como alternativa ao FTP.
OpenSSH utilizado como alternativa ao Telnet.
11 A utilizao de SSH no restrito ao mundo Linux.
11 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


Requer a instalao do pacote pacote:

11 openssh-server
Editar arquivo de configurao:
11 /etc/ssh/sshd_config
Ativar o servio sshd.
A configurao de um cliente OpenSSH requer os pacotes:
11 openssh-clients
11 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 daemon sshd esteja configurado
para iniciar durante a inicializao do sistema. O arquivo de configurao do servidor /etc/ssh/
sshd_config, enquanto o arquivo de configurao do cliente /etc/ssh/ssh_configura.
Embora o OpenSSH esteja pronto para execuo logo aps instalado, recomenda-se que
Entre os ajustes possveis:
11 Mudar a porta utilizada pelo servio: parmetro Port. Pode ser configurado no servidor
e no cliente;

Captulo 10 -

alguns ajustes sejam feitos no arquivo de configurao, o que eleva a segurana do sistema.

195

11 Configurar para aceitar somente a verso SSH2: parmetro Protocol. Pode ser configurado no servidor e no cliente;
11 No permitir acesso como root pelo OpenSSH: parmetro PermitRootLogin. S pode
ser configurado no servidor;
11 Ignorar arquivos.rhosts e.shosts: j que eles autorizam logins subsequentes sem
senha: parmetro IgnoreRhosts. S pode ser configurado no servidor;
11 No permitir senhas em branco: parmetro PermitEmptyPasswords. S pode ser configurado no servidor;
11 Habilitar o uso do servidor SFTP (opcional): parmetro Subsystem. S pode ser configurado no servidor.
A seguir so apresentados alguns parmetros do arquivo de configurao.
Parte do contedo do arquivo /etc/ssh/sshd_config:
# /etc/ssh/sshd_config
Port 2020
Protocol 2
ListenAddress 0.0.0.0
PermitRootLogin no
X11Forwarding no
CheckMail no
RSAAuthentication yes
DSAAuthentication yes
RhostsAuthentication no
RhostsRSAAuthentication no
IgnoreRhosts yes
PasswordAuthentication yes
PermitEmptyPassword no

Comando ssh
Permite efetuar login e executar comandos em uma mquina remota. Exemplo:

11 Comando: # ssh usuario1@leao.empresa.com.br


Administrao de Sistemas Linux: Servios para Internet

11 Efetua conexo mquina leao.empresa.com.br, autenticando-se como usuario1.

196

11 Ser solicitada senha.


11 Em seguida ser concedido acesso mquina remota.
O comando ssh a ferramenta usada para iniciar sees de console remoto. O arquivo de
configurao de usurios ~/.ssh/config, e o arquivo global /etc/ssh/ssh_config. Para conectar
a um servidor ssh remoto:
ssh usurio1@leao.empresa.com.br

Caso o nome do usurio seja omitido, seu login atual do sistema ser usado. O uso da opo -C
recomendado para ativar o modo de compactao dos dados (til em conexes lentas). Uma
porta alternativa pode ser especificada usando a opo -p porta (a 22 usada por padro).
Variveis de ambiente personalizadas para o ssh podero ser definidas no arquivo
~/.ssh/environment. Comandos que sero executados somente na conexo ssh em
~/.ssh/rc e /etc/ssh/sshrc.

Estabelecendo conexo
Ao conectar-se pela primeira vez a determinado servidor, exibida a seguinte mensagem:

The authenticity of host leao.empresa.com.br (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)?
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.empresa.com.br (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)?

Respondendo yes, a mquina remota adicionada em uma lista de mquinas conhecidas


(arquivo ~/.ssh/known_hosts). Nas prximas vezes em que for feito login nesse mesmo host,
apenas a senha ser solicitada. Aps o estabelecimento da conexo, solicitada a senha do
usurio remoto.
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 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
Permite a cpia de arquivos entre hosts de forma segura.

Utiliza os mesmos mecanismos de segurana do SSH.


Exemplo de utilizao:
11 # scp <usuarioremoto>@<hostremoto>:<diretorio/arquivo> <pasta
local>/<arquivolocal>
11 # scp usuario1@leao.empresa.com.br:/tmp/teste.txt
Copia o arquivo texte.txt do computador remoto leao.empresa.com.br 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 por padro no um mtodo seguro e cujos
dados trafegam em texto plano, no SCP a conexo autenticada e os dados so criptografados. Outra vantagem do SCP o fato de os comandos serem similares ao comando cp.
com um comando do tipo:
# scp usuario1@leao.empresa.com.br:/tmp/teste.txt

Captulo 10 -

Desse modo, a transferncia de um ou mais arquivos entre duas mquinas pode ser feita

197

Podem ainda ser transferidos todos os arquivos de uma determinada pasta:


# scp R usuario1@leao.empresa.com.br:/home/usurio1/pasta/*
* -R (recursividade): todas as pastas e arquivos a partir da pasta.

Ou ainda na direo contrria:


# scp * usuario1@leao.empresa.com.br:/home/usurio1/

SFTP
Permite realizar de forma segura a transferncia de arquivos entre hosts.

Utiliza os mesmos mecanismos de segurana do SSH.


Exemplo de utilizao:
11 # 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

sftp> exit

Administrao de Sistemas Linux: Servios para Internet

O servio SFTP j vem habilitado por padro no servidor, atravs da seguinte linha, que

198

configurada no arquivo /etc/ssh/sshd_config:


Subsystem sftp /usr/lib/openssh/sftp-server

Por padro, ele est disponvel para todos os usurios, que possuem os mesmos direitos de
acesso aos arquivos de sistema. Ao disponibilizar esse servio na internet, recomendado
configur-lo para um grupo restrito de usurios, que ficaro confinados a um diretrio
especfico, atravs do chroot. Para isso, basta comentar a linha acima e incluir a seguinte
configurao no final no arquivo /etc/ssh/sshd_config:
#Subsystem sftp /usr/lib/openssh/sftp-server
...
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /ftp/%u
X11Forwarding no

AllowTcpForwarding no
ForceCommand internal-sftp

Com isso, temos:


11 Subsystem sftp internal-sftp: faz com que todo acesso ao sftp seja gerenciado pelo
servidor sftp interno;
11 Match group sftp: para os usurios terem acesso ao SFTP, tero de estar no grupo sftp.
Todas as linhas subsequentes de configurao se aplicaro somente aos usurios do
grupo sftp;
11 ChrootDirectory /ftp/%u: os usurios tero acesso apenas ao diretrio /ftp.
11 X11Forwarding no: no redirecionar o X11.
11 AllowTcpForwarding no: no permitir redirecionamento de TCP.
11 ForceCommand internal-sftp: o conjunto de comandos a serem utilizados ser do SFTP.
Configurao dos usurios que s tero acesso ao sftp:
#Criar o grupo de sistema sftp:
groupadd -r sftp
#Criar o diretrio
mkdir /ftp
chmod 755 /ftp
#Criar usurios
useradd -d /ftp/userftp1 -m -g sftp -s /sbin/nologin userftp1
passwd userftp1
#Corrigir as permisses do diretrio utilizado pelo chroot
chown root:root /ftp/userftp1
#Criar o diretrio de utilizao do usurio
mkdir /ftp/userftp1/data
chown userftp1:sftp /ftp/userftp1/data

Para que o chroot funcione, o diretrio especificado na varivel ChrootDirectory do


arquivo sshd_configura deve pertencer ao usurio root.

Gerao de chaves
ssh-keygen -t <tipo>

Onde <tipo> pode ser:


11 rsa1: gera chaves no padro RSA para a verso SSH1.
11 rsa: gera chaves no padro RSA para a verso SSH2.
11 das: gera chaves no padro DSA apenas para verso SSH2.
11 ecdsa: gera chaves no padro ECDSA apenas para verso SSH2.
Em algumas situaes, pode ser necessrio o uso de scripts que copiaro arquivos de um
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
o uso de senha. Para isso, podem ser geradas chaves de encriptao baseadas em endereos IP dos dois servidores.

Captulo 10 -

servidor para outro, o que geralmente ocorre em situaes de replicao de contedo

199

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.
11 A seguir, os passos necessrios:Gerar a chave com o comando ssh-keygen -t <tipo>;
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 a verso SSH2;
22 ecdsa: gera chaves no padro ECDSA apenas para a verso SSH2.
11 Copiar o arquivo contendo a chave pblica, id_<tipo>.pub, para a mquina de destino;
11 Incluir a chave pblica no arquivo ~/.ssh/authorized_keys, na mquina remota
(cat id_<tipo>.pub >> ~/.ssh/authorized_keys);

Agente SSH
Permite automatizar a autenticao atravs de um agente SSH.

Senha solicitada apenas uma vez em cada sesso Linux.


As chaves so removidas aps o encerramento da sesso.
A automatizao do acesso por SSH sem senha pode ser feita com o uso 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.

200

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.
Andr Ramos Carneiro possui graduao em Tecnlogo em Tecnologia da
Informao e Comunicao pelo
Instituto Superior de Tecnologia em
Cincia da Computao (2006). Trabalha
com suporte Linux desde 2005 e
atualmente Tecnologista do Laboratrio
Nacional de Computao Cientfica, onde trabalha com
administrao de servidores, gerncia de contas de usurios,
implementao de novos servios, suporte a plataformas de
processamento de alto desempenho, compilao de aplicaes cientficas, administrao de storage e backup. Tem
experincia na rea de Cincia da Computao, com nfase em
Computao de Alto Desempenho, atuando principalmente
nos seguintes temas: previso numrica de tempo, processamento paralelo, aplicaes cientficas e I/O paralelo.

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.

uma Organizao Social (OS),


sendo ligada ao Ministrio da
Cincia, Tecnologia e Inovao
(MCTI)

responsvel

pelo

Programa Interministerial RNP,

LIVRO DE APOIO AO CURSO

Andr Ramos Carneiro possui graduao em Tecnlogo em Tecnologia da


Informao e Comunicao pelo
Instituto Superior de Tecnologia em
Cincia da Computao (2006). Trabalha
com suporte Linux desde 2005 e
atualmente Tecnologista do Laboratrio
Nacional de Computao Cientfica, onde trabalha com
administrao de servidores, gerncia de contas de usurios,
implementao de novos servios, suporte a plataformas de
processamento de alto desempenho, compilao de aplicaes cientficas, administrao de storage e backup. Tem
experincia na rea de Cincia da Computao, com nfase em
Computao de Alto Desempenho, atuando principalmente
nos seguintes temas: previso numrica de tempo, processamento paralelo, aplicaes cientficas e I/O paralelo.

e Pesquisa qualificada como

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.

Administrao de Sistemas Linux Servios para Internet

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.

A RNP Rede Nacional de Ensino

Administrao de
Sistemas Linux

Servios para
Internet
Wagner Vieira Leo
Bruno Alves Fagundes
Andr Ramos Carneiro

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-55-1

Ministrio da
Cincia, Tecnologia
e Inovao

9 788563 630551

ads4.capa-NPE-V3.0.0.indd 1

27/04/2016 14:06:54

Potrebbero piacerti anche