Mudanças entre as edições de "Gerência de Redes de Computadores (técnico) (diário 2010-2)"
(114 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 105: | Linha 105: | ||
} | } | ||
</graphviz></center> | </graphviz></center> | ||
+ | Legenda: | ||
+ | * <font color=blue>Azul</font>: redes entre estações e roteador. | ||
+ | * <font color=red>Vermelho</font>: rede entre roteadores. | ||
==18/08: Simulado de prova== | ==18/08: Simulado de prova== | ||
Linha 136: | Linha 139: | ||
=Serviços em rede= | =Serviços em rede= | ||
− | Comandos úteis para monitoramento de serviços e portas "abertas": | + | * Catálogo de protocolos conhecidos: arquivo <tt>[http://focalinux.cipsga.org.br/guia/avancado/ch-rede.htm#s-rede-outros-protocols /etc/protocols]</tt>. |
+ | * Catálogo de serviços conhecidos (''[http://www.iana.org/assignments/port-numbers well known ports]''): arquivo <tt>[http://focalinux.cipsga.org.br/guia/avancado/ch-rede.htm#s-rede-outros-services /etc/services]</tt>. | ||
+ | * Comandos úteis para monitoramento de serviços e portas "abertas": | ||
<syntaxhighlight lang=bash> | <syntaxhighlight lang=bash> | ||
− | + | netstat -lnut | |
− | + | lsof -n | grep <porta> | |
− | + | fuser -v -n tcp <porta> | |
− | + | fuser -v -n udp <porta> | |
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | Assumindo o S.O. Ubuntu Linux: | ||
+ | <center> | ||
+ | {| border=1 | ||
+ | |- | ||
+ | | '''Serviço''' || '''Porta/Protocolo''' || '''Programa principal''' || '''Arquivo de configuração principal''' || '''Arquivo de Registro''' | ||
+ | |- | ||
+ | | [[#NTP|NTP]] || 123/UDP || <tt>/usr/sbin/ntpd</tt> || <tt>/etc/ntp.conf</tt> || <tt>/var/log/syslog</tt> | ||
+ | |- | ||
+ | | [[#Cron|Cron]] || (serviço local) || <tt>/usr/sbin/cron</tt> || <tt>/etc/crontab</tt> || <tt>/var/log/syslog</tt> | ||
+ | |- | ||
+ | | [[#Syslog|Syslog]] || 514/UDP || <tt>/usr/sbin/rsyslogd</tt> || <tt>/etc/rsyslog.conf</tt> || <tt>/var/log/messages</tt> | ||
+ | |- | ||
+ | | [[#01/09: DHCP|DHCP]] || 67/UDP || <tt>/usr/sbin/dhcpd</tt> || <tt>/etc/dhcp3/dhcpd.conf</tt> || <tt>/var/log/syslog</tt> | ||
+ | |- | ||
+ | | [[#13/09: DNS|DNS]] || 53/UDP || <tt>/usr/sbin/named</tt> || <tt>/etc/bind/named.conf</tt> || <tt>/var/log/daemon.log</tt> | ||
+ | |- | ||
+ | | [[#12/04: SMB|SMB]] || 137/UDP, 138/UDP, 139/TCP, 445/TCP || <tt>/usr/sbin/smbd</tt>, <tt>/usr/sbin/nmbd</tt> || <tt>/etc/samba/smb.conf</tt> || <tt>/var/log/samba/log.smbd</tt>, <tt>/var/log/samba/log.nmbd</tt> | ||
+ | |- | ||
+ | | [[#14/04: HTTP|HTTP]] || 80/TCP, 443/TCP || <tt>/usr/sbin/apache2</tt> || <tt>/etc/apache2/apache2.conf</tt> || <tt>/var/log/apache2/access.log</tt> | ||
+ | |- | ||
+ | | [[#SMTP|SMTP]] || 25/TCP || <tt>/usr/lib/postfix/master</tt> || <tt>/etc/postfix/main.cf</tt> || <tt>/var/log/mail.log</tt> | ||
+ | |- | ||
+ | | [[#IMAP|IMAP]] || 143/TCP || <tt>/usr/lib/dovecot/imap</tt> || || <tt>/var/log/auth.log</tt> | ||
+ | |} | ||
+ | </center> | ||
==30/08: Serviços de sistema e relógio== | ==30/08: Serviços de sistema e relógio== | ||
+ | ===NTP=== | ||
* Sincronização do relógio com [http://ntp.br NTP]. | * Sincronização do relógio com [http://ntp.br NTP]. | ||
+ | |||
+ | ===Cron=== | ||
* Agendamento de tarefas com [http://focalinux.cipsga.org.br/guia/inic_interm/ch-manut.html#s-manut-cron cron]. | * Agendamento de tarefas com [http://focalinux.cipsga.org.br/guia/inic_interm/ch-manut.html#s-manut-cron cron]. | ||
+ | |||
+ | ===Syslog=== | ||
* Registro de eventos, ou ''logs'', através do [http://focalinux.cipsga.org.br/guia/inic_interm/ch-log.html syslog]. | * Registro de eventos, ou ''logs'', através do [http://focalinux.cipsga.org.br/guia/inic_interm/ch-log.html syslog]. | ||
Obs.: a documentação do Foca Linux, guia de referência, está baseada na distribuição Debian GNU/Linux, ligeiramente diferente do Ubuntu Linux usado em aula; contudo, há equivalência entre ambos em praticamente todo o conteúdo abordado neste curso, como por exemplo o caso dos ''daemons'' <tt>syslogd</tt> e <tt>klogd</tt> e o <tt>rsyslogd</tt>. | Obs.: a documentação do Foca Linux, guia de referência, está baseada na distribuição Debian GNU/Linux, ligeiramente diferente do Ubuntu Linux usado em aula; contudo, há equivalência entre ambos em praticamente todo o conteúdo abordado neste curso, como por exemplo o caso dos ''daemons'' <tt>syslogd</tt> e <tt>klogd</tt> e o <tt>rsyslogd</tt>. | ||
− | |||
− | |||
==01/09: DHCP== | ==01/09: DHCP== | ||
Linha 176: | Linha 210: | ||
* Instalação e configuração: | * Instalação e configuração: | ||
<syntaxhighlight lang=bash> | <syntaxhighlight lang=bash> | ||
− | + | aptitude install dhcp3-server | |
− | + | vi /etc/dhcp3/dhcpd.conf | |
</syntaxhighlight> | </syntaxhighlight> | ||
Linha 211: | Linha 245: | ||
* Monitoramento do serviço: | * Monitoramento do serviço: | ||
<syntaxhighlight lang=bash> | <syntaxhighlight lang=bash> | ||
− | + | tail -f /var/log/syslog & | |
− | + | tail -f /var/lib/dhcp3/dhcpd.leases & | |
</syntaxhighlight> | </syntaxhighlight> | ||
* Aplicação dos valores (do arquivo): | * Aplicação dos valores (do arquivo): | ||
<syntaxhighlight lang=bash> | <syntaxhighlight lang=bash> | ||
− | + | /etc/init.d/dhcp3-server restart | |
</syntaxhighlight> | </syntaxhighlight> | ||
Linha 225: | Linha 259: | ||
* Instalação e configuração: | * Instalação e configuração: | ||
<syntaxhighlight lang=bash> | <syntaxhighlight lang=bash> | ||
− | + | aptitude install dhcp3-client | |
− | + | vi /etc/network/interfaces | |
</syntaxhighlight> | </syntaxhighlight> | ||
Linha 240: | Linha 274: | ||
* Aplicação dos valores (do arquivo): | * Aplicação dos valores (do arquivo): | ||
<syntaxhighlight lang=bash> | <syntaxhighlight lang=bash> | ||
− | + | /etc/init.d/networking restart | |
</syntaxhighlight> | </syntaxhighlight> | ||
Linha 248: | Linha 282: | ||
* Revisão do assunto. | * Revisão do assunto. | ||
− | ==08/09: DNS== | + | ==08/09: Correção da prova== |
− | == | + | |
− | ==15/09: Prova== | + | ==13/09: DNS== |
− | == | + | * Necessidade: tradução de nomes de computadores. |
− | == | + | * Proposta de solução: hierarquia de servidores em [http://www.root-servers.org/ escala global]. |
− | == | + | * Protocolo: ''Domain Name System''. |
− | == | + | ** Porta: 53/UDP cliente-servidor e 53/TCP servidor-servidor (em implantação: [http://www.dnssec.net/ DNSSEC]). |
− | == | + | * Implementação: [http://www.isc.org/software/bind ISC]. |
− | == | + | |
− | == | + | ===Servidor=== |
− | == | + | Este é um dos serviços mais delicados em sua configuração, uma vez que as falhas de configuração não inviabilizam o processo de rodar; ou seja, mesmo com má configuração o servidor iniciará. É preciso, portanto, estar sempre atento aos registros do serviço - no caso, o arquivo <tt>/var/log/daemon.log</tt>. |
+ | |||
+ | Como o arquivo principal <tt>/etc/bind/named.conf</tt> faz apenas referências a outros 3 arquivos, o primeiro arquivo de fato a ser modificado é <tt>/etc/bind/named.conf.options</tt>: | ||
+ | options { | ||
+ | ... | ||
+ | listen-on-v6 { any; }; | ||
+ | listen-on { any; }; | ||
+ | allow-recursion { 127.0.0.0/8; SUB-REDE/MÁSCARA; }; | ||
+ | allow-query { any; }; | ||
+ | allow-query-cache { any; }; | ||
+ | }; | ||
+ | |||
+ | Enquanto que o arquivo anterior tratava do serviço em linhas gerais, no arquivo <tt>/etc/bind/named.conf.local</tt> será criado o domínio <tt>redes.com.br</tt> e seu reverso: | ||
+ | ... | ||
+ | zone "redes.com.br" { | ||
+ | type master; | ||
+ | file "/etc/bind/redes.com.br"; | ||
+ | }; | ||
+ | zone "2.168.192.in-addr.arpa" { | ||
+ | type master; | ||
+ | file "/etc/bind/2.168.192.in-addr.arpa"; | ||
+ | }; | ||
+ | |||
+ | Próxima etapa: as informações específicas de domínio em <tt>/etc/bind/redes.com.br</tt>: | ||
+ | $TTL 86400 | ||
+ | @ IN SOA ns1.redes.com.br. ederson.redes.com.br. ( | ||
+ | 2010033101 ; serial | ||
+ | 1d ; refresh | ||
+ | 1h ; retry | ||
+ | 1w ; expire | ||
+ | 1d ; negative cache ttl | ||
+ | ) | ||
+ | @ IN NS ns1 | ||
+ | ns1 IN A 192.168.2.101 | ||
+ | www IN CNAME ns1 | ||
+ | web IN CNAME ns1 | ||
+ | e seu reverso, arquivo <tt>/etc/bind/2.168.192.in-addr.arpa</tt>: | ||
+ | $TTL 86400 | ||
+ | @ IN SOA ns1.redes.com.br. ederson.com.br. ( | ||
+ | 2010033101 ; serial | ||
+ | 1d ; refresh | ||
+ | 1h ; retry | ||
+ | 1w ; expire | ||
+ | 1d ; negative cache ttl | ||
+ | ) | ||
+ | @ IN NS ns1.redes.com.br. | ||
+ | 1.0.0 IN PTR ns1 | ||
+ | |||
+ | Nota: como o serviço pode rodar com má configuração, é interessante (re)iniciar o serviço com um monitor dos registros: | ||
+ | <syntaxhighlight lang=bash> | ||
+ | tail -f /var/log/daemon.log & | ||
+ | </syntaxhighlight> | ||
+ | em uma janela, enquanto que na outra: | ||
+ | <syntaxhighlight lang=bash> | ||
+ | /etc/init.d/bind9 restart | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Além disso, ferramentas como <tt>dig</tt> permitem consultas específicas aos registros criados (SOA, NS, MX, e outros). | ||
+ | |||
+ | ===Cliente=== | ||
+ | A configuração do cliente é feita de duas formas. Na forma manual, basta editar o arquivo <tt>/etc/resolv.conf</tt>: | ||
+ | search redes.com.br | ||
+ | nameserver 127.0.0.1 | ||
+ | Na forma automática, tanto o servidor DNS quanto os domínios de busca já são atribuídos pelo serviço anterior, [[#01/09: DHCP|DHCP]]. | ||
+ | |||
+ | <center><graphviz> | ||
+ | digraph DNS | ||
+ | { | ||
+ | rankdir=LR | ||
+ | |||
+ | subgraph clusterDireto | ||
+ | { | ||
+ | label="redes.com.br" | ||
+ | ns1 [shape=circle] | ||
+ | www [shape=record] | ||
+ | servidor [shape=record] | ||
+ | |||
+ | www -> ns1 [label=CNAME] | ||
+ | servidor -> ns1 [label=CNAME] | ||
+ | } | ||
+ | |||
+ | subgraph clusterReverso | ||
+ | { | ||
+ | label="2.168.192.in-addr.arpa" | ||
+ | "101" [shape=record] | ||
+ | } | ||
+ | |||
+ | ns1 -> "101" [label=A] | ||
+ | "101" -> ns1 [label=PTR] | ||
+ | } | ||
+ | </graphviz></center> | ||
+ | |||
+ | =Projeto da Disciplina= | ||
+ | A aula do dia 15/09 se mostrou bastante produtiva. Com a preparação do Encontro Pedagógico, já foi diagnosticado que o modelo de aula pode ser mais produtivo, como por exemplo apresentando um problema real a ser resolvido usando Gerência de Rede. | ||
+ | |||
+ | Com isso, a proposta original foi [[Discussão:Gerência de Redes de Computadores (técnico) (diário 2010-2)|engavetada]], e montamos, em parceira (professor e alunos) a nova: | ||
+ | * Prazo de execução: 9 semanas. | ||
+ | * Equipes: | ||
+ | ** Everton, Gabriel e Lucas. | ||
+ | ** Andreia, Leonardo e Ronaldo. | ||
+ | ** Cleidiane, Karine e Rafael. | ||
+ | ** Diony, Luis e Tadeu. | ||
+ | * Método de avaliação: | ||
+ | ** A [[#25/08: Prova|primeira avaliação]] valerá 10% do conceito final. | ||
+ | ** Haverá outras 4 avaliações, de periodicidade quinzenal, contemplando os outros 90%. Todas essas serão orais, onde em metade haverá o sorteio do aluno a defender a equipe - e na outra metade o aluno será indicado pela equipe. | ||
+ | |||
+ | ==O Problema== | ||
+ | Com a constituição do novo [[Curso Técnico Integrado ao Ensino Médio de Telecomunicações]], surgiu a necessidade de se criar todo um espaço virtual para professores, pais e alunos. | ||
+ | |||
+ | <center><graphviz> | ||
+ | graph Integrado | ||
+ | { | ||
+ | Integrado [label="Ambiente Web",shape=circle] | ||
+ | Pais [shape=plaintext] | ||
+ | Alunos [shape=plaintext] | ||
+ | Professores [shape=plaintext] | ||
+ | Coordenadores [shape=plaintext] | ||
+ | |||
+ | Integrado -- Pais | ||
+ | Integrado -- Alunos | ||
+ | Integrado -- Professores | ||
+ | Integrado -- Coordenadores | ||
+ | } | ||
+ | </graphviz></center> | ||
+ | |||
+ | ===Requisitos=== | ||
+ | Esse ambiente deve conter: | ||
+ | * Sobre: páginas descrevendo o curso. | ||
+ | * Notícias: relacionadas à área de Telecomunicações. | ||
+ | * Repositório de documentos: arquivos em geral. | ||
+ | ** Espaço do professor: publicações pessoais. | ||
+ | * Calendários: | ||
+ | ** Atividades e visitas/viagens de estudo. | ||
+ | ** Professores: horários de aula e de atendimento. | ||
+ | * Referências a outros sites: ''links''. | ||
+ | * Comunicação facilitada: por texto, áudio ou vídeo. | ||
+ | |||
+ | Em relação à boa gerência, o ambiente também deve conter: | ||
+ | * Documentação de instalação, configuração e manutenção neste wiki. | ||
+ | ** Defesa da escolha de solução caseira, terceirizada ou mista. | ||
+ | * Configuração de domínio DNS próprio. | ||
+ | * Possibilidade de publicação de arquivos via Web, seja por aplicativo ou [http://www.webdav.org/ WebDAV]. | ||
+ | * Estatísticas de acesso. | ||
+ | * Gerências de monitoramento e de contabilização. | ||
+ | * Salvaguarda (''backup'') dos dados sensíveis e/ou críticos. | ||
+ | * Controle remoto para os administradores de sistema. | ||
+ | |||
+ | ==Forma de Abordagem== | ||
+ | Uma forma de abordar o problema é construir a solução em serviços, onde esses estão divididos em camadas: | ||
+ | # Facilitadores: serviços ''invisíveis'' ao usuário final. Responsáveis por estabelecer um canal lógico mínimo para comunicação em rede - sistema operacional e rede. Serviços comuns: BOOTP e DHCP. | ||
+ | # Dados: responsáveis pelo armazenamento de dados em diretórios ou bandos de dados, geralmente relacionais. Serviços comuns: LDAP/AD e bancos SQL. | ||
+ | # (In)diretos: são os serviços voltados diretamente para os usuários finais. Serviços comuns: a suíte de protocolos SMB (Samba), HTTP, SMTP, IMAP e XMPP. | ||
+ | # Aplicaçõe: aqui usaremos o termo para definir aqueles que rodam sobre outros na camada de Aplicação, como por exemplo aplicações Web. Serviços comuns: blog, portal e ''webmail''. | ||
+ | # Gerência: vertente dos serviços finais, esses voltados aos administradores de rede e de sistemas. Serviços comuns: SNMP, ''backup'' em rede. | ||
+ | |||
+ | <center><graphviz> | ||
+ | digraph Servicos | ||
+ | { | ||
+ | subgraph clusterFacilitadores | ||
+ | { | ||
+ | label=Facilitadores | ||
+ | DHCP | ||
+ | } | ||
+ | |||
+ | subgraph clusterDiretoriosBDs | ||
+ | { | ||
+ | label="Dados" | ||
+ | subgraph clusterDiretórios | ||
+ | { | ||
+ | label=Diretórios | ||
+ | LDAP | ||
+ | DNS | ||
+ | } | ||
+ | subgraph clusterBDs | ||
+ | { | ||
+ | label=BDs | ||
+ | SQL | ||
+ | } | ||
+ | } | ||
+ | |||
+ | subgraph clusterIndiretos | ||
+ | { | ||
+ | label="(In)Diretos" | ||
+ | subgraph clusterCompartilhamento | ||
+ | { | ||
+ | label=Compartilhamento | ||
+ | SMB | ||
+ | HTTP | ||
+ | } | ||
+ | subgraph clusterComunicação | ||
+ | { | ||
+ | label=Comunicação | ||
+ | SMTP | ||
+ | IMAP | ||
+ | XMPP | ||
+ | SIP | ||
+ | "RTP/RTCP" | ||
+ | } | ||
+ | } | ||
+ | |||
+ | subgraph clusterAplicações | ||
+ | { | ||
+ | label=Aplicações | ||
+ | Portal | ||
+ | Webmail | ||
+ | } | ||
+ | |||
+ | subgraph clusterGerência | ||
+ | { | ||
+ | label=Gerência | ||
+ | SNMP | ||
+ | Backup | ||
+ | } | ||
+ | |||
+ | |||
+ | DHCP -> DNS | ||
+ | DNS -> LDAP [color=red] | ||
+ | DNS -> SQL [color=red] | ||
+ | DNS -> SMB [color=red] | ||
+ | LDAP -> SMB [color=blue] | ||
+ | DNS -> HTTP [color=red] | ||
+ | LDAP -> HTTP [color=blue] | ||
+ | DNS -> SMTP [color=red] | ||
+ | DNS -> IMAP [color=red] | ||
+ | DNS -> XMPP [color=red] | ||
+ | DNS -> SIP [color=red] | ||
+ | LDAP -> SMTP [color=blue] | ||
+ | LDAP -> IMAP [color=blue] | ||
+ | LDAP -> XMPP [color=blue] | ||
+ | LDAP -> SIP [color=blue] | ||
+ | XMPP -> "RTP/RTCP" | ||
+ | SIP -> "RTP/RTCP" | ||
+ | SMTP -> IMAP | ||
+ | SQL -> Portal [color=green] | ||
+ | HTTP -> Portal | ||
+ | SQL -> Webmail [color=green] | ||
+ | HTTP -> Webmail | ||
+ | SMTP -> Webmail | ||
+ | IMAP -> Webmail | ||
+ | LDAP -> Backup [color=blue] | ||
+ | SQL -> Backup [color=green] | ||
+ | SMB -> Backup | ||
+ | HTTP -> Backup | ||
+ | DNS -> Backup [color=red] | ||
+ | DNS -> SNMP [color=red] | ||
+ | } | ||
+ | </graphviz></center> | ||
+ | |||
+ | =24/09: Pesquisa= | ||
+ | Na aula anterior, foi construída uma primeira tabela como proposta de solução do problema: | ||
+ | <center> | ||
+ | {| border=1 | ||
+ | |- | ||
+ | | Camada || Serviço || Protocolo || Implementação | ||
+ | |- | ||
+ | | Facilitadores || colspan=3 | ''Por se tratar de um servidor em rede dedicada, não será preciso qualquer serviço deste tipo.'' | ||
+ | |||
+ | |- | ||
+ | | Dados/Diretórios || Nomes de computadores || DNS || [http://www.isc.org/software/bind Bind] | ||
+ | |- | ||
+ | | Dados/Diretórios || Usuários e grupos || LDAP || [http://www.openldap.org OpenLDAP] | ||
+ | |- | ||
+ | | Dados/DBs || Banco de dados || SQL || [http://www.mysql.com MySQL] | ||
+ | |- | ||
+ | | (In)Diretos/Compartilhamento || na Internet || HTTP || [http://httpd.apache.org Apache] | ||
+ | |- | ||
+ | | (In)Diretos/Comunicação || Bate-papo || XMPP || [http://www.igniterealtime.org/projects/openfire/ Openfire] | ||
+ | |- | ||
+ | | Aplicações || colspan=3 align=center | '''???''' | ||
+ | |- | ||
+ | | Gerência || Monitoramento e contabilização || SNMP || [http://cacti.net Cacti] | ||
+ | |- | ||
+ | |} | ||
+ | </center> | ||
+ | |||
+ | Para esta sexta-feira, portanto, a tarefa é pesquisar por aplicações Web que atendam às [[#Requisitos| necessidade do projeto]]. Como ponto de partida: | ||
+ | * [http://pt.wikipedia.org/wiki/Sistema_de_gerenciamento_de_conte%C3%BAdo Sistema de gerenciamento de conteúdo] (Wikipédia) | ||
+ | * [http://www.opensourcecms.com/ opensource CMS Demos & Information] | ||
+ | |||
+ | =27/09: Instalação e DNS= | ||
+ | ==Instalação de programas== | ||
+ | * Etapas para uma ''boa'' instalação: | ||
+ | <syntaxhighlight lang=bash> | ||
+ | aptitude update | ||
+ | aptitude search <nome> | ||
+ | aptitude install <pacote> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ==DNS== | ||
+ | * Instalação: | ||
+ | <syntaxhighlight lang=bash> | ||
+ | aptitude install bind9 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | * Configuração do controle de acesso dos clientes por IP: | ||
+ | <syntaxhighlight lang=bash> | ||
+ | cd /etc/bind/ | ||
+ | vi named.conf.options | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | * Conteúdo do arquivo <tt>/etc/bind/named.conf.options</tt>: | ||
+ | options | ||
+ | { | ||
+ | listen-on { any; }; | ||
+ | listen-on-v6 { any; }; | ||
+ | allow-query { any; }; | ||
+ | allow-query-cache { any; }; | ||
+ | allow-recursion { 127.0.0.0/8; <rede_local>/<máscara>; }; | ||
+ | }; | ||
+ | |||
+ | * Criação da zona (domínio DNS direto): | ||
+ | <syntaxhighlight lang=bash> | ||
+ | vi named.conf.local | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | * Conteúdo do arquivo <tt>/etc/bind/named.conf.local</tt>: | ||
+ | zone "integrado.sj.ifsc.edu.br" | ||
+ | { | ||
+ | type master; | ||
+ | file "/etc/bind/integrado.sj.ifsc.edu.br"; | ||
+ | }; | ||
+ | |||
+ | = 29/09: Bases de Dados= | ||
+ | * Escolhido o [http://www.mysql.com MySQL]. A instalação se dá da seguinte maneira: | ||
+ | <syntaxhighlight lang=bash> | ||
+ | aptitude install mysql-server | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | * Visualização das bases e usuários: | ||
+ | <syntaxhighlight lang=bash> | ||
+ | mysql -u root -p | ||
+ | </syntaxhighlight> | ||
+ | <syntaxhighlight lang=sql> | ||
+ | SHOW DATABASES; | ||
+ | USE mysql; | ||
+ | SHOW TABLES; | ||
+ | SELECT * FROM user; | ||
+ | SELECT * FROM db; | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | * Criação de uma base <tt>portal</tt> para o usuário <tt>usuario</tt> com a senha <tt>senha</tt>: | ||
+ | <syntaxhighlight lang=bash> | ||
+ | mysql -u root -p | ||
+ | </syntaxhighlight> | ||
+ | <syntaxhighlight lang=sql> | ||
+ | CREATE DATABASE portal; | ||
+ | GRANT ALL PRIVILEGES ON portal.* TO usuario@localhost IDENTIFIED BY 'senha'; | ||
+ | FLUSH PRIVILEGES; | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | <center><graphviz> | ||
+ | graph DB | ||
+ | { | ||
+ | "Base da Dados" [shape=Mrecord] | ||
+ | |||
+ | Máquina -- Usuário | ||
+ | Senha -- Usuário | ||
+ | Usuário -- "Base da Dados" | ||
+ | Máquina -- "Base da Dados" | ||
+ | "Base da Dados" -- Privilégios | ||
+ | Usuário -- Privilégios | ||
+ | } | ||
+ | </graphviz></center> | ||
− | = | + | =06/10: Dos Bancos de Dados aos Aplicativos Web= |
− | == | + | <center><graphviz> |
− | + | digraph BDaoAplicWeb | |
− | + | { | |
− | + | SQL | |
− | = | + | LDAP |
− | == | + | } |
− | = | + | </graphviz></center> |
− | + | ||
− | + | =08/11: ''Firewall''= | |
+ | Filtro de pacotes utilizando [http://www.netfilter.org/projects/iptables/ iptables] (eu prefiro [[Gerência de Redes de Computadores (técnico) (diário 2010-1)#19/05: Revisão dos Serviços Básicos|esse]]): | ||
+ | <syntaxhighlight lang=bash> | ||
+ | #!/bin/bash | ||
+ | |||
+ | # Política-padrão: bloqueado exceto o contrário | ||
+ | iptables -t nat -P PREROUTING ACCEPT | ||
+ | iptables -t nat -P POSTROUTING ACCEPT | ||
+ | iptables -t nat -P OUTPUT ACCEPT | ||
+ | iptables -t filter -P INPUT DROP | ||
+ | iptables -t filter -P FORWARD ACCEPT | ||
+ | iptables -t filter -P OUTPUT ACCEPT | ||
+ | |||
+ | # Limpeza de regras antigas | ||
+ | iptables -t filter -F | ||
+ | iptables -t nat -F | ||
+ | |||
+ | # Ativar o roteamento | ||
+ | sysctl -w net.ipv4.ip_forward=1 | ||
+ | |||
+ | # NAT: saída dos pacotes | ||
+ | # iptables -t nat -A POSTROUTING -s <rede local/máscara> -j MASQUERADE | ||
+ | iptables -t nat -A POSTROUTING -s 10.0.0.68/30 -j MASQUERADE | ||
+ | # | ||
+ | # Redirecionamento de porta: entrada dos pacotes | ||
+ | # iptables -t nat -A PREROUTING -p <protocolo> --dport <porta> -j DNAT \ | ||
+ | # --to-destination <IP>:<porta> | ||
+ | iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT \ | ||
+ | --to-destination 10.0.0.70:80 | ||
+ | # Filtro de pacotes: saída dos pacotes | ||
+ | iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT | ||
+ | # Filtro de pacotes: entrada dos pacotes | ||
+ | iptables -A INPUT -p tcp --dport 22 -j ACCEPT | ||
+ | exit 0 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | =10/11: ''Backup''= | ||
+ | <syntaxhighlight lang=bash> | ||
+ | #!/bin/bash | ||
+ | # | ||
+ | # 20101110 Ederson Torresini: rotina de backup de diretórios importantes | ||
+ | |||
+ | ORIGEM="/etc /home /var" | ||
+ | DESTINO="/backup" | ||
+ | DIA=`date +%Y%m%d` | ||
+ | DIA_DA_SEMANA=`date +%A` | ||
+ | EMAIL=root@servidor | ||
+ | |||
+ | # Criar o diretório de destino | ||
+ | mkdir -p ${DESTINO} | ||
+ | chmod 700 ${DESTINO} | ||
+ | chown root ${DESTINO} | ||
+ | |||
+ | # Função: backup completo | ||
+ | completo() | ||
+ | { | ||
+ | tar cvzf ${DESTINO}/${DIA}.tar.gz ${ORIGEM} \ | ||
+ | > ${DESTINO}/${DIA}.txt \ | ||
+ | 2> /dev/null | ||
+ | } | ||
+ | |||
+ | # Função: backup incremental (somente último dia) | ||
+ | incremental() | ||
+ | { | ||
+ | tar cvzf ${DESTINO}/${DIA}.tar.gz `find ${ORIGEM} ! -type d -mtime -1` | ||
+ | \ | ||
+ | > ${DESTINO}/${DIA}.txt \ | ||
+ | 2> /dev/null | ||
+ | } | ||
+ | |||
+ | # Função principal | ||
+ | if [ "${DIA_DA_SEMANA}" = "sunday" -o "${DIA_DA_SEMANA}" = "domingo" ] | ||
+ | then | ||
+ | completo | ||
+ | else | ||
+ | incremental | ||
+ | fi | ||
+ | mysqldump -uroot -proot --all-databases > ${DESTINO}/${DIA}.sql | ||
+ | cat ${DESTINO}/${DIA}.txt | mail -s "[Backup]: ${DIA}" ${EMAIL} | ||
+ | find ${DESTINO} -type f -mtime +7 -exec rm -f {} \; | ||
+ | exit 0 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | =17/11: Prova Final= | ||
+ | Para esta prova, é FORTEMENTE recomendado utilizar um sistema novo. | ||
+ | |||
+ | #Construir um script que gera um relatório diário com: | ||
+ | #* Usuários sem senha ou bloqueados por senha; | ||
+ | #* Usuários sem interpretador de comandos válido; | ||
+ | #* Arquivos sem usuário ou grupo do sistema. Guardar os relatórios por 1 semana. | ||
+ | # Construir um script que monitora os seguintes serviços: | ||
+ | #* NTP | ||
+ | #* Syslog | ||
+ | #* SSH | ||
+ | #* DNS | ||
+ | #* HTTP. caso algum serviço esteja parado, o próprio script deverá (re)iniciar o serviço e guardar essa informação (reinício) em arquivo de ''log'' a definir. | ||
+ | # Configurar um domínio DNS: | ||
+ | #* zona <nomecompleto>.com.br; | ||
+ | #* Faixa de IPs: 192.168.<máquina>.0/28. | ||
+ | #Monitoramento de contabilização do servidor: | ||
+ | #* Rede: todas as interfaces físicas e lógicas. | ||
+ | #* Sistema: consumo de processamento e de memórias principal e secundária. | ||
+ | # Construir um firewall que bloqueia todo o tráfego de rede exceto os serviços listados na questão 2. | ||
+ | # Construir um script que realiza o backup de: | ||
+ | #* Arquivos pessoais (/home) diariamente. | ||
+ | #* Arquivos de sistema (/etc e /var) semanalmente. Deve haver pelo menos dois backups - enquanto um é processado, haverá sempre outro para segurança. Assim, o histórico de armazenamento será de até 2 períodos. Além disso, cada backup deve listar quais arquivos e seus metadados (datas, propriedades e permissões) em arquivo anexo. | ||
=Projeto Integrador= | =Projeto Integrador= | ||
− | + | * URL: [[Projeto Integrador - 2010.2]]. | |
− | == | + | * Período de desenvolvimento: 22/11 a 15/12. |
+ | * Data de apresentação: 16/12. | ||
+ | |||
+ | =Conceitos Finais= | ||
+ | <center> | ||
+ | {| border=1 | ||
+ | |- | ||
+ | | align=center | Aluno || align=center | Conceito | ||
+ | |- | ||
+ | | Andreia || align=center | C | ||
+ | |- | ||
+ | | Cleidiane || align=center | D | ||
+ | |- | ||
+ | | Diony || align=center | C | ||
+ | |- | ||
+ | | Everton || align=center | D | ||
+ | |- | ||
+ | | Gabriel || align=center | D | ||
+ | |- | ||
+ | | José Tadeu || align=center | D | ||
+ | |- | ||
+ | | Karine || align=center | C | ||
+ | |- | ||
+ | | Leonardo || align=center | D | ||
+ | |- | ||
+ | | Lucas || align=center | C | ||
+ | |- | ||
+ | | Luis || align=center | C | ||
+ | |- | ||
+ | | Rafael || align=center | C | ||
+ | |- | ||
+ | | Ronaldo || align=center | A | ||
+ | |- | ||
+ | |} | ||
+ | </center> | ||
{{Voltar|Gerência de Redes de Computadores (técnico) (página)|página principal da disciplina}} | {{Voltar|Gerência de Redes de Computadores (técnico) (página)|página principal da disciplina}} |
Edição atual tal como às 01h22min de 14 de junho de 2011
- Endereço encurtado: http://bit.ly/gar20102
Sobre a disciplina
- Dinâmica das atividade práticas: os alunos serão organizados em duplas para atuar como roteadores e servidores em rede.
- Avaliação: 4 provas práticas de conteúdo cumulativo.
Visão geral de administração de sistemas e de rede
- Revisão dos conceitos de sistemas operacionais e arquitetura TCP/IP, endereçamento e roteamento IP e interpretador de comandos.
- O sistema operacional em rede, não de rede.
- Processos locais são serviços em rede.
28/07: História dos S.O.s e linguagens de programação
- Tópicos: história e evolução dos sistemas operacionais e das redes de computadores.
- Referências externas:
02/08: Instalação de S.O. GNU/Linux
- Sistemas instalados: Ubuntu Linux 9.10 como servidor.
- Instalação mínima.
- Recomendações de particionamento para servidores - em particular o uso de vários pontos de montagem.
04/08: Usuários, processos e dados
- Tópicos: comandos de administração de usuários, grupos e senhas de usuários, processos e de sistemas de arquivos.
- Para consulta: dicionário de comandos *nix.
09/08: Do início do sistema à configuração de rede
Descrição do início do sistema para o sistema instalado: Ubuntu Linux versão 9.10.
digraph Inicio {
subgraph clusterKernel { label="S.O." Kernel [shape=Mrecord] Kernel -> "/" [label=1,color=blue] Kernel -> "/sbin/init" [label=3,color=blue] "/" -> Kernel [label=2] subgraph clusterInit { label="init" "/sbin/init" -> "/etc/init/*" [label=4,color=blue] "/etc/init/*" -> "/etc/init.d/rcS" [label=5,color=blue] "/etc/init.d/rcS" -> "/etc/rcS.d/S*" [label=6,color=blue] "/etc/rcS.d/S*" -> "/etc/init/*" [label=7] "/etc/init/*" -> "/etc/init.d/rc <runlevel>" [label=8,color=blue] "/etc/init.d/rc <runlevel>" -> "/etc/rc<runlevel>.d/S*" [label=9,color=blue] } } }
</graphviz>Referência externa: Guia Foca GNU/Linux - intermediário - Rede
11/08: Segmentação de redes
- Atividades: segmente as seguintes sub-redes abaixo conforme as máscaras de rede.
- 10.20.032.0 de /21 para /23.
- 200.25.137.160 de / 28 para /30.
- 172.31.0.0 de /25 para /28.
- 192.167.46.0 de /23 para /28.
- 192.168.4.0/24 para 3 sub-redes, onde na primeira deve haver pelo 30 IPs válidos, na segunda 100 IPs válidos e na terceira 4 IPs.
16/08: Segmentação de redes
Configuração realizada sobre o protocolo IP:
- Endereçamento.
- Roteamento estático.
- NAT.
graph redes { rankdir=LR A [shape=Mrecord,label="<0>Cliente|172.31.0.1/19"] B [shape=Mrecord,label="<0>Cliente|<1>172.31.0.2/19"] C [shape=Mrecord,label="<2>172.31.128.2/19|<0>Roteador|<1>172.31.0.2/19"] A:1 -- C:1 [color=blue] B:1 -- C:1 [color=blue]
D [shape=Mrecord,label="<0>Cliente|172.31.32.1/19"] E [shape=Mrecord,label="<0>Cliente|<1>172.31.32.2/19"] F [shape=Mrecord,label="<1>172.31.32.3/19|<0>Roteador|<2>172.31.128.1/19"] D:1 -- F:1 [color=blue] E:1 -- F:1 [color=blue]
G [shape=Mrecord,label="<0>Cliente|172.31.64.1/19"] H [shape=Mrecord,label="<0>Cliente|<1>172.64.0.2/19"] I [shape=Mrecord,label="<2>172.31.128.3/19|<0>Roteador|<1>172.64.0.2/19"] G:1 -- I:1 [color=blue] H:1 -- I:1 [color=blue]
J [shape=Mrecord,label="<0>Cliente|172.31.96.1/19"] K [shape=Mrecord,label="<0>Cliente|<1>172.31.96.2/19"] L [shape=Mrecord,label="<1>172.31.96.3/19|<0>Roteador|<2>172.31.128.4/19"] J:1 -- L:1 [color=blue] K:1 -- L:1 [color=blue]
C:2 -- F:2 [color=red] C:2 -- I:2 [color=red] C:2 -- L:2 [color=red] F:2 -- I:2 [color=red] F:2 -- L:2 [color=red] I:2 -- L:2 [color=red] }
</graphviz>Legenda:
- Azul: redes entre estações e roteador.
- Vermelho: rede entre roteadores.
18/08: Simulado de prova
23/08: Revisão de comandos básicos de S.O.
- Revisão de comandos de manipulação de usuários e grupos, listagem de processos e pontos de montagem.
25/08: Prova
Para responder à prova, assuma o seguinte conjunto de usuários:
- João e Maria pertencem apenas ao grupo A.
- Isaac e Jacó pertencem apenas a B.
- Beatriz e Pedro pertencem apenas a C.
- José pertence a A e B.
- Lucas pertence a A e C.
- Mateus pertence a B e C.
- Aarão pertence a A, B e C.
Questões:
- Jacó e Maria devem ter acesso pleno a /home/documentos. Isaac pode apenas ler o mesmo diretório.
- Aarão e Beatriz podem ler /var/log/* (todos os arquivos do diretório).
- Ao iniciar o sistema, deve rodar um script contando quantos processos correntes há para, em seguida, gerar um arquivo-relatório armazenando todos essas contagens.
- Quantos e quais processos, atualmente, são do usuário root? Crie um script que informa tais valores.
- Quantas partições há no sistema corrente? Informe tipos e tamanhos.
- Bônus: Crie uma partição do tipo EXT3 para abrigar os sites, os quais ficarão no diretório /var/www. Monte a referida partição.
- Configure a 5a. sub-rede da classe cheia (classful network) 172.14.37.0/25, a qual foi dividida usando a nova máscara /28. Identifique máscara e um IP válido.
- Segmente a rede 192.168.24.0/25 em 3 partes, onde cada uma deve conter:
- pelo menos 10 IPs.
- pelo menos 20 IPs.
- pelo menos 50 IPs.
Serviços em rede
- Catálogo de protocolos conhecidos: arquivo /etc/protocols.
- Catálogo de serviços conhecidos (well known ports): arquivo /etc/services.
- Comandos úteis para monitoramento de serviços e portas "abertas":
netstat -lnut
lsof -n | grep <porta>
fuser -v -n tcp <porta>
fuser -v -n udp <porta>
Assumindo o S.O. Ubuntu Linux:
Serviço | Porta/Protocolo | Programa principal | Arquivo de configuração principal | Arquivo de Registro |
NTP | 123/UDP | /usr/sbin/ntpd | /etc/ntp.conf | /var/log/syslog |
Cron | (serviço local) | /usr/sbin/cron | /etc/crontab | /var/log/syslog |
Syslog | 514/UDP | /usr/sbin/rsyslogd | /etc/rsyslog.conf | /var/log/messages |
DHCP | 67/UDP | /usr/sbin/dhcpd | /etc/dhcp3/dhcpd.conf | /var/log/syslog |
DNS | 53/UDP | /usr/sbin/named | /etc/bind/named.conf | /var/log/daemon.log |
SMB | 137/UDP, 138/UDP, 139/TCP, 445/TCP | /usr/sbin/smbd, /usr/sbin/nmbd | /etc/samba/smb.conf | /var/log/samba/log.smbd, /var/log/samba/log.nmbd |
HTTP | 80/TCP, 443/TCP | /usr/sbin/apache2 | /etc/apache2/apache2.conf | /var/log/apache2/access.log |
SMTP | 25/TCP | /usr/lib/postfix/master | /etc/postfix/main.cf | /var/log/mail.log |
IMAP | 143/TCP | /usr/lib/dovecot/imap | /var/log/auth.log |
30/08: Serviços de sistema e relógio
NTP
- Sincronização do relógio com NTP.
Cron
- Agendamento de tarefas com cron.
Syslog
- Registro de eventos, ou logs, através do syslog.
Obs.: a documentação do Foca Linux, guia de referência, está baseada na distribuição Debian GNU/Linux, ligeiramente diferente do Ubuntu Linux usado em aula; contudo, há equivalência entre ambos em praticamente todo o conteúdo abordado neste curso, como por exemplo o caso dos daemons syslogd e klogd e o rsyslogd.
01/09: DHCP
- Necessidade: configuração facilitada em rede.
- Proposta de solução: distribuição automatizada de endereços de redes através de ponto/serviço central.
- Protocolo: Dynamic Host Configuration Protocol.
- Porta: 67/UDP.
- Diálogo (em vermelho broadcast e em azul unicast):
- Implementação: ISC.
digraph DHCP { Servidor [shape=circle] Cliente [shape=plaintext]
Cliente -> Servidor [label="1: Discover",color=red] Servidor -> Cliente [label="2: Offer",color=blue] Cliente -> Servidor [label="3: Request",color=blue] Servidor -> Cliente [label="4: ACK",color=blue] }
</graphviz>Servidor
- Instalação e configuração:
aptitude install dhcp3-server
vi /etc/dhcp3/dhcpd.conf
- Conteúdo do arquivo /etc/dhcp3/dhcpd.conf:
# Sem integração entre DHCP e DNS. ddns-update-style none; # Rede local: 192.168.2.0/24 subnet 192.168.2.0 netmask 255.255.255.0 { # IP range 192.168.2.200 192.168.2.219; # Máscara de rede option subnet-mask 255.255.255.0; # Broadcast option broadcast-address 192.168.2.255; # Rota-padrão option routers 192.168.2.1; # Servidor(es) DNS: OpenDNS e Google option domain-name-servers 208.67.222.222, 8.8.8.8; # Tempo de aluguel default-lease-time 3600; max-lease-time 14400; } # OPCIONAL: Um cliente em especial ganhará sempre o mesmo IP host clienteEspecial { hardware ethernet 08:00:27:60:13:78; fixed-address 192.168.2.220; }
- Monitoramento do serviço:
tail -f /var/log/syslog &
tail -f /var/lib/dhcp3/dhcpd.leases &
- Aplicação dos valores (do arquivo):
/etc/init.d/dhcp3-server restart
Por fim, confirme se o serviço está rodando.
Cliente
- Instalação e configuração:
aptitude install dhcp3-client
vi /etc/network/interfaces
- Conteúdo do arquivo /etc/network/interfaces:
# Interfaces loopback auto lo iface lo inet looback # Interface Ethernet 0 auto eth0 iface eth0 inet dhcp
- Aplicação dos valores (do arquivo):
/etc/init.d/networking restart
Colaboração: Karine.
06/09: DHCP
- Revisão do assunto.
08/09: Correção da prova
13/09: DNS
- Necessidade: tradução de nomes de computadores.
- Proposta de solução: hierarquia de servidores em escala global.
- Protocolo: Domain Name System.
- Porta: 53/UDP cliente-servidor e 53/TCP servidor-servidor (em implantação: DNSSEC).
- Implementação: ISC.
Servidor
Este é um dos serviços mais delicados em sua configuração, uma vez que as falhas de configuração não inviabilizam o processo de rodar; ou seja, mesmo com má configuração o servidor iniciará. É preciso, portanto, estar sempre atento aos registros do serviço - no caso, o arquivo /var/log/daemon.log.
Como o arquivo principal /etc/bind/named.conf faz apenas referências a outros 3 arquivos, o primeiro arquivo de fato a ser modificado é /etc/bind/named.conf.options:
options { ... listen-on-v6 { any; }; listen-on { any; }; allow-recursion { 127.0.0.0/8; SUB-REDE/MÁSCARA; }; allow-query { any; }; allow-query-cache { any; }; };
Enquanto que o arquivo anterior tratava do serviço em linhas gerais, no arquivo /etc/bind/named.conf.local será criado o domínio redes.com.br e seu reverso:
... zone "redes.com.br" { type master; file "/etc/bind/redes.com.br"; }; zone "2.168.192.in-addr.arpa" { type master; file "/etc/bind/2.168.192.in-addr.arpa"; };
Próxima etapa: as informações específicas de domínio em /etc/bind/redes.com.br:
$TTL 86400 @ IN SOA ns1.redes.com.br. ederson.redes.com.br. ( 2010033101 ; serial 1d ; refresh 1h ; retry 1w ; expire 1d ; negative cache ttl ) @ IN NS ns1 ns1 IN A 192.168.2.101 www IN CNAME ns1 web IN CNAME ns1
e seu reverso, arquivo /etc/bind/2.168.192.in-addr.arpa:
$TTL 86400 @ IN SOA ns1.redes.com.br. ederson.com.br. ( 2010033101 ; serial 1d ; refresh 1h ; retry 1w ; expire 1d ; negative cache ttl ) @ IN NS ns1.redes.com.br. 1.0.0 IN PTR ns1
Nota: como o serviço pode rodar com má configuração, é interessante (re)iniciar o serviço com um monitor dos registros:
tail -f /var/log/daemon.log &
em uma janela, enquanto que na outra:
/etc/init.d/bind9 restart
Além disso, ferramentas como dig permitem consultas específicas aos registros criados (SOA, NS, MX, e outros).
Cliente
A configuração do cliente é feita de duas formas. Na forma manual, basta editar o arquivo /etc/resolv.conf:
search redes.com.br nameserver 127.0.0.1
Na forma automática, tanto o servidor DNS quanto os domínios de busca já são atribuídos pelo serviço anterior, DHCP.
digraph DNS { rankdir=LR
subgraph clusterDireto { label="redes.com.br" ns1 [shape=circle] www [shape=record] servidor [shape=record]
www -> ns1 [label=CNAME] servidor -> ns1 [label=CNAME] }
subgraph clusterReverso { label="2.168.192.in-addr.arpa" "101" [shape=record] }
ns1 -> "101" [label=A] "101" -> ns1 [label=PTR] }
</graphviz>Projeto da Disciplina
A aula do dia 15/09 se mostrou bastante produtiva. Com a preparação do Encontro Pedagógico, já foi diagnosticado que o modelo de aula pode ser mais produtivo, como por exemplo apresentando um problema real a ser resolvido usando Gerência de Rede.
Com isso, a proposta original foi engavetada, e montamos, em parceira (professor e alunos) a nova:
- Prazo de execução: 9 semanas.
- Equipes:
- Everton, Gabriel e Lucas.
- Andreia, Leonardo e Ronaldo.
- Cleidiane, Karine e Rafael.
- Diony, Luis e Tadeu.
- Método de avaliação:
- A primeira avaliação valerá 10% do conceito final.
- Haverá outras 4 avaliações, de periodicidade quinzenal, contemplando os outros 90%. Todas essas serão orais, onde em metade haverá o sorteio do aluno a defender a equipe - e na outra metade o aluno será indicado pela equipe.
O Problema
Com a constituição do novo Curso Técnico Integrado ao Ensino Médio de Telecomunicações, surgiu a necessidade de se criar todo um espaço virtual para professores, pais e alunos.
graph Integrado { Integrado [label="Ambiente Web",shape=circle] Pais [shape=plaintext] Alunos [shape=plaintext] Professores [shape=plaintext] Coordenadores [shape=plaintext]
Integrado -- Pais Integrado -- Alunos Integrado -- Professores Integrado -- Coordenadores }
</graphviz>Requisitos
Esse ambiente deve conter:
- Sobre: páginas descrevendo o curso.
- Notícias: relacionadas à área de Telecomunicações.
- Repositório de documentos: arquivos em geral.
- Espaço do professor: publicações pessoais.
- Calendários:
- Atividades e visitas/viagens de estudo.
- Professores: horários de aula e de atendimento.
- Referências a outros sites: links.
- Comunicação facilitada: por texto, áudio ou vídeo.
Em relação à boa gerência, o ambiente também deve conter:
- Documentação de instalação, configuração e manutenção neste wiki.
- Defesa da escolha de solução caseira, terceirizada ou mista.
- Configuração de domínio DNS próprio.
- Possibilidade de publicação de arquivos via Web, seja por aplicativo ou WebDAV.
- Estatísticas de acesso.
- Gerências de monitoramento e de contabilização.
- Salvaguarda (backup) dos dados sensíveis e/ou críticos.
- Controle remoto para os administradores de sistema.
Forma de Abordagem
Uma forma de abordar o problema é construir a solução em serviços, onde esses estão divididos em camadas:
- Facilitadores: serviços invisíveis ao usuário final. Responsáveis por estabelecer um canal lógico mínimo para comunicação em rede - sistema operacional e rede. Serviços comuns: BOOTP e DHCP.
- Dados: responsáveis pelo armazenamento de dados em diretórios ou bandos de dados, geralmente relacionais. Serviços comuns: LDAP/AD e bancos SQL.
- (In)diretos: são os serviços voltados diretamente para os usuários finais. Serviços comuns: a suíte de protocolos SMB (Samba), HTTP, SMTP, IMAP e XMPP.
- Aplicaçõe: aqui usaremos o termo para definir aqueles que rodam sobre outros na camada de Aplicação, como por exemplo aplicações Web. Serviços comuns: blog, portal e webmail.
- Gerência: vertente dos serviços finais, esses voltados aos administradores de rede e de sistemas. Serviços comuns: SNMP, backup em rede.
digraph Servicos { subgraph clusterFacilitadores { label=Facilitadores DHCP }
subgraph clusterDiretoriosBDs { label="Dados" subgraph clusterDiretórios { label=Diretórios LDAP DNS } subgraph clusterBDs { label=BDs SQL } }
subgraph clusterIndiretos { label="(In)Diretos" subgraph clusterCompartilhamento { label=Compartilhamento SMB HTTP } subgraph clusterComunicação { label=Comunicação SMTP IMAP XMPP SIP "RTP/RTCP" } }
subgraph clusterAplicações { label=Aplicações Portal Webmail }
subgraph clusterGerência { label=Gerência SNMP Backup }
DHCP -> DNS
DNS -> LDAP [color=red]
DNS -> SQL [color=red]
DNS -> SMB [color=red]
LDAP -> SMB [color=blue]
DNS -> HTTP [color=red]
LDAP -> HTTP [color=blue]
DNS -> SMTP [color=red]
DNS -> IMAP [color=red]
DNS -> XMPP [color=red]
DNS -> SIP [color=red]
LDAP -> SMTP [color=blue]
LDAP -> IMAP [color=blue]
LDAP -> XMPP [color=blue]
LDAP -> SIP [color=blue]
XMPP -> "RTP/RTCP"
SIP -> "RTP/RTCP"
SMTP -> IMAP
SQL -> Portal [color=green]
HTTP -> Portal
SQL -> Webmail [color=green]
HTTP -> Webmail
SMTP -> Webmail
IMAP -> Webmail
LDAP -> Backup [color=blue]
SQL -> Backup [color=green]
SMB -> Backup
HTTP -> Backup
DNS -> Backup [color=red] DNS -> SNMP [color=red]
}
</graphviz>24/09: Pesquisa
Na aula anterior, foi construída uma primeira tabela como proposta de solução do problema:
Camada | Serviço | Protocolo | Implementação |
Facilitadores | Por se tratar de um servidor em rede dedicada, não será preciso qualquer serviço deste tipo. | ||
Dados/Diretórios | Nomes de computadores | DNS | Bind |
Dados/Diretórios | Usuários e grupos | LDAP | OpenLDAP |
Dados/DBs | Banco de dados | SQL | MySQL |
(In)Diretos/Compartilhamento | na Internet | HTTP | Apache |
(In)Diretos/Comunicação | Bate-papo | XMPP | Openfire |
Aplicações | ??? | ||
Gerência | Monitoramento e contabilização | SNMP | Cacti |
Para esta sexta-feira, portanto, a tarefa é pesquisar por aplicações Web que atendam às necessidade do projeto. Como ponto de partida:
27/09: Instalação e DNS
Instalação de programas
- Etapas para uma boa instalação:
aptitude update
aptitude search <nome>
aptitude install <pacote>
DNS
- Instalação:
aptitude install bind9
- Configuração do controle de acesso dos clientes por IP:
cd /etc/bind/
vi named.conf.options
- Conteúdo do arquivo /etc/bind/named.conf.options:
options { listen-on { any; }; listen-on-v6 { any; }; allow-query { any; }; allow-query-cache { any; }; allow-recursion { 127.0.0.0/8; <rede_local>/<máscara>; }; };
- Criação da zona (domínio DNS direto):
vi named.conf.local
- Conteúdo do arquivo /etc/bind/named.conf.local:
zone "integrado.sj.ifsc.edu.br" { type master; file "/etc/bind/integrado.sj.ifsc.edu.br"; };
29/09: Bases de Dados
- Escolhido o MySQL. A instalação se dá da seguinte maneira:
aptitude install mysql-server
- Visualização das bases e usuários:
mysql -u root -p
SHOW DATABASES;
USE mysql;
SHOW TABLES;
SELECT * FROM user;
SELECT * FROM db;
- Criação de uma base portal para o usuário usuario com a senha senha:
mysql -u root -p
CREATE DATABASE portal;
GRANT ALL PRIVILEGES ON portal.* TO usuario@localhost IDENTIFIED BY 'senha';
FLUSH PRIVILEGES;
graph DB { "Base da Dados" [shape=Mrecord]
Máquina -- Usuário Senha -- Usuário Usuário -- "Base da Dados" Máquina -- "Base da Dados" "Base da Dados" -- Privilégios Usuário -- Privilégios }
</graphviz>06/10: Dos Bancos de Dados aos Aplicativos Web
digraph BDaoAplicWeb { SQL LDAP }
</graphviz>08/11: Firewall
Filtro de pacotes utilizando iptables (eu prefiro esse):
#!/bin/bash
# Política-padrão: bloqueado exceto o contrário
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD ACCEPT
iptables -t filter -P OUTPUT ACCEPT
# Limpeza de regras antigas
iptables -t filter -F
iptables -t nat -F
# Ativar o roteamento
sysctl -w net.ipv4.ip_forward=1
# NAT: saída dos pacotes
# iptables -t nat -A POSTROUTING -s <rede local/máscara> -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.0.0.68/30 -j MASQUERADE
#
# Redirecionamento de porta: entrada dos pacotes
# iptables -t nat -A PREROUTING -p <protocolo> --dport <porta> -j DNAT \
# --to-destination <IP>:<porta>
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT \
--to-destination 10.0.0.70:80
# Filtro de pacotes: saída dos pacotes
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Filtro de pacotes: entrada dos pacotes
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
exit 0
10/11: Backup
#!/bin/bash
#
# 20101110 Ederson Torresini: rotina de backup de diretórios importantes
ORIGEM="/etc /home /var"
DESTINO="/backup"
DIA=`date +%Y%m%d`
DIA_DA_SEMANA=`date +%A`
EMAIL=root@servidor
# Criar o diretório de destino
mkdir -p ${DESTINO}
chmod 700 ${DESTINO}
chown root ${DESTINO}
# Função: backup completo
completo()
{
tar cvzf ${DESTINO}/${DIA}.tar.gz ${ORIGEM} \
> ${DESTINO}/${DIA}.txt \
2> /dev/null
}
# Função: backup incremental (somente último dia)
incremental()
{
tar cvzf ${DESTINO}/${DIA}.tar.gz `find ${ORIGEM} ! -type d -mtime -1`
\
> ${DESTINO}/${DIA}.txt \
2> /dev/null
}
# Função principal
if [ "${DIA_DA_SEMANA}" = "sunday" -o "${DIA_DA_SEMANA}" = "domingo" ]
then
completo
else
incremental
fi
mysqldump -uroot -proot --all-databases > ${DESTINO}/${DIA}.sql
cat ${DESTINO}/${DIA}.txt | mail -s "[Backup]: ${DIA}" ${EMAIL}
find ${DESTINO} -type f -mtime +7 -exec rm -f {} \;
exit 0
17/11: Prova Final
Para esta prova, é FORTEMENTE recomendado utilizar um sistema novo.
- Construir um script que gera um relatório diário com:
- Usuários sem senha ou bloqueados por senha;
- Usuários sem interpretador de comandos válido;
- Arquivos sem usuário ou grupo do sistema. Guardar os relatórios por 1 semana.
- Construir um script que monitora os seguintes serviços:
- NTP
- Syslog
- SSH
- DNS
- HTTP. caso algum serviço esteja parado, o próprio script deverá (re)iniciar o serviço e guardar essa informação (reinício) em arquivo de log a definir.
- Configurar um domínio DNS:
- zona <nomecompleto>.com.br;
- Faixa de IPs: 192.168.<máquina>.0/28.
- Monitoramento de contabilização do servidor:
- Rede: todas as interfaces físicas e lógicas.
- Sistema: consumo de processamento e de memórias principal e secundária.
- Construir um firewall que bloqueia todo o tráfego de rede exceto os serviços listados na questão 2.
- Construir um script que realiza o backup de:
- Arquivos pessoais (/home) diariamente.
- Arquivos de sistema (/etc e /var) semanalmente. Deve haver pelo menos dois backups - enquanto um é processado, haverá sempre outro para segurança. Assim, o histórico de armazenamento será de até 2 períodos. Além disso, cada backup deve listar quais arquivos e seus metadados (datas, propriedades e permissões) em arquivo anexo.
Projeto Integrador
- URL: Projeto Integrador - 2010.2.
- Período de desenvolvimento: 22/11 a 15/12.
- Data de apresentação: 16/12.
Conceitos Finais
Aluno | Conceito |
Andreia | C |
Cleidiane | D |
Diony | C |
Everton | D |
Gabriel | D |
José Tadeu | D |
Karine | C |
Leonardo | D |
Lucas | C |
Luis | C |
Rafael | C |
Ronaldo | A |