• Nenhum resultado encontrado

Instalação e configuração do serviço web Apache.

N/A
N/A
Protected

Academic year: 2021

Share "Instalação e configuração do serviço web Apache."

Copied!
22
0
0

Texto

(1)

Serviço web Apache

agosto

/2013

Instalação e configuração do serviço web Apache.

1 – Histórico

Um servidor web [ou serviço web] é uma aplicação servidora que usa o protocolo HTTP, Hyper Text Transfer Protocol, para se comunicar com a aplicação cliente, usualmente um navegador da internet.

No caso de acesso mais simples, o cliente faz uma requisição solicitando determinado documento HTML1 para o serviço web, que envia essa página ao cliente. Por sua vez, o navegador

interpreta o texto HTML da página e mostra numa apresentação gráfica o seu conteúdo. Se a aplicação cliente não for capaz de interpretar2 o texto HTML, então ele apenas mostra o conteúdo

de texto. No caso da aplicação cliente wget, ela apenas efetua o download dessa página. Em 1993 foi lançado o navegador NCSA3 Mosaic, que marcou o início de uma rápida

popularização da Web. O sucesso desse navegador foi usar protocolos abertos [HTTP, FTP] e simplificar a tarefa de acesso ao conteúdo, que passou a ser apresentado em tela gráfica com inclusão de imagens, além de seguir hiperlinques num simples clique de mouse. Até então, a maior parte dos navegadores usava linha de comando.

Cabe lembrar que antes do Mosaic havia o Gopher4, porém este não tinha a funcionalidade

do Hyper Text e contava apenas com uma estrutura semelhante a navegador de conteúdo, em estrutura de árvore de diretórios para seguir o conteúdo na internet.

Do lado servidor, o NCSA lançou o HTTPd NCSA web server. Este web server era de código fonte aberto, fato que permitiu posteriormente a criação de novos seviços web baseados neste. A letra d em HTTPd vem de daemon, ou seja, daemon HTTP. Todas essas novas tecnologias nasceram no Unix, tanto o web server quanto o navegador, pois era esse o sistema operacional largamente empregado nas universidades e centros de pesquisa.

Acontece que o sucesso do navegador Mosaic foi tamanho que uma parte substancial do grupo de cientistas que criou o Mosaic saiu do NCSA para fundar uma empresa chamada Mosaic Communications Corporation, posteriormente renomeada para Netscape Communications Corporation. Essa empresa criou o navegador conhecido como Netscape, que foi baseado no Mosaic. Posteriormente, por cobrar licença de uso, o Netscape perdeu espaço para os navegadores free.

1 O documento HTML é um arquivo de texto com instruções de Hyper Text Transfer Protocol.

2 Por exemplo, Lynx [que é uma das aplicações clientes de servidor web mais antigas] não interpreta as tags HTML e apenas apresenta o conteúdo texto da página.

3 National Center for Supercomputing Applications

4 Gopher é também um protocolo da camada de aplicação TCP/IP lançado em 1991. Foi o precursor da World Wide Web.

(2)

E devido ao rápido crescimento da web, proporcionado pelos navegadores Mosaic e Netscape, o desenvolvimento do HTTPd web server não conseguiu mais acompanhar a demanda por novas funcionalidades e atualizações de código requerida pelas empresas de internet5, que

começaram rapidamente a se disseminar pelo mundo.

Então, em 1995 Rob McCool saiu do NCSA e juntou-se a um grupo de pessoas que já vinha aplicando patches6 no código do HTTPd NCSA web server. Esse grupo juntou forças e criou a

empresa que posteriormente ficou conhecida como Apache. O serviço web Apache é derivado diretamente do código fonte do HTTPd webserver, inicialmente pela aplicação de patches. O nome apache vem de a patchy server, embora atualmente digam que o nome foi escolhido "em

homenagem à tribo indígena".

Atualmente o Apache web server está na versão 2, e seu código fonte também está na categoria open source.

Desde o seu início e até hoje, o Apache é o web server mais usado. De acordo com

levantamento atual da Netcraft7, 60% do total de servidores web são Apache, mais que o dobro do

segundo colocado. E essa distância aumenta mais ainda quando se avalia apenas o milhão de websites mais ocupados8 [ou mais acessados] na internet, onde esse número aumenta para 66%.

Essa preferência reflete não apenas o baixo custo de implantação, mas também a qualidade, robustez e segurança do produto.

