Você está na página 1de 127

Eletricazine

www.eletricazine.hpg.ig.com.br

Linux: Administrao de Redes


Alexandre Folle de Menezes Gleydson Mazioli da Silva Nicolai Langfeldt Vladimir Vuksan

Traduo Oficial Alfamdia


Alexandre Folle de Menezes

Verso 1.3, agosto/2002.

Eletricazine

www.eletricazine.hpg.ig.com.br

As marcas registradas utilizadas no decorrer deste livro so usadas unicamente para fins didticos, sendo estas propriedade de suas respectivas companhias. A Alfamdia no assume qualquer responsabilidade por erros ou omisses, ou por danos resultantes do uso das informaes contidas neste livro. Os captulos 3, 5, 6, 7, e 12 so adaptaes do texto: Guia Foca GNU/Linux Copyleft 1999-2002 - Gleydson Mazioli da Silva. Fonte: http://focalinux.cipsga.org.br O captulo 4 uma adaptao do texto: DHCP mini-HOWTO Copyright 1999-2002 Vladimir Vuksan <vuksan@veus.hr>. Fonte: http://br.tldp.org/documentos/comofazer/html/DHCP/DHCP.pt_BR.html O captulo 8 uma adaptao do texto: DNS HOWTO Copyright 1999-2002 Nicolai Langfeldt <janl@math.uio.no>. Fonte:
http://br.tldp.org/documentos/comofazer/html/DNS-HOWTO/DNS-HOWTO.pt_BR.html

O captulo 9 uma adaptao do texto: NFS HOWTO Copyright 1999-2002 Nicolai Langfeldt <janl@math.uio.no>. Fonte:
http://br.tldp.org/documentos/comofazer/html/nfs.howto/nfs.howto.pt_BR.html

O captulo 13 uma adaptao do texto: Linux: Perguntas e Respostas Copyleft 1999-2002 - Unicamp. Fonte: http://ftp.unicamp.br/pub/linuxdocs/conectiva/pr/pr.html Os demais captulos foram escritos por: Copyright 2002 por Alexandre Folle de Menezes <menezes@alfamidia.com.br> Esta apostila uma coletnea de textos com licena GNU ou livres encontrados na Internet, conforme referncias acima. Este material foi totalmente montado com fins didticos, sem objetivo comercial. Foram acrescentados exemplos e exerccios desenvolvidos pela Alfamdia Ltda.

Eletricazine

www.eletricazine.hpg.ig.com.br

CONTEDO
CONTEDO ................................................................................................................... 3 1 REDES DE COMPUTADORES............................................................................. 9 1.1 O QUE UMA REDE ................................................................................................. 9 1.2 PROTOCOLO DE REDE ............................................................................................. 9 1.3 INTERNET .............................................................................................................. 10 1.4 O MODELO OSI .................................................................................................... 10 1.4.1 AS CAMADAS OSI................................................................................................ 11 1.4.2 A CAMADA FSICA ............................................................................................... 11 1.4.3 A CAMADA DE ENLACE ....................................................................................... 12 1.4.4 A CAMADA DE REDE............................................................................................ 12 1.4.5 A CAMADA DE TRANSPORTE ............................................................................... 12 1.4.6 A CAMADA DE SESSO ........................................................................................ 13 1.4.7 A CAMADA DE APRESENTAO ........................................................................... 13 1.4.8 A CAMADA DE APLICAO .................................................................................. 13 EXERCCIOS.................................................................................................................... 13 2 TCP/IP ..................................................................................................................... 15 2.1 A CAMADA FSICA ................................................................................................. 15 2.2 A CAMADA DE ENLACE DE DADOS ....................................................................... 16 2.3 A CAMADA DE REDE ............................................................................................. 16 2.4 CAMADA DE TRANSPORTE .................................................................................... 16 2.4.1 TCP..................................................................................................................... 16 2.4.2 UDP .................................................................................................................... 17 2.4.3 ICMP .................................................................................................................. 17 2.5 MONTAGEM DOS PACOTES.................................................................................... 18 2.6 ENDEREAMENTO ................................................................................................. 19 2.6.1 ENDEREAMENTO DE ENLACE (MAC) ................................................................ 19 2.6.2 ENDEREAMENTO DE REDE (IP).......................................................................... 19 2.6.2.1 Classes de Rede IP........................................................................................... 20 2.6.2.2 O endereo de loopback .................................................................................. 21 2.6.2.3 Endereos reservados para uso em Redes Privadas......................................... 21 2.6.2.4 Referncia rpida de mscara de redes..............Erro! Indicador no definido. 2.6.3 ENDEREAMENTO DE SESSO (PORTAS) ............................................................. 21 2.7 ROTEAMENTO ....................................................................................................... 23 2.7.1 REEMPACOTAMENTO ........................................................................................... 25 EXERCCIOS.................................................................................................................... 25

Eletricazine

www.eletricazine.hpg.ig.com.br

3 CONFIGURAO DO TCP/IP NO LINUX....................................................... 27 3.1 INSTALANDO UMA MQUINA EM UMA REDE EXISTENTE ...................................... 27 3.2 CONFIGURAO DA INTERFACE ETHERNET ........................................................ 27 3.2.1 A INTERFACE LOOPBACK ..................................................................................... 28 3.2.2 CONFIGURANDO UMA INTERFACE COM O IFCONFIG ............................................. 28 3.2.3 CONFIGURANDO UMA INTERFACE DURANTE O BOOT ........................................... 28 3.2.4 DEFININDO DIVERSOS ENDEREOS IP PARA A MESMA INTERFACE ....................... 29 3.3 CONFIGURANDO UMA ROTA NO LINUX................................................................. 31 3.4 HOSTNAME ............................................................................................................ 32 3.5 ARQUIVOS DE CONFIGURAO ............................................................................. 32 3.5.1 O ARQUIVO /ETC/HOSTS ..................................................................................... 32 3.5.2 O ARQUIVO /ETC/NETWORKS ............................................................................... 33 3.5.3 O ARQUIVO /ETC/HOST.CONF ............................................................................. 33 3.5.4 O ARQUIVO /ETC/RESOLV.CONF ......................................................................... 34 3.6 OUTROS ARQUIVOS DE CONFIGURAO RELACIONADOS COM A REDE ............... 34 3.6.1 O ARQUIVO /ETC/SERVICES ............................................................................... 34 3.6.2 O ARQUIVO /ETC/PROTOCOLS ............................................................................. 35 4 DHCP....................................................................................................................... 36 4.1 PROTOCOLO DHCP .............................................................................................. 36 4.2 CONFIGURAO DO CLIENTE DHCP................................................................... 36 4.2.1 OBTENDO O PROGRAMA CLIENTE (DHCPCD) ....................................................... 36 4.2.2 SLACKWARE ........................................................................................................ 36 4.2.3 RED HAT 6.X E MANDRAKE 6.X ........................................................................... 37 4.2.4 RED HAT 5.X E CONECTIVA GNU/LINUX 3.X ...................................................... 38 4.2.5 DEBIAN................................................................................................................ 38 4.2.6 EXECUTANDO O DHCPCD.................................................................................. 38 4.2.7 INICIALIZANDO E ENCERRANDO O DHCPCD .......................................................... 40 4.2.8 SOLUO DE PROBLEMAS ................................................................................... 40 4.2.8.1 A placa de rede no est configurada adequadamente .................................... 40 4.2.8.2 O servidor DHCP suporta RFC 1541/O servidor um Windows NT ............ 40 4.2.8.3 Durante a inicializao se obtm a mensagem "Usando DHCP para eth0 ... falhou" mas o sistema funciona perfeitamente. .............................................................. 41 4.2.8.4 A rede funciona por alguns minutos e subitamente para de responder. .......... 41 4.2.8.5 A placa Ethernet reconhecida durante a inicializao do sistema mas obtmse a mensagem "NO DHCPOFFER" nos arquivos de registros de ocorrncias. Isso ocorre tambm com a placa PCMCIA............................................................................ 41 4.2.8.6 Meu cliente faz as requisies mas no recebe resposta (Contribuio de Peter Amstutz). 41 4.2.8.7 Segui todos os passos mas ainda no consigo conectar a mquina rede. ..... 41 4.3 CONFIGURAO DO SERVIDOR DHCP ................................................................ 42 4.3.1 SERVIDOR DHCP PARA UNIX ............................................................................ 42

Eletricazine

www.eletricazine.hpg.ig.com.br

4.3.2 CONFIGURAO DE REDE .................................................................................... 42 4.3.3 OPES DO DHCPD ............................................................................................ 43 4.3.4 INICIALIZANDO O SERVIDOR ................................................................................ 44 EXERCCIOS.................................................................................................................... 44 5 COMANDOS DE REDE........................................................................................ 45 5.1 O COMANDO WHO ................................................................................................... 45 5.2 O COMANDO TELNET .............................................................................................. 45 5.3 O COMANDO FINGER .............................................................................................. 46 5.4 O COMANDO FTP ................................................................................................... 46 5.5 O COMANDO WHOAMI .............................................................................................. 47 5.6 O COMANDO DNSDOMAINNAME ................................................................................ 47 5.7 O COMANDO HOSTNAME .......................................................................................... 47 5.8 O COMANDO TALK.................................................................................................. 47 5.9 O COMANDO MESG.................................................................................................. 48 5.10 O COMANDO PING................................................................................................ 48 5.11 O COMANDO RLOGIN ............................................................................................ 49 5.12 O COMANDO RSH ................................................................................................. 49 5.13 O COMANDO W ..................................................................................................... 49 5.14 O COMANDO TRACEROUTE .................................................................................... 50 5.15 O COMANDO NETSTAT .......................................................................................... 51 5.16 O COMANDO WALL................................................................................................ 51 6 O SSH ...................................................................................................................... 52 6.1 VERSO ................................................................................................................. 52 6.2 HISTRIA ............................................................................................................... 52 6.3 CONTRIBUINDO ..................................................................................................... 52 6.4 CARACTERSTICAS ................................................................................................ 52 6.5 FICHA TCNICA ..................................................................................................... 53 6.6 SERVIDOR SSH ....................................................................................................... 53 6.6.1 REQUERIMENTOS DE HARDWARE ........................................................................ 53 6.6.2 ARQUIVOS DE LOG CRIADOS PELO SERVIDOR SSH ................................................ 54 6.6.3 INSTALAO DO SERVIDOR OPENSSH ................................................................. 54 6.6.4 INICIANDO O SERVIDOR/REINICIANDO/RECARREGANDO A CONFIGURAO ......... 54 6.6.5 OPES DE LINHA DE COMANDO.......................................................................... 54 6.7 CLIENTE SSH.......................................................................................................... 55 6.7.1 REDIRECIONAMENTO DE CONEXES DO X ........................................................... 56 6.7.2 SCP....................................................................................................................... 57 6.7.3 SFTP ..................................................................................................................... 58 6.8 14.3 SERVIDOR SSH ............................................................................................... 59 6.8.1 SSHD .................................................................................................................... 59

Eletricazine 6.8.2 6.8.3 6.8.4 6.8.5

www.eletricazine.hpg.ig.com.br

CONTROLE DE ACESSO ......................................................................................... 59 USANDO AUTENTICAO RSA - CHAVE PBLICA/PRIVADA ................................ 59 DIFERENAS NAS VERSES DO PROTOCOLO ......................................................... 61 EXEMPLO DE SSHD_CONFIG COM EXPLICAES DAS DIRETIVAS .......................... 62

7 SERVIOS DE REDE ........................................................................................... 66 7.1 SERVIOS INICIADOS COMO DAEMONS DE REDE .................................................. 66 7.2 SERVIOS INICIADOS ATRAVS DO INETD ............................................................. 66 7.2.1 /ETC/INETD.CONF ................................................................................................. 67 8 DNS .......................................................................................................................... 70 8.1 INTRODUO AO DNS: O QUE E O QUE NO .................................................. 70 8.2 UM SERVIDOR DE NOMES SOMENTE PARA CACHE. ............................................ 71 8.2.1 INICIANDO O NAMED ............................................................................................ 74 8.3 UM DOMNIO SIMPLES: COMO CONFIGURAR UM DOMNIO PRPRIO .................. 75 8.3.1 UM POUCO DE TEORIA.......................................................................................... 75 8.3.2 NOSSO PRPRIO DOMNIO ................................................................................... 79 8.3.3 A ZONA REVERSA ................................................................................................ 86 8.4 CONVERTER DA VERSO 4 PARA VERSO 8.......................................................... 87 8.5 WINDOWS 2000 ACTIVE DIRECTORY E BIND..................................................... 88 8.5.1 CRIAR A ZONA PRIMRIA. .................................................................................... 88 8.5.2 CRIAR AS SUBZONAS............................................................................................ 89 9 NFS........................................................................................................................... 90 9.1 INTRODUO AO NFS ........................................................................................... 90 9.2 CONFIGURAO DO SERVIDOR NFS .................................................................... 90 9.2.1 PR-REQUISITOS.................................................................................................. 90 9.2.2 PRIMEIROS PASSOS .............................................................................................. 90 9.2.3 O PORTMAPPER ..................................................................................................... 91 9.2.4 O MOUNTD E O NFSD ............................................................................................... 91 9.3 CONFIGURAO DO CLIENTE NFS ...................................................................... 93 9.3.1 OPES DE MONTAGEM ...................................................................................... 94 9.3.2 OTIMIZANDO O NFS ............................................................................................ 94 9.4 SEGURANA E NFS ............................................................................................... 96 9.4.1 SEGURANA NO CLIENTE .................................................................................... 97 9.4.2 SEGURANA NO SERVIDOR: NFSD ........................................................................ 97 9.4.3 SEGURANA NO SERVIDOR: O PORTMAPPER ........................................................ 98 9.4.4 NFS E FIREWALLS ............................................................................................... 99 9.4.5 RESUMO .............................................................................................................. 99 9.5 PONTOS DE VERIFICAO DE MONTAGEM .......................................................... 99 9.6 FAQ..................................................................................................................... 100 10 NIS ......................................................................................................................... 103 6

Eletricazine

www.eletricazine.hpg.ig.com.br

10.1 INTRODUO ..................................................................................................... 103 10.1.1 MAPAS............................................................................................................. 103 10.1.2 TIPOS DE SERVIDORES ..................................................................................... 103 10.2 CONFIGURANDO O SERVIDOR MESTRE ............................................................ 103 10.3 CONFIGURANDO O CLIENTE .............................................................................. 105 10.3.1 EXECUTANDO OS SERVIOS NO CLIENTE .......................................................... 105 10.3.2 CONFIGURANDO O SISTEMA DE BUSCA ............................................................ 105 11 FTP......................................................................................................................... 106 11.1 INTRODUO AO FTP ....................................................................................... 106 11.2 CONFIGURAO DO SERVIDOR FTP................................................................. 106 11.2.1 ARQUIVOS DE CONFIGURAO ADICIONAIS ..................................................... 106 11.2.2 FTP ANNIMO ................................................................................................ 114 EXERCCIOS.................................................................................................................. 115 12 SEGURANA DA REDE E CONTROLE DE ACESSO................................. 116 12.1 /ETC/FTPUSERS .................................................................................................. 116 12.2 /ETC/SECURETTY ............................................................................................... 116 12.3 O MECANISMO DE CONTROLE DE ACESSOS TCPD ............................................. 116 12.3.1 /ETC/HOSTS.ALLOW ......................................................................................... 117 12.3.2 /ETC/HOSTS.DENY ............................................................................................ 118 12.3.3 /ETC/HOSTS.EQUIV E /ETC/SHOSTS.EQUIV ......................................................... 118 12.3.4 VERIFICANDO A SEGURANA DO TCPD E A SINTAXE DOS ARQUIVOS .............. 119 12.4 FIREWALL ......................................................................................................... 120 13 TRABALHANDO COM O X-WINDOW EM REDE ...................................... 122 13.1 O DISPLAY......................................................................................................... 122 13.2 O SERVIDOR X-WINDOW .................................................................................. 122 13.3 O CLIENTE X-WINDOW .................................................................................... 123 13.4 IDENTIFICAO E ENCERRAMENTO DE APLICATIVOS X-WINDOW ................. 123 EXERCCIOS.................................................................................................................. 123 APNDICE A. LICENA DE PUBLICAO LIVRE...................................... 125

Eletricazine

www.eletricazine.hpg.ig.com.br

1 REDES DE COMPUTADORES
1.1 O que uma rede
Rede a conexo de duas ou mais mquinas com o objetivo de compartilhar recursos entre uma mquina e outra. Os recursos podem ser: Compartilhamento do contedo de seu disco rgido (ou parte dele) com outros usurios. Os outros usurios podero acessar o disco como se estivesse instalado na prpria mquina. Tambm chamado de servidor de arquivos. Compartilhamento de uma impressora com outros usurios. Os outros usurios podero enviar seus trabalhos para uma impressora da rede. Tambm chamado de servidor de impresso. Compartilhamento de acesso a Internet. Outros usurios podero navegar na Internet, pegar seus e-mails, ler notcias, bate-papo no IRC, ICQ atravs do servidor de acesso Internet. Tambm chamado de servidor Proxy. Servidor de Internet/Intranet. Outros usurios podero navegar nas pginas Internet localizadas em seu computador, pegar e-mails, usar um servidor de IRC para bate-papo na rede, servidor de ICQ, etc. Com os itens acima funcionando possvel criar permisses de acesso da rede, definindo quem ter ou no permisso para acessar cada compartilhamento ou servio existente na mquina (www, ftp, irc, icq, etc), e registrando/avisando sobre eventuais tentativas de violar a segurana do sistema, firewalls, etc. Alguns termos muito usados quando se fala sobre redes de computadores: host (mquina): um computador que faz parte da rede; localhost (mquina local): o computador no qual o usurio est trabalhando; remote host (mquina remota): qualquer outro computador que faa parte da rede. Geralmente o usurio no possui acesso fsico esta mquina; servidor: host que disponibiliza algum recurso pela rede; cliente: mquina que utiliza os recursos utilizados pelo servidor; Entre outras ilimitadas possibilidades que dependem do conhecimento do indivduo no ambiente GNU/Linux, j que ele permite muita flexibilidade para fazer qualquer coisa funcionar em rede. A comunicao entre computadores em uma rede feita atravs do Protocolo de Rede.

1.2 Protocolo de Rede


O protocolo de rede a linguagem usada para a comunicao entre um computador e outro. Existem vrios tipos de protocolos usados para a 9

Eletricazine

www.eletricazine.hpg.ig.com.br

comunicao de dados, alguns so projetados para pequenas redes locais (como o caso do NetBIOS) outros para redes mundiais (como o TCP/IP, que possui caractersticas de roteamento). Dentre os protocolos, o que mais se destaca atualmente o TCP/IP, devido ao seu projeto, velocidade e capacidade de roteamento.

1.3 Internet
O termo internet usado para definir um conjunto de redes de computadores, interligadas entre si. As redes podem ser homogneas (mesma arquitetura de mquinas, sistemas operacionais e protocolos) ou heterogneas (diversas plataformas diferentes interligadas). O objetivo permitir que os dados sejam trocados de forma transparente, sem que um n saiba detalhes sobre os demais. A Internet (com i maisculo), que uma grande rede mundial de computadores, um exemplo extremo do conceito de internet (com i minsculo). No final dos anos 60, o Departamento de Defesa americano iniciou uma parceria com universidades para pesquisar novas tecnologias de comunicao de dados. Os participantes fizeram a ARPANET, que foi a primeira rede de troca de pacotes da histria. O experimento foi um sucesso, e a rede logo se espalhou em instituies militares e universidades por todo pas. Mas os primeiros protocolos da ARPANET eram lentos e sujeitos a travamentos freqentes da rede. Foi necessria a criao de um novo conjunto de protocolos, e no incio da dcada de 80 a ARPANET se converteu para o TCP/IP. O governo americano passou a exigir que todas as suas redes usassem o TCP/IP, o que encorajou a adoo do protocolo por vrios fabricantes de computadores. A facilidade de operao do TCP/IP permitiu que a ARPANET crescesse rapidamente, transformando-se no que hoje conhecemos por Internet.

1.4 O Modelo OSI


Para satisfazer requerimentos de clientes para a capacidade de computao remota, fabricantes de computadores de grande porte desenvolveram uma variedade de arquiteturas de redes. Algumas destas arquiteturas definem o inter-relacionamento de fornecedores de hardware e software, em particular, para permitir o fluxo de comunicaes atravs da rede para fabricantes de computadores em geral. Com a finalidade de padronizar o desenvolvimento de produtos para redes de comunicao de dados, foi elaborado um modelo aberto que teve como referncia o OSI - Open System Interconnection pela ISO (International Organization for Standardization). As principais caractersticas do Modelo OSI so: Diviso em Camadas: as diferentes funcionalidades so fornecidas por diferentes protocolos, organizados em camadas;

10

Eletricazine

www.eletricazine.hpg.ig.com.br

Pontos de Acesso de Servios: as vrias camadas se comunicam com as demais por uma interface padronizada, possibilitando a substituio do protocolo de uma das camadas por outro equivalente. P P Requisio P P Requisio P P Servio Servio

A S A S

Camada N+1

A S A S

P P

A S A S

Camada N

A S A S

P P

A S A

Camada N-1

A S

P P

A S O Modelo OSI dividido em 7 camadas, sendo que nem todas as entidades da rede precisam implementar todas elas.

1.4.1 As camadas OSI S

Aplicao Apresentao Sesso Transporte Rede Enlace Fsica Rede Enlace Fsica

Aplicao Apresentao Sesso Transporte Rede Enlace Fsica

1.4.2 A camada Fsica


A camada fsica lida com a transmisso pura de bits atravs de um canal de comunicao. As questes de projeto so concernentes garantia de que, quando um lado transmite um bit 1, este seja recebido como bit 1 do outro lado. As questes tpicas aqui so quantos volts devem ser usados para representar um 1 e quantos um 0, quantos microssegundos dura um bit, se a transmisso pode ocorrer simultaneamente em ambos os sentidos, como a 11

Eletricazine

www.eletricazine.hpg.ig.com.br

conexo inicial estabelecida e desfeita, quantos pinos o conector de rede possui e para que servem. As questes de projeto lidam majoritariamente com interfaces mecnicas, eltricas e procedimentais, e com o meio fsico de transmisso que est abaixo da camada fsica. O projeto da camada fsica pode ser considerado como responsabilidade do engenheiro eletrnico.

1.4.3 A camada de Enlace


A tarefa principal da camada de enlace de dados pegar a facilidade de transmisso de dados brutos e transform-la em uma linha que parea camada de rede ser livre de erros de transmisso. tarefa dessa camada resolver os problemas causados por quadros danificados, perdidos ou duplicados. Ela realiza essa tarefa fazendo com que o transmissor fragmente os dados de entrada em quadros, transmita-os seqencialmente e processe os quadros de confirmao mandados de volta pelo receptor. Dado que a camada fsica meramente aceita uma seqncia de bits sem se importar com o significado ou a estrutura, cabe camada de enlace de dados criar e reconhecer os limites dos quadros. Isto pode ser conseguido anexando-se padres de bits especiais ao comeo e fim do quadro. A camada de enlace pode oferecer vrias classes diferentes de servio camada de rede, cada qual com qualidade e preo diferentes. tambm tarefa desta camada impedir que um transmissor rpido afogue um receptor lento com dados, atravs de algum mecanismo regulador de trfego.

1.4.4 A camada de Rede


A camada de rede se preocupa com o controle da operao da subrede, determinando como os pacotes so roteados da origem para o destino. As rotas podem ser baseadas em tabelas estticas ou altamente dinmicas, mudando para cada pacote. tambm funo desta camada o controle de congestionamentos de pacotes. A contabilidade do uso da rede outra das funes da camada de rede.

1.4.5 A camada de Transporte


A funo bsica da camada de transporte aceitar dados da camada de sesso, dividi-los se necessrio em unidades menores, pass-las cama de rede e garantir que os pedaos cheguem corretamente ao outro lado. Em condies normais, a camada de transporte cria uma conexo de rede distinta para cada conexo de transporte exigida pela camada de sesso. Mas devido a requerimentos de banda e limitaes de custo, pode ser necessrio multiplexar vrias conexes de transporte em uma conexo de rede, ou vice-versa. A camada de transporte uma verdadeira camada fim-a-fim. Ela responsvel pelo estabelecimento, manuteno e encerramento das conexes fim-a-fim. 12

Eletricazine

www.eletricazine.hpg.ig.com.br

1.4.6 A camada de Sesso


A camada de sesso permite a usurios em mquinas diferentes estabelecerem sesses entre eles. Uma sesso de transporte pode ser usada para permitir ao usurio logar-se remotamente, ou para transferir um arquivo entre duas mquinas. Um dos servios desta camada gerenciar o controle de dilogos, acompanhando de quem a vez de transmitir. Um outro servio da camada de sesso a sincronizao, fornecendo meios de inserir checkpoints no fluxo de dados, de forma que, depois de uma falha, somente os dados aps o ltimo checkpoint precisam ser repetidos.

1.4.7 A camada de Apresentao


Ao contrrio de todas as camadas inferiores, que se interessavam em trocar bits confiavelmente, a camada de apresentao se relaciona com a sintaxe e a semntica da informao transmitida. A camada de apresentao tambm pode realizar compresso de dados para reduzir o trfego, ou criptografia para garantir a privacidade.

1.4.8 A camada de Aplicao


A camada de aplicao dentro do processo de comunicao faz interface com a aplicao. Ou seja, baseado em solicitaes de uma aplicao de rede, esta camada seleciona servios a serem fornecidos por camadas mais baixas. Esta camada deve providenciar todos os servios diretamente relacionados aos usurios. Alguns destes servios so: identificao da inteno das partes envolvidas na comunicao e sua disponibilidade e autenticidade estabelecimento de autoridade para comunicar-se acordo sobre o mecanismo de privacidade determinao da metodologia de alocao de custo determinao de recursos necessrios para prover uma qualidade de servios aceitvel sincronizao de cooperao para aplicaes seleo da disciplina de dilogo responsabilidade da recuperao de erros de estabelecimento acordo na validao de dados transferncia de informaes

Exerccios
1. Qual a diferena entre internet e Internet?

2. Qual a diferena entre cliente e servidor?

13

Eletricazine

www.eletricazine.hpg.ig.com.br

3. O que um protocolo de rede?

4. Qual da opes abaixo no uma camada do modelo OSI? a) Enlace b) Transporte c) Sesso d) Roteamento e) Rede

14

Eletricazine

www.eletricazine.hpg.ig.com.br

2 TCP/IP
O TCP/IP um protocolo que conecta redes LAN ou WAN, homogneas ou heterogneas. Ele pode fazer tanto a comunicao entre hosts ponto-aponto, como a comunicao entre cliente e servidor. Existem dois tipos de interao entre aplicaes. Comunicao Orientada Conexo apropriada quando as aplicaes precisam de uma troca contnua de dados. Em contraste, a Comunicao No Orientada Conexo apropriada quando as aplicaes trocam mensagens isoladas, geralmente com quantidades pequenas de dados. Para conseguir uma troca de dados confivel entre os ns, so necessrios vrios procedimentos: empacotamento dos dados, determinao do caminho a ser seguido pelos pacotes, transmisso dos dados, adaptao da taxa de transmisso de acordo com a capacidade do destino de receber dados, gerenciamento de erros e retransmisso de dados. Isso resulta em uma implementao complicada. Para facilitar essa tarefa, pode se usar uma implementao modular, agrupando as tarefas relacionadas em camadas distintas. Para o TCP/IP foi adotado um modelo de comunicao dividido em camadas, que depois viria a influenciar o modelo OSI que hoje considerado padro. Aplicaes e Servios TCP UDP IP PPP V.90 Ethernet Aplicao Apresentao Sesso Transporte Rede Enlace Fsico

Cada camada acrescenta informaes de controle ao pacote de dados e transmite seu pacote para a camada inferior, que tambm adiciona seus dados.

2.1 A camada Fsica


A camada fsica trabalha com a mdia fsica, conectores, e os sinais que representam 0 e 1. Por exemplo, um modem padro V.90 ou V.92 implementam as funes da camada fsica.

15

Eletricazine

www.eletricazine.hpg.ig.com.br

2.2 A camada de Enlace de Dados


A camada de enlace de dados usa a capacidade de transmisso de dados brutos da camada fsica e transforma-a em uma linha que parea camada de rede ser livre de erros de transmisso. O protocolo PPP um exemplo de camada de enlace de dados. Na camada de Enlace de Dados, os dados so organizados em quadros. Header Dados Trailer

Cada quadro tem um cabealho que inclui o endereo e controla a informao e um trailer que usado para deteco de erros. Um cabealho de quadro de LAN contm a os endereos fsicos de origem e destino, que identificam as placas de rede. Note que o Enlace pode ser uma rede local ou uma conexo Ponto-aPonto.

2.3 A camada de Rede


O IP (Internet Protocol) executa as funes da camada de rede. O IP roteia os dados entre sistemas. Os dados podem atravessar um nico enlace ou podem ser retransmitidos por vrios enlaces pela internet. As unidades de dados so chamadas datagramas. Os datagramas tm um cabealho IP que contm endereamento de rede. Os roteadores examinam o endereo de destino no cabealho IP para direcionar os datagramas para seu destino. Cabealho IP Endereo IP Origem Endereo IP Destino

Informao

A camada IP dita No-Orientada Conexo porque cada datagrama roteado independentemente e o IP no garante a entrega confivel ou em seqncia dos datagramas.

2.4 Camada de Transporte


2.4.1 TCP
O TCP (Transmission Control Protocol) proporciona conexes de dados confiveis para as aplicaes. O TCP conta com mecanismos que garantem que os dados so entregues s suas aplicaes locais: ntegros Em seqncia Completos Sem duplicatas Os mecanismos bsicos que o TCP usa para conseguir isso so: Numerao dos segmentos 16

Eletricazine

www.eletricazine.hpg.ig.com.br

Estabelecimento de Timeout Retransmisso dos segmentos O lado que recebe os dados deve coloc-los em na seqncia correta, descartando duplicatas e confirmando o recebimento dos mesmos. O TCP implementado apenas nos hosts. O TCP um protocolo fullduplex, ou seja, ambos os lados podem enviar dados ao mesmo tempo. O TCP adiciona um cabealho ao pacote de dados da aplicao, formando um segmento. O TCP passa os segmentos ao IP, que ento roteia os mesmos at seu destino. O TCP aceita segmentos do IP, determina qual aplicao o destino, e passa os dados para a aplicao apropriada.

2.4.2 UDP
O UDP no faz nenhuma garantia quanto entrega dos dados, e dever da aplicao trocar informaes que confirmem a chegada dos dados. O UDP implementado apenas nos hosts. Com o UDP (User Datagram Protocol), uma aplicao manda uma mensagem isolada para outra aplicao. O UDP adiciona um cabealho, formando um datagrama UDP. O UDP passa os segmentos ao IP, que ento roteia os mesmos at seu destino. O UDP aceita segmentos do IP, determina qual aplicao o destino, e passa os dados para a aplicao apropriada.

2.4.3 ICMP
O IP tem um projeto simples e elegante. Em condies normais, o IP faz um uso muito eficiente da memria e recursos de transmisso. Como IP prov um servio de expedio de datagramas sem conexo e no confivel, e alm disso um datagrama viaja de um gateway a outro at alcanar um gateway que possa expedi-lo diretamente aa estao destino; necessrio um mecanismo que emita informaes de controle e de erros quando acontecerem problemas na rede. Alguns dos problemas tpicos que podem acontecer so: Um gateway no pode expedir ou rotear um datagrama; Um gateway detecta uma condio no usual, tal como congestionamento. O mecanismo de controle que emite mensagens quando acontece algum erro a funo principal do protocolo ICMP. O ICMP permite aos gateways enviar mensagens de erros ou de controle a outros gateways ou hosts. ICMP prov comunicao entre o software de IP numa mquina e o software de IP numa outra mquina.
Tabela 2-1 Mensagens ICMP

Tipo 0 3

Mensagem Echo Reply Destination Unreachable

17

Eletricazine 4 5 8 11 12 13 14 Source Quench Redirect Echo Time Exceeded

www.eletricazine.hpg.ig.com.br

Parameter Problem Time Stamp Time Stamp Reply

ICMP somente reporta condies de erros fonte original. A fonte deve relatar os erros aos programas de aplicao individuais e tomar ao para corrigir o problema. Uma das mensagens que o ICMP pode enviar : Destination Unreachable, o qual, por sua vez pode ser dos seguintes tipos: Network Unreachable (rede no alcanvel) Host Unreachable (mquina no alcanvel) Port Unreachable (porta no alcanvel) Destination Host Unknown (mquina destino desconhecido) Destination Network Unknown (rede destino desconhecida)

2.5

Montagem dos pacotes

