Вы находитесь на странице: 1из 13

UNIARARAS

CENTRO UNIVERSITRIO HERMNIO OMETTO SERVIDORES DE APLICAO I Prof. Erivelton Rodrigues Nunes

SERVIDOR WEB
Instalando o Apache

Todo ser que respira louve ao Senhor.


Salmo 150.6

A primeira escolha entre instalar o Apache 2, ou o Apache 1.3, que ainda usado por muita gente. O Apache 2 traz muitas vantagens, sobretudo do ponto de vista do desempenho, mas por outro lado ele incompatvel com os mdulos compilados para o Apache 1.3 e muitas opes de configurao so diferentes. A questo dos mdulos no chega a ser um grande problema hoje em dia, pois todos os principais mdulos j foram portados, mas muita gente que aprendeu a configurar o Apache 1.3 se sente mais confortvel com ele e por isso continua usando-o at hoje, apesar das vantagens da nova verso. Muitas distribuies continuam oferecendo as duas verses, de forma a satisfazer os dois pblicos. No Debian, por exemplo, o Apache 1.3 instalado atravs do pacote "apache", enquanto o Apache 2 instalado atravs do "apache2". Junto com o Apache propriamente dito, interessante instalar tambm o pacote "apache-ssl", que adiciona suporte a pginas seguras (https).
# apt-get install apache # apt-get install apache-ssl

Ao instalar o Apache 2, o suporte a SSL instalado automaticamente junto com o pacote principal:
# apt-get install apache2 # apt-get install apache2-utils

Depois de instalar os pacotes, inicie o servio com o comando "/etc/init.d/apache start". Ao utilizar o Apache 2 o comando fica: "/etc/init.d/apache2 restart" Em muitas distribuies o servio do Apache chama-se "httpd" e no "apache" como no Debian. Este um pedido da prpria Apache Foundation, que alm do servidor web desenvolve outros projetos, tambm distribudos sob a marca "Apache". Neste caso o comando fica "/etc/init.d/httpd restart". Acessando o endereo "http://127.0.0.1", voc ver uma pgina de boas-vindas, que indica que o servidor est funcionando. Se no houver nenhum firewall no caminho, ele j estar acessvel a partir de outros micros da rede local ou da internet. Por enquanto temos apenas uma verso bsica do apache, que simplesmente exibe arquivos html colocados dentro da pasta "/var/www", que por padro fica sendo o diretrio raiz do seu servidor web. A pgina "http://seu.servidor/index.html" na verdade o arquivo "/var/www/index.html".

___________________________________________________________________________ Pg. 96

UNIARARAS
CENTRO UNIVERSITRIO HERMNIO OMETTO SERVIDORES DE APLICAO I Prof. Erivelton Rodrigues Nunes

Modularidade do Apache
A principal caracterstica do Apache a modularidade. Ao invs de ser um aplicativo grande e complexo, que tenta desempenhar sozinho todas as funes, o Apache se limita a executar uma nica tarefa: entregar pginas HTML e outros tipos de arquivos aos clientes. Qualquer outra coisa invariavelmente feita por um mdulo externo. Por exemplo, quando voc acessa uma pgina em PHP m um site que roda sobre Apache, ele l o arquivo no disco e repassa a requisio para o modphp, o mdulo encarregado de processar arquivos PHP. Ele, por sua vez, aciona o interpretador PHP, que processa a pgina e a entrega, j processada, ao Apache, que finalmente, a entrega ao cliente. Caso seja necessrio acessar um bando de dados, entra em ao outro mdulo, como o php4-mysql, que permite que o interpretador PHP acesse o banco de dados:

Figura 21. Mdulos do Apache