A instalação e configuração do serviço web Apache será em dua partes: Parte A para

CentOS (Red Hat) e parte B para Ubuntu (Debian).

5 Essas empresas à época eram principalmente os provedores de acesso à internet em linha discada. 6 Patches: atualizações, correções, modificações e melhorias no código fonte.

7 Netcraft survey em www.netcraft.com

(3)

Instalação e configuração: Parte A (CentOS) A2 – Instalação do web server Apache

Essa instalação também será standalone.

Para descobrir se o serviço Apache está instalado, procurar pelo seu script de inicialização em /etc/init.d:

Se não houver saída no comando acima é indicativo de que o serviço httpd não está instalado. Nesse caso, instalar com o comando yum:

Após instalado, verificar se existem os seguintes arquivos:

onde:

/etc/init.d/httpd é o script de inicialização do serviço Apache;

/usr/sbin/apache2ctl é o script de controle do serviço Apache;

/usr/sbin/httpd é o executável que dará origem ao processo daemon;

/etc/httpd é o diretório de configuração do serviço web Apache.

A3 – Configuração do serviço shell# ls /etc/init.d | grep httpd

/etc/init.d/httpd

shell# yum install httpd

shell# file /etc/init.d/httpd

/etc/init.d/httpd: Bourne shell script text executable

shell# file /usr/sbin/apache2ctl

/usr/sbin/apache2ctl: Bourne shell script text executable

shell# file /usr/sbin/httpd

/usr/sbin/httpd: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

shell# file /etc/httpd

(4)

Primeiro vamos apenas olhar as configurações de instalação do serviço. Para isso, entrar no diretório /etc/httpd:

Nesse diretório existem [entre outras coisas] dois subdiretórios: conf e conf.d. O arquivo de configuração do serviço é /etc/httpd/conf/httpd.conf.

