Mudanças entre as edições de "PJI11103-2015-1"
(→Radius) |
|||
(160 revisões intermediárias por 3 usuários não estão sendo mostradas) | |||
Linha 4: | Linha 4: | ||
''Professor'': [[Odilson Tadeu Valle]] | ''Professor'': [[Odilson Tadeu Valle]] | ||
<br>''Email'': odilson@ifsc.edu.br | <br>''Email'': odilson@ifsc.edu.br | ||
− | <br>''Atendimento paralelo'': | + | <br>''Atendimento paralelo'': 2ª das 17h35 às 18h30 e 6ª das 9h40 às 10h35. Local: Lab. de Desenvolvimento. |
* Avaliação | * Avaliação | ||
− | ** Avaliações individuais em cada etapa do projeto com conceito numérico: | + | ** Avaliações individuais em cada etapa do projeto com conceito numérico: A, B, C e D. Conceito mínimo necessário em cada avaliação: C. |
− | ** Um ou mais conceitos | + | ** Avaliação baseada no projeto. Avaliação individual com acesso ao servidor da equipe e com questões relativas aos serviços e configurações do mesmo. |
+ | ** Um ou mais conceitos D implica na realização da reavaliação: uma única avaliação a ser realizada no último dia de aula. | ||
'''IMPORTANTE:''' o direito de recuperar uma avaliação em que se faltou somente existe mediante justificativa reconhecida pela coordenação. Assim, deve-se protocolar a justificativa no prazo de 48 horas, contando da data e horário da avaliação e aguardar o parecer da coordenação. | '''IMPORTANTE:''' o direito de recuperar uma avaliação em que se faltou somente existe mediante justificativa reconhecida pela coordenação. Assim, deve-se protocolar a justificativa no prazo de 48 horas, contando da data e horário da avaliação e aguardar o parecer da coordenação. | ||
==[[PJI3-TecTel#PJI3_-_PROJETO_INTEGRADOR_III|Plano de Ensino]]== | ==[[PJI3-TecTel#PJI3_-_PROJETO_INTEGRADOR_III|Plano de Ensino]]== | ||
+ | |||
+ | =Páginas de alunos= | ||
+ | [[Equipe 1]] | ||
=Diário de aulas= | =Diário de aulas= | ||
− | {{Collapse top |Aula 1 - | + | [[Arquivo:PRJ32015-1.png|left|600px|thumb|Diagrama geral dos componentes e serviços do projeto]] |
+ | |||
+ | |||
+ | Equipes: | ||
+ | #Tamires, Gabriel, Henrique e Danilo | ||
+ | #Sidnei, Maiquel e Adriano | ||
+ | #Marcos, Guilherme, Tais, Claudio, Caroline e Jean. | ||
+ | |||
+ | IPs e sub-domínios DNSs destinados às respectivas equipes: | ||
+ | #200.135.37.121 - prji1.sj.ifsc.edu.br | ||
+ | #200.135.37.122 - prji2.sj.ifsc.edu.br | ||
+ | #200.135.37.123 - prji3.sj.ifsc.edu.br | ||
+ | |||
+ | {{Collapse top |Aula 1 - 4/2/15: Apresentação da disciplina}} | ||
* Apresentação da disciplina, plano de aula, trabalhos e métodos de avaliação. | * Apresentação da disciplina, plano de aula, trabalhos e métodos de avaliação. | ||
Linha 28: | Linha 45: | ||
{{Collapse bottom}} | {{Collapse bottom}} | ||
− | {{collapse top | Aula 1 - | + | {{collapse top | Aula 1 - 4/2/15: Revisão dos comandos básicos}} |
Objetivo: Revisão dos comandos básicos, familiarização e fixação do conteúdo. | Objetivo: Revisão dos comandos básicos, familiarização e fixação do conteúdo. | ||
Linha 59: | Linha 76: | ||
# Verifique qual é o diretório corrente e, caso não seja o diretório home (/home/aluno) do seu usuário, vá para o mesmo. | # Verifique qual é o diretório corrente e, caso não seja o diretório home (/home/aluno) do seu usuário, vá para o mesmo. | ||
# Liste o conteúdo do diretório ''home'' do seu usuário. | # Liste o conteúdo do diretório ''home'' do seu usuário. | ||
− | # Verifique se há a ocorrência da palavra “Protocol” no arquivo /etc/ | + | # Verifique se há a ocorrência da palavra “Protocol” no arquivo '''/etc/protocols'''. |
− | # Liste as doze primeiras linhas do arquivo ''/etc/ | + | # Liste as doze primeiras linhas do arquivo '''/etc/protocols'''. |
− | # Liste as quinze últimas linhas do arquivo ''/etc/ | + | # Liste as quinze últimas linhas do arquivo '''/etc/protocols'''. |
− | # Mostre quantas linhas, palavras e caracteres possui o arquivo ''/etc/ | + | # Mostre quantas linhas, palavras e caracteres possui o arquivo '''/etc/protocols'''. |
# Quantos caracteres têm as cinco primeiras linhas do arquivo '''/etc/passwd'''. | # Quantos caracteres têm as cinco primeiras linhas do arquivo '''/etc/passwd'''. | ||
# Quantas palavras têm as 8 ultimas linhas do arquivo '''/etc/protocols'''. | # Quantas palavras têm as 8 ultimas linhas do arquivo '''/etc/protocols'''. | ||
Linha 146: | Linha 163: | ||
19 vi poema.txt | 19 vi poema.txt | ||
ESC w outroNome.txt </syntaxhighlight> | ESC w outroNome.txt </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{Collapse top |Aula 2 - 6/2/15: Formatação, instalação e início da configuração do servidor principal}} | ||
+ | O objetivo inicial é instalar e configurar basicamente o sistema operacional na máquina que atuará como principal servidor da rede. | ||
+ | |||
+ | ==Instalando o sistema operacional== | ||
+ | As etapas básicas consistem em: | ||
+ | |||
+ | #Conectar todos os periféricos mínimos na torre recebida e ligá-la à tomada. | ||
+ | #Instalar o sistema operacional lendo com atenção todas as mensagens recebidas e escolhendo adequadamente as opções, com as seguintes características: | ||
+ | ##Na etapa de formação escolha formatação manual ou avançada e crie a seguinte tabela de partição: i) / 30 GB ext4; i) /home 30 GB ext4; i) swap 4 GB swap; /var "espaço restante" ext4. | ||
+ | ##Se necessário configure manualmente os IPs, conforme passado pelo prof. | ||
+ | ##Opte por atualizar automaticamente e baixar aplicativos de terceiros. | ||
+ | ##Crie uma conta (que será definitiva) para um dos usuários da equipe, com o respectivo login e senha. | ||
+ | ##Aguarde a finalização da instalação e reinicie a máquina. | ||
+ | #Logue na máquina com a conta criada. | ||
+ | |||
+ | ==Conferindo e aprendendo sobre instalação de pacotes== | ||
+ | [http://wiki.sj.ifsc.edu.br/images/4/47/InstalacaoPacotes.pdf Slide]). [http://wiki.ubuntu-br.org/AptGet Página oficial do apt-get] | ||
+ | |||
+ | É necessário estar com e rede funcional. Teste com o comando: | ||
+ | ping www.ifsc.edu.br | ||
+ | |||
+ | # Com o '''apt-get --help''' veja quais as opções possíveis que o instalador de pacotes do Ubuntu fornece. | ||
+ | # Sincronize o sistema. | ||
+ | # Atualize as versões de todos os pacotes instalados no sistema. | ||
+ | # Com o '''apt-cache search''' procure por '''sudoku''', escolha o '''sudoku''' (nenhum outro) e instale-o. Após a instalação execute o programa instalado (digite o nome do pacote instalado) e veja se foi instalado corretamente (se rodou). | ||
+ | # Remova o programa instalado no item anterior. Confira se ele realmente foi removido. | ||
+ | |||
+ | ==Configuração básica da interface de rede== | ||
+ | #apt-get remove isc-dhcp-client | ||
+ | #vi /etc/network/interfaces <code> | ||
+ | # This file describes the network interfaces available on your system | ||
+ | # and how to activate them. For more information, see interfaces(5). | ||
+ | |||
+ | # The loopback network interface | ||
+ | auto lo eth0 | ||
+ | iface lo inet loopback | ||
+ | address 127.0.0.1 | ||
+ | netmask 255.0.0.0 | ||
+ | |||
+ | # a interface ethernet eth0 | ||
+ | iface eth0 inet static | ||
+ | address 192.168.2. X | ||
+ | netmask 255.255.255.0 | ||
+ | gateway 192.168.2.1 | ||
+ | dns-nameservers 200.135.37.65 | ||
+ | </syntaxhighlight> | ||
+ | #ifdown -a && ifup -a | ||
+ | |||
+ | ==Habilitando acesso remoto com SSH== | ||
+ | Ver capítulo 33 da [[Media:Gerencia_de_redes.pdf|apostila]]. | ||
+ | |||
+ | Atividade individual, cada aluno em sua máquina virtual (PRJ3) | ||
+ | |||
+ | #Instale o SSH em sua máquina. | ||
+ | #Habilite e desabilite o login do root.<syntaxhighlight lang=text> | ||
+ | vi /etc/ssh/sshd_config | ||
+ | PermitRootLogin yes </syntaxhighlight> | ||
+ | #Reinicie o serviço <syntaxhighlight lang=text> | ||
+ | service ssh restart </syntaxhighlight> | ||
+ | #De sua máquina real conecte e faça testes. <syntaxhighlight lang=text> | ||
+ | ssh aluno@192.168.2.1X </syntaxhighlight> | ||
+ | #Habilite o acesso somente para um conjunto de usuários (desafio). | ||
+ | #Teste. | ||
+ | #Desfaça o anterior. Bloqueie o acesso para um conjunto de usuários (desafio). | ||
+ | #Teste. | ||
+ | #Instale o SSH em sua máquina virtual com ambiente gráfico, Ip 192.168.2.2X. | ||
+ | #Habilite e desabilite o '''X11Forwarding'''. | ||
+ | #Da máquina real teste esta funcionalidade: <syntaxhighlight lang=text> | ||
+ | ssh -X aluno@192.168.2.2X | ||
+ | firefox </syntaxhighlight> | ||
+ | #Teste a funcionalidade do '''scp''', copiando arquivos locais para o servidor e vice-versa. | ||
+ | #Configure seu par de máquinas, cliente e servidor, para conexão direta, sem pedido de senha (desafio). | ||
+ | #Teste a conexão direta. | ||
+ | #Teste a execução de comandos no seu servidor, sem "sair" do cliente. | ||
+ | #Faça testes fornecendo usuário e/ou senha errados e verifique o ''log'': <syntaxhighlight lang=text> | ||
+ | tail /var/log/auth.log </syntaxhighlight> | ||
+ | #Permitindo acesso ao serviço somente para algumas redes: <syntaxhighlight lang=text> | ||
+ | vi /etc/hosts.allow | ||
+ | sshd: 1.2.3.0/255.255.255.0 | ||
+ | sshd: 192.168.0.0/255.255.255.0 | ||
+ | vi /etc/hosts.deny | ||
+ | sshd: ALL </syntaxhighlight> | ||
+ | |||
+ | ==Usuários e grupos== | ||
+ | Criação de contas de usuários e de grupos, e seu uso para conferir permissões de acesso a arquivos, diretórios e recursos do sistema operacional. | ||
+ | [[Media:Gerencia_de_redes.pdf|Apostila]], páginas 61 a 65. | ||
+ | |||
+ | Slides Aula Tulio: [[Media:SlidesAulaUserGroupPerms.pdf|Slides Aula Usuários, Grupos e Permissões ]] | ||
+ | |||
+ | Um usuário no Linux (e no Unix em geral) é definido pelo seguinte conjunto de informações: | ||
+ | |||
+ | * '''Nome de usuário (ou ''login''):''' um apelido que identifica o usuário no sistema | ||
+ | * '''UID (User Identifier):''' um número único que identifica o usuário | ||
+ | * '''GID (Group Identifier):''' o número do grupo primário do usuário | ||
+ | * '''Senha (password):''' senha para verificação de acesso | ||
+ | * '''Nome completo (''full name''):''' nome completo do usuário | ||
+ | * '''Diretório inicial (''homedir''):''' o subddiretório pessoal do usuário, onde ele é colocado ao entrar no sistema | ||
+ | * '''Shell:''' o programa a ser executado quando o usuário entrar no sistema | ||
+ | |||
+ | As contas de usuários, que contêm as informações acima, podem ficar armazenadas em diferentes bases de dados (chamadas de ''bases de dados de usuários''). Dentre elas, a mais simples é composta pelo arquivo [http://www.kernel.org/doc/man-pages/online/pages/man5/passwd.5.html ''/etc/passwd'']: | ||
+ | |||
+ | root:x:0:0:root:/root:/bin/bash | ||
+ | sshd:x:71:65:SSH daemon:/var/lib/sshd:/bin/false | ||
+ | suse-ncc:x:105:107:Novell Customer Center User:/var/lib/YaST2/suse-ncc-fakehome:/bin/bash | ||
+ | wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false | ||
+ | man:x:13:62:Manual pages viewer:/var/cache/man:/bin/bash | ||
+ | news:x:9:13:News system:/etc/news:/bin/bash | ||
+ | uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash | ||
+ | roberto:x:1001:100:Roberto de Matos:/data1/roberto:/bin/bash | ||
+ | |||
+ | Acima um exemplo de arquivo ''/etc/passwd'' | ||
+ | |||
+ | Cada linha desse arquivo define uma conta de usuário no seguinte formato: | ||
+ | |||
+ | ''nome de usuário:senha:UID:GID:Nome completo:Diretório inicial:Shell'' | ||
+ | |||
+ | O campo ''senha'' em ''/etc/passwd'' pode assumir os valores: | ||
+ | * ''x'': significa que a senha se encontra em ''/etc/shadow'' | ||
+ | * ''*'': significa que a conta está bloqueada | ||
+ | * ''senha encriptada'': a senha de fato, porém encriptada usando algoritmo hash [http://pt.wikipedia.org/wiki/Md5 MD5] ou [http://www.kernel.org/doc/man-pages/online/pages/man3/crypt.3.html crypt]. Porém usualmente a senha fica armazenada no arquivo ''/etc/shadow''. | ||
+ | |||
+ | O arquivo ''/etc/shadow'' armazena exclusivamente as informações relativas a senha e validade da conta. Nele cada conta possui as seguintes informações: | ||
+ | * Nome de usuário | ||
+ | * Senha encriptada (sobrepõe a senha que porventura exista em ''/etc/passwd'') | ||
+ | * Data da última modificação da senha | ||
+ | * Dias até que a senha possa ser modificada (validade mínima da senha) | ||
+ | * Dias após que a senha deve ser modificada | ||
+ | * Dias antes da expiração da senha em que o usuário deve ser alertado | ||
+ | * Dias após a expiração da senha em que a conta é desabilitada | ||
+ | * Data em que a conta foi desabilitada | ||
+ | |||
+ | Um exemplo do arquivo ''/etc/shadow'' segue abaixo: | ||
+ | |||
+ | root:$2a$05$8IZNUuFTMoA3xv5grggWa.oBUBfvrE4MfgRDTlUI1zWDXGOHi9dzG:13922:::::: | ||
+ | suse-ncc:!:13922:0:99999:7::: | ||
+ | uucp:*:13922:::::: | ||
+ | wwwrun:*:13922:::::: | ||
+ | roberto:$1$meoaWjv3$NUhmMHVdnxjmyyRNlli5M1:14222:0:99999:7::: | ||
+ | |||
+ | ''Exercício: quando a senha do usuário ''roberto'' irá expirar ?'' | ||
+ | |||
+ | Um grupo é um conjunto de usuários definido da seguinte forma: | ||
+ | * '''Nome de group (group name):''' o nome que identifica o grupo no sistema | ||
+ | * '''GID (Group Identifier):''' um número único que identifica o grupo | ||
+ | * '''Lista de usuários:''' um conjunto de usuários que são membros do grupo | ||
+ | |||
+ | Assim como as contas de usuários, os grupos ficam armazenados em bases de dados de usuários, sendo o arquivo ''/etc/group'' a mais simples delas: | ||
+ | |||
+ | root:x:0: | ||
+ | trusted:x:42: | ||
+ | tty:x:5: | ||
+ | utmp:x:22: | ||
+ | uucp:x:14: | ||
+ | video:x:33:roberto | ||
+ | www:x:8:roberto | ||
+ | users:x:100: | ||
+ | radiusd:!:108: | ||
+ | vboxusers:!:1000: | ||
+ | |||
+ | Os membros de um grupo são os usuários que o têm como grupo primário (especificado na conta do usuário em ''/etc/passwd''), ou que aparecem listados em ''/etc/group''. | ||
+ | |||
+ | === Gerenciamento de usuários e grupos === | ||
+ | |||
+ | Para gerenciar usuários e grupos podem-se editar diretamente os arquivos ''/etc/passwd'', ''/etc/shadow'' e ''/etc/group'', porém existem utilitários que facilitam essa tarefa: | ||
+ | |||
+ | * '''useradd''' ou '''adduser''': adiciona um usuário | ||
+ | ** Ex: ''useradd -m roberto'' : cria o usuário ''roberto'' juntamente com o diretório (-m --makedir). | ||
+ | ** Ex: ''useradd -c "Roberto de Matos" -m roberto'' : cria o usuário ''roberto'' com nome completo "Roberto de Matos" | ||
+ | ** Ex: ''useradd -c "Roberto de Matos" -g users -m -d /usuarios/roberto -s /bin/tcsh roberto'' : cria o usuário ''roberto'' com nome completo "Roberto de Matos", grupo ''users'', diretório inicial /usuarios/roberto e shell /bin/tcsh | ||
+ | * '''userdel:''' remove um usuário | ||
+ | ** Ex: ''userdel roberto'' : remove o usuário ''roberto'', porém preservando seu diretório home | ||
+ | ** Ex: ''userdel -r roberto'' : remove o usuário ''roberto'', incluindo seu diretório home | ||
+ | * '''usermod:''' modifica as informações da conta de um usuário | ||
+ | ** Ex: ''usermod -g wheel roberto'' : modifica o GID do usuário ''roberto'' | ||
+ | ** Ex: ''usermod -G users,wheel roberto'' : modifica os grupos secundários do usuário ''roberto'' | ||
+ | ** Ex: ''usermod -d /contas/roberto roberto'' : modifica o diretório inicial do usuário ''roberto'' (mas não copia os arquivos ...) | ||
+ | ** Ex: ''usermod -l robertomatos roberto'' : modifica o login do usuário ''roberto'' | ||
+ | ** Ex: ''usermod -m ...'' : cria o diretório home do usuário ''roberto'' | ||
+ | ** Ex: ''usermod -c "Roberto Matos, R. dos Navegantes, 33333333"'' : atribui comentários ao usuário ''roberto'' | ||
+ | * '''passwd:''' modifica a senha de usuário | ||
+ | ** Ex: ''passwd roberto'' | ||
+ | * '''login:''' logo como outro usuário. Tem de estar como root | ||
+ | ** Ex: ''login roberto'' | ||
+ | * '''groupadd:''' adiciona um grupo | ||
+ | ** Ex: ''groupadd ger'': cria o grupo ''ger'' | ||
+ | * '''groupdel:''' remove um grupo | ||
+ | ** Ex: ''groupdel ger'': remove o grupo ''ger'' | ||
+ | |||
+ | Esses utilitários usam os arquivos ''/etc/login.defs'' e ''/etc/default/useradd'' para obter seus parâmetros padrão. O ''/etc/adduser.conf'' tem o mesmo intuito mas é seta exclusivamente os parâmetros do comando ''adduser''. O arquivo /etc/login.defs contém uma série de diretivas e padrões que serão utilizados na criação das próximas contas de usuários. Seu principal conteúdo é: | ||
+ | |||
+ | MAIL_DIR dir # Diretório de e-mail | ||
+ | PASS_MAX_DAYS 99999 #Número de dias até que a senha expire | ||
+ | PASS_MIN_DAYS 0 #Número mínimo de dias entre duas trocas senha | ||
+ | PASS_MIN_LEN 5 #Número mínimo de caracteres para composição da senha | ||
+ | PASS_WARN_AGE 7 #Número de dias para notificação da expiração da senha | ||
+ | UID_MIN 500 #Número mínimo para UID | ||
+ | UID_MAX 60000 #Número máximo para UID | ||
+ | GID_MIN 500 #Número mínimo para GID | ||
+ | GID_MAX 60000 #Número máximo para GID | ||
+ | CREATE_HOME yes #Criar ou não o diretório home | ||
+ | |||
+ | Como o login.defs o arquivo /etc/default/useradd contém padrões para criação de contas. Seu principal conteúdo é: | ||
+ | |||
+ | GROUP=100 #GID primário para os usuários criados | ||
+ | HOME=/home #Diretório a partir do qual serão criados os “homes” | ||
+ | INACTIVE=-1 #Quantos dias após a expiração da senha a conta é desativada | ||
+ | EXPIRE=AAAA/MM/DD #Dia da expiração da conta | ||
+ | SHEL=/bin/bash #Shell atribuído ao usuário. | ||
+ | SKEL=/etc/skel #Arquivos e diretórios padrão para os novos usuários. | ||
+ | GROUPS=video,dialout | ||
+ | CREATE_MAIL_SPOOL=no | ||
+ | |||
+ | O /etc/adduser.conf também possui uma série de padrões que funcionam especificamente para o comando adduser: | ||
+ | DSHELL=/bin/bash #Shell atribuído ao usuário. | ||
+ | DHOME=/home #Diretório a partir do qual serão criados os “homes” | ||
+ | SKEL=/etc/skel #Arquivos e diretórios padrão para os novos usuários. | ||
+ | FIRST_UID=1000 #Número mínimo para UID | ||
+ | LAST_UID=29999 #Número máximo para UID | ||
+ | FIRST_GID=1000 #Número mínimo para GID | ||
+ | LAST_GID=29999 #Número máximo para GID | ||
+ | QUOTAUSER="" #Se o sistema de cotas estiver funcional, pode atribuir quota ao usuário criado. | ||
+ | |||
+ | === Atividade === | ||
+ | |||
+ | Esta parte da atividade cada aluno executa individualmente em sua máquina, fazendo uso da devida máquina virtual (PRJ3). | ||
+ | |||
+ | Obs.: Na máquina virtual (PRJ3-servidor) é possível ter vários usuários logados simultaneamente, para isto basta logar o primeiro usuário (aluno) normalmente e, para os demais usuários, abrir novos terminais com as teclas: <Alt> + <F2>, <Alt> + <F3>, <Alt> + <F4> .... Para retornar a um dos usuários logados basta digitar o conjunto de teclas (<Alt> + <F?>) do respectivo usuário. | ||
+ | |||
+ | # Crie o grupo turma. | ||
+ | # Crie o diretório /home/contas. | ||
+ | # Copie dos arquivos /etc/login.defs, /etc/default/useradd e /etc/adduser.conf para o /home/aluno. | ||
+ | # Modificando os arquivos /etc/login.defs, /etc/default/useradd e/ou /etc/adduser.conf, faça com que os usuários sejam criados com o seguinte perfil, por padrão: | ||
+ | ## O diretório home dos usuários seja /home/contas; | ||
+ | ## Iniciar a numeração de usuários (ID) a partir de 1500. | ||
+ | # Crie um usuário com o nome de manoel, pertencente ao grupo turma. | ||
+ | # Dê ao usuário manoel a senha mane123. | ||
+ | # Acrescente, por comandos, ao perfil do usuário seu nome completo e endereço: Manoel da Silva, R. dos Pinheiros, 2476666. | ||
+ | # Verifique o arquivo /etc/passwd. | ||
+ | # Mude, por comandos, o diretório home do manoel de /home/contas/manoel para /home/manoel. | ||
+ | # Mude o login do manoel para manoelsilva. | ||
+ | # Logue como manoelsilva. | ||
+ | # Recomponha os arquivos originais do item 3. | ||
+ | |||
+ | Atividade a ser realizada no servidor da equipe | ||
+ | |||
+ | #Criem uma conta para cada membro da equipe com poder de comando sudo (desafio). | ||
+ | #Baseado no diagrama geral, discutam a necessidade de criação de outros grupos e/ou usuários para atender as futuras demandas. Criem estes grupos e usuários. | ||
+ | #Configurem o servidor SSH de tal modo que somente os membros da equipe possam fazer acesso remoto. Falando de outro modo, coíbam o acesso pelo '''root''' e qualquer outro usuário. | ||
+ | {{Collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 3 - 9/2/15: Permissões}} | ||
+ | |||
+ | Há uma maneira de restringir o acesso aos arquivos e diretórios para que somente determinados usuários possam acessá-los. A cada arquivo e diretório é associado um conjunto de permissões. Essas permissões determinam quais usuários podem ler, e escrever (alterar) um arquivo e, no caso de ser um arquivo executável, quais usuários podem executá-lo. Se um usuário tem permissão de execução para um diretório, significa que ele pode realizar buscas dentro daquele diretório, e não executá-lo como se fosse um programa. | ||
+ | |||
+ | Quando um usuário cria um arquivo ou um diretório, o LINUX determina que ele é o proprietário (owner) daquele arquivo ou diretório. O esquema de permissões do LINUX permite que o proprietário determine quem tem acesso e em que modalidade eles poderão acessar os arquivos e diretórios que ele criou. O super-usuário (root), entretanto, tem acesso a qualquer arquivo ou diretório do sistema de arquivos. | ||
+ | |||
+ | O conjunto de permissões é dividido em três classes: proprietário, grupo e usuários. Um grupo pode conter pessoas do mesmo departamento ou quem está trabalhando junto em um projeto. Os usuários que pertencem ao mesmo grupo recebem o mesmo número do grupo (também chamado de Group Id ou GID). Este número é armazenado no arquivo /etc/passwd junto com outras informações de identificação sobre cada usuário. O arquivo /etc/group contém informações de controle sobre todos os grupos do sistema. Assim, pode -se dar permissões de acesso diferentes para cada uma destas três classes. | ||
+ | |||
+ | Quando se executa ''ls -l'' em um diretório qualquer, os arquivos são exibidos de maneira semelhante a seguinte: | ||
+ | |||
+ | > ls -l | ||
+ | total 403196 | ||
+ | drwxr-xr-x 4 odilson admin 4096 Abr 2 14:48 BrOffice_2.1_Intalacao_Windows/ | ||
+ | -rw-r--r-- 1 luizp admin 113811828 Out 31 21:28 broffice.org.2.0.4.rpm.tar.bz2 | ||
+ | -rw-r--r-- 1 root root 117324614 Dez 27 14:47 broffice.org.2.1.0.rpm.tar.bz2 | ||
+ | -rw-r--r-- 1 luizp admin 90390186 Out 31 22:04 BrOo_2.0.4_Win32Intel_install_pt-BR.exe | ||
+ | -rw-r--r-- 1 root root 91327615 Jan 5 21:27 BrOo_2.1.0_070105_Win32Intel_install_pt-BR.exe | ||
+ | > | ||
+ | |||
+ | As colunas que aparecem na listagem são: | ||
+ | # Esquema de permissões; | ||
+ | # Número de ligações do arquivo; | ||
+ | # Nome do usuário dono do arquivo; | ||
+ | # Nome do grupo associado ao arquivo; | ||
+ | # Tamanho do arquivo, em bytes; | ||
+ | # Mês da criação do arquivo; Dia da criação do arquivo; | ||
+ | # Hora da criação do arquivo; | ||
+ | # Nome do arquivo; | ||
+ | |||
+ | O esquema de permissões está dividido em 10 colunas, que indicam se o arquivo é um diretório ou não (coluna 1), e o modo de acesso permitido para o proprietário (colunas 2, 3 e 4), para o grupo (colunas 5, 6 e 7) e para os demais usuários (colunas 8, 9 e 10). | ||
+ | |||
+ | Existem três modos distintos de permissão de acesso: leitura (read), escrita (write) e execução (execute). A cada classe de usuários você pode atribuir um conjunto diferente de permissões de acesso. Por exemplo, atribuir permissão de acesso irrestrito (de leitura, escrita e execução) para você mesmo, apenas de leitura para seus colegas, que estão no mesmo grupo que você, e nenhum acesso aos demais usuários. A permissão de execução somente se aplica a arquivos que podem ser executados, obviamente, como programas já compilados ou script shell. Os valores válidos para cada uma das colunas são os seguintes: | ||
+ | *1 d se o arquivo for um diretório; -se for um arquivo comum; | ||
+ | *2,5,8 r se existe permissão de leitura; - caso contrário; | ||
+ | *3,6,9 w se existe permissão de alteração; - caso contrário; | ||
+ | *4,7,10 x se existe permissão de execução; - caso contrário; | ||
+ | |||
+ | A permissão de acesso a um diretório tem outras considerações. As permissões de um diretório podem afetar a disposição final das permissões de um arquivo. Por exemplo, se o diretório dá permissão de gravação a todos os usuários, os arquivos dentro do diretório podem ser removidos, mesmo que esses arquivos não tenham permissão de leitura, gravação ou execução para o usuário. Quando a permissão de execução é definida para um diretório, ela permite que se pesquise ou liste o conteúdo do diretório. | ||
+ | |||
+ | A modificação das permissões de acesso a arquivos e diretórios pode ser feita usando-se os utilitários: | ||
+ | * '''[http://manpages.ubuntu.com/manpages/karmic/en/man1/chmod.1.html chmod]:''' muda as permissões de acesso (também chamado de modo de acesso). Somente pode ser executado pelo dono do arquivo ou pelo superusuário | ||
+ | ** Ex: ''chmod +x /home/usuario/programa'' : adiciona para todos os usuários a permissão de execução ao arquivo /home/usuario/programa | ||
+ | ** Ex: ''chmod -w /home/usuario/programa'' : remove para todos os usuários a permissão de escrita do arquivo /home/usuario/programa | ||
+ | ** Ex: ''chmod o-rwx /home/usuario/programa'' : remove todas as permissões de acesso ao arquivo /home/usuario/programa para todos os usuários que não o proprietário e membros do grupo proprietário | ||
+ | ** Ex: ''chmod 755 /home/usuario/programa'' : define as permissões rwxr-xr-x para o arquivo /home/usuario/programa | ||
+ | * '''[http://manpages.ubuntu.com/manpages/karmic/en/man1/chown.1.html chown]:''' muda o proprietário de um arquivo. Somente pode ser executado pelo superusuário. | ||
+ | ** Ex: ''chown roberto /home/usuario/programa'': faz com que o usuário ''roberto'' seja o dono do arquivo | ||
+ | * '''[http://manpages.ubuntu.com/manpages/hardy/pt/man1/chgrp.1.html chgrp]''': muda o grupo dono de um arquivo. Somente pode ser executado pelo superusuário. | ||
+ | ** Ex: ''chgrp users /home/usuario/programa'': faz com que o grupo ''users'' seja o grupo dono do arquivo /home/usuario/programa | ||
+ | |||
+ | Há também o utilitário [http://manpages.ubuntu.com/manpages/karmic/en/man1/umask.1posix.html umask], que define as permissões default para os novos arquivos e diretórios que um usuário criar. Esse utilitário define uma máscara (em octal) usada para indicar que permissões devem ser removidas. Exemplos: | ||
+ | |||
+ | * ''umask 022'': tira a permissão de escrita para group e demais usuários | ||
+ | * ''umask 027'': tira a permissão de escrita para group, e todas as permissões para demais usuários | ||
+ | |||
+ | === Atividade === | ||
+ | |||
+ | # Crie a partir do /home 3 diretórios, um com nome aln (aluno), outro prf (professor) e o último svd (servidor). | ||
+ | # Crie 3 grupos com os mesmos nomes acima. | ||
+ | # Crie 3 contas de usuários pertencentes ao grupo aln: aluno1, aluno2, aluno3. Estas contas deverão ter seus diretórios homes criados por comando dentro do diretório /home/aln/. Por exemplo para o aluno1 teremos /home/aln/aluno1. | ||
+ | # Crie 3 contas pertencentes ao grupo prf: prof1, prof2, prof3. Estas contas deverão ter seus diretórios homes criados por comando dentro do diretório /home/prf/. | ||
+ | # Crie 3 contas pertencentes ao grupo svd: serv1, serv2, serv3. Estas contas deverão ter seus diretórios homes criados por comando dentro do diretório /home/svd/. | ||
+ | # Os diretórios dos alunos, e todo o seu conteúdo, devem ser visíveis e editáveis aos membros do próprio grupo, visíveis mas não apagáveis a todos os demais usuários da rede. | ||
+ | # Já os diretórios dos professores e servidores, devem ser mutuamente visíveis, mas não apagáveis, entre os membros dos grupos professores e servidores mas não deve ser sequer visível aos membros do grupo alunos. | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 4 - 11/2/15: Aulas suspensas por falta de energia}} | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 5 - 23/2/15: Configurações no servidor principal}} | ||
+ | |||
+ | #Execute o roteiro de usuários, grupos e permissionamento. | ||
+ | #Com os membros da equipe proponham e criem: | ||
+ | ##Uma conta individual para cada membro da equipe com os devidos quesitos de segurança e permissionamento. | ||
+ | ##Política de segurança a ser empregada para os usuários as serem criados por convite dos membros da equipe (familiares e amigos). Criem uma conta neste padrão, por hora denominada visitante. | ||
+ | ##Uma conta para o professor, com direito a executar comandos via sudo e com acesso via SSH. | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 6 - 25/2/15: Configurações no servidor principal}} | ||
+ | |||
+ | #Execute o roteiro de permissionamento. | ||
+ | #Com os membros da equipe proponham e criem: | ||
+ | ##Uma conta individual para cada membro da equipe com os devidos quesitos de segurança e permissionamento. | ||
+ | ##Política de segurança a ser empregada para os usuários as serem criados por convite dos membros da equipe (familiares e amigos). Criem uma conta neste padrão, por hora denominada visitante. | ||
+ | ##Uma conta para o professor, com direito a executar comandos via sudo e com acesso via SSH. | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 7 - 2/3/15: Interfaces de rede e rotas estáticas}} | ||
+ | |||
+ | [[Media:Gerencia_de_redes.pdf|Apostila]], capítulo 22. | ||
+ | |||
+ | Interface de rede é qualquer dispositivo (físico ou lógico) capaz de transmitir e receber datagramas IP. Interfaces de rede ethernet são o exemplo mais comum, mas há também interfaces PPP (seriais), interfaces tipo túnel e interfaces ''loopback''. De forma geral, essas interfaces podem ser configuradas com um endereço IP e uma máscara de rede, e serem ativadas ou desabilitadas. Em sistemas operacionais Unix a configuração de interfaces de rede se faz com o programa [http://manpages.ubuntu.com/manpages/karmic/pt_BR/man8/ifconfig.8.html ifconfig]: | ||
+ | |||
+ | Para mostrar todas as interfaces: | ||
+ | |||
+ | <syntaxhighlight lang=bash> | ||
+ | root@gerencia:~> ifconfig -a | ||
+ | dsl0 Link encap:Point-to-Point Protocol | ||
+ | inet addr:189.30.70.200 P-t-P:200.138.242.254 Mask:255.255.255.255 | ||
+ | UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1 | ||
+ | RX packets:34260226 errors:0 dropped:0 overruns:0 frame:0 | ||
+ | TX packets:37195398 errors:0 dropped:0 overruns:0 carrier:0 | ||
+ | collisions:0 txqueuelen:3 | ||
+ | RX bytes:19484812547 (18582.1 Mb) TX bytes:10848608575 (10346.0 Mb) | ||
+ | |||
+ | eth1 Link encap:Ethernet HWaddr 00:19:D1:7D:C9:A9 | ||
+ | inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 | ||
+ | UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 | ||
+ | RX packets:37283974 errors:0 dropped:0 overruns:0 frame:0 | ||
+ | TX packets:42055625 errors:0 dropped:0 overruns:0 carrier:0 | ||
+ | collisions:0 txqueuelen:1000 | ||
+ | RX bytes:20939614658 (19969.5 Mb) TX bytes:18284980569 (17437.9 Mb) | ||
+ | Interrupt:16 Base address:0xc000 | ||
+ | |||
+ | lo Link encap:Local Loopback | ||
+ | inet addr:127.0.0.1 Mask:255.0.0.0 | ||
+ | UP LOOPBACK RUNNING MTU:16436 Metric:1 | ||
+ | RX packets:273050 errors:0 dropped:0 overruns:0 frame:0 | ||
+ | TX packets:273050 errors:0 dropped:0 overruns:0 carrier:0 | ||
+ | collisions:0 txqueuelen:0 | ||
+ | RX bytes:21564572 (20.5 Mb) TX bytes:21564572 (20.5 Mb) | ||
+ | root@gerencia:~> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Para configurar uma interface de rede (que fica automaticamente ativada): | ||
+ | |||
+ | <syntaxhighlight lang=bash> | ||
+ | root@gerencia:~> ifconfig eth1 192.168.1.100 netmask 255.255.255.0 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Os scripts [http://manpages.ubuntu.com/manpages/karmic/en/man8/ifup.8.html ifup] e [http://manpages.ubuntu.com/manpages/karmic/en/man8/ifdown.8.html ifdown] servem para ativar ou parar interfaces específicas, fazendo todas as operações necessárias para isto: | ||
+ | |||
+ | <syntaxhighlight lang=bash> | ||
+ | # Desativam e ativam todas as interfaces de rede | ||
+ | ifdown -a && ifup -a </syntaxhighlight> | ||
+ | |||
+ | Ao se configurar uma interface de rede, cria-se uma rota automática para a subrede diretamente acessível via aquela interface. Isto se chama '''''roteamento mínimo'''''. | ||
+ | |||
+ | <syntaxhighlight lang=bash> | ||
+ | root@gerencia:~> ifconfig eth1 192.168.10.0 netmask 255.255.0.0 | ||
+ | root@gerencia:~> netstat -rn (ou: route -n) | ||
+ | Kernel IP routing table | ||
+ | Destination Gateway Genmask Flags MSS Window irtt Iface | ||
+ | 192.168.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1 | ||
+ | 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo | ||
+ | root@gerencia:~> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Pode-se associar mais de um endereço a uma mesma interface de rede. Isto se chama '''''IP alias''''': | ||
+ | |||
+ | <syntaxhighlight lang=bash> | ||
+ | root@gerencia:~> ifconfig eth1:0 192.168.1.110 netmask 255.255.255.0 | ||
+ | root@gerencia:~> ifconfig eth1:1 192.168.2.100 netmask 255.255.255.0 | ||
+ | root@gerencia:~> ifconfig -a | ||
+ | eth1 Link encap:Ethernet HWaddr 00:19:D1:7D:C9:A9 | ||
+ | inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 | ||
+ | UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 | ||
+ | RX packets:37295731 errors:0 dropped:0 overruns:0 frame:0 | ||
+ | TX packets:42068558 errors:0 dropped:0 overruns:0 carrier:0 | ||
+ | collisions:0 txqueuelen:1000 | ||
+ | RX bytes:20942258027 (19972.0 Mb) TX bytes:18294794452 (17447.2 Mb) | ||
+ | Interrupt:16 Base address:0xc000 | ||
+ | |||
+ | eth1:0 Link encap:Ethernet HWaddr 00:19:D1:7D:C9:A9 | ||
+ | inet addr:192.168.1.110 Bcast:192.168.1.255 Mask:255.255.255.0 | ||
+ | UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 | ||
+ | Interrupt:16 Base address:0xc000 | ||
+ | |||
+ | eth1:1 Link encap:Ethernet HWaddr 00:19:D1:7D:C9:A9 | ||
+ | inet addr:192.168.2.100 Bcast:192.168.2.255 Mask:255.255.255.0 | ||
+ | UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 | ||
+ | Interrupt:16 Base address:0xc000 | ||
+ | root@gerencia:~> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ==== Configuração no boot ==== | ||
+ | |||
+ | Todo sistema operacional possui alguma forma de configurar suas interfaces de rede, para que sejam automaticamente ativadas no boot com seus endereços IP. Por exemplo, em sistemas Linux Ubuntu (descrito em maiores detalhes em seu [https://help.ubuntu.com/12.04/serverguide/network-configuration.html manual online]). | ||
+ | |||
+ | A configuração de rede se concentra no arquivo [http://manpages.ubuntu.com/manpages/karmic/man5/interfaces.5.html /etc/network/interfaces]: | ||
+ | |||
+ | <syntaxhighlight lang=text> | ||
+ | # This file describes the network interfaces available on your system | ||
+ | # and how to activate them. For more information, see interfaces(5). | ||
+ | |||
+ | # The loopback network interface | ||
+ | auto lo eth1 | ||
+ | iface lo inet loopback | ||
+ | address 127.0.0.1 | ||
+ | netmask 255.0.0.0 | ||
+ | |||
+ | # a interface ethernet eth1 | ||
+ | iface eth1 inet static | ||
+ | address 192.168.1.100 | ||
+ | netmask 255.255.255.0 | ||
+ | gateway 192.168.1.254 | ||
+ | dns-nameservers 200.135.37.65 | ||
+ | |||
+ | # apelido para eth1 | ||
+ | iface eth1:0 inet static | ||
+ | address 192.168.5.100 | ||
+ | netmask 255.255.255.0 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Para ativar, desativar ou recarregar as configurações de todas as interfaces de rede: | ||
+ | |||
+ | <syntaxhighlight lang=bash> | ||
+ | # Desativam e ativam todas as interfaces de rede | ||
+ | ifdown -a && ifup -a </syntaxhighlight> | ||
+ | |||
+ | === Rotas estáticas === | ||
+ | |||
+ | Ver capítulo 23 da [[Media:Gerencia_de_redes.pdf|apostila]]. | ||
+ | |||
+ | Rotas estáticas podem ser adicionadas a uma tabela de roteamento. Nos sistemas operacionais Unix, usa-se o programa [http://manpages.ubuntu.com/manpages/karmic/en/man8/route.8.html route]: | ||
+ | |||
+ | <syntaxhighlight lang=bash> | ||
+ | # adiciona uma rota para a rede 10.0.0.0/24 via o gateway 192.168.1.254 | ||
+ | route add -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.1.254 | ||
+ | |||
+ | # adiciona uma rota para a rede 172.18.0.0/16 via a interface PPP pp0 | ||
+ | route add -net 172.18.0.0 netmask 255.255.0.0 dev ppp0 | ||
+ | |||
+ | # adiciona a rota default via o gateway 192.168.1.254 | ||
+ | route add -net default gw 192.168.1.254 | ||
+ | |||
+ | # adiciona uma rota para o host 192.168.1.101 via o gateway 192.168.1.253 | ||
+ | route add -host 192.168.1.101 gw 192.168.1.253 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Para configurar a máquina para repassar pacotes entre as interfaces (rotear) deve-se setar o bit do ip_forward, com o comando: | ||
+ | echo 1 > /proc/sys/net/ipv4/ip_forward | ||
+ | |||
+ | A tabela de rotas pode ser consultada com o programa [http://manpages.ubuntu.com/manpages/karmic/en/man8/netstat.8.html netstat]: | ||
+ | |||
+ | <syntaxhighlight lang=bash> | ||
+ | root@gerencia:~> netstat -rn | ||
+ | Kernel IP routing table | ||
+ | Destination Gateway Genmask Flags MSS Window irtt Iface | ||
+ | 10.0.0.0 192.168.1.254 255.255.255.0 U 0 0 0 eth1 | ||
+ | 192.168.1.101 192.168.1.253 255.255.255.0 UH 0 0 0 eth1 | ||
+ | 172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 ppp0 | ||
+ | 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 | ||
+ | 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo | ||
+ | 0.0.0.0 192.168.1.254 0.0.0.0 U 0 0 0 eth1 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Rotas podem ser removidas também com '''''route''''': | ||
+ | |||
+ | <syntaxhighlight lang=bash> | ||
+ | # remove a rota para 10.0.0.0/24 | ||
+ | route delete -net 10.0.0.0 netmask 255.255.255.0 | ||
+ | |||
+ | # remove a rota para o host 192.168.1.101 | ||
+ | route delete -host 192.168.1.101 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Coleta e análise de tráfego === | ||
+ | |||
+ | Uma ferramenta básica de análise de tráfego de rede faz a coleta das PDUs por interfaces de rede, revelando as informações nelas contidas. Dois programas bastante populares | ||
+ | para essa finalidade são: | ||
+ | |||
+ | * [http://manpages.ubuntu.com/manpages/karmic/en/man8/tcpdump.8.html tcpdump]: um analisador de tráfego em modo texto<syntaxhighlight lang=bash> | ||
+ | lab01:/data/tmp # tcpdump -i dsl0 -ln tcp port 80 | ||
+ | tcpdump: verbose output suppressed, use -v or -vv for full protocol decode | ||
+ | listening on dsl0, link-type LINUX_SLL (Linux cooked), capture size 96 bytes | ||
+ | 22:14:37.797702 IP 74.125.47.136.80 > 201.35.226.9.21688: F 3660173220:3660173220(0) ack 4262495618 win 122 <nop,nop,timestamp 403588225 348814601> | ||
+ | 22:14:37.836844 IP 201.35.226.9.21688 > 74.125.47.136.80: . ack 1 win 54 <nop,nop,timestamp 348874613 403588225> | ||
+ | 22:14:38.410477 IP 201.35.226.9.21688 > 74.125.47.136.80: F 1:1(0) ack 1 win 54 <nop,nop,timestamp 348874756 403588225> | ||
+ | 22:14:38.770653 IP 74.125.47.136.80 > 201.35.226.9.21688: . ack 2 win 122 <nop,nop,timestamp 403589203 348874756> | ||
+ | 22:14:39.906734 IP 64.233.163.83.80 > 201.35.226.9.23018: P 534213879:534214123(244) ack 1779175654 win 133 <nop,nop,timestamp 2294865159 348870211> | ||
+ | </syntaxhighlight> | ||
+ | * [http://manpages.ubuntu.com/manpages/karmic/en/man1/wireshark.1.html wireshark]: o equivalente em modo gráfico (porém com muitas outras funcionalidades) | ||
+ | |||
+ | Outros programas úteis (ou ao menos interessantes): | ||
+ | |||
+ | * [http://manpages.ubuntu.com/manpages/karmic/en/man8/iptraf.8.html iptraf]: gera estatísticas de tráfego por interfaces de rede | ||
+ | * [http://manpages.ubuntu.com/manpages/karmic/en/man8/iftop.8.html iftop]: mostra os fluxos em uma interface de rede | ||
+ | * [http://manpages.ubuntu.com/manpages/karmic/en/man1/nstreams.1.html nstreams]: analisa a saída do ''tcpdump'', e revela os fluxos em uma rede | ||
+ | * [http://manpages.ubuntu.com/manpages/karmic/en/man1/driftnet.1.html driftnet]: analisa o tráfego em uma interface, e captura imagens, videos e audio | ||
+ | |||
+ | === NAT === | ||
+ | |||
+ | A tradução de endereço de rede (NAT - Network Address Translation), proposta pela [http://www.faqs.org/rfcs/rfc1631.html RFC 1631] em 1994, é uma função de rede criada para contornar o problema da escassez de endereços IP. Com a explosão no crescimento da Internet, e o mau aproveitamento dos endereços IP (agravado pelo endereçamento hierárquico), percebeu-se que o esgotamento de endereços poderia ser logo alcançado a não ser que algumas medidas fossem tomadas. Esse problema somente seria eliminado com a reformulação do protocolo IP, de forma a aumentar o espaço de endereços, que resultou na proposta do [http://www.faqs.org/rfcs/rfc2460.html IPv6] em 1998. Porém no início dos anos 1990 a preocupação era mais imediata, e pensou-se em uma solução provisória para possibilitar a expansão da rede porém reduzindo-se a pressão por endereços IP. O NAT surgiu assim como uma técnica com intenção de ser usada temporariamente, enquanto soluções definitivas não se consolidassem. Ainda hoje NAT é usado em larga escala, e somente deve ser deixado de lado quando IPv6 for adotado mundialmente (o que deve demorar). | ||
+ | |||
+ | NAT parte de um princípio simples: endereços IP podem ser compartilhados por nodos em uma rede. Para isto, usam-se endereços IP ditos não roteáveis (também chamados de inválidos) em uma rede, sendo que um ou mais endereços IP roteáveis (válidos) são usados na interface externa roteador que a liga a Internet. Endereços não roteáveis pertencem às subredes 10.0.0.0/8, 192.168.0.0/16 e 172.16.0.0/12, e correspondem a faixas de endereços que não foram alocados a nenhuma organização e, portanto, não constam das tabelas de roteamento dos roteadores na Internet. A figura abaixo mostra uma visão geral de uma rede em que usa NAT: | ||
+ | |||
+ | [[Imagem:Nat-exemplo.png]] | ||
+ | |||
+ | Para ser possível compartilhar um endereço IP, NAT faz mapeamentos ''(IP origem, port origem, protocolo transporte)'' -> ''(IP do NAT, port do NAT, , protocolo transporte)'', sendo ''protocolo de transporte'' TCP ou UDP. Assim, para cada par ''(IP origem, port origem TCP ou UDP)'' o NAT deve associar um par ''(IP do NAT, port do NAT TCP ou UDP)'' (que evidentemente deve ser único). Assim, por exemplo, se o roteador ou firewall onde ocorre o NAT possui apenas um endeerço IP roteável, ele é capaz em tese de fazer até 65535 mapeamentos para o TCP (essa é a quantidade de ports que ele pode possui), e o mesmo para o UDP. Na prática é um pouco menos, pois se limitam os ports que podem ser usados para o NAT. Note que o NAT definido dessa forma viola a independência entre camadas, uma vez que o roteamento passa a depender de informação da camada de transporte. | ||
+ | |||
+ | ==== NAT no Linux ==== | ||
+ | |||
+ | Ver capítulo 35, seção 4, da [[Media:Gerencia_de_redes.pdf|apostila]]. | ||
+ | |||
+ | O NAT no Linux se configura com [http://manpages.ubuntu.com/manpages/jaunty/man8/iptables.8.html iptables]. As regras devem ser postas na tabela ''nat'', e aplicadas a chain ''POSTROUTING'', como no seguinte exemplo: | ||
+ | |||
+ | <syntaxhighlight lang=bash> | ||
+ | iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE ;Habilita o NAT | ||
+ | iptables -t nat -L ;Lista as atuais regras da tabela NAT | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | A regra acima faz com que todo o tráfego originado em 192.168.1.0/24, e que sai pela interface ''eth0'' deve ser mascarado com o endereço IP dessa interface. Esta regra diz o seguinte: todos os pacotes que passarem (POSTROUTING) por esta máquina com origem de 192.168.1.0/24 e sairem pela interface eth0 serão mascarados, ou seja sairão desta máquina com o endereço de origem como sendo da eth0. O alvo ''MASQUERADE'' foi criado para ser usado com links dinâmicos (tipicamente discados ou ADSL), pois os mapeamentos se perdem se o link sair do ar. | ||
+ | |||
+ | === Atividade === | ||
+ | |||
+ | '''A)''' Configurar interface de rede | ||
+ | |||
+ | # Verifique a configuração de sua interface de rede eth0, na sua máquina virtual. Se necessário corrija-a assim: ip 192.168.2.X, sendo X o número do computador + 100 (exemplo: para o micro 2 (M2) X=102), roteador default = 192.168.2.1. '''Nameserver''' 200.135.37.65. | ||
+ | ## Teste a comunicação do seu computador, fazendo ''ping 192.168.2.1''. Tente pingar outras máquinas da rede. | ||
+ | ## Tente também pingar o IP 200.135.37.65. | ||
+ | ## Veja a tabela de rotas, usando '''netstat -rn''' ou '''route -n'''. | ||
+ | ## Verifique a rota seguida pelos datagramas enviados, usando ''traceroute -n 200.135.37.65''. Se o traceroute não estiver instalado insta-le-o ('''apt-get install traceroute'''). | ||
+ | # Configure sua máquina virtual servidora para que a informação de rede, configurada manualmente acima, fique permanente. Quer dizer, no próximo boot essa configuração deve ser ativada automaticamente. | ||
+ | # Adicione um ''IP alias'' a sua interface eth0. Esse novo IP deve ser configurado para 10.0.0.X/24 (X = item 1). | ||
+ | ## Tente pingar os computadores de seus colegas, usando ambos endereços: da rede 192.168.2.0/24 e da rede 10.0.0/24. | ||
+ | ## Enquanto acontecem os pings, visualize o tráfego pela interface eth0, usando o programa [http://manpages.ubuntu.com/manpages/karmic/en/man8/tcpdump.8.html tcpdump]: <syntaxhighlight lang=bash> | ||
+ | # Mostra o tráfego ICMP que passa pela interface eth1 | ||
+ | tcpdump -i eth1 -ln icmp | ||
+ | </syntaxhighlight> | ||
+ | ## Pense em uma utilidade para ''IP alias'' ... | ||
+ | |||
+ | '''B)''' Coleta de tráfego | ||
+ | #Faça um ou mais pings para algum(ns) sítios e, com o uso de parâmetros apropriados, faça com que o ''tcpdump'': | ||
+ | ##Capture todos os pacotes da rede. | ||
+ | ##Capture somente os pacotes gerados por sua máquina. | ||
+ | ##Capture somente pacotes destinados à sua máquina. | ||
+ | ##Capture pacotes destinados ou originados da máquina 200.135.37.65. | ||
+ | ##Faça com que os pacotes capturados anteriormente sejam salvos num arquivo, chamado “pacotes_capturados“. | ||
+ | |||
+ | '''C)''' Tabelas estáticas de roteamento | ||
+ | |||
+ | [[Imagem:Diagrama_para_construir_tabelas_de_roteamento_com_maquinas_virtuais-rede-2.jpg]] | ||
+ | |||
+ | #Configure as interfaces de rede (uma interface virtual – ip alias) de sua máquina servidora, conforme números de IPs sugeridos na Figura. Todas as máscaras de rede devem ser 255.255.255.0 ou /24. '''Não''' configure gateway. | ||
+ | #Configure sua máquina virtual servidora para rotear pacotes. | ||
+ | #Configure sua máquina virtual cliente para ser seu cliente de rede, conforme Figura. | ||
+ | #Montar as tabelas estáticas de roteamento para todas as redes de todos os seus colegas, de modo que todas as máquinas cliente tenham acesso entre si (“pingando” ente elas). | ||
+ | #Faça testes. Se houver problemas usar '''tcpdump''' para monitorar individualmente as interfaces e verificar onde está o problema. Lembre-se que os pacotes devem ter rota de ida e volta, portanto o problema pode ser no seu roteador ou de seu vizinho. Uma boa sequência de testes é: | ||
+ | ##Pingar entre cliente e roteador (servidor). | ||
+ | ##Do cliente pingar a interface externa do roteador. | ||
+ | ##Do cliente pingar a máquina do professor. Se funcionar até aqui seu roteador estará corretamente configurado. | ||
+ | ##Do roteador pingar a interface externa de outro roteador. | ||
+ | ##Do roteador pingar outro cliente. | ||
+ | ##Do seu cliente pingar outro cliente. | ||
+ | |||
+ | '''D)''' NAT | ||
+ | #Desfaça as tabelas de roteamento. | ||
+ | #Configure a máquina cliente com os parâmetros: | ||
+ | ##IP, conforme o modelo da Figura | ||
+ | ##máscara: 255.255.255.0 ou /24 | ||
+ | ##default gw: ip_interno_do_seu_servidor | ||
+ | ##nameserver:200.135.37.65 | ||
+ | #Configure a máquina servidora para encaminhar pacote de uma interface a outra (''ip_forward''). | ||
+ | #Configure a máquina servidora para fazer NAT, por exemplo, no servidor do professor da Figura acima:<code>iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -o eth0 -j MASQUERADE</syntaxhighlight> Lembre-se de adequar a interface (eth0, eth1, ...) para o seu caso e também a rede (10.0.2.0/24, 10.0.3.0/24. ...). | ||
+ | #A partir do cliente faça testes “pingando” para: | ||
+ | ##o próprio servidor | ||
+ | ##o servidor de colegas | ||
+ | ##redes externas | ||
+ | ##redes dos colegas. | ||
+ | #Qual é a diferença de “comportamento” quando comparado ao cenário das tabelas estáticas de roteamento? | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 8 - 4/3/15: Interfaces de rede e rotas estáticas}} | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 9 - 9/3/15: NAT e Apache}} | ||
+ | Execute o roteiro do NAT. | ||
+ | |||
+ | Ver capítulo 26 da [[Media:Gerencia_de_redes.pdf|apostila]]. | ||
+ | |||
+ | O servidor [http://httpd.apache.org/ABOUT_APACHE.html Apache] (''Apache server'') é o mais bem sucedido servidor web livre. Foi criado em 1995 por Rob McCool, então funcionário do NCSA (''National Center for Supercomputing Applications''), Universidade de Illinois. Ele descende diretamente do [http://en.wikipedia.org/wiki/NCSA_HTTPd NCSA httpd], um servidor web criado e mantido por essa organização. Seu nome vem justamente do reaproveitamento do ''NCSA httpd'' (e do fator de tê-lo tornado modular) fazendo um trocadilho com a expressão "''a patchy httpd'' (um httpd remendável). Para ter ideia de sua popularidade, em maio de 2010, o Apache serviu aproximadamente 54,68% de todos os sites e mais de 66% dos milhões de sites mais movimentados. O servidor é compatível com o protocolo HTTP versão 1.1. Suas funcionalidades são mantidas através de uma estrutura de módulos, podendo inclusive o usuário escrever seus próprios módulos — utilizando a API do software. É disponibilizado em versões para os sistemas Windows, Novell Netware, OS/2 e diversos outros do padrão POSIX (Unix, GNU/Linux, FreeBSD, etc). | ||
+ | |||
+ | Um servidor web é capaz de atender requisições para transferência de documentos. Essas requisições são feitas com o protocolo HTTP (''HyperText Transfer Protocol''), e se referem a documentos que podem ser de diferentes tipos. Uma requisição HTTP simples é mostrada abaixo: | ||
+ | |||
+ | <syntaxhighlight lang=text> | ||
+ | GET / HTTP/1.1 Host: www.ifsc.edu.br | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Para o servidor Web, os principais componentes de uma requisição HTTP são o método HTTP a executar e o localizador do documento a ser retornado (chamado de URI - ''Uniform Resource Indicator''). No exemplo acima, a requisição pede o método ''GET'' aplicado à URI ''/''. O resultado é composto do status do atendimento, cabeçalhos informativos e o conteúdo da resposta. No exemplo, o status é a primeira linha (''HTTP/1.1 200 OK''), com os cabeçalhos logo a seguir. Os cabeçalhos terminam ao aparecer uma linha em branco, e em seguida vem o conteúdo (ou corpo) da resposta. | ||
+ | |||
+ | Todo documento possui um especificador de tipo de conteúdo, chamado de [http://en.wikipedia.org/wiki/Internet_media_type ''Internet media Type'']. O cabeçalho de resposta ''Content-type'' indica o ''media type'', para que o cliente HTTP (usualmente um navegador web) saiba como processá-lo. No exemplo acima, o documento retornado é do tipo ''text/html'', o que indica ser um texto HTML. Outros possíveis ''media types'' são: ''text/plain'' (texto simples), ''application/pdf'' (um texto PDF), ''application/x-gzip'' (um conteúdo compactado com gzip). | ||
+ | |||
+ | Um documento no contexto do servidor web é qualquer conteúdo que pode ser retornado como resposta a uma requisição HTTP. No caso mais simples, um documento corresponde a um arquivo em disco, mas também podem ser gerados dinamicamente. Existem diversas tecnologias para gerar documentos, tais como PHP, JSP, ASP, CGI, Python, Perl, Ruby, e possivelmente outras. Todas se caracterizam por uma linguagem de programação integrada intimamente ao servidor web, obtendo dele informação sobre como gerar o conteúdo da resposta. Atualmente, boa parte dos documentos que compõem um site web são gerados dinamicamente, sendo PHP, JSP e ASP as tecnologias mais usadas. | ||
+ | |||
+ | === Informações gerais sobre Apache no Ubuntu === | ||
+ | |||
+ | * Instalação: <syntaxhighlight lang=bash> | ||
+ | sudo apt-get install apache2 | ||
+ | </syntaxhighlight> | ||
+ | * Arquivos de configuração ficam em ''/etc/apache2'': | ||
+ | ** ''apache2.conf:'' a configuração inicia aqui | ||
+ | ** ''Diretório sites-available:'' configurações de hosts virtuais | ||
+ | ** ''Diretório sites-enabled:'' hosts virtuais atualmente ativados | ||
+ | * Para iniciar o Apache: <syntaxhighlight lang=bash> | ||
+ | sudo service apache2 start | ||
+ | </syntaxhighlight> | ||
+ | * ''Para testar o Apache:'' com um navegador acesse a URL http://192.168.2.1X/ (X é 02 para o micro 2, 03 para o 3, e assim por diante). | ||
+ | === Uma configuração básica === | ||
+ | |||
+ | O servidor Apache precisa de algumas informações básicas para poder ativar um site: | ||
+ | |||
+ | * ''Qual seu nome de servidor:'' seu nome DNS , como ''www.redesX.edu.br'' | ||
+ | * ''Em que portas ele atende requisições:'' as portas TCP onde ele recebe requisições HTTP. Por default é a porta 80, mas outras portas podem ser especificadas. | ||
+ | * ''Onde estão os documentos que compõem o site hospedado:'' o caminho do diretório onde estão esses documentos | ||
+ | * ''Quem pode acessar os documentos:'' restrições baseadas em endereços IP de clientes e/ou nomes de usuários e grupos. | ||
+ | |||
+ | No exemplo abaixo, define-se um servidor WWW chamado ''www.prj.edu.br'', que atende requisições no ''ports'' 8080. | ||
+ | |||
+ | #Crie um arquivo '''vi /etc/apache2/sites-available/prj.conf''', com o seguinte conteúdo: <syntaxhighlight lang=text> | ||
+ | # O nome de servidor | ||
+ | ServerName www.prj.edu.br | ||
+ | # As portas onde se atendem requisições HTTP | ||
+ | Listen 8080 | ||
+ | # Onde estão os documentos desse site | ||
+ | DocumentRoot /var/www/html/prj | ||
+ | # As restrições de acesso aos documentos | ||
+ | <Directory /var/www/html/prj> | ||
+ | Options Indexes | ||
+ | DirectoryIndex index.html index.php | ||
+ | order allow,deny | ||
+ | allow from all | ||
+ | </Directory> | ||
+ | </syntaxhighlight> | ||
+ | #Crie um link simbólico para o arquivo prj:<syntaxhighlight lang=text> | ||
+ | ln -s /etc/apache2/sites-available/prj.conf /etc/apache2/sites-enabled/ </syntaxhighlight> | ||
+ | #Edite o arquivo /etc/hosts e acrescente: <syntaxhighlight lang=text> | ||
+ | 192.168.2.1X www.prj.edu.br </syntaxhighlight> | ||
+ | #Crie o diretório /var/www/html/prj | ||
+ | #Dentro do diretório criado acima, crie um arquivo de nome index.html com o seguinte conteúdo:<syntaxhighlight lang=text> | ||
+ | <html><body><h1>PRJ!</h1> | ||
+ | <p>Esta e minha pagina.</p> | ||
+ | </body></html> | ||
+ | </syntaxhighlight> | ||
+ | #Restarte o Apache: <syntaxhighlight lang=text> | ||
+ | service apache2 restart </syntaxhighlight> | ||
+ | #Com o navegador acesse: 192.168.2.1X e 192.168.2.1X:8080 | ||
+ | #Crie uma página personalizada e coloque em /var/www/html/pessoal/index.html. Acesse 192.168.2.1X/pessoal e visualize a mesma. | ||
+ | |||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 10 - 11/3/15: NAT e Apache}} | ||
+ | #Terminar o NAT | ||
+ | #Terminar o Apache e inciar o desafio de embutir as imagens das câmaras WEB. | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | 16/3/15: Não houve aulas. Atestado médico}} | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 11 - 18/3/15: Integração das imagens da webcam com o Apache}} | ||
+ | Opcões: | ||
+ | #[http://www.zoneminder.com/ Zoneminder] | ||
+ | #[http://www.vislab.net/people/john-stavrakakis/online-webcam-for-linux ''Online Webcam for Linux''] | ||
+ | #[http://www.cafesoft.com/products/cams/wa/apache22/docs32/linux/worker/x86/64bit/Apache22WebAgent.html ''Apache 2.2 Worker MPM Linux Web Agent Integration''] | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 12 - 23/3/15: DNS}} | ||
+ | |||
+ | Ver capítulo 25 da [[Media:Gerencia_de_redes.pdf|apostila]]. | ||
+ | |||
+ | '''DNS ''(Domain Name System)''''' é uma base de dados distribuída e hierárquica. Nela se armazenam informações para mapear nomes de máquinas da Internet para endereços IP e vice-versa, informação para roteamento de email, e outros dados utilizados por aplicações da Internet. | ||
+ | |||
+ | A informação armazenada no DNS é identificada por nomes de domínio que são organizados em uma árvore, de acordo com as divisões administrativas ou organizacionais. Cada nodo dessa árvore, chamado de ''domínio'', possui um rótulo. O nome de domínio de um nodo é a concatenação de todos os rótulos no caminho do nodo até a raiz. Isto é representado como uma ''string'' de rótulos listados da direita pra esquerda e separados por pontos (ex: ifsc.edu.br, sj.ifsc.edu.br). Um rótulo precisa ser único somente dentro do domínio pai a que pertence. | ||
+ | |||
+ | Por exemplo, um nome de domínio de uma máquina no IFSC pode ser ''mail.ifsc.edu.br.'', em que o ''"."'' (último) significa o ''root level domain'' ''.br'' é o domínio do topo da hierarquia (no Brasil feito em [https://registro.br/])ao qual ''mail.sj.ifsc.edu.br'' pertence. ''.ifsc.edu'' é um subdomínio de ''.br.'', e ''mail'' o nome da máquina em questão. | ||
+ | |||
+ | Por razões administrativas, o espaço de nomes é dividido em áreas chamadas de ''zonas'', cada uma iniciando em um nodo e se estendendo para baixo para os nodos folhas ou nodos onde outras zonas iniciam. Os dados de cada zona são guardados em um ''servidor de nomes'', que responde a consultas sobre uma zona usando o protocolo DNS. | ||
+ | |||
+ | Clientes buscam informação no DNS usando uma biblioteca de resolução (''resolver library''), que envia as consultas para um ou mais servidores de nomes e interpreta as respostas. | ||
+ | |||
+ | [[Imagem:hierarquia-DNS.gif|400px]] | ||
+ | |||
+ | (tirado do [http://www.bind9.net/manual/bind/9.3.2/Bv9ARM.ch01.html#id2546234 manual do BIND9]) | ||
+ | |||
+ | Ver também o [http://my.safaribooksonline.com/0-596-00158-4/dns4-CHP-2 livro sobre DNS e BIND] da O'Reilly. | ||
+ | |||
+ | === Registros DNS === | ||
+ | |||
+ | Cada rótulo na hierarquia DNS possui um conjunto de informações associadas a si. Essas informações são guardas em registros | ||
+ | de diferentes tipos, dependendo de seu significado e propósito. Cada consulta ao DNS retorna assim as informações do registro pedido associado ao rótulo. Por exemplo, para ver o registro de endereço IP associado a www.ifsc.edu.br pode-se executar esse comando (o resultado teve alguns comentários removidos): | ||
+ | |||
+ | <syntaxhighlight lang=bash> | ||
+ | root@freeman:~$ dig sj.ifsc.edu.br mx | ||
+ | |||
+ | ;; QUESTION SECTION: | ||
+ | ;sj.ifsc.edu.br. IN MX | ||
+ | |||
+ | ;; ANSWER SECTION: | ||
+ | sj.ifsc.edu.br. 3600 IN MX 10 hendrix.sj.ifsc.edu.br. | ||
+ | |||
+ | ;; AUTHORITY SECTION: | ||
+ | sj.ifsc.edu.br. 3600 IN NS ns.pop-udesc.rct-sc.br. | ||
+ | sj.ifsc.edu.br. 3600 IN NS ns.pop-ufsc.rct-sc.br. | ||
+ | sj.ifsc.edu.br. 3600 IN NS hendrix.sj.ifsc.edu.br. | ||
+ | |||
+ | ;; ADDITIONAL SECTION: | ||
+ | hendrix.sj.ifsc.edu.br. 3600 IN A 200.135.37.65 | ||
+ | ns.pop-ufsc.rct-sc.br. 11513 IN A 200.135.15.3 | ||
+ | ns.pop-udesc.rct-sc.br. 37206 IN A 200.135.14.1 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Cada uma das informações acima mostra um determinado registro e seu conteúdo, como descrito na tabela abaixo: | ||
+ | |||
+ | {| border="1" cellpadding="2" | ||
+ | !Nome | ||
+ | !TTL | ||
+ | !Classe | ||
+ | !Registro | ||
+ | !Conteúdo do registro | ||
+ | |- | ||
+ | |hendrix.sj.ifsc.edu.br.||3600||IN||A||200.135.37.65 | ||
+ | |- | ||
+ | |sj.ifsc.edu.br.||3600||IN||NS||hendrix.sj.ifsc.edu.br. | ||
+ | |- | ||
+ | |sj.ifsc.edu.br.||3600||IN||MX||10 hendrix.sj.ifsc.edu.br. | ||
+ | |} | ||
+ | |||
+ | Obs: ''TTL'' (''Time To Live'') é o tempo de validade (em segundos) da informação retornada do servidor de nomes, e ''classe'' é o tipo de endereço (no caso IN equivale a endereços Internet). | ||
+ | |||
+ | Os tipos de registros mais comuns são: | ||
+ | |||
+ | {| border="1" cellpadding="2" | ||
+ | !Registro | ||
+ | !Descrição | ||
+ | !Exemplo | ||
+ | |- | ||
+ | |A || Endereço (Address) || www.sj.ifsc.edu.br IN A 200.135.37.66 | ||
+ | |- | ||
+ | |NS|| Servidor de nomes (Name Server) || sj.ifsc.edu.br IN NS hendrix.sj.ifsc.edu.br. | ||
+ | |- | ||
+ | |CNAME || Apelido (Canonical Name) || mail.sj.ifsc.edu.br IN CNAME hendrix.sj.ifsc.edu.br. | ||
+ | |- | ||
+ | |MX || Roteador de email (Mail Exchanger) || sj.ifsc.edu.br IN MX mail.sj.ifsc.edu.br. | ||
+ | |- | ||
+ | |SOA || dados sobre o domínio (Start of Authority)||sj.ifsc.edu.br IN SOA hendrix.sj.ifsc.edu.br. root.sj.ifsc.edu.br. 2009120102 1200 120 604800 3600 | ||
+ | |- | ||
+ | |PTR || Ponteiro para nome (Pointer) || 65.37.135.200.in-addr.arpa IN PTR hendrix.sj.ifsc.edu.br. | ||
+ | |- | ||
+ | |TXT || Texto genérico (Text) || sj.ifsc.edu.br IN TXT "v=spf1 a mx ~all" | ||
+ | |} | ||
+ | |||
+ | Uma zona assim é composta de um conjunto de registros com todas as informações dos domínios nela contidos. O conteúdo de uma zona, contendo o domínio ''example.com'', pode ser visualizado abaixo: | ||
+ | |||
+ | <syntaxhighlight lang=text> | ||
+ | example.com 86400 IN SOA ns1.example.com. hostmaster.example.com. ( | ||
+ | 2002022401 ; serial | ||
+ | 10800 ; refresh | ||
+ | 15 ; retry | ||
+ | 604800 ; expire | ||
+ | 10800 ; minimum | ||
+ | ) | ||
+ | IN NS ns1.example.com. | ||
+ | IN NS ns2.smokeyjoe.com. | ||
+ | IN MX 10 mail.another.com. | ||
+ | IN TXT "v=spf1 mx -all" | ||
+ | |||
+ | ns1 IN A 192.168.0.1 | ||
+ | www IN A 192.168.0.2 | ||
+ | ftp IN CNAME www.example.com. | ||
+ | |||
+ | bill IN A 192.168.0.3 | ||
+ | fred IN A 192.168.0.4 | ||
+ | </syntaxhighlight> | ||
+ | === Atividade === | ||
+ | |||
+ | O objetivo é montar a seguinte estrutura: | ||
+ | |||
+ | [[Arquivo:Diagrama_DNS_redesII.png]] | ||
+ | |||
+ | Vamos configurar e testar um servidor DNS. Para tanto montaremos a estrutura indicada no diagrama, onde cada máquina será um servidor DNS, com um domínio próprio e, ao mesmo tempo, será cliente do servidor DNS da máquina 192.168.2.101. Esta, por sua vez, será servidor: um servidor master do domínio redes.edu.br e servidor escravo, recebendo automaticamente uma cópia das zonas dos servidores masters, de todos os demais domínios criados. Esta, será também a única máquina com servidor DNS com zona reversa. Sendo assim todos os domínios, diretos e reversos, serão visíveis por meio deste servidor. | ||
+ | |||
+ | # Entendendo o serviço DNS. Antes de qualquer reconfiguração faça testes usando a ferramenta “dig”: <syntaxhighlight lang=bash> | ||
+ | dig -x 150.162.12.25 ; consulta ao DNS reverso | ||
+ | dig www.das.ufsc.br ; consulta ao DNS direto | ||
+ | dig +trace www.polito.it ; consulta ao DNS direto mostrando toda a árvore de DNS consultados | ||
+ | dig @200.135.37.65 www.polito.it ; consulta ao servidor DNS 200.135.37.65 | ||
+ | dig ufsc.br ANY ; consulta "total" ao domínio</syntaxhighlight> | ||
+ | # Instale o servidor DNS em sua máquina:<code>apt-get install bind9. Instalando o Bind.</syntaxhighlight> | ||
+ | # Configure a sua zona, onde X = 2 para M2, 3 Para M3, ... 10 para M10, ..., 14 para M14. vi /etc/bind/named.conf.local<code> | ||
+ | zone "redesX.edu.br" { | ||
+ | type master; | ||
+ | file "/etc/bind/db.redesX"; | ||
+ | allow-transfer { | ||
+ | 192.168.2.101; | ||
+ | }; | ||
+ | };</syntaxhighlight> | ||
+ | #vi /etc/bind/db.redesX<code> | ||
+ | $TTL 86400 | ||
+ | @ IN SOA ns.redesX.edu.br. admin.redesX.edu.br. ( | ||
+ | 2014040902; serial | ||
+ | 3H ; refresh | ||
+ | 60 ; retry | ||
+ | 1W ; expire | ||
+ | 3W ; minimum | ||
+ | ) | ||
+ | @ IN NS ns.redesX.edu.br. ; este é o servidor master deste domínio | ||
+ | @ IN MX 10 mail.redesX.edu.br. | ||
+ | $ORIGIN redesX.edu.br. | ||
+ | m80 A 192.168.2.1X | ||
+ | mail A 192.168.2.1X | ||
+ | www A 192.168.2.1X | ||
+ | ftp A 192.168.2.1X | ||
+ | ns A 192.168.2.1X | ||
+ | </syntaxhighlight> | ||
+ | #vi /etc/resolv.conf<code> | ||
+ | nameserver 192.168.2.101 | ||
+ | </syntaxhighlight> | ||
+ | #Utilitário para testar o arquivo que contém o conteúdo de uma zona: named-checkzone nome_do_dominio arquivo_da_zona ==> Aponta possíveis erros no arquivo de configuração.<code> named-checkzone redes18.edu.br /etc/bind/db.redesX</syntaxhighlight> | ||
+ | #Utilitário para testar a configuração do BIND: <code> named-checkconf -z </syntaxhighlight> | ||
+ | #Restart do serviço:<code> service bind9 restart </syntaxhighlight> | ||
+ | #Verificando se está tudo certo:<code> tail -n 200 /var/log/syslog. Se necessário filtre por named. </syntaxhighlight> | ||
+ | |||
+ | * Seqüênica de Testes: | ||
+ | <syntaxhighlight lang=bash> | ||
+ | ping www.redes12.edu.br | ||
+ | ping m8.redes108.edu.br | ||
+ | ping www.redesXX.edu.br ; dos seus colegas | ||
+ | dig @localhost m14.redes14.edu.br | ||
+ | dig @192.168.2.101 m7.redes7.edu.br | ||
+ | dig redesX.edu.br ANY | ||
+ | </syntaxhighlight> | ||
+ | * Teste o DNS reverso. Faça testes usando a ferramenta “dig”: <syntaxhighlight lang=bash> | ||
+ | dig -x 192.168.2.101 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ==== Arquivos na máquina '''Professor''', somente para exemplificar ==== | ||
+ | |||
+ | mkdir /var/cache/bind/slaves | ||
+ | chown bind:bind /var/cache/bind/slaves | ||
+ | |||
+ | /etc/bind/named.conf.local | ||
+ | <code> | ||
+ | // | ||
+ | // Do any local configuration here | ||
+ | // | ||
+ | |||
+ | // Consider adding the 1918 zones here, if they are not used in your | ||
+ | // organization | ||
+ | //include "/etc/bind/zones.rfc1918"; | ||
+ | |||
+ | zone "redes1.edu.br" { | ||
+ | type master; | ||
+ | file "/etc/bind/db.redes1"; | ||
+ | }; | ||
+ | zone "2.168.192.in-addr.arpa" IN { | ||
+ | type master; | ||
+ | file "/etc/bind/db.2.168.192"; | ||
+ | }; | ||
+ | |||
+ | zone "redes2.edu.br" IN { | ||
+ | type slave; | ||
+ | file "/var/cache/bind/slaves/db.redes2"; | ||
+ | masters { 192.168.2.102; }; | ||
+ | }; | ||
+ | |||
+ | zone "redes3.edu.br" IN { | ||
+ | type slave; | ||
+ | file "/var/cache/bind/slaves/db.redes3"; | ||
+ | masters { 192.168.2.103; }; | ||
+ | }; | ||
+ | |||
+ | zone "redes4.edu.br" IN { | ||
+ | type slave; | ||
+ | file "/var/cache/bind/slaves/db.redes4"; | ||
+ | masters { 192.168.2.104; }; | ||
+ | }; | ||
+ | |||
+ | zone "redes5.edu.br" IN { | ||
+ | type slave; | ||
+ | file "/var/cache/bind/slaves/db.redes5"; | ||
+ | masters { 192.168.2.105; }; | ||
+ | }; | ||
+ | |||
+ | zone "redes6.edu.br" IN { | ||
+ | type slave; | ||
+ | file "/var/cache/bind/slaves/db.redes6"; | ||
+ | masters { 192.168.2.106; }; | ||
+ | }; | ||
+ | |||
+ | zone "redes7.edu.br" IN { | ||
+ | type slave; | ||
+ | file "/var/cache/bind/slaves/db.redes7"; | ||
+ | masters { 192.168.2.107; }; | ||
+ | }; | ||
+ | |||
+ | zone "redes8.edu.br" IN { | ||
+ | type slave; | ||
+ | file "/var/cache/bind/slaves/db.redes8"; | ||
+ | masters { 192.168.2.108; }; | ||
+ | }; | ||
+ | |||
+ | zone "redes9.edu.br" IN { | ||
+ | type slave; | ||
+ | file "/var/cache/bind/slaves/db.redes9"; | ||
+ | masters { 192.168.2.109; }; | ||
+ | }; | ||
+ | |||
+ | zone "redes10.edu.br" IN { | ||
+ | type slave; | ||
+ | file "/var/cache/bind/slaves/db.redes10"; | ||
+ | masters { 192.168.2.110; }; | ||
+ | }; | ||
+ | |||
+ | zone "redes11.edu.br" IN { | ||
+ | type slave; | ||
+ | file "/var/cache/bind/slaves/db.redes11"; | ||
+ | masters { 192.168.2.111; }; | ||
+ | }; | ||
+ | zone "redes12.edu.br" IN { | ||
+ | type slave; | ||
+ | file "/var/cache/bind/slaves/db.redes12"; | ||
+ | masters { 192.168.2.112; }; | ||
+ | }; | ||
+ | |||
+ | zone "redes13.edu.br" IN { | ||
+ | type slave; | ||
+ | file "/var/cache/bind/slaves/db.redes13"; | ||
+ | masters { 192.168.2.113; }; | ||
+ | }; | ||
+ | |||
+ | zone "redes14.edu.br" IN { | ||
+ | type slave; | ||
+ | file "/var/cache/bind/slaves/db.redes14"; | ||
+ | masters { 192.168.2.114; }; | ||
+ | }; | ||
+ | </syntaxhighlight> | ||
+ | /etc/bind/db.redes1 | ||
+ | <code> | ||
+ | ; BIND reverse data file for empty rfc1918 zone | ||
+ | ; | ||
+ | ; DO NOT EDIT THIS FILE - it is used for multiple zones. | ||
+ | ; Instead, copy it, edit named.conf, and use that copy. | ||
+ | ; | ||
+ | $TTL 86400 | ||
+ | @ IN SOA m1.redes1.edu.br. root ( | ||
+ | 2014040900 ; Serial | ||
+ | 604800 ; Refresh | ||
+ | 86400 ; Retry | ||
+ | 2419200 ; Expire | ||
+ | 86400 ) ; Negative Cache TTL | ||
+ | ; | ||
+ | @ IN NS m1.redes1.edu.br. | ||
+ | @ IN MX 10 mail.redes1.edu.br. | ||
+ | $ORIGIN redes1.edu.br. | ||
+ | m1 A 192.168.2.101 | ||
+ | www A 192.168.2.101 | ||
+ | ftp A 192.168.2.101 | ||
+ | mail A 192.168.2.101 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | /etc/bind/db.2.168.192 (Zona reversa) | ||
+ | <code> | ||
+ | $TTL 86400 | ||
+ | @ IN SOA m1.redes1.edu.br. root ( | ||
+ | 2014040900 ; Serial | ||
+ | 604800 ; Refresh | ||
+ | 86400 ; Retry | ||
+ | 2419200 ; Expire | ||
+ | 86400 ) ; Negative Cache TTL | ||
+ | ; | ||
+ | IN NS m1.redes1.edu.br. | ||
+ | 101 IN PTR m1.redes1.edu.br. | ||
+ | 102 IN PTR m2.redes2.edu.br. | ||
+ | 103 IN PTR m3.redes3.edu.br. | ||
+ | 104 IN PTR m4.redes4.edu.br. | ||
+ | 105 IN PTR m5.redes5.edu.br. | ||
+ | 106 IN PTR m6.redes6.edu.br. | ||
+ | 107 IN PTR m7.redes7.edu.br. | ||
+ | 108 IN PTR m8.redes8.edu.br. | ||
+ | 109 IN PTR m9.redes9.edu.br. | ||
+ | 110 IN PTR m10.redes10.edu.br. | ||
+ | 111 IN PTR m11.redes11.edu.br. | ||
+ | 112 IN PTR m12.redes12.edu.br. | ||
+ | 113 IN PTR m13.redes13.edu.br. | ||
+ | 114 IN PTR m14.redes14.edu.br. | ||
+ | </syntaxhighlight> | ||
+ | {{Collapse bottom}} | ||
+ | |||
+ | {{collapse top | 25/3/15: Não houve aulas. Atestado médico}} | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 13 - 30/3/15: Servidor de correio eletrônico - Postfix}} | ||
+ | Ver capítulo 27 da [[Media:Gerencia_de_redes.pdf|apostila]]. | ||
+ | |||
+ | O correio eletrônico (''email'') é um dos principais serviços na Internet. De fato foi o primeiro serviço a ser usado em larga escala. Trata-se de um método para intercâmbio de mensagens digitais. Os sistemas de correio eletrônico se baseiam em um modelo armazena-e-encaminha (''store-and-forward'') em que os servidores de email aceitam, encaminham, entregam e armazenam mensagens de usuários. | ||
+ | |||
+ | Uma mensagem de correio eletrônico se divide em duas partes: | ||
+ | * ''Cabeçalhos:'' contém informações de controle e atributos da mensagem | ||
+ | * ''Corpo:'' o conteúdo da mensagem | ||
+ | |||
+ | <syntaxhighlight lang=text> | ||
+ | From: Roberto de Matos <roberto@eel.ufsc.br> | ||
+ | Content-Type: text/plain; | ||
+ | charset=iso-8859-1 | ||
+ | Content-Transfer-Encoding: quoted-printable | ||
+ | X-Smtp-Server: smtp.ufsc.br:roberto.matos@posgrad.ufsc.br | ||
+ | Subject: =?iso-8859-1?Q?Teste_Ger=EAncia?= | ||
+ | Message-Id: <0595A764-EEAE-41E7-99F0-80DC11FB5327@eel.ufsc.br> | ||
+ | X-Universally-Unique-Identifier: 684c3833-bbbe-420b-8b66-d92d9a419bc0 | ||
+ | Date: Wed, 20 Nov 2013 11:36:35 -0200 | ||
+ | To: Roberto de Matos <roberto.matos@ifsc.edu.br> | ||
+ | Mime-Version: 1.0 (Mac OS X Mail 6.6 \(1510\)) | ||
+ | |||
+ | Ol=E1 Pessoal, | ||
+ | |||
+ | Hoje vamos aprender o funcionamento do Email!! | ||
+ | |||
+ | Abra=E7o, | ||
+ | |||
+ | Roberto= | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Na mensagem acima, os cabeçalhos são as linhas iniciais. Os cabeçalhos terminam quando aparece uma linha em branco, a partir de que começa o corpo da mensagem. | ||
+ | |||
+ | === Funcionamento do email === | ||
+ | |||
+ | Os componentes da infraestrutura de email são: | ||
+ | * ''MUA (Mail User Agent):'' o aplicativo que o usuário usa para envio e acesso a mensagens. Atualmente é bastante comum MUA do tipo webmail, mas existem outros como Mozilla Thunderbird, KMail e Microsoft Outlook. | ||
+ | * ''MDA (Mail Delivery Agent):'' o servidor responsável por receber dos usuários mensagens a serem enviadas. Assim, quando um usuário quer enviar uma mensagem, usa um MUA que contata o MDA para fazer o envio. Exemplos de software são Postfix, Sendmail, Qmail e Microsoft Exchange. | ||
+ | * ''MTA (Mail Transport Agent):'' o servidor responsável por transmitir mensagens até seu destino, e receber mensagens da rede para seus usuários. Comumente faz também o papel de MDA. Exemplos de softwares são Postfix, Sendmail, Qmail e Microsoft Exchange. | ||
+ | |||
+ | A figura abaixo ilustra uma infraestrutura de email típica. | ||
+ | |||
+ | [[Imagem:Email-intro.png]] | ||
+ | |||
+ | Os protocolos envolvidos são: | ||
+ | |||
+ | * ''SMTP (Simple Mail Transfer Protocol):'' usado para envios de mensagens entre MTAs, e entre MUA e MDA/MTA. | ||
+ | * ''IMAP (Internet Mail Access Protocol):'' usado por MUAs para acesso a mensagens armazenadas em caixas de email em servidores. | ||
+ | * ''POP (Post Office Protocol):'' mesma finalidade que IMAP, porém com funcionalidade mais limitada. Se destina a situações em que o normal é copiar as mensagens parao computador do usuário, e então removê-las do servidor. | ||
+ | * ''LMTP (Local Mail Transfer Protocol):'' usado para entrega de mensagens entre MTA e MDA/MTA, sendo que o servidor de destino não mantém uma fila de mensagens (quer dizer, ele entrega diretamente na caixa de entrada de um usuário ou a encaminha imediatamente). | ||
+ | === Endereçamento === | ||
+ | |||
+ | Endereços de email estão intimamente ligados ao DNS. Cada usuário de email possui um endereço único mundial, definido por um identificador de usuário e um domínio de email, escritos usando-se o símbolo especial ''@'' (lê-se ''at'', do original em inglês) para conectá-los: | ||
+ | |||
+ | tele@ifsc.edu.br | ||
+ | |||
+ | Nesse exemplo, o identificador de usuário é ''tele'', e o domínio é ''ifsc.edu.br''. | ||
+ | |||
+ | Os domínios de email tem correspondência direta com domínios DNS. De fato, para criar um domínio de email deve-se primeiro criá-lo no DNS. Além disto, o domínio DNS deve ter associado a si um ou mais registros MX (''Mail exchanger'') para apontar os MTAs responsáveis por receber emails para o domínio. Por exemplo, o domínio DNS ''ifsc.edu.br'' possui esse registro MX: | ||
+ | |||
+ | <syntaxhighlight lang=text> | ||
+ | > dig ifsc.edu.br mx | ||
+ | |||
+ | ;; QUESTION SECTION: | ||
+ | ;ifsc.edu.br. IN MX | ||
+ | |||
+ | ;; ANSWER SECTION: | ||
+ | ifsc.edu.br. 3581 IN MX 5 hermes.ifsc.edu.br. | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ... e o domínio ''gmail.com'': | ||
+ | |||
+ | <syntaxhighlight lang=text> | ||
+ | > dig gmail.com mx | ||
+ | |||
+ | ;; QUESTION SECTION: | ||
+ | ;gmail.com. IN MX | ||
+ | |||
+ | ;; ANSWER SECTION: | ||
+ | gmail.com. 3600 IN MX 20 alt2.gmail-smtp-in.l.google.com. | ||
+ | gmail.com. 3600 IN MX 30 alt3.gmail-smtp-in.l.google.com. | ||
+ | gmail.com. 3600 IN MX 40 alt4.gmail-smtp-in.l.google.com. | ||
+ | gmail.com. 3600 IN MX 5 gmail-smtp-in.l.google.com. | ||
+ | gmail.com. 3600 IN MX 10 alt1.gmail-smtp-in.l.google.com. | ||
+ | </syntaxhighlight> | ||
+ | === MTA Postfix === | ||
+ | |||
+ | O primeiro software MTA usado em larga escala na Internet foi o [http://www.sendmail.org sendmail]. Esse MTA possui muitas funcionalidades, e enfatiza a flexibilidade em sua configuração. No entanto, configurá-lo e ajustá-lo não é tarefa fácil. Além disto, houve vários problemas de segurança no passado envolvendo esse software. Assim outras propostas surgiram, como [http://www.qmail.org qmail] e [http://www.postfix.org postfix]. Tanto ''qmail'' quanto ''postfix'' nasceram como projetos preocupados com a segurança nas operações de um MTA, e também se apresentaram como MTAs mais simples de configurar e operar. Em nossas aulas será usado o ''postfix'', mas recomenda-se experimentar usar as outras duas opcões citadas. | ||
+ | |||
+ | O ''postfix'' é um MTA modularizado, que divide as tarefas de processamento das mensagens em diversos componentes que rodam como processos separados. Isto difere bastante do ''sendmail'', que se apresenta como um software monolítico. No postfix, um conjunto de subsistemas cuida de processar cada etapa da recepção ou envio de uma mensagem, como mostrado na figura abaixo: | ||
+ | |||
+ | [[Imagem:Postfix_architecture.gif|400px]] | ||
+ | |||
+ | * [http://www.postfix.org/OVERVIEW.html Visão geral do processamento de mensagens no postfix] | ||
+ | |||
+ | ==== Configuração ==== | ||
+ | |||
+ | * [http://help.ubuntu.com/community/Postfix Guia de instalação no Ubuntu] | ||
+ | |||
+ | A configuração do ''postfix'' é armazenada em arquivos, que normalmente residem no diretório ''/etc/postfix''. Os dois principais são: | ||
+ | |||
+ | * ''master.cf:'' configurações para execução dos subsistemas do Postfix (define que subsistemas estão ativados, quantas instâncias rodar de cada um, e seus argumentos de execução) | ||
+ | * ''main.cf:'' configurações usadas pelos subsistemas | ||
+ | |||
+ | No Ubuntu deve-se iniciar o uso do Postfix com esses comandos: | ||
+ | |||
+ | <syntaxhighlight lang=bash> | ||
+ | apt-get install -y postfix | ||
+ | |||
+ | # O comando abaixo deve ser usado se o postfix já foi instalado, mas deseja-se recriar sua configuração | ||
+ | dpkg-reconfigure postfix | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | As configurações iniciais informadas na instalação são suficientes para que o ''postfix'' possa ser iniciado. No entanto muitos detalhes provavelmente precisarão ser ajustados para que ele opere como desejado. | ||
+ | |||
+ | Para um rápido teste do ''postfix'' pode-se fazer a sequência abaixo: | ||
+ | |||
+ | <syntaxhighlight lang=bash> | ||
+ | > sudo service postfix restart | ||
+ | > telnet localhost 25 | ||
+ | 220 ger ESMTP postfix (Ubuntu) | ||
+ | helo mail | ||
+ | 250 ger | ||
+ | mail from: aluno@ifsc.edu.br | ||
+ | 250 2.1.0 OK | ||
+ | rcpt to: postmaster@ger.edu.br | ||
+ | 250 2.1.5 OK | ||
+ | data | ||
+ | 354 End data with <CR><LF>.<CR><LF> | ||
+ | subject: Teste | ||
+ | |||
+ | blabla | ||
+ | . | ||
+ | 250 2.0.0 OK: queued as 71259CCA3 | ||
+ | quit | ||
+ | 221 2.0.0 Bye | ||
+ | Connection closed by foreign host | ||
+ | > | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | O resultado do teste (a mensagem entreguepara o usuário ''postmaster'') pode ser visto no arquivo de log do ''postfix''. No Ubuntu esse arquivo é ''/var/log/mail.log'' : | ||
+ | |||
+ | <syntaxhighlight lang=text> | ||
+ | > tail /var/log/mail.log | ||
+ | May 2 17:29:42 ger postfix/smtpd[1965]: 71259CCA3: client=localhost[127.0.0.1] | ||
+ | May 2 17:30:48 ger postfix/cleanup[1970]: 71259CCA3: message-id=<20100502202942.71259CCA3@ger> | ||
+ | May 2 17:30:48 ger postfix/qmgr[1894]: 71259CCA3: from=<aluno@ifsc.edu.br>, size=323, nrcpt=1 (queue active) | ||
+ | May 2 17:30:48 ger postfix/local[1972]: 71259CCA3: to=<root@ger.edu.br>, orig_to=<postmaster@ger.edu.br>, relay=local, delay=102, delays=102/0.05/0/0.03, dsn=2.0.0, status=sent (delivered to mailbox) | ||
+ | May 2 17:30:48 ger postfix/qmgr[1894]: 71259CCA3: removed | ||
+ | May 2 17:31:25 ger postfix/smtpd[1965]: disconnect from localhost[127.0.0.1] | ||
+ | > | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | A mensagem de teste foi entregue em ''/var/mail/root'': | ||
+ | |||
+ | <syntaxhighlight lang=bash> | ||
+ | > sudo cat /var/mail/root | ||
+ | From aluno@ifsc.edu.br Sun May 2 17:30:48 2010 | ||
+ | Return-Path: <aluno@ifsc.edu.br> | ||
+ | X-Original-To: postmaster@ger.edu.br | ||
+ | Delivered-To: postmaster@ger.edu.br | ||
+ | Received: from mail (localhost [127.0.0.1]) | ||
+ | by ger (Postfix) with SMTP id 71259CCA3 | ||
+ | for <postmaster@ger.edu.br>; Sun, 2 May 2010 17:29:06 -0300 (BRT) | ||
+ | Subject: teste | ||
+ | Message-Id: <20100502202942.71259CCA3@ger> | ||
+ | Date: Sun, 2 May 2010 17:29:06 -0300 (BRT) | ||
+ | From: aluno@ifsc.edu.br | ||
+ | To: undisclosed-recipients:; | ||
+ | |||
+ | blabla | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
+ | Outra maneira para testar e um pouco mais amigável é utilizar a ferramenta mail. Instale o pacote: | ||
+ | apt-get install mailutils | ||
+ | Para enviar uma mensagem proceda do seguinte modo:<code> | ||
+ | mail usuario@redesX.edu.br <Enter>, | ||
+ | inserir o subjet <Enter>, | ||
+ | inserir a mensagem, <Enter> | ||
+ | <Ctrl>+<d>. //Finaliza e encaminha o Email | ||
+ | </syntaxhighlight> | ||
+ | Verifique o encaminhamento ou não em: | ||
+ | tail -f /var/log/mail.log | ||
+ | |||
+ | === Atividades === | ||
+ | # '''Tenha certeza''' que seu serviço DNS esteja funcionando corretamente e você consiga acessar os domínios internos criados. <code> ping mail.redesX.edu.br </syntaxhighlight> | ||
+ | # Instale o postfix em sua máquina virtual: '''apt-get install postfix'''. Escolha '''Site Internet''' e nome como '''mail.redesX.edu.br''', este nome deve ser '''exatamente''' igual ao declarado no serviço DNS, na definição MX. | ||
+ | # Configure-o para que se comunicar na Internet, criando o domínio de email ''redesX.edu.br''. Edite o arquivo '''/etc/postfix/main.cf''' e crie ou edite os seguintes parâmetros, deixando-os da seguinte forma:<syntaxhighlight lang=text> | ||
+ | myhostname = mail.redesX.edu.br | ||
+ | mydomain = redesX.edu.br | ||
+ | myorigin = $mydomain | ||
+ | inet_interfaces = all | ||
+ | mynetworks = 192.168.2.0/24, 127.0.0.0/8 | ||
+ | mynetworks_style = subnet | ||
+ | mydestination = $myhostname, $mydomain</syntaxhighlight> | ||
+ | # Reinicie o serviço: '''service postfix restart'''. | ||
+ | # Verifique se o servidor "subiu" corretamente: '''tail /var/log/syslog'''. | ||
+ | # Verifique se não houve erros de configuração: '''tail -n 30 /var/log/mail.log'''. | ||
+ | # Caso tudo esteja correto, instale um cliente de Email: '''apt-get install mailutils''' | ||
+ | # Envie um email:<syntaxhighlight lang=text> | ||
+ | mail aluno@redesX.edu.br | ||
+ | Cc: | ||
+ | Subject: Teste de email | ||
+ | Isto é somente um teste... | ||
+ | ... para sair, em uma linha em branco digite: CTRL d | ||
+ | </syntaxhighlight> | ||
+ | # Verifique se o email foi perfeitamente encaminhado procurando pela string ''sent'' no '''/var/log/mail.log'''. | ||
+ | # Para ler email, logado com o usuário desejado, execute o comando '''mail''' e digite o número da mensagem desejada. | ||
+ | # Teste o envio de mensagens para usuários dos domínios de seus colegas. Acompanhe o processamento das mensagens olhando o log. | ||
+ | # Crie um grupo de email com pelo menos três usuários, envie uma mensagem para o grupo e verifique se todos os usuários cadastrados no grupo receberam tal mensagem. | ||
+ | |||
+ | === Dicas === | ||
+ | |||
+ | Atenção para vários problemas comuns na implantação do correio eletrônico: | ||
+ | * ''Domínio DNS sem registro MX'': sem isso os MTAs não sabem como enviar mensagens para esse domínio | ||
+ | * ''Registro MX aponta um nome de host desconhecido:'' causa o mesmo problema acima | ||
+ | * ''Nome de host configurado como localhost no Postfix:'' o nome de host (parâmetro ''myhostname'' em /etc/postfix/main.cf) deve ser o nome DNS do servidor onde roda o Postfix. | ||
+ | * ''Erros de configuração (sintaxe) em /etc/postfix/main.cf'': tais erros podem fazer com que um dos subsistemas do Postfix aborte sua execução, impedindo que se processe uma mensagem. Por exemplo, se um parâmetro usado pelo subsistema ''smtpd'' (que recebe mensagens com protocolo SMTP) estiver errado, o ''smtpd'' não iniciam, ou termina abruptamente, abortando a recepção de mensagens. | ||
+ | Passo a passo para criar uma aliases (apelidos/grupos): | ||
+ | #Adicione as diretivas para criação de grupos:<code> | ||
+ | vi /etc/postfix/main.cf | ||
+ | alias_maps = hash:/etc/postfix/aliases | ||
+ | alias_database = hash:/etc/postfix/aliases</syntaxhighlight> | ||
+ | #Crie os grupos e adicione os respectivos usuários, por exemplo:<code> | ||
+ | vi /etc/postfix/aliases | ||
+ | todos: root, aluno | ||
+ | batman: aluno</syntaxhighlight> | ||
+ | #Execute o comando para criação da base de grupos:<code> | ||
+ | postalias /etc/postfix/aliases</syntaxhighlight> | ||
+ | #Reinicie o serviço: <code> | ||
+ | service postfix reload </syntaxhighlight> | ||
+ | #Teste os apelidos enviando email para '''todos''' e '''batman''' e verifique quais usuários (root e/ou aluno) receberam as respectivas mensagens. | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 14 - 1/4/15: Webmail}} | ||
+ | O objetivo é instalar o Webmail [http://roundcube.net/ RoundCube]. | ||
+ | |||
+ | Pré-requisitos: DNS e Postfix rodando. | ||
+ | |||
+ | Pré-configuração: | ||
+ | #Atualize a base apt: '''apt-get update''' | ||
+ | #Instale o Apache:<syntaxhighlight lang=text> | ||
+ | apt-get install apache2 </syntaxhighlight> | ||
+ | #Para facilitar a configuração instale o servidor ssh em sua máquina:<syntaxhighlight lang=text> | ||
+ | apt-get install ssh </syntaxhighlight> | ||
+ | #Na máquina real abra um terminal e faça uma conexão ssh com sua máquina virtual: <syntaxhighlight lang=text> | ||
+ | ssh aluno@192.168.2.X </syntaxhighlight> | ||
+ | Assim pode-se usar este terminal para configurar seu servidor. Neste terminal é possível usar os comando ''copy'' (CTRL + SHIFT + C) e ''paste'' (CTRL + SHIFT + V). | ||
+ | |||
+ | |||
+ | Instalando o '''RoundCube''' | ||
+ | #Vá para o diretório html: '''cd /var/www/html''' | ||
+ | #Baixar o pacote do RoundCube: '''wget http://downloads.sourceforge.net/project/roundcubemail/roundcubemail/1.1.1/roundcubemail-1.1.1.tar.gz''' | ||
+ | #Desempacote: '''tar -zxvf roundcubemail-1.1.1.tar.gz''' | ||
+ | #Renomeie para webmail: '''mv roundcubemail-1.1.1 webmail''' | ||
+ | #Instalar o Dovecot. [https://help.ubuntu.com/community/Dovecot Dovecot] é um MDA de fácil instalação que suporta acessos com IMAP e POP3. As caixas de entrada podem ser armazenadas nos formatos [http://www.linuxmail.info/mbox-maildir-mail-storage-formats/ mailbox ou Maildir].: '''apt-get install -y dovecot-imapd dovecot-pop3d'''. Nas janelas: '''SIM''', nome da máquina: '''mail.redesX.edu.br'''. | ||
+ | #Configurar o Dovecot: '''vi /etc/dovecot/dovecot.conf''' e ajustar/criar os seguintes parâmetros:<syntaxhighlight lang=text> | ||
+ | protocols = pop3 pop3s imap imaps | ||
+ | pop3_uidl_format = %08Xu%08Xv | ||
+ | mail_location = maildir:~/Maildir</syntaxhighlight> | ||
+ | #Force a releitura do arquivo de configuração: '''dovecot reload''' | ||
+ | #Reconfigurar a conta do '''aluno''' com os comandos ('''isto deve ser feito a todos os usuários do sistema aos quais deseja-se usar o webmail, evidentemente trocando aluno pelo nome equivalente'''):<syntaxhighlight lang=text> | ||
+ | maildirmake.dovecot /home/aluno/Maildir | ||
+ | maildirmake.dovecot /home/aluno/Maildir/.Drafts | ||
+ | maildirmake.dovecot /home/aluno/Maildir/.Sent | ||
+ | maildirmake.dovecot /home/aluno/Maildir/.Trash | ||
+ | maildirmake.dovecot /home/aluno/Maildir/.Templates | ||
+ | chown -R aluno.aluno /home/aluno/Maildir/ | ||
+ | chmod -R go-rwx /home/aluno/Maildir</syntaxhighlight> | ||
+ | #Reconfigure o Postfix: '''vi /etc/postfix/main.cf''' acrescentando a diretiva:<syntaxhighlight lang=text> | ||
+ | home_mailbox = Maildir/ </syntaxhighlight> | ||
+ | #Reinicie os serviços: '''service dovecot restart''' e '''service postfix restart''' | ||
+ | #Instale os pacotes e dependências necessárias: '''apt-get install -y php5 sqlite php5-sqlite php-net-smtp php-mail-mime php-mdb2''' | ||
+ | #Modifique o dono e grupo dono da pasta webmail para o Apache (www-data): '''chown -R www-data:www-data /var/www/html/webmail''' | ||
+ | #Dentro de /var/www/html/webmail mudar as permissões: '''chmod 777 temp/ logs/ SQL/''' | ||
+ | #Mude as permissões: '''chmod 755 /var/www/html/webmail''' | ||
+ | #Atribua o nome de máquina no servidor Apache, acrescentando ao final do arquivo '''/etc/apache2/apache2.conf''': <code> | ||
+ | ServerName www.redesX.edu.br</syntaxhighlight> | ||
+ | #Reinicie o Apache2: '''service apache2 restart''' | ||
+ | #Acesso com um navegador a página: '''http://192.168.2.X/webmail/installer/''' | ||
+ | #Instale pacotes extras necessários: <code> | ||
+ | pear install Mail_mimeDecode | ||
+ | pear install Net_IDNA2-0.1.1 </syntaxhighlight> | ||
+ | #Verifique se há alguma pendência NÃO opcional (procure pela string ''optional'' nos cabeçalhos das seções), se houver resolva! | ||
+ | #Clique em '''Next'''. | ||
+ | #Na seção (quadro) '''Database setup''' ajuste exatamente assim: <syntaxhighlight lang=text> | ||
+ | SQLite Database type | ||
+ | "em branco" Database server (omit for sqlite) | ||
+ | /var/www/html/webmail/SQL/sqlite.db DataBase name (use absolute path and filename for sqlite) | ||
+ | "em branco" Database user name (omit for sqlite) | ||
+ | "em branco" Database password (omit for sqlite) </syntaxhighlight> | ||
+ | #Clique em '''CREATE CONFIG'''. Por padrão o sistema se auto-configura mas caso apresente erro no config.php ou esteja sugerindo a copia, copie ou baixe a conteúdo da configuração apresentada para '''/var/www/html/webmail/config/config.inc.php'''. Clique em '''CONTINUE'''. | ||
+ | #Tenha CERTEZA que tudo esteja correto. | ||
+ | #Acesse a página http://192.168.2.X/webmail/ e forneça o login e senha do aluno. | ||
+ | #Na página do RounCube acesse a opção: '''Configurações''' > '''Identidades''', clique em aluno@servidor e na estabeleça a opção '''E-mail: aluno@redesX.edu.br''' > '''Salvar'''. | ||
+ | #Faça testes enviando mensagens aos colegas. É possível enviar também para contas externas desde que não haja bloqueio por domínio inválido. | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 15 - 6/4/15: Zoneminder e DHCP}} | ||
+ | A ferramenta [http://www.zoneminder.com/ ZoneMinder]permite integrar o monitoramento de câmeras com o Apache Server. | ||
+ | |||
+ | ZoneMinder é destinado para uso em aplicações de segurança de vídeo simples ou multi-câmera, incluindo CCTV comercial ou caseiras, como prevenção de roubo e monitoramento de filhos, membros da família ou acompanhamento em casa e outros cenários de cuidados domésticos, como instalações de monitoramento de babás. Ele suporta captura, análise, registro e monitoramento de dados de vídeo provenientes de uma ou mais câmeras de vídeo ou de rede ligados a um sistema Linux. ZoneMinder também pode apoiar no controle de câmeras web, usando uma variedade de protocolos. É apropriado para o uso como um sistemas de segurança de vídeo em casa e para a segurança de vídeo comercial ou profissional e vigilância. | ||
+ | |||
+ | Para instalar e configurar essa ferramenta no ubuntu 14.04 deve-se seguir os passos, que também mostrará a sequência para configuração e funcionamento de uma câmera Intelbras. | ||
+ | #Instalando a ferramenta. Caso o Apache ainda não esteja instalado ele será instalado juntamente com o ZoneMinder, já que está na tabela de pendências do mesmo.<code> | ||
+ | apt-get update | ||
+ | apt-get install zoneminder </syntaxhighlight> | ||
+ | #Criando um link da configuração do ZoneMinder com o Apache:<code> | ||
+ | ln -s /etc/zm/apache.conf /etc/apache2/sites-enabled/ </syntaxhighlight> | ||
+ | #Iniciando/reiniciando os serviços:<code> | ||
+ | service zoneminder restart | ||
+ | service apache2 restart </syntaxhighlight> | ||
+ | #Verifique se está tudo correto, caso apresente algum problema corrija. Com um navegador acesse:<code> | ||
+ | ip_do_servidor/zm </syntaxhighlight> | ||
+ | #Configurações básicas no ZoneMinder. | ||
+ | ##Na tela do ZoneMinder acesse '''Options > System > LANG_DEFAULT > ajuste para pt_br'''. Clique em '''Save'''. | ||
+ | ##Na tela do ZoneMinder acesse '''Opções > Rede > HTTP_VERSION > ajuste para 1.1'''. Clique em '''Salvar'''. | ||
+ | #Reinicie os serviços:<code> | ||
+ | service zoneminder restart | ||
+ | service apache2 restart </syntaxhighlight> | ||
+ | #Instalando a câmera Intelbras, lembrando que a câmera que possuímos está com ip fixo 192.168.1.108. | ||
+ | ##Primeiramente deve-se garantir acesso ao ip da câmera, por exemplo criando um apelido de ip na máquina. '''X''' = 1 para M1, 2 para M2, ..., 13 para M13 e 14 para M14. <code> | ||
+ | ifconfig eth0:0 192.168.1.X </syntaxhighlight> | ||
+ | ##Teste o acesso fazendo um ''ping'' para o ip da câmera. | ||
+ | ##Na tela do ZoneMinder clique na opção '''Adicionar Monitor'''. | ||
+ | ##Configure a aba '''General''' conforme a Fig 1. Não esqueça de salvar. [[Arquivo:ZoneMinder_General.png |thumb | 300px| Fig.1 ZoneMinder aba General]] | ||
+ | ##Configure a aba Origem conforme a Fig 2. Não esqueça de salvar. [[Arquivo:ZoneMinder_Origem.png |thumb | 300px| Fig.1 ZoneMinder aba Origem]] <code> | ||
+ | Source Path rtsp://admin:admin@192.168.1.108:554/cam/realmonitor?channel=1&subtype=0 </syntaxhighlight> | ||
+ | ##Na tela do ZoneMinder clique no link '''Intelbras''' (logo abaixo de '''Nome'''), se a imagem da câmera não aparecer execute o seguinte procedimento, de acordo com o procedimento para [https://bugs.launchpad.net/ubuntu/+source/zoneminder/+bug/1159361 correção de bug]: <code> | ||
+ | service apache2 stop | ||
+ | service zoneminder stop | ||
+ | rm -rf /tmp/zm/*.* | ||
+ | a2enmod cgi | ||
+ | service zoneminder start | ||
+ | service apache2 start </syntaxhighlight> | ||
+ | ##Acesse novamente o link '''Intelbras'''. | ||
+ | |||
+ | ==DHCP== | ||
+ | |||
+ | Ver capítulo 31 da [[Media:Gerencia_de_redes.pdf|apostila]]. | ||
+ | |||
+ | Em nosso experimento será usado o [http://www.isc.org/software/dhcp servidor DHCP desenvolvido pelo ISC]. Para usá-lo devem-se seguir os passos descritos abaixo. | ||
+ | |||
+ | # Instalar o serviço: <syntaxhighlight lang=bash> | ||
+ | apt-get install -y dhcp3-server | ||
+ | </syntaxhighlight> | ||
+ | # Configurar em ''/etc/dhcp/dhcpd.conf'', definindo as configurações globais e as redes onde o servidor DHCP irá ofertar endereços. Apague todo o conteúdo do arquivo original. '''X''' = 1 para M1, 2 para M2, ..., 13 para M13 e 14 para M14. <syntaxhighlight lang=text> | ||
+ | default-lease-time 600; | ||
+ | max-lease-time 7200; | ||
+ | option subnet-mask 255.255.255.0; | ||
+ | option broadcast-address 192.168.2.255; | ||
+ | option routers 192.168.2.1; | ||
+ | option domain-name-servers 200.135.37.65; | ||
+ | option domain-name "prj.edu.br"; | ||
+ | |||
+ | subnet 192.168.2.0 netmask 255.255.255.0 { | ||
+ | range 192.168.2.X1 192.168.2.X5; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | # Editar a interface que vai atender ao DHCP, no exemplo abaixo eth0, se a sua máquina utilizar uma interface diferente de eth0 faça a devida correção, por exemplo, eth1, eth2...: <syntaxhighlight lang=text> | ||
+ | vi /etc/default/isc-dhcp-server | ||
+ | INTERFACES="eth0" </syntaxhighlight> | ||
+ | # Iniciar o servidor DHCP: <syntaxhighlight lang=text> | ||
+ | service isc-dhcp-server restart | ||
+ | </syntaxhighlight> | ||
+ | # Verifique o log no servidor e observe a troca de mensagens entre o cliente e o servidor: <syntaxhighlight lang=text> | ||
+ | tail -f /var/log/syslog </syntaxhighlight> | ||
+ | # Intale e use o utilitário o '''dhclient''' de sua máquina virtual com ambiente gráfico como cliente para testes <syntaxhighlight lang=bash> | ||
+ | apt-get install isc-dhcp-client | ||
+ | dhclient -v eth0 </syntaxhighlight> | ||
+ | # Verifique o log no servidor e observe a troca de mensagens entre o cliente e o servidor. <syntaxhighlight lang=text> | ||
+ | tail -f /var/log/syslog </syntaxhighlight> | ||
+ | # Verifique os aluguéis no seu servidor com: <syntaxhighlight lang=text> | ||
+ | cat /var/lib/dhcp/dhcpd.leases </syntaxhighlight> | ||
+ | # Desafio: fixe um IP para algum cliente seu (por exemplo seu vizinho). | ||
+ | |||
+ | Maiores detalhes sobre esse servidor DHCP: | ||
+ | * [http://manpages.ubuntu.com/manpages/karmic/en/man8/dhcpd.8.html dhcpd - o servidor DHCP] | ||
+ | * [http://manpages.ubuntu.com/manpages/dapper/en/man5/dhcpd.conf.5.html dhcpd.conf - o arquivo de configuração do DHCP] | ||
+ | * [http://manpages.ubuntu.com/manpages/karmic/en/man5/dhcp-options.5.html Opções do protocolo DHCP] | ||
+ | * [http://manpages.ubuntu.com/manpages/dapper/en/man8/dhclient.8.html dhclient - o cliente DHCP] | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 16 - 8/4/15: SNMP e Cacti}} | ||
+ | |||
+ | SNMP | ||
+ | |||
+ | Ver capítulo 39 da [[Media:Gerencia_de_redes.pdf|apostila]]. | ||
+ | |||
+ | Mais detalhes podem obtidos em [http://wiki.sj.ifsc.edu.br/index.php/GER-2010-1#21.2F06:_SNMP SNMP]. | ||
+ | #Para monitorar-se uma máquina ubuntu por meio de consultas SNMP (''Simple Network Management Protocol'') devemos instalar o snmpd na máquina a ser monitorada: <syntaxhighlight lang=text> | ||
+ | apt-get install snmp snmpd snmp-mibs-downloader </syntaxhighlight> | ||
+ | #Para liberar a consulta remota ao SNMP deve-se reconfigurar o arquivo '''/etc/snmp/snmpd.conf''', comentando a primeira linha abaixo (original) e descomentando a segunda: <code> | ||
+ | #agentAddress udp:127.0.0.1:161 | ||
+ | agentAddress udp:161,udp6:[::1]:161 </syntaxhighlight> | ||
+ | #e: <code> | ||
+ | #rocommunity public default -V systemonly | ||
+ | rocommunity public 0.0.0.0/0 </syntaxhighlight> | ||
+ | #Reincia-se o serviço snmp: <code> | ||
+ | service snmpd restart </syntaxhighlight> | ||
+ | #Busca-se por possíveis erros de configuração: <code> | ||
+ | tail /var/log/syslog </syntaxhighlight> | ||
+ | #Pode-se testar o serviço com uma consulta a partir de uma máquina remota, por exemplo o terminal da máquina gráfica ou do próprio servidor. Este comando retornará todos os parâmetros SNMP da máquina consultada: <code> | ||
+ | snmpwalk -v1 -c public 192.168.2.1X | more</syntaxhighlight> | ||
+ | |||
+ | Cacti | ||
+ | |||
+ | Ver capítulo 41 da [[Media:Gerencia_de_redes.pdf|apostila]]. | ||
+ | |||
+ | No Ubuntu a instalação se mostra muito simplificada, pois o sistema de pacotes já configura todos os detalhes do Cacti após a instalação. | ||
+ | |||
+ | # Instale o Cacti: <syntaxhighlight lang=bash> | ||
+ | apt-get install cacti</syntaxhighlight> | ||
+ | # Serão apresentadas telas com questões sobre a configuração do Cacti: | ||
+ | ## Selecione '''Sim''' para ''Configurar a base de dados para cacti com dbconfig-common?'' | ||
+ | ## Forneça uma senha do administrador do MySQL (aluno), ou mantenha a mesma já utilizada no ZoneMinder. | ||
+ | ## Forneça uma senha (aluno) que será usada pelo usuário do Cacti no banco de dados. Essa será a senha do Cacti. | ||
+ | ## Selecione o uso do Apache. | ||
+ | # Com um navegador acesse a URL ''http://192.168.2.1X/cacti''. Ali você deve dar continuidade ao processo de instalação: | ||
+ | ## Selecione "New Install" | ||
+ | ## Verifique na próxima tela se todas as opções mostradas estão corretas (se aparece '''''OK''''' em verde ao lado). | ||
+ | ## Clique em ''Finish'', e na tela a seguir forneça o usuário ''admin'' e senha ''admin''. | ||
+ | # Crie gráficos para monitorar a CPU, memória, discos, processos e usuários do servidor onde reside o Cacti. | ||
+ | # Visualize os gráficos criados. | ||
+ | # Crie novos gráficos, porém coletando os dados da máquina do professor (192.168.2.101) também via SNMP. | ||
+ | ## Crie um novo dispositivo ('''Create devices for network''') do tipo '''ucd/net SNMP Host'''. | ||
+ | ## Crie os gráficos ('''New Graphs''') para o ''device''. | ||
+ | ## Associe o ''host'' a árvore ('''Graph Trees'''). | ||
+ | |||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 17 - 13/4/15: Preparação para avaliação e SNMP}} | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 18 - 15/4/15: Avaliação}} | ||
+ | #Configuração de interface de rede. | ||
+ | #Tabelas estáticas de roteamento. | ||
+ | #Servidor Web Apache. | ||
+ | #Servidor DNS. | ||
+ | #Servidor de Email. | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Lista de Exercícios}} | ||
+ | 1. Descreva o processo de resolução de nomes para o acesso à uma máquina remota (outro país), nunca antes acessada através de sua rede local. | ||
+ | |||
+ | 2. Explique a importância/vantagem da base do DNS apresentar diversos níveis hierárquicos. | ||
+ | |||
+ | 3. Em resumo, o que é um serviço de resolução de nomes (DNS)? | ||
+ | |||
+ | 4. O que, em essência, é o servidor Apache. | ||
+ | |||
+ | 5. Descreva todos os processos, programas e protocolos utilizados no envio de uma mensagem de correio eletrônico, desde a sua origem (escrita) até o destino (leitura). | ||
+ | |||
+ | 6. Questões 1, 2, 4 6 e 7 do [http://tele.sj.ifsc.edu.br/~odilson/Gerencia/02%20avaliacao%20teorica%20-%20rede,%20roteador,%20NAT,%20DNS,%20WWW%20e%20Postfix.pdf] | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 19 - 22/4/15: SNMP}} | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{Collapse top | Aula 20 - 27/4/15: Sistema de arquivos e reinstalação do servidor}} | ||
+ | |||
+ | Material para consulta: [[Media:Gerencia_de_redes.pdf|Gerência de Redes]] páginas 51 a 57. (Slide Prof. Glauco [http://wiki.sj.ifsc.edu.br/images/c/ce/Sistema_arquivos.pdf]) | ||
+ | |||
+ | ===Comandos importantes:=== | ||
+ | |||
+ | '''cfdisk''': aplicativo para particionamento de discos. Ex: '''cfdisk /dev/sdb'''. Obs.: clique em '''Gravar''' ao final. | ||
+ | |||
+ | '''mkfs.ext4''': formata uma determinada partição com o sistema de arquivos do tipo '''ext4'''. Ex: '''mkfs.ext4 /dev/sdb1'''. | ||
+ | |||
+ | '''mount''': monta partição. Ex: '''mount /dev/sdb1 /dados'''. | ||
+ | |||
+ | '''umount''': desmonta partição. Ex: '''umount /dados'''. | ||
+ | |||
+ | '''df''': mostra as partições montadas e seus pontos (diretórios) de montagem. Ex: '''df -h''' | ||
+ | |||
+ | No Ubuntu o tipo de padrão de arquivos mudou de '''relatime''' (apostila) para '''defaults'''. Portanto, sempre que se ver '''relatime''' na apostila leia-se '''defaults'''. | ||
+ | |||
+ | ===Roteiro de atividades=== | ||
+ | # Após inicializar a máquina virtual crie um ''snapshots'' (ícone no canto superior direito do VirtualBox). Isto criará uma imagem da máquina virtual, caso se cometa algum erro fatal na formatação de discos. | ||
+ | # Na máquina virtual use o '''cfdisk''' para particionar o disco '''/dev/sdb'''. Crie duas partições uma com tamanho de 300 MB e outra com tamanho 500 MB. Anote os nomes dos ''devices'' criados, por exemplo, '''/dev/sdb'''5. | ||
+ | # Crie dois diretórios: '''/dados''' e '''/teste'''. | ||
+ | # Em '''/dados''' crie 2 arquivos: '''dados1''' e '''dados2'''. Em '''/teste''' crie 2 arquivos: '''teste1''' e '''teste2'''. | ||
+ | # Formate as partições criadas com o sistema de arquivos '''ext4'''. Por exemplo: <code> | ||
+ | mkfs.ext4 /dev/sdb5 </syntaxhighlight> | ||
+ | # Monte estas partições em '''/dados''' e '''/teste'''. Por exemplo: <code> | ||
+ | mount /dev/sdb5 /dados </syntaxhighlight> | ||
+ | # Responda: | ||
+ | ## Qual o significado da letra após o sd? Ex.: sda e sdb. | ||
+ | ## Qual o significado do número após o sda ou sdb? Ex.: sda5, sda6, sda7 etc. | ||
+ | # Visualize o conteúdos dos diretórios '''/dados''' e '''/teste'''. Onde estão os arquivos '''dados1''', '''dados2''', '''teste1''' e '''teste2'''? | ||
+ | # Em '''/dados''' crie 2 arquivos: '''dados3''' e '''dados4'''. Em '''/teste''' crie 2 arquivos: '''teste3''' e '''teste4'''. | ||
+ | # Desmonte as partições. Por exemplo <code> | ||
+ | umount /dados </syntaxhighlight> | ||
+ | # Visualize o conteúdos destes diretórios '''/dados''' e '''/teste'''. Onde estão os arquivos '''dados3''', '''dados4''', '''teste3''' e '''teste4'''? | ||
+ | #Seria possível visualizar os arquivos '''dados1''', '''dados2''', '''dados3''' e '''dados4''' simultaneamente? Como? | ||
+ | # Configure o sistema para que sempre monte estas novas partições, a cada reboot. Teste. | ||
+ | {{Collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 21 - 29/4/15: Configurações no servidor}} | ||
+ | #Criem uma conta para cada membro da equipe com poder de comando sudo. | ||
+ | #Configurem o servidor SSH de tal modo que somente os membros da equipe possam fazer acesso remoto. Falando de outro modo, coíbam o acesso pelo '''root''' e qualquer outro usuário. | ||
+ | #Criem uma conta para o professor, com direito a executar comandos via sudo e com acesso via SSH. | ||
+ | #Instalem e configurem o servidor Apache. | ||
+ | #Criem uma página personalizada para a respectiva equipe. | ||
+ | #Instalem e configurem o Zoneminder. | ||
+ | #Configurem um alarme por email quando houver uma alteração na imagem da webcam, no Zoneminder. | ||
+ | #Instalem e liberem o acesso ao SNMP no servidor. | ||
+ | #Instalem e configurem monitoramento do seu servidor e de pelo menos um switch através do Cacti. | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 22 - 4/5/15: Configurações no servidor (cont.)}} | ||
+ | #Criem uma conta para cada membro da equipe com poder de comando sudo. | ||
+ | #Configurem o servidor SSH de tal modo que somente os membros da equipe possam fazer acesso remoto. Falando de outro modo, coíbam o acesso pelo '''root''' e qualquer outro usuário. | ||
+ | #Criem uma conta para o professor, com direito a executar comandos via sudo e com acesso via SSH. | ||
+ | #Instalem e configurem o servidor Apache. | ||
+ | #Criem uma página personalizada para a respectiva equipe. | ||
+ | #Instalem e configurem o Zoneminder. | ||
+ | #Configurem um alarme por email quando houver uma alteração na imagem da webcam, no Zoneminder. | ||
+ | #Instalem e liberem o acesso ao SNMP no servidor. | ||
+ | #Instalem e configurem monitoramento do seu servidor e de pelo menos um switch através do Cacti. | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 24 - 6/5/15: Configurações no servidor (cont.)}} | ||
+ | #Configurem o IP, máscara (/26),e gateway 200.135.37.126. Conforme especificação ao lado do diagrama do projeto. | ||
+ | #Configure seu servidor DNS para atender ao sub-domínio do sj.ifsc.edu.br. Conforme especificação ao lado do diagrama do projeto. | ||
+ | #Configure o Postifx (servidor de email) para esse domínio. | ||
+ | #Configure o Webmail. | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 25 - 11/5/15: Aulas suspensas - somente 2 alunos compareceram devido as fortes chuvas}} | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 26 - 13/5/15: Configurações no servidor (cont.)}} | ||
+ | Deixar DNS, Webmail e Apache plenamente funcionais. | ||
+ | |||
+ | Estudar [http://iptables.org/ iptables] e [http://www.fwbuilder.org/ Firewall Builder ] | ||
+ | {{collapse bottom}} | ||
+ | {{collapse top | Aula 27 - 18/5/15: Firewall}} | ||
+ | |||
+ | webmail.prjiX.sj.ifsc.edu.br | ||
+ | #Configure seu servidor DNS para resolver também o nome '''webmail.prjiX.sj.ifsc.edu.br'''. Não se esqueça de atualizar o número de série (''serial''). | ||
+ | #Configure um novo ''Host Virtual'' no apache. '''/etc/apache2/sites-available/webmail.conf''' <code> | ||
+ | <VirtualHost *:80> | ||
+ | ServerName webmail.prjiX.sj.ifsc.edu.br | ||
+ | |||
+ | ServerAdmin webmaster@prjiX.sj.ifsc.edu.br | ||
+ | DocumentRoot /var/www/html/webmail | ||
+ | |||
+ | ErrorLog ${APACHE_LOG_DIR}/error.log | ||
+ | CustomLog ${APACHE_LOG_DIR}/access.log combined | ||
+ | |||
+ | </VirtualHost> </syntaxhighlight> | ||
+ | #Crie um atalho para habilitar o mesmo no Apache: <code> | ||
+ | ln -s /etc/apache2/sites-available/webmail.conf /etc/apache2/sites-enabled/ </syntaxhighlight> | ||
+ | #reinicie o Apache: <code> | ||
+ | service apache2 restart </syntaxhighlight> | ||
+ | |||
+ | Firewall | ||
+ | |||
+ | Ver capítulo 35 da [[Media:Gerencia_de_redes.pdf|apostila]]. | ||
+ | |||
+ | Configuração para ser feita individualmente nas máquinas virtuais. | ||
+ | |||
+ | #Configure seu servidor como roteador. | ||
+ | #Configure no Ubuntu Gráfico como roteador padrão seu servidor. | ||
+ | #Instale o iptables. <syntaxhighlight lang=text> | ||
+ | apt-get install iptables </syntaxhighlight> | ||
+ | #Configure uma regra que impeça seu cliente (Ubuntu Gráfico) de acessar qualquer porta da máquina www.ifsc.edu.br. | ||
+ | #Repita a regra, mas agora mandando um aviso ao cliente. | ||
+ | #Proíba o seu cliente de fazer ping para qualquer máquina, liberando todos os demais serviços. | ||
+ | #Limpe as regras anteriores. | ||
+ | #Permita que seu cliente acesse qualquer máquina na porta 80, mas somente nesta porta. | ||
+ | #Limpe todas as regras. | ||
+ | #Mude a política para DROP e permita que o seu cliente acesse somente www.ifsc.edu.br. | ||
+ | #De seu cliente, faça um ataque do tipo ''ping of death'' em seu servidor: <syntaxhighlight lang=text> | ||
+ | ping -f 192.168.3.1X </syntaxhighlight> | ||
+ | #Iniba ataques do tipo ''ping of death'' na chain INPUT do seu servidor. | ||
+ | #Teste novamente com seu cliente e tente perceber a diferença no comportamento dos dois ataques. | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 28 - 20/5/15: Ajustes no servidor - Postfix, NTPdate, DNS}} | ||
+ | '''NTPdate'''. Serviço para sincronização do relógio. | ||
+ | #Instale o pacote <code> | ||
+ | apt-get install ntpdate </syntaxhighlight> | ||
+ | #sincronize o sistema <code> | ||
+ | ntpdate ntp.on.br </syntaxhighlight> | ||
+ | #Configure para sincronização automática diariamente fazendo uso do '''Crontab''' -- Agendador de tarefas do Linux. Material para consulta: [[Media:Gerencia_de_redes.pdf|Apostila]], capítulo 19. Ao criar o script abaixo (no diretório daily) o mesmo será executado diariamente pelo '''crontab'''. | ||
+ | ##Crie o script. '''vi /etc/cron.daily/ntpdate''' <code> | ||
+ | #!/bin/sh | ||
+ | ntpdate ntp.ubuntu.com </syntaxhighlight> | ||
+ | ##Torne o script executável: <code> | ||
+ | chmod 755 /etc/cron.daily/ntpdate </syntaxhighlight> | ||
+ | |||
+ | '''Postifix'''. Exemplo de um arquivo de configuração. '''vi /etc/postfix/main.cf''' <code> | ||
+ | smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) | ||
+ | biff = no | ||
+ | append_dot_mydomain = no | ||
+ | readme_directory = no | ||
+ | smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem | ||
+ | smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key | ||
+ | smtpd_use_tls=yes | ||
+ | smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache | ||
+ | smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache | ||
+ | smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination | ||
+ | myhostname = mail.prjiX.sj.ifsc.edu.br | ||
+ | mydomain = prjiX.sj.ifsc.edu.br | ||
+ | alias_maps = hash:/etc/aliases | ||
+ | alias_database = hash:/etc/aliases | ||
+ | myorigin = $mydomain | ||
+ | mydestination = $mydomain, $myhostname, localhost.localdomain, localhost | ||
+ | relayhost = | ||
+ | mynetworks = 127.0.0.0/8, [::1]/128, 200.135.37.12X/32, 192.168.1.0/24 | ||
+ | mynetworks_style = subnet | ||
+ | mailbox_size_limit = 0 | ||
+ | recipient_delimiter = + | ||
+ | inet_interfaces = all | ||
+ | inet_protocols = all | ||
+ | home_mailbox = Maildir/ </syntaxhighlight> | ||
+ | |||
+ | '''DNS'''. Opção o navegador atender diretamente ao domínio. Por exemplo, ao invés de digitar '''www.prjiX.sj.ifsc.edu.br''' digita-se '''prjiX.sj.ifsc.edu.br''' e o navegador acessa a página principal do servidor. '''vi /etc/bind/db.XXXXX''' e acrescentar logo após a diretiva $ORIGIN .... <code> | ||
+ | prjiX.sj.ifsc.edu.br. A 200.135.37.12X </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 29 - 25/5/15: Ajustes no servidor -- Firewall}} | ||
+ | Firewall | ||
+ | |||
+ | Ver capítulo 35 da [[Media:Gerencia_de_redes.pdf|apostila]]. | ||
+ | |||
+ | Configuração para ser feita individualmente nas máquinas virtuais. | ||
+ | |||
+ | #Configure seu servidor como roteador. | ||
+ | #Configure no Ubuntu Gráfico como roteador padrão seu servidor. | ||
+ | #Instale o iptables. <syntaxhighlight lang=text> | ||
+ | apt-get install iptables </syntaxhighlight> | ||
+ | #Configure uma regra que impeça seu cliente (Ubuntu Gráfico) de acessar qualquer porta da máquina www.ifsc.edu.br. Faça testes do cliente, acessando a página web www.ifsc.edu.br, pingando para www.ifsc.edu.br etc. | ||
+ | #Repita a regra, mas agora mandando um aviso ao cliente. Repita os testes. Qual a diferença no comportamento? | ||
+ | #Proíba o seu cliente de fazer ping para qualquer máquina, liberando todos os demais serviços. Faça testes do cliente, acessando a página web www.ifsc.edu.br, google.com, pingando para www.ifsc.edu.br. google.com. | ||
+ | #Limpe as regras anteriores. | ||
+ | #Permita que seu cliente acesse qualquer máquina na porta 80, mas somente nesta porta. Faça testes do cliente, acessando a página web www.ifsc.edu.br, google.com, pingando para www.ifsc.edu.br. google.com. | ||
+ | #Limpe todas as regras. | ||
+ | #Mude a política para DROP e permita que o seu cliente acesse somente www.ifsc.edu.br. Ping para www.ifsc.edu.br, conseguiu? Quais as regras a serem adicionadas? | ||
+ | #De seu cliente, faça um ataque do tipo ''ping of death'' em seu servidor: <syntaxhighlight lang=text> | ||
+ | ping -f 192.168.2.1X </syntaxhighlight> | ||
+ | #Iniba ataques do tipo ''ping of death'' na chain INPUT do seu servidor. | ||
+ | #Teste novamente com seu cliente e tente perceber a diferença no comportamento dos dois ataques. | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 30 - 27/5/15: Ajustes no servidor -- Firewall (cont.)}} | ||
+ | |||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 31 - 1/6/15: Ajustes no servidor -- Firewall Builder}} | ||
+ | #Na máquina Ubuntu gráfico instale o firewall builder: <code> | ||
+ | apt-get update | ||
+ | apt-get install fwbuilder </syntaxhighlight> | ||
+ | #Execute o mesmo: <code> | ||
+ | fwbuilder & </syntaxhighlight> | ||
+ | #Clique em '''Create new firewall'''. | ||
+ | #Na tela seguinte preencha: <code> | ||
+ | Name of the new firewall object: Teste | ||
+ | Choose firewall software it is running: iptables | ||
+ | Choose OS the new firewall runs on: Linux 2.4/2.6 | ||
+ | X Use preconfigured firewall templates </syntaxhighlight> | ||
+ | #Clique em '''Next''' | ||
+ | #Escolha '''host fw template 1'''. Clique em '''Next'''. | ||
+ | #Configure a interface de rede como '''externa'''. Clique em '''Finish'''. | ||
+ | #No menu superior clique em '''Compile''', salvando com nome '''Teste'''. | ||
+ | #Ao final da compilação, clique no botão '''Inspect generated files'''. O FwBuilder gera um script que pode ser portado para qualquer sistema Linux, inclusive para o servidor das equipes. | ||
+ | #Na Janela Teste/Policy, crie uma nova regra, logo abaixo da regra do '''ssh''', para liberar o acesso ao servidor Web (apache), tanto em http e https (TCP). Dica: copie o padrão usado para o ssh, ou simplesmente acrescente os novos protocolos nessa mesmo. Por exemplo, clique na caixa '''Service''' da linha do ssh, na aba '''Object''' (à esquerda) clique em '''Sevices/TCP''', clique na seta ao lado de TCP e arraste '''http''' e '''https''' para a coluna '''Service''', junto com o ssh. Se as opções do TCP não estiverem visíveis, utilize a janela inferior, clique na aba lateral esquerda '''Find''', em '''Find Object''' preencha com '''http''' e tecle '''Enter'''. | ||
+ | #Crie regras para os demais serviços disponíveis no servidor da equipe. | ||
+ | #Compile novamente e salve. | ||
+ | #No terminal execute o script criado: <code> | ||
+ | ./Teste.fw </syntaxhighlight> | ||
+ | #Verifique as regras criadas: <code> | ||
+ | iptables -L </syntaxhighlight> | ||
+ | #Tente entender as regras. | ||
+ | |||
+ | ===Para o servidor da equipe=== | ||
+ | #Entre os membros da equipe discutam as várias opções criadas -- Teste.fw. | ||
+ | #Cheguem a um consenso sobre o melhor a ser adotado no servidor. Se necessário façam alterações consensuais. | ||
+ | #Portem o script para o servidor. | ||
+ | #Programem o mesmo pra rodar a todo ''reboot''. Uma das possibilidades é utilizar o crontab. | ||
+ | |||
+ | Exemplo de porte e execução do script no servidor da equipe: | ||
+ | #Copie o arquivo Teste.fw para o servidor: <code> | ||
+ | scp Teste.fw nome-de-usuario@www.prjiX.sj.ifsc.edu.br: </syntaxhighlight> | ||
+ | #Acesse o servidor e copie o script para o diretório /root: <code> | ||
+ | cp Teste.fw /root </syntaxhighlight> | ||
+ | #Mude as permissões do script para torná-lo um executável: <code> | ||
+ | chmod a+x /root/Teste.fw </syntaxhighlight> | ||
+ | #Execute manualmente, pela primeira vez, o script: <code> | ||
+ | /root/Teste.fw </syntaxhighlight> | ||
+ | #Edite a crontab (como root) '''crontab -e''' e acrescente uma linha com o seguinte conteúdo: <code> | ||
+ | @reboot /root/Teste.fw </syntaxhighlight> | ||
+ | |||
+ | ===Para curiosos=== | ||
+ | Siga o [http://www.vivaolinux.com.br/artigo/Gerenciando-regras-de-Iptables-com-Firewall-Builder-(parte-2) roteiro] para fazer uma configuração básica/avançada e personalizada com o Firewall Builder. | ||
+ | |||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 32 - 3/6/15: Protocolo de roteamento RIP}} | ||
+ | Já vimos em momentos anteriores as tabelas estáticas de roteamento. Esse tipo de configuração é útil para pequenas redes e quando não há caminhos redundantes para o tráfego de pacotes. Com protocolos de roteamento dinâmicos da Internet como o protocolo RIP (''Routing Information Protocol'') e OSPF (''Open Shortest Path First''), as tabelas de repasse dos roteadores são construídas dinamicamente por esses protocolos e, portanto, podem reagir, por exemplo, a quedas de enlaces. | ||
+ | |||
+ | Em redes reais, com equipamentos reais, esses protocolos são rodados nos roteadores especializados, os quais trocam informações entre si, através do protocolo ICMP, para construção das tabelas baseadas no melhor caminho dentre os possíveis. Para simular um situação próxima ao real utilizaremos o [[Netkit2]]. Leia o [http://wiki.sj.ifsc.edu.br/index.php/Netkit2#Roteadores tutorial] de como o Netkit2 trabalha com roteadores. | ||
+ | |||
+ | Em todos os experimentos será utilizado como base a seguinte arquitetura de rede: | ||
+ | |||
+ | [[Arquivo:DynamicRoutingTriangle.png]] | ||
+ | |||
+ | #Crie em seu computador um arquivo com nome '''/home/aluno/roteamento.conf'''. O conteúdo do arquivo é o seguinte: <code> | ||
+ | # Hosts definitions | ||
+ | pc1[type]=generic | ||
+ | pc2[type]=generic | ||
+ | pc3[type]=generic | ||
+ | |||
+ | # Routers definitions | ||
+ | r1[type]=gateway | ||
+ | r2[type]=gateway | ||
+ | r3[type]=gateway | ||
+ | |||
+ | # Hosts' interfaces to local routers | ||
+ | pc1[eth0]=link0:ip=192.168.0.1/24 | ||
+ | pc2[eth0]=link1:ip=192.168.1.1/24 | ||
+ | pc3[eth0]=link2:ip=192.168.2.1/24 | ||
+ | |||
+ | # Routers' interfaces to local networks | ||
+ | r1[eth0]=link0:ip=192.168.0.254/24 | ||
+ | r2[eth0]=link1:ip=192.168.1.254/24 | ||
+ | r3[eth0]=link2:ip=192.168.2.254/24 | ||
+ | |||
+ | # Network "backbone" links | ||
+ | r1[eth1]=backbone0:ip=10.0.0.1/30 | ||
+ | r1[eth2]=backbone1:ip=10.0.1.1/30 | ||
+ | |||
+ | r2[eth1]=backbone0:ip=10.0.0.2/30 | ||
+ | r2[eth2]=backbone2:ip=10.0.2.1/30 | ||
+ | |||
+ | r3[eth1]=backbone1:ip=10.0.1.2/30 | ||
+ | r3[eth2]=backbone2:ip=10.0.2.2/30 </syntaxhighlight> | ||
+ | #Rode o NetKit em seu computador. Em um terminal da máquina real digite: <code> netkit2 & </syntaxhighlight> | ||
+ | #No menu '''File - Load and Run''', procure o arquivo '''/home/aluno/roteamento.conf''' e clique em OK. Abrirá uma janela com 6 abas, onde cada uma delas é um terminal de configuração do respectivo equipamento: '''pc1-3''' ou '''r1-3'''. | ||
+ | #Ao clicar no menu '''File - Graph''', pode-se ter uma visão da rede a ser simulada e conferir se é equivalente ao diagrama proposto. | ||
+ | #Testes de conectividade de enlace e configuração do ''default gateway''. | ||
+ | ##Por exemplo, no '''pc1''' execute o comando: <code> ping 192.168.0.254 </syntaxhighlight> Obteve sucesso? Sim ou não e por quê? | ||
+ | ##Teste a conectividade do '''pc1''' executando o comando: <code> ping 10.0.0.1 </syntaxhighlight> Obteve sucesso? Sim ou não e por quê? | ||
+ | ##Por exemplo, no '''pc1''' execute o comando: <code> ping 10.0.0.2 </syntaxhighlight> Obteve sucesso? Sim ou não e por quê? | ||
+ | ##Configure o roteador padrão em todos os PCs, por exemplo no '''pc1''': <code> route add -net default gw 192.168.0.254 </syntaxhighlight> | ||
+ | ##Teste novamente a conectividade, no '''pc1''' execute o comando: <code> ping 10.0.0.1 </syntaxhighlight> e <code> ping 10.0.0.2 </syntaxhighlight> Obteve sucesso? O comportamento foi o mesmo dos iten 5.2 e 5.3? Sim ou não e por quê? | ||
+ | ##Com os ping do item anterior ativos (um a cada tempo) faça captura de pacotes no '''r1'''com '''tcpdump -n -vvv -i any'''. Qual a origem e destino dos pacotes? Por quê? Qual a diferença no ping entre os dois itens? | ||
+ | #Em cada roteador, configure o serviço RIP para que que os testes da próxima etapa possam ser executados. O Netkit cria no home do usuário uma pasta chamada "lab". Nesta pasta, há uma pasta para cada equipamento da rede em teste. Neste diretório podem ser colocados arquivos de configuração de serviços a serem executados nas máquinas virtuais do Netkit. É por ali que será configurado, primeiramente, o Quagga, software de roteamento que implementa RIP e OSPF. O arquivo de configuração abaixo mostra a configuração do Quagga para o roteador '''r1'''. Salve este arquivo com o nome '''zebra.conf''' no diretório '''/home/aluno/lab/r1/'''. Em seguida, adapte o arquivo para os roteadores '''r2''' e '''r3''' observando a figura do diagrama da rede para não errar os IPs.<syntaxhighlight lang=text> | ||
+ | hostname r1 | ||
+ | |||
+ | interface eth0 | ||
+ | ip address 192.168.0.254/24 | ||
+ | interface eth1 | ||
+ | ip address 10.0.0.1/30 | ||
+ | interface eth2 | ||
+ | ip address 10.0.1.1/30 | ||
+ | |||
+ | log stdout | ||
+ | </syntaxhighlight> | ||
+ | #Crie os arquivos de configuração para o RIP em cada roteador (/home/aluno/lab/r1 ... /r3), colocando-os dentro dos diretórios dos mesmos. O nome destes arquivos deve ser '''ripd.conf''' e o conteúdo deve ser o abaixo.<syntaxhighlight lang=text> | ||
+ | router rip | ||
+ | redistribute connected | ||
+ | redistribute static | ||
+ | network eth1 | ||
+ | network eth2 | ||
+ | </syntaxhighlight> | ||
+ | #No '''pc1''' execute: <code> ping 192.168.2.1 </syntaxhighlight> O ping está funcionando? Por quê? | ||
+ | #Deixe o ping rodando! | ||
+ | #Inicie o ''daemon'' ''quagga'' em todos os roteadores (r1, r2 e r3). <code> service quagga start </syntaxhighlight> | ||
+ | #Execute o Quagga e o RIP a partir dos arquivos criados. Os arquivos que estão na pasta "/home/aluno/lab" são montados na pasta "/homelab/" de todas as máquinas virtuais do Netkit. Para iniciar os serviços no '''r1''', faça algo como o que está no exemplo abaixo. Repita o procedimento para '''r2''' e '''r3''' utilizando os arquivos corretos.<syntaxhighlight lang=bash> | ||
+ | zebra -d -f /hostlab/r1/zebra.conf | ||
+ | ripd -d -f /hostlab/r1/ripd.conf | ||
+ | </syntaxhighlight> | ||
+ | #Olhe o terminal do pc1, o que ocorreu com o ping? Por quê? | ||
+ | #Observando o estado do sistema. Vamos usar comandos para verificar o estado dos roteadores. | ||
+ | ##Solicitar uma sessão com o vtysh no ''zebrad'': <code> vtysh </syntaxhighlight> | ||
+ | ##Verifique o estado das interfaces usando o comando: <code> show interface </syntaxhighlight> | ||
+ | ##Verifique se o roteador está habilitado para roteamento: <code> show ip forwarding </syntaxhighlight> | ||
+ | ##Verifique o estado da '''tabela de roteamento''' usando o comando: <code> show ip route </syntaxhighlight> '''Interprete detalhadamente essa tabela'''! Você consegue visualizar o mapa da rede a partir dessa tabela? | ||
+ | ##Verifique a configuração atual do roteador: <code> show run </syntaxhighlight> | ||
+ | ##Sair do vtysh: <code>exit </syntaxhighlight> | ||
+ | #Teste as demais conectividades entre os PCs com ping mútuos. Tudo funcionando? | ||
+ | #A partir de cada '''pc''' trace a rota ('''traceroute''') para os demais '''pc''' e anote-as. | ||
+ | # Com o '''route -n''' e/ou '''netstat -r''' verifique a anote as rotas de cada roteador. | ||
+ | #Pare todos os pings. | ||
+ | #Execute o capturador de pacotes ('''tcpdump -n -vvv -i any''') no '''r1''' por pelo menos 1 min e tente compreender as mensagens RIPv2 (UDP 17) trocadas. Olhe com atenção os IPs e as métricas apresentadas. O que dizem essas mensagens? | ||
+ | #Com o capturador de pacotes rodando em '''r2''', desative um dos enlaces entre os roteadores e acompanhe a troca de mensagens. Por questões de compatibilidade vamos desativar uma interface de um modo especial. Por exemplo, para "derrubar" o enlace '''r1-r2''', execute no '''r1''': <code> | ||
+ | vtysh 2061 entra no zebrad | ||
+ | conf t entra no mode de configuração | ||
+ | interface eth1 entra na referida interface a ser operada | ||
+ | shutdown desativa a interface, se desejado | ||
+ | no shutdown restaura a interface, se desejado </syntaxhighlight> | ||
+ | #Permaneça monitorando o ping e o capturador de pacotes, a recuperação das rotas leva em torno de 1 min. Quais as mensagens trocadas no capturador de pacotes? | ||
+ | #Teste as conectividades. O que aconteceu? | ||
+ | #Retrace as rotas com ''show ip route'' nos roteadores e com o ''traceroute'' a partir dos '''pcs'''. São diferentes do caso original (todos enlaces ativos)? Por quê? | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 33 - 8/6/15: Protocolo de roteamento RIP (Cont.) e Radius}} | ||
+ | |||
+ | ==Radius== | ||
+ | |||
+ | O [[Free_Radius | RADIUS]] (''Remote Authentication Dial In User Service'') é uma ferramenta utilizada para a autenticação de usuários seja na rede cabeada ou na rede sem fio. Pode ser utilizado com um banco de dados LDAP, para que o mesmo busque usuário e senha ou pode-se usar o arquivo de texto '''users''' da mesma forma determinando usuário e senha. Utilizaremos o arquivo de texto '''users''' devido a facilidade de implementar. | ||
+ | |||
+ | Procedimento no AP (Access Point) '''Edimax''': | ||
+ | #Acesse o AP via browser, após o reset, no IP 192.168.2.1. Obs. lembre-se que é necessário um criar uma rota ou IP compatível com o mesmo. O IP padrão do AP é 192.168.2.1, usuário admin, senha 1234. | ||
+ | #Na aba '''Security''' configure: <code> | ||
+ | Encryption: WPA RADIUS | ||
+ | Radius IP Server: 192.168.X.10 | ||
+ | RADIUS Server Password: 1234 </syntaxhighlight> | ||
+ | #Configure seu AP para um novo IP padrão, seguindo o modelo 192.168.X.1, onde X é o último campo do IP do seu servidor. | ||
+ | #Configure como ''default gateway'' do AP o 192.168.X.10 (servidor da equipe). | ||
+ | #Habilite o DHCP Server (''System Utility'') com os seguintes parâmetros: <code> | ||
+ | Default Gateway IP: 192.168.X.10 | ||
+ | Domain Name Server IP: 200.135.37.65 | ||
+ | Start IP: 192.168.X.100 | ||
+ | End IP: 192.168.X.200 </syntaxhighlight> | ||
+ | #Configure o SSID do AP com o nome da equipe, '''Basic Setting''' - '''ESSID''': '''PRJI1''' ou '''PRJI2''' ou '''PRJI3'''. | ||
+ | #Clique em '''Apply''' - '''Apply''', para salvar e reiniciar o AP. | ||
+ | #O acesso direto ao AP será perdito! | ||
+ | #Conecte o Ao no mesmo switch do servidor. | ||
+ | |||
+ | Procedimento deve ser realizado (pela equipe) no servidor: | ||
+ | #Configure o servidor para repasse de pacotes: <code> | ||
+ | echo 1 > /proc/sys/net/ipv4/ip_forward </syntaxhighlight> | ||
+ | #Configure o NAT no servidor <code> | ||
+ | iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE </syntaxhighlight> | ||
+ | #Instale o pacote: <code> | ||
+ | apt-get update | ||
+ | apt-get install freeradius </syntaxhighlight> | ||
+ | #Crie no servidor um IP alias compatível com o IP do AP, por exemplo, 192.168.X.10. | ||
+ | #Após isso é necessário a configuração de dois arquivos o <tt>/etc/freeradius/clients.conf</tt>, arquivo onde é cadastrado os equipamentos que irão se conectar a rede (cada switch e AP terão seus dados cadastrados neste formato). Acrescente ao final do arquivo (XX é o IP do AP): <code> | ||
+ | client 192.168.X.1 { | ||
+ | ipaddr = 192.168.X.1 | ||
+ | shortname = nome_ficticio_do_AP | ||
+ | secret = 1234 | ||
+ | nastype = other | ||
+ | } </syntaxhighlight> | ||
+ | #e <tt>/etc/freeradius/users</tt>, arquivo onde é cadastrado os usuários que podem se conectar a rede, é necessário determinar dentro do users o login e senha que será utilizado por cada usuário: <code> | ||
+ | #2009-07-30 22222222222 | ||
+ | login Cleartext-Password :="senha" | ||
+ | Tunnel-Type = "VLAN", | ||
+ | Tunnel-Medium-Type = "IEEE-802", | ||
+ | Tunnel-Private-Group-ID = "X" | ||
+ | |||
+ | zeus Cleartext-Password :="123" | ||
+ | Tunnel-Type = "VLAN", | ||
+ | Tunnel-Medium-Type = "IEEE-802", | ||
+ | Tunnel-Private-Group-ID = "20" | ||
+ | |||
+ | odilson Cleartext-Password :="abacaxi" | ||
+ | Tunnel-Type = "VLAN", | ||
+ | Tunnel-Medium-Type = "IEEE-802", | ||
+ | Tunnel-Private-Group-ID = "30" </syntaxhighlight> | ||
+ | ##O login e senha que estão acima serão os respectivos login e senha do usuário para que o mesmo possa se autenticar na rede cabeada ou sem fio. | ||
+ | ##O "X" é onde você deve identificar em qual VLAN cairá o usuário após a autenticação, veja os exemplos para a VLANs 30 e 40. | ||
+ | ##2009-07-30 é a data de saída do hóspede | ||
+ | ##22222222222 é a senha que deverá ser utilizada pelo usuário para a autenticação. | ||
+ | |||
+ | #Como root, reinicie o serviço: <code> | ||
+ | service freeradius restart </syntaxhighlight> | ||
+ | #e em outro console (qualquer usuário): <code> | ||
+ | radtest <usuário> <senha> <servidor> <porta> <senha_cliente> </syntaxhighlight> | ||
+ | #Pode-se verificar os logs em '''/var/log/freeradius/radius.log'''. | ||
+ | |||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 34 - 10/6/15: Radius (cont.)}} | ||
+ | |||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 35 - 15/6/15: Dúvidas}} | ||
+ | |||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 36 - 17/6/15: Segunda avaliação}} | ||
+ | SNMP, Cacti, Firewall, RIP e Radius. | ||
+ | |||
+ | Perguntas teóricas: | ||
+ | #Qual é a principal aplicação para o SNMP? | ||
+ | #Normalmente as aplicações da Internet são baseadas no modelo cliente-servidor. O SNMP segue o mesmo modelo? Qual é a relação com aplicações normais? | ||
+ | #Qual é o papel do gerente e agente de rede no SNMP? | ||
+ | #O que é e para que serve o CACTI? | ||
+ | #Que tipo de informação pode ser registrada/apresentada com o CACTI? | ||
+ | #Defina firewall. | ||
+ | #O que o NAT tem a ver com firewall? | ||
+ | #Como funciona o firewall? | ||
+ | #Quais são as tabelas do iptables e qual o principal uso de cada uma? | ||
+ | #Na tabela Filter quais são as ''chains'' e seu significado? | ||
+ | #Descreva as possíveis ações na tabela Filter. | ||
+ | #"Traduza" (explique com suas palavras) a seguinte regra: <code> | ||
+ | iptables -A FORWARD -s 192.168.2.1 -p tcp --sport 80 -d 200.135.37.65 -j LOG </syntaxhighlight> | ||
+ | #Monte, um conjunto mínimo de regras na ''chain'' FORWARD, com política DROP, para que uma máquina controlado por seu firewall acesse livremente a máquina www.ifsc.edu.br. | ||
+ | #O que é o RIP? Qual sua relação com OSPF e BGP? | ||
+ | #O que diferencia um protocolo de roteamento dinâmico e estático? | ||
+ | #Defina o protocolo RADIUS. | ||
+ | #Quais são as funções básicas do RADIUS? | ||
+ | #Quais são as funções para os equipamentos de uma rede RADIUS? | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 38 - 22/6/15: Avaliação individual sobre o projeto}} | ||
+ | |||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 39 - 24/6/15: Avaliação individual sobre o projeto}} | ||
+ | |||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 40 - 29/6/15: Reavaliação final}} | ||
+ | |||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Aula 41 - 1/7/15: }} | ||
+ | |||
{{collapse bottom}} | {{collapse bottom}} |
Edição atual tal como às 16h40min de 11 de junho de 2015
Diário de aula de PJI - 2015-1 - Prof. Odilson T. Valle
Dados Importantes
Professor: Odilson Tadeu Valle
Email: odilson@ifsc.edu.br
Atendimento paralelo: 2ª das 17h35 às 18h30 e 6ª das 9h40 às 10h35. Local: Lab. de Desenvolvimento.
- Avaliação
- Avaliações individuais em cada etapa do projeto com conceito numérico: A, B, C e D. Conceito mínimo necessário em cada avaliação: C.
- Avaliação baseada no projeto. Avaliação individual com acesso ao servidor da equipe e com questões relativas aos serviços e configurações do mesmo.
- Um ou mais conceitos D implica na realização da reavaliação: uma única avaliação a ser realizada no último dia de aula.
IMPORTANTE: o direito de recuperar uma avaliação em que se faltou somente existe mediante justificativa reconhecida pela coordenação. Assim, deve-se protocolar a justificativa no prazo de 48 horas, contando da data e horário da avaliação e aguardar o parecer da coordenação.
Plano de Ensino
Páginas de alunos
Diário de aulas
Equipes:
- Tamires, Gabriel, Henrique e Danilo
- Sidnei, Maiquel e Adriano
- Marcos, Guilherme, Tais, Claudio, Caroline e Jean.
IPs e sub-domínios DNSs destinados às respectivas equipes:
- 200.135.37.121 - prji1.sj.ifsc.edu.br
- 200.135.37.122 - prji2.sj.ifsc.edu.br
- 200.135.37.123 - prji3.sj.ifsc.edu.br
Aula 1 - 4/2/15: Apresentação da disciplina |
---|
|
Aula 1 - 4/2/15: Revisão dos comandos básicos |
---|
Objetivo: Revisão dos comandos básicos, familiarização e fixação do conteúdo. Material Auxiliar (Comandos básicos 01) (Comandos básicos 02 ) ( Slides Aula Introdução ao Linux Tulio.)
Editor VI Objetivo: Familiarização com o editor e ser capaz de executar comandos simples, porém úteis para manipulação de arquivos.
|
Aula 2 - 6/2/15: Formatação, instalação e início da configuração do servidor principal |
---|
O objetivo inicial é instalar e configurar basicamente o sistema operacional na máquina que atuará como principal servidor da rede. Instalando o sistema operacionalAs etapas básicas consistem em:
Conferindo e aprendendo sobre instalação de pacotesSlide). Página oficial do apt-get É necessário estar com e rede funcional. Teste com o comando: ping www.ifsc.edu.br
Configuração básica da interface de rede
|
Aula 3 - 9/2/15: Permissões |
---|
Há uma maneira de restringir o acesso aos arquivos e diretórios para que somente determinados usuários possam acessá-los. A cada arquivo e diretório é associado um conjunto de permissões. Essas permissões determinam quais usuários podem ler, e escrever (alterar) um arquivo e, no caso de ser um arquivo executável, quais usuários podem executá-lo. Se um usuário tem permissão de execução para um diretório, significa que ele pode realizar buscas dentro daquele diretório, e não executá-lo como se fosse um programa. Quando um usuário cria um arquivo ou um diretório, o LINUX determina que ele é o proprietário (owner) daquele arquivo ou diretório. O esquema de permissões do LINUX permite que o proprietário determine quem tem acesso e em que modalidade eles poderão acessar os arquivos e diretórios que ele criou. O super-usuário (root), entretanto, tem acesso a qualquer arquivo ou diretório do sistema de arquivos. O conjunto de permissões é dividido em três classes: proprietário, grupo e usuários. Um grupo pode conter pessoas do mesmo departamento ou quem está trabalhando junto em um projeto. Os usuários que pertencem ao mesmo grupo recebem o mesmo número do grupo (também chamado de Group Id ou GID). Este número é armazenado no arquivo /etc/passwd junto com outras informações de identificação sobre cada usuário. O arquivo /etc/group contém informações de controle sobre todos os grupos do sistema. Assim, pode -se dar permissões de acesso diferentes para cada uma destas três classes. Quando se executa ls -l em um diretório qualquer, os arquivos são exibidos de maneira semelhante a seguinte: > ls -l total 403196 drwxr-xr-x 4 odilson admin 4096 Abr 2 14:48 BrOffice_2.1_Intalacao_Windows/ -rw-r--r-- 1 luizp admin 113811828 Out 31 21:28 broffice.org.2.0.4.rpm.tar.bz2 -rw-r--r-- 1 root root 117324614 Dez 27 14:47 broffice.org.2.1.0.rpm.tar.bz2 -rw-r--r-- 1 luizp admin 90390186 Out 31 22:04 BrOo_2.0.4_Win32Intel_install_pt-BR.exe -rw-r--r-- 1 root root 91327615 Jan 5 21:27 BrOo_2.1.0_070105_Win32Intel_install_pt-BR.exe > As colunas que aparecem na listagem são:
O esquema de permissões está dividido em 10 colunas, que indicam se o arquivo é um diretório ou não (coluna 1), e o modo de acesso permitido para o proprietário (colunas 2, 3 e 4), para o grupo (colunas 5, 6 e 7) e para os demais usuários (colunas 8, 9 e 10). Existem três modos distintos de permissão de acesso: leitura (read), escrita (write) e execução (execute). A cada classe de usuários você pode atribuir um conjunto diferente de permissões de acesso. Por exemplo, atribuir permissão de acesso irrestrito (de leitura, escrita e execução) para você mesmo, apenas de leitura para seus colegas, que estão no mesmo grupo que você, e nenhum acesso aos demais usuários. A permissão de execução somente se aplica a arquivos que podem ser executados, obviamente, como programas já compilados ou script shell. Os valores válidos para cada uma das colunas são os seguintes:
A permissão de acesso a um diretório tem outras considerações. As permissões de um diretório podem afetar a disposição final das permissões de um arquivo. Por exemplo, se o diretório dá permissão de gravação a todos os usuários, os arquivos dentro do diretório podem ser removidos, mesmo que esses arquivos não tenham permissão de leitura, gravação ou execução para o usuário. Quando a permissão de execução é definida para um diretório, ela permite que se pesquise ou liste o conteúdo do diretório. A modificação das permissões de acesso a arquivos e diretórios pode ser feita usando-se os utilitários:
Há também o utilitário umask, que define as permissões default para os novos arquivos e diretórios que um usuário criar. Esse utilitário define uma máscara (em octal) usada para indicar que permissões devem ser removidas. Exemplos:
Atividade
|
Aula 4 - 11/2/15: Aulas suspensas por falta de energia |
---|
Aula 5 - 23/2/15: Configurações no servidor principal |
---|
|
Aula 6 - 25/2/15: Configurações no servidor principal |
---|
|
Aula 7 - 2/3/15: Interfaces de rede e rotas estáticas |
---|
Apostila, capítulo 22. Interface de rede é qualquer dispositivo (físico ou lógico) capaz de transmitir e receber datagramas IP. Interfaces de rede ethernet são o exemplo mais comum, mas há também interfaces PPP (seriais), interfaces tipo túnel e interfaces loopback. De forma geral, essas interfaces podem ser configuradas com um endereço IP e uma máscara de rede, e serem ativadas ou desabilitadas. Em sistemas operacionais Unix a configuração de interfaces de rede se faz com o programa ifconfig: Para mostrar todas as interfaces: root@gerencia:~> ifconfig -a
dsl0 Link encap:Point-to-Point Protocol
inet addr:189.30.70.200 P-t-P:200.138.242.254 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
RX packets:34260226 errors:0 dropped:0 overruns:0 frame:0
TX packets:37195398 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:19484812547 (18582.1 Mb) TX bytes:10848608575 (10346.0 Mb)
eth1 Link encap:Ethernet HWaddr 00:19:D1:7D:C9:A9
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:37283974 errors:0 dropped:0 overruns:0 frame:0
TX packets:42055625 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:20939614658 (19969.5 Mb) TX bytes:18284980569 (17437.9 Mb)
Interrupt:16 Base address:0xc000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:273050 errors:0 dropped:0 overruns:0 frame:0
TX packets:273050 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:21564572 (20.5 Mb) TX bytes:21564572 (20.5 Mb)
root@gerencia:~>
Para configurar uma interface de rede (que fica automaticamente ativada): root@gerencia:~> ifconfig eth1 192.168.1.100 netmask 255.255.255.0
Os scripts ifup e ifdown servem para ativar ou parar interfaces específicas, fazendo todas as operações necessárias para isto: # Desativam e ativam todas as interfaces de rede
ifdown -a && ifup -a
Ao se configurar uma interface de rede, cria-se uma rota automática para a subrede diretamente acessível via aquela interface. Isto se chama roteamento mínimo. root@gerencia:~> ifconfig eth1 192.168.10.0 netmask 255.255.0.0
root@gerencia:~> netstat -rn (ou: route -n)
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
root@gerencia:~>
Pode-se associar mais de um endereço a uma mesma interface de rede. Isto se chama IP alias: root@gerencia:~> ifconfig eth1:0 192.168.1.110 netmask 255.255.255.0
root@gerencia:~> ifconfig eth1:1 192.168.2.100 netmask 255.255.255.0
root@gerencia:~> ifconfig -a
eth1 Link encap:Ethernet HWaddr 00:19:D1:7D:C9:A9
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:37295731 errors:0 dropped:0 overruns:0 frame:0
TX packets:42068558 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:20942258027 (19972.0 Mb) TX bytes:18294794452 (17447.2 Mb)
Interrupt:16 Base address:0xc000
eth1:0 Link encap:Ethernet HWaddr 00:19:D1:7D:C9:A9
inet addr:192.168.1.110 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:16 Base address:0xc000
eth1:1 Link encap:Ethernet HWaddr 00:19:D1:7D:C9:A9
inet addr:192.168.2.100 Bcast:192.168.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:16 Base address:0xc000
root@gerencia:~>
Configuração no bootTodo sistema operacional possui alguma forma de configurar suas interfaces de rede, para que sejam automaticamente ativadas no boot com seus endereços IP. Por exemplo, em sistemas Linux Ubuntu (descrito em maiores detalhes em seu manual online). A configuração de rede se concentra no arquivo /etc/network/interfaces: # This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo eth1
iface lo inet loopback
address 127.0.0.1
netmask 255.0.0.0
# a interface ethernet eth1
iface eth1 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.254
dns-nameservers 200.135.37.65
# apelido para eth1
iface eth1:0 inet static
address 192.168.5.100
netmask 255.255.255.0
Para ativar, desativar ou recarregar as configurações de todas as interfaces de rede: # Desativam e ativam todas as interfaces de rede
ifdown -a && ifup -a
Rotas estáticasVer capítulo 23 da apostila. Rotas estáticas podem ser adicionadas a uma tabela de roteamento. Nos sistemas operacionais Unix, usa-se o programa route: # adiciona uma rota para a rede 10.0.0.0/24 via o gateway 192.168.1.254
route add -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.1.254
# adiciona uma rota para a rede 172.18.0.0/16 via a interface PPP pp0
route add -net 172.18.0.0 netmask 255.255.0.0 dev ppp0
# adiciona a rota default via o gateway 192.168.1.254
route add -net default gw 192.168.1.254
# adiciona uma rota para o host 192.168.1.101 via o gateway 192.168.1.253
route add -host 192.168.1.101 gw 192.168.1.253
Para configurar a máquina para repassar pacotes entre as interfaces (rotear) deve-se setar o bit do ip_forward, com o comando: echo 1 > /proc/sys/net/ipv4/ip_forward A tabela de rotas pode ser consultada com o programa netstat: root@gerencia:~> netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
10.0.0.0 192.168.1.254 255.255.255.0 U 0 0 0 eth1
192.168.1.101 192.168.1.253 255.255.255.0 UH 0 0 0 eth1
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 ppp0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 192.168.1.254 0.0.0.0 U 0 0 0 eth1
Rotas podem ser removidas também com route: # remove a rota para 10.0.0.0/24
route delete -net 10.0.0.0 netmask 255.255.255.0
# remove a rota para o host 192.168.1.101
route delete -host 192.168.1.101
Coleta e análise de tráfegoUma ferramenta básica de análise de tráfego de rede faz a coleta das PDUs por interfaces de rede, revelando as informações nelas contidas. Dois programas bastante populares para essa finalidade são:
Outros programas úteis (ou ao menos interessantes):
NATA tradução de endereço de rede (NAT - Network Address Translation), proposta pela RFC 1631 em 1994, é uma função de rede criada para contornar o problema da escassez de endereços IP. Com a explosão no crescimento da Internet, e o mau aproveitamento dos endereços IP (agravado pelo endereçamento hierárquico), percebeu-se que o esgotamento de endereços poderia ser logo alcançado a não ser que algumas medidas fossem tomadas. Esse problema somente seria eliminado com a reformulação do protocolo IP, de forma a aumentar o espaço de endereços, que resultou na proposta do IPv6 em 1998. Porém no início dos anos 1990 a preocupação era mais imediata, e pensou-se em uma solução provisória para possibilitar a expansão da rede porém reduzindo-se a pressão por endereços IP. O NAT surgiu assim como uma técnica com intenção de ser usada temporariamente, enquanto soluções definitivas não se consolidassem. Ainda hoje NAT é usado em larga escala, e somente deve ser deixado de lado quando IPv6 for adotado mundialmente (o que deve demorar). NAT parte de um princípio simples: endereços IP podem ser compartilhados por nodos em uma rede. Para isto, usam-se endereços IP ditos não roteáveis (também chamados de inválidos) em uma rede, sendo que um ou mais endereços IP roteáveis (válidos) são usados na interface externa roteador que a liga a Internet. Endereços não roteáveis pertencem às subredes 10.0.0.0/8, 192.168.0.0/16 e 172.16.0.0/12, e correspondem a faixas de endereços que não foram alocados a nenhuma organização e, portanto, não constam das tabelas de roteamento dos roteadores na Internet. A figura abaixo mostra uma visão geral de uma rede em que usa NAT: Para ser possível compartilhar um endereço IP, NAT faz mapeamentos (IP origem, port origem, protocolo transporte) -> (IP do NAT, port do NAT, , protocolo transporte), sendo protocolo de transporte TCP ou UDP. Assim, para cada par (IP origem, port origem TCP ou UDP) o NAT deve associar um par (IP do NAT, port do NAT TCP ou UDP) (que evidentemente deve ser único). Assim, por exemplo, se o roteador ou firewall onde ocorre o NAT possui apenas um endeerço IP roteável, ele é capaz em tese de fazer até 65535 mapeamentos para o TCP (essa é a quantidade de ports que ele pode possui), e o mesmo para o UDP. Na prática é um pouco menos, pois se limitam os ports que podem ser usados para o NAT. Note que o NAT definido dessa forma viola a independência entre camadas, uma vez que o roteamento passa a depender de informação da camada de transporte. NAT no LinuxVer capítulo 35, seção 4, da apostila. O NAT no Linux se configura com iptables. As regras devem ser postas na tabela nat, e aplicadas a chain POSTROUTING, como no seguinte exemplo: iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE ;Habilita o NAT
iptables -t nat -L ;Lista as atuais regras da tabela NAT
A regra acima faz com que todo o tráfego originado em 192.168.1.0/24, e que sai pela interface eth0 deve ser mascarado com o endereço IP dessa interface. Esta regra diz o seguinte: todos os pacotes que passarem (POSTROUTING) por esta máquina com origem de 192.168.1.0/24 e sairem pela interface eth0 serão mascarados, ou seja sairão desta máquina com o endereço de origem como sendo da eth0. O alvo MASQUERADE foi criado para ser usado com links dinâmicos (tipicamente discados ou ADSL), pois os mapeamentos se perdem se o link sair do ar. AtividadeA) Configurar interface de rede
B) Coleta de tráfego
C) Tabelas estáticas de roteamento
D) NAT
|
Aula 8 - 4/3/15: Interfaces de rede e rotas estáticas |
---|
Aula 9 - 9/3/15: NAT e Apache |
---|
Execute o roteiro do NAT. Ver capítulo 26 da apostila. O servidor Apache (Apache server) é o mais bem sucedido servidor web livre. Foi criado em 1995 por Rob McCool, então funcionário do NCSA (National Center for Supercomputing Applications), Universidade de Illinois. Ele descende diretamente do NCSA httpd, um servidor web criado e mantido por essa organização. Seu nome vem justamente do reaproveitamento do NCSA httpd (e do fator de tê-lo tornado modular) fazendo um trocadilho com a expressão "a patchy httpd (um httpd remendável). Para ter ideia de sua popularidade, em maio de 2010, o Apache serviu aproximadamente 54,68% de todos os sites e mais de 66% dos milhões de sites mais movimentados. O servidor é compatível com o protocolo HTTP versão 1.1. Suas funcionalidades são mantidas através de uma estrutura de módulos, podendo inclusive o usuário escrever seus próprios módulos — utilizando a API do software. É disponibilizado em versões para os sistemas Windows, Novell Netware, OS/2 e diversos outros do padrão POSIX (Unix, GNU/Linux, FreeBSD, etc). Um servidor web é capaz de atender requisições para transferência de documentos. Essas requisições são feitas com o protocolo HTTP (HyperText Transfer Protocol), e se referem a documentos que podem ser de diferentes tipos. Uma requisição HTTP simples é mostrada abaixo: GET / HTTP/1.1 Host: www.ifsc.edu.br
Para o servidor Web, os principais componentes de uma requisição HTTP são o método HTTP a executar e o localizador do documento a ser retornado (chamado de URI - Uniform Resource Indicator). No exemplo acima, a requisição pede o método GET aplicado à URI /. O resultado é composto do status do atendimento, cabeçalhos informativos e o conteúdo da resposta. No exemplo, o status é a primeira linha (HTTP/1.1 200 OK), com os cabeçalhos logo a seguir. Os cabeçalhos terminam ao aparecer uma linha em branco, e em seguida vem o conteúdo (ou corpo) da resposta. Todo documento possui um especificador de tipo de conteúdo, chamado de Internet media Type. O cabeçalho de resposta Content-type indica o media type, para que o cliente HTTP (usualmente um navegador web) saiba como processá-lo. No exemplo acima, o documento retornado é do tipo text/html, o que indica ser um texto HTML. Outros possíveis media types são: text/plain (texto simples), application/pdf (um texto PDF), application/x-gzip (um conteúdo compactado com gzip). Um documento no contexto do servidor web é qualquer conteúdo que pode ser retornado como resposta a uma requisição HTTP. No caso mais simples, um documento corresponde a um arquivo em disco, mas também podem ser gerados dinamicamente. Existem diversas tecnologias para gerar documentos, tais como PHP, JSP, ASP, CGI, Python, Perl, Ruby, e possivelmente outras. Todas se caracterizam por uma linguagem de programação integrada intimamente ao servidor web, obtendo dele informação sobre como gerar o conteúdo da resposta. Atualmente, boa parte dos documentos que compõem um site web são gerados dinamicamente, sendo PHP, JSP e ASP as tecnologias mais usadas. Informações gerais sobre Apache no Ubuntu
Uma configuração básicaO servidor Apache precisa de algumas informações básicas para poder ativar um site:
No exemplo abaixo, define-se um servidor WWW chamado www.prj.edu.br, que atende requisições no ports 8080.
|
Aula 10 - 11/3/15: NAT e Apache |
---|
|
16/3/15: Não houve aulas. Atestado médico |
---|
Aula 11 - 18/3/15: Integração das imagens da webcam com o Apache |
---|
Opcões: |
Aula 12 - 23/3/15: DNS | ||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Ver capítulo 25 da apostila. DNS (Domain Name System) é uma base de dados distribuída e hierárquica. Nela se armazenam informações para mapear nomes de máquinas da Internet para endereços IP e vice-versa, informação para roteamento de email, e outros dados utilizados por aplicações da Internet. A informação armazenada no DNS é identificada por nomes de domínio que são organizados em uma árvore, de acordo com as divisões administrativas ou organizacionais. Cada nodo dessa árvore, chamado de domínio, possui um rótulo. O nome de domínio de um nodo é a concatenação de todos os rótulos no caminho do nodo até a raiz. Isto é representado como uma string de rótulos listados da direita pra esquerda e separados por pontos (ex: ifsc.edu.br, sj.ifsc.edu.br). Um rótulo precisa ser único somente dentro do domínio pai a que pertence. Por exemplo, um nome de domínio de uma máquina no IFSC pode ser mail.ifsc.edu.br., em que o "." (último) significa o root level domain .br é o domínio do topo da hierarquia (no Brasil feito em [1])ao qual mail.sj.ifsc.edu.br pertence. .ifsc.edu é um subdomínio de .br., e mail o nome da máquina em questão. Por razões administrativas, o espaço de nomes é dividido em áreas chamadas de zonas, cada uma iniciando em um nodo e se estendendo para baixo para os nodos folhas ou nodos onde outras zonas iniciam. Os dados de cada zona são guardados em um servidor de nomes, que responde a consultas sobre uma zona usando o protocolo DNS. Clientes buscam informação no DNS usando uma biblioteca de resolução (resolver library), que envia as consultas para um ou mais servidores de nomes e interpreta as respostas. (tirado do manual do BIND9) Ver também o livro sobre DNS e BIND da O'Reilly. Registros DNSCada rótulo na hierarquia DNS possui um conjunto de informações associadas a si. Essas informações são guardas em registros de diferentes tipos, dependendo de seu significado e propósito. Cada consulta ao DNS retorna assim as informações do registro pedido associado ao rótulo. Por exemplo, para ver o registro de endereço IP associado a www.ifsc.edu.br pode-se executar esse comando (o resultado teve alguns comentários removidos): root@freeman:~$ dig sj.ifsc.edu.br mx
;; QUESTION SECTION:
;sj.ifsc.edu.br. IN MX
;; ANSWER SECTION:
sj.ifsc.edu.br. 3600 IN MX 10 hendrix.sj.ifsc.edu.br.
;; AUTHORITY SECTION:
sj.ifsc.edu.br. 3600 IN NS ns.pop-udesc.rct-sc.br.
sj.ifsc.edu.br. 3600 IN NS ns.pop-ufsc.rct-sc.br.
sj.ifsc.edu.br. 3600 IN NS hendrix.sj.ifsc.edu.br.
;; ADDITIONAL SECTION:
hendrix.sj.ifsc.edu.br. 3600 IN A 200.135.37.65
ns.pop-ufsc.rct-sc.br. 11513 IN A 200.135.15.3
ns.pop-udesc.rct-sc.br. 37206 IN A 200.135.14.1
Cada uma das informações acima mostra um determinado registro e seu conteúdo, como descrito na tabela abaixo:
Obs: TTL (Time To Live) é o tempo de validade (em segundos) da informação retornada do servidor de nomes, e classe é o tipo de endereço (no caso IN equivale a endereços Internet). Os tipos de registros mais comuns são:
Uma zona assim é composta de um conjunto de registros com todas as informações dos domínios nela contidos. O conteúdo de uma zona, contendo o domínio example.com, pode ser visualizado abaixo: example.com 86400 IN SOA ns1.example.com. hostmaster.example.com. (
2002022401 ; serial
10800 ; refresh
15 ; retry
604800 ; expire
10800 ; minimum
)
IN NS ns1.example.com.
IN NS ns2.smokeyjoe.com.
IN MX 10 mail.another.com.
IN TXT "v=spf1 mx -all"
ns1 IN A 192.168.0.1
www IN A 192.168.0.2
ftp IN CNAME www.example.com.
bill IN A 192.168.0.3
fred IN A 192.168.0.4
AtividadeO objetivo é montar a seguinte estrutura: Vamos configurar e testar um servidor DNS. Para tanto montaremos a estrutura indicada no diagrama, onde cada máquina será um servidor DNS, com um domínio próprio e, ao mesmo tempo, será cliente do servidor DNS da máquina 192.168.2.101. Esta, por sua vez, será servidor: um servidor master do domínio redes.edu.br e servidor escravo, recebendo automaticamente uma cópia das zonas dos servidores masters, de todos os demais domínios criados. Esta, será também a única máquina com servidor DNS com zona reversa. Sendo assim todos os domínios, diretos e reversos, serão visíveis por meio deste servidor.
|
25/3/15: Não houve aulas. Atestado médico |
---|
Aula 13 - 30/3/15: Servidor de correio eletrônico - Postfix |
---|
Ver capítulo 27 da apostila. O correio eletrônico (email) é um dos principais serviços na Internet. De fato foi o primeiro serviço a ser usado em larga escala. Trata-se de um método para intercâmbio de mensagens digitais. Os sistemas de correio eletrônico se baseiam em um modelo armazena-e-encaminha (store-and-forward) em que os servidores de email aceitam, encaminham, entregam e armazenam mensagens de usuários. Uma mensagem de correio eletrônico se divide em duas partes:
From: Roberto de Matos <roberto@eel.ufsc.br>
Content-Type: text/plain;
charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable
X-Smtp-Server: smtp.ufsc.br:roberto.matos@posgrad.ufsc.br
Subject: =?iso-8859-1?Q?Teste_Ger=EAncia?=
Message-Id: <0595A764-EEAE-41E7-99F0-80DC11FB5327@eel.ufsc.br>
X-Universally-Unique-Identifier: 684c3833-bbbe-420b-8b66-d92d9a419bc0
Date: Wed, 20 Nov 2013 11:36:35 -0200
To: Roberto de Matos <roberto.matos@ifsc.edu.br>
Mime-Version: 1.0 (Mac OS X Mail 6.6 \(1510\))
Ol=E1 Pessoal,
Hoje vamos aprender o funcionamento do Email!!
Abra=E7o,
Roberto=
Na mensagem acima, os cabeçalhos são as linhas iniciais. Os cabeçalhos terminam quando aparece uma linha em branco, a partir de que começa o corpo da mensagem. Funcionamento do emailOs componentes da infraestrutura de email são:
A figura abaixo ilustra uma infraestrutura de email típica. Os protocolos envolvidos são:
EndereçamentoEndereços de email estão intimamente ligados ao DNS. Cada usuário de email possui um endereço único mundial, definido por um identificador de usuário e um domínio de email, escritos usando-se o símbolo especial @ (lê-se at, do original em inglês) para conectá-los: tele@ifsc.edu.br Nesse exemplo, o identificador de usuário é tele, e o domínio é ifsc.edu.br. Os domínios de email tem correspondência direta com domínios DNS. De fato, para criar um domínio de email deve-se primeiro criá-lo no DNS. Além disto, o domínio DNS deve ter associado a si um ou mais registros MX (Mail exchanger) para apontar os MTAs responsáveis por receber emails para o domínio. Por exemplo, o domínio DNS ifsc.edu.br possui esse registro MX: > dig ifsc.edu.br mx
;; QUESTION SECTION:
;ifsc.edu.br. IN MX
;; ANSWER SECTION:
ifsc.edu.br. 3581 IN MX 5 hermes.ifsc.edu.br.
... e o domínio gmail.com: > dig gmail.com mx
;; QUESTION SECTION:
;gmail.com. IN MX
;; ANSWER SECTION:
gmail.com. 3600 IN MX 20 alt2.gmail-smtp-in.l.google.com.
gmail.com. 3600 IN MX 30 alt3.gmail-smtp-in.l.google.com.
gmail.com. 3600 IN MX 40 alt4.gmail-smtp-in.l.google.com.
gmail.com. 3600 IN MX 5 gmail-smtp-in.l.google.com.
gmail.com. 3600 IN MX 10 alt1.gmail-smtp-in.l.google.com.
MTA PostfixO primeiro software MTA usado em larga escala na Internet foi o sendmail. Esse MTA possui muitas funcionalidades, e enfatiza a flexibilidade em sua configuração. No entanto, configurá-lo e ajustá-lo não é tarefa fácil. Além disto, houve vários problemas de segurança no passado envolvendo esse software. Assim outras propostas surgiram, como qmail e postfix. Tanto qmail quanto postfix nasceram como projetos preocupados com a segurança nas operações de um MTA, e também se apresentaram como MTAs mais simples de configurar e operar. Em nossas aulas será usado o postfix, mas recomenda-se experimentar usar as outras duas opcões citadas. O postfix é um MTA modularizado, que divide as tarefas de processamento das mensagens em diversos componentes que rodam como processos separados. Isto difere bastante do sendmail, que se apresenta como um software monolítico. No postfix, um conjunto de subsistemas cuida de processar cada etapa da recepção ou envio de uma mensagem, como mostrado na figura abaixo: ConfiguraçãoA configuração do postfix é armazenada em arquivos, que normalmente residem no diretório /etc/postfix. Os dois principais são:
No Ubuntu deve-se iniciar o uso do Postfix com esses comandos: apt-get install -y postfix
# O comando abaixo deve ser usado se o postfix já foi instalado, mas deseja-se recriar sua configuração
dpkg-reconfigure postfix
As configurações iniciais informadas na instalação são suficientes para que o postfix possa ser iniciado. No entanto muitos detalhes provavelmente precisarão ser ajustados para que ele opere como desejado. Para um rápido teste do postfix pode-se fazer a sequência abaixo: > sudo service postfix restart
> telnet localhost 25
220 ger ESMTP postfix (Ubuntu)
helo mail
250 ger
mail from: aluno@ifsc.edu.br
250 2.1.0 OK
rcpt to: postmaster@ger.edu.br
250 2.1.5 OK
data
354 End data with <CR><LF>.<CR><LF>
subject: Teste
blabla
.
250 2.0.0 OK: queued as 71259CCA3
quit
221 2.0.0 Bye
Connection closed by foreign host
>
O resultado do teste (a mensagem entreguepara o usuário postmaster) pode ser visto no arquivo de log do postfix. No Ubuntu esse arquivo é /var/log/mail.log : > tail /var/log/mail.log
May 2 17:29:42 ger postfix/smtpd[1965]: 71259CCA3: client=localhost[127.0.0.1]
May 2 17:30:48 ger postfix/cleanup[1970]: 71259CCA3: message-id=<20100502202942.71259CCA3@ger>
May 2 17:30:48 ger postfix/qmgr[1894]: 71259CCA3: from=<aluno@ifsc.edu.br>, size=323, nrcpt=1 (queue active)
May 2 17:30:48 ger postfix/local[1972]: 71259CCA3: to=<root@ger.edu.br>, orig_to=<postmaster@ger.edu.br>, relay=local, delay=102, delays=102/0.05/0/0.03, dsn=2.0.0, status=sent (delivered to mailbox)
May 2 17:30:48 ger postfix/qmgr[1894]: 71259CCA3: removed
May 2 17:31:25 ger postfix/smtpd[1965]: disconnect from localhost[127.0.0.1]
>
A mensagem de teste foi entregue em /var/mail/root: > sudo cat /var/mail/root
From aluno@ifsc.edu.br Sun May 2 17:30:48 2010
Return-Path: <aluno@ifsc.edu.br>
X-Original-To: postmaster@ger.edu.br
Delivered-To: postmaster@ger.edu.br
Received: from mail (localhost [127.0.0.1])
by ger (Postfix) with SMTP id 71259CCA3
for <postmaster@ger.edu.br>; Sun, 2 May 2010 17:29:06 -0300 (BRT)
Subject: teste
Message-Id: <20100502202942.71259CCA3@ger>
Date: Sun, 2 May 2010 17:29:06 -0300 (BRT)
From: aluno@ifsc.edu.br
To: undisclosed-recipients:;
blabla
Outra maneira para testar e um pouco mais amigável é utilizar a ferramenta mail. Instale o pacote: apt-get install mailutils Para enviar uma mensagem proceda do seguinte modo:
|
Aula 14 - 1/4/15: Webmail |
---|
O objetivo é instalar o Webmail RoundCube. Pré-requisitos: DNS e Postfix rodando. Pré-configuração:
Assim pode-se usar este terminal para configurar seu servidor. Neste terminal é possível usar os comando copy (CTRL + SHIFT + C) e paste (CTRL + SHIFT + V).
|
Aula 15 - 6/4/15: Zoneminder e DHCP |
---|
A ferramenta ZoneMinderpermite integrar o monitoramento de câmeras com o Apache Server. ZoneMinder é destinado para uso em aplicações de segurança de vídeo simples ou multi-câmera, incluindo CCTV comercial ou caseiras, como prevenção de roubo e monitoramento de filhos, membros da família ou acompanhamento em casa e outros cenários de cuidados domésticos, como instalações de monitoramento de babás. Ele suporta captura, análise, registro e monitoramento de dados de vídeo provenientes de uma ou mais câmeras de vídeo ou de rede ligados a um sistema Linux. ZoneMinder também pode apoiar no controle de câmeras web, usando uma variedade de protocolos. É apropriado para o uso como um sistemas de segurança de vídeo em casa e para a segurança de vídeo comercial ou profissional e vigilância. Para instalar e configurar essa ferramenta no ubuntu 14.04 deve-se seguir os passos, que também mostrará a sequência para configuração e funcionamento de uma câmera Intelbras.
|
Aula 16 - 8/4/15: SNMP e Cacti |
---|
SNMP Ver capítulo 39 da apostila. Mais detalhes podem obtidos em SNMP.
|
Aula 17 - 13/4/15: Preparação para avaliação e SNMP |
---|
Aula 18 - 15/4/15: Avaliação |
---|
|
Lista de Exercícios |
---|
1. Descreva o processo de resolução de nomes para o acesso à uma máquina remota (outro país), nunca antes acessada através de sua rede local. 2. Explique a importância/vantagem da base do DNS apresentar diversos níveis hierárquicos. 3. Em resumo, o que é um serviço de resolução de nomes (DNS)? 4. O que, em essência, é o servidor Apache. 5. Descreva todos os processos, programas e protocolos utilizados no envio de uma mensagem de correio eletrônico, desde a sua origem (escrita) até o destino (leitura). 6. Questões 1, 2, 4 6 e 7 do [2] |
Aula 19 - 22/4/15: SNMP |
---|
Aula 20 - 27/4/15: Sistema de arquivos e reinstalação do servidor |
---|
Material para consulta: Gerência de Redes páginas 51 a 57. (Slide Prof. Glauco [3]) Comandos importantes:cfdisk: aplicativo para particionamento de discos. Ex: cfdisk /dev/sdb. Obs.: clique em Gravar ao final. mkfs.ext4: formata uma determinada partição com o sistema de arquivos do tipo ext4. Ex: mkfs.ext4 /dev/sdb1. mount: monta partição. Ex: mount /dev/sdb1 /dados. umount: desmonta partição. Ex: umount /dados. df: mostra as partições montadas e seus pontos (diretórios) de montagem. Ex: df -h No Ubuntu o tipo de padrão de arquivos mudou de relatime (apostila) para defaults. Portanto, sempre que se ver relatime na apostila leia-se defaults. Roteiro de atividades
|
Aula 21 - 29/4/15: Configurações no servidor |
---|
|
Aula 22 - 4/5/15: Configurações no servidor (cont.) |
---|
|
Aula 24 - 6/5/15: Configurações no servidor (cont.) |
---|
|
Aula 25 - 11/5/15: Aulas suspensas - somente 2 alunos compareceram devido as fortes chuvas |
---|
Aula 26 - 13/5/15: Configurações no servidor (cont.) |
---|
Deixar DNS, Webmail e Apache plenamente funcionais. Estudar iptables e Firewall Builder |
Aula 27 - 18/5/15: Firewall |
---|
webmail.prjiX.sj.ifsc.edu.br
|
Aula 28 - 20/5/15: Ajustes no servidor - Postfix, NTPdate, DNS |
---|
NTPdate. Serviço para sincronização do relógio.
|
Aula 29 - 25/5/15: Ajustes no servidor -- Firewall |
---|
Firewall Ver capítulo 35 da apostila. Configuração para ser feita individualmente nas máquinas virtuais.
|
Aula 30 - 27/5/15: Ajustes no servidor -- Firewall (cont.) |
---|
Aula 31 - 1/6/15: Ajustes no servidor -- Firewall Builder |
---|
|
Aula 32 - 3/6/15: Protocolo de roteamento RIP |
---|
Já vimos em momentos anteriores as tabelas estáticas de roteamento. Esse tipo de configuração é útil para pequenas redes e quando não há caminhos redundantes para o tráfego de pacotes. Com protocolos de roteamento dinâmicos da Internet como o protocolo RIP (Routing Information Protocol) e OSPF (Open Shortest Path First), as tabelas de repasse dos roteadores são construídas dinamicamente por esses protocolos e, portanto, podem reagir, por exemplo, a quedas de enlaces. Em redes reais, com equipamentos reais, esses protocolos são rodados nos roteadores especializados, os quais trocam informações entre si, através do protocolo ICMP, para construção das tabelas baseadas no melhor caminho dentre os possíveis. Para simular um situação próxima ao real utilizaremos o Netkit2. Leia o tutorial de como o Netkit2 trabalha com roteadores. Em todos os experimentos será utilizado como base a seguinte arquitetura de rede:
|
Aula 33 - 8/6/15: Protocolo de roteamento RIP (Cont.) e Radius |
---|
RadiusO RADIUS (Remote Authentication Dial In User Service) é uma ferramenta utilizada para a autenticação de usuários seja na rede cabeada ou na rede sem fio. Pode ser utilizado com um banco de dados LDAP, para que o mesmo busque usuário e senha ou pode-se usar o arquivo de texto users da mesma forma determinando usuário e senha. Utilizaremos o arquivo de texto users devido a facilidade de implementar. Procedimento no AP (Access Point) Edimax:
|
Aula 34 - 10/6/15: Radius (cont.) |
---|
Aula 35 - 15/6/15: Dúvidas |
---|
Aula 36 - 17/6/15: Segunda avaliação |
---|
SNMP, Cacti, Firewall, RIP e Radius. Perguntas teóricas:
|
Aula 38 - 22/6/15: Avaliação individual sobre o projeto |
---|
Aula 39 - 24/6/15: Avaliação individual sobre o projeto |
---|
Aula 40 - 29/6/15: Reavaliação final |
---|
Aula 41 - 1/7/15: |
---|