• Nenhum resultado encontrado

Curso de extensão em Administração de redes com GNU/Linux

N/A
N/A
Protected

Academic year: 2021

Share "Curso de extensão em Administração de redes com GNU/Linux"

Copied!
59
0
0

Texto

(1)

Curso de extensão em Administração de redes com GNU/Linux

Italo Valcy - italo@dcc.ufba.br

Gestores da Rede Acadêmica de Computação Departamento de Ciência da Computação

(2)

Todo o material aqui disponível pode, posteriormente, ser utilizado sobre os termos da:

Creative Commons License:

Atribuição - Uso não comercial - Permanência da Licença

http://creativecommons.org/licenses/by-nc-sa/3.0/

Nota:  Parte  deste  conteúdo  foi  inspirado  nos 

slides  de  Humberto  Galiza  (galiza@dcc.ufba.br)  em  seu  curso  de  “GNU/Linux  básico”  datado  de  Março/2009 ministrado no CEFET­Ba.

(3)

Assuntos abordados

Serviços web

Servidor web – Apache

Linguagem dinâmica – PHP Banco de dados – MySQL

(4)

Serviços web

Histórico

Início 1989 – CERN (Centro Europeu de

Pesquisas Nucleares) precisava de um meio de

viabilizar o trabalho cooperativo por cientistas

espalhados por diversos países, através da

troca de documentos.

1991 – primeira versão da Web, baseada em texto. 1993 – NCSA - browser gráfico Mosaic

1994 – Netscape

(5)

Serviços web

Histórico

Idéia básica: distribuição de conteúdo estático

(tipicamente páginas escritas em HTML).

Evolução: distribuição de conteúdo gerado

dinamicamente, em resposta a dados fornecidos

pelo usuário (por exemplo através da consulta a

um banco de dados corporativo).

CGI – Common Gateway Interface: a forma

mais antiga de prover conteúdo dinâmico.

(6)

Servidor web

Protocolo HTTP

HTTP - HyperText Transmission Protocol – é o

protocolo usado na comunicação entre o

servidor Web e o Browser.

HTTP constitui a base sobre a qual o servidor

Web realiza suas operações.

A idéia inicial era a de que o HTTP deveria ser

um protocolo bem simples.

Mesmo após várias modificações e melhorias, a

idéia básica do HTTP continua sendo a mesma,

simplicidade.

(7)

Servidor web

Funcionamento do serviço

Uma conexão HTTP é feita como comandos

telnet, que por sua vez são formados por

mensagens texto trocadas através de uma

conexão TCP.

Um exemplo:

$ telnet app.dcc.ufba.br 80 Trying 200.17.147.9... Connected to app.dcc.ufba.br. Escape character is '^]'. GET /~italo/helloworld.html HTTP/1.0

(8)

Servidor web

Funcionamento do serviço

A resposta também será em texto-limpo:

HTTP/1.1 200 OK Date: Sun, 03 May 2009 14:14:42 GMT Server: Apache/2.2.9 (Debian) mod_fastcgi/2.4.6     mod_ldap_userdir/1.1.14 PHP/5.2.6­1+lenny2 with     Suhosin­Patch mod_python/3.3.1 Python/2.5.2     mod_ssl/2.2.9 OpenSSL/0.9.8g mod_perl/2.0.4 Perl/v5.10.0 Last­Modified: Sun, 03 May 2009 14:14:16 GMT ETag: "33daf­36­46902a92d1e00" Accept­Ranges: bytes Content­Length: 54 Connection: close Content­Type: text/html <html> <body>     <p>Hello world!</p> </body>

(9)

Servidor web

Funcionamento do serviço

Todo site na Web deve manter um processo

servidor que fica aceitando pedidos de conexão

na porta TCP 80.

Uma vez estabelecida a conexão, o cliente

envia um pedido e o servidor envia a resposta

correspondente.

Tendo atendido o pedido, a conexão é

encerrada.

(10)

Servidor web

Funcionamento do serviço

Servidor HTTP

Gerencia um sistema virtual de arquivos e diretórios

Mapeia pastas do sistema de arquivos local (ex.: /var/www/htdocs) a diretórios virtuais (ex: /) acessíveis remotamente

Papel do servidor HTTP

Interpretar requisições HTTP do cliente (métodos GET, POST, …)

Devolver resposta HTTP à saída padrão (código de resposta 200, 404, etc., cabeçalho e dados)

Papel do cliente HTTP

(11)

Servidor web