Na maioria das redes, a informao dividida em vrias partes, chamadas de pacotes, por duas razes: compartilhamento de recursos e deteco/correo de erros. Obviamente no justo que um nico usurio da domine os recursos da rede por muito tempo. Com a diviso da informao em pacotes, cada um dos pacotes pode ser enviado/recebido individualmente, permitindo assim que outros pacotes possam trafegar pela rede. Isso possibilita um compartilhamento justo dos recursos. Na maioria dos casos, os dispositivos so conectados atravs de cabos. Em alguns casos, usa-se ondas de rdio ou mesmo luz infravermelha. Ambas as formas de conexo fsica esto sujeitas a interferncias, que podem corromper os dados que trafegam na rede. Grande parte do trabalho complexo em redes detectar e solucionar os erros no trfego dos dados. A maioria das tcnicas de deteco e correo de erros baseada no uso de checksums. Quando a informao enviada, anexado em seu final um nmero indicando a soma de todos os bytes da mesma. Na recepo, esse nmero comparado com a soma dos dados recebidos. Se houver diferena, a informao est corrompida e deve ser retransmitida.

18

Eletricazine

www.eletricazine.hpg.ig.com.br

Caso o bloco de dados seja muito grande, o reenvio vai tomar muito tempo, degradando a performance da rede. Para minimizar este problema, divide-se a informao em pacotes. Se houver algum erro, basta retransmitir apenas os pacotes corrompidos. Aplicao
Dados

Dados

Segmento TCP

Transporte Transporte

Datagrama UDP

{
IP Header Frame Header IP Header

TCP Header UDP Header

Dados Dados

Datagrama

Rede

TCP/UDP Header

Dados

Enlace
Quadro

TCP/UDP Header

Dados

Frame Trailer

2.6

Endereamento

Em uma rede, o endereo de um dispositivo uma forma de identificar esse dispositivo como sendo nico. Normalmente, os endereos de rede possuem um formato padronizado e bem definido.

2.6.1 Endereamento de Enlace (MAC)


Os endereos MAC (Media Access Control) so atribudos aos adaptadores de rede durante sua fabricao, sendo que cada adaptador tem um endereo que o identifica como nico. Cada fabricante tem um cdigo que o diferencia dos demais. Os endereos MAC so escritos no seguinte formato:
00-c0-49-3f-c6-0c

Os primeiros bytes contm o cdigo do fabricante, os demais contm o modelo e nmero serial do adaptador de rede.

2.6.2 Endereamento de Rede (IP)


Em redes roteadas, o endereo composto de pelo menos dois nmeros: o da rede e o do n. Se dois dispositivos possurem endereos com o mesmo nmero de rede, ento eles esto localizados na mesma rede. Do contrrio, esto em redes distintas, mas unidas atravs de um roteador. O nmero que ir diferencia-los dentro desta rede o nmero do n. Os endereos IP so nmeros que identificam seu computador em uma rede TCP/IP. Inicialmente voc pode imaginar o IP como um nmero de 19

Eletricazine

www.eletricazine.hpg.ig.com.br

telefone. O IP composto por quatro bytes e a conveno de escrita dos nmeros chamada de "notao decimal pontuada". Por conveno, cada interface (placa usada p/ rede) do computador ou roteador tem um endereo IP. Tambm permitido que o mesmo endereo IP seja usado em mais de uma interface de uma mesma mquina, mas normalmente cada interface tem seu prprio endereo IP. As Redes do Protocolo Internet so seqncias contnuas de endereos IP. Todos os endereos dentro da rede tm um nmero de dgitos dentro dos endereos em comum. A poro dos endereos que so comuns entre todos os endereos de uma rede chamada de poro da rede. O conjunto dos dgitos restantes chamado de poro dos hosts. O nmero de bits que so compartilhados por todos os endereos dentro da rede chamado de netmask (mscara da rede) e o papel da netmask determinar quais endereos pertencem ou no a rede. Por exemplo, considere o seguinte:
Tabela 2-2 Formao de Endereos IP

Endereo do Host Mscara da Rede Poro da Rede Poro do Host Endereo da Rede Endereo Broadcast

192.168.110.23 255.255.255.0 192.168.110. .23 192.168.110.0 192.168.110.255

Qualquer endereo que finalizado em zero em sua netmask revelar o endereo da rede a que pertence. O endereo de rede ento sempre o menor endereo numrico dentro da escalas de endereos da rede e sempre possui a poro host dos endereos codificada como zeros. O endereo de broadcast um endereo especial que cada computador em uma rede "escuta" em adio a seu prprio endereo. Este um endereo onde os datagramas enviados so recebidos por todos os computadores da rede. Certos tipos de dados, como informaes de roteamento e mensagens de alerta, so transmitidos para o endereo broadcast, assim todo computador na rede pode receb-las simultaneamente. Existem dois padres normalmente usados para especificar o endereo de broadcast. O mais amplamente aceito para usar o endereo mais alto da rede como endereo broadcast. No exemplo acima este seria 192.168.110.255. Por algumas razes outros sites tm adotado a conveno de usar o endereo de rede como o endereo broadcast. Na prtica no importa muito se usar este endereo, mas voc deve ter certeza que todo computador na rede esteja configurado para escutar o mesmo endereo broadcast. 2.6.2.1 Classes de Rede IP Por razes administrativas aps pouco tempo no desenvolvimento do protocolo IP alguns grupos arbitrrios de endereos foram formados em redes

20

Eletricazine

www.eletricazine.hpg.ig.com.br

e estas redes foram agrupadas no que foram chamadas de classes. Estas classes armazenam um tamanho padro de redes que podem ser usadas. As faixas alocadas so:
Tabela 2-3 Classes de Endereamento

Bits Mais Classe Significativos A B C D E


00000 10000 11000 11100 11110

Mscara de Rede
255.0.0.0 255.255.0.0 255.255.255.0 240.0.0.0

Endereos Possveis na Rede


0.0.0.0 127.255.255.255 128.0.0.0 - 191.255.255.255 192.0.0.0 - 223.255.255.255 224.0.0.0 - 239.255.255.255 240.0.0.0 255.255.255.255

2.6.2.2 O endereo de loopback O endereo de loopback um endereo especial que permite fazer conexes com voc mesmo. Todos os computadores que usam o protocolo TCP/IP utilizam este endereo, e existem vrias razes porque precisa fazer isto, por exemplo voc pode testar vrios programas de rede sem interferir com ningum em sua rede. Por conveno, os endereos IP 127.0.0.1 a 127.255.255.254 foram escolhidos especificamente para a loopback, assim se abrir uma conexo para 127.0.0.1, abrir uma conexo para o prprio computador local. 2.6.2.3 Endereos reservados para uso em Redes Privadas Se voc estiver construindo uma rede privada que nunca ser conectada a Internet, ento voc pode escolher qualquer endereo que quiser. No entanto, para sua segurana e padronizao, existem alguns endereos IP's que foram reservados especificamente para este propsito. Eles esto especificados no RFC1597 e so os seguintes:
Tabela 2-4 Endereos IP Reservados

ENDEREOS RESERVADOS PARA REDES PRIVADAS Classe A B C Mscara de Rede 255.0.0.0 255.255.0.0 255.255.255.0 Endereo da Rede 10.0.0.0 172.16.0.0 - 10.255.255.255 - 172.31.255.255

192.168.0.0 - 192.168.255.255

Voc deve decidir primeiro qual ser a largura de sua rede e ento escolher a classe de rede que ser usada. 2.6.2.4 Referncia rpida de mscara de redes A tabela abaixo faz referncia s mscaras de rede mais comuns e a quantidade de mquinas mximas que ela atinge. Note que a especificao da mscara tem influncia direta na classe de rede usada:

21

Eletricazine Mscara (octal)


Classe A:

www.eletricazine.hpg.ig.com.br Mscara (32 bits) /255.0.0.0 /255.128.0.0 /255.192.0.0 /255.224.0.0 /255.240.0.0 /255.148.0.0 /255.252.0.0 /255.254.0.0 /255.255.0.0 /255.255.128.0 /255.255.192.0 /255.255.224.0 /255.255.240.0 /255.255.248.0 /255.255.252.0 /255.255.254.0 Nmero de Mquinas 16,777,214 8,388,606 4,194,302 2,197,150 1,048,574 524,286 262,142 131,070 65,534 32,766 16,382 8,190 4,094 2,046 1,022 510

/8 /9 /10 /11 /12 /13 /14 /15


Classe B:

/16 /17 /18 /19 /20 /21 /22 /23


Classe C:

/24 /255.255.255.0 254 /25 /255.255.255.128 126 /26 /255.255.255.192 62 /27 /255.255.255.224 30 /28 /255.255.255.240 14 /29 /255.255.255.248 6 /30 /255.255.255.252 2 /32 /255.255.255.255 1 Qualquer outra mscara fora desta tabela (principalmente para a classe A), dever ser redimensionada com uma calculadora de IP para chegar a um nmero aproximado de redes/mquinas aproximados que deseja.

2.6.3 Endereamento de Sesso (Portas)


Todo processo que deseje estabelecer comunicao com outro processo deve se identificar de alguma forma. O TCP/IP implementa essa comunicao atravs do uso do conceito de portas (ou ports).

22

Eletricazine

www.eletricazine.hpg.ig.com.br

A porta um nmero de 16 bits que identifica processos (ou servios de rede). O nmero da porta de origem e o nmero da porta de destino esto includos no cabealho de cada segmento TCP ou pacote UDP. Ap. 23 Ap. 80 Ap. 53 Ap. 161

Portas TCP IP Um socket uma combinao de um endereo IP com um nmero de porta, e identifica um processo como nico na rede. UDP

2.7 Roteamento
O TCP/IP pode ser usado em redes locais e para interligao de redes. As diversas redes locais conversam atravs dos roteadores. Pode haver mais de um caminho entre dois pontos. As redes isoladas so conectadas por meio de Roteadores IP. Roteadores modernos so equipados com vrios slots que podem receber diferentes tipos de adaptadores de rede: Ethernet, Token-Ring, FDDI, PPP, etc. O software de IP roda nos hosts e nos roteadores. Se o destino est no mesmo enlace, manda-se o datagrama diretamente para ele; Se o destino no est no mesmo enlace, manda-se o pacote para o roteador local; Se o destino no estiver no mesmo enlace do roteador, este ir repass-lo ao prximo roteador. Este processo continua at que o destino seja atingido.

23

Eletricazine

www.eletricazine.hpg.ig.com.br

Pode ser til ilustrar isto com um exemplo. Imagine um simples roteador de escritrio, ele pode ter um link intermitente com a Internet, um nmero de segmentos Ethernet alimentando as estaes de trabalho e outro link PPP intermitente fora de outro escritrio. Quando o roteador recebe um datagrama de qualquer de suas conexes de rede, o mecanismo que usa determina qual a Roteador
N

N N

Roteador
N N

Roteador
N

Rede Local
N N N N

Internet

prxima interface deve enviar o datagrama. Computadores simples tambm precisam rotear, todos os computadores na Internet tm dois dispositivos de rede. Um a interface loopback (explicada acima), o outro usado para falar com o resto da rede, talvez uma interface Ethernet, talvez uma interface serial PPP ou SLIP. Cada computador mantm uma lista de regras especiais de roteamento, chamada tabela de roteamento. Esta tabela contm colunas que tipicamente contm no mnimo trs campos, o primeiro o endereo de destino, o segundo o nome da interface que o datagrama deve ser roteado e o terceiro opcionalmente o endereo IP da outra mquina que levar o datagrama em seu prximo passo atravs da rede. No GNU/Linux voc pode ver a tabela de roteamento usando um dos seguintes comandos:
cat /proc/net/route route -n netstat -r

O processo de roteamento muito simples: um datagrama (pacote IP) recebido, o endereo de destino (para quem ele ) examinado e comparado com cada item da tabela de roteamento. O item que mais corresponder com o endereo selecionado e o datagrama direcionado a interface especificada. Se o campo gateway estiver preenchido, ento o datagrama direcionado para aquele computador pela interface especificada, caso contrrio o endereo de destino assumido sendo uma rede suportada pela interface. 24

Eletricazine

www.eletricazine.hpg.ig.com.br

Em uma LAN pequena, as tabelas de roteamento podem ser feitas manualmente. Em redes maiores, os roteadores mantm suas tabelas atualizadas trocando informaes entre si. Roteadores podem descobrir eventos como: Uma nova rede adicionada a internet; Um caminho foi interrompido, e um destino no pode ser atingido; Uma nova rota foi estabelecida para um destino. No existe um padro nico para troca de informao entre roteadores. A liberdade de escolha do protocolo estimulou a competio e levou a grandes melhorias nos protocolos. Os protocolos de roteamento mais usados so o RIP e o OSPF.

2.7.1 Reempacotamento
Existe um evento olmpico onde um competidor nada uma parte do percurso, pega uma bicicleta e pedala outra parte, e corre uma terceira etapa. O IP funciona da mesma maneira. O datagrama foi projetado para poder ser mudado de uma mdia para outra at chegar ao seu destino. Antes de um datagrama ser transmitido por um enlace, ele empacotado em um quadro apropriado para o enlace. Quando um roteador recebe o quadro: O roteador desempacota o quadro e extrai o datagrama O roteador analisa o endereo de destino e descobre a mdia do prximo trecho O roteador reempacota o datagrama em um novo quadro, apropriado para o prximo lao

Exerccios
1. Em que nvel de TCP/IP rodam o telnet e o ftp? a) Fsico b) Sesso c) Aplicao d) Transporte e) Enlace 2. O que significa a sigla MAC? a) b) c) d) e) Media Assynchronous Connection Master Assynchronous Connection Media Access Connection Media Access Control Master Access Control

25

Eletricazine

www.eletricazine.hpg.ig.com.br

3. Que endereo de rede no roteado na internet? a. b. c. d. e. 128.9.0.0 10.0.0.0 191.168.72.0 171.20.20.0 8.0.0.0

4. Qual das seguintes aplicaes no usa o protocolo UDP? a. TFTP b. DNS c. RPC d. FTP e. SNMP 5. So mscaras padro de redes classe A, B e C: a. 0.0.0.255, 0.0.255.255, 0.255.255.255 b. 0.0.0.0, 0.0.0.255, 0.0.255.255 c. 255.0.0.0, 255.255.0.0, 255.255.255.0 d. 0.0.0.0, 255.0.0.0, 255.255.0.0 e. 255.255.255.0, 255.255.0.0, 255.0.0.0

26

Eletricazine

www.eletricazine.hpg.ig.com.br

3 CONFIGURAO DO TCP/IP NO LINUX


Adaptado do Guia Foca GNU/Linux Intermedirio Captulo 15.

3.1 Instalando uma mquina em uma rede existente


Se voc quiser instalar uma mquina GNU/Linux em uma rede TCP/IP existente ento voc deve contatar qualquer um dos administradores da sua rede e perguntar o seguinte: Endereo IP de sua mquina Nome da Mquina Endereo IP da rede Endereo IP de broadcast Mscara da Rede IP Endereo do Roteador Endereo do Servidor de Nomes (DNS) Voc deve ento configurar seu dispositivo de rede GNU/Linux com estes detalhes. Voc no pode simplesmente escolh-los e esperar que sua configurao funcione.

3.2 Configurao da interface Ethernet


As interfaces de rede no GNU/Linux esto localizadas no diretrio /dev e a maioria criada dinamicamente pelos softwares quando so requisitadas. Este o caso das interfaces ppp e plip que so criadas dinamicamente pelos softwares. Abaixo a identificao de algumas interfaces de rede no GNU/Linux (o ? significa um nmero que identifica as interfaces seqencialmente, iniciando em 0): eth? - Placa de rede Ethernet e WaveLan. ppp? - Interface de rede PPP (protocolo ponto a ponto). slip? - Interface de rede serial plip? - Interface de porta paralela arc?e, arc?s - Interfaces Arcnet sl?, ax? - Interfaces de rede AX25 (respectivamente para kernels 2.0.xx e 2.2.xx. fddi? - Interfaces de rede FDDI. dlci??, sdla? - Interfaces Frame Relay, respectivamente para para dispositivos de encapsulamento DLCI e FRAD. tr? Interface Token Ring eql - Balanceador de trfego para mltiplas linhas

27

Eletricazine

www.eletricazine.hpg.ig.com.br

3.2.1 A interface loopback


A interface loopback um tipo especial de interface que permite fazer conexes com voc mesmo. Todos os computadores que usam o protocolo TCP/IP utilizam esta interface e existem vrias razes porque precisa fazer isto, por exemplo, voc pode testar vrios programas de rede sem interferir com ningum em sua rede. Por conveno, o endereo IP 127.0.0.1 foi escolhido especificamente para a loopback, assim se abrir uma conexo telnet para 127.0.0.1, abrir uma conexo para o prprio computador local. A configurao da interface loopback simples e voc deve ter certeza que fez isto (mas note que esta tarefa normalmente feita pelos scripts de inicializao existentes em sua distribuio).
[root@gauss:~] # ifconfig lo 127.0.0.1

Caso a interface loopback no esteja configurada, voc poder ter problemas quando tentar qualquer tipo de conexo com as interfaces locais, tendo problemas at mesmo com o comando ping.

3.2.2 Configurando uma interface com o ifconfig


Depois de configurada fisicamente, a interface precisa receber um endereo IP para ser identificada na rede e se comunicar com outros computadores, alm de outros parmetros como o endereo de broadcast e a mscara de rede. O comando usado para fazer isso o ifconfig (interface configure). Para configurar a interface de rede Ethernet (eth0) com o endereo 192.168.1.1, mscara de rede 255.255.255.0, podemos usar o comando:
[root@gauss:~] # ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up

O comando acima ativa a interface de rede. A palavra up pode ser omitida, pois a ativao da interface de rede o padro. Para desativar a mesma interface de rede, basta usar usar o comando:
[root@gauss:~] # ifconfig eth0 down

Digitando ifconfig so mostradas todas as interfaces ativas no momento, pacotes enviados, recebidos e colises de datagramas. Para mostrar a configurao somente da interface eth0, use o comando: ifconfig eth0

3.2.3 Configurando uma interface durante o boot


As interfaces de rede podem ser configuradas automaticamente durante o boot. Para isso existem os arquivos /etc/sysconfig/networkscripts/ifcfg-*. Vamos ver por exemplo o ifcfg-eth0:
DEVICE=eth0 BOOTPROTO=

28

Eletricazine
ONBOOT=yes IPADDR=192.168.72.100 NETMASK=255.255.255.0 BROADCAST=192.168.72.255 NETWORK=192.168.72.0 USERCTL=no IPXNETNUM_802_2="" IPXPRIMARY_802_2="no" IPXACTIVE_802_2="no" IPXNETNUM_802_3="" IPXPRIMARY_802_3="no" IPXACTIVE_802_3="no" IPXNETNUM_ETHERII="" IPXPRIMARY_ETHERII="no" IPXACTIVE_ETHERII="no" IPXNETNUM_SNAP="" IPXPRIMARY_SNAP="no" IPXACTIVE_SNAP="no"

www.eletricazine.hpg.ig.com.br

Caso a interface fosse configurada por DHCP e no com um nmero fixo, teramos o seguinte:
DEVICE=eth0 BOOTPROTO=dhcp DHCP_HOSTNAME=gauss ONBOOT=yes IPADDR= NETMASK= BROADCAST= NETWORK= USERCTL=no IPXNETNUM_802_2="" IPXPRIMARY_802_2="no" IPXACTIVE_802_2="no" IPXNETNUM_802_3="" IPXPRIMARY_802_3="no" IPXACTIVE_802_3="no" IPXNETNUM_ETHERII="" IPXPRIMARY_ETHERII="no" IPXACTIVE_ETHERII="no" IPXNETNUM_SNAP="" IPXPRIMARY_SNAP="no" IPXACTIVE_SNAP="no"

3.2.4 Definindo diversos endereos IP para a mesma interface


Este interessante e til recurso do GNU/Linux conhecido como IP Aliasing e permite fazer nossa interface de rede local responder por diversos

29

Eletricazine

www.eletricazine.hpg.ig.com.br

endereos IP diferentes, mesmo sendo de classes de rede diferentes. Para usurios externos, a impresso que a rede tem "muitas" mquinas, quando na realidade apenas uma responde por todos estes endereos virtuais. Outra aplicao til durante a transio de uma faixa de endereos na rede de 192.168.0.* para 192.168.1.*, por exemplo, isto poder ser feito sem gerar transtornos na rede e sem parar o servidor. Este recurso a base para a construo de Mquinas virtuais baseadas em endereo IP (usado por daemons como Apache, proftpd e outros). A configurao deste recurso simples, supondo que temos a interface eth0 com o endereo atual 192.168.1.1: 1. Compile seu kernel com o suporte a IP Aliasing (embutido ou como mdulo). 2. Digite ifconfig eth0:0 192.168.1.10 - Isto cria um apelido para a placa de rede, chamado eth0:0, que responder as requisies para o endereo 192.168.1.10. 3. Execute o comando ifconfig (sem parmetros) para verificar se a nova interface foi ativada. Voc dever ver algo como:
eth0 Encapsulamento do Link: Ethernet Endereo de HW 00:80:AE:B3:AA:AA inet end.: 192.168.1.1 Bcast:192.168.1.255 Masc:255.255.255.0 UP BROADCASTRUNNING MULTICAST MTU:1500 Mtrica:1 RX packets:979 errors:0 dropped:0 overruns:0 frame:0 TX packets:1228 errors:0 dropped:0 overruns:0 carrier:0 colises:1 txqueuelen:100 RX bytes:71516 (69.8 Kb) TX bytes:1146031 (1.0 Mb) IRQ:10 Endereo de E/S:0x300

eth0:0 Encapsulamento do Link: Ethernet Endereo de HW 00:80:AE:B3:AA:AA inet end.: 192.168.1.10 Bcast:192.168.1.255 Masc:255.255.255.0 UP BROADCASTRUNNING MULTICAST MTU:1500 Mtrica:1 IRQ:10 Endereo de E/S:0x300

Note que o endereo de Hardware o mesmo para ambos os dispositivos (porque a mesma placa de rede est respondendo endereos diferentes). 4. Se necessrio ajuste as rotas ou gateway com o comando route (veja seo 3.3). Podem ser especificados quantos apelidos voc quiser e para qualquer faixa de endereos que desejar:
ifconfig eth0:1 192.168.1.11 ifconfig eth0:2 10.0.0.1 ifconfig eth0:3 200.132.12.10

30

Eletricazine

www.eletricazine.hpg.ig.com.br

Para desativar uma interface virtual, utilize o comando:


ifconfig eth0:1 down.

ATENO: Quando voc desativa uma interface fsica (eth0), todas as interfaces virtuais tambm so desativadas.

3.3

Configurando uma rota no Linux

A configurao da rota feita atravs da ferramenta route. Para adicionar uma rota para a rede 192.168.1.0 acessvel atravs da interface eth0 basta digitar o comando:
[root@gauss:~] # route add -net 192.168.1.0 eth0

Para apagar a rota acima da tabela de roteamento, basta substituir a palavra add por del. A palavra net quer dizer que 192.168.1.0 um endereo de rede (lembra-se das explicaes em Endereo IP, Section 4.3?)) para especificar uma mquina de destino, basta usar a palavra -host. Endereos de mquina de destino so muito usadas em conexes de rede apenas entre dois pontos (como ppp, plip, slip). Por padro, a interface especificada como ltimo argumento. Caso a interface precise especifica-la em outro lugar, ela dever ser precedida da opo -dev. Para adicionar uma rota padro para um endereo que no se encontre na tabela de roteamento, utiliza-se o gateway padro da rede. Atravs do gateway padro possvel especificar um computador (normalmente outro gateway) que os pacotes de rede sero enviados caso o endereo no confira com os da tabela de roteamento. Para especificar o computador 192.168.1.1 como gateway padro usamos:
[root@gauss:~] # route add default gw 192.168.1.1 eth0

O gateway padro pode ser visualizado atravs do comando route -n e verificando o campo gateway. A opo gw acima, especifica que o prximo argumento um endereo IP (de uma rede j acessvel atravs das tabelas de roteamento). O computador gateway est conectado a duas ou mais redes ao mesmo tempo. Quando seus dados precisam ser enviados para computadores fora da rede, eles so enviados atravs do computador gateway e o gateway os encaminham ao endereo de destino. Desta forma, a resposta do servidor tambm enviada atravs do gateway para seu computador ( o caso de uma tpica conexo com a Internet). A nossa configurao ficaria assim:
route add -net 192.168.1.0 eth0 route add default gw 192.168.1.1 eth0

Para mais detalhes, veja a pgina de manual do route ou o NET3-4HOWTO. 31

Eletricazine

www.eletricazine.hpg.ig.com.br

3.4 Hostname
Todas as mquinas que integram uma rede TCP/IP devem ter um nome pelo qual so conhecidas pelas outras mquinas da rede. Esse nome chamado de hostname. O comando utilizado para se configurar o hostname o hostname.
[root@gauss:~] # hostname gauss.alfamidia

Para verificar o nome da mquina, usa-se o comando hostname sem parmetros:


[root@gauss:~] # hostname gauss.alfamidia

O hostname tambm pode ser configurado automaticamente durante o boot, atravs do arquivo /etc/sysconfig/network. Vejamos um exemplo:
NETWORKING=yes HOSTNAME="gauss.alfamidia" NISDOMAIN="" GATEWAY= GATEWAYDEV=

Com esse arquivo, o nome automaticamente durante o boot.

da

estao

vai

ser

inicializado

3.5 Arquivos de configurao


3.5.1 O arquivo /etc/hosts
Este arquivo contm uma relao entre o endereo IP e o nome de computadores. A incluso de um computador neste arquivo dispensa a consulta de um servidor de nomes para obter um endereo IP, sendo muito til para mquinas que so acessadas freqentemente. A desvantagem de fazer isto que voc mesmo precisar manter este arquivo atualizado e se o endereo IP de algum computador for modificado, esta alterao dever ser feita em cada um dos arquivos hosts das mquinas da rede. Em um sistema bem gerenciado, os nicos endereos de computadores que aparecero neste arquivo sero da interface loopback e os nomes de computadores.
# /etc/hosts 127.0.0.1 192.168.0.1

localhost loopback this.host.name

Voc pode especificar mais que um nome de computador por linha como demonstrada pela primeira linha, a que identifica a interface loopback.

32

Eletricazine

www.eletricazine.hpg.ig.com.br

3.5.2 O arquivo /etc/networks


O arquivo /etc/networks tem uma funo similar ao arquivo /etc/hosts. Da mesma forma que cada mquina da rede pode ter um nome, as prprias redes tambm podem ter nomes. Esse arquivo serve para fazer a relao entre nomes de redes e nmero IP. Ele contm um banco de dados simples de nomes de redes contra endereos de redes. Seu formato consiste em dois campos por linha e seus campos so identificados como:
Nome_da_Rede Endereo_IP_da_Rede

Abaixo um exemplo de como se parece este arquivo:


loopnet localnet amprnet 127.0.0.0 192.168.1.0 44.0.0.0

Quando usar comandos como route, se um destino uma rede e esta rede se encontra no arquivo /etc/networks, ento o comando route mostrar o nome da rede ao invs de seu endereo.

3.5.3 O arquivo /etc/host.conf


Esse arquivo serve para configurar o sistema de resoluo de nomes, onde possvel configurar alguns itens que controlam o comportamento do resolvedor de nomes. A principal opo desse arquivo a order, que determina a ordem em que os servios sero analisados. As opes vlidas so: bind: consulta um servidor DNS; hosts: consulta o arquivo /etc/hosts;

nis: consulta o NIS; O formato deste arquivo descrito em detalhes na pgina de manual resolv+. Em quase todas as situaes, o exemplo seguinte funcionar:
order hosts,bind multi on

Este arquivo de configurao diz ao resolvedor de nomes para checar o arquivo /etc/hosts (parmetro hosts) antes de tentar verificar um servidor de nomes (parmetro bind) e retornar um endereo IP vlido para o computador procurado. multi on retornar todos os endereos IP resolvidos no arquivo /etc/hosts ao invs do primeiro.

33

Eletricazine

www.eletricazine.hpg.ig.com.br

Os seguintes parmetros podem ser adicionados para evitar ataques de IP spoofing:


nospoof on spoofalert on

O parmetro nospoof on ativa a resoluo reversa do nome (para checar se o endereo pertence realmente quele nome) e o spoofalert on registra falhas desta operao no syslog.

3.5.4 O arquivo /etc/resolv.conf


Esse arquivo informa como vai ser a consulta ao servidor DNS. O /etc/resolv.conf o arquivo de configurao principal do cdigo do resolvedor de nomes. Seu formato um arquivo texto simples com um parmetro por linha, e os endereos de servidores DNS externos so especificados nele. Existem trs palavras chaves normalmente usadas que so: domain Especifica o nome do domnio padro, para que no seja necessrio digitar todo o domnio para se acessar as mquinas da rede local.. search Especifica uma lista de nomes de domnio alternativos ao procurar por um computador, separados por espaos. A linha search pode conter no mximo 6 domnios ou 256 caracteres. nameserver Especifica o endereo IP de um servidor DNS para resoluo de nomes. Podem ser especificados at trs servidores. Como exemplo, o /etc/resolv.conf se parece com isto:
domain maths.wu.edu.au search maths.wu.edu.au wu.edu.au nameserver 192.168.10.1 nameserver 192.168.12.1

Este exemplo especifica que o nome de domnio a adicionar ao nome no qualificado (Ex. hostnames sem o domnio) maths.wu.edu.au e que se o computador no for encontrado naquele domnio ento a procura segue para o domnio wu.edu.au diretamente. Duas linhas de nomes de servidores foram especificadas, cada uma pode ser chamada pelo cdigo resolvedor de nomes para resolver o nome.

3.6 Outros arquivos de configurao relacionados com a rede


3.6.1 O arquivo /etc/services
O arquivo /etc/services um banco de dados simples que associa um nome amigvel a humanos a uma porta de servio amigvel a mquinas. um arquivo texto de formato muito simples, cada linha representa um item no banco de dados. Cada item dividido em trs campos separados por qualquer nmero de espaos em branco (tab ou espaos). Os campos so: 34

Eletricazine

www.eletricazine.hpg.ig.com.br

nome

porta/protocolo

apelidos

# comentrio

Uma palavra simples que representa o nome do servio sendo descrito. porta/protocolo Este campo dividido em dois sub-campos. porta: Um nmero que especifica o nmero da porta em que o servio estar disponvel. Muitos dos servios comuns tm designados um nmero de servio. Estes esto descritos no RFC1340. protocolo: Este sub-campo pode ser ajustado para tcp ou udp. importante notar que o item 18/tcp muito diferente do item 18/udp e que no existe razo tcnica porque o mesmo servio precisa existir em ambos. Normalmente o senso comum prevalece e que somente se um servio esta disponvel em ambos os protocolos tcp e udp, voc precisar especificar ambos. apelidos: Outros nomes podem ser usados para se referir a entrada deste servio. comentrio: Qualquer texto aparecendo em uma linha aps um caractere "#" ignorado e tratado como comentrio.

3.6.2 O arquivo /etc/protocols


O arquivo /etc/protocols um banco de dados que mapeia nmeros de identificao de protocolos novamente em nomes de protocolos. Isto usado por programadores para permiti-los especificar protocolos por nomes em seus programas e tambm por alguns programas tal como tcpdump permitindo-os mostrar nomes ao invs de nmeros em sua sada. A sintaxe geral deste arquivo :
nomeprotocolo nmero apelidos

35

Eletricazine

www.eletricazine.hpg.ig.com.br

4 DHCP
Adaptado do DHCP mini-HOWTO, por Vladimir Vuksan.

4.1 Protocolo DHCP


DHCP significa Protocolo de Configurao Dinmica de Mquinas. usado para controlar parmetros de controle de rede vitais para as mquinas (ao ser executado em clientes) com a ajuda de um servidor. O DHCP mantm compatibilidade reversa com o BOOTP. Para maiores informaes veja a RFC 2131 (antiga RFC 1531) e outras (veja a seo de Recursos Internet no final deste documento). Pode-se verificar ainda o FAQ sobre DHCP. Este mini-HOWTO aborda tanto o servidor DHCP como o cliente DHCP. Muitos usurios precisam do cliente, que usado nas estaes de trabalho, para obter as informaes de rede de um servidor remoto. O servidor usado pelos administradores de sistemas para distribuir informaes de rede para os clientes. Ento caso o leitor seja somente um usurio normal de rede, necessitar somente do programa cliente.

4.2 Configurao do Cliente DHCP


Atualmente, existem trs clientes DHCP para Linux: o dhcpcd, pump and dhclient. Este mini-HOWTO trata principalmente do dhcpcd.

4.2.1 Obtendo o Programa Cliente (dhcpcd)


Independente da distribuio que se esteja utilizando ser necessrio obter um programa cliente DHCP para Linux. O pacote necessrio chamado dhcpcd e a sua verso atual 0.70. Pode-se obter uma descrio do pacote em aqui. Dependendo da sua distribuio, voc pode ter que baixar o daemon cliente DHCP. Se voc no quer compil-lo a partir do cdigo fonte, o pacote que voc precisa chama-se dhcpcd, e a verso atual a 1.3.18. Ele mantido por Sergei Viznyuk, e atualmente j vem como pacote na maioria das distribuies. O cdigo fonte do dhcpcd pode ser obtido nos seguintes locais: ftp://ftp.phystech.com/pub/ (Site Principal)
http://www.cps.msu.edu/~dunham/out/

