Você está na página 1de 13

INSTALAO E CONFIGURAO DOS SERVIDORES WEB (Apache) e PHP (Php5)

EMERSON BAREA
INSTALAO, CONFIGURAO E MANUTENO DE BANCO DE DADOS EM REDES

FATEC OURINHOS

OBJETIVO Este documento apresenta um breve resumo das informaes discutidas em sala de aula na disciplina de Instalao, Configurao e Manuteno de Banco de Dados em Redes, alunos do 4 termo do curso de Tecnlogo em Segurana da Informao da FATEC Ourinhos. Mesmo sendo este documento consistido de material que ser utilizado durante o curso, ele dever ser utilizado apenas como material de consulta prtica, ficando o aluno ciente que as fontes de informao corretas cobradas posteriormente em avaliao so as apresentadas na ementa da disciplina. 1 SISTEMA OPERACIONAL 1.1 Por que Debian?

Por ser o Debian um SO amplamente utilizado por profissionais do mundo open; Possui uma comunidade de desenvolvedores que garantem sua evoluo e estabilidade; Dividido em categorias, como estvel, desenvolvimento e teste, permitindo que o utilizador possa escolher a melhor opo para sua necessidade de implantao; Fcil administrao, utilizando o aplicativo APT, que responsvel pelos processos de instalao, desinstalao, upgrade de verses, entre outras funcionalidades junto aos servios e do prprio SO.

1.2 Mdia de Instalao CDs contendo o SO e seus principais aplicativos na distribuio NETINST. Esta distribuio contm apenas a verso bsica do sistema. Em caso da necessidade de utilizao de outro pacote qualquer, este dever ser instalado a partir do aplicativo apt ou diretamente via pacotes tar. No se esquea: em nossas mquinas do laboratrio, antes de cada aula, deve-se sempre realizar a verificao da necessidade de updates do sistema com os seguintes comandos: #apt-get update atualiza a lista do apt #apt-get upgrade atualiza os softwares do computador caso houver pacotes novos a serem atualizados. 2 Servidor WEB (Apache http://httpd.apache.org) 2.1 - Por que o Apache? Nossa inteno no defender um ou outro software. Eu, pelo menos penso e trabalho dessa forma, defendo que a maioria dos programas e/ou sistemas operacionais funcionam da mesma forma, o maior problema de bugs, falhas ou vulnerabilidades justamente a forma como so instalados, configurados e administrados. Todo administrador de servidores, equipamentos de redes ou de segurana deve ter em sua mente que necessrio para a sobrevivncia de qualquer sistema que ele seja sempre atualizado, analisado contra bases de vulnerabilidades etc. Bom, mas por que o Apache? Olha, eu, Professor Tocha, costumo utilizar o apache pelo fato de ter licenciamento livre, amplamente utilizado pelo mundo todo (imagino que isso

no seja por acaso dado apresentado na Netcraft http://news.netcraft.com/archives/2009/10/index.html), possibilitar as configuraes necessrias tanto no fornecimento dos servios quanto em segurana etc. Maiores detalhes sobre o Apache podem ser observadas em http://httpd.apache.org. 2.2 Instalao #apt-get install apache2 Aps a instalao do apache, podemos verificar se o servio apache est ativado da seguinte forma: #netstat -a | more

A tela acima mostra que a mquina est aceitando conexes na porta www (TCP 80) em todas interfaces que ela possuir, vindas de qualquer origem, desta forma, podemos testar o funcionamento do apache abrindo a pgina padro do servidor em um browser. Fazendo isso, deve aparecer a mensagem It works! no seu navegador. 2.3 Configurao O arquivo de configurao do Apache o apache2.conf. Para edit-lo basta digitar o seguinte comando: #vi /etc/apache2/apache2.conf OBS: cada parmetro deste arquivo j vem precedido por comentrios explicativos no prprio arquivo. 2.3.1 Virtual Host Com esta configurao padro, os arquivos HTML lidos pelo apache para apresentao em browsers de mquinas clientes ficam no diretrio /var/www. Podemos conferir isto com o comando abaixo: # ls -l /var/www/ drwxr-xr-x 2 root root -rw-r--r-1 root root 4096 Set 28 07:23 45 Nov 6 14:48 http index.html