No Apache 2, esta arquitetura modular se estende aos arquivos de configurao. Todos os arquivos de configurao esto organizados dentro do diretrio /etc/apache2. O Apache capaz de hospedar simultaneamente vrios sites, cada um representado por um arquivo de configurao diferente. Imagine o caso de uma empresa de hosting que mantm um servidor com 2.000 pequenos sites. Quando cada cliente registra seu site e assina o plano de hospedagem, voc cria um novo arquivo dentro da pasta sites-available com as configuraes necessrias e um link para ele na pasta sites-enable. Como os nomes sugerem, a primeira pasta armazena a configurao de todos os sites hospedados no servidor, mas apenas os sites que estiverem presentes na pasta sites-enable ficam disponveis. Quando necessrio suspender temporariamente um site por falta de pagamento, voc simplesmente remove o link na pasta sites-enable, sem precisar mexer na configurao.
# cd /etc/apache2/sites-enable # ln -s ../sites-available/uniararas uniararas

Quando o Apache instalado, criado por padro o arquivo /etc/apache2/sitesavailable/default, que contm a configurao de um site raiz, que usa como diretrio de pginas a pasta /var/www. Se o seu servidor web vai hospedar um nico site, ento essa configurao suficiente. Mas, caso voc queira hospedar vrios sites no mesmo servidor, necessrio criar uma pasta e um arquivo de configurao para cada site adicional.

___________________________________________________________________________ Pg. 97

UNIARARAS
CENTRO UNIVERSITRIO HERMNIO OMETTO SERVIDORES DE APLICAO I Prof. Erivelton Rodrigues Nunes

Figura 22. Estrutura de diretrios do Apache2

Quando um visitante digita http://www.uniararas.br, o servidor da FAPESP (que responde pelos domnios .br) vai repassar a requisio para o seu servidor de DNS, que responde com o ___________________________________________________________________________ Pg. 98

UNIARARAS
CENTRO UNIVERSITRIO HERMNIO OMETTO SERVIDORES DE APLICAO I Prof. Erivelton Rodrigues Nunes endereo do seu servidor web. Ao acessar o servidor, o navegador solicita www.uniararas.br e o servidor responde enviando o arquivo /var/www/uniararas/index.html ou index.php ao cliente. Quanto aos mdulos, sua organizao segue o mesmo padro. A pasta mods-available contm a configurao e scripts de inicializao para todos os mdulos disponveis, mas apenas os mdulos referenciados (atravs de links) na pasta mods-enable so realmentes carregados.
# cd /etc/apache2/mods-enable # ln -s ../mods-available/php5.conf php5.conf # ln -s ../mods-available/php5.load php5.load

Configurao bsica
A maior parte da configurao do Apache 1.3 pode ser feita atravs de um nico arquivo, o httpd.conf, que no Debian pode ser encontrado no diretrio /etc/apache/. Ao utilizar o Apache 2, os arquivos foram desmenbrados o que torna a configurao mais simples. A primeira configurao importante a (ou as) portas TCP que sero usadas pelo servidor. Por default, a porta a 80, mas alguns servios de banda larga, como por exemplo o Speedy da Telefonica bloqueiam esta porta, obrigando os usurios a manter seus servidores em portas alternativas. Voc pode tambm alterar a porta para manter o seu servidor um pouco mais secreto, principalmente se for utilizada uma porta acima de 1024, j que, alm do endereo IP ou domnio, os visitantes precisariam saber tambm a porta do servidor. A configurao da porta pode ser encontrada no arquivo /etc/apache2/ports.conf. Originalmente o arquivo vem com apenas uma linha:
Listen 80

Lembre-se de que ao alterar a porta os visitantes precisaro incluir o novo nmero no endereo. Se voc for utilizar a porta 1080, por exemplo, todos devero acessar o endereo "http://seu.dominio.com:1080". Voc pode tambm fazer com que o servidor escute em mais de uma porta simultaneamente, usando o recurso Binding. Para isso, basta incluir o parmetro "Listen porta" logo abaixo da linha "Listen 80" que configuramos acima. Para que ele escute tambm nas portas 1080 e 2480, por exemplo, voc incluiria as linhas:
Listen 80 Listen 1080 Listen 2480

No existe limitao para o uso deste recurso. Voc pode fazer o servidor escutar quantas portas e placas de rede forem necessrias. Finalmente, chegamos ao arquivo apache2.conf, que agrupa o resto das configuraes. ele ___________________________________________________________________________ Pg. 99

