Aula 1

174 visualizações

Publicada em

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
174
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
4
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Aula 1

  1. 1. Infraestrutura de Internet e Servidores Web André Frederico Lucas da Silva andresilva@utfpr.edu.br
  2. 2. • Arquitetura Cliente / Servidor• Protocolo TCP/IP• Protocolo HTTP• Servidores WEB • Apache • Nginx • Varnish• Módulos para Servidores WEB• Banco de Dados – MySQL e PostgreSQL• Ferramentas• Segurança
  3. 3. “É uma arquitetura onde o processamento da informação é dividido em módulos ou processos distintos. Um processo é responsável pela manutenção da informação (Servidor), enquanto que outro é responsável pela obtenção dos dados (Cliente)”. BATTISTI, (2001, pág. 38). “É uma abordagem da computação que separa os processos em plataformas independentes que interagem, permitindo que osrecursos sejam compartilhados enquanto se obtém o máximo debenefício de cada dispositivo diferente, ou seja, Cliente/Servidor é um modelo lógico”. VASKEVITCH, (1995, pág. 375).
  4. 4. Cliente:• Inicia e termina as conversações com os Servidores;• Não se comunica com outros Clientes;• Normalmente responsável pela entrada e saída de dados e comunicação com o usuário;• Torna a rede ‘transparente’ ao usuário;• Hardware: pode ser um micro simples;Servidor:• Execução contínua;• Recebe e responde a solicitações dos Clientes;• Pode se comunicar com outros Servidores;• Presta serviços distribuídos;• Atende a diversos Clientes simultaneamente;• Exige máquinas mais robustas, com grande capacidade deprocessamento;• Software em constante execução, aguardando ser chamado peloCliente.
  5. 5. Confiabilidade Se uma máquina apresenta algum problema, ainda que seja um dos Servidores, parte do Sistema continua ativo.Centralização e Segurança Dados são armazenados no servidor, que geralmente possuem controles de segurança muito maior do que a maioria dos clientes.O Sistema cresce facilmente Torna-se fácil modernizar o Sistema quando necessário.O Cliente e o Servidor podem possuir ambientes operacionais individuais eheterogêneos Pode-se misturar várias plataformas para melhor atender às necessidades individuais de diversos setores e usuários.
  6. 6. Sobrecarga Um servidor poderá ficar sobrecarregado caso receba mais solicitações simultâneas dos clientes do que pode suportar.O Cliente e o Servidor podem possuir ambientes operacionais individuais eheterogêneos Necessidade da programação se adequar aos diversos sistemas operacionais, tanto no lado Cliente como no lado Servidor
  7. 7. Denominado anteriormente de Internet Protocol Suite, o TCP teveorigem em maio de 1974, quando pesquisadores do IEEEapresentaram um protocolo de compartilhamento de pacotes emrede.O TCP (acrônimo para o inglês Transmission Control Protocol) éum dos protocolos sob os quais a internet é sustentada. Aversatilidade e robustez deste protocolo tornou-o adequado aredes globais, já que este verifica se os dados são enviados deforma correta, na sequência apropriada e sem erros, pela rede.O TCP é um protocolo de nível da camada de transporte (camada4) do Modelo OSI e é sobre o qual que se assentam a maioria dasaplicações, como o SSH, FTP, HTTP
  8. 8. Orientado à conexão - A aplicação envia um pedido de conexãopara o destino e usa a "conexão" para transferir dados.Ponto a ponto - uma conexão TCP é estabelecida entre doispontos.Confiabilidade - O TCP usa várias técnicas para proporcionar umaentrega confiável dos pacotes de dados, que é a grandevantagem que tem em relação ao UDP. O TCP permite arecuperação de pacotes perdidos, a eliminação de pacotesduplicados, a recuperação de dados corrompidos, e poderecuperar a ligação em caso de problemas no sistema e na rede.Full duplex - É possível a transferência simultânea em ambasdireções (cliente-servidor) durante toda a sessão.
  9. 9. Handshake - Mecanismo de estabelecimento e finalização deconexão a três e quatro tempos, respectivamente, o que permitea autenticação e encerramento de uma sessão completa. O TCPgarante que, no final da conexão, todos os pacotes foram bemrecebidos.Controle de fluxo - O TCP usa o campo janela ou window paracontrolar o fluxo. O receptor, à medida que recebe os dados,envia mensagens ACK (=Acknowledgement), confirmando arecepção de um segmento. Em resumo, elimina a possibilidadedo remetente sobrecarregar o destinatário.
  10. 10. O TCP/IP, é formado por um grande conjunto de diferentesprotocolos de rede. Ele deriva dos dois protocolos mais importantese mais utilizados, que são os seguintes:TCP: O TCP é um protocolo de transporte e executa importantesfunções para garantir que os dados sejam entregues de umamaneira confiável, ou seja, sem que os dados sejam corrompidosou alterados.IP: É um protocolo de endereçamento, um protocolo de rede.Podermos afirmar que as principais funções do protocolo IP sãoendereçamento e roteamento, ou de uma maneira mais simples,fornecer uma maneira para identificar unicamente cada máquinada rede (endereço IP) e uma maneira de encontrar um caminhoentre a origem e o destino (Roteamento).
  11. 11. Cabeçalho TCP
  12. 12. Cabeçalho IPv4
  13. 13. • O HTTP - HyperText Transfer Protocol / Protocolo de Transferência de Hipertexto - é um protocolo de comunicação, mantido pelo W3C utilizado para sistemas de informação de hipermídia distribuídos e colaborativos. Seu uso para a obtenção de recursos interligados levou ao estabelecimento da World Wide Web.• Ele surgiu da necessidade de distribuir informações pela rede, e para isso, foi necessário criar uma forma padronizada de comunicação entre os clientes e os servidores da Web e entendida por todos os computadores ligados à Internet.• O HTTP é um protocolo de aplicação responsável pelo tratamento de pedidos e respostas entre cliente e servidor na Internet. Com isso, o protocolo HTTP passou a ser utilizado para a comunicação entre computadores na Internet e a especificar como seriam realizadas as transações entre clientes e servidores, através do uso de regras básicas.
  14. 14. • HTTP utiliza o modelo cliente-servidor, baseando-se no paradigma de requisição e resposta.• Um programa requisitante (cliente) estabelece uma conexão com um outro programa receptor (servidor) e envia-lhe uma requisição, contendo a URI, a versão do protocolo, uma mensagem MIME (padrão utilizado para codificar dados em formato de textos ASCII para serem transmitidos pela Internet) contendo os modificadores da requisição, informações sobre o cliente e, possivelmente, o conteúdo no corpo da mensagem.
  15. 15. • GET • Solicita algum recurso por meio do protocolo HTTP• HEAD • Variação do GET. Obtém somente o cabeçalho da resposta• POST • Envia dados para serem processados para o recurso especificado• PUT • Envia certo recurso (Upload).• DELETE • Exclui o recurso.• TRACE • Ecoa o pedido, de maneira que o cliente possa saber o que os servidores intermediários estão mudando em seu pedido.• OPTIONS • Recupera os métodos HTTP que o servidor aceita.• CONNECT • Serve para uso com um proxy que possa se tornar um túnel SSL (um túnel pode ser usado, por exemplo, para criar uma conexão segura).
  16. 16. telnet www.google.com 80Trying 64.233.163.104...Connected to www.l.google.com.Escape character is ^].GET / HTTP/1.1HTTP/1.1 302 FoundLocation: http://www.google.com.br/Cache-Control: privateContent-Type: text/html; charset=UTF-8Set-Cookie: PREF=ID=c828845416419fb6:TM=1271466117:LM=1271466117:S=xWBi4aTDqXGboVMI;expires=Mon, 16-Apr-2012 01:01:57 GMT; path=/; domain=.google.comSet-Cookie:NID=33=rLLQbMPjTqBPKgAPbtfIs4AvjR4umT7D9zd4Qj_nev7qqyHdsqb9gq9DkDRzljiLAFMtdvCPcHfu6TFzdtZAcxCciOwt4s9gxsD96Ya1myHU93tJiTIHJZs0zbCoUdZy; expires=Sun, 17-Oct-2010 01:01:57 GMT; path=/;domain=.google.com; HttpOnlyDate: Sat, 17 Apr 2010 01:01:57 GMTServer: gwsContent-Length: 222<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8“><TITLE>302 Moved</TITLE></HEAD><BODY><H1>302 Moved</H1>The document has moved<A HREF=http://www.google.com.br/>here</A>.</BODY></HTML>
  17. 17. POST /diretorio/arquivo.html HTTP/1.1Host: www.exemplo.comUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; pt-BR; rv:1.9.2b5)Gecko/20091204 Firefox/3.6b5Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3Accept-Encoding: gzip,deflateAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7Keep-alive: 115Cookie: nome=valor; nome2=valor2Connection: keep-aliveContent-Length: 28usuario=exemplo&senha=123456
  18. 18. • HTTP / 1.0 – Stateless Isto significa que as conexões entre um cliente e um servidor são encerradas após o envio de cada requisição ou resposta. Cada vez que uma conexão é estabelecida ou encerrada, é consumida uma grande quantidade de tempo da CPU, de largura de banda e de memória.• HTTP / 1.1 – Persistent Possibilita que uma conexão seja estabelecida para enviar várias requisições em seqüência sem a necessidade de esperar por cada resposta, no qual serão recebidas na mesma ordem em que as solicitações foram enviadas, um processo chamado de pipelining.
  19. 19. CLIENTE SERVIDOROPEN CLIENTE SERVIDOR OPENCLOSEOPEN TEMPOCLOSE TEMPOOPEN CLOSE HTTP / 1.1 – PersistentCLOSE HTTP / 1.0 – Stateless
  20. 20. principal.jpg = 245KB principal.jpg = 45KBwww.utfpr.edu.br -> 580.5KB www.utfpr.edu.br -> 380KB1 requisições/seg.: 1 requisições/seg.:1 Segundo: 580 KB 1 Segundo: 380 KB1 Minuto: 33 MB 1 Minuto: 22 MB1 Hora: 1.9 GB 1 Hora: 1.3 GB1 Dia: 47 GB 1 Dia: 31 GB1 Mês: 1.4 TB 1 Mês: 950 GB1 Ano: 17 TB 1 Ano: 11 TBTempo Carregamento: 1,54 s Tempo Carregamento (Previsto): 1,14sTempo Carregamento Tempo Carregamento principal.jpgprincipal.jpg: 1,16s (previsto): 400ms
  21. 21. Are You Kidding Me ???½ segundo a menos faz tanta diferença assim??? O que é ½ segundo???
  22. 22. Em 2009 o Google fez um experimento onde expôs a um grupo de usuários uma busca mais lenta. “No experimento, o resultado por página aumentou de 10 para 30.Essa alteração, aumentou o tempo de carregamento de 0.4s para 0.9s. Resultado: As buscas diminuíram em 20%. 0,5s
  23. 23. O Yahoo! descobriu que, para cada 400ms de melhora na performance, seu tráfego aumentava em 9% 400ms A Amazon concluiu que apenas 100ms de melhora em seu site, aumentou 1% seu faturamento. 100ms 1º Trimestre de 2012 = U$ 13,2 Bilhões – 1% = U$132 Milhões 2º Trimestre de 2012 = U$ 12,8 Bilhões – 1% = U$128 Milhões
  24. 24. "If it is fast and ugly, they will use itand curse you; if it is slow, they will not use it" David Cheriton Computer Science Professor Stanford University
  25. 25. "Performance golden rule: Optimize front-end performance first, thats where 80/90% of the end-user response time is spent."" Steve Souders High Performance Web Sites
  26. 26. Um software responsável por aceitar pedidos HTTP de clientes, e servi-los com as respectivas respostas, incluindo opcionalmente dados, quegeralmente são páginas web, tais como documentos (html, php, etc) com objetos embutidos (imagens, etc.); Timothy John Berners-Lee
  27. 27. Criado em 1995Responsável por 58% dos sites ativos no mundo.Aproximadamente 102 Mi de sites ativos.Implementa 100% do padrão HTTP/1.1;Disponível para diversos SOs, além do Linux, para qual foi criado;Bastante estável e seguro;Suporte ao protocolo HTTPS;Facilmente extensível (PHP, JSP, Perl, Python etc.) por meio demódulos extras;Suporte a VirtualHosts, possibilitando a hospedagem várias páginasno mesmo servidor.
  28. 28. IIS – Internet Information ServiceCriado em 1996 – Windows NT 3.51Responsável por aproximadamente 23 Mi de sites ativosMuito utilizado para aplicações em ambientes MS
  29. 29. Criado em 20053% de sites ativos em 2008Ultrapassou o IIS em 2012 ficando em 2º lugar no ranking, com12.18% de sites ativosHoje é responsável por aproximadamente 22 Mi de sites ativos em3º lugar.
  30. 30. root - (root)https://www.virtualbox.org/wiki/Downloads
  31. 31. ENDEREÇO IP SERVIDOR DNSnano /etc/network/interfaces nano /etc/resolv.confauto ethXiface ethX inet static(ou dhcp) nameserver XXX.XXX.XXX.XXXaddress 172.17.X.Xnetmask 255.255.0.0gateway 172.17.250.1 Pressionar CTRL + X Pressionar Y Pressionar Enter (Salvar o arquivo noPressionar CTRL + X caminho indicado)Pressionar Y APLICANDO AS CONFIGURAÇÕES /etc/init.d/networking restartPressionar Enter (Salvar o arquivo nocaminho indicado)
  32. 32. Atualizar pacotes informações sobre repositóriosapt-get updateManter o S.O. sempre atualizadoapt-get upgradeInstalando VIMapt-get install vimComandos Básicos VIMPressionar INSERT 1x = InserirPressionar INSERT 2x = SubstituirPressionar SHIFT+Q = Abre modo de salvamento/saídaDigitar wq = w - Salva o arquivo / q - Fecha o editor! = Forçar Ex: wq! (Salva e sai forçadamente) / q! (Sai forçadamente)
  33. 33. • Instalar pacote VIM: apt-get instal vim• editar o arquivo /etc/vim/vimrc e descomentar a linha syntax on
  34. 34. • Instalar pacote NTPDATE: apt-get install ntpdate• criar o arquivo ntp em /etc/cron.hourly #!/bin/sh # # ATUALIZACAO DA HORA ntpdate pool.ntp.br exit 0• Reiniciar o serviço CRON/etc/init.d/cron restart
  35. 35. • Instalar pacote SSH: apt-get instal ssh• editar o arquivo /etc/ssh/sshd_config Port XXXX ... PermitRootLogin no ... PermitEmptyPassword no ... PasswordAuthentication yes• Editar arquivo securettycp /etc/securetty /etc/securetty.oriecho “## Arquivo modificado ##” > /etc/securetty• Reiniciar o serviço SSH/etc/init.d/ssh restart
  36. 36. • Instalar pacote SSH: apt-get instal ssh• editar o arquivo /etc/ssh/sshd_config Port XXXX ... PermitRootLogin no ... PermitEmptyPassword no ... PasswordAuthentication yes• Editar arquivo securettycp /etc/securetty /etc/securetty.oriecho “## Arquivo modificado ##” > /etc/securetty• Reiniciar o serviço SSH/etc/init.d/ssh restart
  37. 37. WORKER (PHP através de CGI)PREFORK (PHP como módulo do apache)• Cada request é tratato por um processo separado• Tolerante a falhas• Problema no processo filho não implica no pai• Estável• Pode ser utilizado com módulos não thread-safe
  38. 38. WORKER (PHP através de CGI)apt-get install apache2-mpm-workerapt-get install php5 php5-cgi php5-cliapt-get install libapache2-mod-fcgidAdicionar as linhas abaixo dentro da seção Directory nos arquivos dos sites/etc/apache2/sites-enabled/xxxxxxxAddHandler fcgid-script .phpFCGIWrapper /usr/lib/cgi-bin/php5 .phpOptions ExecCGIAtivar o Módulo: a2enmod NOMEDOMODULO (fcgid)Desativar o Módulo: a2dismod NOMEDOMODULO
  39. 39. Para retirar a mensagem “Could not reliably determine the serversfully qualified domain name, using 127.0.1.1 for ServerName”Editar o arquivo httpd.conf e Adicionar a seguinte linha:ServerName NOMEDOSERVIDORMYSQL: apt-get install php5-mysqlPOSTGRE: apt-get install php5-pgsql
  40. 40. VHOSTCriar o arquivo de configuração do site na pasta sites-availableEditar o arquivo criado com as seguintes linhas:ServerAdmin email@admin.com.brServerName www.nomedosite.com.brDocumentRoot /var/www/pastadosite<Directory /var/www/pastadosite/>Criar a pasta conforme indicado no arquivo de conf.Logs:ErrorLog ${APACHE_LOG_DIR}/error_nomedosite.logCustomLog ${APACHE_LOG_DIR}/access_nomedosite.log vhost_combined
  41. 41. Certificado SSLapt-get install openssl ca-certificatesCriar pasta cert dentro de /etc/apache2 e entrar na pasta criadaGerar a chave privada (Private Key):openssl genrsa -des3 -out nome_certificado.key 1024 (2048)Retirar a Senha da chave privada:openssl rsa -in nome_certificado.key -out nome_certificado_nopwd.key *** IMPORTANTE: executar chmod 600 nome_certificado_nopwd.key ***Gerar o pedido de certificação (Certificate Signing Request):openssl req -new -key nome_certificado.key -out nome_certificado.csr *** O Comon Name, deverá ter o mesmo nome do servidor, exemplo: host.dominio.com.br***Assinar o certificado (Self-Signed Certificate):openssl x509 -req -days 365 -in nome_certificado.csr -signkeynome_certificado.key -out nome_certificado.crt
  42. 42. Ativar o módulo SSLa2enmod sslEditar o arquivo do site ssl com as seguintes linhas:ServerAdmin email@admin.com.brServerName www.nomedosite.com.brDocumentRoot /var/www/pastadosite<Directory /var/www/pastadosite/>Logs:ErrorLog ${APACHE_LOG_DIR}/error_nomedosite.logCustomLog ${APACHE_LOG_DIR}/access_nomedosite.logvhost_combinedSSLCertificateFile /etc/apache2/cert/cert_vhost1.crtSSLCertificateKeyFile /etc/apache2/cert/cert_vhost1_nopwd.key
  43. 43. Páginas de erro personalizadas/etc/apache2/conf.d/localized-error-pagesMelhorar Segurança Básica/etc/apache2/conf.d/security ServerTokens Prod ServerSignature Off TraceEnabler Off
  44. 44. PREFORK (PHP como módulo do apache)apt-get install apache2-mpm-preforkapt-get install php5 libapache2-mod-php5Para retirar a mensagem “Could not reliably determine the servers fullyqualified domain name, using 127.0.1.1 for ServerName”Editar o arquivo httpd.conf e Adicionar a seguinte linha:ServerName NOMEDOSERVIDORMYSQL: apt-get install php5-mysqlPOSTGRE: apt-get install php5-pgsql
  45. 45. VHOSTCriar o arquivo de configuração do site na pasta sites-availableEditar o arquivo criado com as seguintes linhas:ServerAdmin email@admin.com.brServerName www.nomedosite.com.brDocumentRoot /var/www/pastadosite<Directory /var/www/pastadosite/>Criar a pasta conforme indicado no arquivo de conf.Logs:ErrorLog ${APACHE_LOG_DIR}/error_nomedosite.logCustomLog ${APACHE_LOG_DIR}/access_nomedosite.logvhost_combined
  46. 46. Certificado SSLapt-get install openssl ca-certificatesCriar pasta cert dentro de /etc/apache2 e entrar na pasta criadaGerar a chave privada (Private Key):openssl genrsa -des3 -out nome_certificado.key 1024 (2048)Retirar a Senha da chave privada:openssl rsa -in nome_certificado.key -out nome_certificado_nopwd.key *** IMPORTANTE: executar chmod 600 nome_certificado_nopwd.key ***Gerar o pedido de certificação (Certificate Signing Request):openssl req -new -key nome_certificado.key -out nome_certificado.csr *** O Comon Name, deverá ter o mesmo nome do servidor, exemplo: host.dominio.com.br***Assinar o certificado (Self-Signed Certificate):openssl x509 -req -days 365 -in nome_certificado.csr -signkeynome_certificado.key -out nome_certificado.crt
  47. 47. Ativar o módulo SSLa2enmod sslEditar o arquivo do site ssl com as seguintes linhas:ServerAdmin email@admin.com.brServerName www.nomedosite.com.brDocumentRoot /var/www/pastadosite<Directory /var/www/pastadosite/>Logs:ErrorLog ${APACHE_LOG_DIR}/error_nomedosite.logCustomLog ${APACHE_LOG_DIR}/access_nomedosite.logvhost_combinedSSLCertificateFile /etc/apache2/cert/cert_vhost1.crtSSLCertificateKeyFile/etc/apache2/cert/cert_vhost1_nopwd.key
  48. 48. Páginas de erro personalizadas/etc/apache2/conf.d/localized-error-pagesMelhorar Segurança Básica/etc/apache2/conf.d/security ServerTokens Prod ServerSignature Off TraceEnabler Off
  49. 49. Complementos FirefoxFirebugPageSpeedApache Benchmarkingab -k -n 50000 -c 2 -e apache.cvs http://202.54.200.1/snkpage.html

×