Se quisermos fazer uma troca simples do site default do apache, de forma que o contedo apresentado quando se digita o IP do servidor no browser da mquina seja outro, basta editarmos ou at mesmo trocarmos o arquivo /var/www/index.html para deix-lo com as configuraes necessrias. Apesar de podermos mudar o contedo do site padro do apache da forma que quisermos, na maioria dos casos, os servidores apache no armazenam apenas um site, e sim um conjunto de sites geralmente relacionados a domnios diferentes. Neste caso podemos utilizar uma feature do Apache conhecida como Virtual Host. Virtual Host nada mais do que criarmos outras bases de informao para o Apache interpretar. Localmente estas bases de informao so diretrios que podem armazenar sites inteiros. Caso a configurao do seu servidor tenha sido feita acompanhando corretamente nosso material, voc ter configurado em sua mquina o domnio segfatecou.edu.br. Digitando o endereo www.segfatecou.edu.br no browser de uma mquina tambm teremos acesso ao site default do Apache. Abaixo segue um passo-a-passo de como configurar um Virtual Host. Segue: 1 criar o arquivo /etc/apache2/sites-available/segfatecou com o seguinte contedo: <VirtualHost *:80> ServerAdmin ServerName DocumentRoot ErrorLog LogLevel CustomLog </VirtualHost> webmaster@segfatecou.edu.br www.segfatecou.edu.br /var/www/http/segfatecou/ /var/log/apache2/error_segfatecou.log warn /var/log/apache2/access_segfatecou.log combined

Segue abaixo uma explicao dos parmetros de configurao utilizados neste arquivo. <VirtualHost *:80> e </VirtualHost> Incio de final da configurao do Virtual Host, informando qual porta o servidor estar recebendo conexes para este VirtualHost. ServerAdmin email que ser informado em mensagens de erro aos usurios do site. ServerName nome do servidor. Caso seu servidor possua um alias, voc pode colocar o nome correspondente ao seu site neste campo. DocumentRoot localizao do diretrio que ser a base para os arquivos do site. Caso no exista previamente, deve ser criado manualmente. ErrorLog arquivo de log dos erros de o servidor possa encontrar na execuo do site, como por exemplo, links quebrados de imagens etc. LogLevel controla os tipos de mensagens que sero enviados ao log. Os tipos so: emerg, alert, crit, error, warn, notice, info e debug. CustomLog informa o que foi acessado no servidor (site). Mais detalhes sobre os parmetros de configurao do Virtual Host devem ser observados em http://httpd.apache.org/docs/2.2/mod/core.html . Agora basta habilitarmos o Virtual Host para ser trabalhado pelo Apache e pronto! Para isso, precisamos digitar o seguinte comando:

#a2ensite segfatecou e desabilitar o site padro do Apache com o seguinte comando: #a2dissite default e recarregar as configuraes do Apache para leitura das novas configuraes com o comando: #/etc/init.d/apache2 reload OBS: Devemos lembrar que o Apache utiliza a configurao do DNS da mquina para o funcionamento correto dos seus servios, portanto, necessrio que o servio DNS da mquina esteja configurado corretamente antes de mais nada. Exemplo de mensagem de erro: Restarting web server: apache2apache2: Could not reliably determine the server's fully qualified domain name, using 192.168.2.102 for ServerName Motivo: /etc/hosts faltando a configurao FQDN. Exemplo: 192.168.2.102 debian.segfatecou.edu.br debian Agora, basta criar o diretrio repositrio do site como no caminho informado em seu VirtualHost (no nosso exemplo /var/www/http/segfatecou/) e colocar l dentro todas as URLs do seu site. Aps estas configuraes, se voc digitar www.segfatecou.edu.br em seu browser abrir o site existente em /var/www/http/segfatecou. O site padro, existente em /var/www/index.html no ser mais acessvel pelo Apache. OBS: caso seu site seja atualizado via FTP ou mesmo SCP por administradores que no seja voc, deve-se criar uma estrutura de diretrios e arquivos de modo que o usurio administrador deste site tenha acesso para incluir, modificar e excluir arquivos. Este procedimento j foi coberto nos manuais passados, principalmente no manual que explica sobre a instalao, configurao e administrao do servidor VSFTPd. Caso seu servidor DNS responder para outros domnios ou mesmo mquinas do mesmo domnio (segfatecou.edu.br), basta criar outros arquivos VirtualHost para as outras configuraes seguindo o mesmo conceito do anterior. 3 Servidor PHP Sem dvida existem muitos sites e sistemas desenvolvidos em PHP, mas para que esses sites e sistemas possam funcionar corretamente necessrio que o servidor que os armazenem possua a capacidade de interpretar a codificao feita. O Apache pode ser estendido para fazer este servio com a instalao do servidor PHP na mquina. Este captulo traz esta configurao. 3.1 Instalao #apt-get install php5 libapache2-mod-php5 #vi /var/www/http/segfatecou/test.php