UNIARARAS
CENTRO UNIVERSITRIO HERMNIO OMETTO SERVIDORES DE APLICAO I Prof. Erivelton Rodrigues Nunes que voc vai alterar quando, por exemplo, precisar ajustar o nmero de processos usados pelo Apache ou aumentar o nmeros de conexes simultneas permitidas pelo servidor.

Ativando o SSL
O primeiro passo obter um certificado SSL. Voc pode gerar seu prprio certificado, o que rpido, grtis e indolor, ou adquirir um certificado reconhecido na Verisign ou outra entidade certificadora. O problema de usar um certificado caseiro que os clientes recebero um aviso de certificado no reconhecido ao acessarem a pgina, emitido pelo prprio navegador. Um certificado reconhecido caro, mas muitos provedores permitem que voc utilize um certificado compartilhado pagando uma taxa anual. Voc pode obter um certificado gratuito no site http://www.cacert.org/. Ele reconhecido pela CAcert, mas o certificado raiz no deles no vem pr-instalado na maioria dos navegadores, o que faz com que os clientes continuem recebendo a mensagem de certificado no vlido ao acessar o servidor. Para gerar um certificado caseiro, use o comando:
# mkdir /etc/apache2/ssl # make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem

Ele pergunta vrias informaes sobre a empresa e sua localizao, que os clientes podem verificar quando acessam o site. O prximo passo ativar o ssl dentro do Apache 2
# # # # cd /etc/apache2/mods-enable ln -s ../mods-available/ssl.conf ssl.conf ln -s ../mods-available/ssl.load ssl.load /etc/init.d/apache2 force-reload

Abra o arquivo /etc/apache2/ports.conf e adiciona a seguinte linha:


Listen 443

Com isso, o Apache2, j est configurado. Falta apenas ativar o uso do SSL dentro da configurao de cada host virtual, ou seja, cada pgina hospedada no servidor Apache 2. Para testar, vamos ativ-lo na pgina padro. Edite o arquivo /etc/apache2/sites-available/default e susbstitua a linha NameVirtualHost *, por:
NameVirtualHost *:443 NameVirtualHost *:80

Em seguida substitua a linha <VirtualHost *>, por:


<VirtualHost *:80>

___________________________________________________________________________ Pg. 100

UNIARARAS
CENTRO UNIVERSITRIO HERMNIO OMETTO SERVIDORES DE APLICAO I Prof. Erivelton Rodrigues Nunes Finalmente, faremos referncia sesso do SSL, por isso adicione as seguintes linhas no final do arquivo:
<VirtualHost *:443> DocumentRoot /var/www/ ErrorLog /var/log/apache2/error.log CustomLog /var/log/apache2/access.log combined SSLEngine on SSLCertificateFile /etc/apache2/ssl/apache.pem </VirtualHost>

Reinicie o Apache2 e acesse o seguinte endereo:


https://127.0.0.1

Ao conectar, o navegador exibe um aviso O certificado do servidor falhou no teste de autenticidade ou similar, isto normal por se tratar de um certificado caseiro.

Virtual Hosts
Outro recurso suportado pelo Apache e muito usado, a possibilidade de hospedar vrios sites no mesmo servidor (shared hosting). Mais de 80% dos sites da internet so hospedados desta forma econmica. Neste caso, os arquivos de cada site ficam guardados numa pasta diferente e o servidor se encarrega de direcionar cada visitante ao site correto. Servidores como os dos servios de hospedagem gratuita chegam a hospedar mais de 10.000 sites num nico servidor Apache usando este recurso. Ao hospedar vrios domnios, voc precisa configurar um servidor de DNS para responder a todos os domnios hospedados no servidor, entregando o endereo IP do seu servidor Apache. Agora vamos configurar o Apache para responder para diversos domnios:
# mkdir /var/www/joao # mkdir /var/www/maria

Neste momento necessrio alterar uma linha do arquivo /etc/apache2/sites-avaliable/default de:


NameVirtualHost * <VirtualHost *>

para:
NameVirtualHost 200.200.200.200

___________________________________________________________________________ Pg. 101

UNIARARAS
CENTRO UNIVERSITRIO HERMNIO OMETTO SERVIDORES DE APLICAO I Prof. Erivelton Rodrigues Nunes
<VirtualHost 200.200.200.200>