Funcionamento do serviço

Métodos

GET: solicita algum recurso como um arquivo ou um

script CGI

HEAD: É o mesmo que GET, porém retorna apenas o

cabeçalho da resposta.

POST: Envia dados para serem processados (ex. forms

html)

PUT: Envia certo recurso. DELETE: Exclui o recurso.

OPTIONS: Recupera os métodos HTTP que o servidor

(12)

Servidor web

Funcionamento do serviço

Resposta - Códigos de retorno

1xx: Informational (Informação) – utilizada para enviar

informações para o cliente de que sua requisição foi recebida e está sendo processada;

2xx: Success (Sucesso) – indica que a requisição do

cliente foi bem sucedida;

3xx: Redirection (Redirecionamento) – informa a ação

adicional que deve ser tomada para completar a requisição;

4xx: Client Error (Erro no cliente) – avisa que o cliente

fez uma requisição que não pode ser atendida;

(13)

Servidor web

LAMP

Linux -> Estabilidade

Apache -> Solidez

MySQL -> Banco de Dados

PHP -> Linguagem Dinâmica

(14)

Servidor web

(15)

Servidor web

Apache

Foi criado em 1995 por Rob McCool, então

funcionário do NCSA (National Center for

Supercomputing Applications).

Segundo pesquisas de março de 2009[1], é

utilizado em 45,95% dos servidores web ativos.

(16)

Servidor web

Apache - recursos

Suporte a HTTP para criação de hosts virtuais

Suporte SSL

Suporte CGI, Perl e PHP

Suporte a autenticação baseado em HTTP

Suporte a Server Side Includes (SSI)

Suporte a Servlets Java

Logs Customizáveis

(17)

Servidor web

Apache - versões

Apache 1

Suporte a DSO (Dynamic Shared Objects), permite a carga e descarga dinâmica de módulos

Suporte a Windows NT e sucessores

Apache 2

Suporte a Ipv6

Suporte a multithreading e multiprocessamento

Melhorias em diversos módulos (mod_ssl, mod_proxy, etc.)

(18)

Servidor web

Instalação do apache

No Debian GNU/Linux:

aptitude install apache2

Gerenciando o daemon:

(19)

Servidor web

Configuração do apache

Diretório global de configuração no Debian:

/etc/apache2 ou /etc/apache

Apache 1.3.x

httpd.conf – arquivo de configuração principal srm.conf – guarda a diretiva DocumentRoot access.conf – controle de acesso a arquivos

(20)

Servidor web

Configuração do apache2

ports.conf e apache2.conf

ports.conf – portas cujo daemon httpd irá escutar Modelo simplificado de configuração global:

/etc/apache2/apache2.conf

Diretórios de configuração:

Configurações globais específicas

/etc/apache2/conf.d/

Módulos disponíveis

/etc/apache2/mods-available/

Módulos disponíveis e habilitados no momento:

/etc/apache2/mods-enabled/

“Sites” disponíveis, mas desabilitados

(21)

Servidor web

Configuração do apache2

Seção global configuration: Define configurações que irão alterar o comportamento do servidor web

ServerRoot ErrorLog

/etc/apache2/conf.d/:

security – opções padrão de segurança do servidor web charset – codificação padrão para as páginas servidas

Carga e descarga de módulos:

a2enmod <nome_do_modulo> a2dismod <nome_do_modulo>

(22)

Servidor web

Módulos do apache2

mod_userdir

Permite que usuarios tenham um diretório acessível pelo servidor web.

Por padrão este diretório é o /home/<usuario>/public_html/ e pode ser acessado via URL: http://site.com.br/~usuario/

mod_status – Informações sobre a saúde do servidor mod_alias – Permite construir aliases entre localizações mod_proxy

Permite transformar o apache2 em um servidor proxy (tanto proxy direto, quanto proxy reverso)

(23)

Servidor web

Habilitando e desabilitando sites

Os sites são configurados no /etc/apache2/sites-available. Cada arquivo de configuração ali define os recursos que o site dispõe e políticas de acesso à esses recursos.

Para gerenciar seus sites:

a2ensite <arquivo_de_configuracao> a2dissite <arquivo_de_configuracao>

OBS: Onde <arquivo_de_configuracao> é um arquivo texto existente no diretório /etc/apache2/sites-available/

(24)

Servidor web

Virtual hosts

Capacidade de hospedar mais do que um web

site numa única máquina, com um endereço IP

ou mais.

Name-Based Virtual Hosts IP-based Virtual Hosts

(25)

Servidor web

Name-based Virtual hosts

Forma mais utilizada, pois é necessário apenas um IP para hospedar múltiplos sites web (vários domínios)

A configuração é feita diretamente em /etc/apache2/sites-available/<nome-do-site>

Para ativar o suporte a Name-based Virtual Hosts, basta adicionar a sub-diretiva de configuração: “NameVirtualHost *:80”

O “*:80” fará com que o apache possa aceitar todas as conexões de entrada na porta 80 (HTTP)

O próximo passo é criar o arquivo do site:

(26)

Servidor web

Name-based Virtual hosts

Exemplo: /etc/apache2/sites-available/meusite <VirtualHost *:80>   ServerName www.example.com   DocumentRoot /var/www/example.com   ServerAdmin webmaster@example.com   ErrorLog /var/log/apache2/example.com­error_log   CustomLog /var/log/apache2/example.com­access_log common </VirtualHost> <VirtualHost *:80>   ServerName www.othercompany.com   DocumentRoot /var/www/othercompany.com   ServerAdmin webmaster@othercompany.com   ErrorLog  /var/log/apache2/othercompany.com­error_log   CustomLog /var/log/apache2/othercompany.com­access_log common </VirtualHost>

(27)

Servidor web

Name-based Virtual hosts

Na subdiretiva “NameVirtualHost *” autorizamos o apache aceitar todas as conexões

Neste exemplo, temos 2 virtual hosts em um mesmo arquivo de configuração (típico exemplo, onde temos 2 sites hospedados na mesma máquina).

O Apache lê o campo HOST do cabeçalho HTTP para saber para que site (virtualhost) repassar a conexão. O site que irá receber a requisição, é aquele cuja diretiva

ServerName for exatamente igual ao campo HOST do

(28)

Servidor web

Name-based Virtual hosts

As diretivas ErrorLog e CustomLog não precisam conter o dominio. Pode ser qualquer outro nome. Se não for especificado um, o apache enviará os logs para o local padrão:

/var/log/apache2/error.log /var/log/apache2/access.log

ServerAdmin: representa o e-mail do responsável por

aquele determinada Virtual Host. Em caso de problemas, este e-mail aparecerá nas mensagens reportadas pelo servidor

DocumentRoot – Raiz do site web – diretório que

(29)

Servidor web

IP-based Virtual hosts

Nesta modalidade, uma mesma máquina, terá apenas uma instância do apache, e esta por sua vez, responderá por vários sites web, mas cada um com um endereço IP diferente.

Este cenário requer a configuração de múltiplos endereços IP para a mesma máquina.

O recurso de IP alias (virtual interfaces) do linux pode ser bastante útil neste caso

(30)

Servidor web

IP-based Virtual hosts

Exemplo: /etc/apache2/sites-available/meusite2 <VirtualHost 192.168.1.20:80>   ServerName www.example2.com   DocumentRoot /var/www/example2.com   ServerAdmin webmaster@example2.com   ErrorLog /var/log/apache2/example2.com­error_log   CustomLog /var/log/apache2/example2.com­access_log common </VirtualHost> <VirtualHost 192.168.1.21:80>   ServerName www.anothercompany.com   DocumentRoot /var/www/anothercompany.com   ServerAdmin webmaster@anothercompany.com   ErrorLog  /var/log/apache2/anothercompany.com­error_log   CustomLog /var/log/apache2/anothercompany.com­access_log common

(31)

Servidor web

Prática

Vamos instalar e configurar o apache para servir dois sites usando o conceito de Name-based virtual host. Veja o roteiro da prática em:

http://intranet.dcc.ufba.br/pastas/extensao/curso-graco/praticas/ apache-pratica.odt

(32)

Servidor web

Suporte à PHP

Desenvolvido por Rasmus Lerdforf em 94 Roda em Unix e Win32

Versão mais recente é PHP 5.2.9 - www.php.net Instalação

aptitude install libapache2-mod-php5

Reinicie o apache para carregar o módulo

invoke-rc.d apache2 restart

Testando: Crie um arquivo teste.php com o conteúdo abaixo e coloque na raiz do seu site ativo:

<?php

(33)

Servidor web

Conteúdo dinâmico

com CGI

(34)

Servidor web

CGI – Common Gateway Interface

Tecnologia que permite gerar páginas dinâmicas, permitindo ao navegador passar parâmetros para um programa (script) hospedado no servidor web.