digitar e salvar o seguinte contedo no arquivo aberto: <?php phpinfo(); ?> salvar e fechar o arquivo. acessar: http://www.segfatecou.edu.br/test.php voc ver que seu browser lhe apresentar um arquivo para salvar. Mas por que isso? Porque seu Apache ainda no sabe que ele pode, e deve, interpretar arquivos PHP. Para habilitar esta feature no Apache devemos fazer as seguintes configuraes: #vi /etc/apache2/apache2.conf e acrescentar as seguintes linhas: DirectoryIndex index.html index.php AddType application/x-httpd-php .php e reinicie o servio do Apache # /etc/init.d/apache2 restart Caso voc tente abrir novamente o site test.php aparecer um site em PHP apresentando todas as features existentes no seu PHP. Estas informaes so muito teis para voc saber exatamente o que tem habilitado e desabilitado no seu servidor PHP. O ideal salvar estas informaes para posterior consulta, por exemplo para saber se um determinado sistema a ser implantado est totalmente compatvel com seu servidor e evitar sufocos desnecessrios. Depois aconselhvel apagar este site, j que seu contedo pode ser aproveitado por usurios mal intencionados, pois, conhecendo as features habilitadas num servidor, um usurio mal intencionado pode tentar se aproveitar de alguma vulnerabilidade para prejudicar seu ambiente. Para modificar alguma feature do seu servidor PHP basta configurar o arquivo /etc/php5/ apache2/php.ini de acordo com suas necessidades. Configuraes de hardening do PHP podem ser obtidas em http://www.hardened-php.net/ . 4 SSL (https) O servidor acima possibilita o trfego de informaes web como a maioria dos servidores de sites que acessamos pela Internet. O problema, que com estas configuraes um usurio mal intencionado, e que consiga capturar o trfego da mquina cliente para o servidor e vice-versa, acaba tendo possiblidade de obter informaes particulares, como usurios e senhas. Para resolver este problema, podemos utilizar as features do SSL para criptografar os dados trafegados em sesses HTTP, bem como autenticar servidor e cliente. Os detalhes deste protocolo sero abordados profundamente na disciplina competende, no curso de Segurana da Informao da FATEC, mas aqui teremos uma noo de seu funcionamento para possibilitar a configurao do servidor.

4.1 Apache com suporte a SSL no Debian Para instalar o SSL no Debian basta digitar o seguinte comando: #apt-get install openssl ssl-cert Depois de instalado o OpenSSL, voc dever gerar o certificado do servdor, habilitar o SSL e fazer as configuraes necessrias nos VirtualHosts. 4.2 O que o HTTPS? De forma bastante simples, o HTTPS (HTTP com suporte SSL) garante a autenticao das mquinas envolvidas e a criptografia dos dados da seguinte forma. Quando uma sesso SSL fechada entre um cliente e um servidor, o servidor inicia enviando sua chave pblica ao cliente. O envio da chave pblica feita sem qualquer preocupao com a segurana do envio, j que, como o prprio nome diz, esta chave PBLICA e qualquer pessoa pode t-la em mos. A partir deste momento, o cliente gera uma chave aleatria de 46 bytes que criptografada com a chave pblica do servidor e enviado a ele. Somente o detentor da chave privada, par desta chave pblica, ter condies de decriptar estes dados, desta forma, apenas o servidor poder conhecer a chave de 46 bytes enviadas pelo cliente. O prximo passo agora gerar a estrutura de chaves RC4 para criptografia definitiva do trfego da sesso estabelecida entre o servidor e o cliente. 4.3 Certificado X.509 O certificado X.509 utilizado para autenticar o servidor e at mesmo o cliente, quando este possuir um.