Onde 200.200.200.200 o endereo IP do seu servidor WEB. Ainda necessrio alterar o arquivos /etc/hosts para evitar os erros ou avisos do apache sobre o FQDN. Original:
127.0.0.1 127.0.1.1 localhost server

Alterado:
127.0.0.1 127.0.1.1 200.200.200.200 200.200.200.200 localhost.localdomain localhost server.localdomain server joao.com.br joao maria.com.br maria

Agora devemos criar um arquivos de configurao para cada site: Primeiro Site:
# vi /etc/apache2/sites-available/joao

Contedo do Arquivo:
<VirtualHost 200.200.200.200> ServerAdmin joao@joao.com.br ServerName www.joao.com.br ServerAlias joao.com.br DocumentRoot /var/www/joao/html ErrorLog /var/www/joao/logs/error.log CustomLog /var/www/joao/logs/access.log combined </VirtualHost>

Segundo Site:
# vi /etc/apache2/sites-available/maria

Contedo do Arquivo:
<VirtualHost 200.200.200.200> ServerAdmin maria@maria.com.br ServerName www.maria.com.br ServerAlias maria.com.br DocumentRoot /var/www/maria/html ErrorLog /var/www/maria/logs/error.log CustomLog /var/www/maria/logs/access.log combined </VirtualHost>

Para ativar o SSL basta incluir mais uma entrada no final do arquivo:
<VirtualHost 200.200.200.200:443>

___________________________________________________________________________ Pg. 102

UNIARARAS
CENTRO UNIVERSITRIO HERMNIO OMETTO SERVIDORES DE APLICAO I Prof. Erivelton Rodrigues Nunes
DocumentRoot /var/www/joao/ssl ErrorLog /var/www/joao/logs/error.log CustomLog /var/www/joao/logs/access.log combined SSLEngine on SSLCertificateFile /etc/apache2/ssl/apache.pem </VirtualHost>

Neste caso ao acessar o http://joao.com.br o visitante visualizar o contedo da pasta /var/ www/joao/html", enquanto ao acessar https://joao.com.br visualizar a /var/www/joao/ssl. Depois de feita a configurao, ative ambos os sites.
# cd /etc/apache2/sites-enable # ln -s ../sites-available/joao joao # ln -s ../sites-available/maria maria

Para que funcione corretamente o Virtual Host primeiro necessrio configurar o DNS ou o arquivo /etc/hosts.

Melhorando a segurana do apache


muito importante fazer alguns ajustes no servidor uma vez que as configurao padro (default) no se preocupa muito com a segurana, o foco a funcionalidade. Limitando o acesso Edite o arquivo o arquivo /etc/apache2/sites-available/default e encontre a seo abaixo:
DocumentRoot /var/www/ <Directory /> Options FollowSymLinks AllowOverride None </Directory>

Esta seo controla como o Apache tratar o diretrio raiz do sistema de arquivos e todos os arquivos contidos nele. Edite esta seo adicionando as seguintes linhas:
DocumentRoot /var/www/ <Directory /> Options FollowSymLinks AllowOverride None Order Deny,Allow Deny from all Options None </Directory>

Isto far com que o Apache no exiba qualquer arquivo do sistema de arquivos, no permitindo opes especiais (como symlinking, includes, ou scripts cgi), nem que sobrescrevam os arquivos .htaccess nos diretrios. No entanto, para que o o Apache acesse arquivos a partir do ___________________________________________________________________________ Pg. 103

UNIARARAS
CENTRO UNIVERSITRIO HERMNIO OMETTO SERVIDORES DE APLICAO I Prof. Erivelton Rodrigues Nunes diretrio /var/www/, necessrio editar a seo abaixo:
<Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory>

E altere o contedo para ficar como a configurao abaixo:


<Directory /var/www/> Options FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory>