No arquivo httpd.conf existe a seguinte include: Include conf.d/*.conf. Desse modo, todo arquivo que for colocado no diretório /etc/httpd/conf.d e que tenha a extensão .conf será tratado também como parte da configuração do serviço.

Um maneira mais prática de visualizar o conteúdo do arquivo httpd.conf sem apresentar linhas comentadas nem linhas em branco é:

No arquivo httpd.conf, algumas configurações importante são:

StartServers 8 número de processos ou threads iniciais para o serviço;

MinSpareServers 5 número mínimo de processos ou threads durante o funcionamento;

MaxSpareServers 20 número máximo de processos ou threads durante o funcionamento;

ServerLimit 256 número limite de processos ou threads;

MaxClients 256 número limite de clientes simultâneos. Esse número deve ser no máximo igual a ServerLimit, nunca maior;

Include conf.d/*.conf inclui o diretório /etc/httpd/conf.d também como diretório de configuração do serviço;

User apache é o usuário sobre o qual roda o serviço;

Group apache é o grupo sobre o qual roda o serviço;

DocumentRoot "/var/www/html" é o diretório onde fica o conteúdo servido pelo serviço; AccessFileName .htaccess é o nome do arquivo usado quando houver autenticação

para acesso a diretório.

Convém notar também que o usuário sobre o qual o serviço roda, nesse caso está configurado User apache e Group apache, precisa ter no mínimo permissão de leitura no

shell# cd /etc/httpd shell# ls

shell# more /etc/httpd/conf/httpd.conf

(5)

conteúdo em DocumentRoot.

O passo seguinte é iniciar o serviço web Apache. Para isso é usado o script de inicialização:

Depois de iniciado o serviço, deverá estar rodando o processo daemon e também seus processos filhos [de StartServers]:

Repare que o daemon [nesse caso] é o processo de PID 12391, e que pertence ao root. Os demais processos são filhos deste e estão rodando sobre o usuário apache.

São os processo filhos que atendem aos clientes do serviço, e a função do daemon é ir criando mais processos filhos à medida que os clientes forem consumindo os processos que os atendem.

Depois disso, o scan de portas vai mostrar que a porta 80 também está aberta:

shell# ps -ef | grep httpd

root 12391 1 0 16:17 ? 00:00:00 /usr/sbin/httpd -k start

apache 12392 12391 0 16:17 ? 00:00:00 /usr/sbin/httpd -k start apache 12393 12391 0 16:17 ? 00:00:00 /usr/sbin/httpd -k start apache 12394 12391 0 16:17 ? 00:00:00 /usr/sbin/httpd -k start apache 12395 12391 0 16:17 ? 00:00:00 /usr/sbin/httpd -k start apache 12396 12391 0 16:17 ? 00:00:00 /usr/sbin/httpd -k start apache 12397 12391 0 16:17 ? 00:00:00 /usr/sbin/httpd -k start apache 12398 12391 0 16:17 ? 00:00:00 /usr/sbin/httpd -k start apache 12399 12391 0 16:17 ? 00:00:00 /usr/sbin/httpd -k start

shell# /etc/init.d/httpd start

(6)

A4 – Testar o acesso com a aplicação cliente wget

Já que a aplicação wget baixa o arquivo do serviço web, ir para o diretório /tmp e, de lá, acessar o web server no IP 192.168.1.10:

O erro "ERROR 403: Forbidden" é devido ao arquivo de configuração

/etc/httpd/conf.d/welcome.conf, que proíbe a listagem do diretório.

No arquivo de erro do serviço httpd, /var/log/httpd/error_log, aparece o seguinte log:

Então, para facilitar o acesso ao serviço, basta renomear este arquivo, de modo a não ter mais a extensão .conf:

shell# nmap localhost

Starting Nmap 6.01 ( http://nmap.org ) at 2012-11-04 16:26 BRST Nmap scan report for localhost (127.0.0.1)

Host is up (0.0000070s latency).

Other addresses for localhost (not scanned): 127.0.0.1 Not shown: 998 closed ports

PORT STATE SERVICE

80/tcp open http

631/tcp open ipp

Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds

shell# cd /tmp

shell# wget 192.168.1.10

--2012-11-04 16:29:12-- http://192.168.1.10/ Connecting to 192.168.1.10:80... connected.

HTTP request sent, awaiting response... 403 Forbidden 2012-11-04 16:29:12 ERROR 403: Forbidden.

shell# tail /var/log/httpd/error_log

[Sun Nov 04 16:29:12 2012] [error] [client 127.0.0.1] Directory index forbidden by Options directive: /var/www/html/

(7)

Depois, é necessário dar um reload no serviço para ele carregar novamente as configurações:

NOTA:

O reload não reinicia o serviço, apenas recarrega as configurações, desse modo nenhum usuário corre o risco de ser desconectado.

Agora, testar de novo o acesso com wget:

Agora, no arquivo de log do serviço httpd, /var/log/httpd/access_log, vai aparecer a seguinte linha:

A5 – Configurar diretório protegido por IP

Para a necessidade dessa configuração, tomar como exemplo o caso de um único serviço web disponibilizando conteúdo tanto para a internet quanto intranet. Acontece que nessa intranet, algum conteúdo é restrito e não deve ser acessado da internet.

Nesse caso, basta colocar esse conteúdo num diretório protegido por IP, isso é, apenas

shell# mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.OLD

shell# /etc/init.d/httpd reload

Reloading httpd configuration: [ OK ]

shell# wget 192.168.1.10

--2012-11-04 16:44:59-- http://192.168.1.10/ Connecting to 192.168.1.10:80... connected. HTTP request sent, awaiting response... 200 OK Length: 525 [text/html]

Saving to: “index.html”

100%[==========================================>] 525 --.-K/s in 0s 2012-11-04 16:44:59 (74.1 MB/s) - “index.html” saved [525/525]

shell# tail /var/log/httpd/access_log

(8)

aqueles clientes com faixa[s] de IP[s] dessa intranet é que terão acesso ao conteúdo, e os demais não. Esse exemplo está sendo efetuado no servidor web com IP 192.168.1.10.

E para configurar essa diretiva, o jeito mais fácil é baixar o arquivo apache22.tar.gz do site www.jairo.pro.br, que já tem arquivos pré-configurados.

Mas como sabemos, o acesso à internet passa por um proxy que exige autenticação, então antes de tentar baixar esses arquivos com comando wget é necessário acertar a variável

http_proxy:

Onde:

RA: é o RA do aluno;

SENHA: é a senha de acesso do aluno;

186.251.39.196: é o IP do serviço proxy, que atende na porta 3128 [é um Squid]. Para confirmar se a variável http_proxy está correta, usar o comando echo:

Depois disso, é só baixar o arquivo apache22.tar.gz de www.jairo.pro.br com o comando wget:

Por fim, descompactar e extrair o conteúdo do arquivo apache22.tar.gz com os comandos

gunzip e tar:

shell# export http_proxy=http://RA:SENHA@186.251.39.196:3128

shell# wget www.jairo.pro.br/apache22.tar.gz

--2012-11-04 17:18:14-- http://www.jairo.pro.br/apache22.tar.gz Resolving www.jairo.pro.br... 187.73.33.34

Connecting to www.jairo.pro.br|187.73.33.34|:80... connected. HTTP request sent, awaiting response... 200 OK

Length: 534 [application/x-gzip] Saving to: “apache22.tar.gz”

100%[========================================>] 534 --.-K/s in 0s 2012-11-04 17:18:14 (72.3 MB/s) - “apache22.tar.gz” saved [534/534]

shell# echo $http_proxy

(9)

que cria o diretório apache22. Entrar nesse diretório:

No arquivo protegido.conf tem a seguinte diretiva: ========== arquivo protegido.conf ============== # diretorio protegido por IP

<Directory "/var/www/html/protegido"> Order deny,allow

Deny from all

Allow from 10.102.1.31 </Directory>

==========================================

Note que a diretiva "Allow from" permite o acesso ao conteúdo no diretório

"/var/www/html/protegido" apenas ao cliente com IP 10.102.1.31. Mas se quiséssemos liberar esse acesso para mais de um IP ou até mesmo para uma rede inteira, bastaria fazer:

====================================================================== Allow from 192.168.1.0/24 192.168.1.1/24 10.11.12.13/16 127.0.0.1 172.16

====================================================================== Então, para configurar o acesso a diretório protegido por IP, basta apenas acertar os IPs ou redes de quem está de fato autorizado a ter acesso a esse diretório.

É preciso também criar o diretório onde vai ser disponibilizado o conteúdo protegido por IP:

Depois disso, é so copiar o arquivo protegido.conf para o diretório de configuração do serviço apache, no diretório /etc/httpd/conf.d:

shell# gunzip apache22.tar.gz shell# tar -xvf apache22.tar apache22/ apache22/protegido.conf apache22/ponto.htpasswd apache22/autenticado.conf apache22/ponto.htaccess shell# cd apache22 shell# ls

autenticado.conf ponto.htaccess ponto.htpasswd protegido.conf

(10)

Mas antes de recarregar [reload] o serviço Apache [e essa configuração tomar efeito], testar o acesso ao diretório /var/www/html/protegido com o cliente wget. Como a variável

http_proxy foi carregada com o IP e porta do serviço proxy, isso precisa ser desfeito com o

comando unset:

Convém notar que qualquer cliente, indiferente do seu IP, no momento tem acesso ao diretório protegido. No entanto, após recarregar o serviço essa configuração toma efeito:

Agora é só testar o acesso e verificar que apenas os clientes com IPs configurados na diretiva allow é que conseguem acesso a esse diretório.

E no arquivo de log do serviço vão ficar registrados os acessos desses clientes.

A6 – Configurar diretório protegido por senha

No exemplo acima [diretório protegido por IP], o conteúdo do diretório somente pode ser acessado pelos clientes com determinado IP [ou rede]. Porém, existem casos em que o cliente está navegando com qualquer IP na internet e também precisa ter acesso a esse conteúdo na intranet.

Nesse caso, a solução é colocar esse conteúdo num diretório protegido por senha, ou seja, quando o cliente tentar entrar naquele diretório, será solicitado um usuário e senha.

Aproveitando o arquivo autenticado.conf que veio no arquivo apache22.tar.gz, observar

shell# cp protegido.conf /etc/httpd/conf.d

shell# /etc/init.d/httpd reload

Reloading httpd configuration: [ OK ]

shell# unset http_proxy shell# cd /tmp

shell# wget http://192.168.1.10/protegido

--2009-11-15 21:51:03-- http://192.168.1.10/protegido A conectar 192.168.1.10:80... conectado!

HTTP requisição enviada, aguardando resposta... 200 OK Tamanho: 132 [text/html]

A gravar em: 'index.html'

100%[==========================================>] 132 --.-K/s em 0s 2009-11-15 21:51:04 (29,1 MB/s) - 'index.html' gravado [132/132]

(11)

que nele foi incluída a seguinte diretiva:

========== arquivo autenticado.conf ====================================== #Diretorio protegido por senha

<Directory "/var/www/html/autenticado"> AllowOverride FileInfo AuthConfig Limit Order allow,deny

Allow from all </Directory>

=================================================================== Essa diretiva configura o diretório "/var/www/html/autenticado" como protegido por senha.

É preciso também criar o diretório onde vai ser disponibilizado o conteúdo protegido por senha:

Depois disso, é so copiar o arquivo autenticado.conf para o diretório de configuração do serviço apache, no diretório /etc/httpd/conf.d:

No diretório /var/www/html/autenticado também precisa haver o arquivo .htaccess, que é onde estão as definições de como será essa autenticação. O arquivo .htaccess tem o seguinte conteúdo:

========== arquivo /var/www/html/autenticado/.htaccess =========== AuthUserFile /var/www/html/autenticado/.htpasswd

AuthGroupFile /dev/null AuthName "Acesso Restrito" AuthType Basic

require valid-user

========================================================

No arquivo "ponto.htaccess" que veio no arquivo apache22.tar.gz já estão prontas as definições acima, então basta copiá-lo para o diretório /var/www/html/autenticado:

Convém notar que na cópia acima o arquivo já foi renomeado de ponto.htaccess para ".htaccess".

shell# cp ponto.htaccess /var/www/html/autenticado/.htaccess shell# mkdir /var/www/html/autenticado

(12)

Como o arquivo ".htaccess" contém informações importantes sobre essa autenticação de acesso, o serviço web impede o cliente de baixá-lo. Isso pode ser verificado pelo erro 403

Forbidden recebido quando se tenta acessá-lo com wget:

E no arquivo de erro do serviço web Apache, aparece o seguinte log:

No arquivo ".htpasswd" é que vão os usuários e senhas9 usados nessa autenticação. Do

mesmo modo que ".htaccess", o cliente web é impedido de baixar esse arquivo.

Para criar o arquivo ".htpasswd" e incluir o usuário aluno e sua senha, deve ser usado o comando htpasswd:

No comando acima, a opção -c é para criar um arquivo novo. Se omitir essa opção, irá manter todos os usuários que existem no arquivo.

IMPORTANTE:

Se o arquivo ".htpasswd" já existe e for usado -c, todo o conteúdo anterior desse arquivo será perdido. Mas se o arquivo ".htpasswd" já existe e não for usado -c, apenas altera a senha do usuário que já existe no arquivo ou, caso ainda não exista o usuário, será

automaticamente incluído nesse arquivo.

Agora é só testar com o navegador e observar que será solicitado um usuário e senha para esse acesso.

A figura abaixo mostra como é feita essa autenticação usando o navegador Firefox.

9 Senhas criptografadas, naturalmente.

shell# htpasswd -c /var/www/html/autenticado/.htpasswd aluno

New password:

Re-type new password:

Adding password for user aluno

shell# wget http://192.168.1.10/autenticado/.htaccess

--2012-11-04 20:51:14-- http://192.168.1.10/autenticado/.htaccess Connecting to 192.168.1.10:80... connected.

HTTP request sent, awaiting response... 403 Forbidden 2012-11-04 20:51:14 ERROR 403: Forbidden.

shell# tail /var/log/httpd/error_log

[Sun Nov 04 20:51:14 2012] [error] [client 127.0.0.1] client denied by server configuration: /var/www/html/autenticado/.htaccess

(13)
(14)

Instalação e configuração: Parte B (Ubuntu) B2 – Instalação do web server Apache

Essa instalação também será standalone.

Para descobrir se o servidor Apache está instalado, procurar pelo seu script de inicialização em /etc/init.d:

Se não houver saída no comando acima é indicativo de que o serviço apache não está instalado. Nesse caso, instalar com o comando apt-get:

Após instalado, verificar se existem os seguintes arquivos:

onde:

/etc/init.d/apache2 é o script de inicialização do serviço apache2;

/usr/sbin/apache2ctl é o script de controle do serviço apache2;

/usr/sbin/apache2 é o executável que dará origem ao processo daemon;

/etc/apache2 é o diretório de configuração do serviço web apache2.

B3 – Configuração do serviço

Primeiro vamos apenas olhar as configurações de instalação do serviço. Para isso, entrar no diretório /etc/apache2:

shell# ls /etc/init.d | grep apache

/etc/init.d/apache2

shell# apt-get install apache2

shell# file /etc/init.d/apache2

/etc/init.d/apache2: Bourne shell script text executable

shell# file /usr/sbin/apache2ctl

/usr/sbin/apache2ctl: Bourne shell script text executable

shell# file /usr/sbin/apache2

/usr/sbin/apache2: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

shell# file /etc/apache2

(15)

O arquivo de configuração do serviço é "apache2.conf".

Um maneira mais prática de visualizar o conteúdo do arquivo apache2.conf sem apresentar linhas comentadas nem linhas em branco é:

No arquivo apache2.conf, algumas configurações importante são:

StartServers 5 número de processos ou threads iniciais

para o serviço;

MinSpareServers 5 número mínimo de processos ou threads

durante o funcionamento;

MaxSpareServers 10 número máximo de processos ou threads durante o funcionamento;

MaxClients 150 número limite de clientes simultâneos;

Include /etc/apache2/conf.d/ inclui o diretório /etc/apache2/conf.d também como diretório de configuração do serviço;

Include enabled inclui o diretório

/etc/apache2/sites-enabled também como diretório de configuração do serviço;

User www-data é o usuário sobre o qual roda o serviço;

Group www-data é o grupo sobre o qual roda o serviço;

AccessFileName .htaccess é o nome do arquivo usado quando houver autenticação para acesso a diretório.

NOTA:

O diretório available tem o mesmo conteúdo que

/etc/apache2/sites-enabled, pois num estão linques simbólicos que apontam para os arquivos no outro.

No arquivo apache2.conf, uma configuração importante é sobre qual usuário o serviço roda. Nas versões mais atuais de Ubuntu, isso está configurado no arquivo /etc/apache2/envvars. Significa que esse usuário precisa ter no mínimo permissão de leitura no conteúdo de

DocumentRoot [abaixo]. shell# cd /etc/apache2 shell# ls

shell# more apache2.conf

(16)

Convém reparar também que nesse arquivo tem uma include para sites-available/default, que é o local recomendado para configurar o serviço:

Nesse arquivo existe a diretiva DocumentRoot /var/www, que é o local onde ficam os documentos que o serviço entrega ao cliente.

Normalmente – e erradamente – o apt-get instala a aplicação e já inicia o processo, isso sem configurar o serviço. Por isso, após a instalação é necessário verificar se existe o processo daemon rodando:

portanto, se houver saída no comando indica que o processo está rodando e deve ser parado esse serviço. Reparar também que o processo daemon [nesse cao] é o de PID 5184, e os demais são processos filhos à espera de clientes.

Agora, o comando ps -ef | grep apache2 não deverá mais mostrar o daemon rodando. Antes de iniciar o serviço web apache, verificar quais portas TCP estão abertas. Para isso, é necessário a aplicação nmap para fazer um scan de portas. E se esta aplicação não estiver instalada, fazer a instalação:

Agora, é só fazer o scan de portas:

shell# ps -ef | grep apache2

root 5184 1 0 19:32 ? 00:00:00 /usr/sbin/apache2 -k start

www-data 5185 5184 0 19:32 ? 00:00:00 /usr/sbin/apache2 -k start

www-data 5188 5184 0 19:32 ? 00:00:00 /usr/sbin/apache2 -k start

www-data 5217 5184 0 19:32 ? 00:00:00 /usr/sbin/apache2 -k start

aluno 5419 5378 0 19:34 pts/0 00:00:00 grep apache

shell# /etc/init.d/apache2 stop

Parando o apache2: [ OK ]

shell# apt-get install nmap

(17)

que mostra apenas a porta 631 [servidor de impressão] aberta. Agora, então, iniciar o serviço apache2:

Depois disso, o scan de portas vai mostrar que a porta 80 também está aberta:

O comando ps [conforme acima] vai mostrar que o daemon apache2 está rodando.

B4 – Testar o acesso com a aplicação cliente wget

Já que a aplicação wget baixa o arquivo do servidor web, ir para o diretório /tmp e, de lá, acessar o web server no IP 192.168.1.10:

shell# nmap localhost

Starting Nmap 4.76 ( http://nmap.org ) at 2009-11-15 18:48 BRST Interesting ports on localhost (127.0.0.1):

Not shown: 999 closed ports PORT STATE SERVICE 631/tcp open ipp

Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds

shell# /etc/init.d/apache2 start

Iniciando o apache2: [ OK ]

shell# nmap localhost

Starting Nmap 4.76 ( http://nmap.org ) at 2009-11-15 19:38 BRST Interesting ports on localhost (127.0.0.1):

Not shown: 998 closed ports PORT STATE SERVICE 80/tcp open http

631/tcp open ipp

(18)

Para ver o log desse acesso, basta dar um tail no arquivo /var/log/apache2/access.log: Se ocorresse alguma mensagem de erro no acesso ao serviço Apache, o arquivo a ser consultado seria /var/log/apache2/error.log:

B5 – Configurar diretório protegido por IP

Para a necessidade dessa configuração, tomar como exemplo o caso de um único serviço web disponibilizando conteúdo tanto para a internet quanto intranet. Acontece que nessa intranet, algum conteúdo é restrito e não deve ser acessado da internet.

Nesse caso, basta colocar esse conteúdo num diretório protegido por IP, isso é, apenas aqueles clientes com faixa[s] de IP[s] dessa intranet é que terão acesso ao conteúdo, e os demais não. Esse exemplo está sendo efetuado no host com IP 192.168.1.10.

E para configurar essa diretiva, o jeito mais fácil é baixar o arquivo apache2.tar.gz do site www.jairo.pro.br, que já tem arquivos pré-configurados.

Mas como sabemos, o acesso à internet passa por um proxy que exige autenticação, então antes de tentar baixar esses arquivos com comando wget é necessário acertar a variável

http_proxy:

Onde:

RA: é o RA do aluno;

SENHA: é a senha de acesso do aluno;

186.251.39.196: é o IP do serviço proxy, que atende na porta 3128 [é um Squid]. Para confirmar se a variável http_proxy está correta, usar o comando echo:

shell# cd /tmp

shell# wget 192.168.1.10

--2009-11-15 20:59:07-- http://192.168.1.10/ A conectar 192.168.1.10:80... conectado!

HTTP requisição enviada, aguardando resposta... 200 OK Tamanho: 194 [text/html]

A gravar em: 'index.html'

100%[==========================================>] 194 --.-K/s em 0s 2009-11-15 20:59:07 (26,3 MB/s) - 'index.html' gravado [194/194]

(19)

Depois disso, é só baixar o arquivo apache2.tar.gz de www.jairo.pro.br com o comando

wget:

Agora, descompactar o arquivo apache2.tar.gz e extrair o conteúdo:

que cria o diretório apache2. Entrar nesse diretório:

No arquivo sites-available.default foi incluída a seguinte diretiva:

========== arquivo sites-available.default ====================================== # diretorio protegido por IP

<Directory "/var/www/protegido"> Order deny,allow

Deny from all

Allow from 192.168.1.0/24 192.168.1.1/24 10.11.12.13/16 127.0.0.1 172.16 </Directory>

shell# cd /tmp

shell# wget www.jairo.pro.br/apache2.tar.gz

--2009-11-15 21:18:40-- http://www.jairo.pro.br/apache2.tar.gz Resolvendo www.jairo.pro.br... 187.16.23.138

A conectar www.jairo.pro.br|187.16.23.138|:80... conectado! HTTP requisição enviada, aguardando resposta... 200 OK Tamanho: 4957 (4,8K) [application/x-gzip]

A gravar em: 'apache2.tar.gz'

100%[===============================================>] 4.957 --.-K/s em 0,07s 2009-11-15 21:18:40 (167,1 KB/s) - 'apache2.tar.gz' gravado [4957/4957]

shell# gunzip apache2.tar.gz shell# tar -xvf apache2.tar

apache2/ apache2/index.html apache2/sites-available.default apache2/apache2.conf apache2/ponto.htpasswd apache2/ponto.htaccess shell# cd apache2 shell# ls

apache2.conf index.html ponto.htaccess ponto.htpasswd sites-available.default

shell# echo $http_proxy

(20)

======================================================================= É preciso criar o diretório protegido por IP:

É necessário também acertar os IPs ou redes de quem está de fato autorizado a ter acesso a esse diretório.

Depois disso, é so copiar esse arquivo para o diretório de configuração do serviço apache:

Mas antes de recarregar [reload] o serviço Apache [e essa configuração tomar efeito], testar o acesso ao diretório /var/www/protegido com o cliente wget. Como a variável http_proxy foi carregada com o IP e porta do serviço proxy, isso precisa ser desfeito com o comando unset:

Convém notar que qualquer cliente, indiferente do seu IP, tem acesso ao diretório protegido. No entanto, após o reload do serviço essa configuração toma efeito:

Agora é só testar o acesso e verificar que apenas os clientes com IPs configurados na diretiva allow é que conseguem acesso a esse diretório.

E no arquivo de log do serviço vão ficar registrados os acessos desses clientes.

shell# mkdir /var/www/protegido

shell# cp sites-available.default /etc/apache2/sites-available/default

shell# /etc/init.d/apache2 reload

Reloading httpdapache2 configuration: [ OK ]

shell# unset http_proxy shell# cd /tmp

shell# wget http://192.168.1.10/protegido

--2009-11-15 21:51:03-- http://192.168.1.10/protegido A conectar 192.168.1.10:80... conectado!

HTTP requisição enviada, aguardando resposta... 200 OK Tamanho: 132 [text/html]

A gravar em: 'index.html'

100%[==========================================>] 132 --.-K/s em 0s 2009-11-15 21:51:04 (29,1 MB/s) - 'index.html' gravado [132/132]

(21)

B6 – Configurar diretório protegido por senha

No exemplo acima [diretório protegido por IP], o conteúdo do diretório somente pode ser acessado pelos clientes com determinado IP [ou rede]. Porém, existem casos em que o cliente está navegando com qualquer IP na internet e também precisa ter acesso a esse conteúdo na intranet.

Nesse caso, a solução é colocar esse conteúdo num diretório protegido por senha, ou seja, quando o cliente tentar entrar naquele diretório, será solicitado um usuário e senha.

Aproveitando o arquivo sites-available.default [que veio no arquivo apache2.tar.gz], observar que também foi incluída a seguinte diretiva:

========== arquivo sites-available.default ====================================== #Diretorio protegido por senha

<Directory "/var/www/autenticado">

AllowOverride FileInfo AuthConfig Limit Order allow,deny

Allow from all </Directory>

======================================================================= que configura o diretório "/var/www/autenticado" como protegido por senha.

É preciso criar o diretório autenticado:

Nesse diretório, precisa haver o arquivo .htaccess com o seguinte conteúdo:

========== arquivo /var/www/autenticado/.htaccess ============================== AuthUserFile /var/www/autenticado/.htpasswd

AuthGroupFile /dev/null AuthName "Acesso Restrito" AuthType Basic

require valid-user

======================================================================= Copiar o arquivo "ponto.htaccess" para "/var/www/autenticado/.htaccess":

shell# mkdir /var/www/autenticado

(22)

No arquivo .htpasswd é que vão os usuários e senhas10 usados nessa autenticação.

Para criar o arquivo .htpasswd e incluir um usuário e senha, usar o comando htpasswd:

onde a opção -c é para criar um arquivo novo. Se omitir essa opção, irá manter todos os usuários que existem no arquivo.

IMPORTANTE:

Se o arquivo .htpasswd já existe e for usado -c, todo o conteúdo anterior desse arquivo será perdido. Mas se o arquivo .htpasswd já existe e não for usado -c, apenas altera a senha do usuário que já existe no arquivo ou, caso ainda não exista o usuário, será automaticamente incluído nesse arquivo.

Agora é só testar com o navegador e observar que será solicitado um usuário e senha para esse acesso.

10 Senhas criptografadas, naturalmente.

shell# htpasswd -c /var/www/autenticado/.htpasswd aluno

New password:

Re-type new password:

Referências

Documentos relacionados

Ou talvez você tenha apenas reservado um tempo para se sentar e refletir sobre a Mensagem, para chegar um pouco mais perto daquilo que satsang significa para você, para mergulhar

Além disso, o Scorecard SPIVA dos Estados Unidos demonstra que a maior parte dos fundos ativos large cap nesse país não conseguiram ganhar do S&amp;P 500 durante os períodos de

**Braçadeira semirrígida M/L (22-42 cm) A tecnologia Intelli Wrap, aplicada à braçadeira, exclusiva da Omron, elimina a imprecisão causada pelo posicionamento incorreto da

Por outro lado, quando se fala em pequenas e médias empresas, onde o número de funcionários é maior, é mais bem dividida e o uso da Intranet se torna

04. Já com sua folha de volta, retire desse mesmo parágrafo as palavras que têm “rr” ou “ss” e apresente a divisão silábica delas. Reescreva o 2º e o 4º

Tema principal: Solução para problemas de operação do projetor ou do controle remoto Referências relacionadas. Configuração de opções do projetor - menu Definição

Refletir sobre os serviços necessários em uma rede local e suas versões para GNU/LINUX.. Apoiar o uso

A ABRALE (Associação Brasileira de Linfoma e Leucemia) é uma organização sem fins lucrativos, criada em 2002 por pacientes e familiares, com a missão de oferecer ajuda e