A mquina que deseja se autenticar, calcula o hash de uma sequncia de dados trafegados na sesso e criptografa este hash com sua chave privada. Envia este hash criptografa outra ponta que utiliza a chave pblica do emissor para decriptar os dados. Esta mesma ponta da comunicao tambm calcula o hash do mesmo contedo e compara com os valores. Se conferirem ento a mquina quem diz ser. 4.4 Configurao 4.4.1 Gerando a Chave Privada e Certificado Para gerar o conjunto de Chaves Privada e Pblica e Certificado do servidor Debian, utilize os seguintes comandos:
# openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/apache.pem -keyout /etc/apache2/apache.pem

Onde: openssl req $@: comando para gerar o certificado. -new -x509 -days 365: novo certificado, do tipo X.509 e vlidade de 365 dias a contar deste momento. -nodes -out <arquivo> -keyout <arquivo> : criar a chave privada neste arquivo sem criptograf-lo. Com o comando acima, ser apresentado ao administrador a possibilidade de criar os dados do certificado. Abaixo segue um exemplo do output para o comando acima:
Generating a 1024 bit RSA private key .......................................++++++ .............++++++ writing new private key to '/etc/apache2/apache.pem' ----You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----Country Name (2 letter code) [AU]:BR State or Province Name (full name) [Some-State]:Sao Paulo Locality Name (eg, city) []:Ourinhos Organization Name (eg, company) [Internet Widgits Pty Ltd]:FATEC Ourinhos Organizational Unit Name (eg, section) []:Rede Common Name (eg, YOUR name) []:www.segfatecou.edu.br Email Address []:webmaster@segfatecou.edu.br

Podemos observar que a chave privada RSA criada de 1024 bits e ela ser armazenada no arquivo /etc/apache2/apache.pem. Os dados acima escritos em negrito e itlico so as informaes que devemos preecher para que o servidor crie o certificado com os dados corretos. Destes dados, apenas o Common Name (CN) deve ser preenchido com total critrio, j que ele ser utilizado pelas browsers mais avanados na validao do certificado. Deste campo deve ser digitado o nome da URL do seu site, para no correr o risco do browser do cliente identificar seu certificado como sendo invlido por estar relacionado a outra URL.

Aps criado, podemos conferir a criao do arquivo apache.pem no caminho informado:


# ls apache2.conf

apache.pem

conf.d envvars httpd.conf mods-available mods-enabled ports.conf sites-available sites-enabled

