ADMINISTRAÇÃO DE REDES DE COMPUTADORES ADMINISTRAÇÃO DE REDES DE COMPUTADORES maio 2003 Prof. Jairo – jairo@uninove.br Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 1 ADMINISTRAÇÃO DE REDES DE COMPUTADORES ADMINISTRAÇÃO DE REDES DE COMPUTADORES Maio de 2003 Prof. Jairo - jairo@uninove.br A disciplina Administração de Redes de Computadores é destinada principalmente a alunos especialistas com noções do que seja o sistema operacional Unix. Trata-se de uma disciplina essencialmente prática (100% laboratório) que tem por intenção ensinar e qualificar os estudantes a instalar e gerenciar os diversos serviços ou servidores de uma rede WAN. O enfoque do curso é sistemas: configurar/instalar servidores e disponibilizar serviços e não configurar/instalar equipamentos de rede. A carga horária está ajustada para 12 semanas, cada semana com 4ha. Nesta disciplina, usando o sistema operacional Linux como servidor de rede, o aluno irá aprender a instalar e disponibilizar os seguintes serviços: FTP, TELNET, POP, IMAP, NFS, SAMBA, DNS, SMTP e WEB SERVER. Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 2 ADMINISTRAÇÃO DE REDES DE COMPUTADORES A escolha dos servidores/serviços apresentados na presente disciplina teve, entres outras mais, três intenções básicas: a) todos os servidores/serviços apresentados nesta disciplina estão na categoria OpenSource (software com código fonte aberto), sem nenhum custo em licenças. Inclusive, o sistema operacional (SO) utilizado é o Linux; b) por ser OpenSource, permite ao aluno lançar mão do código fonte e modificar/personalizar o produto caso tenha um bom conhecimento na linguagem de programação C. Programação C está fora do escopo dessa disciplina, no entanto entendo que um profissional preparado para enfrentar o mercado de trabalho deva ter um conhecimento que vá além da simples certificação em produto. Um profissional competitivo deve ser capaz de agregar valor a sua atividade, e pensando assim podemos concluir que a filosofia OpenSource é a única que eficazmente permite evoluir, crescer, enfim aprender e - mais importante - conseguir aplicar esses conhecimentos em alguma atividade profissional rentável, isso com um baixo custo investido na própria formação. Essas características do OpenSource são realçadas pelo fato de estarmos vivendo num país marginal em relação ao que ocorre em tecnologia lá no primeiro mundo, e a disponibilidade do código fonte rompe a barreira da dependência na forma de aquisição de serviços e produtos fechados, estilo caixa-preta. c) Os servidores apresentados (Apache, Sendmail, etc.) também podem ser instalados e gerenciados em qualquer outro SO além do Linux (NT, Win2000, SunOS, HP-UX, etc.), e isto significa que os conhecimentos adquiridos nessa disciplina podem ser aplicados em qualquer realidade de empresa. Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 3 ADMINISTRAÇÃO DE REDES DE COMPUTADORES NOTAS: 1 - Na disciplina Administração de Redes de Computadores é usado o sistema operacional Conectiva Linux 8.0, mas poderia ser qualquer outro da família Unix que suportasse o gerenciador de pacotes rpm. 2 – Um conhecimento básico de redes e protocolos de comunicação em redes é apresentado no Anexo 1. 3 - Um sumário dos termos e comandos Unix mais usados está no Anexo 2. 4 – Foi convencionado que o comando dado pelo usuário é mostrado em itálico para diferenciar da resposta do sistema a esse comando. Por exemplo, $ls /tmp arq1.txt dir1 -> é o comando -> é a resposta do sistema 5 – O shell do root é simbolizado com um "#" (cerquilha) e o shell do usuário sem privilégios root é um "$" (cifrão ou dólar). Por exemplo, $ls /tmp #/etc/init.d/smb start -> comando dado por usuário sem privilégio root -> comando dado pelo usuário root 6 – Quando for o caso de mostrar alguma parte relevante de arquivo de configuração, essa parte será mostrada no interior de linhas tracejadas, por exemplo: ----------------# aqui vai a informação relevante do arquivo de configuração ServerRoot /etc/httpd ----------------- Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 4 ADMINISTRAÇÃO DE REDES DE COMPUTADORES CAPÍTULO 1 SEMANA 1 (teórica) 1.1 – Exposição teórica Expõem o curso ao aluno, explica sistema de avaliação, mostra a bibliografia adotada; Justifica a escolha do conteúdo e a forma de trabalhar. 1.2. - Conceitos gerais histórico Unix/Linux; terminais burros, hardware limitado, estrutura da rede, protocolos proprietários; servidores, clientes; estrutura em camadas (cebola) do SO, shell, acesso, login; caracterísitcas do Unix (multiusuário, multitarefa, portável, memória virtual, sist. Arquivo hierárquico e montável); família Unix, Posix; arquivos (ordinários, diretórios, especiais); permissões de acesso; comandos, executável, processo; distribuição Linux. SEMANA 2 (prática) 1.3 - Conhecimentos práticos básicos: linha de comando (terminal, logar, deslogar); comandos básicos: adduser, passwd, ls, top, free, df, cd, history, more, less, head, tail, cat, grep, ps, uptime, mkdir, rmdir, rm, chown, chgrp, chmod, etc; sistema de arquivo, partições, montagem; pipes, redirecionamento da entrada e saída padrão, processos em background; editor vi. Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 5 ADMINISTRAÇÃO DE REDES DE COMPUTADORES CAPÍTULO 2 SEMANA 2 (prática) 2.1 – Conceitos de serviços em rede Mostrar ao aluno, numa abordagem bastante direta, explicando o que é e para que serve a rede, o meio físico, os protocolos TCP e UDP, o IP, o scan de rede (usando nmap, utilitário para escanear a rede), as portas TCP, os servidores, os acessos telnet, ftp, pop, imap, além de conceitos clienteservidor 2.2 - servidor inet Servidor ou serviço inet é um servidor que tem por intenção disponibilizar diversos acessos, como por exemplo acesso FTP, TELNET, POP, IMAP, etc. No Unix, os servidores ou serviços podem ser disponibilizados de duas maneiras, inet ou standalone. O serviço é inet quando for diponibilizado o acesso via servidor inet, e é standalone quando ele estiver independente do inet. Por exemplo, normalmente FTP e TELNET são inet, e WEB SERVER, SMTP (e-mail), DNS, etc, são standalone. Antes de configurarmos o servidor inet, vamos ter uma visão geral dos acessos FTP, TELNET, POP e IMAP. 2.3 - File Transfer Protocol O nome FTP significa File Transfer Protocol, ou seja, é o protocolo de transferência de arquivos. Numa linguagem simples, o FTP é o protocolo desenvolvido especificamente para transportar arquivos de um computador para outro através da rede. Embora o FTP seja um dos mais antigos protocolos na Internet, ainda hoje continua sendo muito usado. Para transferir arquivos usando o protocolo FTP é necessário um servidor (ou serviço) FTP disponível, além de um aplicativo cliente do serviço FTP. Por exemplo, para fazer um acesso ao servidor FTP no endereço IP 192.168.1.10, o comando que o cliente precisa dar é: $ftp 192.168.1.10 Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 6 ADMINISTRAÇÃO DE REDES DE COMPUTADORES onde será solicitado um nome de usuário e senha de acesso ao servidor. 2.4 - Telnet Protocol O protocolo telnet é frequentemente imaginado como apenas um meio de prover a facilidade de fazer acesso remoto (login) em computadores via Internet. Na verdade esse era o propósito original desse protocolo, mas ele também pode ser usado para muitos outros propósitos, como por exemplo configurar equipamentos de rede tais como switches e roteadores. O acesso telnet é melhor entendido no contexto de um usuário que usa um programa cliente do serviço telnet (isto é, o comando telnet) para efetuar login num computador remoto onde esteja um servidor telnet rodando. À semelhança do acesso FTP, será solicitado um nome de usuário e senha de acesso ao servidor. Para efetuar um acesso telnet (login remoto) no servidor telnet no endereço IP 192.168.1.10, o comando é: $telnet 192.168.1.10 O comando telnet (cliente) também permite acesso a serviços que estão disponíveis em outras portas que não a padronizada porta TCP 23 (serviço telnet). Por exemplo, o comando "telnet 192.168.1.10 139" tenta um acesso na porta TCP 139 do servidor com endereço IP 192.168.1.10. 2.5 - Post Office Protocol O protocolo Post Office (POP) é um dos que permitem ao cliente ler seus e-mails num servidor de e-mail. Para acessar um serviço POP o usuário precisa de um aplicativo cliente capaz de se comunicar com esse serviço. Por exemplo, o Netscape Messenger e o Outlook permitem a leitura de e-mails via serviço POP. Este tema, leitura de e-mail, será retomado no capítulo relativo a SMTP. Se não dispusermos, na linha de comando, de um cliente para acessar um serviço POP, podemos fazer um telnet na porta TCP 110, que é a porta do POP3: $telnet 192.168.1.10 110 +OK POP3 linux10.aluno.br v2001.78 server ready user juca +OK User name accepted, password please pass juca +OK <CRTL>] quit onde "juca" é também a senha de acesso do usuário Juca. Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 7 ADMINISTRAÇÃO DE REDES DE COMPUTADORES 2.6 - Internet Message Access Protocol O protocolo de acesso a mensagens na internet (IMAP), à semelhança do POP, também permite a comunicação de aplicativos clientes tais como Outlook, Netscape Mail e Eudora com um servidor de e-mail para leitura das caixas postais (caixas com e-mail). De maneira análoga ao acesso telnet que fizemos ao servidor POP, podemos fazer um acesso telnet na porta TCP 143, que é a porta padrão do servidor IMAP: $telnet 192.168.1.10 143 * OK [CAPABILITY IMAP4REV1 LOGIN-REFERRALS STARTTLS AUTH=LOGIN] linux10.aluno.br IMAP4rev1 2001.315 at Tue, 4 Jun 2002 12:35:43 -0300 (BRT) a001 login juca juca a001 OK [CAPABILITY IMAP4REV1 IDLE NAMESPACE MAILBOX-REFERRALS SCAN SORT THREAD=REFERENCES THREAD=ORDEREDSUBJECT MULTIAPPEND] User juca authenticated a002 select inbox a003 logout <CRTL>] quit onde juca é a senha de acesso do usuário Juca. 2.7 – Configuração do servidor inetd O servidor inet é configurado pelo arquivo "/etc/inetd.conf". Se quisermos disponibilizar os serviços ftp, telnet, pop e imap basta abrir esse arquivo com um editor (por exemplo, vi) e retirar o comentário '#' (cerquilha) do início das seguintes linhas: ----------------# /etc/inetd.conf # essas quatro linhas abaixo precisam estar sem comentário '#' (cerquilha) ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d imap stream tcp nowait root /usr/sbin/tcpd imapd ----------------Após configurar quais serviços deverão ser disponibilizados pelo servidor inet, é necessário iniciar o servidor: #/etc/init.d/inet start Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 8 ADMINISTRAÇÃO DE REDES DE COMPUTADORES Caso o servidor inet já estivesse rodando seria necessário parar e depois reinicializar esse servidor. NOTA: No Conectiva 8, após uma instalação padrão do Linux como servidor, deve-se instalar também os pacotes telnet-server, wu-ftpd e imap para poder disponibilizar os serviços ftp, telnet, pop e imap. Porém, a instalação de wu-ftpd conflita com o serviço ftp instalado por default, o proftpd, que deve então ser desinstalado, e nessa desinstalação é envolvida também a remoção do pacote anonftp. Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 9 ADMINISTRAÇÃO DE REDES DE COMPUTADORES CAPÍTULO 3 SEMANA 3 (prática) 3.1 - Conceitos de backup Uma boa política de backup faz parte de uma boa administração do sistema. Normalmente, um bom backup deve ser conduzido pelo menos uma vez por dia, nesse processo arquivos são copiados para fitas (DAT ou DLT). Num sistema Unix normalmente são usados os comandos "tar" ou "dump" para efetuar o backup. No caso do "tar", apesar do nome ser Unix Tape Archiving, ele é genericamente um comando que serve para aglomerar um conjunto de arquivos num único arquivo final. Exemplo: Para o próprio usuário juca "aglomerar" e compactar o conteúdo da home de juca no arquivo "/tmp/arq_home_juca.tar.gz" o comando é: $tar cvfz /tmp/arq_home_juca.tar.gz ~juca Para o usuário juca "aglomerar" e compactar o conteúdo da pasta do sistema "/bin" no arquivo "arq.tar.gz" no diretório "tar1" na sua própria home o comando é: $cd $mkdir tar1 $tar cvfz tar1/arq.tar.gz /bin Para o usuário juca descompactar o arquivo "arq.tar.gz" o comando é: $gunzip tar1/arq.tar.gz Para "desaglomerar" esse arquivo tar o comando é: $tar xvf tar1/arq.tar Caso o usuário juca quisesse fazer a descompactação/desaglomeração de uma única vez, o comando seria: $tar xvfz tar1/arq.tar.gz Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 10 ADMINISTRAÇÃO DE REDES DE COMPUTADORES Convém também notar que nesses casos o arquivo foi descompactado e "desaglomerado" no próprio diretório onde juca se encontrava, isto é, na sua home. Para o root aglomerar o conteúdo da home de juca num bloco da fita no dispositivo /dev/nst0 é: #tar cvf /dev/nst0 ~juca Obs: 1) O nome do dispositivo muda de plataforma para plataforma. O mesmo dispositivo de fita que num Linux/Intel é /dev/nst0, num SunOS/Spark é /dev/rmt/0n. 2) No dispositivo /dev/nst0, a letra n é de "no-rewind", ou seja, após escrever o bloco não retorna a fita ao início desse bloco. Já o dump permite fazer backups mais sofisticados, mas tem a desvantagem de não ser tão padronizado (isto é, igual) em todas plataformas quanto o "tar". Por exemplo, o comando /sbin/dump -0u -f /dev/st0 /home/juca faz também um backup da home de juca e envia para o dispositivo /dev/st0. As opções nesse comando são: 0: é o nível do dump, zero é o full backup; u: atualiza o arquivo /etc/dumpdates, que é um controle desse backup; f: arquivo ou device para onde vai o conteúdo do backup. 3.2 - NFS – Network File System NFS é a forma padrão com que os sistemas operacionais da família Unix compartilham seus sistemas de arquivo em rede. Como cada membro da família Unix, de um modo geral, implementa seu próprio sistema de arquivo, então para que recursos possam ser compartilhados em rede por diferentes membros dessa grande família é necessário um serviço – o servidor NFS – que exporta o recurso que será acessado remotamente pelo cliente. Uma vez instalado e inicializado o servidor NFS, ele lê o arquivo "/etc/exports" e, em função do que foi configurado nesse arquivo, exporta o recurso. Por exemplo, considere as seguintes linhas do arquivo "/etc/exports" no host 192.168.1.10: -----------------#exporta o diretório /mnt/cdrom para toda rede 192.168.1.0/24 /mnt/cdrom 192.168.1.0/24(ro) -----------------Com essa configuração, o diretório "/mnt/cdrom" será disponibilizado somente para leitura (read only) via NFS para todo cliente na rede 192.168.1.0/24. Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 11 ADMINISTRAÇÃO DE REDES DE COMPUTADORES Além disso, é necessário levantar (ou reinicializar) o servidor NFS: #/etc/init.d/nfs start Uma vez exportado o recurso, ele pode ser acessado remotamente pela montagem desse recurso num determinado ponto de montagem do cliente na rede 192.168.1.0/24. Por exemplo, o comando #mount -t nfs 192.168.1.10:/mnt/cdrom /mnt/temp monta (anexa) no ponto de montagem "/mnt/temp" do cliente o recurso (diretório "/mnt/cdrom") exportado por 192.168.1.10. O diretório "/mnt/temp" precisa existir e estar vazio antes do cliente NFS dar esse comando. Para saber o que está sendo exportado e para quem via nfs, o comando "exportfs" pode ser usado. É interessante notar que no caso do Windows o equivalente a esta forma de compartilhar recursos em rede é o protocolo NetBIOS, com ele cada estação Windows age como um servidor permitindo aos clientes acessarem o recurso compartilhado. Veremos isso em mais detalhes à frente, quando estudarmos o servidor Samba. Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 12 ADMINISTRAÇÃO DE REDES DE COMPUTADORES CAPÍTULO 4 4.1 - Samba – Conceitos gerais O pacote Samba é composto de duas partes: cliente e servidor, e tem por intenção garantir o compartilhamento de recursos em rede entre máquinas Windows e Unix. Quando a rede for totalmente Windows ou totalmente Unix não existe problema no compartilhamento de recursos em rede, pois sabemos que no caso do Unix todos os membros da família implementam o NFS, e no caso do Windows temos o NetBIOS. Mas para resolver o problema de redes mistas Windows x Unix se faz necessário o Samba. Parece evidente que uma máquina Windows, nativamente, não tem porquê implementar também o suporte a sistema de arquivos NFS, então a solução para esse problema, por mais paradoxal que possa parecer, é implementar no Unix um serviço e um aplicativo cliente que apresentem as mesmas características que o NetBIOS e, dessa forma, garantir a comunicação em rede entre Windows e Unix simplesmente porque agora o Unix "se disfarçou" de Windows. Com esse "disfarce", agora o cliente Windows acredita que o servidor Samba é outra máquina Windows de onde possa buscar recursos compartilhados em rede. O Samba suporta o protocolo Session Message Block – SMB – que é o formato usado no Windows para compartilhar recursos em rede, mais conhecido por protocolo NetBIOS ou LanManager. 4.2 – Samba Server O servidor Samba é um serviço que pode ser disponibilizado em qualquer Unix e, uma vez configurado, permite ao cliente Windows buscar recursos neste Unix, sendo que para o cliente Windows fica a impressão de que esse recurso está sendo disponibilizado numa máquina Windows. Como o servidor Samba é usado basicamente para comunicação em rede entre Windows e Unix, para podermos configurar apropriadamente o servidor Samba precisamos primeiramente ter em vista o que seja a organização da nossa rede Windows. Quanto à organização, a rede Windows pode ser dividida basicamente em duas: workgroup e domain. No caso do workgroup, trata-se de uma organização lógica apenas de visualização e agrupamento de computadores que vem desde o Windows 3.11. A principal característica do workgroup é que cada máquina é uma unidade administrativa com suas próprias contas de usuários, senhas, etc, e por isso essa organização é um esquema ineficiente do ponto de vista administrativo para redes com mais de 10 máquinas. Já o domain é um agrupamento lógico de servidores e estações de trabalho que compartilham informações comuns de segurança, contas de usuários e suas senhas. Dentro do domínio, o administrador cria uma conta de acesso para o usuário que poderá então efetuar "logon" a partir de qualquer estação que faça parte desse domínio. Uma vez definido em qual organização de rede Windows irá trabalhar o servidor Samba, podemos Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 13 ADMINISTRAÇÃO DE REDES DE COMPUTADORES passar à configuração. No caso mais simples, e por uma questão de comodidade, vamos configurar o servidor Samba para trabalhar numa organização workgroup disponibilizando recursos para estações clientes Windows 98. Nesse caso, a configuração do servidor Samba no arquivo "/etc/smb.conf" será: -----------------#/etc/smb.conf #nome do grupo de trabalho do workgroup workgroup = LAB #permite o acesso a todo cliente Windows na rede 192.168.1.0/24 hosts allow = 192.168.1. #já que todas estações são Windows 98, posso usar o recurso de "encriptar" a senha encrypt passwords = yes #o arquivo que irá guardar as senhas de acesso ao servidor Samba smb passwd file = /etc/smbpasswd -----------------Uma vez configurado "/etc/smb.conf" basta (re)inicializar o servidor samba. Como root comande: #/etc/init.d/smb start O scan de portas TCP (nmap localhost) deverá mostrar a porta TCP 139 (NetBIOS) aberta. Para adicionar um usuário samba, o caminho mais fácil é aproveitar um usuário que já esteja cadastrado no sistema, ou seja, um usuário que já tenha home. Para a dicionar um usuário ao sistema use adduser, por exemplo, como root comande: #adduser juca Para adicionar esse usuário do sistema como usuário do servidor Samba, como root comande: #smbpasswd -a juca Ao comandar "smbpasswd" será solicitado uma senha, ou seja, esse será o usuário e a senha de acesso ao servidor Samba. A opção "-a" em smbpasswd é para adicionar ao arquivo "/etc/smbpasswd" um usuário que esteja cadastrado localmente no sistema, ou seja, que já tenha sido incluído em "/etc/passwd". Se o usuário já foi adicionado ao servidor Samba e quer apenas trocar a senha de acesso Samba, não deve usar a opção "-a". Por fim, verifique se o usuário juca agora tem a senha codificada em "/etc/smbpasswd" (more /etc/smbpasswd). Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 14 ADMINISTRAÇÃO DE REDES DE COMPUTADORES O teste final é feito com o cliente Windows, que tenta acessar a máquina onde foi configurado o servidor Samba. No cliente Windows 98, se houver alguém "logado" desconecte esse usuário e conecte-se com o usuário juca com a senha solicitada acima pelo "smbpasswd". Se tudo estiver correto esta máquina Unix será vista pelo Windows como outra máquina Windows, "clicando" no ícone do host Unix automaticamente dará acesso à home de juca no Unix. SEMANA 4 (prática) 4.3 - Samba Client O Samba client permite ao cliente Unix buscar recursos compartilhados no Windows ou servidor Samba. O pacote Samba client é, na verdade, um conjunto de executáveis clientes do servidor Samba. Vamos aprender dois casos: uma interface de acesso semelhante ao FTP que é o "smbclient", onde as instruções de transferência de arquivos são passadas na linha de comando (texto) e uma ferramenta que permite ao cliente Unix montar localmente o recurso compartilhado pelo servidor Samba, chamdo "smbmount". Convém notar aqui que tudo que se refere a cliente de servidor Samba também é cliente do Windows NetBIOS. Um exercício onde o cliente Unix acessa um recurso compartilhado pelo Windows pode ser feito da seguinte maneira: logue-se na máquina Windows 98 com um usuário (por exemplo, juca) e depois compartilhe com senha um recurso (por exemplo, diretório C:\TEMP, com nome de compartilhamento "TEMP". No Unix comande: $smbclient //aluno5/TEMP -U juca onde "aluno5" está definido no servidor DNS como o nome da máquina Windows 98 onde o usuário juca compartilhou o recurso "TEMP". A configuração do servidor DNS será mostrada mais à frente. Se não houver nenhum erro neste acesso o usuário ganhará um shell do Samba (smb>) que permitirá tanto enviar quanto receber arquivos do cliente Unix para servidor Samba ou Windows. NOTAS: 1) Se fosse a organização da rede "domain", nesse caso haveria um servidor Windows não local que validaria a senha do juca (NT4: PDC, NT5: Active Directory), então o comando seria: Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 15 ADMINISTRAÇÃO DE REDES DE COMPUTADORES $smbclient //aluno5/TEMP -U domain\\juca onde o nome desse domínio é "domain". 2) Para enviar arquivos do cliente Unix para o Windows, o recurso deve ser compartilhado completo, e não apenas leitura. Depois de termos aprendido o comando "smbcliente", que oferece uma interface semelhante a do cliente FTP, vamos aprender a montagem Samba. A montagem do recurso compartilhado pelo Windows via "smbmount" é útil ao usuário cliente usando determinada estação de trabalho que tenha um ambiente gráfico num Unix, pois é caracterísitca de usuário desktop (isto é, estação de trabalho) entender apenas de ícones e botões no ambiente gráfico e, pensando assim, é muito mais fácil ensinar esse usuário a usar o "clique-clique" do mouse ao invés da linha de comando. De fato, um usuário típico consegue pelo menos empurrar a seta do mouse de uma janela para outra e clicar. Pensando nessa caracterísitca do usuário é que foi criada a montagem Samba, ela permite acessar o recurso compartilhado remotamente pelo servidor Samba ou Windows simplesmente "clicando" numa determinada pasta local onde foi previamente montado o recurso compartilhado. Funciona de forma semelhante ao "smbclient", muda apenas no acesso: ao invés de uma interface de texto semelhante ao acesso FTP temos agora uma pasta onde foi previamente montado o recurso remoto compartilhado, "clicando" nessa pasta acessa o recurso remoto. Aproveitando o exemplo dado para o comando "smbclient", podemos usar a montagem Samba da seguinte maneira: #smbmount //aluno5/TEMP /mnt/smb -o username=juca,password=juca onde "juca" é a senha de acesso samba do usuário Juca, o ponto de montagem local é o diretório "/mnt/smb" que, caso não exista, deve ser criado antes de dar o comando "smbmount" e "-o" é usado para indicar ao comando que um conjunto de opções serão passadas. Evidentemente este é apenas um exemplo, o recurso compartilhado por "aluno5" poderia ser montado em qualquer outro ponto de montagem (por exemplo, a home de juca). Inclusive, num caso mais realista, o próprio processo do "logon" do usuário na máquina Unix já poderia disparar um script que fizesse a montagem acima descrita, com isso o usuário poderia ter uma home não local, ou seja, independente da estação de trabalho que ele estivesse logado acessaria sempre a mesma home. Esse recurso, oferecer a home sempre no mesmo servidor de arquivos, independente de qual estação o usuário usou para efetuar logon é muito útil em vários casos, especialmente para a estação burra que nem ao menos costuma ter disco local (diskless). Repare que com o "smbmount" é possível usar uma estação burra e mesmo assim ofertar neste acesso a home do usuário, mesmo que essa home esteja, por exemplo, num NT. Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 16 ADMINISTRAÇÃO DE REDES DE COMPUTADORES CAPÍTULO 5 SEMANA 7 (prática) 5.1 - DNS BIND (Berkeley Internet Name Domain) O DNS é um serviço que tem a função básica de traduzir em endereços IPs nomes de hosts e domínios e vice-versa. Sabemos que nos pacotes TCP, nos seus headers, vão o endereço IP de destino e de retorno, porém o usuário não precisa ter a preocupação em saber esses IPs, basta fazer uma solicitação ao servidor DNS que ele traduz o IP, dados o nome do host e o domínio. Por exemplo, se alguém quiser acessar a página em "www.uninove.br" pacotes TCP devem ser enviados para a porta 80 de um host nesse domínio, porém para qual IP? O servidor DNS responde ao cliente que atualmente www.uninove.br encontra-se no host "gretha" no IP 200.182.74.197. Da mesma forma que obteve o endereço IP do host/domínio, poderia obter o host/domínio dado o IP, que é a parte reversa do servidor DNS. Um outra função do DNS é realizar cache local dos IPs já resolvidos, isso para evitar fazer novas consultas externas a hosts/domínios já traduzidos, para atender mais rapidamente aos clientes do DNS e economizar link de acesso à internet. O BIND - Berkeley Internet Name Domain - é atualmente a implementação DNS mais importante, estima-se que 98% dos servidores DNS na internet sejam BIND. 5.2 – Configurações do BIND No nosso caso, vamos configurar o domínio fictício "aluno.br" na rede 192.168.1.0/24, além dos domínios "aluno00.br" e "aluno10.br" na rede 192.168.11.0/24. Então os arquivos de configuração e mapas desses hosts/domínios/IPs são: /etc/named.conf /etc/rndc.key /var/named/aluno.br /var/named/aluno.rev /var/named/aluno00.br /var/named/aluno00.rev /var/named/aluno10.br 5.3 – Arquivo "/etc/named.conf" É nesse arquivo que se declaram, entre outras coisas, os nomes dos domínios. Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 17 ADMINISTRAÇÃO DE REDES DE COMPUTADORES ---------// generated by named-bootconf.pl options { directory "/var/named"; // query-source address * port 53; }; // a caching only nameserver config // controls { inet 127.0.0.1 allow { localhost; 192.168.1.0/24; } keys { rndckey; }; }; zone "." IN { type hint; file "named.ca"; }; zone "aluno.br" IN { type master; file "aluno.br"; }; zone "aluno00.br" IN { type master; file "aluno00.br"; }; zone "aluno10.br" IN { type master; file "aluno10.br"; }; zone "0.0.127.in-addr.arpa" IN { type master; file "named.local"; }; zone "1.168.192.in-addr.arpa" IN { type master; file "aluno.rev"; }; Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 18 ADMINISTRAÇÃO DE REDES DE COMPUTADORES zone "11.168.192.in-addr.arpa" IN { type master; file "aluno00.rev"; }; // notar a ausência da zona reversa de aluno10.br include "/etc/rndc.key"; ---------- 5.4 – Arquivo "/etc/rndc.key" É nesse arquivo que vai a chave do serviço rndc (Name Server Control Utility), que permite efetuar requisições autenticadas com assinaturas digitais. 5.5 – Arquivo "/var/named/aluno.br" É nesse arquivo que é declarado o mapa de hosts associados aos seus respectivos IPs no domínio "aluno.br". ---------//file aluno.br $ORIGIN br aluno 43200 IN SOA linux10.aluno.br. hostmaster.linux10.aluno.br. ( 2002010024 3600 900 1209600 43200 ) 43200 IN NS linux10.aluno.br. 43200 IN MX 10 linux10.aluno.br. 43200 IN A 192.168.1.10 $ORIGIN aluno.br. linux10 43200 IN MX 10 linux10.aluno.br. www 43200 IN CNAME linux10.aluno.br. aluno19 43200 IN A 192.168.1.19 aluno20 43200 IN A 192.168.1.20 aluno21 43200 IN A 192.168.1.21 ; segue a lista com todos os hosts nesse domínio ---------onde o registro "SOA" significa "Start Of Authority", "NS" significa "Name Server", "MX" é "Mail Exchange", "CNAME" é "Common Name" (apelido) e "A" é o registro "Address". Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 19 ADMINISTRAÇÃO DE REDES DE COMPUTADORES 5.6 – Arquivo "/var/named/aluno.rev" Neste arquivo temos o mapa reverso do domínio "aluno.br", esse mapa associa os IPs aos hosts. ---------// file aluno.rev $ORIGIN . $TTL 43200 ; 12 hours 10.1.168.192.IN-ADDR.ARPA IN SOA linux10.aluno.br. hostmaster.linux10.aluno.br. ( 2002010003 ; serial 3600 ; refresh (1 hour) 900 ; retry (15 minutes) 1209600 ; expire (2 weeks) 43200 ; minimum (12 hours) ) NS linux10.aluno.br. PTR linux10.aluno.br. $ORIGIN 10.1.168.192.IN-ADDR.ARPA. 10 PTR linux10.aluno.br. 19 PTR aluno19.aluno.br. 20 PTR aluno20.aluno.br. 21 PTR aluno21.aluno.br. ; segue a lista com todos os hosts nesse domínio ---------onde "PTR" é um ponteiro (Pointer) reverso. 5.7 – Arquivo "/var/named/aluno00.br" Neste arquivo temos o mapa do domínio "aluno00.br". Convém notar que esse domínio está subordinado a "aluno.br", ou seja, "aluno.br" é domínio autoridade sobre "aluno00.br". ---------// file aluno00.br $TTL 43200 @ IN SOA linux10.aluno.br. 2001061102 ; serial 3600 ; refresh 900 ; retry 1209600 ; expire 43200 ; default_ttl hostmaster.linux10.aluno.br. ( Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 20 ADMINISTRAÇÃO DE REDES DE COMPUTADORES ) NS linux10.aluno.br. @ A 192.168.11.11 www A 192.168.11.11 ---------- 5.8 – Arquivo "/var/named/aluno00.rev" Neste arquivo temos o mapa reverso do domínio "aluno00.br", que também está subordinado a "aluno.br". ---------// file aluno00.rev $TTL 43200 @ IN SOA linux10.aluno.br. 2001061102 ; serial 3600 ; refresh 900 ; retry 1209600 ; expire 43200 ; default_ttl ) 11 IN PTR aluno00.br. 11 IN PTR www.aluno00.br. ---------- hostmaster.linux10.aluno.br. ( 5.9 – Arquivo "/var/named/aluno10.br" ---------// file aluno10.br $TTL 43200 @ IN SOA linux10.aluno.br. 2001061102 ; serial 3600 ; refresh 900 ; retry 1209600 ; expire 43200 ; default_ttl ) NS linux10.aluno.br. @ A 192.168.11.11 www A 192.168.11.11 ---------- hostmaster.linux10.aluno.br. ( Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 21 ADMINISTRAÇÃO DE REDES DE COMPUTADORES Convém notar que tanto "aluno00.br" quanto "aluno10.br" estão no mesmo IP, e esse é o conceito de hospedagem virtual não IP. Esse tema será melhor explicado à frente, quando tratarmos do servidor web Apache. Se os dois domínios estão hospedados no mesmo IP, o conceito de mapa reverso pede a validade pois não há mais como obter o domínio a partir do IP. Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 22 ADMINISTRAÇÃO DE REDES DE COMPUTADORES CAPÍTULO 6 SEMANA 8 (prática) 6.1 - SMTP (Simple Mail Transfer Protocol) – conceitos gerais O Correio Eletrônico foi uma das primeiras aplicações práticas utilizadas no início da Internet e, até hoje, é uma das mais utilizadas. Qualquer pessoa que possua um endereço eletrônico pode enviar e receber mensagens através da Internet. O endereço conhecido como email address ou endereço de correio eletrônico possui a estrutura básica user@host.domain ou user@domain, onde: user representa o identificador do usuário, host representa o nome de host do equipamento ao qual a caixa postal do usuário pertence, e domain é o nome do domínio na internet. O funcionamento do correio eletrônico é baseado no paradigma "store-and-forward" (estocar e redirecionar), onde os usuários envolvidos na transferência de uma mensagem não interagem diretamente entre si, mas usam programas aplicativos encarregados de executar e gerenciar essa transferência. Os componentes principais de um sistema de correio eletrônico são: Mail User Agent (MUA) - programa que interage com o usuário, responsável pela obtenção de mensagens a serem transmitidas e a retirada de mensagens recebidas. São exemplos de MUA: Pine, Xmail, Netscape Messenger, Outlook, Eudora. Mail Transport Agent (MTA) - programa responsável pelo transporte de mensagens entre os pontos envolvidos, sejam eles locais ou através da Internet. São exemplos de MTA: sendmail, postfix. Mail Delivery Agent (MDA) – programa responsável pelo recebimento do e-mail entregue pelo MTA local, deposita o e-mail na caixa postal do usuário. O MDA tem a função básica de filtrar o conteúdo da mensagem. São exemplos de MDA: procmail, que permite entre outras coisas a filtragem contra vírus em geral. Mail Boxes - caixas postais onde são armazenadas as mensagens recebidas. Mail Box Manager - programa responsável pelo gerenciamento das caixas postais. O princípio do funcionamento do correio eletrônico segue os seguintes passos: o remetente compõem a mensagem no seu aplicativo cliente de e-mail (agente de mensagens - MUA) e envia para o endereço eletrônico do destinatário. A mensagem é direcionada ao agente de transporte (MTA), cuja função é a entrega ou encaminhamento da mensagem à caixa postal correta do Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 23 ADMINISTRAÇÃO DE REDES DE COMPUTADORES destinatário. Essa transferência é feita através do protocolo SMTP (Simple Mail Transfer Protocol). Na máquina destino, o MTA responsável pelo SMTP recebe a mensagem e a deixa na caixa postal correspondente do usuário. Neste processo de envio/recebimento de e-mail pode-se ter, basicamente, três protocolos envolvidos no sistema de correio eletrônico: o SMTP (Simple Mail Transfer Protocol), responsável pelo envio de mensagens entre duas caixas postais dos usuários; o POP (Post Office Protocol) e o IMAP (Internet Message Access Protocol), que gerenciam o acesso às mensagens que chegaram à caixa postal do usuário de e-mail. 6.2 – Conceitos pop, imap, relay, spam, webmail O IMAP é um protocolo (Internet Message Access Protocol) que permite a comunicação simultânea de programas de e-mail, como Outlook, Netscape Mail e Eudora, com um ou mais servidores de email (Sendmail, Qmail, Exchange, etc). As vantagens do IMAP em relação ao protocolo POP, que é usado atualmente como padrão por quase todos os provedores de acesso, são inúmeras: o tempo de conexão e o uso de recursos do servidor são mínimos; permite acesso interativo a múltiplas caixas postais a partir de múltiplos clientes, sem falar na habilidade de usar computadores diversos em diferentes momentos, já que nenhum dado fica armazenado na máquina do usuário. O acesso acontece independente da plataforma de leitor de e-mail escolhido pelo cliente. Existem três principais protocolos de estruturação de sistemas de e-mail: POP (Post Office Protocol), DMSP (protocolo distribuído do sistema do correio) e IMAP (protocolo de acesso de mensagem de Internet). Dos três, o POP é o mais antigo e consequentemente o mais conhecido. DMSP é limitado a uma única aplicação, PCMAIL, para sustentação da operação desconectada. O IMAP combina as potencialidades do POP e do DMSP, e fornece a melhor sustentação para todas as três modalidades do acesso remoto da caixa postal: offline, online e desconectado. Outra vantagem do IMAP é a possibilidade de criar pastas no servidor de e-mail para poder guardar mensagens já lidas, e com isso desocupar espaço da caixa de entrada além de permitir uma melhor organização dessas mensagens. O RELAY é uma permissão que o serviço de e-mail concede ao usuário para poder enviar seus emails através desse MTA. Usualmente numa intranet, todos os usuários estão autorizados a usarem o MTA local, mas não é permitido o RELAY para usuários externos. A razão dessa limitação no uso é que, se for concedido acesso irrestrito para envio de e-mails, toda a Internet irá pôr esse serviço MTA para transportar os e-mails deles, e muito dos quais passarão a enviar extensas listas de e-mail não solicitados com propaganda, que é o conceito de SPAM. O Webmail permite a integração do servidor de e-mail com o servidor web, que é uma forma prática, simples, eficiente e segura de enviar/receber e-mails. Nesse caso é o servidor web que invoca o serviço IMAP para acessar a caixa postal do usuário para ler e-mail, e é também o servidor web que faz relay no MTA para envio da mensagem. Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 24 ADMINISTRAÇÃO DE REDES DE COMPUTADORES SEMANA 9 (prática) 6.3 - Configuração do sendmail O sendmail é atualmente a implementação SMTP mais importante, estima-se que 80% dos e-mails transportados na internet sejam através do MTA sendmail. Porém, para poder configurar o sendmail é necessário antes os seguintes pré-requisitos: servidor DNS (cached-nameserver) operando, configurado o domínio "aluno.br" e cliente configurado (arquivo /etc/resolv.conf) para usar esse servidor DNS; pacote xmail instalado, para poder enviar e ler e-mails na linha de comando. Para configurar o sendmail, precisamos editar os arquivos "/etc/mail/sendmail.cf" e "/etc/mail/access". 6.3.1 – Arquivo "/etc/mail/sendmail.cf" Neste arquivo estão as configurações do MTA sendmail. -------------------# /etc/mail/sendmail.cf # as duas modificações abaixo precisam ser feitas: Cw localhost -> Cwaluno.br DMlocalhost.localdomain -> DMaluno.br -------------------- 6.3.2 – Arquivo "/etc/mail/access" A configuração do arquivo "/etc/mail/access" é que define quem acessa ou não o MTA. -------------------#/etc/mail/access 127.0.0.1 localhost.localdomain localhost aluno.br 192.168.100. chato@bol.com.br spam@spammer.br RELAY RELAY RELAY RELAY RELAY REJECT DISCARD Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 25 ADMINISTRAÇÃO DE REDES DE COMPUTADORES -------------------onde RELAY são os domínios/hosts que podem usar o MTA para envio de mensagens, REJECT rejeita os e-mails que foram enviados para esse MTA e DISCARD é análogo à regra REJECT, com a diferença que nesse caso quem enviou não é notificado que seu e-mail não foi aceito. Uma vez editado o arquivo "access" é necessário criar o DB access: #makemap hash /etc/mail/access < /etc/mail/access É necessário também levantar (ou reiniciar) o servidor de e-mail: #/etc/init.d/sendmail start Após levantar o servidor sendmail, observe que ele abriu a porta TCP 25. Esse servidor pode ser testado de duas maneiras, com telnet na porta 25 ou utilitário mail (do pacote xmail): $telnet aluno10.aluno.br 25 Trying 192.168.1.10... Connected to aluno10. Escape character is '^]'. 220 aluno10.aluno.br ESMTP Sendmail 8.11.6/8.11.6; Tue, 4 Jun 2002 19:50:38 -0300 helo aluno10 250 aluno10.aluno.br Hello aluno12.aluno.br [192.168.1.12], pleased to meet you MAIL From: juca@uninove.br 250 2.1.0 juca@aluno.br... Sender ok RCPT To: jairo@aluno.br 250 2.1.5 jairo@aluno.br... Recipient ok DATA 354 Enter mail, end with "." on a line by itself Subject: teste Apenas um teste Juca . 250 2.0.0 g54MpQD24804 Message accepted for delivery quit 221 2.0.0 aluno10.aluno.br closing connection Connection closed by foreign host. A outra forma, via xmail, é bem mais simples: $mail juca@aluno.br Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 26 ADMINISTRAÇÃO DE REDES DE COMPUTADORES Subject: teste a mensagem <CTRL>d Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 27 ADMINISTRAÇÃO DE REDES DE COMPUTADORES CAPÍTULO 7 SEMANA 10 (prática) 7.1 - Servidor web APACHE: conceitos Um servidor web é uma aplicação que escuta na porta TCP 80 - padrão na internet - e usa o protocolo HTTP – Hyper Text Transfer Protocol – para se comunicar com o aplicativo cliente – usualmente um navegador da internet. No caso de acesso mais simples, o cliente faz uma requisição solicitando determinado documento HTML – que é um arquivo de texto com intruções de Hyper Text – para o servidor web que lê no disco do host e entrega essa página ao cliente. Por sua vez, o aplicativo do cliente – o navegador da internet – interpreta localmente o texto HTML da página e mostra numa apresentação gráfica o seu conteúdo. Se o aplicativo navegador do cliente não for capaz de interpretar o texto HTML então ele apenas efetua o download dessa página. O servidor web Apache teve sua origem em 1995 num conjunto de patches aplicados ao código fonte do servidor web NCSA (National Center for Supercomputing Applications) e isso foi possível pois o código fonte do servidor web NCSA sempre foi amplamente disponível. O nome Apache é derivado diretamente de a patchy server e trata-se de um produto mantido pelo grupo Apache, que também disponibiliza o código fonte do servidor web Apache. Normalmente, ao cliente interessa muito mais a tela gráfica do navegador, que é resultado da interpretação do documento HTML após ter sido "baixado" do servidor web. No entanto, existem também navegadores de linha de comando, como o Lynx e o Wget. Usaremos o "wget" nas nossa aulas práticas. O Apache é hoje o mais importante e mais usado servidor web, estima-se que 65% dos servidores web na internet sejam Apache, e essa preferência reflete não apenas o baixo custo de implantação, mas também a qualidade, robustez e segurança do produto. 7.2 – Configuração do Apache Numa instalação padrão rpm, a configuração do servidor web Apache é através do arquivo "/etc/httpd/conf/httpd.conf": -------------------#/etc/httpd/conf/httpd.conf Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 28 ADMINISTRAÇÃO DE REDES DE COMPUTADORES # standalone: independe do servidor inet ServerType standalone # raiz ou diretório de configuração e logs do servidor web ServerRoot /etc/httpd # tempo para desconectar um cliente inativo, em cliente Timeout 300 # número mínimo e máximo de processo de "espera" MinSpareServers 2,max 4 # número de processo a serem iniciados quando da inicialização do servidor Apache StartServers 2 # número máximo de clientes conectados simultaneamente MaxClients 150 # porta TCP Port 80 # usuário no Unix sob o qual roda o servidor web User nobody # grupo no Unix sob o qual roda o servidor web Group nobody # nome do servidor ServerName www.aluno.br # raiz dos documentos HTML DocumentRoot "/var/www/default" -------------------Se fosse o caso de habilitar PHP, bastaria tirar (caso houvesse) o comentário nas seguintes linhas: -------------------LoadModule php4_module AddModule mod_php4.c -------------------- modules/libphp4.so Uma "página" PHP útil de teste é "info.php": <?php echo phpinfo(); ?> O PHP é um módulo externo que, uma vez habilitado no Apache, permite a interpretação dos scripts PHP, muito útil pelo seu suporte a base de dados. Para levantar o servidor web, basta disparar o script de inicialização: #/etc/init.d/httpd start Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 29 ADMINISTRAÇÃO DE REDES DE COMPUTADORES Para verificar se está funcionando, faça um acesso usando o cliente wget: $wget www.aluno.br SEMANA 11 (prática) 7.3 - Servidor web APACHE: conteúdo restrito Nos últimos anos tem-se verificado uma tendência de usar o servidor web ofertando conteúdo restrito, por exemplo disponibilizar algum conteúdo na internet mas permitir o acesso apenas a aqueles clientes que possuam determinado endereço IP ou que tenham uma senha de acesso a essas páginas protegidas. No Apache, existem duas maneiras básicas de proteger conteúdo, que é o diretório protegido por senha e/ou IP. Para habilitar a configuração do diretório protegido é necessário tirar o comentário (caso haja) das seguintes linhas no arquivo "/etc/httpd/conf/httpd.conf": -------------------LoadModule access_module AddModule mod_access.c -------------------- modules/mod_access.so 7.3.1 - Diretório protegido por IP: Para criar um diretório protegido por IP, devemos primeiro criar esse diretório no "Document Root" do servidor web. Para isso, comandar: #mkdir /var/www/default/protegido Após, abrir o arquivo de configuração do servidor web com um editor e inserir a diretiva "Directory" conforme descrito abaixo. -------------------<Directory "/var/www/default/protegido"> Order deny,allow Deny from all Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 30 ADMINISTRAÇÃO DE REDES DE COMPUTADORES Allow from 192.168.1. </Directory> -------------------Com essa diretiva, apenas os clientes com IP na faixa 192.168.1.0/24 podem acessar o conteúdo do diretório "protegido" em "www.aluno.br/protegido", os demais não estarão autorizados a efetuar acesso ao conteúdo desse diretório. Para essa diretiva tomar efeito é necessário antes (re)iniciar o servidor web Apache. 7.3.2 - Diretório protegido por senha: À semelhança do caso anterior, para criar um diretório protegido por senha devemos primeiro criar esse diretório no "Document Root" do servidor web. Para isso, comandar: #mkdir /var/www/default/autenticado Após, abrir o arquivo de configuração do servidor web com um editor e inserir a diretiva "Directory" conforme descrito abaixo -------------------<Directory "/var/www/default/autenticado"> AllowOverride FileInfo AuthConfig Limit Order allow,deny Allow from all </Directory> -------------------Com essa diretiva, quem tentar acessar o conteúdo do diretório "autenticado" em "www.aluno.br/autenticado" receberá uma requisição de senha para poder continuar. Além disso, nas configurações do servidor web (httpd.conf) deve haver a seguinte linha sem comentário na frente: -------------------AccessFileName .htaccess -------------------Essa instrução, "AccessFileName", nos diz que a autenticação é dependente do arquivo ".htaccess", que deve estar localizado dentro do diretório protegido por senha. Para criar esse arquivo, abrir (criar caso ainda não exista) "/var/www/default/autenticado/.htaccess", com um editor e incluir as instruções abaixo: -------------------- Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 31 ADMINISTRAÇÃO DE REDES DE COMPUTADORES AuthUserFile /var/www/default/autenticado/.htpasswd AuthGroupFile /dev/null AuthName "Acesso Restrito" AuthType Basic require valid-user -------------------Nesse caso, o arquivo ".htpasswd" trata de condições de autenticação básicas e informa que o usuário e a senha de acesso estão no arquivo ".htpasswd". Portanto, devemos criar também o arquivo com o(s) usuário(s) e suas senhas de acesso a esse diretório. Para isso, comandar: #htpasswd -c /var/www/default/autenticado/.htpasswd juca onde a opção -c cria um novo arquivo e inclui nele o usuário juca. Esse comando irá também solicitar a senha de acesso ao diretório para o usuário juca. Antes de testar o acesso protegido por senha, devemos (re)iniciar o servidor web pois incluímos uma diretiva "Directory". Para testar o acesso, comande: $wget www.aluno.br/ autenticado Nesse caso, descobrimos que o acesso exige uma autenticação. 7.4 - Servidor web APACHE: Domínios Virtuais O servidor web Apache permite implementar hosts virtuais no mesmo serviço em que atende um host real. Por exemplo, no capítulo que tratou do DNS, configuramos um registro CNAME relacionando "linux10" com "www", ou seja, o cliente procura por "www.aluno.br" e é atendido pelo host "linux10" no domínio "aluno.br". Neste caso, "linux10" é um host real onde está rodando o servidor web Apache. Pois o conceito de host virtual, de maneira semelhante ao exemplo acima, permite instalar também páginas de outros domínios, tais como "www.aluno00.br" e "www.aluno10.br" no mesmo servidor web que responde pelo site "www.aluno.br". Inclusive, podemos configurar esses domínios para terem suas páginas na mesma porta TCP e IP que o site de "www.aluno.br". No entanto, para que o servidor web Apache seja capaz de resolver a requisição do cliente baseada no nome do host, o servidor DNS BIND precisa estar previamente configurado pois é ele que resolve o IP onde está esse servidor web. Outro ponto importante é o conceito de host virtual não IP, onde afirmar que não tem IP indica apenas que podem ser configurados vários domínios hospedados no mesmo IP. A vantagem está na economia de IPs, a desvantagem é que essa técnica funciona apenas quando se está usando o protocolo HTTP/1.1. Para incluir um domínio virtual devemos ter a diretiva BindAddress escutando em pelo menos uma Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 32 ADMINISTRAÇÃO DE REDES DE COMPUTADORES interface, conforme instrução abaixo: -------------------#/etc/httpd/conf/httpd.conf BindAddress * -------------------Também precisamos de uma diretiva NameVirtualHost, conforme instrução abaixo: -------------------#/etc/httpd/conf/httpd.conf NameVirtualHost 192.168.11.11 -------------------Os domínios virtuais precisam ser incluídos dentro de diretivas VirtualHost, conforme a instrução abaixo: -------------------#/etc/httpd/conf/httpd.conf <VirtualHost 192.168.11.11> DocumentRoot /home/httpd/aluno00 ServerName aluno00.br ServerAlias www.aluno00.br ErrorLog logs/aluno00.erros TransferLog logs/aluno00.logs ScriptAlias /cgi-bin/ "/home/httpd/aluno00/cgi-bin" </VirtualHost> # <VirtualHost 192.168.11.11> DocumentRoot /home/httpd/aluno10 ServerName aluno10.br ServerAlias www.aluno10.br ErrorLog logs/aluno10.erros TransferLog logs/aluno10.logs ScriptAlias /cgi-bin/ "/home/httpd/aluno10/cgi-bin" </VirtualHost> -------------------Como no DNS BIND indicamos que o host virtual iria estar no IP 192.168.11.11, então o host real precisa também responder nesse IP. Para isso, ou dispomos de outra interface (placa) de rede ou então criamos um alias (apelido). Para criar um alias, basta seguir os seguintes passos: copiar as configurações da atual interface, eth0, Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 33 ADMINISTRAÇÃO DE REDES DE COMPUTADORES para uma nova cópia, eth0:0, conforme instrução abaixo: #cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:0 Depois é só editar a interface ifcfg-eth0:0 e modificar as seguintes linhas: -------------------#/etc/sysconfig/network-scripts/ifcfg-eth0:0 # o nome do device copiado é eth0:0 #DEVICE=eth0 DEVICE=eth0:0 BOOTPROTO=static BROADCAST= #IPADDR=192.168.1.10 # o endereço IP do alias é 192.168.11.11 IPADDR=192.168.11.11 #NETMASK=255.255.255.0 # a máscara de rede agora é B NETMASK=255.255.0.0 NETWORK= ONBOOT=yes -------------------Para a interface alias tomar efeito é necessário reinicializar o serviço network: #/etc/init.d/network restart Pode ser verificado se essa interface está funcionando usando o comando: #/sbin/ifconfig Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 34 ADMINISTRAÇÃO DE REDES DE COMPUTADORES ANEXO 1: NOÇÕES DE REDES E PROTOCOLOS DE COMUNICAÇÃO As redes de computadores têm como principais funções disponibilizar seviços e compartilhar recursos. Porém, para que haja comunicação em rede, os equipamentos precisam ter o mesmo protocolo de comunicação, algo muito parecido como falar a mesma língua para poder haver diálogo. Protocolo TCP Atualmente, o protocolo mais importante e mais amplamente usado é o TCP, isso pela sua condição OpenSource, ampla disponibilidade e pela Internet, pois o TCP é o padrão de fato para comunicação na grande rede mundial. TCP significa Transmission Control Protocol e IP é o Internet Protocal. Na verdade o TCP/IP é um conjunto flexível de protocolos desenvolvidos para WANs - Wide Area Network ou redes muito extensas. O IP provê um endereçamento lógico, além de informações necessárias aos roteadores para conduzirem os pacotes TCP de uma LAN para outra. Protocolo NetBEUI NetBEUI (NetBIOS Extended User Interface) é um protocolo nativo da Microsoft, não roteável em rede WAN mas que pode ser encapsulado no pacote TCP/IP e assim trocar informações entre LANs separadas fisicamente. Esse protocolo é baseado em broadcasts, por isso somente deve ser usado em pequenas redes LAN devido ao intenso tráfego de pacotes que produz. NetBEUI é um protocolo de transporte, NetBIOS é a API desse protocolo. Protocolos IPX/SPX e NWLink NWLink é uma emulação do Novell IPX/SPX (Internet Packet Exchange/Sequenced Packet Exchange) feita pela Microsoft para permitir a comunicação da rede Windows com rede Netware. Esse protocolo é baseado em datagramas. Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 35 ADMINISTRAÇÃO DE REDES DE COMPUTADORES ANEXO 2: SUMÁRIO DOS PRINCIPAIS TERMOS E COMANDOS UNIX Para um melhor entendimento deste sumário, vamos adotar a mesma notação já descrita quanto ao simbolo do shell do usuário: $ - simbliza o shell do usuário sem privilégios root # - simboliza o shell do root (comandos que somente podem ser executados pelo root) A a.1) "adduser" É na verdade um link simbólico para "useradd", comando usado para cadastrar (incluir) usuários. Exemplo: #adduser juca B b.1) "bash" Bash é o interpretador de comandos padrão nos sistemas operacionais Linux C c.1) "cal" É o comando para mostrar o calendário, ou seja, na sua forma default mostra o calendário no presente mês do ano. Exemplo: $cal $cal 2003 c.2) "cat" É o comando para "capturar" um arquivo de texto. Na sua forma padrão, o cat captura o arquivo de texto e mostra seu conteúdo no shell do usuário. Se o comando for dado redirecionando a saída padrão, edita o arquivo. Ou seja, além de permitir ler o conteúdo de arquivo de texto, o comando cat também pode ser usado como um editor, criando ou inserindo caracteres num arquivo. Exemplo: Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 36 ADMINISTRAÇÃO DE REDES DE COMPUTADORES $cat /etc/passwd $cat > ~juca/teste.txt apenas um teste <CTRL>d $cat ~juca/teste.txt c.3) "cd" É usado para mudar de diretório, ou seja, serve para se movimentar no sistema hieráquico de arquivos. Exemplo: $cd /home $cd c.4) "chgrp" É usado para mudar um arquivo de grupo. Exemplo: #chgrp joca arq.txt #chgrp users dir1 c.5) "chmod" É o comando para mudar as permissões dos arquivos, apenas o dono do arquivo ou o root podem mudar as permissões. Exemplo: $chmod 755 arq.txt $chmod 500 dir1 c.6) "chown" É o comando usado para mudar a posse do arquivo. Exemplo: #chown juca arq.txt #chown joca dir1 c.7) "cmp" É o comando para comparar arquivos, essa comparação é byte a byte e mostra a primeira ocorrência onde os arquivos diferem. Pode tanto ser usado em arquivos com conteúdo texto quanto binários. Exemplo: $cmp arq1 arq2 c.8) "comm" Esse comando também compara arquivos, porém diferente do cmp, mostra o que os arquivos têm Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 37 ADMINISTRAÇÃO DE REDES DE COMPUTADORES em comum. Exemplo: $comm arq1 arq2 c.9) "cp" O comando cp é usado para copiar arquivos. Exemplo: $cp /etc/passwd ~juca/arq.passwd $cp arq1.txt /tmp c.10) "cut" É o comando usado para segmentar ou "cortar" arquivos, usando um determinado caracter como separador de campo. Exemplo: $cut -d: -f1 /etc/passwd $cut-d":" -f1,2,3 /etc/group D d.1) "df" É o comando usado para determinar o espaço (quantidade) usado de uma partição montada do sistema de arquivos. Exemplo: $df -k $df -h $df -ki /dev/hda1 d.2) "diff" É o comando usado para mostrar a diferença entre dois arquivos. Se houver diferença entre os dois arquivos que estão sendo comparados, mostra a(s) linha(s) onde ocorreu essa diferença. Exemplo: $diff arq1.txt arq2.txt d.3) "dump" Esse comando é específico para fazer backups, nesse processo usualmente arquivos são copiados do HD para o dispositivo de fita. Exemplo: #dump -0 -f /dev/nst0 /bin E Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 38 ADMINISTRAÇÃO DE REDES DE COMPUTADORES e.1) "echo" Esse comando "ecoa" no shell o argumento dado na linha de comando. Exemplo: $echo "Apenas um teste" $echo $SHELL $echo $PATH e.2) "env" Esse comando mostra o valor das variáveis de ambiente carregadas pelo usuário. Exemplo: $env e.3) "exit" Esse comando é usado para finalizar a execução de um script shell. Na linha de comando, finaliza (abandona) o acesso shell. Exemplo: $exit F f.1) "file" Esse comando determina o tipo do arquivo, por exemplo se é um arquivo de texto, binário, etc. Exemplo: $file arq1.txt f.2) "find" Esse comando é usado para encontrar arquivos cujo nome esteja relacionado ao padrão usado na busca. Exemplo: $find ~juca -name test.txt -print f.3) "finger" Esse comando mostra os usuários que estão logados no host. Exemplo: $finger f.4) "for" É um comando para construir loops, ou seja, permite realizar uma tarefa repetitiva num único comando. Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 39 ADMINISTRAÇÃO DE REDES DE COMPUTADORES Exemplo: $for foo in ~juca/*.txt; do cat $foo | grep TEXTO; done f.5) "free" Esse comando reporta o total de memória livre e ocupada do sistema, tanto da memória física quanto swap. Exemplo: $free f.6) "fsck" É usado pelo root para verificar a integridade do sistema de arquivo. Fsck também é usado para reparar um sistema de arquivo danificado. Exemplo: #fsck /dev/hda3 f.7) "ftp" Esse comando é aplicativo cliente do serviço de acesso FTP. Exemplo: $ftp 192.168.1.10 G g.1) "grep" O nome desse comando são as iniciais de global regular expression and print, ou seja, é um comando usado com filtro de busca por algum padrão regular em strings ou arquivos de texto. Exemplo: $cat /etc/passwd | grep juca g.2) "gzip" Esse comando é usado para compactar arquivos, após essa compactação ele adiciona a extensão ".gz" ao arquivo. Exemplo: $gzip arq1.txt g.3) "gunzip" Esse comando é usado para descompactar arquivos compactados com o comando gzip. Exemplo: $gunzip arq1.txt.gz H Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 40 ADMINISTRAÇÃO DE REDES DE COMPUTADORES h.1) "history" Esse comando mostra o histórico de comandos dados no shell. Não funciona para todos tipos de shell. Exemplo: $history h.2) "HOME" Home não é comando, mas variável de ambiente que carrega a localização da home do usuário no sistema hierárquico de arquivo. Exemplo: $echo $HOME I i.1) "ifconfig" Esse comando configura a(s) interface(s) de rede. Exemplo: $ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up $ifconfig K k.1) "kill" Esse comando é usado para enviar um sinal específico a um processo ou grupo de processos. Exemplo: $kill -9 exec1 L l.1) "ln" Esse comando cria um linque, ou seja, uma ligação entre dois arquivos. Exemplo: $ln -s /etc/passwd ~juca/passwd l.2) "LOGNAME" Logname não é comando, mas variável de ambiente que carrega o nome do usuário (username) logado. Exemplo: Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 41 ADMINISTRAÇÃO DE REDES DE COMPUTADORES $echo $LOGNAME l.3) "ls" Esse comando faz uma listagem dos objetos presentes num diretório. Exemplo: $ls $ls /etc $ls -l /etc/group l.4) "lp" Esse comando serve para enviar os dados (arquivos) para a impressora. Exemplo: $lp arq.txt l.5) "lpq" Esse comando serve para mostrar o queue (fila) de trabalhos pendentes na impressora. Exemplo: $lpq l.6) "lprm" Esse comando é usado para remover o queue de trabalho(s) pendente(s) na impressora. Exemplo: $lprm M m.1) "mesg" O comando mesg serve para controlar a recepção de mensagens no terminal. As mensagens são enviadas com o comando write. Exemplo: $mesg y $mesg n m.2) "mkdir" Esse comando é usado para criar diretórios. Exemplo: $mkdir /tmp/teste m.3) "more" O comando more é usado como um filtro para visualizar o conteúdo de uma lista paginadamente na Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 42 ADMINISTRAÇÃO DE REDES DE COMPUTADORES tela. Exemplo: $more arq.txt m.4) "mount" Esse comando é usado pelo root para montar (anexar) um sistema de arquivo a um ponto de montagem no sistema hierárquico de arquivo. Exemplo: #mount -t nfs 192.168.1.10:/mnt/cdrom /mnt/cdrom m.5) "mv" Esse comando movimenta arquivos de um diretório para outro, também serve para renomear arquivos. Exemplo: $mv ~juca/arq1.txt /tmp $mv ~juca/arq1.txt ~juca/arq2.txt N n.1) "netstat" Mostra conexões de rede, tabelas de roteamento, estatísticas de interface e conexões. Exemplo: $netstat -na P p.1) "passwd" Esse comando é usado para trocar a senha. Exemplo: $passwd #passwd juca p.2) "paste" Esse comando cola linhas de um arquivo no outro, no modo default o resultado irá aparecer na saída padrão. Nessa apresentação, o conteúdo de cada linha respectiva nos dois arquivos irá aparecer uma ao lado da outra, agora na mesma linha na saída. Exemplo: $paste arq1.txt arq2.txt p.3) "PATH" Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 43 ADMINISTRAÇÃO DE REDES DE COMPUTADORES Não é comando, mas variável de ambiente que guarda os diretórios onde o sistema busca por comandos. Exemplo: $echo $PATH p.4) "pipe" Pipe não é comando, mas um operador que permite redirecionar a saída de um comando para ser a entrada de o outro. Esse operador é representado pela barra vertical "|". Exemplo: $cat /etc/passwd | grep juca p.5) "ps" Esse comando reporta informações sobre os processos. Exemplo: $ps -ef p.6) "PS1" Não é comando, mas variável de ambiente que retorna o prompt do sistema. Exemplo: $echo $PS1 p.7) "pwd" Esse comando mostra o diretório corrente no sistema hierárquico de arquivo. Exemplo: $pwd R r.1) "rm" Esse comando é usado para remover arquivos. Exemplo. $rm arq1.txt $rm -r dir1 r.2) "rmdir" Esse comando remove diretórios vazios apenas. Exemplo: $rmdir dir1 S Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 44 ADMINISTRAÇÃO DE REDES DE COMPUTADORES s.1) "sleep" Esse comando é usado para suspender a execução de algum comando, normalmente é usado apenas em shell scripts. O tempo de interrupção normalmente é em segundos. Exemplo: sleep 10 s.2) "smbclient" Esse comando permite acessar o recurso compartilhado pelo Servidor Samba ou NetBIOS (Windows). O smbclient faz parte do pacote Samba Client e oferece uma interface de texto semelhante ao cliente ftp. Exemplo: $smbclient //aluno10/TESTE -U juca s.3) "smbmount" Esse comando é usado para montar um recurso compartilhado pelo servidor Samba ou NetBIOS (Windows). O smbmount faz parte do pacote Samba Client. Exemplo: $smbmount //aluno10/TESTE /mnt/samba -o username=juca,password=juca s.4) "smbpasswd" Esse comando permite alterar a senha do usuário no Servidor Samba. Exemplo: #smbpasswd juca s.5) "sort" Esse comando é usado para ordenar uma lista de saída. Exemplo: $cat /etc/passwd | sort -n s.6) "split" O comando split divide um arquivo grande em vários outros menores. A saída padrão para esse comando é o sistema de arquivo, ou seja, o resultado desse comando vai para os arquivos que são criados. Exemplo: $split -5 arq1.txt s.7) "su" Esse comando é usado para ganhar o shell do root ou superusuário, mediante envio da senha do root. Outra função é permitir ao root se "transformar" em outro usuário. Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 45 ADMINISTRAÇÃO DE REDES DE COMPUTADORES Exemplo: $su #su - juca s.8) "sync" Esse comando é usado para dar um flush nos buffers do sistema de arquivo, ou seja, força a cópia dos dados que estão nos buffers para o disco. Exemplo: #sync T t.1) "tail" Esse comando mostra o final de um arquivo. Exemplo: $tail arq1.txt t.2) "tar" Esse comando serve para extrair ou arquivar arquivos num arquivo chamado tarfile. O tarfile pode estar no HD, mídia removível ou fita. Na prática, o que o tar faz é apenas "aglomerar/desglomerar" arquivos, sem compactar. Exemplo: $tar cvf arq1.tar /bin t.3) "telnet" Esse comando é um aplicativo cliente do serviço de acesso telnet. Exemplo: $telnet 192.168.1.10 t.4) "top" Esse comando serve para mostrar a atividade ou uso da CPU numa interface interativa, podendo, entre outras alternativas, mudar a forma da apresentação da lista ordenada de processos que mais consomem CPU para uma lista ordenada de processos que mais alocam memória. Exemplo: $top U u.1) "uptime" Esse comando mostra há quanto tempo o host está no ar, sem rebootar. Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 46 ADMINISTRAÇÃO DE REDES DE COMPUTADORES Exemplo: $uptime W w.1) "w" Esse comando mostra os usuários logados no host. Exemplo: $w w.2) "wall" Esse comando é usado para enviar mensagens para todos usuários logados no host. Exemplo: $wall "Apenas um teste de juca..." w.3) "wc" Esse comando é usado para contar o número de linhas, palavras ou caracteres num arquivo. Exemplo: $wc arq1.txt $wc -l arq1.txt w.4) "write" Esse comando permite a comunicação entre dois usuários logados no host, numa interface semelhante a um chat. Exemplo: $write joca pts/2 Administração de Redes de Computadores – maio/2003 Prof. Jairo - jairo@uninove.br 47