Depois siga as instrues adiante, devem ser as mesmas.

4.2.2 Slackware
Pode-se obter a ltima verso do DHCPcd a partir de qualquer espelho do Metalab ou nos seguintes endereos:
ftp://metalab.unc.edu/pub/Linux/system/network/daemons

(Site Principal) Transfira a ltima verso do programa dhcpcd.tar.gz


ftp://ftp.phystech.com/pub/

36

Eletricazine

www.eletricazine.hpg.ig.com.br

Descompacte-a atravs do comando:


tar -zxvf dhcpcd-1.3.18pl1.tar.gz

v para o diretrio gerado e compile o dhcpcd, atravs dos seguintes comandos:


cd dhcpcd-1.3.18pl1 make

Instale-o, (voc deve ser o superusurio para fazer isso), atravs do comando:
make install

Este procedimento ir criar o diretrio /etc/dhcpc onde o DHCPcd ir armazenar as informaes DHCP e o arquivo dhcpcd ser copiado em /usr/sbin. Para que o sistema utilize o DHCP durante a inicializao, execute os seguintes comandos:
cd /etc/rc.d mv rc.inet1 rc.inet1.OLD

Isso mover o antigo script de inicializao da rede para rc.inet1.OLD. Agora ser necessrio criar o novo script rc.inet1. O cdigo a seguir tudo o que preciso:
#!/bin/sh # # rc.inet1

Este script inicializa o sistema INET bsico

HOSTNAME=`cat /etc/HOSTNAME` # este procedimento provavelmente no # necessrio, mas ser mantido mesmo assim # Anexar os dispositivos de rede locais /sbin/ifconfig lo 127.0.0.1 /sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo # Caso se tenha uma conexo Ethernet, as linhas a seguir devem ser # utilizadas para configurar a interface eth0. Caso se esteja usando a # interface local ou SLIP, no inclua o restante das linhas no arquivo. /usr/sbin/dhcpcd

Salve o programa e reinicialize o computador. Ao finalizar v para a seo 4.2.6.

4.2.3 Red Hat 6.x e Mandrake 6.x


A configurao do DHCPcd sobre estas distribuies de GNU/Linux muito fcil. Tudo o que se precisa fazer inicializar o Painel de Controle digitando:
control-panel

Depois disso, selecione "Configurao de Rede". Na interface Ethernet desejada (normalmente eth0) defina DHCP como o protocolo de configurao da interface. Os demais parmetros devem ser deixados em branco. 37

Eletricazine

www.eletricazine.hpg.ig.com.br

Ao finalizar v para a seo 4.2.6. Note que o RedHat 6.x por padro instala um cliente DHCP chamado pump no lugar do dhcpcd mencionado anteriormente. O CD-ROM inclui um pacote do dhcpcd, ento se no for possvel configurar o pump pode ser tentado o dhcpcd. Depois de instalar o dhcpcd (ex: rpm -i dhcpcd1.3.17pl2-1.i386.rpm), preciso fazer algumas alteraes.

4.2.4 Red Hat 5.x e Conectiva GNU/Linux 3.x


A configurao do DHCPcd sobre estas distribuies de GNU/Linux muito fcil. Tudo o que se precisa fazer inicializar o Painel de Controle digitando:
control-panel

Depois disso, selecione "Configurao de Rede". Na interface Ethernet desejada (normalmente eth0) defina DHCP como o protocolo de configurao da interface. Os demais parmetros devem ser deixados em branco. Ao finalizar v para a seo 4.2.6.

4.2.5 Debian
H um pacote Debian do DHCPcd em:
http://ftp.debian.org/debian/dists/slink/main/binary-i386/net/

Ou pode-se seguir as instrues de instalao do Slackware. Para desempacotar um pacote do tipo deb deve-se executar o seguinte comando:
dpkg -i /where/ever/your/debian/packages/are/dhcpcd*deb

Aparentemente no h necessidade de qualquer configurao para o DHCPcd conforme o descrito a seguir: De: Heiko Schlittermann (heiko@os.inf.tu-dresden.de) O pacote dhcpcd instala o script de inicializao usual para pacotes Debian em /etc/init.d/nome_pacote, neste caso como /etc/init.d/dhcpcd, e estabelece os links dos diversos diretrios /etc/rc?.d/. O contedo dos diretrios /etc/rc?.d/ ser ento executado durante a inicializao do sistema. Caso o sistema no seja reinicializado aps a instalao, o daemon deve se iniciado manualmente:
/etc/init.d/dhcpcd start

Ao finalizar v para a seo 4.2.6.

4.2.6 Executando o DHCPCD


Aps a reinicializao da mquina, a interface de rede deve ser configurada. Digite:
ifconfig

Deve-se obter algo como:


lo Link encap:Local Loopback inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0 UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1 RX packets:302 errors:0 dropped:0 overruns:0 frame:0

38

Eletricazine

www.eletricazine.hpg.ig.com.br

TX packets:302 errors:0 dropped:0 overruns:0 carrier:0 coll:0 eth0 Link encap:Ethernet HWaddr 00:20:AF:EE:05:45 inet addr:24.128.53.102 Bcast:24.128.53.255 Mask:255.255.254.0 ^^^^^^^^^^^^^^^^^^^^^^^ UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1 RX packets:24783 errors:1 dropped:1 overruns:0 frame:1 TX packets:11598 errors:0 dropped:0 overruns:0 carrier:0 coll:96 Interrupt:10 Base address:0x300

Caso se tenha algum nmero normal no campo inet addr, ento a mquina estar configurada. Caso se obtenha 0.0.0.0 no se desespere, trata-se de uma configurao temporria antes que o dhcpcd obtenha o endereo IP. Se mesmo depois de alguns minutos se visualizar somente o endereo 0.0.0.0, por favor verifique a seo 4.2.8. O DHCPcd um daemon que seguir rodando enquanto o computador estiver ligado. A cada trs horas ele ir contatar o servidor DHCP e tentar renovar a reserva do endereo IP. Todas as mensagens sero registradas no arquivo do syslog (no /var/adm/syslog, Slackware em RedHat/Conectiva/Debian em /var/log/syslog). Um detalhe final: necessrio especificar os servidores de nomes. H duas formas de faz-lo, pode-se solicitar ao provedor para informar os endereos do servidor de nomes e coloc-los em /etc/resolv.conf ou o DHCPcd obter uma lista do servidor DHCP e construir um resolv.conf em /etc/dhcpc. Decidi usar o resolv.conf gerados pelo DHCPcd da seguinte forma: Gere uma cpia de segurana do /etc/resolv.conf da seguinte forma:
mv /etc/resolv.conf /etc/resolv.conf.OLD

forma:

Caso o diretrio /etc/dhcpc no exista, ele deve ser criado da seguinte

mkdir /etc/dhcpc

Crie um link simblico de /etc/dhcpc/resolv.conf /etc/resolv.conf, atravs do seguinte comando:


ln -s /etc/dhcpc/resolv.conf /etc/resolv.conf

para

Caso isso no funcione, pode-se tentar o ajuste sugerido por com uma pequena correo por Henrik Stoerner. O ltimo passo foi executado somente porque meu dhcpcd no cria o arquivo /etc/dhcpc/resolv.conf. Efetuei as seguintes mudanas no arquivo /etc/sysconfig/network-scripts/ifup (que so mudanas feias, mas funcionam):
nothing@cc.gatech.edu, elif [ "$BOOTPROTO" = dhcp -a "$ISALIAS" = no ]; then echo -n "Usando DHCP para ${DEVICE}... " /sbin/dhcpcd -c /etc/sysconfig/network-scripts/ifdhcpc-done ${DEVICE} echo "echo \$$ > /var/run/dhcp-wait-${DEVICE}.pid; exec sleep 30" |sh if [ -f /var/run/dhcp-wait-${DEVICE}.pid ]; then echo "falhou." exit 1

39

Eletricazine Foi mudada para:

www.eletricazine.hpg.ig.com.br

elif [ "$BOOTPROTO" = dhcp -a "$ISALIAS" = no ]; then echo -n "Usando DHCP para ${DEVICE}... " /sbin/dhcpcd echo "echo \$$ > /var/run/dhcp-wait-${DEVICE}.pid; exec sleep 30" |sh if [ ! -f /var/run/dhcp-wait-${DEVICE}.pid ]; then ^^^^^^ echo "falhou." exit 1

Note o ! (ponto de exclamao) em if [ ! -f /var/run/dhcpwait-${DEVICE}.pid ]; Agora sente-se e aproveite. :-).

4.2.7 Inicializando e encerrando o dhcpcd


Caso se necessite de conectividade de rede somente ocasionalmente, pode-se inicializar o dhcpcd a partir da linha de comando (deve-se reinicializar para se executar este passo) com:
/usr/sbin/dhcpcd

Quando se quiser finalizar as funcionalidades de rede, digite:


/usr/sbin/dhcpcd -k

4.2.8 Soluo de Problemas


Caso se tenha seguido todos os passos descritos anteriormente e no foi possvel acessar a rede, h algumas causas provveis: 4.2.8.1 A placa de rede no est configurada adequadamente Durante o processo de inicializao o GNU/Linux ir tentar localizar a placa de rede e dever algo parecido com isso:
eth0: 3c509 at 0x300 tag 1, 10baseT port, address 00 20 af ee 11 11, IRQ 10. 3c509.c:1.07 6/15/95 becker@cesdis.gsfc.nasa.gov

Se uma mensagem como esta no aparecer, a placa Ethernet pode no ter sido reconhecida pelo Linux. Caso se utilize uma placa genrica (como um clone NE2000), procure por um disco com utilitrios DOS que possam ser usados para configurar a placa. Tente diferentes IRQs at que o GNU/Linux reconhea a placa (IRQs 9, 10, 12 so normalmente boas alternativas). 4.2.8.2 O servidor DHCP suporta RFC 1541/O servidor um Windows NT Tente executar o dhcpcd digitando:
dhcpcd -r

Use o comando ifconfig para verificar se a interface de rede est configurada (espere alguns segundos pelo processo de configurao, pois inicialmente o endereo apresentado ser inet.addr=0.0.0.0) Caso o problema seja resolvido desta forma, deve-se adicionar o indicador "-r" aos programas de inicializao, ou seja alm de usar o /sbin/dhcpcd deve-se comandar /sbin/dhcpcd -r

40

Eletricazine

www.eletricazine.hpg.ig.com.br

4.2.8.3 Durante a inicializao se obtm a mensagem "Usando DHCP para eth0 ... falhou" mas o sistema funciona perfeitamente. Aparentemente se est usando RedHat e as instrues no foram seguidas adequadamente :-). Voc est esquecendo do ponto de exclamao em um dos comandos, v at a seo 4.2.6 e verifique como corrigir o problema. 4.2.8.4 A rede funciona por alguns minutos e subitamente para de responder. H algumas notcias de que o programa gated (servidor de caminho padro) gera erros em mquinas GNU/Linux conforme o descrito acima. Verifique se o programa gated est sendo executado atravs do seguinte comando:
ps -auxww | grep gate

Caso ele esteja sendo executado, tente remov-lo com o gerenciador RPM ou removendo a entrada em /etc/rc.d/ 4.2.8.5 A placa Ethernet reconhecida durante a inicializao do sistema mas obtm-se a mensagem "NO DHCPOFFER" nos arquivos de registros de ocorrncias. Isso ocorre tambm com a placa PCMCIA. preciso ter certeza de que a porta 10BaseT (RJ45) da placa de rede est ativada. A melhor forma de verificar isso checar qual o conector que est configurado na inicializao, ou seja:
eth0: 3c509 at 0x300 tag 1, 10baseT port, address 00 20 af ee 11 11, IRQ 10. ^^^^^^^^^^^^ 3c509.c:1.07 6/15/95 becker@cesdis.gsfc.nasa.gov

Tenho recebido notcias de usurios de portteis que tm tido este tipo de problema com os utilitrios PCMCIA (especificamente o ifport) que deve ser configurado para um conector de tipo 10Base2 (thinnet). Deve-se ter certeza de estar usando o padro 10BaseT para a conexo. Caso no tenha, deve-se reconfigurar a placa e reinicializar o computador. 4.2.8.6 Meu cliente faz as requisies mas no recebe resposta (Contribuio de Peter Amstutz). Em alguns sistemas, necessrio incluir algum hostname para sua mquina como parte da requisio. Com o dhcpcd, use dhcpcd h algumhost. 4.2.8.7 Segui todos os passos mas ainda no consigo conectar a mquina rede. O modem a cabo normalmente ir guardar o endereo Ethernet da placa de rede, ento ao se mudar o computador ou se tentar utilizar uma outra placa, ser necessrio ensinar o modem a reconhecer o novo hardware. Normalmente basta desligar o modem e relig-lo enquanto o computador estiver ligado ou ento chamar o suporte tcnico e avis-lo de que a placa de rede foi alterada.

41

Eletricazine

www.eletricazine.hpg.ig.com.br

Existem regras de firewall (regras ipfwadm) que desabilita o trfego nas portas 67 e 68, usadas pelo DHCP para distribuir informaes de configurao. Verifique as regras do firewall cuidadosamente.

4.3 Configurao do Servidor DHCP


4.3.1 Servidor DHCP para UNIX
H diversos servidores DHCP disponveis para sistema do tipo Unix, comerciais ou de livre distribuio. Um dos mais populares servidores DHCP de livre distribuio o DHCPd de Paul Vixie/ISC. A verso atual 1.0 (sugerida por muitos usurios), mas a 2.0 encontra-se em estgio beta. Ela pode ser obtida em:
ftp://ftp.isc.org/isc/dhcp/

Descompacte-a, v at o diretrio da distribuio e digite:


./configure

Levar algum tempo para se configurar todos os parmetros. Aps isto estar finalizado, digite:
make

e
make install

4.3.2 Configurao de Rede


Ao finalizar a instalao digite ifconfig -a. Deve-se obter um resultado similar a:
eth0 Link encap:10Mbps Ethernet HWaddr 00:C0:4F:D3:C4:62 inet addr:183.217.19.43 Bcast:183.217.19.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2875542 errors:0 dropped:0 overruns:0 TX packets:218647 errors:0 dropped:0 overruns:0 Interrupt:11 Base address:0x210

Caso o parmetro MULTICAST no esteja presente, deve-se reconfigurar o kernel para sua adio. Em muitos sistemas isso no ser necessrio. O prximo passo ser adicionar a rota 255.255.255.255. Apresentamos um extrato retirado ao arquivo README do DHCPd: "Para que o dhcpd funcione perfeitamente, escolha alguns clientes DHCP (por exemplo Windows 9x), que sejam capazes de enviar pacotes com um endereo IP de destino 255.255.255.255. Infelizmente o GNU/Linux teima em mudar 255.255.255.255 no endereo de divulgao da subrede local (neste caso 192.5.5.223). Isso cria uma violao do protocolo DHCP e enquanto muitos clientes DHCP no avisam do problema, outros (como os clientes DHCP Microsoft) o fazem. Clientes com este tipo de problema no visualizam a mensagem DHCPOFFER enviada pelo servidor." Digite:
route add -host 255.255.255.255 dev eth0

caso se obtenha a mensagem


"255.255.255.255: mquina desconhecida"

42

Eletricazine

www.eletricazine.hpg.ig.com.br

deve-se tentar adicionar a seguinte entrada ao arquivo /etc/hosts:


255.255.255.255 all-ones

tente ento:
route add -host all-ones dev eth0

ou
route add -net 255.255.255.0 dev eth0

eth0 obviamente o nome do dispositivo de rede que est sendo usado. Caso seja diferente, faa as devidas alteraes.

4.3.3 Opes do DHCPd


Agora necessrio configurar o DHCPd. Para se fazer isso deve-se criar ou editar o arquivo /etc/dhcpd.conf. Comumente se deseja definir endereos IP de forma aleatria. Isso pode ser feito da seguinte forma:
default-lease-time 600; max-lease-time 7200; option subnet-mask 255.255.255.0; option broadcast-address 192.168.1.255; option routers 192.168.1.254; option domain-name-servers 192.168.1.1, 192.168.1.2; option domain-name "dominio.org.br"; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.10 192.168.1.100; range 192.168.1.150 192.168.1.200; }

Isso far com que o servidor DHCP fornea ao cliente um endereo IP na faixa 192.168.1.10-192.168.1.100 ou 192.168.1.150-192.168.1.200. Ele liberar um endereo por 600 segundos caso o cliente no defina um tempo especfico de utilizao de endereo. De qualquer forma o tempo mximo permitido ser de 7.2 segundos. O servidor ir "avisar" ao cliente que ele pode usar 255.255.255.0 como mscara de subrede, 192.168.1.255 como endereo de distribuio, 192.168.1.254 como roteador ou caminho padro, 192.168.1.1 e 192.168.1.2 como servidores DNS. Pode-se ainda definir endereos IP especficos baseados nos endereos Ethernet dos clientes, como por exemplo:
host conec { hardware ethernet 08:00:2b:4c:59:23; fixed-address 192.168.1.222; }

Este procedimento ir definir o endereo 192.168.1.222 para o cliente com endereo Ethernet igual a 08:00:2b:4c:59:23. Pode-se misturar os procedimentos, definindo-se certos clientes com endereos IP estticos (por exemplo servidores) e outros com endereos dinmicos (como por exemplo portteis). H diversas opes como: endereos de servidores Windows, servidores de data e horrio, etc... Caso se necessite alguma destas opes por favor verifique a pgina de manual on line do dhcpd.conf. 43

Eletricazine

www.eletricazine.hpg.ig.com.br

4.3.4 Inicializando o Servidor


Podemos agora acionar o servidor DHCP. Basta simplesmente digitar ou incluir nos programas de inicializao do sistema:
/usr/sbin/dhcpd

Caso se deseje verificar se tudo est funcionando perfeitamente, devese acionar inicialmente o modo de depurao e colocar o servidor em primeiro plano. Isso pode ser feito atravs do comando:
/usr/sbin/dhcpd -d -f

Inicialize algum dos clientes e verifique a console do servidor. Devero ser apresentadas diversas mensagens de depurao.

Exerccios
1. Qual a utilidade de um servidor DHCP?

2. Quais os clientes DHCP mais utilizados no GNU/Linux?

44

Eletricazine

www.eletricazine.hpg.ig.com.br

5 COMANDOS DE REDE
Adaptado do Guia Foca GNU/Linux Intermedirio Captulo 11. Este captulo traz alguns comandos teis para uso em rede e ambientes multiusurio.

5.1 O comando who


Mostra quem est atualmente conectado no computador. Este comando lista os nomes de usurios que esto conectados em seu computador, o terminal e data da conexo.
who [opes]

onde: opes
-H, --heading

Mostra o cabealho das colunas.


-i, -u, --idle

Mostra o tempo que o usurio est parado em Horas:Minutos.


-m, i am

Mostra o nome do computador e usurio associado ao nome. equivalente a digitar who i am ou who am i.
-q, --count

Mostra o total de usurios conectados aos terminais.


-T, -w, --mesg

Mostra se o usurio pode receber mensagens via talk (conversao). + O usurio recebe mensagens via talk - O usurio no recebe mensagens via talk. ? No foi possvel determinar o dispositivo de terminal onde o usurio est conectado.

5.2 O comando telnet


Permite acesso a um computador remoto. mostrada uma tela de acesso correspondente ao computador local onde deve ser feita a autenticao do usurio para entrar no sistema. Muito til, mas deve ser tomado cuidados ao disponibilizar este servio para evitar riscos de segurana.
telnet [opes] [ip/dns] [porta]

23.

onde: ip/dns Endereo IP do computador de destino ou nome DNS. porta Porta onde ser feita a conexo. Por padro, a conexo feita na porta

45

Eletricazine opes
-8

www.eletricazine.hpg.ig.com.br

Requisita uma operao binria de 8 bits. Isto fora a operao em modo binrio para envio e recebimento. Por padro, telnet no usa 8 bits.
-a

Tenta um login automtico, enviando o nome do usurio lido da varivel de ambiente USER.
-d

Ativa o modo de debug.


-r

Ativa a emulao de rlogin.


-l [usurio]

Faz a conexo usando [usurio] como nome de usurio. Exemplo: telnet 192.168.1.1, telnet 192.168.1.1 23.

5.3 O comando finger


Mostra detalhes sobre os usurios de um sistema. Algumas verses do finger possuem bugs e podem significar um risco para a segurana do sistema. recomendado desativar este servio na mquina local.
finger [usurio] [usurio@host]

Onde: usurio Nome do usurio que deseja obter detalhes do sistema. Se no for digitado o nome de usurio, o sistema mostra detalhes de todos os usurios conectados no momento.
usurio@host

Nome do usurio e endereo do computador que deseja obter detalhes.


-l

Mostra os detalhes de todos os usurios conectados no momento. Entre os detalhes, esto includos o nome do interpretador de comandos (shell) do usurio, diretrio home, nome do usurio, endereo, etc.
-p

No exibe o contedo dos arquivos .plan e .project Se for usado sem parmetros, mostra os dados de todos os usurios conectados atualmente ao seu sistema. Exemplo: finger, finger root.

5.4 O comando ftp


Permite a transferncia de arquivos do computador remoto/local e vice versa. O file transfer protocol o sistema de transmisso de arquivos mais usado na Internet. requerida a autenticao do usurio para que seja permitida a conexo. Muitos servidores ftp disponibilizam acesso annimo aos usurios, com acesso restrito. Uma vez conectado a um servidor ftp, voc pode usar a maioria dos comandos do GNU/Linux para oper-lo.
ftp [ip/dns]

46

Eletricazine

www.eletricazine.hpg.ig.com.br

Abaixo alguns dos comandos mais usados no FTP:


ls

Lista arquivos do diretrio atual.


cd [diretrio]

Entra em um diretrio.
get [arquivo]

Copia um arquivo do servidor ftp para o computador local. O arquivo gravado, por padro, no diretrio onde o program ftp foi executado.
hash [on/off]

Por padro esta opo est desligada. Quando ligada, faz com que o caracter "#" seja impresso na tela indicando o progresso do download.
mget [arquivos]

Semelhante ao get, mas pode copiar diversos arquivos e permite o uso de curingas.
send [arquivo]

Envia um arquivo para o diretrio atual do servidor FTP (voc precisa de uma conta com acesso a gravao para fazer isto).
prompt [on/off]

Ativa ou desativa a pergunta para a cpia de arquivo. Se estiver como off assume sim para qualquer pergunta. Exemplo: ftp ftp.br.debian.org

5.5 O comando whoami


Mostra o nome que usou para se conectar ao sistema. til quando voc usa vrias contas e no sabe com qual nome entrou no sistema :-)

5.6 O comando dnsdomainname


Mostra o nome do domnio de seu sistema.

5.7 O comando hostname


Mostra ou muda o nome de seu computador na rede.

5.8 O comando talk


Inicia conversa com outro usurio em uma rede local ou Internet. Talk um programa de conversao em tempo real onde uma pessoa v o que a outra escreve.
talk [usurio] [tty]

ou
talk [usurio@host]

Onde: usurio Nome de login do usurio que deseja iniciar a conversao. Este nome pode ser obtido com o comando who (veja who, Seo 9.1). tty

47

Eletricazine

www.eletricazine.hpg.ig.com.br

O nome de terminal onde o usurio est conectado, para iniciar uma conexo local. usurio@host Se o usurio que deseja conversar estiver conectado em um computador remoto, voc deve usar o nome do usurio@hosname do computador. Aps o talk ser iniciado, ele verificar se o usurio pode receber mensagens, em caso positivo, ele enviar uma mensagem ao usurio dizendo como responder ao seu pedido de conversa. Veja em 5.1 O comando who. Voc deve autorizar o recebimento de talks de outros usurios para que eles possam se comunicar com voc , para detalhes veja o comando O comando mesg a seguir.

5.9 O comando mesg


Permite ou no o recebimentos de requisies de talk de outros usurios.
mesg [y/n]

Onde: y permite que voc receba "talks" de outros usurios. Digite mesg para saber se voc pode ou no receber "talks" de outros usurios. Caso a resposta seja "n" voc poder enviar um talk para algum mas o seu sistema se recusar em receber talks de outras pessoas. interessante colocar o comando mesg y em seu arquivo de inicializao .bash_profile para permitir o recebimento de "talks" toda vez que entrar no sistema.

5.10 O comando ping


Verifica se um computador est disponvel na rede. Este comando muito utilizado por alguns programas de conexo e administradores para verificar se uma determinada mquina est conectada na rede e tambm para verificar o tempo de resposta de cada mquina da rede. O ping envia pacotes ICMS ECHO_REQUEST para um computador, este quando recebe o pacote envia uma resposta ao endereo de origem avisando que est disponvel na rede.
ping [opes][IP/DNS]

onde: IP/dns Endereo IP ou nome DNS do endereo. opes -c [num] Envia num pacotes ao computador de destino. -f Flood ping. Envia novos pacotes antes de receber a resposta do pacote anterior. Para cada requisio enviada, um "." mostrado na tela e para cada resposta recebida, um backspace mostrado. Somente o usurio root pode utilizar esta opo e pode te auxiliar muito na deteco de erros de transmisso de pacotes em interfaces das mquinas em sua rede. 48

Eletricazine -i [seg]

www.eletricazine.hpg.ig.com.br

Aguarda [seg] segundos antes de enviar cada pacote. -q No mostra as requisies enquanto so enviadas, somente mostra as linhas de sumrio no inicio e trmino do programa. -s [tamanho] Especifica o tamanho do pacote que ser enviado. -v, --verbose Sada detalhada, tanto os pacotes enviados como recebidos so listados. Exemplo: ping 192.168.1.1, ping www.br.debian.org.

5.11 O comando rlogin


Executa um login em uma mquina local ou remota.
rlogin [opes] [IP/DNS]

onde: IP/DNS Endereo IP ou DNS do computador que ser acessado. opes


-l [nome]

Entra com o user id [nome] no sistema. rlogin usado para executar comandos interativamente no computador de destino (como se voc estivesse sentado diante dele, muito semelhante ao telnet). Para executar comandos no interativamente veja rsh, Seo 11.11.

5.12 O comando rsh


Executa um comando em um computador local ou remoto. rsh [opes] [IP/DNS] [comando] Onde: IP/DNS Endereo IP ou nome DNS do computador. comando Comando que ser executado no computador local/remoto. opes -l [nome] Entra no sistema usando o login [nome]. rsh usado somente para executar comandos. Para usar um shell interativo veja Erro! A origem da referncia no foi encontrada. e O comando rlogin.

5.13 O comando w
Mostra quem est conectado no sistema e o que cada um est fazendo.
w [opes][usurio]

49

Eletricazine

www.eletricazine.hpg.ig.com.br

onde: usurio Nome do usurio que deseja ver os detalhes. Se o usurio no for digitado, o comando w mostra detalhes de todos os usurios conectados no sistema. opes
-h

No mostra o cabealho
-u

Ignora os nomes de usurios enquanto verifica os processo atuais e tempos de CPU.


-f

Mostra ou oculta o campo FROM na listagem.

5.14 O comando traceroute


Mostra o caminho percorrido por um pacote para chegar ao seu destino. Este comando mostra na tela o caminho percorrido entre os Gateways da rede e o tempo gasto de retransmisso. Este comando til para encontrar computadores defeituosos na rede caso o pacote no esteja chegando ao seu destino.
traceroute [opes] [host/IP de destino]

Onde: host/IP destino o endereo para onde o pacote ser enviado (por exemplo, www.debian.org). Caso o tamanho do pacote no seja especificado, enviado um pacote de 38 bytes. opes
-l

Mostra o tempo de vida do pacote (ttl)


-m [num]

Ajusta a quantidade mximas de ttl dos pacotes. O padro 30.


-n

Mostra os endereos numericamente ao invs de usar resoluo DNS.


-p [porta]

Ajusta a porta que ser usada para o teste. A porta padro 33434.
-r

Pula as tabelas de roteamento e envia o pacote diretamente ao computador conectado a rede.


-s [end]

Usa o endereo IP/DNS [end] como endereo de origem para computadores com mltiplos endereos IPs ou nomes.
-v

Mostra mais detalhes sobre o resultado do traceroute.


-w [num]

50

Eletricazine

www.eletricazine.hpg.ig.com.br

Configura o tempo mximo que aguardar por uma resposta. O padro 3 segundos. Exemplos: traceroute www.debian.org, traceroute www.linux.org.

5.15 O comando netstat


Mostra conexes de rede, tabela de roteamento, estatsticas de interfaces, conexes masquerade, e mensagens.
netstat [opes]

Onde: opes
-i [interface]

Mostra estatsticas da interface [interface].


-M, --masquerade

Se especificado, tambm lista conexes masquerade.


-n, --numeric

Usa endereos numricos ao invs de tentar resolver nomes de hosts, usurios e portas.
-c, --continuos

Mostra a listagem a cada segundo at que a CTRL+C seja pressionado. Se no for especificada nenhuma opo, os detalhes das conexes atuais sero mostrados.

5.16 O comando wall


Envia uma mensagem a todos os usurios do sistema. Este comando faz a leitura de um arquivo ou entrada padro e escreve o resultado em todos os terminais onde existem usurios conectados. Somente o usurio root pode utilizar este comando.
wall [arquivo]

Exemplos: wall /tmp/mensagem.txt, echo Teste de mensagem enviada a todos os usurios conectados ao sistema wall.

51

Eletricazine

www.eletricazine.hpg.ig.com.br

6 O SSH
Adaptado do Guia Foca GNU/Linux Intermedirio Captulo 14. O servio de ssh permite fazer o acesso remoto ao console de sua mquina, em outras palavras, voc poder acessar sua mquina como se estivesse conectado localmente ao seu console (substituindo o rlogin e rsh). A principal diferena com relao ao servio telnet padro, rlogin e rsh que toda a comunicao entre cliente/servidor feita de forma encriptada usando chaves pblicas/privadas RSA para criptografia garantindo uma transferncia segura de dados. A velocidade do console remoto conectado via Internet excelente (melhor que a obtida pelo telnet e servios r*) dando a impresso de uma conexo em tempo real (mesmo em links discados de 9.600 KB/s), a compactao dos dados tambm pode ser ativada para elevar ainda mais a velocidade entre cliente-servidor ssh. Alm do servio de acesso remoto, o scp possibilita a transferncia/recepo segura de arquivos (substituindo o rcp). Em conexes sem criptografia (rsh, rlogin) os dados trafegam de forma desprotegida e caso exista algum sniffer instalado em sua rota com a mquina destino, todo o que fizer poder ser capturado (incluindo senhas).

6.1 Verso
assumido que esteja usando a verso 2.0 do ssh. As explicaes contidas aqui podem funcionar para verses posteriores, mas recomendvel que leia a documentao sobre modificaes no programa (changelog) em busca de mudanas que alterem o sentido das explicaes fornecidas aqui.

6.2 Histria
O openSSH (explicado neste captulo) baseado na ltima verso livre do implementao de Tatu Ylonen com todos os algoritmos patenteados (para bibliotecas externas) removidos, todos as falhas de segurana corrigidas, novas caractersticas e muitas outras melhorias. O openSSH foi criado por Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo de Raadt e Dug Song.

6.3 Contribuindo
OpenSSH Falhas, correes e sugestes podem ser enviadas para a lista de discusso openssh-unixdev@mindrot.org (aberta a postagens de usurios no inscritos).
http://www.unixuser.org/~haruyama/security/openssh/index.html.

Homepage

principal

do

6.4 Caractersticas
Abaixo as principais caractersticas do servio ssh (Openssh). Conexo de dados criptografada entre cliente/servidor. Cpia de arquivos usando conexo criptografada. 52

Eletricazine

www.eletricazine.hpg.ig.com.br

Suporte a ftp criptografado (sftp). Suporte a compactao de dados entre cliente/servidor. Controle de acesso das interfaces servidas pelo servidor ssh. Suporte a controle de acesso tcp wrappers. Autenticao usando um par de chaves pblica/privada RSA ou DSA. Algoritmo de criptografia livre de patentes. Suporte a PAM. Suporte a caracteres ANSI (cores e cdigos de escape especiais no console).

6.5 Ficha tcnica


Pacote: ssh Utilitrios: ssh - Cliente ssh (console remoto). slogin - Link simblico para o programa ssh. sshd - Servidor de shell seguro ssh. scp - Programa para transferncia de arquivos entre cliente/servidor ssh-keygen - Gera chaves de autenticao para o ssh sftp - Cliente ftp com suporte a comunicao segura. sftp-server - Servidor ftp com suporte a comunicao segura. ssh-add - Adiciona chaves de autenticao DSA ou RSA ao programa de autenticao. ssh-agent - Agente de autenticao, sua funo armazenar a chave privada para autenticao via chave pblica (DSA ou RSA). ssh-keyscan - Scaneia por chaves pblicas de autenticao de hosts especificados. O principal objetivo ajudar na construo do arquivo local know_hosts. ssh-copy-id - Usado para instalao do arquivo identity.pub em uma mquina remota. Arquivos de configurao: /etc/ssh/sshd_config - Arquivo de configurao do servidor ssh. /etc/ssh/ssh_config - Arquivo de configurao do cliente ssh. ~/.ssh/config - Arquivo de configurao pessoal do cliente ssh.