Podemos conferir o contedo do arquivo com o comando cat. Dessa forma veremos que ele se refere a da chave privada e o certificado do servidor. # cat apache.pem -----BEGIN RSA PRIVATE KEY----MIICXgIBAAKBgQDhCCe5k94e7/YYy1YOytkfJ4L4l+2zlEi873NazabYapVT97ie zyxJ90Y9G+K0efo9ammBMT6TLQ8m7aZcOfvHLZKe4UPRH7Z+e9AEIM7Lnpmml17Y smE7yQikXzZrKJ7JCm1+QyFSJ9iRfSBmlHrcWy0FP5MBMhdX8/b9KDIJHwIDAQAB AoGBAILoiJuHrsbWl5aS62xNiwN5q9JMJ8a5M5tdvQCM9EufrWEckfUo1j3tMJoq F7cf4nhJ6Dh02k8p/k+KHqY2QQXlddonMwtzeGVOeRCnthrTBuJD0ZwRr0DsbC8F YT37AxDDG3nIY89VPLfMrSD0/+XYtGhmimViTEK9CV5Hemr5AkEA8SJ/kpuTxYkt XSJdeLcSrefR5oTAfem6ZdIImwJgpLQi94Kw5U95AwUsPMlRYualjBWv3Q315Imj BcZR6LZxfQJBAO7nhtJRmf4EnsiXufn5V14DR2F9uG4w/xVNIiv/iTbblsvyhmEG gB6MEH678Nv5OaUuwrb+IAbXxS9SkBnsJ8sCQQDSLEGJZXT9Pb1+ac+Swe7UCTSY eajVlnzS9qhtgzr9E81OcmkA1a4iBcYzDT2UuHgei2CHif2CvryK8fq+nRZ5AkBG kQDT0uKnk3nLSnXWjn3t+Q32kAoQEkzmX9g+IsbG+2m5aDOlKSRi4YBlzuHAOAd8 8Sj2oG2ZV9aYucxyu7ytAkEAj6ZokepQoKkOevhc+jQzQlM/HO959nrJUUnUKn1K DubEwmGSVJo2ys5LlXCo3xpFOGptoJYln3lbRl7SoYqFhw==

-----END RSA PRIVATE KEY---------BEGIN CERTIFICATE----MIID9TCCA16gAwIBAgIJAL2KKvoQPAI0MA0GCSqGSIb3DQEBBQUAMIGuMQswCQYD VQQGEwJCUjESMBAGA1UECBMJU2FvIFBhdWxvMREwDwYDVQQHEwhPdXJpbmhvczEX MBUGA1UEChMORmF0ZWMgT3VyaW5ob3MxGzAZBgNVBAsTEkFkbWluaXN0cmFjYW8g UmVkZTEWMBQGA1UEAxMNQWRtaW5pc3RyYWRvcjEqMCgGCSqGSIb3DQEJARYbd2Vi bWFzdGVyQHNlZ2ZhdGVjb3UuZWR1LmJyMB4XDTA5MTEwODEyNDM1MloXDTEwMTEw ODEyNDM1Mlowga4xCzAJBgNVBAYTAkJSMRIwEAYDVQQIEwlTYW8gUGF1bG8xETAP BgNVBAcTCE91cmluaG9zMRcwFQYDVQQKEw5GYXRlYyBPdXJpbmhvczEbMBkGA1UE CxMSQWRtaW5pc3RyYWNhbyBSZWRlMRYwFAYDVQQDEw1BZG1pbmlzdHJhZG9yMSow KAYJKoZIhvcNAQkBFht3ZWJtYXN0ZXJAc2VnZmF0ZWNvdS5lZHUuYnIwgZ8wDQYJ KoZIhvcNAQEBBQADgY0AMIGJAoGBAOEIJ7mT3h7v9hjLVg7K2R8ngviX7bOUSLzv c1rNpthqlVP3uJ7PLEn3Rj0b4rR5+j1qaYExPpMtDybtplw5+8ctkp7hQ9Eftn57 0AQgzsuemaaXXtiyYTvJCKRfNmsonskKbX5DIVIn2JF9IGaUetxbLQU/kwEyF1fz 9v0oMgkfAgMBAAGjggEXMIIBEzAdBgNVHQ4EFgQUs6MJWgMjl0AhOrVjCt/KqoY8 5MEwgeMGA1UdIwSB2zCB2IAUs6MJWgMjl0AhOrVjCt/KqoY85MGhgbSkgbEwga4x CzAJBgNVBAYTAkJSMRIwEAYDVQQIEwlTYW8gUGF1bG8xETAPBgNVBAcTCE91cmlu aG9zMRcwFQYDVQQKEw5GYXRlYyBPdXJpbmhvczEbMBkGA1UECxMSQWRtaW5pc3Ry YWNhbyBSZWRlMRYwFAYDVQQDEw1BZG1pbmlzdHJhZG9yMSowKAYJKoZIhvcNAQkB Fht3ZWJtYXN0ZXJAc2VnZmF0ZWNvdS5lZHUuYnKCCQC9iir6EDwCNDAMBgNVHRME BTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAEjHeC1w2WBXgWufa+HbmRKBhc+m6FRu AJIKEciye4XyKqZhbsRKbCzczeWjY6rJ/+XWXqeoVCMQXFF2ysvez+7VAdV9j8HE P8PQJUsFXTG+/6dvGaiQVEnu69Od1motchEl4qDZrhijXwavbPl3TEkHAmyEK1YW n1xf43ZwxaGH