Isto permite que o Apache disponibilize pginas contidas em /var/www. Ao remover o Indexes, os usurios no sero capazes de acessar o contedo dos diretrios na web, ou seja, ver o contedo como se fosse um diretrio. Reinicie o Apache para que as alteraes entrem em vigor. Ocultando a verso do servidor Atualmente a tcnica de fingerprint est sendo muito utilizada nos servidores. Com base nas informaes descobertas so utilizados exploits que exploram as vulnerabilidades dos servidores. Sendo assim, uma boa prtica dificultar a descoberta destas informaes. No caso do Apache existem duas diretivas que nos ajudaro a fazer isso: ServerTokens e ServerSignature. ServerTokens Essas diretivas controlam o que o servidor responder aos clientes no campo header (cabealho) do protocolo HTTP, como por exemplo: tipo do sistema operacional, mdulos compilados, verso do apache e outras informaes relevantes. Geralmente os servidores esto configurados como ServerTokens Full. No Red Hat esta configurao explicita, j no Debian ela no aparece no arquivo de configurao mas est configurada por default como FULL..
ServerTokens Setting Prod Major Minor Minimal OS Full Server Banner Header Server: Apache/2 Server: Apache/2.0 Server: Apache/2.0.55 Server: Apache/2.0.55 (Debian) Server: Apache/2.0.55 (Debian) PHP/5.1.2-1+b1 mod_ssl/2.0.55 OpenSSL/0.9.8b

(ProductOnly) Server: Apache

___________________________________________________________________________ Pg. 104

UNIARARAS
CENTRO UNIVERSITRIO HERMNIO OMETTO SERVIDORES DE APLICAO I Prof. Erivelton Rodrigues Nunes ServerSignature Esta diretiva habilita o rodap onde aparece as informaes de erros, mod_proxy ftp directory listings, etc. Pode ser configurada de maneira geral no arquivo principal do Apache ou em cada virtual host, diretrio ou .htaccess. Por default configurada como ServerSignature Off, mas no caso particular do Debian esta diretiva habilitada (on)

Valores possveis: Off (default): suprime a linha do rodap On: adiciona a linha do rodap onde so exibidas a verso do servidor, o nome do host virtual (site) e outros detalhes especficos controlados pela diretiva ServerTokens. EMail: inclui todas as informaes exibidas como na opo ON e exibe um link com o e-mail do administrador que foi configurada na diretiva ServerAdmin. Configuraes Edite o arquivo o arquivo /etc/apache2/apache2.conf, mudando as seguintes linhas:
ServerTokens Full TraceEnable on

para
ServerTokens Prod TraceEnable off

Reinicie o Apache para que as alteraes entrem em vigor. Desabilitando o modo de TRACE (rastreamento) Este modo de operao vem habilitado por padro e usado para debug, entretanto pode ser usado por um hacker para descobrir informaes preciosas sobre o funcionamento do seu servidor. Por isso, os scanners de vulnerabilidades identificam essa funcionalidade e recomendam que seja desabilitada. Edite o arquivo o arquivo /etc/apache2/apache2.conf e acrescente a linha
TraceEnable off

___________________________________________________________________________ Pg. 105

UNIARARAS
CENTRO UNIVERSITRIO HERMNIO OMETTO SERVIDORES DE APLICAO I Prof. Erivelton Rodrigues Nunes Reinicie o Apache para que as alteraes entrem em vigor. Mod-security O Mod-security um mdulo que prov maior segurano ao Apache contra ataques diversos e altamente recomendvel que seja utilizado. Instalao
apt-get install libapache2-mod-security2

Aps a instalao o mdulo j estar ativo. Configurao Para configurar o ModSecurity2 a maneira mais fcil baixar o cdigo fonte em http://www.modsecurity.org/download/index.html por exemplo http://www.modsecurity.org/ download/modsecurity-apache_2.5.7.tar.gz e descompact-lo. Dentro do diretrio descompactado tem um arquivo chamado modsecurity.conf-minimal que servir de base para a configurao do ModSecurity2. Entretanto, teremos que fazer alguns ajustes nas sees SecDebugLog e SecAuditLog porque o padro do Debian que os logs fiquem no diretrio /var/log/apache2. Copie o arquivo modsecurity.conf-minimal para o diretrio /etc/apache2/conf.d renomeando-o para modsecurity.conf
# cp modsecurity.conf-minimal /etc/apache2/conf.d/modsecurity.conf