6.6 Servidor ssh


6.6.1 Requerimentos de Hardware
recomendado no mnimo 6MB de memria RAM para a execuo do servio ssh mais o kernel do Linux. Este limite deve ser redimensionado para servidores de acesso dedicado, uma quantidade de 64MB deve ser confortvel para centenas de usurios conectados simultaneamente (o que raramente acontece).

53

Eletricazine

www.eletricazine.hpg.ig.com.br

O ssh que acompanha a distribuio Debian vem com o suporte a tcp wrappers compilado por padro.

6.6.2 Arquivos de log criados pelo servidor ssh


Detalhes sobre a execuo do servidor sshd (como inicio, autenticao e trmino) so enviadas ao syslog do sistema. A prioridade e nvel so definidos no arquivo de configurao /etc/ssh/sshd_config (veja 6.8.5 Exemplo de sshd_config com explicaes das diretivas).

6.6.3 Instalao do servidor openSSH


apt-get install ssh

Por padro o servidor sshd instalado como daemon, tambm possvel executa-lo via inetd mas isto no aconselhvel porque o servidor gera uma chave aleatria de seo toda vez que iniciado, isto podendo levar vrios segundos (quando usada a verso 1 do protocolo ssh, veja 6.8.4 Diferenas nas verses do protocolo).

6.6.4 Iniciando o servidor/reiniciando/recarregando a configurao


O arquivo que controla o funcionamento do daemon do ssh controlado pelo arquivo /etc/init.d/ssh. A execuo do ssh atravs de inetd automtica quando feita uma requisio para a porta 22.

6.6.5 Opes de linha de comando


Opes de linha de comando do servidor sshd: -b bits - Especifica o nmero de bits da chave do servidor (768 por padro). -d - Modo de depurao - O servidor envia detalhes sobre seu funcionamento aos logs do sistema e no executado em segundo plano. Ele tambm responder conexes pelo mesmo processo. Podem ser usadas no mximo 3 opes -d para aumentar os detalhes de depurao. -f arquivo_configurao Indica um arquivo de configurao alternativo (por padro usado /etc/ssh/sshd_config). O ssh pode ser configurado atravs de opes de linha de comando, mas requer um arquivo de configurao para ser executado. Opes de linha de comando substituem as especificadas no arquivo de configurao. -g segundos - Especifica o tempo mximo para a digitao de senha de acesso. Aps o tempo especificado o servidor encerra a conexo. O valor padro 600 segundos e 0 desativa este recurso. -h arquivo_chave - Diz qual arquivo contm a chave privada local. O padro /etc/ssh/ssh_host_key e somente o usurio root deve ter permisses de leitura neste arquivo. Ser necessrio especificar esta opo caso o sshd no esteja sendo executado como usurio root.

54

Eletricazine

www.eletricazine.hpg.ig.com.br

ssh.

possvel ter mltiplos arquivos de chaves para os protocolos 1 e 2 do

-i - Indica que o servidor sshd ser executado pelo inetd. Isto no aconselhvel porque o servidor gerar a chave aleatria de seo toda vez que for iniciado e isto pode levar alguns segundos. Esta opo pode se tornar vivel com o uso do protocolo 2 ou criando chaves pequenas como 512 bytes (no ssh 1), mas a segurana criptogrfica tambm ser diminuda. Veja as diferenas entre os dois protocolos em 6.8.4 Diferenas nas verses do protocolo. -k segundos - Especifica a freqncia da gerao de novas chaves do daemon sshd. O valor padro 3600 segundos e 0 desativa este recurso. ATENO: NO desative este recurso!!! Esta opo traz a segurana que uma nova chave gerada de servidor ser gerada constantemente (esta chave enviada junto com a chave pblica quando o cliente conecta e fica residente na memria voltil), assim mesmo que um cracker consiga obt-la interceptando as conexes, ser praticamente impossvel tentar qualquer coisa. Valores menores tendem a aumentar ainda mais a segurana. -p porta - Especifica a porta que o daemon sshd atender as requisies. Por padro usada a porta 22. -q - Nenhuma mensagem ser enviada ao syslog do sistema. -u tam - Especifica o tamanho do campo de nome do computador que ser armazenado no arquivo utmp. A opo u0 faz somente endereos IP serem gravados. -D - Quando usada no faz o sshd iniciar em segundo plano. -V verso_cliente - Assume que o cliente possui a verso ssh especificada (1 ou 2) e no faz os testes de identificao de protocolo. -4 - Fora o uso do protocolo IP tradicional (IPv4). -6 - Fora o uso da nova gerao do protocolo IP (IPv6). A maioria das opes so realmente teis para modificar o comportamento do servidor ssh sem mexer em seu arquivo de configurao (para fins de testes) ou para executar um servidor ssh pessoal, que dever ter arquivos de configurao especficos.

6.7 Cliente ssh


Esta a ferramenta usada para sees de console remotos. O arquivo de configurao de usurios ~/.ssh/config, e o arquivo global /etc/ssh/ssh_config. Para conectar a um servidor ssh remoto:
ssh ip/nome_do_servidor_ssh

O uso da opo -C recomendado para ativar o modo de compactao dos dados (til em conexes lentas). A opo -l usurio pode ser usada para alterar a identificao de usurio (quando no usada, o login local usado como nome de usurio remoto). Uma porta alternativa pode ser especificada usando a opo -p porta (a 22 usada por padro).

55

Eletricazine

www.eletricazine.hpg.ig.com.br

Na primeira conexo, a chave pblica do servidor remoto ser gravada em ~/.ssh/know_hosts ou ~/.ssh/know_hosts2 (dependendo da verso do servidor ssh remoto, veja 6.8.4 Diferenas nas verses do protocolo), e verificada a cada conexo como checagem de segurana para se certificar que o servidor no foi alvo de qualquer ataque ou modificao no autorizada das chaves. Por padro, o cliente utilizar o protocolo ssh verso 1, a opo -2 permite usar o protocolo verso 2. Variveis de ambiente personalizadas para o ssh podero ser definidas no arquivo ~/.ssh/environment. Comandos que sero executados somente na conexo ssh em ~/.ssh/rc e /etc/ssh/sshrc caso contrrio ser executado o xauth por padro. OBS: Para utilizar autenticao Rhosts/Rhosts+RSA (arquivos ~/.rhosts/~/.shosts) o programa ssh dever ter permisses SUID root e conectar usando portas baixas (menores que 1024).
Exemplos: # Conecta-se ao servidor remoto usando o login do usurio atual ssh ftp.sshserver.org # Conecta-se ao servidor remoto usando o login john (via ssh verso 2) ssh -2 ftp.sshserver.org -l john # Conecta-se ao servidor remoto usando compactao e o login john ssh ftp.sshserver.org -C -l john # Conecta-se ao servidor remoto usando compactao, o login john, # ativa o redirecionamento do agente de autenticao (-A) e redirecionamento # de conexes X11 (-X). Veja a prxima seo para entender como o # suporte a redirecionamento de conexes do X funciona. ssh ftp.sshserver.org -C -A -X -l john

6.7.1 Redirecionamento de conexes do X


O redirecionamento de conexes do X Window poder ser habilitado em ~/.ssh/config ou /etc/ssh/ssh_config ou usando as opes -A -X na linha de comando do ssh (as opes -a e -x desativam as opes acima respectivamente). Uma varivel $DISPLAY criada automaticamente para fazer o redirecionamento ao servidor X local. Ao executar um aplicativo remoto, a conexo redirecionada a um DISPLAY proxy criado pelo ssh (a partir de :10, por padro) que faz a conexo com o display real do X (:0), ou seja, ele pular os mtodos de autenticao xhost e cookies. Por medidas de segurana recomendvel habilitar o redirecionamento individualmente somente se voc confia no administrador do sistema remoto.
# Exemplo de configurao do ssh_config # Permite Redirecionamento de conexes para o prprio computador (nomes de # mquinas podem ser especificadas). Host 127.0.0.1 ForwardAgent yes ForwardX11 yes

56

Eletricazine

www.eletricazine.hpg.ig.com.br

# Opes especficas do cliente para conexes realizadas a 192.168.1.4 usando # somente o protocolo 2 Host 192.168.1.4 # As 2 linhas abaixo ativam o redirecionamento de conexes do X ForwardAgent yes ForwardX11 yes PasswordAuthentication yes Port 22 Protocol 2 Cipher blowfish # Opes especficas do cliente para conexes realizadas a 192.168.1.5 usando # somente o protocolo 1 Host 192.168.1.5 # As 2 linhas abaixo desativam o redirecionamento de conexes do X ForwardAgent no ForwardX11 no PasswordAuthentication yes Port 22 Protocol 1 Cipher blowfish # # # # # # # # # # # # # CheckHostIP yes RhostsAuthentication no RhostsRSAAuthentication yes RSAAuthentication yes FallBackToRsh no UseRsh no BatchMode no StrictHostKeyChecking yes IdentityFile ~/.ssh/identity IdentityFile ~/.ssh/id_dsa IdentityFile ~/.ssh/id_rsa1 IdentityFile ~/.ssh/id_rsa2 EscapeChar ~

6.7.2 scp
Permite a cpia de arquivos entre o cliente/servidor ssh. A sintaxe usada por este comando a seguinte: scp [origem] [destino] Os parmetros de origem e destino so semelhantes ao do comando cp mas possui um formato especial quando especificado uma mquina remota: Um caminho padro - Quando for especificado um arquivo local. Por exemplo: /usr/src/arquivo.tar.gz.

57

Eletricazine

www.eletricazine.hpg.ig.com.br

usuario@host_remoto:/diretrio/arquivo - Quando desejar copiar o arquivo de/para um servidor remoto usando sua conta de usurio. Por exemplo: gleydson@ftp.debian.org:~/arqs. A opo -C recomendvel para aumentar a taxa de transferncia de dados usando compactao. Caso a porta remota do servidor sshd seja diferente de 22, a opo -P porta dever ser especificada ( "P" maiscula mesmo, pois a -p usada para preservar permisses/data/horas dos arquivos transferidos).
Exemplos: # Para copiar um arquivo local chamado /pub/teste/script.sh para # meu diretrio pessoal em ftp.sshserver.org scp -C /pub/teste/script.sh gleydson@ftp.sshserver.org:~/ # Para fazer a operao inversa a acima (copiando do servidor remoto para o local) # s inverter os parmetros origem/destino: scp -C gleydson@ftp.sshserver.org:~/script.sh /pub/teste # Para copiar o arquivo local chamado /pub/teste/script.sh para # o diretrio /scripts dentro do meu diretrio pessoal em ftp.sshserver.org # com o nome teste.sh scp -C /pub/teste/script.sh gleydson@ftp.sshserver.org:~/scripts/teste.sh # O exemplo abaixo faz a transferncia de arquivos entre 2 computadores remotos: # O arquivo teste.sh lido do servidor server1.ssh.org e copiado para # server2.ssh.org (ambos usando o login gleydson) scp -C gleydson@server1.ssh.org:~/teste.sh gleydson@server2.ssh.org:~/

6.7.3 sftp
Permite realizar transferncia de arquivos seguras atravs do protocolo ssh. A conexo e transferncias so realizadas atravs da porta 22 (ainda no possvel modificar a porta padro). A sintaxe para uso deste comando a seguinte: sftp usuario@host_remoto Compactao pode ser especificada atravs da opo -C. Um arquivo contendo os comandos usados na seo sftp poder se especificado atravs da opo -b arquivo para automatizar tarefas. OBS1: Para desativar o servidor sftp, remova a linha SubSystem sftp /usr/lib/sftp-server (que inicializa o sub-sistema ftp) do arquivo /etc/ssh/sshd_config e reinicie o servidor sshd. OBS2: O suporte ao programa sftp somente est disponvel ao protocolo ssh verso 2 e superiores. OBS3: Algumas opes comuns do cliente ftp padro (como mget) ainda no esto disponveis ao sftp. Veja a pgina de manual para detalhe sobre as opes disponveis.

58

Eletricazine

www.eletricazine.hpg.ig.com.br

6.8 14.3 Servidor ssh


6.8.1 sshd
Este o daemon de controle da conexo encriptada via protocolo ssh, transferncia de arquivos e shell interativo. As opes de linha de comando esto disponveis em 6.6.5 Opes de linha de comando. Seu arquivo de configurao principal /etc/ssh/sshd_config, um exemplo e descrio das opes deste arquivo encontrada em 6.8.5 Exemplo de sshd_config com explicaes das diretivas. OBS1: recomendvel que o arquivo /etc/ssh/sshd_config seja lido somente pelo dono/grupo, por conter detalhes de acesso de usurios, grupos e intervalo entre a gerao de chave de seo. OBS2: Se estiver ocorrendo falhas no acesso ao servidor ssh, verifique as permisses nos arquivos /etc/hosts.allow e /etc/hosts.deny (o nome do servio sshd). Mesmo operando como daemon, o servidor utiliza estes arquivos para fazer um controle de acesso adicional.

6.8.2 Controle de acesso


definido pelas opes ListenAddress, AllowUsers, DenyUsers, AllowGroups, DenyGroups e PermitRootLogin do arquivo de configurao sshd_config (veja 6.8.5 Exemplo de sshd_config com explicaes das diretivas) e via tcpd (arquivos hosts.allow e hosts.deny).

6.8.3 Usando autenticao RSA - chave pblica/privada


Este mtodo de autenticao permite a criao de um par de chaves: uma pblica (que ser distribudo nas mquinas que voc conecta) e outra privada (que ficar em seu diretrio pessoal). A encriptao e decriptao so feitas usando chaves separadas e no possvel conseguir a chave de decriptao usando a chave de encriptao. possvel inclusive gerar uma chave sem senha para entrar diretamente em um sistema remoto (este esquema um pouco mais seguro que os arquivos ~/.rhosts e ~/.shosts), mas dever ser levado em considerao a possibilidade de acesso fsico ao seu diretrio pessoal, qualquer um que tenha posse de sua chave privada poder ter acesso ao sistema remoto. Siga os seguintes passos para se autenticar usando RSA 1 - usada na verso 1 do ssh: 1. Gere um par de chaves pblica/privada usando o comando:
ssh-keygen

Um par de chaves RSA verso 1 ser gerado com o tamanho de 1024 bits por padro que garante uma boa segurana/velocidade e salvas no diretrio ~/.ssh com o nome identity e identity.pub. Para alterar o tamanho da chave use a opo -b tamanho. Depois de gerar a chave, o ssh-keygen pedir uma frase-senha ( recomendvel ter um tamanho maior que 10 caracteres e podem ser includos espaos). Se no quiser digitar uma senha para acesso

59

Eletricazine

www.eletricazine.hpg.ig.com.br

ao sistema remoto, tecle <Enter> quando perguntado. Mude as permisses do diretrio ~/.ssh para 750. A opo -f especifica o diretrio e nome das chaves. A chave pblica ter a extenso .pub adicionada ao nome especificado. ATENO Nunca distribua sua chave privada, nem armazene-a em servidores de acesso pblicos ou outros mtodos que permitem outros terem acesso a ela. Se precisar de uma cpia de segurana, faa em disquetes e guarde-a em um lugar seguro. 2. Instale a chave pblica no servidor remoto que deseja se conectar, por exemplo, www.sshserver.org:
ssh-copy-id -i ~/.ssh/identity gleydson@www.sshserver.org

A funo do utilitrio acima entrar no sistema remoto e adicionar a chave pblica local ~/.ssh/identity.pub no arquivo /home/gleydson/.ssh/authorized_keys do sistema remoto www.sshserver.org. O mesmo processo poder ser feito manualmente usando os mtodos tradicionais (ssh/scp). Caso o arquivo remoto /home/gleydson/.ssh/authorized_keys no existe, ele ser criado. Seu formato idntico ao ~/.ssh/know_hosts e contm uma chave pblica por linha. 3. Agora utilize o ssh para entrar no sistema remoto usando o mtodo de chave pblica/privada. Entre com a senha que usou para gerar o par de chaves pblico/privado (ele entrar diretamente caso no tenha digitado uma senha). Para autenticar em uma verso 2 do ssh (usando chave RSA 2 ou DSA): 1. Gere um par de chaves pblica/privada usando o comando:
ssh-keygen -t rsa -f ~/.ssh/id_rsa

ou
ssh-keygen -t dsa -f ~/.ssh/id_rsa

Um par de chaves RSA 2/DSA ser gerado. Para alterar o tamanho da chave use a opo -b tamanho. Depois de gerar a chave, o ssh-keygen pedir uma frase-senha ( recomendvel ter um tamanho maior que 10 caracteres e podem ser includos espaos). Se no quiser digitar uma senha para acesso ao sistema remoto, tecle <Enter> quando perguntado. Mude as permisses do diretrio ~/.ssh para 750. ATENO Nunca distribua sua chave privada, nem armazene-a em servidores de acesso pblicos ou outros mtodos que permitem outros terem acesso a ela. Se precisar de uma cpia de segurana, faa em disquetes e guarde-a em um lugar seguro. 2. Instale a chave pblica no servidor remoto que deseja se conectar copiando o arquivo com: 60

Eletricazine

www.eletricazine.hpg.ig.com.br

scp ~/.ssh/id_rsa.pub usuario@servidorremoto:~/.ssh/authorized_keys2

Caso o arquivo remoto /home/gleydson/.ssh/authorized_keys2 no existe, ele ser criado. Seu formato idntico ao ~/.ssh/know_hosts2 e contm uma chave pblica por linha. 3. Agora utilize o ssh para entrar no sistema remoto usando o mtodo de chave pblica/privada. Entre com a senha que usou para gerar o par de chaves pblico/privado (ele entrar diretamente caso no tenha digitado uma senha). O tipo de chave criada por padro a rsa1 (compatvel com as verses 1 e 2 do ssh). A opo -t [chave] poder ser usada (ao gerar a chave) para selecionar o mtodo de criptografia:

rsa1 - Cria uma chave rsa compatvel com a verso 1 e 2 do ssh (esta a padro). rsa - Cria uma chave rsa compatvel somente com a verso 2 do ssh. dsa - Cria uma chave dsa compatvel somente com a verso 2 do ssh. Para trocar a senha utilize o comando:

ssh-keygen -p -t rsa -f ~/.ssh/identity

Ser pedida sua senha antiga e a nova (no mesmo estilo do passwd). Opcionalmente voc pode utilizar a sintaxe:
ssh-keygen -p -f ~/.ssh/identity -P senha_antiga -N senha_nova

Que troca a senha em um nico comando (til para ser usado em scripts junto com a opo -q para evitar a exibio de mensagens de sada do sshkeygen).

6.8.4 Diferenas nas verses do protocolo


Retirada da pgina de manual do sshd: Protocolo SSH verso 1 Cada servidor possui uma chave RSA especfica (1024 bits por padro) usada para identifica-lo. Quando o sshd inicia, ele gera uma chave RSA do servidor (768 bits por padro, valor definido por ServerKeyBits) que recriada a cada hora (modificado por KeyRegenerationInterval no sshd_config) e permanece sempre residente na RAM. Quando um cliente se conecta o sshd responde com sua chave pblica da mquina e chaves do servidor. O cliente ssh compara a chave RSA com seu banco de dados (em ~/.ssh/know_hosts) para verificar se no foi modificada. Estando tudo OK, o cliente gera um nmero aleatrio de 256 bits, o encripta usando ambas as chaves de mquina e chave do servidor e envia este nmero ao servidor. Ambos os lados ento usam este nmero aleatrio como chave de seo que usado para encriptar todas as comunicaes seguintes na seo. O resto da seo usa um mtodo de embaralhamento de dados convencional, atualmente Blowfish ou 3DES (usado como padro). O cliente

61

Eletricazine

www.eletricazine.hpg.ig.com.br

seleciona o algoritmo de criptografia que ser usado de um destes oferecidos pelo servidor. Aps isto o servidor e cliente entram em um dilogo de autenticao. O cliente tenta se autenticar usando um dos seguintes mtodos de autenticao: ~/.rhosts ou ~/.shosts (normalmente desativada). ~/.rhosts ou ~/.shosts combinado com autenticao RSA (normalmente desativada). Autenticao RSA por resposta de desafio. Autenticao baseada em senha. A autenticao usando Rhosts normalmente desativada por ser muito insegura mas pode ser ativada no arquivo de configurao do servidor se realmente necessrio. A segurana do sistema no melhorada a no ser que os servios rshd, rlogind, rexecd e rexd estejam desativados (assim, o rlogin e rsh sero completamente desativados na mquina). Protocolo SSH verso 2 A verso 2 funciona de forma parecida com a 1: Cada mquina possui uma chave DSA especfica usada para se identificar. A diferena que quando o sshd inicia, ele no gera uma chave de servidor. A segurana de redirecionamento oferecida atravs da concordncia do uso de uma chave Diffie-Hellman. Esta concordncia de chave resulta em uma seo com chave compartilhada. O resto da seo encriptada usando um algoritmo simtrico, como Blowfish, 3DES, CAST128, Arcfour, 128 bit AES, ou 256 bit AES. O cliente que seleciona o algoritmo de criptografia que ser usado entre os oferecidos pelo servidor. Adicionalmente a integridade da seo oferecida atravs de um cdigo de autenticao de mensagem criptogrfica (hmac-sha1 ou hmac-md5). A verso 2 do protocolo oferece um mtodo de autenticao baseado em chave pblica (PubkeyAuthentication) e o mtodo de autenticao convencional usando senhas.

6.8.5 Exemplo de sshd_config com explicaes das diretivas


Abaixo segue um exemplo deste arquivo que poder ser adaptado ao seu sistema. O objetivo ser ao mesmo tempo til para sua configurao e didtico:
# # # # Modelo personalizado para o guia Foca GNU/Linux baseado na configurao original do FreeBSD. Autor: Gleydson Mazioli da Silva Data: 20/09/2001.

# Porta padro usada pelo servidor sshd. Mltiplas portas podem ser # especificadas separadas por espaos. Port 22 # Especifica o endereo IP das interfaces de rede que o servidor sshd # servir requisies. Mltiplos endereos podem ser especificados # separados por espaos. A opo Port deve vir antes desta opo ListenAddress 0.0.0.0 # Protocolos aceitos pelo servidor, primeiro ser verificado se o cliente

62

Eletricazine

www.eletricazine.hpg.ig.com.br

# compatvel com a verso 2 e depois a verso 1. Caso seja especificado # somente a verso 2 e o cliente seja verso 1, a conexo ser descartada. # Quando no especificada, o protocolo ssh 1 usado como padro. Protocol 2,1 # As 4 opes abaixo controlam o acesso de usurios/grupos no sistema. # Por padro o acesso a todos garantido (exceto o acesso root se # PermitRootLogin for "no"). AllowUsers e AllowGroups definem uma lista # de usurios/grupos que podero ter acesso ao sistema. Os coringas # "*" e "?" podem ser especificados. Note que somente NOMES so vlidos, # UID e GID no podem ser especificados. # # As diretivas Allow so processadas primeiro e depois Deny. O mtodo que # estas diretivas so processadas idntico a diretiva # "Order mutual-failure" do controle de acesso do Apache: # O usurio dever TER acesso via AllowUsers e AllowGroups e NO ser bloqueado # por DenyUsers e DenyGroups para ter acesso ao sistema. Se uma das diretivas # no for especificada, "*" assumido como padro. # Estas permisses so checadas aps a autenticao do usurio, porque # dados a ele pelo /etc/passwd e PAM so obtidos aps o processo de # autenticao. #AllowUsers gleydson teste? #DenyUsers root adm #AllowGroups users #DenyGroups root adm bin # Permite (yes) ou no (no) o login do usurio root PermitRootLogin no # Chaves privadas do servidor (as chaves pblicas possuem um ".pub" adicionado # no final do arquivo. HostKey /etc/ssh/ssh_host_key HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key # Tamanho da chave. 768 bits o padro ServerKeyBits 768 # Tempo mximo para login no sistema antes da conexo ser fechada LoginGraceTime 600 # Tempo para gerao de nova chave do servidor (segundos). O padro # 3600 segundos (1 hora). KeyRegenerationInterval 3600 # Ignora os arquivos ~/.rhosts e ~/.shosts IgnoreRhosts yes # Ignora (yes) ou no (no) os arquivos ~/.ssh/known_hosts quando for usado

63

Eletricazine

www.eletricazine.hpg.ig.com.br

# para a opo RhostsRSAAuthentication. Se voc no confia neste mecanismo # ajuste esta opo para yes. IgnoreUserKnownHosts no # Checa por permisses de dono dos arquivos e diretrio de usurio antes de # fazer o login. muito recomendvel para evitar riscos de segurana # com arquivos lidos por todos os usurios. StrictModes yes # Permite (yes) ou no (no) o redirecionamento de conexes X11. A segurana # do sistema no aumentada com a desativao desta opo, outros mtodos # de redirecionamento podem ser usados X11Forwarding yes # Especifica o nmero do primeiro display que ser usado para o redirecionamento # X11 do ssh. Por padro usado o display 10 como inicial para evitar conflito # com display X locais X11DisplayOffset 10 # Mostra (yes) ou no (no) a mensagem em /etc/motd no login. O padro "no". PrintMotd no # Mostra (yes) ou no (no) a mensagem de ltimo login do usurio. O padro "no". PrintLastLog no # Permite (yes) ou no (no) o envio de pacotes keepalive (para verificar se o # cliente responde. Isto bom para fechar conexes que no respondem mas # tambm podem fechar conexes caso no existam rotas para o cliente # naquele momento ( um problema temporrio). Colocando esta opo como # "no" por outro lado pode deixar usurios que no tiveram a oportunidade # de efetuar o logout do servidor dados como "permanentemente conectados" # no sistema. Esta opo deve ser ativada/desativada aqui e no programa # cliente para funcionar. KeepAlive yes # Facilidade e nvel das mensagens do sshd que aparecero no syslogd SyslogFacility AUTH LogLevel INFO # Especifica se somente a autenticao via arquivos ~/.rhosts e /etc/hosts.equiv # suficiente para entrar no sistema. No muito bom usar "yes" aqui. RhostsAuthentication no # Mesmo que o acima com o acrscimo que o arquivo /etc/ssh/ssh_known_hosts tambm # verificado. Tambm evite usar "yes" aqui. RhostsRSAAuthentication no

64

Eletricazine

www.eletricazine.hpg.ig.com.br

# Especifica se a autenticao via RSA permitida (s usado na verso 1 do # protocolo ssh). Por padro "yes". RSAAuthentication yes # Permite autenticao usando senhas (serve para ambas as verses 1 e 2 do ssh). # O padro "yes". PasswordAuthentication yes # Se a PasswordAuthentication for usada, permite (yes) ou no (no) login # sem senha. O padro "no". PermitEmptyPasswords no # Ativa senhas s/key ou autenticao PAM NB interativa. Nenhum destes # compilado por padro junto com o sshd. Leia a pgina de manual do # sshd antes de ativar esta opo em um sistema que usa PAM. ChallengeResponseAuthentication no # Verifica se o usurio possui emails ao entrar no sistema. O padro "no". # Este mdulo tambm pode estar sendo habilitado usando PAM (neste caso # cheque a configurao em /etc/pam.d/ssh). CheckMail no # Especifica se o programa login usado para controlar a sees de shell # interativo. O padro "no". UseLogin no # Especifica o nmero mximo de conexes de autenticao simultneas feitas # pelo daemon sshd. O valor padro 10. Valores aleatrios podem ser # especificados usando os campos "inicio:taxa:mximo". Por exemplo, # 5:40:15 rejeita at 40% das tentativas de autenticao que excedam o # limite de 5 at atingir o limite mximo de 15 conexes, quando # nenhuma nova autenticao permitida. MaxStartups 10 #MaxStartups 10:30:60 # Mostra uma mensagem antes do nome de usurio/senha Banner /etc/issue.net # Especifica se o servidor sshd far um DNS reverso para verificar se o # endereo confere com a origem (isto til para bloquear conexes # falsificadas - spoofing). O padro "no". ReverseMappingCheck yes # Ativa o subsistema de ftp seguro. Para desabilitar comente a linha # abaixo Subsystem sftp /usr/lib/sftp-server

65

Eletricazine

www.eletricazine.hpg.ig.com.br

7 SERVIOS DE REDE
Adaptado do Guia Foca GNU/Linux Avanado Captulo 4. Servio de rede o que est disponvel para ser acessado pelo usurio. No TCP/IP, cada servio associado a um nmero chamado porta que onde o servidor espera pelas conexes dos computadores clientes. Uma porta de rede pode se referenciada tanto pelo nmero como pelo nome do servio. Abaixo, alguns exemplos de portas padres usadas em servios TCP/IP: 21 - FTP (transferncia de arquivos) 23 - telnet (terminal virtual remoto) 25 - SMTP (envio de e-mails) 53 - DNS (resolvedor de nomes) 79 - finger (detalhes sobre usurios do sistema) 80 - HTTP (protocolo www - transferncia de pginas Internet) 110 - pop-3 (recebimento de mensagens) 119 nntp (usado por programas de noticias) O arquivo padro responsvel pelo mapeamento do nome dos servios e das portas mais utilizadas o /etc/services (para detalhes sobre o seu formato, veja a seo 3.6.1).

7.1 Servios iniciados como daemons de rede


Servios de rede iniciados como daemons ficam residentes o tempo todo na memria, esperando que algum se conecte (tambm chamado de modo standalone). Um exemplo de daemon o servidor proxy squid e o servidor web apache operando no modo daemon. Alguns programas servidores oferecem a opo de serem executados como daemons ou atravs do inetd. recomendvel escolher daemon se o servio for solicitado freqentemente (como o caso dos servidores web ou proxy). Para verificar se um programa est rodando como daemon, basta digitar ps ax e procurar o nome do programa, em caso positivo ele um daemon. Normalmente os programas que so iniciados como daemons tm seus prprios recursos de segurana/autenticao para decidir quem tem ou no permisso de se conectar.

7.2 Servios iniciados atravs do inetd


Servios iniciados pelo inetd so carregados para a memria somente quando so solicitados. O controle de quais servios podem ser carregados e seus parmetros, feitos atravs do arquivo /etc/inetd.conf. Um daemon chamado inetd l as configuraes deste arquivo e permanece residente na memria, esperando pela conexo dos clientes. 66

Eletricazine

www.eletricazine.hpg.ig.com.br

Quando uma conexo solicitada, o daemon inetd verifica as permisses de acesso nos arquivos /etc/hosts.allow e /etc/hosts.deny e carrega o programa servidor correspondente no arquivo /etc/inetd.conf. Um arquivo tambm importante neste processo o /etc/services que faz o mapeamento das portas e nomes dos servios. Alguns programas servidores oferecem a opo de serem executados como daemons ou atravs do inetd. recomendvel escolher inetd se o servio no for solicitado freqentemente (como o caso de servidores ftp, telnet, talk, etc).

7.2.1 /etc/inetd.conf
O arquivo /etc/inetd.conf um arquivo de configurao para o daemon servidor inetd. Sua funo dizer ao inetd o que fazer quando receber uma requisio de conexo para um servio em particular. Para cada servio que deseja aceitar conexes, voc precisa dizer ao inetd qual daemon servidor executar e como executa-lo. Seu formato tambm muito simples. um arquivo texto com cada linha descrevendo um servio que deseja oferecer. Qualquer texto em uma linha seguindo uma "#" ignorada e considerada um comentrio. Cada linha contm sete campos separados por qualquer nmero de espaos em branco (tab ou espaos). O formato geral o seguinte:
servio tipo_soquete proto opes usurio caminho_serv. opes_serv.

servio o servio relevante a este arquivo de configurao pego do arquivo /etc/services. tipo_soquete Este campo descreve o tipo do soquete que este item utilizar, valores permitidos so: stream, dgram, raw, rdm, ou seqpacket. Isto um pouco tcnico de natureza, mas como uma regra geral, todos os servios baseados em tcp usam stream e todos os protocolos baseados em udp usam dgram. Somente alguns tipos de daemons especiais de servidores usam os outros valores.
protocolo

O protocolo considerado vlido para esta item. Isto deve bater com um item apropriado no arquivo /etc/services e tipicamente ser tcp ou udp. Servidores baseados no Sun RPC (Remote Procedure Call), utilizam rpc/tcp ou rpc/udp.
opes

Existem somente duas configuraes para este campo. A configurao deste campo diz ao inetd se o programa servidor de rede libera o soquete aps ele ser iniciado e ento se inetd pode iniciar outra cpia na prxima requisio de conexo, ou se o inetd deve aguardar e assumir que qualquer servidor j em execuo pegar a nova requisio de conexo. Este um pequeno truque de trabalho, mas como uma regra, todos os servidores tcp devem ter este parmetro ajustado para nowait e a maior parte dos servidores udp deve t-lo ajustado para wait. Foi alertado que existem algumas excesses a isto, assim deixo isto como exemplo se no estiver seguro. 67

