>_Apache 1.2

Instalando o apache2

1 – Vamos instalar o Apache2

# aptitude install apache2

O Apache2 no Debian é dividido em uma série de arquivos e diretórios. Vamos  conhecer estes arquivos e suas respectivas funções:

/etc/apache2/apache2.conf – Arquivo de configuração principal

/etc/apache2/modules.conf – Arquivo de configuração de módulos

/etc/apache2/ports.conf – Arquivo de configuração de portas

/etc/apache2/sites-available – Configuração de sites disponíveis

/etc/apache2/mods-available – Módulos habilitados

O arquivo de configuração no RedHat é /etc/httpd.conf – Na prova da LPI o principal arquivo será este.

2 – Abra o arquivo de configuração para que possamos visualizar as principais opções de configuração do Apache.

# vim /etc/apache2/apache2.conf

A variável ServerRoot define aonde o Apache deve procurar por seus arquivos de configuração. No exemplo abaixo, os arquivos de configuração serão procurados em /etc/apache2

ServerRoot /etc/apache2

Já a variável DocumentRoot diz ao Apache aonde procurar os sites que dee ser apresentados aos usuários. No exemplo, os sites serão armazenados em /var/www.

DocumentRoot /var/www

O usuário e grupo que executa o apache são definidos pelas variáveis abaixo

User $APACHE_RUN_USERS
Group $APACHE_RUN_GROUP

Caso seja encontrado algum erro durante o funcionamento do Apache, o mesmo será registrado de acordo com o desiginos da variável ErrorLog, como no exemplo abaixo

ErrorLog /var/log/apache2/erro.log

E, ainda falando em logs, o Apache suporta a declaração de registros personalizados através do uso da variável LogFormat

LogFormat “%h %1 %u %t “%r” %>s %b “Refereri” “%User-Agenti””

Os logs, por padrão, serão armazenados no formato “combined”, dentro do diretório /var/log/apache2/access.log, e o formato “combined” fará o registro dos seguintes itens.

  • %h – Hostname ou endereço IP do visitante
  • %l – Hífen
  • %u – Nome de usuário, caso exista
  • %t – Horário de acesso
  • %r – Requisição da solicitação
  • %>s – O resultado da solicitação
  • %b – O tamanho em bytes da resposta
  • Refereri – O site anterior a visita, se informado
  • User-Agenti – O navegador do visitante, se informado

Ajustes do módulo Workrt e Prefork

Ainda dentro do arquivo de configuração do apache, existem ajustes de performance para os módulos MPM Worker e MPM PreFork. Por padrão, o apache vem configurado para trabalhar em MPM Worker, então, vamos entender suas configurações.

<IfModule mpm_worker_module>
StartServers          2
MaxClients          150
MinSpareThreads  25
MaxSpareThreads  75
ThreadsPerChild     25
MaxRequestsPerChild   0

  • A variável StartServer configura o número inicial de servidores
  • A variavel MaxClients, o número máximo de conexões simultaneas
  • A variável MinSpareThreads, configura o valor mínimo de threads em espera
  • A variável MaxSpareThreads, configura o valor máximo de threads em espera
  • E a variável MaxRequestPerChild, configura o valor máximo por processos

O mpodulo PreFork também possui ajustes similares ao módulo Worker

<IfModule mpm_prefork_module>
StartServers          5
MinSpareServers  5
MaxSpareServers  10
MaxClients           150
MaxRequestsPerChild   0

  • A variável StartServers configura o número inicial de servidores
  • A variável MinSpareServer, configura o valor mínimo de processos em espera
  • A variável MaxSpareThreads, configura o valor máximo de processos em espera
  • A variável MaxClients, o número máximo de conexões simultaneas
  • E a variável MaxRequestPerChild, configura o valor máximo por processos

Segurança

Dentro do arquivo security, vamos colocar as regras de segurança

cd /etc/apache2

# vim conf.d/security

As variáveis abaixo ajudam a dificultar o processo de descoberta da versão do servidor e sistema operacional

ServerSignature Off
ServerTokens Prod
TraceEnable Off

antes

depois