Edite o arquivo modsecurity.conf e verifique as configuraes como no exemplo abaixo:


vi /etc/apache2/conf.d/modsecurity.conf

# Basic configuration options SecRuleEngine On SecRequestBodyAccess On SecResponseBodyAccess Off # Handling of file uploads # TODO Choose a folder private to Apache. # SecUploadDir /opt/apache-frontend/tmp/ SecUploadKeepFiles Off # Debug log SecDebugLog /var/log/apache2/modsec_debug.log SecDebugLogLevel 0 # Serial audit log SecAuditEngine RelevantOnly SecAuditLogRelevantStatus ^5 SecAuditLogParts ABIFHZ SecAuditLogType Serial

___________________________________________________________________________ Pg. 106

UNIARARAS
CENTRO UNIVERSITRIO HERMNIO OMETTO SERVIDORES DE APLICAO I Prof. Erivelton Rodrigues Nunes
SecAuditLog /var/log/apache2/modsec_audit.log # Maximum request body size we will # accept for buffering SecRequestBodyLimit 131072 # Store up to 128 KB in memory SecRequestBodyInMemoryLimit 131072 # Buffer response bodies of up to # 512 KB in length SecResponseBodyLimit 524288 # Verify that we've correctly processed the request body. # As a rule of thumb, when failing to process a request body # you should reject the request (when deployed in blocking mode) # or log a high-severity alert (when deployed in detection-only mode). SecRule REQBODY_PROCESSOR_ERROR "!@eq 0" \ "phase:2,t:none,log,deny,msg:'Failed to parse request body.',severity:2" # By default be strict with what we accept in the multipart/form-data # request body. If the rule below proves to be too strict for your # environment consider changing it to detection-only. You are encouraged # _not_ to remove it altogether. SecRule MULTIPART_STRICT_ERROR "!@eq 0" \ "phase:2,t:none,log,deny,msg:'Multipart request body \ failed strict validation: \ PE %{REQBODY_PROCESSOR_ERROR}, \ BQ %{MULTIPART_BOUNDARY_QUOTED}, \ BW %{MULTIPART_BOUNDARY_WHITESPACE}, \ DB %{MULTIPART_DATA_BEFORE}, \ DA %{MULTIPART_DATA_AFTER}, \ HF %{MULTIPART_HEADER_FOLDING}, \ LF %{MULTIPART_LF_LINE}, \ SM %{MULTIPART_SEMICOLON_MISSING}'" # Did we see anything that might be a boundary? SecRule MULTIPART_UNMATCHED_BOUNDARY "!@eq 0" \ "phase:2,t:none,log,deny,msg:'Multipart parser unmatched boundary.'"

detected

possible

Agora reinicie o Apache e verifique se no apareceu nenhum erro.


/etc/init.d/apache2 restart

Se no aparecer nenhum erro ento o ModSecurity2 est funcionando com a configurao bsica. Voc pode modificar e adequar de acordo com suas necessidades. Uma boa opo baixar algumas regras j prontas e coloc-las tambm no diretrio /etc/apache2/conf.d/. Voc pode baixar as regras do site http://www.modsecurity.org/download/index.html.
# tar -zxvf modsecurity-core-rules_2.5-1.6.1.tar.gz # cp *.conf /etc/apache2/conf.d/

Agora necessrio editar a diretiva SecAuditLog e SecDebugLog para apontar para o diretrio padro do Debian. ___________________________________________________________________________ Pg. 107

UNIARARAS
CENTRO UNIVERSITRIO HERMNIO OMETTO SERVIDORES DE APLICAO I Prof. Erivelton Rodrigues Nunes
vi /etc/apache2/conf.d/modsecurity_crs_10_config.conf SecAuditLog /var/log/apache2/modsec_audit.log SecDebugLog /var/log/apache2/modsec_debug.log

Agora reinicie o Apache e verifique se no apareceu nenhum erro.


/etc/init.d/apache2 restart

Edite o arquivo o arquivo /etc/apache2/apache2.conf

___________________________________________________________________________ Pg. 108

Вам также может понравиться