-----END CERTIFICATE----OBS: obviamente, a chave privada de um servidor no poderia ficar assim exposta para todos... hehehe Justamente pelo fato da chave privada de um servidor ser a alma da criptografia utilizando a infraestrutura de chaves, ento, deve-se garantir apenas os acessos necessrios ao arquivo apache.pem, da seguinte forma: # ls -l apache.pem -rw-r--r-- 1 root root 2323 Nov 8 10:43 apache.pem # chmod 600 apache.pem # ls -l -rw------- 1 root root 2323 Nov 8 10:43 apache.pem 4.4.2 Habilitando o suporte ao SSL no servidor Como dito acima, para habilitar o uso de criptografia nos servidores web Apache com suporte a SSL devemos gerar o certificado do servdor (feito), habilitar o SSL e fazer as configuraes necessrias nos VirtualHosts. O prximo passo habilitar a utilizao do SSL pelo servidor, para isso, basta digitar o seguinte comando:

#a2enmod ssl 4.4.3 Configurando o VirtualHost Para habilitar o SSL para uso nos Virtuais Hosts, devemos reconfigurar os arquivos encontrados em /etc/apache2/sites-available/ da seguinte forma:
<VirtualHost *:443> ServerAdmin ServerName DocumentRoot ErrorLog LogLevel CustomLog webmaster@segfatecou.edu.br www.segfatecou.edu.br /var/www/http/segfatecou_www/ /var/log/apache2/error_segfatecou_www.log warn /var/log/apache2/access_segfatecou_www.log combined

SSLEngine on SSLCertificateFile /etc/apache2/apache.pem


</VirtualHost>

Estas configuraes informam que este VirtualHost agora passar a trabalhar na porta 443, HTTPS, possui suporte ao SSL e utiliza o arquivo apache.pem para como base para infraestrutura de chaves. Aps estas configuraes, s usar !!! 5 Utilizao Para acessarmos o site www.segfatecou.edu.br haver a necessidade de colocarmos o https:// no incio do endereo na URL do browser, como apresentado na figura abaixo:

Desta forma acessaremos o servidor e requisitaremos um site criptografado. Bem, veja que ao invs de recebermos o site que espervamos, acabamos recebendo uma informao de erro na tela. Isso se deve ao fato de nosso certificado (criado por ns) no possui uma assinatura de um CA (Certificate Authority) vlida. Certificate Authority so entidades que garantem a veracidade de certificados digitais pela Internet, de forma a possibilitar que um browser reconhea automaticamente um cerficado digital. Neste caso, como no somos reconhecidos por uma CA, devemos aceitar o aviso do browser e aceitar o certificado. Depois de aceito o certificado, o site aberto em nosso navegados como apresentado na figura abaixo:

Observem que antes do endereo www.segfatecou.edu.br existe a informao do protocolo utilizado, HTTPS, isso significa que nosso site agora tem comunicao criptografada e autenticada com o servidor. Podemos conferir os dados do certificado navegando nele como apresentado nas figuras abaixo:

Notem tambm que tanto a URL quanto as informaes do certificado no browser aparecem em vermelho, identificando que este site (certificado) foi aceito, porm no confivel para o browser por no possuir um CA responsvel por este certificado. Para resolvermos este aviso podemos instalar o certificado em nossa mquina clicando no boto Instalar Certificado. Desta forma, ao acessarmos novamente esta URL o site abrir normalmente, como apresentado na figura abaixo:

Para completar, observem a figura de um cadeado fechado na parte superior do browser, isso indica que a comunicao entre este site e o servidor est segura, utilizando criptografia e autenticao de mquina.

Você também pode gostar