Após efetuar os ajustes, se necessários, reinicie o servidor apache

/etc/init.d/apache2 restart

Páginas de erros

As páginas de erros que são exibidas, como quando não se acha um arquivo ou página no servidor e exibe uma página de “Não Encontrado” podem ser personalizadas através do httpd.conf. Essas páginas são importantes e deve-se dar uma atenção especial a elas, já que uma tentativa de ataque ou uma intenção maliciosa podem ser descobertas através de uma monitoração constante de logs ou avisos, gerados com o auxílio de linguagens dinâmicas (PHP, Python etc). O código abaixo mostra como se pode personalizar ou alterar essas páginas de acordo com suas necessidades ou interesses.

ErrorDocument 403 /acesso_negado.html
ErrorDocument 404 /nao_encontrado.html
ErrorDocument 500 /erro_interno_servidor.html

No código acima foram personalizados os erros mais comuns (note que aos erros são associados números) e existem vários erros, como os erros de número 400, 401, 402 que são associados aos “erros de cliente”, e os erros acima de 500 que são associados aos “erros de servidor”. Na primeira linha é definida uma página para quando o usuário não tem permissão de acesso. Na segunda, quando um usuário tenta acessar um arquivo ou diretório inexistente no servidor, será exibida a página “não_encontrado.html”. E, por último, será exibido a página “erro_interno_servidor.html” quando acontecer um erro interno no servidor. Com esse recurso, você pode criar uma página PHP (por exemplo) que envia um e-mail e/ou armazena em algum banco de dados as informações do usuário que acessou tal página e, caso perceba algo suspeito, tomará providências de modo a corrigir uma suposta falha ou problema de segurança.

Como configurar o comportamento do apache quando surge um erro 404 – Not Found Error.

Para configurar a pagina de erro é necessário fazer o seguinte:

1 –  Defina ou crie uma arquivo (página) de erro a sua escolha, existem várias paginas de exemplo pela Internet, basta googlar um pouco para encontrarem.

2 – Renomeie está pagina para 404.php ou 404.html e insira dentro do diretório de upload do apache, no meu caso é /var/www.

# vim 404.html

3 – Localize o arquivo de configuração do apache (httpd.conf, no meu caso está localizado dentro do diretório /etc/apache2, se não souberem, façam uma pesquisa com o comando locate httpd.conf) e acrescente/edite a seguinte linha:

ErrorDocument 404 /404.extensão(php ou html)

Desta forma o browser é reencaminhado para o arquivo 404.extensão(php ou html) quando o erro 404 acontece.
Se fizerem todos os passos corretamente, sempre que acontecer um erro 404, a página que será exibida é a que foi definida por você.

speling

O speling é outro módulo útil e bastante usado. Ele tem a f unção de corrigir erros simples nos links digitados pelos usuários, encaminhando-os para a página com o nome mais similar, em vez de mostrar um erro 404. Com isso, um visitante que tentar acessar por engano a “http://www.gnulinuxbr2.com.br/vandocoto“, por exemplo, será enviado para a “http://www.gnulinuxbr.com.br/vandocouto“, que é a página com nome mais próximo e possivelmente a que ele desejava acessar.

Além de evitar a perda de algumas visitas, a correção automática das URLs ajuda a reduzir o volume de erros de indexação nos mecanismos de busca, causados por links externos apontando para páginas do site que não existem. Como o conteúdo do site não é duplicado (os visitantes são apenas redirecionados para a página correta, automaticamente), não existe nenhuma contra-indicação no uso do módulo, com exceção de um pequeno aumento na carga de processamento do servidor, proporcional ao volume de correções que ele precisar realizar.
Em praticamente todas as distribuições, o mod-speling é incluído diretamente no pacote principal do Apache, de forma que você precisa apenas ativá-lo.

Nas distribuições deriv adas do Debian, use o a2enmod, como em:

# a2enmod speling

# /etc/init.d/apache2 force-reload

Nas derivadas do RedHat, crie o arquivo “/etc/httpd/conf.d/speling.conf“, contendo a linha:

LoadModule speling_module modules/mod_speling.so

E em seguida reinicie o serviço:

# service httpd restart

Caso, ao reiniciar o Apache, v ocê receber um erro como “[warn] module speling_module is already loaded, skipping”, signif ica que o módulo já está ativo por padrão. Nesse caso, você pode remover o arquivo, pois ele não é necessário.

Entendendo o arquivo de configuração “httpd.conf” (RedHat e Debian)

O apache2.conf é o principal arquivo de configuração do Apache (Debian) e geralmente é localizado em /etc/apache2/

A seguir vou dar uma pequena abordada nas principais opções e o que nós poderemos encontrar em seu conteúdo, para podemos entender melhor como funciona o webserver Apache.

HostnameLookups
A opção “HostnameLookups” tem a característica de habilitar resolução de nomes dos clientes.
Se está opção estiver habilitada (on), o Apache irá resolver os “IP’s” para os nomes (DNS) dos clientes,com a opção double ele irá tentar resolver o “IP” e o nome (double-reverse).

Sintaxe:

HostnameLookups <”on” (abilitar)/”off” (desabilitar) /”double”(double-reverse)>

Exemplo:

HostnameLookups on

Group
A opção “Group” especifica o nome do grupo que gerenciará o Apache.

Sintaxe:

Group <nome do grupo>

Exemplo:

Group apache

User
A opção “User” especifica o nome do usuário que gerenciará o Apache, esse usuário tem que ter está no grupo que está definido na opção “Group”.
Sintaxe:

User <usuário>

Exemplo:

User apache

ServerAdmin
A opção “ServerAdmin” determina um endereço de e-mail para ser mostrado nas páginas de erros, para os clientes informarem os erros ao administrador.

Sintaxe:

ServerAdmin <endereço de e-mail>

Exemplo:

ServerAdmin // <![CDATA[// <![CDATA[
var prefix = ‘ma’ + ‘il’ + ‘to’;
var path = ‘hr’ + ‘ef’ + ‘=’;
var addy34045 = ‘vandocouto’ + ‘@’;
addy34045 = addy34045 + ‘linuxmail’ + ‘.’ + ‘org’;
document.write( ” );
document.write( addy34045 );
document.write( ” );
//n
// –>]]>vandocouto@gmail.com// <![CDATA[// Este endereço de e-mail está protegido contra spambots. Você deve habilitar o JavaScript para visualizá-lo. // <![CDATA[// <![CDATA[
document.write( ” );
// ]]>

ServerRoot
A opção “ServerRoot” define o primeiro diretório(raiz) ou o topo de onde estão os documentos de seu webserver.

Sintaxe:

ServerRoot <diretório que será o topo ou o diretório raiz de seu webserver >

Exemplo:

ServerRoot /var/www

LoadModule
A opção LoadModule especifica quais módulos DSO que serão carregados.
Módulos DSO (Dynamic Shared Objects) permitem adicionar e remover funcionalidades e recursos sem necessidade de recompilação do Apache, necessitando só ser instalado o módulo e carrega-lo no httpd.conf com a opção “LoadModule”.

Sintaxe:

LoadModule <nome do módulo> <local do módulo a ser carregado>

Exemplo:

LoadModule roaming_module /usr/lib/apache/1.3/mod_roaming.so

ExtendedStatus
A opção “ExtendedStatus” é usada para definir se o Apache gerará status detalhados ,caso não queira que o Apache gere status detalhados coloque a opção “off”.

Sintaxe:

ExtendedStatus <“on” (para habilitar) / “off” (para desabilitar)>

Exemplo:

ExtendedStatus on

ErrorLog
A opção “ErrorLog” define o local do arquivo onde serão gravadas as mensagens de erros, caso ocorra erros com o Apache.

Sintaxe:

ErrorLog <local do arquivo que serão armazenados as mensagens de erros>

Exemplo:

ErrorLog /var/www/logs/error.log

LogLevel
A opção “LogLevel” é usada para especificar em que nível o httpd irá gerar os logs de erros.

Os níveis disponíveis são:

emerg – O sistema está inutilizável.
alert – A ação deve ser tomada imediatamente.
crit – Condições críticas.
error – Condições de erro.
warn – Condições de alerta.
notice – Condição normal, mas significante.
info – Mensagens informativas.
debug – Mensagens do nível de depuração.
A opção recomendada é o nível “warn”, pois não causa acúmulo de atividades e também não gera um excesso de mensagens desnecessários do Apache.

Sintaxe:

LogLevel <nível dos logs>

Exemplo:

LogLevel warn

CustomLog
A opção “CustomLog” permite especificar onde os logs personalizados serão gravados e definir o formato em que serão escritos no arquivo. Esta opção também aceita nomes (apelidos) para depois ser configurado seu formato na opção “LogFormat”.

O CustomLog e FormatLog (FormatLog veremos logo em seguida) pode ser usado mais de uma vez caso você queira especificar vários arquivos de Logs diferentes.

Sintaxe:

CustomLog <local que serão armazenados os logs> <formato/nome>

Exemplos:

CustomLog /var/www/logs/access.log combined
LogFormat “%h %l %u %t “%r” %>s %b “%{Referer}i” “%{User-Agent}i”” combined

O exemplo acima indica um local e um nome na opção CustomLog e define o formato dos logs na opção LogFormat.

CustomLog /var/www/logs/access.log “%h %l %u %t “%r” %>s %b “%{Referer}i” “%{User-Agent}i””

No exemplo acima você já configura tudo direto, local do arquivo onde serão gravado os logs, formato, sem precisar do LogFormat.

Logformat
A opção “LogFormat” é usada para especificar outro formato para os logs TrasferLog ou de algum outro log definido em CustomLog adicionando o nome do Log em seguida, recomendo que leia o CustomLog primeiro caso você não esteja seguindo a ordem.

Sintaxe:

LogFormat <formato do log> <nome definido em CustomLog>

Exemplos:

LogFormat “%h %l %u %t “%r” %>s %b “%{Referer}i” “%{User-Agent}i”” combined

O exemplo acima indica um formato de log para o nome combined que tem que ser definido na opção CustomLog.

LogFormat “%h %l %u %t “%r” %>s %b” common

O exemplo acima indica um formato de log para o nome common que tem que ser definido na opção CustomLog.

TransferLog
A opção “TransferLog” é usada para definir onde serão gravados informações básicas nos logs como IP do cliente,que página ele acessou,data que a página foi acessada e etc.
Você poderá mudar o formato dos logs do TransferLogs com a opção LogFormat.

Sintaxe:

TransferLog <local do arquivo>

Exemplo:

TransferLog /var/www/logs/transferências.log

ServerSignature
A opção “ServerSignature” é usada para definir que “Mensagem” aparecerá se ocorrer algum erro.

Com a opção “on” mostrará a versão do Apache, os módulos e etc.
Com a opção “off” não aparece nada, só o erro.
Com a opção “EMAIL” mostrará o e-mail do administrador.

Sintaxe:

ServerSignature <opção “on”, “off” ou “EMAIL”>

Exemplo:

ServerSignature off

PidFile
A opção “PidFile” é usada para especificar o local do arquivo que serão gravado o número do processo (pid) do Apache quando ele é iniciado.

Sintaxe:

PidFile <local do arquivo que serão gravados as mensagens do processo do apache>

Exemplo:

PidFile /var/run/apache.pid

ServerName
A opção “ServerName” é usada para especificar o nome ou o ip do seu servidor Web.

Sintaxe:

ServerName <ip ou nome(DNS) de seu servidor>

Exemplos:

ServerName localhost
ServerName www.seuservidor.com.br

Timeout
A opção “Timeout” é usada para especificar um número de segundos de espera antes de enviar uma mensagem de erro, ou seja, quantos segundos são necessários para o site ser carregado, caso ultrapasse os segundo, o Apache enviará uma mensagem de erro ao cliente.

Sintaxe:

Timeout <número de segundos>

Exemplo:

Timeout 300

KeepAlive
A opção “KeepAlive” permite que múltiplas requisições possam ser enviadas pela mesma conexão caso esteja abilitada (on).

Sintaxe:

KeepAlive <on ,off>

Exemplo:

KeepAlive On