Eletricazine
usurio

www.eletricazine.hpg.ig.com.br

Este campo descreve que conta de usurio usurio no arquivo /etc/passwd ser escolhida como dono do daemon de rede quando este for iniciado. Isto muito til se voc deseja diminuir os riscos de segurana. Voc pode ajustar o usurio de qualquer item para o usurio nobody, assim se a segurana do servidor de redes quebrada, a possibilidade de problemas minimizada. Normalmente este campo ajustado para root, porque muitos servidores requerem privilgios de usurio root para funcionarem corretamente.
caminho_servidor

Este campo o caminho para o programa servidor atual que ser executado.
argumentos_servidor

Este campo inclui o resto da linha e opcional. Voc pode colocar neste campo qualquer argumento da linha de comando que deseje passar para o daemon servidor quando for iniciado. Uma dica que pode aumentar significativamente a segurana de seu sistema comentar (colocar uma #no inicio da linha) os servios que no sero utilizados. Abaixo um modelo de arquivo /etc/inetd.conf usado em sistemas Debian:
# /etc/inetd.conf: veja inetd(8) para mais detalhes. # # Banco de Dados de configuraes do servidor Internet # # # Linhas iniciando com "#:LABEL:" ou "#<off>#" no devem # ser alteradas a no ser que saiba o que est fazendo! # # # Os pacotes devem modificar este arquivo usando update-inetd(8) # # <nome_servio> <tipo_soquete> <proto> <opes> <usurio> <caminho_servidor> <args> # #:INTERNO: Servios internos #echo stream tcp nowait root internal #echo dgram udp wait root internal #chargen stream tcp nowait root internal #chargen dgram udp wait root internal #discard stream tcp nowait root internal #discard dgram udp wait root internal #daytime stream tcp nowait root internal #daytime dgram udp wait root internal time stream tcp nowait root internal #time dgram udp wait root internal #:PADRES: Estes so servios padres. #:BSD: Shell, login, exec e talk so protocolos BSD.

68

Eletricazine
#shell stream #login stream #exec stream talk dgram /usr/sbin/in.talkd ntalk dgram /usr/sbin/in.ntalkd tcp tcp tcp udp nowait nowait nowait wait

www.eletricazine.hpg.ig.com.br
root /usr/sbin/tcpd /usr/sbin/in.rshd root /usr/sbin/tcpd /usr/sbin/in.rlogind root /usr/sbin/tcpd /usr/sbin/in.rexecd nobody.tty /usr/sbin/tcpd nobody.tty /usr/sbin/tcpd

udp wait

#:MAIL: Mail, news e servios uucp. Smtp stream tcp nowait mail #:INFO: Servios informativos

/usr/sbin/exim exim -bs

#:BOOT: O servio Tftp oferecido primariamente para a inicializao. Alguns sites # o executam somente em mquinas atuando como "servidores de inicializao". #:RPC: Servios baseados em RPC #:HAM-RADIO: servios de rdio amador #:OTHER: Outros servios

69

Eletricazine

www.eletricazine.hpg.ig.com.br

8 DNS
Adaptado do DNS HowTo, por Nicolai Langfeldt Traduo Original da Conectiva Informtica - Maro de 1999

8.1 Introduo ao DNS: O que e o que no .


Para iniciantes, DNS o Servidor de Nomes do Domnio. O DNS converte os nomes das mquinas para nmeros IP, que so os endereos das mquinas, mapeando de nome para endereo e de endereo para nome. Este COMO FAZER documenta como definir tais mapeamentos usando o sistema Linux. Um mapeamento simplesmente uma associao entre duas informaes, neste caso um nome de mquina, como ftp.linux.org, e o nmero IP da mquina, como por exemplo 199.249.150.4. DNS , para os no iniciados (voc), uma das reas mais opacas da administrao de rede. Este COMO FAZER tentar clarificar alguns conceitos e aspectos sobre este tema. Ele descreve como configurar um nome do servidor DNS simples. Comeando com um nico servidor de cache e seguindo at a configurao de um servidor primrio DNS para um domnio. Para configuraes mais complexas pode-se checar a seo de Perguntas e Respostas deste documento. Caso no esteja l descrito, pode ser necessrio ler a documentao que acompanha os fontes. Esclareceremos em que consiste esta documentao no ltimo captulo. Antes de comear, h que se configurar uma mquina para que ela possa se conectar interna e externamente e assim permitir as conexes rede. Deve ser possvel executar o comando telnet 127.0.0.1 e ter acesso mquina local (teste agora!). necessrio ainda ter-se arquivos de exemplo /etc/nsswitch.conf (ou /etc/host.conf), /etc/resolv.conf e /etc/hosts como ponto de partida, uma vez que no explicaremos aqui a sua funo. Caso ainda no se tenha tudo isso configurado e operando, o documento NET-3 ou o COMO FAZER PPP explicam como configur-los. Ao nos referirmos a 'mquina local', estamos referenciando mquina na qual se est tentando configurar o DNS e no a qualquer outra mquina que se possa ter disposio e que esteja conectada rede. Presumimos que esta mquina no est atrs de algum firewall que bloqueie as pesquisas de nomes. Caso seja necessria alguma configurao especial, por favor veja a seo de Perguntas e Respostas. O servio de nomes no Unix feito por um programa servidor denominado named. Ele integrante do pacote de bind que coordenado por Paul Vixie para o Consrcio de Programas Para a Internet. O Servidor de nomes est includo na maioria das distribuies GNU/Linux e usualmente instalado como /usr/sbin/named. Caso se tenha um named disposio podese us-lo; caso contrrio possvel obter-se um binrio a partir de um site ftp Linux, ou conseguir os fontes mais recentes em ftp.isc.org:/isc/bind/src/cur/bind-8/. Este COMO FAZER trata sobre o bind em sua verso 8. A verso antiga do COMO FAZER, que tratava sobre o bind 4, 70

Eletricazine

www.eletricazine.hpg.ig.com.br

ainda est ainda disponvel em http://www.math.uio.no/~janl/DNS/ no caso de se necessitar utilizar o bind 4. Caso a pgina do manual sobre o servidor de nomes fale sobre named.conf ento tem-se disponvel o bind 8, caso mencione o named.boot ento trata-se do bind 4. Caso se tenha o 4 e se esteja com problemas de segurana, deve-se atualizar para a verso 8 mais recente. O DNS um banco de dados distribudo por toda a rede. necessrio ter-se extremo cuidado com tudo o que for colocado nele. Ao se colocar dados sem significado, outros utilizaro estes dados e certamente tudo ficar um pouco "estranho". O DNS deve estar sempre atualizado e arrumado, evitandose assim problemas desagradveis. Deve-se aprender a us-lo, administr-lo, depur-lo para tornar-se um bom administrador da rede, evitando sobrecargas geradas por problemas de administrao. Neste documento so afirmadas categoricamente algumas coisas que no so completamente verdadeiras (sendo ento pelo menos meias verdades). Tudo em nome da simplificao. As coisas (provavelmente!) funcionaro quando o leitor acreditar no que est dito! Dica: Devem ser feitas cpias de segurana de todos os arquivos. aconselhvel, ainda, que elas sejam alteradas de tempos em tempos. Assim se depois de todas as tentativas, nada funcionar, pode-se retornar situao anterior.

8.2 Um Servidor de Nomes Somente Para Cache.


Um servidor de nomes somente para cache deve ser capaz de encontrar as respostas s pesquisas de nomes e endereos e deve ainda guardar as respostas, para a prxima em que sejam necessrias. Isto diminuir o tempo de espera significativamente, especialmente quando se tem uma conexo lenta. Inicialmente necessrio ter-se um arquivo /etc/named.conf, o qual ser lido quando o servidor de nomes for inicializado. Por enquanto ele pode conter simplesmente:
// Configurao do arquivo para um servidor de nomes somente para cache options{ directory "/var/named"; // No comentar isto pode ajudar caso se tenha um firewall presente // e as coisas no estejam funcionando: // endereo de pesquisa: porta 53; }; zone "." { type hint; file "rott.hints "; }; zone "0.0.127.in-addr.arpa" { type master;

71

Eletricazine
file "pz/127.0.0"; };

www.eletricazine.hpg.ig.com.br

A linha `directory' indica onde os arquivos devem estar localizados. Todos os arquivos subseqentes sero relativos a este. Assim pz um diretrio sob /var/named, ou seja estar localizado em /var/named/pz. /var/named o diretrio definido pelo Padro de Sistemas de Arquivos Linux. O arquivo denominado /var/named/root.hints deve conter:
. . . . . . . . . . . . . G.ROOT-SERVERS.NET. J.ROOT-SERVERS.NET. K.ROOT-SERVERS.NET. L.ROOT-SERVERS.NET. M.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. H.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. C.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET. E.ROOT-SERVERS.NET. I.ROOT-SERVERS.NET. F.ROOT-SERVERS.NET. 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D IN IN IN IN IN IN IN IN IN IN IN IN IN NS NS NS NS NS NS NS NS NS NS NS NS NS IN IN IN IN IN IN IN IN IN IN IN IN IN A A A A A A A A A A A A A G.ROOT-SERVERS.NET. J.ROOT-SERVERS.NET. K.ROOT-SERVERS.NET. L.ROOT-SERVERS.NET. M.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. H.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. C.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET. E.ROOT-SERVERS.NET. I.ROOT-SERVERS.NET. F.ROOT-SERVERS.NET. 192.112.36.4 198.41.0.10 193.0.14.129 198.32.64.12 202.12.27.33 198.41.0.4 128.63.2.53 128.9.0.107 192.33.4.12 128.8.10.90 192.203.230.10 192.36.148.17 192.5.5.241

5w6d16h 5w6d16h 5w6d16h 5w6d16h 5w6d16h 5w6d16h 5w6d16h 5w6d16h 5w6d16h 5w6d16h 5w6d16h 5w6d16h 5w6d16h

Este arquivo descreve o nome dos servidores raiz no mundo. Este contedo pode mudar com o passar do tempo e tem que ser atualizado permanentemente. Veja a seo de manuteno para saber como mant-lo atualizado. A prxima seo em named.conf zone. Explicaremos o seu uso num captulo adiante. Por hora somente faamos deste um arquivo chamado 127.0.0 no subdiretrio pz:
@ IN SOA ns.linux.bogus.hostmaster.linux.bogus. ( 1 ; Serial 8H ; Atualizao 2H ; Tentativas 1W ; Expirao 1D) ; TTL mnimo ns.linux.bogus.

NS

72

Eletricazine
1 PTR localhost

www.eletricazine.hpg.ig.com.br

Em seguida, ser necessrio um arquivo /etc/resolv.conf com o seguinte contedo:


search subdomnio.seu\_domnio.edu.br seu\_domnio.edu.br nome\_do\_servidor 127.0.0.1

A linha `search' especifica que o domnio deve serpesquisado para qualquer nome de mquina com a qual se queira conectar. A linha `nameserver' especifica o endereo do servidor de nomes. Neste caso, a prpria mquina, uma vez que nela que o programa named executado (j que 127.0.0.1 foi informado, no importando se a mquina tem tambm outro endereo). Caso se queira indicar vrios servidores de nomes, deve-se criar uma linha `nameserver' para cada um deles. (Nota: O programa named nunca l este arquivo, e sim o resolvedor que utilizar o named). Vamos ilustrar um pouco mais a funo deste arquivo: caso um cliente tente procurar por itamaraca, ento itamaraca.subdomnio.seu_domnio.edu.br ser a primeira tentativa, ento ser tentado itamaraca.seu_domnio.edu.br e finalmente somente itamaraca. Se um cliente tentar procurar metalab.unc.edu, metalab.unc.edu.subdomnio.seu_domnio.edu.br ser tentado inicialmente (sim, no faz muito sentido, mas o jeito que ele funciona), ento metalab.unc.edu.seu_domnio.edu.br, e finalmente metalab.unc.edu. Caso se queira colocar muitos domnios na linha search, isso pode provocar uma sobrecarga nos tempos de pesquisa. O exemplo presume que a mquina pertence ao domnio subdomnio.seu_domnio.edu.br, sendo provavelmente o servidor de nomes nome_da_mquina.subdomnio.seu_domnio.edu.br. A linha de busca no deve conter o TLD (Domnio Raiz `edu.br' neste caso). Caso seja necessrio conectar-se com freqncia a mquinas de outros domnios, deve-se acrescentar aqueles domnios linha de busca, como por exemplo:
search subdomnio.seu_domnio.edu.br seu_domnio.edu.br outro_domnio.com.br

e assim por diante. Obviamente deve-se utilizar nomes reais de domnios. Os aqui colocados servem somente como exemplos. Por favor atente para a falta de pontos no final dos nomes dos domnios. A seguir, dependendo da verso da biblioteca libc, tanto pode ser necessrio atualizar o /etc/nsswitch.conf ou o /etc/host.conf. Caso se tenha o nsswitch.conf este ser utilizado, caso contrrio, atualizaremos o host.conf. /etc/nsswitch.conf Este um arquivo longo que especifica onde podem ser obtidos diferentes tipos de dados, de que arquivos e de qual base de dados. Usualmente contm comentrios teis no topo, que podem ser lidos agora. Depois disso, deve ser encontrada uma linha que comece com `hosts:', onde se pode ler:
hosts: files dns

Caso no haja nenhuma linha iniciada com `hosts:' ento deve ser includa a linha acima. Ela indica que os programas devem primeiramente pesquisar o arquivo /etc/hosts, e aps ento verificar o DNS de acordo com o configurado no arquivo resolv.conf. /etc/host.conf

73

Eletricazine

www.eletricazine.hpg.ig.com.br

Provavelmente contm vrias linhas, uma delas deve comear com order e deve ter o seguinte:
order hosts, bind

Se no houver nenhuma linha `order', ento uma deve ser criada. Esta linha indica que a resoluo de nomes de mquinas deve pesquisar inicialmente no arquivo /etc/hosts, e depois pesquisar junto ao servidor de nomes (definido em resolv.conf como 127.0.0.1). Estes dois ltimos arquivos esto documentados na pgina de manual do utilitrio resolver(8) (para acess-la execute man 8 resolv) na maioria das distribuies Linux. Aquela pgina do manual clara e em nossa opinio, todos devem l-la (especialmente os administradores de DNS). Faa-o agora caso voc seja um daqueles que diz para si mesmo: "Eu vou ler mais tarde", mas nunca o faz.

8.2.1 Iniciando o named


Aps tudo isto hora de iniciar o servidor de nomes. Caso se esteja usando uma conexo discada, primeiro deve-se estabelecer a conexo. Devese digitar ento `ndc start' , sem opes. Caso isto no funcione, pode-se tentar `/usr/sbin/ndc start'. Caso isto no funcione, deve verificar a seo -se Perguntas e Respostas. Agora possvel testar a configurao. Ao se visualizar o arquivo de mensagens syslog (usualmente chamado /var/adm/messages; podem ser examinados tambm o diretrio /var/log e o arquivo syslog) ao se iniciar o servidor de nomes (executando-se tail f/var/log/messages ) deve-se obter algo como: (linhas terminadas em \ continuam na linha seguinte)
Feb 15 01:26:17 roke named[6091]: starting. named 8.1.1 Sat Feb 14 \ 00:18:20 MET 1998 ^Ijanl@roke.uio.no:/var/tmp/bind-8.1.1/src/bin/named Feb 15 01:26:17 roke named[6091]: cache zone "" (IN) loaded (serial 0) Feb 15 01:26:17 roke named[6091]: master zone "0.0.127.in-addr.arpa" \ (IN) loaded (serial 1) Feb 15 01:26:17 roke named[6091]: listening [127.0.0.1].53 (lo) Feb 15 01:26:17 roke named[6091]: listening [129.240.230.92].53 (ippp0) Feb 15 01:26:17 roke named[6091]: Forwarding source address is [0.0.0.0].1040 Feb 15 01:26:17 roke named[6092]: Ready to answer queries.

Se houver alguma mensagem de erro, ela deve ser examinada. O named indicar o arquivo onde o problema se encontra (ou named.conf. ou root.hints, esperamos). O servidor de nomes deve ser finalizado e os arquivos devem ser corrigidos. Agora hora de iniciar o nslookup para examinar o trabalho realizado at aqui.
$ nslookup default Server: localhost Address: 127.0.0.1 >

Caso este seja o resultado obtido, parabns, est funcionando. Esperamos que sim. Caso se obtenha um resultado diferente, deve-se retornar e verificar todos os passos. Cada vez que se altere o arquivo named.conf ser necessrio reiniciar o servidor de nomes usando o comando ndc restart.

74

Eletricazine

www.eletricazine.hpg.ig.com.br

Agora podemos fazer pesquisas no sistema. Podemos procurar por alguma mquina prxima; A pat.uio.no est prxima a mim na Universidade de Oslo:
> pat.uio.no Server: localhost Address: 127.0.0.1 Name: pat.uio.no Address: 129.240.130.16

O nslookup agora perguntou ao seu servidor de nomes para procurar a mquina pat.uio.no. Este contactou uma dos servidores de nomes listados no arquivo root.hints, e perguntou a um deles qual o caminho para a mquina desejada. Pode levar bem pouco tempo antes de se obter o resultado, enquanto named procura todos os domnios definidos em /etc/resolv.conf. Ao se pesquisar novamente, tem-se:
> pat.uio.no Server: localhost Address: 127.0.0.1 Non-authoritative answer: Name: pat.uio.no Address: 129.240.2.50

Note a linha `Non -authoritative answer:' que obtivemos desta vez. Isto indica que o servidor de nomes no saiu pela rede para perguntar sobre a mquina desejada. Ao invs disto procurou em seu cache e encontrou-o l. Mas a informao do cache pode estar desatualizada (antiga). Ento se est informado deste perigo (muito pequeno) quando o sistema informa `resposta No autorizada:'. Quando o nslookup disser isto pela segunda vez para a mesma mquina, pode-se estar certo de que o cache est funcionando e fornecendo a informao certa. Pode sair-se do comando nslookup digitandose `exit'. Agora que sabemos como configurar um servidor de nomes de cache, aproveite para tomar uma cerveja, leite, ou qualquer coisa que se queira para comemorar este fato memorvel.

8.3 Um Domnio Simples: como configurar um domnio prprio


8.3.1 Um pouco de teoria
Antes de realmente comearmos esta seo, forneceremos alguns ensinamentos sobre o funcionamento do DNS; preciso l-los porque fundamental para um administrador de rede. Caso no se queira, deve-se pelo menos pesquis-los rapidamente, at chegar aonde se quer ir no arquivo named.conf. DNS uma sistema hierrquico. O mais alto nvel representado por `.' e denominado "raiz". Sob "." h diversos Domnios de Alto Nvel (TLDs), sendo os mais conhecidos ORG, COM, EDU e NET, mas existem muitos mais. Ao se procurar uma mquina, a pesquisa ocorre recursivamente dentro da hierarquia, comeando no topo. Caso se queira descobrir o endereo de

75

Eletricazine

www.eletricazine.hpg.ig.com.br

prep.ai.mit.edu, o servidor de nomes local tem que encontrar um nome de servidor que responda pelo domnio edu. Ele pergunta a um servidor . (ele j conhece os servidores ., a partir do arquivo root.hints), e o servidor . fornecer uma lista dos servidores do domnio edu:
$ nslookup Default Server: localhost Address: 127.0.0.1

Comearemos perguntando por um servidor raiz:


> server c.root -servers.net. Default Server: c.root -servers.net Address: 192.33.4.12

A seguir definiremos o tipo de pesquisa que desejamos fazer. Neste caso NS (registros de servidores de nomes):
> set q=ns

edu:
> edu.

A seguir perguntaremos pelos servidores que respondem pelo domnio

O ponto aps edu significativo. Ele indica ao servidor que estamos pesquisando os servidores sob os quais o domnio edu est configurado (isto de alguma maneira simplifica a busca):
edu nome do servidor = A.ROOT-SERVERS.NET edu nome do servidor = H.ROOT-SERVERS.NET edu nome do servidor = B.ROOT-SERVERS.NET edu nome do servidor = C.ROOT-SERVERS.NET edu nome do servidor = D.ROOT-SERVERS.NET edu nome do servidor = E.ROOT-SERVERS.NET edu nome do servidor = I.ROOT-SERVERS.NET edu nome do servidor = F.ROOT-SERVERS.NET edu nome do servidor = G.ROOT-SERVERS.NET A.ROOT-SERVERS.NET endereo na internet = H.ROOT-SERVERS.NET endereo na internet = B.ROOT-SERVERS.NET endereo na internet = C.ROOT-SERVERS.NET endereo na internet = D.ROOT-SERVERS.NET endereo na internet = E.ROOT-SERVERS.NET endereo na internet = I.ROOT-SERVERS.NET endereo na internet = F.ROOT-SERVERS.NET endereo na internet = G.ROOT-SERVERS.NET endereo na internet =

198.41.0.4 128.63.2.53 128.9.0.107 192.33.4.12 128.8.10.90 192.203.230.10 192.36.148.17 192.5.5.241 192.112.36.4

A resposta nos indica que *.root-servers.net serve edu., podemos ento continuar perguntando, por exemplo ao servidor C.ROOT-SERVERS.NET. Agora queremos saber quem serve o prximo nvel do nome da mquina: mit.edu.:
> mit.edu. Server: c.root-servers.net Address: 192.33.4.12 Non-authoritative answer: mit.edu nameserver = W20NS.mit.edu

76

Eletricazine
mit.edu nameserver = BITSY.mit.edu mit.edu nameserver = STRAWB.mit.edu Authoritative answers can be found W20NS.mit.edu internet address = BITSY.mit.edu internet address = STRAWB.mit.edu internet address = from: 18.70.0.160 18.72.0.3 18.71.0.151

www.eletricazine.hpg.ig.com.br

A resposta indica que strawb, w20ns e bitsy servem o domnio mit. Vamos selecionar um deles e perguntar-lhe sobre ai.mit.edu:
> servidor W20NS.mit.edu.

Os nomes das mquinas no so sensveis a maisculas e minsculas, mas sugerimos o uso do mouse para cortar e colar como esto na tela.
Servidor: W20NS.mit.edu Endereo: 18.70.0.160 > ai.mit.edu. Server: W20NS.mit.edu Address: 18.70.0.160 Non-authoritative answer: ai.mit.edu nameserver ai.mit.edu nameserver ai.mit.edu nameserver ai.mit.edu nameserver ai.mit.edu nameserver ai.mit.edu nameserver ai.mit.edu nameserver ai.mit.edu nameserver ai.mit.edu nameserver

= = = = = = = = =

ALPHA-BITS.AI.MIT.EDU GRAPE-NUTS.AI.MIT.EDU TRIX.AI.MIT.EDU MUESLI.AI.MIT.EDU LIFE.AI.MIT.EDU BEET-CHEX.AI.MIT.EDU MINI-WHEATS.AI.MIT.EDU COUNT-CHOCULA.AI.MIT.EDU MINTAKA.LCS.MIT.EDU

Authoritative answers can be found from: AI.MIT.EDU nameserver = ALPHA-BITS.AI.MIT.EDU AI.MIT.EDU nameserver = GRAPE-NUTS.AI.MIT.EDU AI.MIT.EDU nameserver = TRIX.AI.MIT.EDU AI.MIT.EDU nameserver = MUESLI.AI.MIT.EDU AI.MIT.EDU nameserver = LIFE.AI.MIT.EDU AI.MIT.EDU nameserver = BEET-CHEX.AI.MIT.EDU AI.MIT.EDU nameserver = MINI-WHEATS.AI.MIT.EDU AI.MIT.EDU nameserver = COUNT-CHOCULA.AI.MIT.EDU AI.MIT.EDU nameserver = MINTAKA.LCS.MIT.EDU ALPHA-BITS.AI.MIT.EDU internet address = 128.52.32.5 GRAPE-NUTS.AI.MIT.EDU internet address = 128.52.36.4 TRIX.AI.MIT.EDU internet address = 128.52.37.6 MUESLI.AI.MIT.EDU internet address = 128.52.39.7 LIFE.AI.MIT.EDU internet address = 128.52.32.80 BEET-CHEX.AI.MIT.EDU internet address = 128.52.32.22 MINI-WHEATS.AI.MIT.EDU internet address = 128.52.54.11 COUNT-CHOCULA.AI.MIT.EDU internet address = 128.52.38.22 MINTAKA.LCS.MIT.EDU internet address = 18.26.0.36

77

Eletricazine

www.eletricazine.hpg.ig.com.br

Desta forma, obtemos que museli.ai.mit.edu um dos servidores de nomes de ai.mit.edu:


> server MUESLI.AI.MIT.EDU Default Server: MUESLI.AI.MIT.EDU Address: 128.52.39.7

Agora mudaremos o tipo de pergunta. J que encontramos o servidor de nomes, agora podemos perguntar tudo o que quisermos sobre prep.ai.mit.edu.
> set q=any > prep.ai.mit.edu. Server: MUESLI.AI.MIT.EDU Address: 128.52.39.7 prep.ai.mit.edu CPU = dec/decstation-5000.25 OS = unix prep.ai.mit.edu inet address = 18.159.0.42, protocol = tcp ftp telnet smtp finger prep.ai.mit.edu preference = 1, mail exchanger = gnu-life.ai.mit.edu prep.ai.mit.edu internet address = 18.159.0.42 ai.mit.edu nameserver = beet-chex.ai.mit.edu ai.mit.edu nameserver = alpha-bits.ai.mit.edu ai.mit.edu nameserver = mini-wheats.ai.mit.edu ai.mit.edu nameserver = trix.ai.mit.edu ai.mit.edu nameserver = muesli.ai.mit.edu ai.mit.edu nameserver = count-chocula.ai.mit.edu ai.mit.edu nameserver = mintaka.lcs.mit.edu ai.mit.edu nameserver = life.ai.mit.edu gnu-life.ai.mit.edu internet address = 128.52.32.60 beet-chex.ai.mit.edu internet address = 128.52.32.22 alpha-bits.ai.mit.edu internet address = 128.52.32.5 mini-wheats.ai.mit.edu internet address = 128.52.54.11 trix.ai.mit.edu internet address = 128.52.37.6 muesli.ai.mit.edu internet address = 128.52.39.7 count-chocula.ai.mit.edu internet address = 128.52.38.22 mintaka.lcs.mit.edu internet address = 18.26.0.36 life.ai.mit.edu internet address = 128.52.32.80

Assim comeando por . fomos capazes de descobrir os nomes dos servidores do prximo nvel de domnio. Caso se esteja usando um servidor DNS prprio ao invs de usar todos aqueles outros servidores, o named certamente guardaria no cache todas as informaes que tenha encontrado, no sendo necessria toda esta pesquisa na prxima vez que fosse realizada uma nova pesquisa de localizao desta mquina. Um tema muito menos comentado, mas tambm muito importante inaddr.arpa. Ele tambm est aninhado como um domnio 'normal'. -addr.arpa in permite-nos conseguir os nomes das mquinas atravs de seus endereos. Uma coisa importante aqui, notar que ip#s so escritos ao contrrio no campo in-addr.arpa. Caso se tenha o endereo da mquina: 192.128.52.43, named proceder exatamente como no exemplo prep.ai.mit.edu: encontrar

78

Eletricazine

www.eletricazine.hpg.ig.com.br

servidores arpa., in-addr.arpa., 192.in-addr.arpa., 128.192.in-addr.arpa., 52.128.192.in-addr.arpa.. Encontrar ento os registros necessrios para 43.52.128.192.in-addr.arpa. Engenhoso no? (Diga `Sim', por favor!.) Porm no se preocupe endereos reversos somente so confusos nos dois primeiros anos. Acabamos de contar uma mentira. O DNS no funciona exatamente da maneira aqui descrita. Mas no tenha dvida que muito prximo disso.

8.3.2 Nosso Prprio Domnio


Agora vamos definir nosso prprio campo. Vamos criar o domnio linux.bogus e definir suas mquinas. Usaremos o nome de domnio bogus para estarmos certos de no estarmos perturbando ningum. Mais uma coisa antes de comearmos: nem todos os caracteres so permitidos nos nomes das mquinas. Estamos limitados ao caracteres do alfabeto: a-z e ao nmeros: 0-9, alm do caracter ' (hfen). Devemos nos -' restringir queles caracteres. Os caracteres maisculos e minsculos so idnticos para o DNS, assim pat.uio.no igual a Pat.UiO.No. Comearemos esta parte com uma linha em named.conf:
zone "0.0.127.in-addr.arpa" { type master; file "pz/127.0.0"; };

Por favor note a falta de `.' no final dos nomes dos campos neste arquivo. Isto nos diz que podemos definir uma zona 0.0.127.in-addr.arpa, na qual somos os servidores principais e que as informaes esto guardadas em um arquivo chamado pz/127.0.0. Ns j configuramos este arquivo anteriormente com o seguinte contedo:
@ IN SOA ns.linux.bogus.hostmaster.linux.bogus. ( 1 ; Serial 8H ; Atualizao 2H ; Tentativas 1W ; Expirao 1D) ; TTL mnimo ns.linux.bogus. localhost

NS PTR

Por favor note o `.' no final de todos os nomes completos de campo neste arquivo, em contraste ao arquivo acima named.conf. Algumas pessoas gostam de comear cada arquivo de zona com uma diretiva $ORIGIN, mas isto suprfluo. A origem (onde pertence o DNS na hierarquia) de um arquivo de zona especificado na seo de zona do arquivo named.conf, a qual neste caso 0.0.127.in-addr.arpa. Este `arquivo de zona ' contm 3 `registros de recursos' (RRs): SOA, NS e um PTR. SOA a contrao para Incio de Autoridade. O `@' uma

79

Eletricazine

www.eletricazine.hpg.ig.com.br

observao especial que significa origem e desde que a coluna do campo para este arquivo diz 0.0.127.in-addr.arpa, a primeira linha realmente quer dizer
0.0.127.in-addr.arpa. IN SOA ...

NS o nome do servidor RR. No h '@' no incio desta linha, est implcito desde que a ltima linha comeou com o caracter '@'. Economiza -se assim alguma digitao e a possibilidade de cometer algum erro. Assim na linha NS se l
0.0.127.in-addr.arpa. IN NS ns.linux.bogus

Indicando ao DNS que a mquina o servidor de nomes do domnio 0.0.127.in-addr.arpa chamada ns.linux.bogus. 'ns' um nome comum para servidor de nomes, mas como em servidores web so costumeiramente chamados www.domnio, este nome pode ser qualquer coisa. E finalmente o registro PTR diz que a mquina no endereo 1 na subrede 0.0.127.in-addr.arpa, ou seja, 127.0.0,1 denominado localhost. O registro SOA o prembulo para todos os arquivos de zona e deve haver exatamente um em cada arquivo de zona, devendo necessariamente ser o primeiro registro. Ele descreve a zona, sua origem (uma mquina servidor de nomes ns.linux.bogus), quem a responsvel por seu contedo (hostmaster@linux.bogus), qual a verso do arquivo de zona (serial: 1) e outras coisas que tm a ver com guarda de dados em cache e servidores secundrios de DNS. Para os demais campos, Atualizao, Tentativas, Expirao e TTL, pode-se usar os valores aqui indicados e se estar seguro. Agora reinicializaremos o servidor de nomes (atravs do comando ndc restart), e usaremos nslookup para examinar o que foi feito:
$ nslookup Servidor Padro: localhost Endereo: 127.0.0.1 > 127.0.0.1 Servidor: localhost Endereo: 127.0.0.1 Nome: localhost Endereo: 127.0.0.1

observamos ento que possvel chegar a localhost a partir do endereo 127.0.0.1. Agora a nossa tarefa principal, no campo linux.bogus, vamos inserir uma nova seo chamada 'zone' no named.conf:
zone "linux.bogus" { notify no; type master; file "pz/linux.bogus"; };

