Escolar Documentos
Profissional Documentos
Cultura Documentos
www.eletricazine.hpg.ig.com.br
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
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.
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.
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.
Aplicao Apresentao Sesso Transporte Rede Enlace Fsica Rede Enlace Fsica
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.
Eletricazine
www.eletricazine.hpg.ig.com.br
Exerccios
1. Qual a diferena entre internet e Internet?
13
Eletricazine
www.eletricazine.hpg.ig.com.br
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.
15
Eletricazine
www.eletricazine.hpg.ig.com.br
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.
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.
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
17
www.eletricazine.hpg.ig.com.br
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
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
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.
Os primeiros bytes contm o cdigo do fabricante, os demais contm o modelo e nmero serial do adaptador de rede.
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
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
Mscara de Rede
255.0.0.0 255.255.0.0 255.255.255.0 240.0.0.0
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
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
/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.
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
27
Eletricazine
www.eletricazine.hpg.ig.com.br
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.
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
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"
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
ATENO: Quando voc desativa uma interface fsica (eth0), todas as interfaces virtuais tambm so desativadas.
3.3
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
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
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=
da
estao
vai
ser
inicializado
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
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.
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
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.
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.
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.
35
Eletricazine
www.eletricazine.hpg.ig.com.br
4 DHCP
Adaptado do DHCP mini-HOWTO, por Vladimir Vuksan.
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
36
Eletricazine
www.eletricazine.hpg.ig.com.br
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
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
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.
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
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:
mkdir /etc/dhcpc
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
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
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.
Levar algum tempo para se configurar todos os parmetros. Aps isto estar finalizado, digite:
make
e
make install
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
42
Eletricazine
www.eletricazine.hpg.ig.com.br
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.
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
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?
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.
onde: opes
-H, --heading
Mostra o nome do computador e usurio associado ao nome. equivalente a digitar who i am ou who am i.
-q, --count
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.
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
Faz a conexo usando [usurio] como nome de usurio. Exemplo: telnet 192.168.1.1, telnet 192.168.1.1 23.
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
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.
46
Eletricazine
www.eletricazine.hpg.ig.com.br
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
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.
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.
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.
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.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
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
Ajusta a porta que ser usada para o teste. A porta padro 33434.
-r
Usa o endereo IP/DNS [end] como endereo de origem para computadores com mltiplos endereos IPs ou nomes.
-v
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.
Onde: opes
-i [interface]
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.
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).
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.
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).
54
Eletricazine
www.eletricazine.hpg.ig.com.br
ssh.
-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.
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
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
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
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:
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).
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.
# 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).
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
#: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
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.
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
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.
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.
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
A seguir definiremos o tipo de pesquisa que desejamos fazer. Neste caso NS (registros de servidores de nomes):
> set q=ns
edu:
> edu.
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 =
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
= = = = = = = = =
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
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.
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"; };
80
Eletricazine
www.eletricazine.hpg.ig.com.br
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
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
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
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
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
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
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
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:
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.
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
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.
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.
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
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
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
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.
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
...
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.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.
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.
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.
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
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
10.3.2
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.
incio.
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
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
113
Eletricazine
: :
www.eletricazine.hpg.ig.com.br
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:::
Exerccios
1. Implemente um servidor de ftp annimo na sua mquina.
115
Eletricazine
www.eletricazine.hpg.ig.com.br
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
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.
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
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.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
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.
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.
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
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
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.
127