MaxKeepAliveRequests
A opção “MaxKeepAliveRequests” é usada para definir um número máximo de requisições permitidas, essa opção só funciona caso esteja como “on” a opção keepAlive.

Sintaxe:

MaxKeepAliveRequests <número de requisições>

Exemplo:

MaxKeepAliveRequests 100

KeepAliveTimeout
A opção “KeepAliveTimeout” é usada para definir um número de segundos que aguardará até a próxima requisição, essa opção só funciona caso esteja como “On” a opção KeepAlive.

Sintaxe:

KeepAliveTimeout <número de requisições>

Exemplo:

KeepAliveTimeout 15

MinSpareServers
A opção “MinSpareServers” determina o mínimo de processos filhos do Apache para serem executadas e receberem requisições.

Sintaxe:

MinSpareServers <número mínimo de processos>

Exemplo:

MinSpareServers 6

MaxSpareServers
MaxSpareServers determina um número máximo de processos filhos do Apache para serem executados e receberem requisições.

Sintaxe:

MaxSpareServers <número máximo de processos>

Exemplo:

MaxSpareServers 12

StartServers
A opção “StartServers” é usada para definir o número de processos criados na inicialização do Apache.

Sintaxe:

StartServers <número de processos>

Exemplo

StartServers 5

MaxClients
A opção “MaxClients” é usada para definir um número máximo de clientes que acessarão o webserver ao mesmo tempo.

Sintaxe:

MaxClients <número de cliente>

Exemplo:

MaxClients 7

MaxRequestsPerChild
A opção MaxRequestsPerChild define o número de requisições que um processo do servidor irá gerenciar.

Sintaxe

MaxRequestsPerChild <número de requisições que um processo irá gerenciar>

Exemplo

MaxRequestsPerChild 30

Listen
A opção “Listen” é usada para definir em que portas e endereços o Apache receberá requisições.

Sintaxe:

Listen <porta ou endereço que receberá requisições>

Exemplo:

Listen 80
Listen 12.34.56.78:80

DocumentRoot
A opção “DocumentRoot” é usada para especificar o local de onde os suas páginas web do seu site estão ou vão estar.

Sintaxe:

DocumentRoot <diretório dos documentos de seu site>

Exemplo:

DocumentRoot “/var/www/htdocs”

DirectoryIndex
A opção “DirectoryIndex” é usada para determinar quais nomes de arquivos serão validos para abertura da home pages no browser .Por exemplo, caso um cliente acesse a url “www.seuservidor.com.br/” ou “www.seuservidor.com.br/cgi-bin/” abrirá alguma página definida na opção “DirectoryIndex” .

Sintaxe:

DirectoryIndex <nome completo das páginas>

Exemplo:

DirectoryIndex index.html index.cgi index.pl index.php index.xhtml

AccessFileName
A opção “AccessFileName” é usado para definir outro nome para o .htaccess.

Sintaxe:

AcceessFileName <novo nome do arquivo .htaccess>

Exemplo:

AcceessFileName .permissões

Alias
A opção “Alias” é usada para o Apache pegar arquivos em outro diretório como se fosse um link.

Sintaxe:

Alias <diretório> <diretório onde o Apache pegará os arquivos>

Exemplo:

Alias /icons /var/www/leandro
O exemplo acima quando você acessar o diretório /icons ele irá pegar os arquivos que estão no /var/www/leandro como se fosse o próprio diretório.

Scriptalias
A opção “Scriptalias” faz o mesmo que a opção “Alias” a única diferença é que a opção “ExecCGI” habilita execução de arquivos CGI.

Sintaxe:

Scriptalias <diretório> <diretório onde o Apache pegará os arquivos>

Exemplo:

Scriptalias /cgi-bin/ /usr/local/cgis/
O exemplo acima quando você acessar o diretório /cgi-bin ele irá pegar os arquivos que estão no /usr/local/cgis/ como se fosse o próprio diretório.

Include
A opção “Include” é usada para especificar outros arquivos de configuração além do httpd.conf,é muito usado por administradores organizados que especificam um arquivo para cada tarefa ou para configurar outros serviços para implementar o Apache, por exemplo podemos definir um arquivo para virtual hosts, outro para permissões e um outro para ativar o HTTPS com SSL.