Note-se a ausncia de `.' no nome do domnio no arquivo nam ed.conf.

80

Eletricazine

www.eletricazine.hpg.ig.com.br

No arquivo de zona do domnio linux.bogus colocaremos alguns dados totalmente inventados:


; ; Arquivo zona para linux.bogus ; ; O arquivo completo de zone ; @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; serial, data de hoje + serial de hoje # 8H ; Atualizao, segundos 2H ; Tentativa, segundos 1W ; Expirao, segundos 1D ) ; TTL, segundos ; NS ns ; Endereo Internet do nome do servidor MX 10 mail.linux.bogus ; Servidor de Correio Primrio MX 20 mail.friend.bogus. ; Servidor de Correio Secundrio ; localhost A 127.0.0.1 ns A 192.168.196.2 mail A 192.168.196.4

Dois aspectos devem ser observados sobre o registro SOA. ns.linux.bogus deve ser uma mquina real com um registro A. No permitido ter um registro CNAME para a mquina mencionada no registro SOA. O nome no precisa ser 'ns', pode ser qualquer nome de mquina vlido. Em seguida, a hostmaster.linux.bogus deve ser lido como hostmaster@linux.bogus, o qual deve ser um nome alternativo de correio, ou caixa postal, acessado pela(s) pessoa(s) que mantm o DNS e leiam a correspondncia freqentemente. Qualquer correspondncia relativa ao domnio ser enviada para o endereo relacionado aqui. O nome no precisa ser 'hostmaster', pode ser qualquer endereo e-mail vlido, mas espera-se que o endereo e-mail 'hostmaster' funcione bem. H um novo tipo RR neste arquivo, o MX, ou registro de recurso de servidor de correio. Este arquivo diz aos sistemas de correspondncia para onde enviar a correspondncia endereada para algum@linux.bogus, ou seja no nosso caso mail.linux.bogus ou mail.friend.bogus. O nmero antes de cada nome de mquina define a prioridade. O RR com o nmero mais baixo tem prioridade. Caso ele no esteja ativo ou apresentar algum erro, a mensagem pode ser enviada a um outro servidor de mensagens com um nmero mais alto, um operador de correspondncia secundrio, ou seja, no nosso caso, mail.friend.bogus que tem prioridade 20. Ao se reiniciar o servidor de nomes executando-se ndc restart obteremos os seguintes resultados com o nslookup:
$ nslookup > set q=any > linux.bogus

81

Eletricazine
Server: localhost Address: 127.0.0.1

www.eletricazine.hpg.ig.com.br

linux.bogus origin = ns.linux.bogus mail addr = hostmaster.linux.bogus serial = 199802151 refresh = 28800 (8 horas) retry = 7200 (2 horas) expire = 604800 (7 dias) minimum ttl = 86400 (1 dia) linux.bogus nameserver = ns.linux.bogus linux.bogus preference = 10, mail exchanger = mail.linux.bogus.linux.bogus linux.bogus preference = 20, mail exchanger = mail.friend.bogus linux.bogus nameserver = ns.linux.bogus ns.linux.bogus internet address = 192.168.196.2 mail.linux.bogus internet address = 192.168.196.4

Com um exame mais apurado pode-se descobrir um pequeno problema. A linha


linux.bogus linux.bogus preference = 10, mail exchanger = mail.linux.bogus.linux.bogus preference = 10, mail exchanger = mail.linux.bogus

deveria ser Deliberadamente cometemos o erro para que o leitor aprenda com ele:-) Examinando o arquivo de zona, percebemos que na linha
MX 10 mail.linux.bogus ; Servidor primrio de correio

est faltando um ponto. Ou seja h 'linux.bogus' demais. Caso um nome de mquina no seja seguido por um ponto num arquivo de zona, a origem ser acrescentada ao final causando o duplo linux.bogus.linux.bogus. Portanto
MX 10 mail.linux.bogus. ; Servidor primrio de correio

ou
MX 10 mail ; Servidor primrio de correio

esto corretos. Particularmente, sugerimos a ltima forma, por ser mais econmica e menos sujeita a erros. Existem alguns bem conhecidos usurios de bind que discordam e outros que concordam com isto. Num arquivo de zona, o domnio pode tanto ser totalmente identificado e terminado com um `.' ou no deve ser includo de forma alguma, utilizando ento o padro da origem. Devemos salientar que em um arquivo named.conf no deve haver `.' depois dos nomes dos domnios. Voc no tem idia de quantas vezes um `.' gerou uma enormidade de problemas e confundiu um punhado de administradores. Agora que j expressamos nosso ponto de vista. Estamos com o novo arquivo de zona e com informaes extras:

82

Eletricazine

www.eletricazine.hpg.ig.com.br

; ; Arquivo de zona para linux.bogus ; ; O arquivo de zona completo ; @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; serial, data de hoje + serial de hoje # 8H ; Atualizar, segundos 2H ; Tentativas, segundos 1W ; Expirao, segundos 1D ) ; TTL, segundos ; TXT "Linux.Bogus, os especialistas DNS " NS ns ; Endereo Internet do servidor de nomes NS ns.friend.bogus. MX 10 mail ; Servidor de correio primrio MX 20 mail.friend.bogus. ; Servidor de correio secundrio localhost gw A A HINFO TXT A MX MX HINFO CNAME A MX MX HINFO TXT A MX MX HINFO A MX MX HINFO 127.0.0.1 192.168.196.1 "Cisco" "IOS" "O roteador" 192.168.196.2 10 mail 20 mail.friend.bogus. "Pentium" "Linux 2.0" ns 192.168.196.3 10 mail 20 mail.friend.bogus. "i486" "Linux 2.0" "DEK" 192.168.196.4 10 mail 20 mail.friend.bogus. "386sx" "Linux 2.2" 192.168.196.5 10 mail 20 mail.friend.bogus. "P6" "Linux 2.0.36"

ns

www donald

correio

ftp

H diversos RRs novos: HINFO (INFOrmao da Mquina) tem duas partes, sendo aconselhvel indicar os dois. A primeira parte o hardware ou

83

Eletricazine

www.eletricazine.hpg.ig.com.br

CPU da mquina, e a segunda parte o software ou OS da mquina. O servidor de nomes 'ns' tem uma CPU Pentium e executa o Linux 2.0. CNAME (NOME Cannico) uma maneira de dar a uma mesma mquina vrios nomes. Assim www um nome alternativo para o ns. O uso do registro CNAME um pouco controvertido. Mas seguro seguir a regra onde um registro MX, CNAME ou SOA nunca deve referir-se a um registro CNAME , e devem referir-se somente a um registro A, sendo portanto incorreto ter-se:
itamaracabar CNAME www ; NO!

o correto seria:
itamaracabar CNAME ns ; SIM!

tambm seguro supor que um CNAME no um nome de mquina vlido para um endereo e-mail, por exemplo webmaster@www.linux.bogus um endereo ilegal, conforme a configurao acima. No se deve esperar que muito administradores de servidores de mensagens usem esta configurao, mesmo se ela funcionar localmente. A maneira para evitar isto usar registros de tipo A ( e talvez alguns outros tambm, como um registro MX):
www A 192.168.196.2

Um grande nmero de magos do DNS, sugerem que o CNAME no seja utilizado. Por isso, devemos considerar esta sugesto muito seriamente. Mas como se pode perceber, este COMO FAZER e muitos sites no seguem esta regra. possvel carregar o novo banco de dados executando-se ndc reload, o que far com que o named leia seus arquivos novamente.
$ nslookup Default Server: localhost Address: 127.0.0.1 > ls -d linux.bogus

Isto significa que todos os registros devem ser apresentados. O resultado ser:
<tscreen><verb> [localhost] $ORIGIN linux.bogus. @

1D IN SOA

ns hostmaster ( 199802151 ; nro. serial 8H ; atualizar 2H ; tentativas 1W ; expirao 1D ) ; mnimo ns

1D IN NS

84

Eletricazine
1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN NS TXT MX MX A HINFO TXT A MX MX HINFO A CNAME A MX MX HINFO TXT A MX MX HINFO A MX MX HINFO SOA

www.eletricazine.hpg.ig.com.br
ns.friend.bogus. "Linux.Bogus, os consultores DNS" 10 mail 20 mail.friend.bogus. 192.168.196.1 "Cisco" "IOS" "O roteador" 192.168.196.4 10 mail 20 mail.friend.bogus. "386sx" "Linux 1.0.9" 127.0.0.1 ns 192.168.196.3 10 mail 20 mail.friend.bogus. "i486" "Linux 1.2" "DEK" 192.168.196.5 10 mail 20 mail.friend.bogus. "P6" "Linux 1.3.59" 192.168.196.2 10 mail 20 mail.friend.bogus. "Pentium" "Linux 1.2" ns hostmaster ( 199802151 ; nro. serial 8H ; atualizar 2H ; tentativas 1W ; expirao 1D ) ; mnimo

gw

mail

localhost www donald

ftp

ns

Parece timo. Como se pode ver parece muito com o arquivo de zona. Vamos verificar o que ele diz para www:
> set q=any > www.linux.bogus. Server: localhost Address: 127.0.0.1 www.linux.bogus linux.bogus linux.bogus ns.linux.bogus canonical name = ns.linux.bogus nameserver = ns.linux.bogus nameserver = ns.friend.bogus internet address = 192.168.196.2

Em outras palavras, o nome real de www.linux.bogus ns.linux.bogus, e ele fornece algumas informaes adicionais que ele possua sobre ns, o suficiente para um programa conectar-se a ele. Agora estamos no meio do caminho.

85

Eletricazine

www.eletricazine.hpg.ig.com.br

8.3.3 A zona reversa


Agora os programas podem converter os nomes em linux.bogus para endereos com os quais eles podem se conectar. Porm pedida tambm uma zona reversa, que torne o DNS capaz de converter um endereo em um nome. Este nome usado por muitos servidores de espcies diferentes (FTP, IRC, WWW e outros) para decidir se eles querem conversar com a mquina local ou no, e em caso positivo, tambm qual a prioridade que deve ser dada a esta mquina. Para o acesso completo a todos os servios da Internet, uma zona reversa necessria. Deve-se colocar o seguinte em named.conf:
zone "196.168.192.in-addr.arpa" { notify no; type master; file "pz/192.168.196"; };

Estes parmetros so exatamente iguais para 0.0.127.in-addr.arpa e os contedos so semelhantes:


@ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; Nro.Serial, data + nro. srie 8H ; Atualizar 2H ; Tentativas 1W ; Expirao 1D) ; TTL mnimo ns.linux.bogus. gw.linux.bogus. ns.linux.bogus. donald.linux.bogus. mail.linux.bogus. ftp.linux.bogus.

NS 1 2 3 4 5 PTR PTR PTR PTR PTR

Agora ao reinicializar o servidor de nomes (ndc restart) e examinar o trabalho realizado, utilizando-se o nslookup, teremos:
> 192.168.196.4 Server: localhost Address: 127.0.0.1 Name: mail.linux.bogus Address: 192.168.196.4

Ento caso tudo parea correto, vamos examinar todas as demais informaes:
> ls -d 196.168.192.in-addr.arpa [localhost] $ORIGIN 196.168.192.in-addr.arpa. @ 1D IN SOA

ns.linux.bogus. 199802151 8H 2H 1W

hostmaster.linux.bogus. ( ; nro. serial ; atualizar ; tentativas ; expirao

86

Eletricazine
1D ) 1D IN 1D IN 1D IN 1D IN 1D IN 1D IN 1D IN ; nro. serial NS PTR PTR PTR PTR PTR SOA

www.eletricazine.hpg.ig.com.br
; ttl mnimo

1 2 3 4 5 @ 199802151

ns.linux.bogus. gw.linux.bogus. ns.linux.bogus. donald.linux.bogus. mail.linux.bogus. ftp.linux.bogus. ns.linux.bogus. hostmaster.linux.bogus. ( 8H 2H 1W 1D ) ; ; ; ; atualizar tentativas expirao ttl mnimo

Parece bom! H algumas coisas que devemos acrescentar. Os nmeros IP usados nos exemplos acima foram tirados dos blocos de 'redes privadas', ou seja, eles no podem ser usados publicamente na Internet. Por isso eles so seguros para serem usados em um exemplo de um COMO FAZER. A segunda coisa a linha notify no;, a qual indica que o servidor de nomes no notificar o servidor secundrio (escravo), quando houver uma atualizao para um dos arquivos de zona. No bind-8 o servidor de nomes pode notificar os outros servidores relacionados nos registros NS no arquivo de zona, toda vez que ela for atualizada. Isto conveniente para o uso dirio e usual, mas em nossas experincias particulares com zonas, esta caracterstica deve ser desativada, afinal no queremos que a experincia polua toda a Internet, queremos? E claro, este domnio totalmente inventado, assim como todos os endereos que esto nele. Para um exemplo real de um domnio real, veja a prxima seo.

8.4

Converter da verso 4 para verso 8

Esta foi originalmente uma seo sobre o uso da bind 8 escrita por David E. Smith (dave@bureau42.ml.org). Ela foi editada para conter o novo nome da seo. No h muito a acrescentar. Exceto pelo uso do servidor named.conf ao invs de servidor named.boot, tudo mais idntico; bind8 vem com um programa perl que converte arquivos de estilo velho para o novo formato. Exemplo de um named.boot (velho estilo) para um servidor de nomes somente para cache:
directory /var/named cache . primary 0.0.127.IN-ADDR.ARPA primary localhost root.hints 127.0.0.zone localhost.zone

Na linha de comando, no diretrio bind8/src/bin/named (presume-se aqui que se tenham os fontes da distribuio. Caso se localize somente o pacote binrio, o programa estar por perto. -ed.), digite:
./named-bootconf.pl < named.boot > named.conf

87

Eletricazine

www.eletricazine.hpg.ig.com.br

8.5

Windows 2000 Active Directory e BIND

http://www.revistadolinux.com.br/artigos/005,030,3,160,979.html Guilherme de Assis Brasil gabrasil@aspdatasul.com.br Como todos sabemos, o Windows 2000 trouxe considerveis mudanas em relao ao seu antecessor, o Windows NT 4.0. Uma destas mudanas foi a implementao do novo servio de diretrios, o "Active Directory", que guarda informaes sobre os recursos da rede e os disponibiliza para usurios e aplicaes. Este servio utiliza-se de vrios recursos de integrao com padres da Internet como o DNS (Domain Name Service - Servio de Nome de Domnio), por exemplo. Neste aspecto, a migrao para a plataforma Windows 2000 pode se tornar um problema se voc no usa o servidor de DNS da Microsoft, o que at uma situao bastante comum. Normalmente, os administradores de DNS mais avanados gostam de manter os arquivo de zona de seus domnios bem documentados e organizados, e quando a funo de "Atualizao Dinmica" (RFC 2136) habilitada, isso se torna uma tarefa impossvel. Para desgosto deste seleto time de administradores o Active Directory do Windows 2000 usa extensamente o suporte as "Atualizaes Dinmicas" para funcionar corretamente e caso este no esteja habilitado, algumas partes do servio de diretrios pode no funcionar, como por exemplo a replicao de dados entre controladores de domnio. Porm existe uma forma simples de deixar o Active Directory funcionando sem a desorganizao habitual das atualizaes dinmicas. Estaremos ento mostrando como configurar o BIND (testamos no BIND 8.2.3 instalado em um Linux Slackware 7.1) para que o Active Directory funcione perfeitamente. importante lembrar que a tcnica mostrada aqui vale para qualquer outro servidor de DNS que suporte "Atualizaes Dinmicas" e registros SRV (RFC 2782), com as devidas diferenas de sintaxe de configurao. Para tal feito ser necessria a criao de uma zona primria sem suporte a atualizao dinmica e mais quatro subzonas com este suporte. O procedimento para configurar corretamente o BIND e deix-lo pronto para que o Active Directory possa utiliz-lo bem simples e os passos esto abaixo:

8.5.1 Criar a zona primria.


A zona primria deve ser criada normalmente, usarei o exemplo de um domnio chamado "intranet" para ilustrar os exemplos. Esta zona no ter suporte atualizao dinmica e todas as incluses de novas mquinas ocorrero aqui. Inclua a seguinte entrada no arquivo de configurao do BIND (geralmente "named.conf")
zone "intranet" in { type master; file "intranet.zone"; };

Esta uma entrada padro para a incluso de uma zona (domnio) no BIND, o arquivo "intranet.zone" deve ser criado normalmente, como 88

Eletricazine

www.eletricazine.hpg.ig.com.br

qualquer outro arquivo de zona de domnio, mas importante que os servidores que utilizaro os recursos do Active Directory esteja cadastrados corretamente tanto neste arquivo, como seus devidos reversos.

8.5.2 Criar as subzonas.


Quatro subzonas devem ser criadas, so elas "_msdcs", "_udp", "_tcp", "_sites". Estas subzonas tero suporte a atualizaes dinmicas e o acesso para escrever nestas zonas deve ser liberado para as mquinas com o active directory. As entradas no arquivo "named.conf" so:
zone "_msdcs.intranet" in { type master; file "msdcs.zone"; check-names ignore; allow-update { x.x.x.x/xx }; }; zone "_udp.intranet" in { type master; file "udp.zone"; check-names ignore; allow-update { x.x.x.x/xx }; }; zone "_tcp.intranet" in { type master; file "tcp.zone"; check-names ignore; allow-update { x.x.x.x/xx }; }; zone "_sites.intranet" in { type master; file "sites.zone"; check-names ignore; allow-update { x.x.x.x/xx }; };

O "x.x.x.x/xx" representa o nmero IP da rede onde esto as mquinas que usaro a atualizao dinmica. Por exemplo, para permitir atualizaes partindo da rede 192.168.0.0 com mscara 255.255.255.0 (classe C) deve-se colocar a entrada: "192.168.0.0/24".

89

Eletricazine

www.eletricazine.hpg.ig.com.br

9 NFS
Adaptado do NFS HowTo, por Nicolai Langfeldt Traduo Original da Conectiva Informtica - Janeiro de 1999

9.1 Introduo ao NFS


NFS, o Sistema de Arquivos em Rede tem trs importantes caractersticas: Possibilita o compartilhamento de arquivos sobre uma rede local. Funciona bastante bem. Possibilita diversos problemas de segurana que so bem conhecidos por intrusos, e podem ser explorados na obteno de acesso (leitura, gravao e remoo) de todos os arquivos de um sistema. Abordaremos todos estes assuntos neste Como Fazer. Por favor, no deixe de ler os itens sobre segurana neste Como Fazer, o que tornar a rede menos vulnervel a riscos tolos de segurana. As passagens sobre segurana sero bastante tcnicas e exigiro conhecimento sobre redes IP e sobre os termos usados. Caso no se reconhea algum dos termos aqui usados, verifique o Como Fazer - Redes ou obtenha um livro sobre administrao de redes TCP/IP. Esta uma boa idia de qualquer forma, caso se esteja administrando mquinas Unix/Linux. Um livro muito bom TCP/IP Network Administration de Craig Hunt, publicado pela O'Reilly & AssociatesInc. E aps , toda esta leitura, certamente voc ser mais valorizado no mercado de trabalho, e isso no se pode perder ;-) H duas sees de ajuda com problemas no NFS, chamadas Lista de Verificao e FAQs. Por favor, leia estas sees com ateno caso algo no funcione da maneira esperada.

9.2 Configurao do Servidor NFS


9.2.1 Pr-Requisitos
Antes de continuar a ler este captulo ser necessrio poder executar o programa telnet de e para as mquinas que sero usadas como servidor e cliente.

9.2.2 Primeiros Passos


Antes que se possa fazer qualquer coisa, ser necessrio ter um servidor NFS configurado. Caso se faa parte de alguma rede de um departamento ou rede universitria provavelmente j existiro diversos servidores NFS sendo executados. Casos eles permitam o acesso ou ao invs disso, se esteja lendo este Como Fazer para se obter acesso a um servidor NFS, no necessrio ler esta seo, podendo passar diretamente seo 9.3 Configurao do Cliente NFS.

90

Eletricazine

www.eletricazine.hpg.ig.com.br

Caso se necessite configurar um sistema diferente do GNU/Linux para atuar como servidor, ser necessrio ler o manual do sistema para descobrir como habilitar o NFS e a exportao de sistemas de arquivos. H uma seo neste documento explicando como fazer isto em muitos sistemas diferentes. Aps se descobrir isso tudo, pode-se continuar na leitura desta seo. Aqueles que continuaram a sua leitura esto avisados: vamos ter que configurar uma srie de programas.

9.2.3 O portmapper
O portmapper no GNU/Linux chamado tambm de portmap ou rpc.portmap. A pgina de manual online diz que se trata de "mapeador de portas DARPA para nmeros de programas RPC". Este o primeiro problema de segurana com o qual nos deparamos neste Como Fazer. A descrio de como evitar estes problemas podem ser encontrada na seo 9.4 Segurana e NFS, a qual eu repito que deve ser lida. Inicializando o portmapper! Ele chamado de portmap ou rpc.portmap e deve estar localizado no diretrio /usr/sbin (em algumas mquinas ele chamado de rpcbind). Pode-se inicializ-lo manualmente por hora, mas ele dever ser reinicializado toda vez que o sistema operacional for ativado, sendo ento necessrio editar os programas rc. Estes programas so explicados mais detalhadamente na pgina de manual do processo init, e usualmente esto localizados nos diretrios /etc/rc.d, /etc/init.d ou /etc/rc.d/init.d. Caso haja um programa chamado inet ou algo similar, este provavelmente ser aquele que deve ser editado. Porm, como faz-lo est alm do escopo deste documento. Deve-se iniciar o programa portmap e verificar se ele est ativo atravs do comando ps -aux. Encontrou-o? timo.

9.2.4 O mountd e o nfsd


Os prximos programas que necessitam ser executados so chamados mountd e nfsd. Porm, antes, necessrio editar outro arquivo. Desta vez o /etc/exports. O formato geral das entradas neste arquivo o seguinte:
diretrio computador(opo)

Onde: diretrio: caminho completo do diretrio a ser exportado. Se o diretrio no for seguido por um computador ou opo, qualquer computador ter acesso apenas de leitura (ro) ao diretrio; computador: mquinas que tero acesso ao diretrio exportado. Se nenhum computador for fornecido, o diretrio ser exportado a qualquer computador. Os valores vlidos so: o Nome de mquina, como gauss.alfamidia.com.br; o Grupos de computadores, como *.alfamidia.com.br; o Endereo IP/mscara, como 172.20.0.0/255.255.0.0; opo: define o tipo de acesso. Se no for informado, assumido apenas leitura (ro). Os valores mais comuns so: o ro: apenas leitura; o rw: leitura e escrita. 91

Eletricazine

www.eletricazine.hpg.ig.com.br

Digamos que se deseje que o sistema de arquivo /mn/parolin/local, o qual est localizado na mquina parolin se torne disponvel para a mquina chamada batel. Deve-se ento utilizar a seguinte configurao no arquivo /etc/exports na parolin:
/mn/parolin/local batel(rw)

As linhas acima fornecem a batel acesso de leitura e gravao (rw) para /mn/parolin/local. Ao invs de rw poderamos informar ro, o que fornece acesso somente para leitura e que o padro quando este parmetro no informado. H diversas opes que podem ser utilizadas e que sero discutidas juntamente com aspectos de segurana mais adiante. Elas esto descritas nas pginas de manual online do comando exports, a qual deve ser lida ao menos uma vez na vida. H ainda formas melhores de incluir diversas mquinas no arquivo exports. Pode-se por exemplo, usar grupos de rede caso se esteja utilizando NIS (ou NYS) (NIS foi conhecido como YP) e especificar sempre um domnio com caracteres de generalizao, ou subredes IP como mquinas que tm permisso para montar algo. Porm necessrio considerar que poder ser possvel obter acesso ao servidor de forma no autorizada caso se utilize autorizaes to genricas. Nota: o arquivo exports no tem a mesma sintaxe que em outros Unixes. Aps a definio dos diretrios a serem exportados no arquivo /etc/exports, ser necessrio executar o comando exportfs para processar este arquivo e atualizar o arquivo /var/lib/nfs/xtab. O arquivo xtab contm informaes sobre os diretrios exportados e o arquivo que o mountd l quando est processando a solicitao de montagem do cliente. O formato do comando o seguinte:
[root@gauss /root] # exportfs -r

Agora que configuramos o mountd (ou talvez ele seja chamado rpc.mountd) e o nfsd (o qual pode ser chamado rpc.nfsd), ambos iro ler o arquivo exports. Caso se edite o /etc/exports deve-se estar seguro de que os programas nfsd e mountd fiquem cientes destas alteraes. A forma tradicional atravs da execuo do comando exportfs. Muitas distribuies GNU/Linux no possuem o programa exportfs. Caso este seja o seu caso, pode-se instalar o seguinte programa na mquina local:
#!/bin/sh killall -HUP /usr/sbin/rpc.mountd killall -HUP /usr/sbin/rpc.nfsd echo re-exportando sistemas de arquivos

O programa acima deve ser salvo, por exemplo como /usr/sbin/exportfs, e deve ser executado o comando chmod a+rx exportfs. Agora, toda vez que uma alterao for efetuada, deve-se executar o comando exportfs a seguir, com privilgios de superusurio. Agora deve-se checar se mountd e nfsd esto sendo adequadamente executados. Inicialmente deve-se executar o comando rpcinfo -p. Ele dever apresentar uma sada similar a:
program vers proto 100000 2 tcp 100000 2 udp port 111 portmapper 111 portmapper

92

Eletricazine
100005 100005 100003 100003 1 1 2 2 udp tcp udp tcp 745 747 2049 2049 mountd mountd nfs nfs

www.eletricazine.hpg.ig.com.br

Como se pode perceber, o portmapper anunciou os seus servios, assim como mountd e nfsd. Caso se obtenha uma mensagem similar a rpcinfo: no foi possvel contactar o portmapper: RPC: Erro no sistema remoto - Conexo recusada ou algo similar, possivelmente o portmapper no esteja sendo executado. Caso se obtenha uma mensagem similar a Nenhum programa remoto registrado. Ento, ou o portmapper no deseja falar com a mquina local ou existe algum erro. Pode-se finalizar o nfsd, o mountd e o portmapper e tentar reinici-los nesta ordem novamente. Aps verificar os servios disponveis segundo o portmapper, pode-se fazer uma checagem atravs do comando ps. O portmapper continuar a reportar um servio, mesmo aps o programa responsvel ter sido finalizado com erro, por exemplo. Ento um comando ps poder ser a maneira mais simples de descobrir que programas esto efetivamente sendo executados. Evidentemente, ser necessrio modificar os arquivos rc do sistema para inicializar o mountd e o nfsd, assim como o portmapper, quando o sistema operacional for carregado. muito provvel que estes programas j existam na mquina local e que se deva somente descomentar as sees adequadas ou ativ-los nos nveis de execuo corretos. Pginas de manual online que j devem ter sido visitadas at agora: portmap, mountd, nfsd, e exports. Bem, caso tudo tenha sido feito exatamente como foi descrito aqui, j temos disposio todo o conjunto de ferramentas necessrias para iniciar um cliente NFS.

9.3 Configurao do Cliente NFS


Inicialmente necessrio ter um kernel com o suporte a sistemas de arquivo NFS compilado ou como um mdulo. Isso deve ser configurado antes da compilao do kernel. Caso se esteja utilizando uma distribuio muito boa e nunca se tenha lidado com o kernel ou mdulos, nfs est magicamente sua disposio. O comando showmount lista os diretrios que o servidor exporta e os clientes que tm permisso para montar esses diretrios:
[root@gauss /root] # showmount -exports parolin /mn/parolin/local batel(rw)

Pode-se agora, na linha de comandos do superusurio, informar o comando de montagem apropriado e o sistema de arquivos estar disponvel. Continuando com nosso exemplo anterior, desejamos montar /mn/parolin/local a partir de parolin. Isso deve ser feito atravs do seguinte comando:
mount t nfs parolin:/mn/parolin/local /mnt/nfs

ou
mount -o rsize=1024,wsize=1024 parolin:/mn/parolin/local /mnt/nfs

93

Eletricazine

www.eletricazine.hpg.ig.com.br

(Retornaremos posteriormente s opes rsize e wsize). O sistema de arquivos est agora disponvel sob /mnt e pode-se acess-lo atravs do comando cd, assim como verificar o seu contedo atravs do comando ls, e observar os arquivo individualmente. Pode-se perceber que ele no to rpido quando um sistema local, mas muito mais amigvel que o uso do ftp. Se, ao invs de montar um sistema de arquivos, o comando mount apresente uma mensagem de erro como mount:parolin:/mn/parolin/local falhou, razo fornecida pelo servidor: Permisso negada, ento o arquivo exports contm algum erro. Caso ele informe mount clntudp_create: RPC: Programa no registrado isso significa que os programas nfsd ou mountd no esto sendo executados no servidor. Para desmontar o sistema de arquivos basta comandar:
umount /mnt

Para que um sistema de arquivos nfs seja montado na inicializao do sistema operacional, deve-se editar o arquivo /etc/fstab da forma usual. No caso de nosso exemplo, deve-se adicioar a seguinte linha:
# dispositivo pto.montagem tipo_sist_arqs opes parolin:/mn/parolin/local /mnt dump ordem verif. 0

nfs rsize=1024,wsize=1024 0

Bem, parece tudo. Quase. Continue a leitura por favor.

9.3.1 Opes de Montagem


H algumas opes que devem ser consideradas. Eles definem a forma como o cliente NFS lida com uma queda do servidor ou da rede. Um dos aspectos mais interessantes sobre NFS que ele lida com estas situaes com elegncia, desde que o cliente esteja corretamente configurado. H dois tipos distintos de parmetros de tratamento de falhas: soft O cliente NFS reporta um erro ao processar o acesso a um arquivo localizado em um sistema de arquivos montado via NFS. Alguns programas podem lidar com isto com compostura, outros no. Esta opo no recomendada. hard O programa que acessa um arquivo em um sistema de arquivos montado via NFS ir travar sempre que o servidor no responder. O processo no pode ser interrompido ou finalizado a menos que se tenha especificado intr. Quando o servidor NFS esteja novamente ativo, o programa ir continuar a partir do ponto onde tenha parado. Isso provavelmente o que se deseje. Recomendamos o uso do parmetro hard,intr em todos os sistemas de arquivos montados via NFS. A partir do exemplo anterior, esta seria a entrada no arquivo fstab:
# dispositivo pto.montagem tipo_sist_arqs opes dump ordem verif. parolin:/mn/parolin/local /mnt nfs rsize=1024,wsize=1024,hard,intr 0 0

9.3.2 Otimizando o NFS


Normalmente, caso as opes rsize e wsize seja especificados, o NFS ir ler e gravar blocos de 4096 e 8172 bytes. Algumas combinaes de kernel do GNU/Linux e placas de rede no podem lidar com blocos grandes e no

94

Eletricazine

www.eletricazine.hpg.ig.com.br

podem ser otimizados. Ento vamos tentar descobrir como encontrar os parmetros rsize e wsize que funcionem da maneira mais otimizada possvel. possvel testar a velocidade das opes com um simples comando. Dado o comando mount conforme descrito acima, logo temos acesso de gravao ao disco, podendo executar um teste de performance de gravao seqencial:
time dd if=/dev/zero of=/mnt/testfile bs=16k count=4096

Este comando criar um arquivo de 64 Mb de bytes zerados (que deve ser grande o suficiente para que o cache no altere significativamente a performance. Pode ser usado um arquivo maior caso o sistema local tenha muita memria). Isso pode ser feito algumas vezes (5-10?), para que se possa ter uma mdia bem fundamentada. Neste casos, o importante medir o tempo de "relgio" e o tempo efetivamente gasto na conexo. Aps, pode-se testar a performance da leitura ao se ler o arquivo de volta:
time dd if=/mnt/testfile of=/dev/null bs=16k

Isso pode ser feito algumas vezes. Aps deve-se executar o comando mount e umount novamente com tamanhos maiores em rsize e wsize. Eles devem ser provavelmente mltiplos de 1024, e no maior que 16384 visto que este o tamanho mximo do NFS verso 2. Exatamente aps a montagem de um tamanho maior, acesse o sistema de arquivos montado atravs do comando cd e explore-o atravs do comando ls, para estar seguro que ele est funcionando perfeitamente. Caso os parmetros rsize/wsize sejam muito grandes, os sintomas no so muito bvios. Um tpico sintoma uma lista incompleta dos arquivos produzida pelo comando ls e nenhuma mensagem de erro. Ou ao se ler um arquivo ele falha misteriosamente, sem mensagens de erro. Aps definir que os parmetros rsize/wsize funcionam perfeitamente deve-se executar os testes de performance. SunOS e Solaris tem a reputao de funcionar muito melhor com blocos de 4096 bytes. kernels mais recentes do GNU/Linux (desde o 1.3) executam a leitura antecipada para rsizes maiores ou iguais ao tamanho de pgina da mquina. Em mquinas Intel o tamanho de pgina de 4.096 bytes. A leitura adiantada aumenta significativamente a performance de leitura do NFS. Ou seja, sempre que possvel deve-se usar o rsize de 4.096 bytes em mquinas Intel. Lembre-se de editar o arquivo /etc/fstab com os valores de rsize/wsize encontrados. Uma sugesto para incrementar a performance de gravao do NFS desabilitar o sincronismo de gravao do servidor. A especificao NFS indica que a gravao NFS solicitada no pode ser considerada finalizadas antes dos dados serem gravados em um meio no voltil (normalmente o disco rgido). Isso restringe a performance de gravao de alguma forma, enquanto que gravaes assncronas iro aumentar a velocidade do NFS. O servidor GNU/Linux nfsd nunca faz gravaes sncronas uma que a prpria implementao do sistema de arquivos no o faz, mas em servidores em sistemas operacionais diferentes isso pode aumentar a performance atravs do seguinte parmetro no arquivo exports:
/dir -async,access=linuxbox

ou algo similar. Por favor verifique a pgina de manual online da mquina em questo. Cabe salientar que esta opo aumenta o risco de perda de dados no caso de algum problema ocorrer antes da efetiva gravao dos dados. 95

Eletricazine

www.eletricazine.hpg.ig.com.br

9.4 Segurana e NFS


No me considero um expert em segurana de computadores. Porm existem algumas sugestes importantes. importante ressaltar que esta no uma lista completa de todos os aspectos relacionados com segurana e caso se imagine que implementando somente estes no se poder ter qualquer problema relacionado com o tema segurana, por favor me envie seu email que eu tenho uma ponte e desejo vend-la. Esta seo provavelmente fora de questo caso se esteja em uma rede fechada onde todos os usurios so conhecidos e ningum que no seja confivel pode acessar a rede, ou seja no h forma de discar para a rede e no h forma de conectar-se a outras redes onde existam usurios no confiveis. Isso soa como parania? No sou paranico. Isso somente um aviso bsico de segurana. E lembre-se, o que aqui for dito somente uma base para o tema. Um site seguro necessita de um administrador diligente e com conhecimento que consiga encontrar informaes sobre problemas de segurana correntes e potenciais. NFS um problema bsico, caso o cliente no seja informado do contrrio ir confiar no servidor NFS e vice e versa. Isso pode ser ruim, pois se a senha do superusurio no servidor NFS for quebrada, a senha dos superusurios dos clientes tambm o ser com relativa facilidade. E vice e versa. H algumas estratgias para se evitar isso, as quais mencionaremos adiante. Um leitura obrigatria so os avisos do CERT sobre NFS, onde muitos dos textos lidam com conselhos sobre segurana. Veja em ftp.cert.org/01README por uma lista atualizada dos avisos CERT. Aqui esto alguns dos relacionados com NFS:
CA-91:21.SunOS.NFS.Jumbo.and.fsirand 12/06/91

Vulnerabilidade preocupa Sun Microsystems, Inc. (Sun) Sistema de Arquivos em Rede (NFS) e o programa fsirand. Estas vulnerabilidades afetam o SunOS verses 4.1.1, 4.1 e 4.0.3 em todas as arquiteturas. Atualizaes esto disponveis para SunOS 4.1.1. Uma atualizao inicial para o NFS SunOS 4.1 est tambm disponvel. Sun ir disponibilizar atualizaes completas para as verses SunOS 4.1 e SunOS 4.0.3 em uma verso posterior.
CA-94:15.NFS.Vulnerabilidades 12/19/94

Este aviso descreve as medidas de segurana a serem tomadas para evitar diversas vulnerabilidades do Sistema de Arquivos em Rede (NFS). Os avisos foram gerados devido ao incremento do comprometimento de superusurios atravs de invasores usando ferramentas que exploram estas falhas.
CA-96.08.pcnfsd 04/18/96

Este aviso descreve a vulnerabilidade do programa pcnfsd (tambm conhecido como rpc.pcnfsd). Uma atualizao est includa.

96

Eletricazine

www.eletricazine.hpg.ig.com.br

9.4.1 Segurana no Cliente


No cliente, podemos decidir se desejamos ou no confiar no servidor, atravs de algumas opes na montagem. Por exemplo, possvel proibir programas suid a funcionarem em sistemas de arquivos NFS atravs da opo nosuid. Esta pode ser uma boa idia que deve ser considerada no uso de todos os discos montados via NFS. Esta opo indica que o superusurio do servidor no pode fazer um programa com caractersticas de suid no sistema de arquivos, o que possibilitaria que ele acessasse o cliente como um usurio normal e usasse o programa suid-superusurio para tornar-se root na mquina cliente. Deve-se proibir tambm a execuo de arquivo em sistemas de arquivos montados, atravs da opo noexec. Porm isso pode ser impraticvel por vezes, assim como o nosuid uma vez que um sistema de arquivos normalmente contm alguns programas que necessitam ser executados. Estes parmetros podem ser informados na coluna opes, juntamente com os parmetros rsize e wsize, separados por vrgulas.

9.4.2 Segurana no Servidor: nfsd


No servidor pode-se decidir sobre a possibilidade de confiar na conta do superusurio do cliente. Isso definido atravs do uso da opo root_squash no arquivo exports:
/mn/parolin/local batel(rw,root_squash)

Agora caso um usurio com nmero de identificao igual a 0 (UID) tentar acessar (ler, gravar, remover) o sistema de arquivos, o servidor substituir o UID pela identificao da conta "nobody" (ningum). Isso faz com que o superusurio da mquina cliente no possa acessar arquivos ou executar mudanas autorizadas somente para o superusurio do servidor. Isso aconselhvel e provavelmente deva-se usar root_squash em todos os sistemas exportados. "Porm o superusurio cliente pode ainda usar o comando 'su' para tornar qualquer outro usurio e acessar e alterar -se quaisquer arquivos", o que se pode pensar primeira vista. A resposta : sim, desta forma que as coisas funcionam com Unix e NFS. Isso traz uma implicao importante: todos os binrios e arquivos importantes devem pertencer ao superusurio root, e no a bin ou outra conta diferente, uma vez que somente a conta do superusurio da mquina cliente pode acessar a conta do superusurio no servidor. Na pgina de manual online do nfsd h diversas outras opes squash que podem ser usadas, ento o administrador deve decidir quem no pode ter acesso conta do superusurio. Existem opes de se evitar o uso de faixas ou de qualquer UID ou GID que se deseje. Isso est descrito na mesma pgina de manual. root_squash na verdade o padro do nfsd do Linux. Para permitir acesso a um sistema de arquivos como superusurio deve-se usar a opo no_root_squash. Outro aspecto importante garantir que o nfsd verifique que todas as requisies so provenientes de uma porta autorizada. Caso se aceite requisies de qualquer porta antiga de um usurio sem privilgios especiais, torna-se simples acessar o sistema de arquivos atravs da Internet, por exemplo. Basta usar o protocolo nfs e identificar-se como qualquer usurio que se deseje. Ooopss. O nfsd do GNU/Linux realiza esta verificao por padro,

97

Eletricazine

www.eletricazine.hpg.ig.com.br

em outros sistemas operacionais deve-se habilitar esta opo. Isso dever estar descrito na pgina de manual do servidor nfs do sistema. Um dado adicional. Nenhum sistema de arquivo deve ser exportado para o 'localhost' ou 127.0.0.1. Acredite em mim.

9.4.3 Segurana no Servidor: o portmapper


O portmapper bsico em combinao com nfsd tem um problema de desenho que torna possvel obter arquivos em servidores NFS sem a necessidade de quaisquer privilgios. Felizmente o portmapper do GNU/Linux relativamente seguro contra este tipo de ataque, o que pode ser evitado atravs da configurao de uma lista de acessos em dois arquivos, Inicialmente editaremos o /etc/hosts.deny. Ele dever conter a seguinte linha:
portmap: ALL

atravs da qual o acesso ser bloqueado para todos os cliente. Isto talvez seja um pouco drstico, ento podemos tornar as definies um pouco mais maleveis atravs da edio do arquivo /etc/hosts.allow. Inicialmente necessrio definir que ser colocado nele. Ele contm basicamente uma lista de todas as mquinas que podem acessar o portmapper local. Em um sistema GNU/Linux h normalmente poucas mquinas que necessitem este tipo de acesso, qualquer que seja a razo. O portmapper administra os programas nfsd, mountd, ypbind/ypserv, pcnfsd, e servios 'r' como ruptime e rusers. Todas as mquinas que necessitam acessar os servios da mquina local deve ter permisso para tanto. Digamos que o endereo da mquina local seja 129.240.223.254 e que ela est conectada subrede 129.240.223.0, a qual deve ter acesso mquina local (em caso de dvida verifique o Como Fazer Redes para refrescar a memria sobre estes conceitos). Para tanto basta executar:
portmap: 129.240.223.0/255.255.255.0

no arquivo hosts.allow. Este o mesmo endereo de rede fornecido para o comando route e a mscara de subrede informada no ifcongif. No dispositivo eth0 desta mquina ifconfig mostraria:
... eth0 Link encap:10Mbps Ethernet HWaddr 00:60:8C:96:D5:56 inet addr:129.240.223.254 Bcast:129.240.223.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:360315 errors:0 dropped:0 overruns:0 TX packets:179274 errors:0 dropped:0 overruns:0 Interrupt:10 Base address:0x320

...

e netstat -rn apresentaria


Tabela de Roteamento do Kernel Destinao Cam.Padro Mscara Indics Mtrica Ref Uso Iface ... 129.240.223.0 0.0.0.0 255.255.255.0 U 0 0 174412 eth0 ...

o endereo de rede na primeira coluna.

98

Eletricazine

www.eletricazine.hpg.ig.com.br

Os arquivos hosts.deny e hosts.allow so descritos nas pgina de manual de mesmo nome. IMPORTANTE: no coloque nada exceto ENDEREOS IP nas linhas do portmap nestes arquivos. Pesquisas por nomes podem indiretamente causar atividade do portmap o qual acionar a pesquisa de nomes de mquinas a qual indiretamente ir causa atividade no portmap., As sugestes acima certamente deixaro o servidor mais seguro. As questes restantes residem em algum que tenha descoberto a senha do superusurio (ou inicializando um MS-DOS) em uma mquina confivel e usando este privilgio para enviar requisies a partir de uma porta segura como qualquer outro usurio real.

9.4.4 NFS e Firewalls


uma boa idia proteger o servidor nfs e as portas portmap no roteador ou no firewall. O nfsd opera normalmente na porta 2049, nos protocolos udp e tcp. O portmapper na porta 111, tcp e udp e o mountd na porta 745 e 747, tcp e udp. Estas informaes devem ser checadas atravs do comando rpcinfo -p. Por outro lado, caso se deseje permitir o acesso ao NFS atravs de um firewall, h opes em programas mountd e nfsd mais recentes que permitem o uso especfico e no padronizado de portas que podem ser abertas atravs de um firewall.

9.4.5 Resumo
Caso se utilize hosts.allow/deny, root_squash, nosuid e funcionalidades de portas privilegiadas para os softwares portmapper e nfs pode-se evitar muitos dos problemas atualmente conhecidos sobre segurana e pode sentirse quase seguro sobre estes problemas no mnimo. Porm h mais ainda: quando um intruso tem acesso rede, ele pode incluir comandos estranhos nos arquivos .forward ou nos arquivos de mensagens, quando /home ou /var/spool/mail so montados via NFS. Pela mesma razo, nunca se deve dar acesso s chaves privadas PGPP sobre nfs. Ou no mnimo, deve-se saber dos riscos envolvidos. Pelo menos isso voc j sabe. NFS e o portmapper criam um subsistema complexo e adicionalmente h problemas que so descobertos e que devem ser solucionados, alm da necessidade de se ter em mente o desenho bsico de implementao a ser usado. Para estar ciente do que est ocorrendo pode acessar o grupo de notcias comp.os.linux.announce e comp.security.announce eventualmente.

9.5 Pontos de Verificao de Montagem


Esta seo baseada na lista de verificao de problemas da IBM Corp. Meus agradecimentos a eles por tornarem ela disponvel para este Como Fazer. Caso o leitor esteja com algum problema em montar sistemas de arquivos NFS, por favor consulte esta lista. Cada item descreve um problema especfico e a sua soluo. 1. O sistema de arquivos no foi exportado, ao menos para a mquina cliente em questo. Soluo: Inclui-lo no arquivo exports. 99

Eletricazine

www.eletricazine.hpg.ig.com.br

2. A resoluo de nomes no confere com a lista de exports. por exemplo: a lista em export indica uma exportao para johnmad mas o nome johnmad resolvido como johnmad.austin.ibm.com, fazendo com que a permisso de montagem seja negada. Soluo: Exportar em ambos os formatos de nomes. Isso pode ocorrer ainda quando o cliente tem 2 interfaces com nomes diferentes para cada um dos dois dispositivos e o comando export especifica somente um deles. Soluo: Exportas para ambas as interfaces. Isso pode ocorrer tambm quando o servidor no consegue executar um chamada lookuphostbyname ou lookuphostbyaddr (so funes da biblioteca) no cliente. Estej seguro de que o cliente pode executar mquina <nome>; mquina <endereo_ip>; e que ambos mostram a mesma mquina. Soluo: ajustar a resoluo de nomes no cliente. 3. O sistema de arquivos foi montado aps a inicializao do NFS (no servidor). Neste caso o sistema de arquivos est exportado sob um ponto de montagem. Soluo: Desativar nfsd e reinicializ-lo. Nota: os clientes que tenham pontos de montagem sob sistemas de arquivos tero problemas no acesso aps a reinicializao. N.T.: nestes casos recomendada a execuo do comando mount -a, como superusurio, na mquina cliente. 4. As datas esto estranhamente diferentes em ambas as mquinas (o que pode gerar inconsistncias com os arquivos). Soluo: Ajustar as datas. O autor do Como Fazer sugere o uso do NTP para sincronismo de relgios. Uma vez que existem restries de exportao do NTP para fora dos EUA, pode-se obter uma cpia em uma distribuio GNU/Linux ou em ftp://ftp.hacktic.nl/pub/replay/pub/linux ou em um site espelho. 5. O servidor no aceita uma montagem de um usurio presente em mais de 8 grupos. Soluo: diminuir o nmero de grupos aos quais o usurio pertena ou alterar o usurio na montagem.

9.6 FAQ
Esta uma seo de perguntas e respostas. Muito do que est contido aqui foi escrito por Alan Cox.

100

Eletricazine

www.eletricazine.hpg.ig.com.br

1. Obtive uma srie de erros de manipulao de arquivos nfs ao usar o GNU/Linux como servidor. Isso causado por uma antiga verso do nfsd. Est corrigida a partir da verso nfs-server2.2beta16. 2. Ao tentar montar um sistema de arquivos, surge a mensagem: 3. no foi possvel registrar-se no portmap: erro do sistema no envio 4. Provavelmente se est utilizando o sistema da Caldera. H um problemas com os programas rc. Por favor entre em contato com eles para correo do problema. 5. Por que no possvel executar um arquivo aps copi-lo para o servidor NFS? A questo reside no fato do nfsd criar caches de manipulao de arquivos por questes de performance (lembre-se que ele executado em um espao de usurio). Enquanto nfsd tem um arquivo aberto (como no caso em que ele esteja sendo gravado), o kernel no permite a sua execuo. Os programas NFSd a partir de 95 liberam os arquivos aps alguns segundos, j verses mais antigas podem levar dias. 6. Os arquivos NFS esto todos com permisses somente de leitura. O padro do servidor NFS GNU/Linux somente fornecer permisses de leitura para arquivos montados. O arquivo /etc/exports deve ser alterado caso se deseje algo diferente. 7. Existe um sistema de arquivos montado a partir de um servidor nfs GNU/Linux e enquanto o comando ls trabalha, a leitura e gravao de arquivos no funcionam. Em verses mais antigas do Linux, deve-se montar um servidor NFS com os parmetros rsize=1024,wsize=1024. 8. Ao montar a partir de um servidor NFS GNU/Linux com um bloco de tamanho entre 3500-4000 ele trava regularmente. Bem...no faa mais isso! 9. O GNU/Linux pode executar NFS sobre TCP? No no momento. 10. Ao se montar a partir de uma mquina Linux, obtm-se inmeros erros.

101

Eletricazine

www.eletricazine.hpg.ig.com.br

Esteja certo de que os usurios utilizados esto presentes em no mximo 8 grupos. Servidores mais antigos requerem isso. 11. Ao reinicializar a mquina, ela algumas vezes trava ao tentar desmontar um servidor NFS. No desmonte servidores NFS ao reinicializar ou desligar. Simplesmente ignore-os. Isso no ir machucar nimgum. O comando umount -avt nonfs. 12. Clientes GNU/Linux NFS so muito lentos ao tentar gravar em sistemas Sun e BSD. NFS executa gravaes sncronas (que podem ser desabilitadas caso no haja nenhum grande problema em se perder algum dado). Kernels derivados do BSD tendem a trabalhar mal com pequenos blocos. Porm ao se gravar blocos de 4 Kb de dados a partir de uma mquina Linux, usando pacotes de 1 Kb, faz com que o GNU/Linux use a rotina BSD na seguinte forma: ler pgina de 4K alterar para 1K gravar 4K no disco rgido ler pgina de 4K alterar para 1K gravar 4K no disco rgido etc.

102

Eletricazine

www.eletricazine.hpg.ig.com.br

10 NIS
10.1 Introduo
O servio NIS (Network Information Service, ou Servio de Informaes de Rede) fornece para os usurios da rede local um ambiente de rede transparente. Os dados de contas do usurio e nomes das mquinas so mantidos no servidor, permitindo que os usurios usem qualquer mquina da rede sem se preocupar com senhas diferentes e cpia de arquivos. O NIS baseado em RPC (Remote Procedure Call, ou Chamada de Procedimento Remoto), e composto basicamente do servidor, que armazena as informaes, do cliente, que acessa o servidor, e das informaes administrativas. Originalmente, o NIS era chamado de YP (Yellow Pages, ou Pginas Amarelas). Infelizmente esse nome uma marca registrada da British Telecom, e o nome do servio teve que ser mudado. Mas os nomes dos comandos permaneceram, por isso temos o ypserv (servidor) e ypbind (cliente).

10.1.1

Mapas

Mapas so estruturas de dados geradas a partir dos arquivos mestre, tais como /etc/passwd e /etc/hosts. Para alguns arquivos so criados vrios tipos de mapas.

10.1.2

Tipos de Servidores

Existem dois tipos de servidores NIS: mestre e escravo. Um servidor mestre uma mquina exclusiva, com um domnio particular, que mantm os mapas autenticados. O mestre executa o daemon ypupdated, que alerta os servidores escravos da necessidade da atualizao de seus mapas. Todas as mudanas de mapas so feitas no mestre, e depois propagadas para os escravos. Os servidores escravos agem como intermedirios entre os clientes e o mestre, mantendo rplicas exatas dos mapas contidos no servidor principal. As mquinas cliente, por sua vez, executam o servidor ypbind, que as torna capazes de executar processos para obter informaes de um servidor.

10.2 Configurando o Servidor Mestre


A primeira coisa a fazer verificar se os pacotes ypserv, ypbind e yptools esto instalados:
[root@gauss:~] # rpm -qa | grep yp-tools [root@gauss:~] # rpm -qa | grep ypbind [root@gauss:~] # rpm -qa | grep ypserv [root@gauss:~] # rpm -Uvh yp-tools* [root@gauss:~] # rpm -Uvh ypbind* [root@gauss:~] # rpm -Uvh ypserv*

Caso no, instale os pacotes seguindo os seguintes comandos:

103

Eletricazine

www.eletricazine.hpg.ig.com.br

Verifique se os arquivos /etc/gshadow e /etc/netgroup esto presentes, caso no crie os arquivos com o comando abaixo:
[root@gauss:~] # touch /etc/gshadow [root@gauss:~] # touch /etc/netgroup

Depois disso, deve-se verificar se o nome do domnio NIS est correto. Para isso, basta executar o comando nisdomainname e verificar o resultado. importante ressaltar que o domnio NIS no tem nenhuma relao com o domnio DNS, embora na maioria das vezes o nome seja o mesmo.
[root@gauss:~] # nisdomainname alfamidia.

importante a presena do ponto no final do nome. Se o nome estiver incorreto, basta executar:
[root@gauss:~] # nisdomainname alfamidia.

Em seguida, deve-se executar os servios portmap e ypserv:


[root@gauss:~] # touch /etc/init.d/portmap start Iniciando o portmapper...OK [root@gauss:~] # touch /etc/init.d/ypserv start Iniciando o YP server...OK

O prximo passo incluir o prprio servidor na lista de servidores:


[root@gauss:~] # /usr/lib/yp/ypinit m At this point, we have to construct a list of the hosts which will run NIS servers. gauss is in the list of server hosts. Please continue to add the names for the other hosts, one per Line. When you are done with the list, type a <Ctrl-D>. Next host to add: gauss Next host to add: Is this correct? [y/n: y] y We need some minutes to build the databases... ()

Este comando ir gerar a base de dados do NIS e atualizar os mapas. Depois disso, preciso inicializar o servidor de senhas:
[root@gauss:~] # touch /etc/init.d/yppasswd start Iniciando o YP passwd...OK

Este servio permite que o usurio possa alterar sua senha em qualquer mquina da rede, atravs do comando yppasswd. importante ressaltar que se qualquer arquivo relacionado ao servidor for atualizado, os mapas devem ser gerados novamente, e para isso deve-se executar o comando make no diretrio /var/yp. Por exemplo, se for acrescentado um usurio ao sistema:
[root@gauss:~] # cd /var/yp [root@gauss yp]# make

Pode-se alterar a configurao padro do servidor no arquivo /etc/ypserv.conf. Veja a documentao do NIS para mais detalhes de como faz-lo.

104

Eletricazine

www.eletricazine.hpg.ig.com.br

10.3 Configurando o cliente


A primeira coisa a fazer verificar se os pacotes ypbind e yp-tools esto instalados:
[root@tales ~]# rpm -qa | grep yp-tools [root@tales ~]# rpm -qa | grep ypbind

Caso no, instale os pacotes seguindo os seguintes comandos:


[root@tales ~]# rpm -Uvh yp-tools* [root@tales ~]# rpm -Uvh ypbind*

As mquinas cliente so configuradas pelo arquivo /etc/yp.conf. Ele utilizado pelo ypbind para fazer a ligao com o servidor. O arquivo deve possuir uma das seguintes entradas vlidas:
domain NISDOMAIN server HOSTNAME

Esse formato usa o nome do servidor (HOSTNAME) para o domnio NIS (NISDOMAIN).
domain NISDOMAIN broadcast

Esse formato faz um broadcast na rede para descobrir qual o servidor do domnio NISDOMAIN.
ypserver HOSTNAME

Esse formato usa o servidor HOSTNAME, qualquer que seja o domnio. Um exemplo de configurao:
domain alfamidia. broadcast

Depois disso, deve-se configurar o nome do domnio a que o cliente pertence. Isso feito no arquivo /etc/sysconfig/network:
NISDOMAIN=domnio.

No nosso exemplo:
NISDOMAIN=alfamidia.

10.3.1

Executando os servios no cliente

Por ltimo, temos que inicializar os servios do NIS no cliente:


[root@tales ~]# touch /etc/init.d/portmap start Iniciando o portmapper...OK [root@tales ~]# touch /etc/init.d/ypbind start Ligando ao domnio NIS...OK Aguardando por um servidor de domnio NIS: ... gauss.alfamidia.

10.3.2

Configurando o sistema de busca

Para que o NIS seja usado para busca de nomes de mquinas da rede, deve ser acrescentada a opo nis na llinha order do arquivo /etc/host.conf:
Order hosts,bind,nis

Para maior detalhes, consulte a documentao do resolv. Opcionalmente, pode ser usado tambm o arquivo /etc/nsswitch.conf para configurar o sistema de buscas do NIS. Veja mais detalhes sobre o arquivo na sua documentao.

105

Eletricazine

www.eletricazine.hpg.ig.com.br

11 FTP
11.1 Introduo ao FTP
O FTP (File Transfer Protocol, ou Protocolo de Transferncia de Arquivos) permite que o usurio realize transferncias de arquivos entre a sua mquina e um ponto remoto da rede. A porta padro utilizada pelo FTP a 21. A autenticao dos usurios feita usando as prprias senhas do sistema. Existe tambm uma forma sem autenticao, chamada FTP Annimo (Anonymous FTP), onde o usurio tem acesso apenas ao diretrio home do usurio ftp. O servidor ftp mais utilizado com o Linux o wu-ftp.

11.2 Configurao do servidor FTP


Primeiro devemos verificar se o servidor FTP est ativo no arquivo /etc/inetd.conf:
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd l a

incio.

Geralmente, basta descomentar a linha, removendo o carctere # do

O parmetro -l ativa o log, o -a habilita o arquivo de configurao /etc/ftpaccess. Pronto, j possvel acessar o sevidor ftp.

11.2.1

Arquivos de configurao adicionais

O principal arquivo de configurao do ftpd o /etc/ftpaccess:


# Define uma classe de usurios: reais, convidados e annimos class all real,guest,anonymous * class rmtusers guest,anonymous * class local real * # Para restringir o acesso de usurios reais, basta retirar o real da linha anterior # Para restringir o acesso de usurios convidados, basta retirar o guest da linha anterior # Para restringir o acesso de usurios annimos, basta retirar o anonymous da linha anterior # possvel restringir o acesso de tipos de usurios de um certo domnio : class renegados real !*.domnio.com.br # O "!" funciona como negao e renegados = o nome da classe # Probe qualquer mquina do domnio conectiva.com.br de efetuar login e # exibe o arquivo /etc/wu-ftpd/access_deny_msg deny *.conectiva.com.br /etc/wu-ftpd/access_deny_msg # Probe que as mquinas/domnios listados no arquivo # /etc/wu-ftpd/deny_hosts efetuem login e exibe a mensagem contida no # arquivo /etc/wu-ftpd/access_deny_msg

106

Eletricazine

www.eletricazine.hpg.ig.com.br

deny /etc/wu-ftpd/deny_hosts /etc/wu-ftpd/access_deny_msg # Definio de grupos de convidados, mesmo sendo um usurio real, caso o # grupo do mesmo esteja na lista de guestgroup a sesso de ftp dele ser # automaticamente passada para uma sesso annima guestgroup users # Define um usurio convidado. No /etc/passwd deve estar definido o seu # diretrio root e tambm o $HOME deste usurio ao utilizar o<htmlurl url=" ftp." name=" ftp."> Esses # diretrios devem ser separados por "/./", por exemplo: # convidado:senha:id:gid:Conta de FTP - convidado:/ftp/./incoming:/etc/ftponly guestuser convidado # Definio de grupos/usurios reais, por exemplo, caso se tenha utiizado a # opo guestgroup * mas ainda deseja-se que os usurios do grupo suporte # queiram acessar como reais: realgroup suporte realuser usuario # Toda vez que um usurio da classe abaixo acessar o ftp, o processo do # servidor ftp ir ter prioridade = valor nice nice <valor nice> [<classe que se logar>] # Define o valor de umask para cada classe ou geral defumask 011 rmtusers defumask 022 local # Segundos que o servio espera pela vinda de uma conexo PASV timeout accept 120 # Segundos que o servio espera para realizar a conexo de dados com a porta timeout connect 120 # Segundos que o servio espera por atividades na conexo de dados timeout data 1200 # Segundos que o servio espera pelo prximo comando timeout idle 900 # Segundos que o servio espera pelo prximo comando (valor mximo, no pode # ultrapassar). Caso o timeout idle ultrapasse o valor do maxidle, sempre # vlido o maxidle timeout maxidle 1200 # Segundos que o servio disponibiliza para toda a conversao RFC931: # <htmlurl url="http://andrew2.andrew.cmu.edu/rfc/rfc931.html" name="http://andrew2.andrew.cmu.edu/rfc/rfc931.html">

107

Eletricazine
timeout RFC931 10

www.eletricazine.hpg.ig.com.br

# Quantidade de arquivos mxima que um usurio da classe pode transferir # raw total: total de arquivos: entrada + sada # raw out: sada # raw in: entrada file-limit raw total 50 rmtusers # Quantidade # raw total: # raw out: # raw in: byte-limit de bytes mxima que um usurio da classe pode transferir total de arquivos: entrada + sada sada entrada

# Tempo mximo (em minutos) da conexo para usurios convidados, annimos e ou os dois: # limit-time guest 60 # limit-time anonymous 60 # limit-time * 60 # Por esta opo, usurios reais no possuem tempo mximo de conexo limit-time guest 10 # No permite a transferncia de arquivos. # Sintaxe: noretrieve [absolute|relative] [class=<classname>] ... [-] <filename> <filename> noretrieve class=rmtusers /home/*/.bashrc # Aps 3 tentativas de acesso sem sucesso, guardado no log informaes de # que aps 3 tentativas no foi possvel o acesso e terminada a conexo loginfails 3 # Define # full: # # brief: # terse: greeting o modo da mensagem de "boas-vindas" ao se conectar: exibe o nome do servidor e qual servio utiliza (proftpd/wu-ftpd/etc) exibe apenas o nome da mquina exibe apenas a mensagem: "FTP server ready" full

# Define uma mensagem padro de conexo - NOTE: caso seja definido o tipo de # mensagem (acima), o texto abaixo no ir aparecer greeting text Servidor de FTP # Logo aps entrar com usurio e senha (com sucesso) ser mostrado o # contedo do arquivo. banner /etc/ftp/banner # Define o nome padro do servidor ftp - pode ser acessado atravs de %L, # caso seja um servidor virtual, este valor no utilizado hostname lilica

108

Eletricazine

www.eletricazine.hpg.ig.com.br

# Define o email do administrador do servidor - pode ser acessado por %E email administrador@servidorftp.com.br # Exibe o contedo do arquivo <path> quando o usurio acessar o servidor # <LOGIN> ou quando entrar em algum diretrio <CWD> # message <path> {<when> {<class> ...}} message /etc/ftp/message CWD=/home/ftp/pub all # # # # # # # # # # # No arquivo de mensagens, podem haver os seguintes "atalhos": %T tempo (formato Thu Nov 15 17:12:42 1990) %F espao livre na partio (kbytes) [no suportado em todos] %C diretrio local (equivale ao pwd) %E email do administrador %R nome da mquina que est acessando o servidor %L nome do servidor %u nome do usurio determinado via autenticao RFC931 %U nome do usurio que est logado (que foi digitado) %M nmero mximo de usurios permitidos nesta classe %N nmero de usurios correntes desta classe

...... Daqui pr baixo complicou a traduo ........ # %B absolute limit on disk blocks allocated # # %b preferred limit on disk blocks # # %Q current block count # # %I maximum number of allocated inodes (+1) # # %i preferred inode limit # # %q current number of allocated inodes # # %H time limit for excessive disk use # # %h time limit for excessive files # .................................................... # readme <path> {<when> {<class>}} # Exibe uma indicao de que o usurio deve verificar um certo arquivo # <path> readme /home/ftp/README LOGIN all # Guarda o log dos comandos dos usurios, dividido por tipos, real, guest, # anonymous e separados por vrgulas log commands guest,anonymous # Guarda o log das transferncias de arquivos de usurios annimos, # convidados e/ou reais. # inbound = arquivos enviados ao servidor # oubound = arquivos baixados do servidor log transfers real,anonymous,guest inbound # Guarda o log das violaes das regras de segurana para usurios reais, # annimos ou convidados.

109

Eletricazine
log security anonymous,guest

www.eletricazine.hpg.ig.com.br

# Redireciona os avisos de transferncias de arquivos para o syslog, sem isso, # ir para xferlog log syslog # Redireciona os avisos de transferncias de arquivos para o syslog e # xferlog log syslog+xferlog # Permite utilizar-se de apelidos para diretrios alias atualizacoes /pub/conectiva/atualizacoes # Isto define um diretrio de busca que seja usado ao mudar diretrios. cdpath /pub/conectiva/atualizacoes cdpath /pub/conectiva/beta # O sistema ir verificar todo o tempo se o servidor ser desligado, caso # sim, o usurio que estiver acessando o servidor ser avisado, novos # acessos no sero permitidos antes de certo tempo (definido no arquivo de # configurao) de o servidor ser desligado. shutdown /etc/ftp_shutdown # Parmetros para o arquivo: # <ano> <ms> <dia> <hora> <minuto> <hora1> <hora2> # <texto> # onde # <ano> qualquer ano > 1970 # <ms> 0-11 # <hora> 0-23 # <minuto> 0-59 # <hora1> e <hora2> no formato HHMM, definem a hora em que os usurios sero # avisados do desligamento do servidor e quando ser realizado o # desligamento automtico de usurios. # <texto> Segue o mesmo padro da tag "message" com as opes : # %s hora em que o servidor ser desligado # %r hora em que conexes no sero mais permitidas # %d hora em que as conexes sero desligadas # Para a criao de domnios virtuais (Virtual hosts) necessrio que o seu # servidor deve estar com seu nome cadastrado como vlido no servidor de # nomes : # virtual <address> <root|banner|logfile> <path> virtual<htmlurl url=" ftp.suporte" name=" ftp.suporte"> root /home/ftp/suporte banner /etc/ftp/sup_banner logfile xferlog_suporte # Define os usurios que podem ou no ter acesso ao servidor virtual de<htmlurl url=" ftp." name=" ftp."> # virtual <address> allow <username> [<username> ...] # virtual <address> deny <username> [<username> ...]

110

Eletricazine

www.eletricazine.hpg.ig.com.br

virtual<htmlurl url=" ftp.suporte" name=" ftp.suporte"> allow * virtual<htmlurl url=" ftp.suporte" name=" ftp.suporte"> deny usuario # Geralmente, permitido o acesso de usurios annimos em domnios # virtuais, com a opo a seguir, retirada esta permisso. virtual<htmlurl url=" ftp.suporte" name=" ftp.suporte"> private # Define os usurios que podem ou no ter acesso ao servidor de<htmlurl url=" ftp." name=" ftp."> defaultserver allow usuario defaultserver deny * # Geralmente, permitido o acesso de usurios annimos em servidores ftp, # com a opo a seguir, retirada esta permisso. defaultserver private # passive address <externalip> <cidr> # Permite que certos intervalos de ip's acessem um certo servidor ao invs # do padro. passive address 10.0.1.15 10.0.0.0/8 passive address 192.168.1.5 0.0.0.0/0 # Especifica o nome de um servidor de email, para onde ser enviada as # mensagens de notificao de "uploads". So aceitos vrios servidores, onde # o servio de ftp ir mandar mensagens at que um dos servidores definidos # aceite a mensagem. mailserver mail.conectiva.com.br mailserver mail.domnio.com.br mailserver<htmlurl url=" www.emails.com" name=" www.emails.com"> # Define o email de quem ir receber informaes sobre os "uploads" # annimos. Pode-se definir mais de um email, todos sero notificados. Caso # no seja definido nenhum email, no haver avisos. incmail usuario@conectiva.com.br incmail usuario@hotmail.com # Define o email de quem ir receber informaes sobre os "uploads" annimos # do domnio virtual. Caso no seja definido, sero enviadas notificaes # para o email geral. virtual<htmlurl url=" ftp.suporte" name=" ftp.suporte"> incmail usuario@ftp.suporte # Define o email de quem ir receber informaes sobre os "uploads" # annimos no servidor padro (excluindo os virtuais). defaultserver incmail usuario@conectiva.com.br # Define o email do usurio que enviar a mensagem mailfrom anonftp@conectiva.com.br

111

Eletricazine

www.eletricazine.hpg.ig.com.br

# Define o email do usurio que enviar a mensagem para o servidor virtual virtual<htmlurl url=" ftp.suporte" name=" ftp.suporte"> mailfrom anonftp@ftp.suporte # Define o email geral do usurio que enviar a mensagem (apenas do servidor # padro) defaultserver mailfrom anonftp@conectiva.com.br # Permite ou no executar a especificada funo. Por padro, todas so # permitidas. Pode-se utilizar classes de usurios, bastando seguir a # sintaxe class=nome_da_classe # chmod <yes|no> <typelist> chmod no anonymous # delete <yes|no> <typelist> delete yes real,guest,anonymous # overwrite <yes|no> <typelist> overwrite yes real,guest,anonymous # rename <yes|no> <typelist> rename no guest # umask <yes|no> <typelist> umask no real # Define o nvel de checagem das senhas do usurio annimo. # passwd-check <none|trivial|rfc822> (<enforce|warn>) # none, no realiza checagem alguma # trivial, deve haver "@" # rfc822, a senha deve ser compatvel com a regra rfc822: # <htmlurl url="http://www.faqs.org/rfcs/rfc822.html" name="http://www.faqs.org/rfcs/rfc822.html"> # enforce, caso a senha no seja aceita, no realiza o acesso # warn, caso a senha no seja aceita, apenas avisa o usurio e ento acessa passwd-check rfc822 enforce # Define as senhas que no sero aceitas (depender da configurao acima se # o usurio poder ou no acessar o servidor) deny-email usuario@conectiva.com.br deny-email info@conectiva.com.br deny-email suporte@conectiva.com.br # Define se um diretrio tem ou no permisso para realizar "uploads" # upload [absolute|relative] [class=<classname>]... [-] <root-dir> <dirglob> # <yes|no> <owner> <group> <mode> ["dirs"|"nodirs"] [<d_mode>] # No permitir upload upload /var/ftp * no # Permitir upload no diretrio incoming upload /var/ftp /incoming yes ftp daemon 0666 # Permitir upload e criao de subdiretrios no diretrio incoming/gifs upload /var/ftp /incoming/gifs yes jlc guest 0600 nodirs

112

Eletricazine

www.eletricazine.hpg.ig.com.br

# Define a taxa mxima de transferncia para determinados arquivos, caso # utilize-se "*" vlido como todos os arquivos do diretrio definido throughput /e/ftp * * oo - * # Taxa de transferncia mxima para todos os arquivos localizados no # diretrio /e/ftp throughput /e/ftp /sw* * 1024 0.5 * # Taxa de transferncia mxima = 1024 bps para todos os arquivos localizados # em /e/ftp/sw throughput /e/ftp /sw* README oo - * # Taxa de transferncia mxima para arquivos chamados README throughput /e/ftp /sw* * oo - *.foo.com # Taxa de transferncia mxima para usurios do domnio foo.com # Os caraceteres "oo" significam que no h restrio e "-","0.5" so os # fatores por qual ser multiplicado o valor de bps definido para cada nova # transferncia realizada no diretrio indicado # Define o diretrio raiz (/) de usurios annimos, onde real e rmtusers so # classes de usurios anonymous-root /home/ftp/uploads real anonymous-root /home/ftp/pub rmtusers # Define o diretrio raiz de usurios convidados, pode ser passado o # parmetro de um intervalo de id's dos usurios guest-root /home/users # Define para todos os usurios o diretrio raiz = /home/users guest-root /home/staff %100-999 usuario # Define para os usurios com id >= 100 e <= 900 e o usurio usuario a raiz # = /home/staff guest-root /home/users/barea/ftp barea # Define para o usurio barea o diretrio raiz = /home/users/barea # Permite ou no o acesso de usurios atravs de seus id's, gid's ou nome # (usurio e grupo) deny-gid %-99 %65535 deny-uid %-99 %65535 allow-gid ftp allow-uid ftp # Permite ou no o acesso de usurios alm de seu home restricted-uid usuario unrestricted-gid root

Outro arquivo importante o /etc/ftpconversions, que define as converses automticas de arquivos:


:.Z: : : :.gz: : : : : : :/bin/compress :.Z:/bin/compress : :/bin/gzip -cd :.gz:/bin/gzip -9 :.tar:/bin/tar -c -d -c %s:T_REG|T_ASCII:O_UNCOMPRESS:UNCOMPRESS -c %s:T_REG:O_COMPRESS:COMPRESS %s:T_REG|T_ASCII:O_UNCOMPRESS:GUNZIP -c %s:T_REG:O_COMPRESS:GZIP -f - %s:T_REG|T_DIR:O_TAR:TAR

113

Eletricazine
: :

www.eletricazine.hpg.ig.com.br

: :.tar.Z:/bin/tar -c -Z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+COMPRESS : :.tar.gz:/bin/tar -c -z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+GZIP

Sintaxe do arquivo: Campo 1 2 3 4 5 6 7 8 Descrio strip prefix strip postfix addon prefix addon postfix external command types options description

Por ltimo veremos o arquivo /etc/ftpusers, que uma lista dos nomes dos usurios que no podem realizar ftp
root bin daemon adm lp sync shutdown halt mail news uucp operator games nobody

11.2.2

FTP Annimo

Como j foi mencionado, quando um usurio conecta-se como anonymous, ele s tem acesso ao diretrio /home/ftp. Isso faz com que ele no consiga acessar alguns arquivos binrios e de configurao do sistema, que so essenciais para a utilizao do ftp. Por isso, esses arquivos devem ser copiados para dentro do diretrio /home/ftp. Em primeiro lugar, necessrio criar alguns diretrios: /home/ftp: esta a raiz do usurio annimo. O dono do diretrio deve ser root:root, e nenhum outro usurio deve ter permisso de escrita. /home/ftp/pub: aqui sero armazenados os arquivos para download e upload. O dono do diretrio deve ser root:root. Este 114

Eletricazine

www.eletricazine.hpg.ig.com.br

diretrio pode ter permisso 777 ou 733, dependendo de o usurio desejar ou no o upload de arquivos no servidor. /home/ftp/bin: este diretrio vai abrigar os arquivos executveis do servidor. O dono do diretrio deve ser root:root, e nenhum outro usurio deve ter permisso de escrita. Este diretrio vai conter uma cpia do binrio do comando ls, que deve ter as permisses setadas para 111. /home/ftp/lib: este diretrio vai abrigar os arquivos de bibliotecas utilizadas pelos programas que esto em /home/ftp/bin. O dono do diretrio deve ser root:root, e nenhum outro usurio deve ter permisso de escrita. Para verificar a dependncia de bibliotecas de um determinado programa, pode-se utilizar o ldd. No caso do ls, deve-se copiar as bibliotecas libc.so.6 e ld-linux.so.2, ambas localizadas em /lib. /home/ftp/etc: este diretrio vai abrigar os arquivos executveis do servidor. O dono do diretrio deve ser root:root, e nenhum outro usurio deve ter permisso de escrita. Esse diretrio deve conter os arquivos passwd e group, para que o comando ls possa exibir os donos dos arquivos. Entretanto, no se deve usar os arquivos do diretrio /etc, para evitar exibir informaes sobre os usurios do sistema. Exemplo de arquivo passwd para colocar em /home/ftp/etc:
root:*:0:0::: bin:*:1:1::: operator:*:11:0::: ftp:*:14:50::: nobody:*:99:99:::

Exemplo de arquivo group para colocar em /home/ftp/etc:


root::0: bin::1: daemon::2: sys::3: adm::4: ftp::50: nowhere::99:

Exerccios
1. Implemente um servidor de ftp annimo na sua mquina.

115

Eletricazine

www.eletricazine.hpg.ig.com.br

12 SEGURANA DA REDE E CONTROLE DE ACESSO


Adaptado do Guia Foca GNU/Linux Avanado Captulo 4. Deixe-me iniciar esta seo lhe alertando que a segurana da rede em sua mquina e ataques maliciosos so uma arte complexa. Uma regra importante : "No oferea servios de rede que no deseja utilizar". Muitas distribuies vem configuradas com vrios tipos de servios que so iniciados automaticamente. Para melhorar, mesmo que insignificantemente, o nvel de segurana em seu sistema voc deve editar se arquivo /etc/inetd.conf e comentar (colocar uma "#") as linhas que contm servios que no utiliza. Bons candidatos so servios tais como: shell, login, exec, uucp, ftp e servios de informao tais como finger, netstat e sysstat. Existem todos os tipos de mecanismos de segurana e controle de acesso, eu descreverei os mais importantes deles.

12.1 /etc/ftpusers
O arquivo /etc/ftpusers um mecanismo simples que lhe permite bloquear a conexo de certos usurios via ftp. O arquivo /etc/ftpusers lido pelo programa daemon ftp (ftpd) quando um pedido de conexo recebido. O arquivo uma lista simples de usurios que no tem permisso de se conectar. Ele se parece com:
# /etc/ftpusers - login de usurios bloqueados via ftp root uucp bin mail

12.2 /etc/securetty
O arquivo /etc/securetty lhe permite especificar que dispositivos tty que o usurio root pode se conectar. O arquivo /etc/securetty lido pelo programa login (normalmente /bin/login). Seu formato uma lista de dispositivos tty onde a conexo permitida, em todos os outros, a entrada do usurio root bloqueada.
# /etc/securetty - terminais que o usurio root pode se conectar tty1 tty2 tty3 tty4

12.3 O mecanismo de controle de acessos tcpd


O programa tcpd que voc deve ter visto listado no mesmo arquivo /etc/inetd.conf, oferece mecanismos de registro e controle de acesso para os servios que esta configurado para proteger. Ele um tipo de firewall simples 116

Eletricazine

www.eletricazine.hpg.ig.com.br

e fcil de configurar que pode evitar tipos indesejados de ataques e registrar possveis tentativas de invaso. Quando executado pelo programa inetd, ele l dos arquivos contendo regras de acesso e permite ou bloqueia o acesso ao servidor protegendo adequadamente. Ele procura nos arquivos de regras at que uma regra confira. Se nenhuma regra conferir, ento ele assume que o acesso deve ser permitido a qualquer um. Os arquivos que ele procura em seqncia so: /etc/hosts.allow e /etc/hosts.deny. Eu descreverei cada um destes arquivos separadamente. Para uma descrio completa desta facilidade, voc deve verificar a pgina de manual apropriada (hosts_access (5) um bom ponto de partida).

12.3.1

/etc/hosts.allow

O arquivo /etc/hosts.allow um arquivo de configurao do programa /usr/sbin/tcpd. O arquivo hosts.allow contm regras descrevendo que hosts tem permisso de acessar um servio em sua mquina. O formato do arquivo muito simples:
# /etc/hosts.allow # # lista de servios: lista de hosts : comando

lista de servios uma lista de nomes de servios separados por vrgula que esta regra se aplica. Exemplos de nomes de servios so: ftpd, telnetd e fingerd.
lista de hosts

uma lista de nomes de hosts separada por vrgula. Voc tambm pode usar endereos IP's aqui. Adicionalmente, voc pode especificar nomes de computadores ou endereo IP usando caracteres coringas para atingir grupos de hosts. Exemplos incluem: gw.vk2ktj.ampr.org para conferir com um endereo de computador especfico, .uts.edu.au para atingir qualquer endereo de computador finalizando com aquele string. Use 200.200.200. para conferir com qualquer endereo IP iniciando com estes dgitos. Existem alguns parmetros especiais para simplificar a configurao, alguns destes so: ALL atinge todos endereos, LOCAL atinge qualquer computador que no contm um "." (ie. est no mesmo domnio de sua mquina) e PARANOID atinge qualquer computador que o nome no confere com seu endereo (falsificao de nome). Existe tambm um ltimo parmetro que tambm til: o parmetro EXCEPT lhe permite fazer uma lista de excees. Isto ser coberto em um exemplo adiante.
comando

um parmetro opcional. Este parmetro o caminho completo de um comando que dever ser executado toda a vez que esta regra conferir. Ele pode executar um comando para tentar identificar quem esta conectado pelo host remoto, ou gerar uma mensagem via E-Mail ou algum outro alerta para um administrador de rede que algum est tentando se conectar. Existem um nmero de expanses que podem ser includas, alguns exemplos comuns so: %h expande o endereo do computador que est

117

Eletricazine

www.eletricazine.hpg.ig.com.br

conectado ou endereo se ele no possuir um nome, %d o nome do daemon sendo chamado. Se o computador tiver permisso de acessar um servio atravs do /etc/hosts.allow, ento o /etc/hosts.deny no ser consultado e o acesso ser permitido. Como exemplo:
# /etc/hosts.allow # # Permite que qualquer um envie e-mails in.smtpd: ALL # Permitir telnet e ftp somente para hosts locais e myhost.athome.org.au in.telnetd, in.ftpd: LOCAL, myhost.athome.org.au # Permitir finger para qualquer um mas manter um registro de quem in.fingerd: ALL: (finger @%h | mail -s "finger from %h" root)

Qualquer modificao no arquivo /etc/hosts.allow entrar em ao aps reiniciar o daemon inetd. Isto pode ser feito com o comando kill -HUP [pid do inetd], o pid do inetd pode ser obtido com o comando ps ax|grep inetd.

12.3.2

/etc/hosts.deny

O arquivo /etc/hosts.deny um arquivo de configurao das regras descrevendo quais computadores no tem a permisso de acessar um servio em sua mquina. Um modelo simples deste arquivo se parece com isto:
# /etc/hosts.deny # # Bloqueia o acesso de computadores com endereos suspeitos ALL: PARANOID # # Bloqueia todos os computadores ALL: ALL

A entrada PARANOID realmente redundante porque a outra entrada nega tudo. Qualquer uma destas linhas pode fazer uma segurana padro dependendo de seu requerimento em particular. Tendo um padro ALL: ALL no arquivo /etc/hosts.deny e ento ativando especificamente os servios e permitindo computadores que voc deseja no arquivo /etc/hosts.allow a configurao mais segura. Qualquer modificao no arquivo /etc/hosts.deny entrar em ao aps reiniciar o daemon inetd. Isto pode ser feito com o comando kill -HUP [pid do inetd], o pid do inetd pode ser obtido com o comando ps ax|grep inetd.

12.3.3

/etc/hosts.equiv e /etc/shosts.equiv

O arquivo /etc/hosts.equiv usado para garantir/bloquear certos computadores e usurios o direito de acesso aos servios "r*" (rsh, rexec, rcp, etc) sem precisar fornecer uma senha. O /etc/shosts.equiv equivalente mas lido somente pelo servio ssh. Esta funo til em um ambiente seguro onde voc controla todas as mquinas, mesmo assim isto um perigo de segurana (veja nas observaes). O formato deste arquivo o seguinte:
#Acesso Mquina Usurio

118

Eletricazine
+ maquina2.dominio.com.br maquina4.dominio.com.br maquina1.dominio.com.br usuario2 usuario2 +@usuarios

www.eletricazine.hpg.ig.com.br

O primeiro campo especifica se o acesso ser permitido ou negado caso o segundo e terceiro campo confiram. Por razes de segurana deve ser especificado o FQDN no caso de nomes de mquinas. Grupos de rede podem ser especificados usando a sintaxe "+@grupo". Para aumentar a segurana, no use este mecanismo e encoraje seus usurios a tambm no usar o arquivo .rhosts. ATENO O uso do sinal "+" sozinho significa permitir acesso livre a qualquer pessoa de qualquer lugar. Se este mecanismo for mesmo necessrio, tenha muita ateno na especificao de seus campos. Evita tambm A TODO CUSTO uso de nomes de usurios (a no ser para negar o acesso), pois facil forjar o login, entrar no sistema tomar conta de processos (como por exemplo do servidor Apache rodando sob o usurio www-data ou at mesmo o root), causando enormes estragos.

12.3.4 Verificando a segurana do TCPD e a sintaxe dos arquivos


O utilitrio tcpdchk til para verificar problemas nos arquivos hosts.allow e hosts.deny. Quando executado ele verifica a sintaxe destes arquivos e relata problemas, caso eles existam. Outro utilitrio til o tcpdmatch, o que ele faz permitir que voc simule a tentativa de conexes ao seu sistema e observar ser ela ser permitida ou bloqueada pelos arquivos hosts.allow e hosts.deny. importante mostrar na prtica como o tcpdmatch funciona atravs de um exemplo simulando um teste simples em um sistema com a configurao padro de acesso restrito: O arquivo hosts.allow contm as seguintes linhas:
ALL: 127.0.0.1 in.talkd, in.ntalkd: ALL in.fingerd: 192.168.1. EXCEPT 192.168.1.30

A primeira linha permite o loopback (127.0.0.1) acessar qualquer servio TCP/UDP em nosso computador, a segunda linha permite qualquer um acessar os servidor TALK (ns desejamos que o sistema nos avise quando algum desejar conversar) e a terceira somente permite enviar dados do finger para computadores dentro de nossa rede privada (exceto para 192.168.1.30). O arquivo hosts.deny contm a seguinte linha:
ALL: ALL

Qualquer outra conexo ser explicitamente derrubada. Vamos aos testes, digitando: "tcpdmatch in.fingerd 127.0.0.1" (verificar se o endereo 127.0.0.1 tem acesso ao finger):
client: server: matched: access: address 127.0.0.1 process in.fingerd /etc/hosts.allow line 1 granted

119

Eletricazine

www.eletricazine.hpg.ig.com.br

Ok, temos acesso garantido com especificado pela linha 1 do hosts.allow (a primeira linha que confere usada). Agora "tcpdmatch in.fingerd 192.168.1.29":
client: server: matched: access: address 192.168.1.29 process in.fingerd /etc/hosts.allow line 3 granted

O acesso foi permitido atravs da linha 3 do hosts.allow. "tcpdmatch in.fingerd 192.168.1.29":


client: server: matched: access: address 192.168.1.30 process in.fingerd /etc/hosts.deny line 1 denied

Agora

O que aconteceu? como a linha 2 do hosts.allow permite o acesso a todos os computadores 192.168.1.* exceto 192.168.1.30, ela no bateu, ento o processamento partiu para o hosts.deny que nega todos os servios para qualquer endereo. Agora um ltimo exemplo: "tcpdmatch in.talkd www.debian.org"
client: server: matched: access: address www.debian.org process in.talkd /etc/hosts.allow line 2 granted

Ok, na linha 2 qualquer computador pode te chamar para conversar via talk na rede, mas para o endereo DNS conferir com um IP especificado, o GNU/Linux faz a resoluo DNS, convertendo o endereo para IP e verificando se ele possui acesso. No lugar do endereo tambm pode ser usado a forma daemon@computador ou cliente@computador para verificar respectivamente o acesso de daemons e cliente de determinados computadores aos servios da rede. Como pode ver o TCPD ajuda a aumentar a segurana do seu sistema, mas no confie nele alm do uso em um sistema simples, necessrio o uso de um firewall verdadeiro para controlar minuciosamente a segurana do seu sistema e dos pacotes que atravessam os protocolos, roteamento e as interfaces de rede. Se este for o caso aprenda a trabalhar a fundo com firewalls e implemente a segurana da sua rede da forma que melhor planejar.

12.4 Firewall
Dentre todos os mtodos de segurana, o Firewall o mais seguro. A funo do Firewall bloquear determinados tipos de trfego de um endereo ou para uma porta local ou permitir o acesso de determinados usurios mas bloquear outros, bloquear a falsificao de endereos, redirecionar trfego da rede, ping da morte, etc. A implementao de um bom firewall depender da experincia, conhecimentos de rede (protocolos, roteamento, interfaces, endereamento, masquerade, etc), da rede local, e sistema em geral do Administrador de redes, a segurana de sua rede e seus dados dependem da escolha do profissional

120

Eletricazine

www.eletricazine.hpg.ig.com.br

correto, que entenda a fundo o TCP/IP, roteamento, protocolos, servios e outros assuntos ligados a rede. Freqentemente tem se ouvido falar de empresas que tiveram seus sistemas invadidos, em parte isto devido a escolha do sistema operacional indevido mas na maioria das vezes o motivo a falta de investimento da empresa em polticas de segurana, que algumas simplesmente consideram a segurana de seus dados e sigilo interno como uma despesa a mais. Um bom firewall que recomendo o ipchains, Sinus e o TIS. Particularmente gosto muito de usar o ipchains e o Sinus e possvel fazer coisas inimaginveis programando scripts para interagirem com estes programas

121

Eletricazine

www.eletricazine.hpg.ig.com.br

13 TRABALHANDO COM O X-WINDOW EM REDE


O X-Window permite que o usurio execute a aplicao em uma mquina e os resultados sejam mostrados em outra. Este recurso til quando um usurio usando o X deseja executar uma aplicao remotamente, sendo que a interface grfica seja apresentada no seu vdeo.

13.1 O Display
Todo servidor X possui um nome de display, no seguinte formato:
host:display.screen

O host especifica o nome da mquina em que o display est fisicamente conectado. Se for omitido, ser assumido o localhost. O display indica o nmero do terminal grfico, normalmente 0, mas pode ser maior se houver mais de um terminal grfico conectado mquina. O screen indica o nmero do monitor, e normalmente tambm 0, podendo ser maior se houver mais de um monitor conectado ao terminal grfico. O gerenciador X-Window geralmente abre as aplicaes no display indicado na varivel de ambiente DISPLAY, que por padro tem o valor :0.0. O usurio pode mudar esta varivel se quiser que as aplicaes sejam mostradas em um outro display:
DISPLAY=gauss.alfamidia:0.0

13.2 O servidor X-Window


O servidor X-Window normalmente no aceita conexes de outras mquinas. Se o usurio permitir que todas as mquinas da rede executem aplicaes no seu display, estar permitindo tambm que outros usurios possam ler o pressionamento de teclas, aes do mouse, etc. Ou seja, permitir acesso ao display pode acarretar riscos de segurana. A soluo autenticar as conexes, permitindo que somente determinados usurios tenham acesso ao seu servidor X-Window. O xhost permite acesso baseado no nome da mquina. O servidor mantm uma lista de mquinas que tm permisso para conectar-se ao seu display. A lista de mquinas pode ser controlada pelo programa xhost. Por exemplo, para permitir que o resultado de um programa executado em tales.alfamidia seja exibido em gauss.alfamidia, ou seja, que o cliente X-Window em tales acesse o servidor X-Window em gauss, deve-se fazer:
[aluno@gauss ~]$ xhost +tales.alfamidia

Para revogar a permisso:


[aluno@gauss ~]$ xhost -tales.alfamidia

Pode-se tambm ser desabilitar a verificao de mquinas, permitindo que qualquer mquina da rede conecte-se ao seu display:
[aluno@gauss ~]$ xhost +

122

Eletricazine

www.eletricazine.hpg.ig.com.br

Isto nunca deve ser feito em uma rede onde no se confie em todos os usurios. Para habilitar novamente a verificao:
[aluno@gauss ~]$ xhost -

Para verificar a lista de mquinas, basta usar o comando sem nenhum parmetro:
[aluno@gauss ~]$ xhost

O xhost no um mecanismo totalmente seguro, j que no consegue distinguir usurios diferentes em uma mesma mquina remota.

13.3 O cliente X-Window


O programa cliente sabe em que display deve se conectar, atravs da varivel de ambiente DISPLAY. Esta definio pode ser ignorada com a utilizao do parmentro display host:display.screen na inicializao do programa cliente. Supondo que o usurio aluno j esteja conectado maquina tales atravs de telnet ou ssh, e queira executar o xfontsel, com sada na mquina local:
[aluno@tales ~]$ export DISPLAY=gauss.alfamidia:0.0 [aluno@tales ~]$ xfontsel

Ou ento:
[aluno@tales ~]$ xfontsel display gauss.alfamidia:0.0

Todo o processamento do xfontsel ser feito na mquina remota, e apenas a interface apresentada na mquina do usurio.

13.4 Identificao e encerramento de aplicativos X-Window


Para uma lista de aplicaes que est sendo executada no display local, use o comando xlsclients. As aplicaes locais podem ser interrompidas especificando seu PID (identificador do processo) ao comando kill. As aplicaes locais ou remotas podem ser interrompidas usando o comando xkill, que um utilitrio interativo que serve para fechar conexes com os clientes:
[aluno@gauss ~]$ xkill Select the window whose client you wish to kill with button 1...

Ser necessrio clicar com o boto esquerdo do mouse dentro da janela que se deseja interromper.

Exerccios
1. Analise a seguinte seqncia de comandos:
[aluno@gauss ~]$ xhost +tales.alfamidia tales being added to access control list [aluno@gauss ~]$ ssh tales.alfamidia password: [aluno@tales ~]$ export DISPLAY=gauss.alfamidia:0.0

Marque Verdadeiro ou Falso nas alternativas a seguir: a) A mquina tales pode receber conexes X de gauss.

123

Eletricazine

www.eletricazine.hpg.ig.com.br

b) A mquina gauss pode receber conexes X de tales. c) Qualquer display pode ser acessado pelo usurio aluno na mquina tales. d) O usurio aluno pode executar aplicativos grficos localmente em gauss. e) O usurio aluno pode executar aplicativos grficos localmente em tales. 2. Execute o aplicativo xfontsel remotamente, usando o ssh para logar-se em outra mquina da rede. 3. Utilize o xkill para matar a conexo com o xfontsel do exerccio anterior.

124

Eletricazine

www.eletricazine.hpg.ig.com.br

APNDICE A. LICENA DE PUBLICAO LIVRE


Esta uma traduo no-oficial da Open Publication License verso 1.0, de 8 de junho de 1999, e no substituto legal para a Licena original, disponvel em http://www.opencontent.org/openpub. Entretanto, esta traduo poder auxiliar pessoas que falem Portugus a entender melhor a licena. permitido a qualquer pessoa copiar e distribuir cpias desse documento de licena, desde que sem a implementao de qualquer mudana.

OPEN PUBLIC LICENSE


Draft v1.0, 8 june 1999

I. Requisitos comuns s verses modificadas e no modificadas


Os trabalhos protegidos pela Licena de Livre Publicao (Open Publication License) podem ser reproduzidos e distribudos no todo ou em parte, em qualquer meio fsico ou eletrnico, desde que os termos desta licena estejam includos, e que esta licena ou uma incorporao dela por referncia (com quaisquer das opes escolhidas pelo autor ou editor) estejam presentes na reproduo. A forma apropriada para uma incorporao por referncia deste livro : Copyright 2002 Alfamdia Ltda. Este material somente poder ser distribudo se sujeito aos termos e condies firmados na Licena de Livre Publicao (Open Publication License), verso 1.0 ou superior (a verso mais atual encontra-se disponvel em http://www.opencontent.org/openpub/). Esta referncia, devidamente preenchida com os dados da publicao, deve ser seguida imediatamente com quaisquer opes escolhidas pelos autores ou editor do documento (consultar a seo Termos opcionais). permitida a redistribuio comercial de material licenciado pela Licena de Livre Publicao (Open Publication License). Qualquer publicao no formato livro padro (papel) requer obrigatoriamente a citao dos autores e editor originais. Os nomes dos autores e do editor devem aparecer em todas as superfcies externas do livro. Em todas as faces externas do livro, o nome do editor original deve estar impresso em tamanho to grande quanto o ttulo do trabalho, e citado como proprietrio em relao quele ttulo.

II. Copyright
O copyright de todo trabalho protegido pela Licena de Livre Publicao (Open Publication License) pertence aos autores ou proprietrios.

Eletricazine

www.eletricazine.hpg.ig.com.br

III. Escopo da licena


Os termos de licena a seguir aplicam-se a todos os trabalhos protegidos pela Licena de Livre Publicao (Open Publication License), a no ser que explicitamente indicado no trabalho. A mera adio de trabalhos protegidos pela Licena de Livre Publicao (Open Publication License) ou partes de trabalhos protegidos pela Licena de Livre Publicao (Open Publication License) em uma mesma mdia que contenha outros trabalhos ou programas no protegidos por essa licena no decorre em aplicao da Licena de Livre Publicao (Open Publication License) para esses outros trabalhos. O trabalho resultante deve explicitamente conter uma nota especificando a incluso do material protegido pela Licena de Livre Publicao (Open Publication License) e o aviso de copyright apropriado. APLICABILIDADE. Se alguma parte desta licena no puder ser aplicada em alguma jurisdio, as partes restantes deste documento continuam sendo aplicadas. AUSNCIA DE GARANTIA. Os trabalhos protegidos pela Licena de Livre Publicao (Open Publication License) so fornecidos "como esto", sem garantias de qualquer tipo, explcita ou implcita, incluindo, mas no limitado a, as garantias implcitas de comercializao e convenincia para um propsito particular, ou garantia de no-infrao.

IV. Requisitos para trabalhos modificados


Todas as verses modificadas de documentos cobertos por esta licena, incluindo tradues, antologias, compilaes e documentao parcial, deve seguir os requisitos abaixo: A verso modificada deve ser indicada como tal. As pessoas que fizerem as modificaes e as datas de modificao devem ser identificadas. O reconhecimento dos autores e editor originais (se aplicvel) deve ser mantido de acordo com as prticas acadmicas usuais de citao. O local da verso no-modificada do documento deve ser indicado. Os nomes originais dos autores no devem ser utilizados para indicar ou garantir seu endosso ao documento resultante sem a autorizao expressa dos autores.

V. Prticas recomendadas
Em adio aos requisitos desta licena, solicitado e extremamente recomendado aos redistribuidores que: Se os trabalhos protegidos pela Licena de Livre Publicao (Open Publication License) estiverem sendo distribudos em impressos ou CD-ROM, os autores sejam informados por email, ao menos trinta dias antes, para que os autores tenham tempo de providenciar documentao atualizada. Esta notificao deve descrever as modificaoes introduzidas no documento, se existirem. Todas as modificaes substanciais (incluindo excluses) devem ser marcadas claramente no documento, ou ento descritas em um anexo ao documento.

126

Eletricazine

www.eletricazine.hpg.ig.com.br

Finalmente, mesmo no sendo obrigatrio sob esta licena, considerado de bom tom oferecer uma cpia sem nus de todo o material modificado (impresso e CD-ROM) para os autores originais.

VI. Termos opcionais


Os autores e editores de documentos protegidos pela Licena de Livre Publicao (Open Publication License) podem escolher certas opes de licena simplesmente incluindo alguns pargrafos aps a cpia da licena ou sua referncia. Estas opes so consideradas parte da licena e devem ser includas com ela (ou com a referncia a ela) nos trabalhos derivados. As opes que se aplicam a este trabalho so: A: vedada a distribuio de verses com modificaes substanciais deste documento sem a expressa permisso dos proprietrios do direito autoral. B: vedada a distribuio deste trabalho ou qualquer derivado seu em qualquer formato de livro padro (papel) sem a prvia autorizao dos proprietrios do direito autoral.

Polticas de Publicao Livre


(O texto a seguir no considerado parte da licena.) Os trabalhos protegidos pela Licena de Livre Publicao (Open Publication License) esto disponveis e podem ser acessados na home page da Open Publication http://works.opencontent.org/ . Os autores de trabalhos protegidos pela Licena de Livre Publicao (Open Publication License) podem incluir suas prprias licenas nesses trabalhos, desde que os termos dessa licena no sejam mais restritrivos que os da Licena de Livre Publicao (Open Publication License). Em caso de dvidas sobre a Licena de Livre Publicao (Open Publication License), contactar David Wiley <dw2@opencontent.org> ou a lista de autores de publicaes <opal@opencontent.org> via email. Para se inscrever na lista de autores de publicaes livres (Open Publication Author's List), mande um email para<opal-request@opencontent.org> com a palavra subscribe no corpo da mensagem. Para enviar mensagens para a lista de autores de publicaes livres (Open Publication Author's List), mande um email para opal@opencontent.org ou simplesmente responda a uma mensagem postada. Para se desinscrever na lista de autores de publicaes livres (Open Publication Author's List), mande um email para opalrequest@opencontent.org com a palavra unsubscribe no corpo da mensagem.

127

Você também pode gostar