CGI define uma maneira padrão para o servidor web interagir com programas externos de geração de conteúdo. Exemplos: Perl Python PHP JSP

(35)

Servidor web

CGI – Common Gateway Interface

Existem duas formas de executar scripts CGI:

arquivos em diretórios específicos, configurar um

diretório personalizado.

A diretiva ScriptAlias diz ao apache que um

certo diretório é destinado à execução de scripts

CGI (todos os arquivos serão considerados

scripts CGI).

Para configurar um outro diretório é preciso

informar quais serão scripts CGI e também

pertimir execução CGI naquele diretório.

(36)

Servidor web

CGI – Common Gateway Interface

Usando ScriptAlias # CGI Directory ScriptAlias /cgi­bin/ /var/www/example.org/cgi­bin/ <Location /cgi­bin>       Options +ExecCGI </Location>

Permitindo CGI em diretórios de usuários (sem uso do

ScripAlias):

<Directory /home/*/public_html>   Options +ExecCGI

  AddHandler cgi­script .cgi .pl </Directory>

(37)

Servidor web

Escrevendo scripts CGI

Ao escrever scripts CGI é preciso se atentar à dois detalhes:

Toda a saída do script deve ser precedida por um MIME-type header, parte do cabeçalho do HTTP. Esse cabeçalho irá informar ao cliente como tratar o conteúdo recebido.

A saída deve ser em HTML ou algum outro tipo de dado que o browser possa exibir.

Mime-types também são utilizados no servidor para determinar qual tratamento deve ser dado. Exemplos:

(38)

Servidor web

Escrevendo scripts CGI - perl

Suporte a scripts Perl:

aptitude install libapache2-mod-perl2

Exemplo de helloworld.pl:

#!/usr/bin/perl

print "Content­type: text/html\n\n"; print "Hello, World."; 

Acessando variáveis de ambiente (printenv.pl):

#!/usr/bin/perl

print "Content­type: text/html\n\n"; foreach $key (keys %ENV) {

print "$key ­­> $ENV{$key}<br>";

(39)

Servidor web

(40)

Servidor web

Adicionando suporte à SSL

Neste ponto, temos um servidor web funcional, com suporte a Perl e PHP. Entretanto temos um aspecto importante que não mencionamos: segurança.

Como vimos, as transações via HTTP viajam em texto puro (ASCII) pela rede. Isto é um problema quando estamos tratando de dados sigilosos, como senhas, arquivos pessoais, etc.

É necessário então aumentar a segurança do HTTP, utilizando uma camada a mais na comunicação.

Esta camada é conhecida por SSL – Secure Socket

(41)

Servidor web

Adicionando suporte à SSL

É um protocolo criptográfico que provê comunicação segura na rede, através da utilização de algoritmos de criptografia

Tudo ocorre da seguinte forma:

O servidor envia uma chave pública (certificado X.509) ao cliente (navegador web) e este informa se irá aceitar ou não a autenticidade daquela chave

Caso aceite, o navegador envia um número aleatório para o servidor

Os dois lados usam o número aleatório gerado para definir a chave de sessão a ser utilizada, e então a comunicação é estabelecida

(42)

Servidor web

(43)

Servidor web

Adicionando suporte à SSL

O ideal é que alguma autoridade certificadora, seja ela pública ou privada, assine nossos certificados digitais. Porém isso pode ter um alto custo.

Assim, nos resta a opção de gerarmos certificados padrão X.509 auto-assinados.

No Debian, o pacote openssl provê todos os mecanismos necessários para a geração de um certificado.

aptitude install openssl

Após instalar o openssl é preciso criar um certificado auto-assinado e configurá-lo nos sites.

(44)

Servidor web

Adicionando suporte à SSL

Agora que já temos o certificado SSL, vamos fazer o apache entender SSL. Primeira modificação, será fazer o daemon escutar na porta 443 (HTTPS).

Para isso, edite /etc/apache2/ports.conf e adicione:

Listen 443

É importante também lembrar que devemos separar as portas da diretiva NameVirtualHosts para que o webserver saiba quando uma requisição se trata de HTTP ou HTTPS

(45)

Servidor web

Adicionando suporte à SSL

O segundo passo, é habilitar o módulo SSL para o apache:

a2enmod ssl

O terceiro passo é criar um VirtualHost com suporte a SSL. Algumas diretivas especiais são necessárias:

SSLEngine On

SSLCertificateFile /path/to/server.crt

(46)

Servidor web

Adicionando suporte à SSL

O arquivo de virtual host fica assim:

<VirtualHost *:443>   ServerName www.example2.com   DocumentRoot /var/www/example2.com   ServerAdmin webmaster@example2.com   ErrorLog /var/log/apache2/example2.com­error_log   CustomLog /var/log/apache2/example2.com­access_log common   SSLEngine on   SSLCertificateFile /etc/ssl/certs/server.crt   SSLCertificateKeyFile /etc/ssl/private/server.key </VirtualHost>

(47)

Servidor web

(48)

Servidor web

(49)

Bando de dados MySQL

(50)

Bando de dados MySQL

MySQL

SGDB – Sistema Gerenciador de Banco de dados

Software livre

Atual versão: 5.0

Compatibilidade com praticamente todas as linguagens de programação comerciais atuais

Suporte multi-plataformas

Suporte a transações, chaves estrangeiras, triggers, storage procedures, etc.

(51)

Bando de dados MySQL

Instalação do MySQL

No Debian, o mysql é composto de 2 pacotes:

aptitude install mysql-server mysql-client

O mysql-server traz todos os pacotes

relacionados ao SGDB MySQL.

O mysql-client traz um cliente administrativo

(mysqladmin) mais alguns utilitários como o

mysql (mysql client, mysqldump, etc.)

(52)

Bando de dados MySQL

Configuração do MySQL

Todas as informações acerca do funcionamento do

Daemon MySQL estão no arquivo

/etc/mysql/my.cnf.

Devemos ter muito cuidado ao fazer modificações aqui, pois senão podemos prejudicar muito a performance do sistema.

É dividido em seções. A seção [mysqld] é a que trata dos aspectos relativos ao daemon mysql

Principais opções: bind_address User

(53)

Bando de dados MySQL

MySQL

A primeira coisa a se fazer após a instalação é

gerar uma senha de superusuário para acesso

ao mysql:

mysqladmin password suasenhaaqui

Uma inovação trazida pelo instalador Debian,

é a possibilidade de informar esta senha logo

durante a instalação do pacote.

Vamos testar nossa instalação:

(54)

Bando de dados MySQL

MySQL

Guia de bolso do MySQL para administradores

de redes:

show databases;

use database;

create database nome;

show tables;

describe tabela;

(55)

Bando de dados MySQL

Gerenciamento da base de dados

Existem diversas ferramentas no mercardo que são úteis na administração do MySQL.

Podemos destacar duas excelentes ferramentas livres:

MySQL Administrator (pacote mysql-admin) - Desktop

PhpMyAdmin (pacote phpmyadmin) – Web Instalação:

(56)

Bando de dados MySQL

(57)

Bando de dados MySQL

(58)

Servidor web

(59)

Referências

http://app.dcc.ufba.br/~galiza/aulas-cefet2009/Aula05.ppt http://pt.wikipedia.org/wiki/HTTP [1] - http://news.netcraft.com/archives/web_server_survey.html http://httpd.apache.org/docs/2.0/howto/cgi.html http://www.securityfocus.com/infocus/1818

Referências

Documentos relacionados

6 Consideraremos que a narrativa de Lewis Carroll oscila ficcionalmente entre o maravilhoso e o fantástico, chegando mesmo a sugerir-se com aspectos do estranho,

Após retirar, da maré observada, o valor da maré teórica, aplicou-se uma linha de tendência aos dados resultantes, a qual representa a variação do nível médio das águas no

O desenvolvimento das interações entre os próprios alunos e entre estes e as professoras, juntamente com o reconhecimento da singularidade dos conhecimentos

O objetivo deste trabalho foi avaliar a influência do peso inicial, do período de alimentação e da temperatura ambiente no ganho de peso e nos parâmetros biológicos

- Configurar o proftpd para escutar na porta padrão, aceitar no máximo 5 conexões simultâneas, deixando disponível um repositório público para no máximo 2 conexões simultâneas,

No entanto, ocorreu uma única reunião da Comissão Mista (I Comista), entre os dias 28 de abril e 2 de maio de 1979, em Jedá, tendo sido a delegação brasileira che- fiada pelo

A dose inicial recomendada de filgrastim é de 1,0 MUI (10 mcg)/kg/dia, por infusão intravenosa (foram utilizadas diversas durações: cerca de 30 minutos, 4 horas ou 24

O empregador deverá realizar a avaliação ambiental de poeira de asbesto nos locais de trabalho em intervalos não superiores a seis meses.. Os registros das avaliações deverão