Sintaxe:

Include <local do arquivo adicional de configuração>

Exemplo:

Include /etc/apache/extra/arquivo.conf

ErrorDocument
A opção “ErrorDocument” é usado para especificar outra página de erro diferente da padrão.

Sintaxe:

ErrorDocument <código do erro> <mensagem ou pagina que será exibida>

Códigos de erros e sua mensagem quando o erro ocorre (esses erros são os padrões em português):

200 OK
201 Criado
202 Aceito
203 Informação não-autoritativa
204 Nenhum conteúdo
205 Conteúdo resetado
206 Conteúdo parcial
300 Múltiplas escolhas
301 Movido Permanentemente
302 Movido Temporariamente
303 Veja outra
304 Não modificada
305 Use o Proxy (redirecionamento proxy)
400 Requisição incorreta
401 Não autorizado
402 Pagamento Requerido
403 Bloqueado
404 Não encontrada
405 Método não permitido
406 Não aceitável
407 Autenticação via proxy requerida
408 Tempo limite da requisição expirado
409 Conflito
410 Gone
411 Tamanho requerido
412 Falha na pré-condição
413 A requisição parece ser grande
414 A URL requisitada é muito longa
415 Tipo de mídia não suportado
500 Erro Interno no Servidor
501 Não implementado
502 Gateway incorreto
503 Serviço não disponível
504 Tempo limite no gateway
505 Versão HTTP não suportada

Exemplos:

ErrorDocument 405 “erro ocorrido”

No exemplo acima se ocorrer o erro 405 irá aparece uma mensagem “erro ocorrido”

ErrorDocument 404 /missing.html

No exemplo acima se ocorrer o erro 404 irá aparece uma a página /missing.html.

TypesConfig
A opção “TypesConfig” especifica o arquivo que contém os mapas das extensões com seus respectivos conteúdos, por padrão ele já vem configurado com o arquivo mime-type.

Sintaxe:

TypesConfig <local do arquivo>

Exemplo:

TypesConfig /etc/apache/mime.types

AddType
A opção “AddType” permite adicionar um mapeamento a certa extensão de arquivo à certos tipos de conteúdo para ser reconhecido pelo Apache, essa opção é usada caso a extensão do arquivo não constar no arquivo definido na opção “TypesConfig”.

Sintaxe:

AddType <MIME-type> <extensão do arquivo>

Para ver os MIME-type disponíveis, veja o arquivo mime.type no diretório de configuração do apache.

Exemplo:

AddType application/x-gzip .tgz

DefaultType
A opção “DefaultType” define um tipo de MIME para documentos com extensões desconhecidas ou que seu webserver não reconheça.

Sintaxe:

DefaultType <tipo do MIME>

Exemplo:

DefaultType text/plain

AddHandler
A opção “AddHandler” permite mapear certas extensões de arquivos à programas específicos. Essa opção só funcionam com extensões que não estão no arquivo definido na opção TypeConfig ou seja extensões desconhecidas do Apache.

Sintaxe:

AddHandler <programa que manipulará a extensão> <extensão do arquivo>

Exemplo:

AddHandler cgi-script .cgi

SetHandler
SetHandler define um programa (que é definido na opção AddHandler) para manipular suas extensões em um determinado diretório.

Sintaxe:

SetHandler <programa>

Exemplo:

<directory /var/www/cgi-bin>
Options ExecCGI
SetHandler cgi-bin
</Location>

ListenBackLog
Define um número máximo de conexões pendentes, opção muito útil para barrar alguns ataques de sobrecarga de requisições.

Sintaxe:

ListenBacklog <número de conexões>

Exemplo:

ListenBacklog 500
As opções ServerType, BindAdress, port, AddModule, AccessConfig,

ResourceConfig, mod_log_agent e mod_log_referer que tinham no Apache 1.3 foram banidas no Apache 2.x.

{mospagebreak}

_________________________________________________

>_Apache 1.2
Tagged on:

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

%d blogueiros gostam disto: